summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--VERSION4
-rw-r--r--client/mysql.cc2
-rw-r--r--client/mysqldump.c6
-rw-r--r--client/mysqlimport.c17
-rw-r--r--client/mysqltest.cc8
-rw-r--r--debian/additions/mariadb.conf.d/50-server.cnf4
-rw-r--r--debian/changelog2
-rw-r--r--debian/control28
-rw-r--r--debian/not-installed1
-rw-r--r--debian/source/lintian-overrides28
-rw-r--r--extra/innochecksum.cc8
-rw-r--r--extra/mariabackup/backup_copy.cc2
-rw-r--r--extra/mariabackup/backup_mysql.cc94
-rw-r--r--extra/mariabackup/backup_mysql.h8
-rw-r--r--include/m_ctype.h144
-rw-r--r--include/my_rnd.h1
-rw-r--r--include/my_sys.h133
-rw-r--r--include/sslopt-longopts.h2
-rw-r--r--include/sslopt-vars.h2
-rw-r--r--libmysqld/lib_sql.cc6
-rw-r--r--man/comp_err.12
-rw-r--r--man/galera_new_cluster.12
-rw-r--r--man/galera_recovery.12
-rw-r--r--man/innochecksum.12
-rw-r--r--man/mariabackup.12
-rw-r--r--man/mariadb-conv.12
-rw-r--r--man/mariadb-service-convert.12
-rw-r--r--man/mbstream.12
-rw-r--r--man/msql2mysql.12
-rw-r--r--man/my_print_defaults.12
-rw-r--r--man/my_safe_process.12
-rw-r--r--man/myisam_ftdump.12
-rw-r--r--man/myisamchk.12
-rw-r--r--man/myisamlog.12
-rw-r--r--man/myisampack.12
-rw-r--r--man/myrocks_hotbackup.12
-rw-r--r--man/mysql-stress-test.pl.12
-rw-r--r--man/mysql-test-run.pl.12
-rw-r--r--man/mysql.12
-rw-r--r--man/mysql.server.12
-rw-r--r--man/mysql_client_test.12
-rw-r--r--man/mysql_config.12
-rw-r--r--man/mysql_convert_table_format.12
-rw-r--r--man/mysql_find_rows.12
-rw-r--r--man/mysql_fix_extensions.12
-rw-r--r--man/mysql_install_db.12
-rw-r--r--man/mysql_ldb.12
-rw-r--r--man/mysql_plugin.12
-rw-r--r--man/mysql_secure_installation.12
-rw-r--r--man/mysql_setpermission.12
-rw-r--r--man/mysql_tzinfo_to_sql.12
-rw-r--r--man/mysql_upgrade.12
-rw-r--r--man/mysql_waitpid.12
-rw-r--r--man/mysqlaccess.12
-rw-r--r--man/mysqladmin.12
-rw-r--r--man/mysqlbinlog.12
-rw-r--r--man/mysqlcheck.12
-rw-r--r--man/mysqld.82
-rw-r--r--man/mysqld_multi.12
-rw-r--r--man/mysqld_safe.12
-rw-r--r--man/mysqld_safe_helper.12
-rw-r--r--man/mysqldump.12
-rw-r--r--man/mysqldumpslow.12
-rw-r--r--man/mysqlhotcopy.12
-rw-r--r--man/mysqlimport.12
-rw-r--r--man/mysqlshow.12
-rw-r--r--man/mysqlslap.12
-rw-r--r--man/mysqltest.12
-rw-r--r--man/mytop.12
-rw-r--r--man/perror.12
-rw-r--r--man/replace.12
-rw-r--r--man/resolve_stack_dump.12
-rw-r--r--man/resolveip.12
-rw-r--r--man/wsrep_sst_common.12
-rw-r--r--man/wsrep_sst_mariabackup.12
-rw-r--r--man/wsrep_sst_mysqldump.12
-rw-r--r--man/wsrep_sst_rsync.12
-rw-r--r--man/wsrep_sst_rsync_wan.12
-rw-r--r--mysql-test/include/check-testcase.test2
-rw-r--r--mysql-test/include/check_qep.inc57
-rw-r--r--mysql-test/include/ctype_uca1400_ids_using_convert.inc21
-rw-r--r--mysql-test/include/ctype_uca1400_ids_using_set_names.inc17
-rw-r--r--mysql-test/include/default_client.cnf3
-rw-r--r--mysql-test/include/execute_with_statistics.inc30
-rw-r--r--mysql-test/include/expect_qep.inc45
-rw-r--r--mysql-test/include/reset_slave.inc58
-rw-r--r--mysql-test/include/rpl_change_topology.inc9
-rw-r--r--mysql-test/include/rpl_end.inc2
-rw-r--r--mysql-test/include/rpl_reset.inc4
-rw-r--r--mysql-test/include/setup_fake_relay_log.inc2
-rw-r--r--mysql-test/include/test_fieldsize.inc5
-rw-r--r--mysql-test/main/alter_table.test6
-rw-r--r--mysql-test/main/check_constraint.result4
-rw-r--r--mysql-test/main/check_constraint.test2
-rw-r--r--mysql-test/main/create.result7
-rw-r--r--mysql-test/main/create.test6
-rw-r--r--mysql-test/main/ctype_collate_context.result1774
-rw-r--r--mysql-test/main/ctype_collate_context.test4
-rw-r--r--mysql-test/main/ctype_ldml.result99
-rw-r--r--mysql-test/main/ctype_ldml.test30
-rw-r--r--mysql-test/main/ctype_ucs2_uca.result578
-rw-r--r--mysql-test/main/ctype_ucs2_uca.test18
-rw-r--r--mysql-test/main/ctype_utf16_uca.result579
-rw-r--r--mysql-test/main/ctype_utf16_uca.test19
-rw-r--r--mysql-test/main/ctype_utf32_uca.result579
-rw-r--r--mysql-test/main/ctype_utf32_uca.test18
-rw-r--r--mysql-test/main/ctype_utf8.result2
-rw-r--r--mysql-test/main/ctype_utf8.test2
-rw-r--r--mysql-test/main/ctype_utf8_uca.result772
-rw-r--r--mysql-test/main/ctype_utf8_uca.test30
-rw-r--r--mysql-test/main/ctype_utf8mb4.test1
-rw-r--r--mysql-test/main/ctype_utf8mb4_uca.result4605
-rw-r--r--mysql-test/main/ctype_utf8mb4_uca.test296
-rw-r--r--mysql-test/main/ctype_utf8mb4_uca_allkeys1400.result120
-rw-r--r--mysql-test/main/ctype_utf8mb4_uca_allkeys1400.test128
-rw-r--r--mysql-test/main/default.result26
-rw-r--r--mysql-test/main/default.test2
-rw-r--r--mysql-test/main/fast_prefix_index_fetch_innodb.result228
-rw-r--r--mysql-test/main/fast_prefix_index_fetch_innodb.test522
-rw-r--r--mysql-test/main/func_default.result2
-rw-r--r--mysql-test/main/func_default.test2
-rw-r--r--mysql-test/main/func_des_encrypt.result39
-rw-r--r--mysql-test/main/func_des_encrypt.test17
-rw-r--r--mysql-test/main/func_encrypt.result144
-rw-r--r--mysql-test/main/func_encrypt.test4
-rw-r--r--mysql-test/main/func_encrypt_nossl.result33
-rw-r--r--mysql-test/main/func_encrypt_nossl.test2
-rw-r--r--mysql-test/main/func_encrypt_ucs2.result6
-rw-r--r--mysql-test/main/func_encrypt_ucs2.test2
-rw-r--r--mysql-test/main/func_hybrid_type.result42
-rw-r--r--mysql-test/main/func_math.result4
-rw-r--r--mysql-test/main/func_math.test4
-rw-r--r--mysql-test/main/func_str.result176
-rw-r--r--mysql-test/main/func_str.test108
-rw-r--r--mysql-test/main/greedy_optimizer.result2258
-rw-r--r--mysql-test/main/greedy_optimizer.test578
-rw-r--r--mysql-test/main/information_schema.result34
-rw-r--r--mysql-test/main/information_schema_routines.result20
-rw-r--r--mysql-test/main/innodb_ext_key.result2
-rw-r--r--mysql-test/main/join.result4
-rw-r--r--mysql-test/main/join.test4
-rw-r--r--mysql-test/main/join_cache.result2
-rw-r--r--mysql-test/main/join_cache.test2
-rw-r--r--mysql-test/main/join_nested.result34
-rw-r--r--mysql-test/main/join_nested.test1
-rw-r--r--mysql-test/main/join_nested_jcl6.result28
-rw-r--r--mysql-test/main/join_outer.result10
-rw-r--r--mysql-test/main/join_outer_innodb.result8
-rw-r--r--mysql-test/main/join_outer_jcl6.result14
-rw-r--r--mysql-test/main/mysql_upgrade-6984.result1
-rw-r--r--mysql-test/main/mysql_upgrade-6984.test4
-rw-r--r--mysql-test/main/mysql_upgrade.opt1
-rw-r--r--mysql-test/main/mysqlbinlog-innodb.result4
-rw-r--r--mysql-test/main/mysqlbinlog.result20
-rw-r--r--mysql-test/main/mysqlbinlog_row_compressed.result2
-rw-r--r--mysql-test/main/mysqlbinlog_row_minimal.result4
-rw-r--r--mysql-test/main/mysqlbinlog_stmt_compressed.result2
-rw-r--r--mysql-test/main/mysqld--help.result30
-rw-r--r--mysql-test/main/mysqld--help.test3
-rw-r--r--mysql-test/main/mysqldump.result2
-rw-r--r--mysql-test/main/null.result50
-rw-r--r--mysql-test/main/null.test113
-rw-r--r--mysql-test/main/old-mode.result4
-rw-r--r--mysql-test/main/old-mode.test4
-rw-r--r--mysql-test/main/openssl_1.test2
-rw-r--r--mysql-test/main/opt_trace.result5752
-rw-r--r--mysql-test/main/opt_trace.test3
-rw-r--r--mysql-test/main/opt_trace_index_merge.result38
-rw-r--r--mysql-test/main/opt_trace_index_merge_innodb.result55
-rw-r--r--mysql-test/main/opt_trace_security.result76
-rw-r--r--mysql-test/main/opt_tvc.result8
-rw-r--r--mysql-test/main/partition_alter.result4
-rw-r--r--mysql-test/main/partition_alter.test4
-rw-r--r--mysql-test/main/query_cache.result25
-rw-r--r--mysql-test/main/query_cache.test32
-rw-r--r--mysql-test/main/selectivity.result12
-rw-r--r--mysql-test/main/selectivity_innodb.result12
-rw-r--r--mysql-test/main/show_check.result28
-rw-r--r--mysql-test/main/skip_grants.result14
-rw-r--r--mysql-test/main/skip_grants.test21
-rw-r--r--mysql-test/main/sp-anchor-type.result2
-rw-r--r--mysql-test/main/ssl_7937,nossl.result6
-rw-r--r--mysql-test/main/ssl_7937.result6
-rw-r--r--mysql-test/main/ssl_7937.test6
-rw-r--r--mysql-test/main/ssl_and_innodb.result2
-rw-r--r--mysql-test/main/stat_tables.result2
-rw-r--r--mysql-test/main/subselect2.result16
-rw-r--r--mysql-test/main/subselect2.test4
-rw-r--r--mysql-test/main/subselect_mat.result15
-rw-r--r--mysql-test/main/subselect_sj.result16
-rw-r--r--mysql-test/main/subselect_sj2.result23
-rw-r--r--mysql-test/main/subselect_sj2.test6
-rw-r--r--mysql-test/main/subselect_sj2_jcl6.result23
-rw-r--r--mysql-test/main/subselect_sj2_mat.result62
-rw-r--r--mysql-test/main/subselect_sj_jcl6.result22
-rw-r--r--mysql-test/main/subselect_sj_mat.result43
-rw-r--r--mysql-test/main/subselect_sj_mat.test1
-rw-r--r--mysql-test/main/subselect_sj_nonmerged.result4
-rw-r--r--mysql-test/main/system_mysql_db.result8
-rw-r--r--mysql-test/main/system_mysql_db_fix40123.result12
-rw-r--r--mysql-test/main/system_mysql_db_fix40123.test4
-rw-r--r--mysql-test/main/system_mysql_db_fix50030.result14
-rw-r--r--mysql-test/main/system_mysql_db_fix50030.test6
-rw-r--r--mysql-test/main/system_mysql_db_fix50117.result8
-rw-r--r--mysql-test/main/table_elim.result319
-rw-r--r--mysql-test/main/table_elim.test153
-rw-r--r--mysql-test/main/timezone2.result4
-rw-r--r--mysql-test/main/timezone2.test4
-rw-r--r--mysql-test/main/trigger_null-8605.result2
-rw-r--r--mysql-test/main/trigger_null-8605.test2
-rw-r--r--mysql-test/main/type_temporal_mysql56_debug.result98
-rw-r--r--mysql-test/main/type_timestamp.result2
-rw-r--r--mysql-test/main/type_timestamp.test2
-rw-r--r--mysql-test/main/type_timestamp_hires.result18
-rw-r--r--mysql-test/main/user_var-binlog.result2
-rw-r--r--mysql-test/main/variables.result36
-rw-r--r--mysql-test/main/variables.test18
-rw-r--r--mysql-test/std_data/ldml/Index.xml3
-rw-r--r--mysql-test/std_data/unicode/allkeys1400.txt33925
-rw-r--r--mysql-test/suite/atomic/disabled.def12
-rw-r--r--mysql-test/suite/binlog/r/binlog_mysqlbinlog2.result70
-rw-r--r--mysql-test/suite/binlog/r/binlog_mysqlbinlog_row.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_innodb.result8
-rw-r--r--mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_myisam.result8
-rw-r--r--mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_trans.result2
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_annotate.result12
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_options.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result4
-rw-r--r--mysql-test/suite/binlog/r/binlog_table_map_optional_metadata.result5
-rw-r--r--mysql-test/suite/binlog/r/binlog_unsafe.result3
-rw-r--r--mysql-test/suite/binlog/r/flashback.result4
-rw-r--r--mysql-test/suite/binlog/t/binlog_table_map_optional_metadata.test3
-rw-r--r--mysql-test/suite/binlog/t/binlog_unsafe.test3
-rw-r--r--mysql-test/suite/binlog_encryption/binlog_mdev_20574_old_binlog.result2
-rw-r--r--mysql-test/suite/binlog_encryption/binlog_mdev_20574_old_binlog.test2
-rw-r--r--mysql-test/suite/binlog_encryption/binlog_row_annotate.result6
-rw-r--r--mysql-test/suite/binlog_encryption/encrypted_master_switch_to_unencrypted.result9
-rw-r--r--mysql-test/suite/binlog_encryption/encrypted_master_switch_to_unencrypted.test10
-rw-r--r--mysql-test/suite/binlog_encryption/multisource.result3
-rw-r--r--mysql-test/suite/binlog_encryption/rpl_binlog_errors.result5
-rw-r--r--mysql-test/suite/binlog_encryption/rpl_cant_read_event_incident.result9
-rw-r--r--mysql-test/suite/binlog_encryption/rpl_checksum.result9
-rw-r--r--mysql-test/suite/binlog_encryption/rpl_corruption.result5
-rw-r--r--mysql-test/suite/binlog_encryption/rpl_gtid_basic.result6
-rw-r--r--mysql-test/suite/binlog_encryption/rpl_mixed_binlog_max_cache_size.result5
-rw-r--r--mysql-test/suite/binlog_encryption/rpl_semi_sync.result8
-rw-r--r--mysql-test/suite/binlog_encryption/rpl_skip_replication.result5
-rw-r--r--mysql-test/suite/compat/maxdb/rpl_mariadb_timestamp.result6
-rw-r--r--mysql-test/suite/compat/maxdb/rpl_mariadb_timestamp.test3
-rw-r--r--mysql-test/suite/compat/maxdb/type_timestamp.result20
-rw-r--r--mysql-test/suite/compat/oracle/r/sp.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/db_alter_collate_ascii.result184
-rw-r--r--mysql-test/suite/engines/funcs/r/db_alter_collate_utf8.result184
-rw-r--r--mysql-test/suite/engines/funcs/r/ix_index_non_string.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/ix_unique_non_string.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_000010.result5
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_change_master.result5
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_log_pos.result4
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result13
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_row_until.result4
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_server_id2.result3
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_sp.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result13
-rw-r--r--mysql-test/suite/engines/funcs/r/rpl_trigger.result13
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_2part_column_to_pk.result8
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_2part_diff_to_pk.result128
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_3part_column_to_pk.result12
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_add_column.result144
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_add_column2.result8
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_add_column_first.result92
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_add_column_first2.result8
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_add_column_middle.result240
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_add_column_middle2.result8
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_add_string2.result16
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_add_string_first2.result16
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_add_string_middle2.result32
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_add_unique_index.result72
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_column_to_index.result48
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_column_to_not_null.result4
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_column_to_null.result4
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_column_to_pk.result4
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_drop_column.result12
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_drop_index.result24
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_drop_pk_number.result4
-rw-r--r--mysql-test/suite/engines/funcs/r/ta_rename.result16
-rw-r--r--mysql-test/suite/engines/funcs/r/tc_column_key.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/tc_column_not_null.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/tc_column_primary_key_number.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/tc_column_unique_key.result2
-rw-r--r--mysql-test/suite/engines/funcs/r/tc_multicolumn_different.result192
-rw-r--r--mysql-test/suite/engines/funcs/r/tc_multicolumn_same.result6
-rw-r--r--mysql-test/suite/engines/funcs/r/tc_temporary_column.result2
-rw-r--r--mysql-test/suite/engines/funcs/t/rpl_trigger.test11
-rw-r--r--mysql-test/suite/federated/federatedx_versioning.test2
-rw-r--r--mysql-test/suite/funcs_1/r/charset_collation.result10
-rw-r--r--mysql-test/suite/funcs_1/r/is_character_sets.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result17
-rw-r--r--mysql-test/suite/funcs_1/r/is_collations.result24
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_is.result64
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_is_embedded.result64
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_mysql.result16
-rw-r--r--mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result16
-rw-r--r--mysql-test/suite/funcs_1/r/is_events.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_routines.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_routines_embedded.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_schemata.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_schemata_embedded.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_tables_embedded.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_triggers.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_triggers_embedded.result12
-rw-r--r--mysql-test/suite/funcs_1/r/is_views.result6
-rw-r--r--mysql-test/suite/funcs_1/r/is_views_embedded.result6
-rw-r--r--mysql-test/suite/galera/r/galera_defaults.result4
-rw-r--r--mysql-test/suite/galera/r/galera_gra_log.result2
-rw-r--r--mysql-test/suite/galera/r/galera_ist_MDEV-28423,debug.rdiff4
-rw-r--r--mysql-test/suite/galera/r/galera_ist_MDEV-28583,debug.rdiff4
-rw-r--r--mysql-test/suite/galera/t/galera_defaults.test4
-rw-r--r--mysql-test/suite/galera/t/galera_var_reject_queries.test4
-rw-r--r--mysql-test/suite/galera_3nodes/r/galera_allowlist.result35
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_allowlist.cnf26
-rw-r--r--mysql-test/suite/galera_3nodes/t/galera_allowlist.test66
-rw-r--r--mysql-test/suite/galera_sr/t/galera_sr_cc_master.test4
-rw-r--r--mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc15
-rw-r--r--mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result12
-rw-r--r--mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result12
-rw-r--r--mysql-test/suite/gcol/r/gcol_supported_sql_funcs_innodb.result2
-rw-r--r--mysql-test/suite/gcol/r/gcol_supported_sql_funcs_myisam.result2
-rw-r--r--mysql-test/suite/gcol/r/innodb_virtual_fk.result4
-rw-r--r--mysql-test/suite/innodb/r/innodb-alter-timestamp.result15
-rw-r--r--mysql-test/suite/innodb/r/innodb-change-buffer-recovery.result8
-rw-r--r--mysql-test/suite/innodb/r/innodb.result9
-rw-r--r--mysql-test/suite/innodb/r/innodb_ctype_ldml.result2
-rw-r--r--mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result10
-rw-r--r--mysql-test/suite/innodb/r/innodb_status_variables.result10
-rw-r--r--mysql-test/suite/innodb/r/instant_alter_debug.result4
-rw-r--r--mysql-test/suite/innodb/r/monitor.result138
-rw-r--r--mysql-test/suite/innodb/t/innodb-alter-timestamp.test3
-rw-r--r--mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test6
-rw-r--r--mysql-test/suite/innodb/t/innodb.test6
-rw-r--r--mysql-test/suite/innodb/t/instant_alter_debug.test2
-rw-r--r--mysql-test/suite/innodb/t/monitor.test87
-rw-r--r--mysql-test/suite/mariabackup/slave_info_norpl.result12
-rw-r--r--mysql-test/suite/multi_source/gtid.result6
-rw-r--r--mysql-test/suite/multi_source/info_logs.result11
-rw-r--r--mysql-test/suite/multi_source/info_logs.test9
-rw-r--r--mysql-test/suite/multi_source/mdev-8874.result21
-rw-r--r--mysql-test/suite/multi_source/mdev-8874.test13
-rw-r--r--mysql-test/suite/multi_source/mdev-9544.result9
-rw-r--r--mysql-test/suite/multi_source/mdev-9544.test10
-rw-r--r--mysql-test/suite/multi_source/multi_source_slave_alias_replica.result4
-rw-r--r--mysql-test/suite/multi_source/multisource.result3
-rw-r--r--mysql-test/suite/multi_source/multisource_for_channel.result8
-rw-r--r--mysql-test/suite/multi_source/multisource_for_channel.test6
-rw-r--r--mysql-test/suite/multi_source/reset_slave.result4
-rw-r--r--mysql-test/suite/multi_source/simple.result18
-rw-r--r--mysql-test/suite/multi_source/skip_counter.result6
-rw-r--r--mysql-test/suite/multi_source/skip_counter.test6
-rw-r--r--mysql-test/suite/parts/r/rpl_partition.result2
-rw-r--r--mysql-test/suite/perfschema/r/digest_view.result50
-rw-r--r--mysql-test/suite/perfschema/r/start_server_low_digest_sql_length.result4
-rw-r--r--mysql-test/suite/perfschema/t/show_sanity.test1
-rw-r--r--mysql-test/suite/period/r/create.result4
-rw-r--r--mysql-test/suite/plugins/r/test_sql_service.result2
-rw-r--r--mysql-test/suite/plugins/t/test_sql_service.test2
-rw-r--r--mysql-test/suite/rpl/include/multisource.inc3
-rw-r--r--mysql-test/suite/rpl/include/rpl_binlog_errors.inc5
-rw-r--r--mysql-test/suite/rpl/include/rpl_binlog_max_cache_size.test7
-rw-r--r--mysql-test/suite/rpl/include/rpl_cant_read_event_incident.inc7
-rw-r--r--mysql-test/suite/rpl/include/rpl_change_master_demote.inc89
-rw-r--r--mysql-test/suite/rpl/include/rpl_checksum.inc9
-rw-r--r--mysql-test/suite/rpl/include/rpl_corruption.inc6
-rw-r--r--mysql-test/suite/rpl/include/rpl_deadlock.test4
-rw-r--r--mysql-test/suite/rpl/include/rpl_extra_col_master.test24
-rw-r--r--mysql-test/suite/rpl/include/rpl_extra_col_slave.test40
-rw-r--r--mysql-test/suite/rpl/include/rpl_flsh_tbls.test6
-rw-r--r--mysql-test/suite/rpl/include/rpl_innodb_rows_counters.inc48
-rw-r--r--mysql-test/suite/rpl/include/rpl_loaddata.test2
-rw-r--r--mysql-test/suite/rpl/include/rpl_parallel_29322.inc3
-rw-r--r--mysql-test/suite/rpl/include/rpl_reset_slave.test15
-rw-r--r--mysql-test/suite/rpl/include/rpl_semi_sync.inc13
-rw-r--r--mysql-test/suite/rpl/include/rpl_skip_replication.inc6
-rw-r--r--mysql-test/suite/rpl/include/rpl_slave_max_statement_time.inc79
-rw-r--r--mysql-test/suite/rpl/include/rpl_start_stop_slave.test2
-rw-r--r--mysql-test/suite/rpl/r/rpl_000010.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_auto_increment_bug33029.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_binlog_corruption.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_binlog_dump_slave_gtid_state_info.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_binlog_errors.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_blackhole_row_annotate.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_cant_read_event_incident.result9
-rw-r--r--mysql-test/suite/rpl/r/rpl_change_master.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_change_master_demote.result687
-rw-r--r--mysql-test/suite/rpl/r/rpl_checksum.result9
-rw-r--r--mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_colSize.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_corruption.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_cross_version.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_deadlock_innodb.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_delayed_slave.result7
-rw-r--r--mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result34
-rw-r--r--mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result34
-rw-r--r--mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result42
-rw-r--r--mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result42
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_basic.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_crash.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_excess_initial_delay.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_master_promote.result12
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_mdev4473.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_mdev4820.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_mdev9033.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_misc.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_nobinlog.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_reconnect.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_sort.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_startpos.result21
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_stop_start.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_gtid_until.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_heartbeat_basic.result24
-rw-r--r--mysql-test/suite/rpl/r/rpl_heartbeat_ssl.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_hrtime.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_innodb_bug68220.result233
-rw-r--r--mysql-test/suite/rpl/r/rpl_loaddata.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_log_pos.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_manual_change_index_file.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_mariadb_slave_capability.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_mdev382.result6
-rw-r--r--mysql-test/suite/rpl/r/rpl_mdev6020.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_mdev6386.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_mdev_17614.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_mysql57_stm_temporal_round.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_mysql80_stm_temporal_round.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_old_master.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_old_master_29078.result30
-rw-r--r--mysql-test/suite/rpl/r/rpl_parallel_29322.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_parallel_mdev6589.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_parallel_multilevel2.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_parallel_temptable.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_perfschema_applier_status_by_coordinator.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_perfschema_connect_config.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_read_new_relay_log_info.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_read_old_relay_log_info.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_reset_slave_fail.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_001.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_colSize.result102
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result14
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_reset_slave.result13
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_until.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_seconds_behind_master_spike.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync_after_sync.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_semi_sync_after_sync_row.result8
-rw-r--r--mysql-test/suite/rpl/r/rpl_server_id2.result3
-rw-r--r--mysql-test/suite/rpl/r/rpl_server_id_ignore.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_skip_replication.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_slave_alias_replica.result1
-rw-r--r--mysql-test/suite/rpl/r/rpl_slave_max_statement_time.result170
-rw-r--r--mysql-test/suite/rpl/r/rpl_slave_skip.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_sp.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_start_alter_mysqlbinlog_1.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_start_alter_options.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_start_alter_restart_master.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_000001.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_reset_slave.result13
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_stm_until.result4
-rw-r--r--mysql-test/suite/rpl/r/rpl_stop_slave.result5
-rw-r--r--mysql-test/suite/rpl/r/rpl_timestamp.result10
-rw-r--r--mysql-test/suite/rpl/r/rpl_trigger.result17
-rw-r--r--mysql-test/suite/rpl/r/rpl_upgrade_master_info.result2
-rw-r--r--mysql-test/suite/rpl/r/rpl_using_gtid_default.result144
-rw-r--r--mysql-test/suite/rpl/r/rpl_xa_gap_lock.result2
-rw-r--r--mysql-test/suite/rpl/r/semisync_future-7591.result6
-rw-r--r--mysql-test/suite/rpl/t/rpl_000010.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_change_master.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_change_master_demote.test470
-rw-r--r--mysql-test/suite/rpl/t/rpl_colSize.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_delayed_slave.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_gtid_mdev9033.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_gtid_startpos.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_gtid_until.test5
-rw-r--r--mysql-test/suite/rpl/t/rpl_heartbeat_basic.test22
-rw-r--r--mysql-test/suite/rpl/t/rpl_heartbeat_ssl.test3
-rw-r--r--mysql-test/suite/rpl/t/rpl_innodb_bug68220.test53
-rw-r--r--mysql-test/suite/rpl/t/rpl_log_pos.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_manual_change_index_file.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_mariadb_slave_capability.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_mdev6020.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_mdev_17614.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_mysql57_stm_temporal_round.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_mysql80_stm_temporal_round.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_old_master.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_old_master_29078.test12
-rw-r--r--mysql-test/suite/rpl/t/rpl_perfschema_applier_status_by_coordinator.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_read_new_relay_log_info.test7
-rw-r--r--mysql-test/suite/rpl/t/rpl_read_old_relay_log_info.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_reset_slave_fail.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_001.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_row_until.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_seconds_behind_master_spike.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_server_id2.test5
-rw-r--r--mysql-test/suite/rpl/t/rpl_server_id_ignore.test4
-rw-r--r--mysql-test/suite/rpl/t/rpl_slave_alias_replica.test1
-rw-r--r--mysql-test/suite/rpl/t/rpl_slave_max_statement_time.test110
-rw-r--r--mysql-test/suite/rpl/t/rpl_slave_skip.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_start_alter_restart_master.test5
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_000001.test2
-rw-r--r--mysql-test/suite/rpl/t/rpl_stm_until.test3
-rw-r--r--mysql-test/suite/rpl/t/rpl_stop_slave.test6
-rw-r--r--mysql-test/suite/rpl/t/rpl_trigger.test15
-rw-r--r--mysql-test/suite/rpl/t/rpl_using_gtid_default.test303
-rw-r--r--mysql-test/suite/rpl/t/rpl_xa_gap_lock.test2
-rw-r--r--mysql-test/suite/rpl/t/semisync_future-7591.test5
-rw-r--r--mysql-test/suite/sql_sequence/gtid.result2
-rw-r--r--mysql-test/suite/sql_sequence/gtid.test2
-rw-r--r--mysql-test/suite/sql_sequence/replication.result2
-rw-r--r--mysql-test/suite/sql_sequence/replication.test2
-rw-r--r--mysql-test/suite/sys_vars/r/allow_suspicious_udfs.result11
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_prefix_index_cluster_optimization_basic.result122
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_version_basic.result17
-rw-r--r--mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result44
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_innodb.result5
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff301
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_embedded.result34
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff319
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result44
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_wsrep.result15
-rw-r--r--mysql-test/suite/sys_vars/t/allow_suspicious_udfs.test14
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_prefix_index_cluster_optimization_basic.test76
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_version_basic.test30
-rw-r--r--mysql-test/suite/sys_vars/t/optimizer_prune_level_basic.test14
-rw-r--r--mysql-test/suite/sys_vars/t/sysvars_innodb.test1
-rw-r--r--mysql-test/suite/vcol/r/vcol_misc.result2
-rw-r--r--mysql-test/suite/vcol/r/vcol_supported_sql_funcs.result4
-rw-r--r--mysql-test/suite/versioning/r/partition,heap.rdiff10
-rw-r--r--mysql-test/suite/versioning/r/partition.result10
-rw-r--r--mysql-test/suite/versioning/r/simple.result8
-rw-r--r--mysql-test/suite/wsrep/r/variables.result1
-rw-r--r--mysql-test/suite/wsrep/r/variables_debug.result1
-rw-r--r--mysql-test/suite/wsrep/t/variables.test2
-rw-r--r--mysql-test/suite/wsrep/t/variables_debug.test2
-rw-r--r--mysys/charset-def.c73
-rw-r--r--mysys/charset.c4
-rw-r--r--mysys/my_rnd.c22
-rw-r--r--plugin/feedback/utils.cc2
-rw-r--r--plugin/password_reuse_check/password_reuse_check.c2
-rw-r--r--plugin/qc_info/qc_info.cc2
-rw-r--r--plugin/type_inet/item_inetfunc.cc6
-rw-r--r--plugin/type_inet/mysql-test/type_inet/binlog_stm_type_inet4.result43
-rw-r--r--plugin/type_inet/mysql-test/type_inet/binlog_stm_type_inet4.test40
-rw-r--r--plugin/type_inet/mysql-test/type_inet/binlog_table_map_optional_metadata_type_inet4.result61
-rw-r--r--plugin/type_inet/mysql-test/type_inet/binlog_table_map_optional_metadata_type_inet4.test73
-rw-r--r--plugin/type_inet/mysql-test/type_inet/rpl_row_binary_to_inet4.result36
-rw-r--r--plugin/type_inet/mysql-test/type_inet/rpl_row_binary_to_inet4.test34
-rw-r--r--plugin/type_inet/mysql-test/type_inet/rpl_row_inet4_to_binary.result36
-rw-r--r--plugin/type_inet/mysql-test/type_inet/rpl_row_inet4_to_binary.test34
-rw-r--r--plugin/type_inet/mysql-test/type_inet/rpl_type_inet4.result23
-rw-r--r--plugin/type_inet/mysql-test/type_inet/rpl_type_inet4.test24
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4-debug.result24
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4-debug.test22
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4.result2019
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4.test1477
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_csv.result54
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_csv.test41
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_engines.inc38
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_innodb.result119
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_innodb.test36
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_memory.result159
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_memory.test16
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_date.result353
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_date.test26
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_datetime.result353
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_datetime.test25
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_decimal.result353
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_decimal.test19
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_double.result353
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_double.test19
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_int.result353
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_int.test19
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_time.result353
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_time.test26
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_timestamp.result353
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_timestamp.test25
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_year.result353
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mix_year.test19
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_myisam.result111
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_myisam.test28
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mysql.result51
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_mysql.test18
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_oracle.result29
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_oracle.test35
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_partition.result36
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_partition.test41
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_plugin.result31
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_plugin.test27
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_stat_tables.result66
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet4_stat_tables.test40
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet6.result2
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet6.test2
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet6_mix_inet4.result19
-rw-r--r--plugin/type_inet/mysql-test/type_inet/type_inet6_mix_inet4.test26
-rw-r--r--plugin/type_inet/plugin.cc22
-rw-r--r--plugin/type_inet/sql_type_inet.cc17
-rw-r--r--plugin/type_inet/sql_type_inet.h88
-rw-r--r--scripts/mysql_system_tables.sql4
-rw-r--r--scripts/mysql_system_tables_fix.sql20
-rw-r--r--scripts/sys_schema/tables/sys_config.sql2
-rw-r--r--sql-common/client.c4
-rw-r--r--sql/CMakeLists.txt1
-rw-r--r--sql/event_db_repository.cc4
-rw-r--r--sql/events.cc7
-rw-r--r--sql/item_create.cc24
-rw-r--r--sql/item_func.cc6
-rw-r--r--sql/item_strfunc.cc108
-rw-r--r--sql/item_strfunc.h49
-rw-r--r--sql/item_timefunc.cc10
-rw-r--r--sql/lex.h1
-rw-r--r--sql/lex_charset.cc113
-rw-r--r--sql/lex_charset.h162
-rw-r--r--sql/log.cc18
-rw-r--r--sql/log_event_server.cc34
-rw-r--r--sql/mysqld.cc18
-rw-r--r--sql/mysqld.h2
-rw-r--r--sql/opt_split.cc2
-rw-r--r--sql/opt_subselect.cc17
-rw-r--r--sql/opt_table_elimination.cc270
-rw-r--r--sql/privilege.h2
-rw-r--r--sql/protocol.cc8
-rw-r--r--sql/rpl_mi.cc7
-rw-r--r--sql/rpl_mi.h15
-rw-r--r--sql/share/errmsg-utf8.txt6
-rw-r--r--sql/slave.cc11
-rw-r--r--sql/sp.cc16
-rw-r--r--sql/sp_head.cc12
-rw-r--r--sql/sql_class.cc40
-rw-r--r--sql/sql_class.h56
-rw-r--r--sql/sql_delete.cc2
-rw-r--r--sql/sql_i_s.h16
-rw-r--r--sql/sql_insert.cc9
-rw-r--r--sql/sql_lex.cc24
-rw-r--r--sql/sql_lex.h7
-rw-r--r--sql/sql_parse.cc6
-rw-r--r--sql/sql_repl.cc84
-rw-r--r--sql/sql_select.cc656
-rw-r--r--sql/sql_select.h31
-rw-r--r--sql/sql_show.cc96
-rw-r--r--sql/sql_table.cc12
-rw-r--r--sql/sql_time.cc4
-rw-r--r--sql/sql_type.cc2
-rw-r--r--sql/sql_yacc.yy13
-rw-r--r--sql/sys_vars.cc55
-rw-r--r--sql/sys_vars.inl2
-rw-r--r--sql/table.h1
-rw-r--r--sql/temporary_tables.cc8
-rw-r--r--sql/wsrep_allowlist_service.cc56
-rw-r--r--sql/wsrep_allowlist_service.h29
-rw-r--r--sql/wsrep_mysqld.cc57
-rw-r--r--sql/wsrep_mysqld.h2
-rw-r--r--sql/wsrep_schema.cc227
-rw-r--r--sql/wsrep_schema.h22
-rw-r--r--sql/wsrep_server_state.cc17
-rw-r--r--sql/wsrep_server_state.h9
-rw-r--r--sql/wsrep_types.h2
-rw-r--r--storage/innobase/handler/ha_innodb.cc59
-rw-r--r--storage/innobase/handler/i_s.cc436
-rw-r--r--storage/innobase/ibuf/ibuf0ibuf.cc42
-rw-r--r--storage/innobase/include/srv0mon.h13
-rw-r--r--storage/innobase/include/srv0srv.h47
-rw-r--r--storage/innobase/include/univ.i19
-rw-r--r--storage/innobase/log/log0log.cc22
-rw-r--r--storage/innobase/row/row0mysql.cc22
-rw-r--r--storage/innobase/row/row0sel.cc14
-rw-r--r--storage/innobase/srv/srv0mon.cc106
-rw-r--r--storage/innobase/srv/srv0srv.cc161
-rw-r--r--storage/mroonga/mysql-test/mroonga/storage/r/create_table_TODO_SPLIT_ME.result2
-rw-r--r--storage/mroonga/mysql-test/mroonga/wrapper/r/create_table_TODO_SPLIT_ME.result2
-rw-r--r--storage/mroonga/mysql-test/mroonga/wrapper/r/insert_on_duplicate_key_update_multiple_column_primary_key_myisam.result2
-rw-r--r--storage/mroonga/mysql-test/mroonga/wrapper/r/insert_on_duplicate_key_update_multiple_column_unique_index_myisam.result2
-rw-r--r--storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result10
-rw-r--r--storage/spider/ha_spider.cc696
-rw-r--r--storage/spider/ha_spider.h30
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/index.result9
-rw-r--r--storage/spider/mysql-test/spider/bugfix/r/mdev_29855.result36
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/index.test3
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/mdev_29855.cnf3
-rw-r--r--storage/spider/mysql-test/spider/bugfix/t/mdev_29855.test40
-rw-r--r--storage/spider/mysql-test/spider/handler/include/deinit_child2_1.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/deinit_child2_2.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/deinit_child2_3.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/deinit_child3_1.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/deinit_child3_2.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/deinit_child3_3.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/deinit_master_1.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/include/deinit_slave1_1.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_1.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_2.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_3.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_1.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_2.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_3.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_deinit_master_1.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_init_child2_1.inc8
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_init_child2_2.inc4
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_init_child2_3.inc4
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_init_child3_1.inc140
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_init_child3_2.inc140
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_init_child3_3.inc140
-rw-r--r--storage/spider/mysql-test/spider/handler/include/ha_init_master_1.inc105
-rw-r--r--storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_1.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_2.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_3.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/hs_deinit_master_1.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/hs_init_child2_1.inc24
-rw-r--r--storage/spider/mysql-test/spider/handler/include/hs_init_child2_2.inc12
-rw-r--r--storage/spider/mysql-test/spider/handler/include/hs_init_child2_3.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/hs_init_master_1.inc12
-rw-r--r--storage/spider/mysql-test/spider/handler/include/init_child2_1.inc176
-rw-r--r--storage/spider/mysql-test/spider/handler/include/init_child2_2.inc80
-rw-r--r--storage/spider/mysql-test/spider/handler/include/init_child2_3.inc11
-rw-r--r--storage/spider/mysql-test/spider/handler/include/init_child3_1.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/init_child3_2.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/init_child3_3.inc0
-rw-r--r--storage/spider/mysql-test/spider/handler/include/init_master_1.inc186
-rw-r--r--storage/spider/mysql-test/spider/handler/include/init_slave1_1.inc10
-rw-r--r--storage/spider/mysql-test/spider/handler/my.cnf176
-rw-r--r--storage/spider/mysql-test/spider/handler/r/basic_sql.result738
-rw-r--r--storage/spider/mysql-test/spider/handler/r/basic_sql_part.result141
-rw-r--r--storage/spider/mysql-test/spider/handler/r/direct_aggregate.result100
-rw-r--r--storage/spider/mysql-test/spider/handler/r/direct_aggregate_part.result90
-rw-r--r--storage/spider/mysql-test/spider/handler/r/direct_update.result155
-rw-r--r--storage/spider/mysql-test/spider/handler/r/direct_update_part.result145
-rw-r--r--storage/spider/mysql-test/spider/handler/r/function.result160
-rw-r--r--storage/spider/mysql-test/spider/handler/r/ha.result286
-rw-r--r--storage/spider/mysql-test/spider/handler/r/ha_part.result311
-rw-r--r--storage/spider/mysql-test/spider/handler/r/spider3_fixes.result245
-rw-r--r--storage/spider/mysql-test/spider/handler/r/spider3_fixes_part.result243
-rw-r--r--storage/spider/mysql-test/spider/handler/r/spider_fixes.result640
-rw-r--r--storage/spider/mysql-test/spider/handler/r/spider_fixes_part.result246
-rw-r--r--storage/spider/mysql-test/spider/handler/r/vp_fixes.result93
-rw-r--r--storage/spider/mysql-test/spider/handler/suite.opt1
-rw-r--r--storage/spider/mysql-test/spider/handler/suite.pm10
-rw-r--r--storage/spider/mysql-test/spider/handler/t/basic_sql.test2699
-rw-r--r--storage/spider/mysql-test/spider/handler/t/basic_sql_part.test571
-rw-r--r--storage/spider/mysql-test/spider/handler/t/connect_child2_1.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/t/connect_child2_2.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/t/connect_child2_3.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/t/connect_child3_1.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/t/connect_child3_2.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/t/connect_child3_3.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/t/connect_master_1.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/t/connect_slave1_1.inc1
-rw-r--r--storage/spider/mysql-test/spider/handler/t/direct_aggregate.test179
-rw-r--r--storage/spider/mysql-test/spider/handler/t/direct_aggregate_part.test192
-rw-r--r--storage/spider/mysql-test/spider/handler/t/direct_update.test198
-rw-r--r--storage/spider/mysql-test/spider/handler/t/direct_update_part.test211
-rw-r--r--storage/spider/mysql-test/spider/handler/t/function.test253
-rw-r--r--storage/spider/mysql-test/spider/handler/t/ha.test878
-rw-r--r--storage/spider/mysql-test/spider/handler/t/ha_part.test1017
-rw-r--r--storage/spider/mysql-test/spider/handler/t/ha_test_deinit.inc30
-rw-r--r--storage/spider/mysql-test/spider/handler/t/ha_test_init.inc30
-rw-r--r--storage/spider/mysql-test/spider/handler/t/have_engine.inc7
-rw-r--r--storage/spider/mysql-test/spider/handler/t/have_func.inc5
-rw-r--r--storage/spider/mysql-test/spider/handler/t/have_partition.inc7
-rw-r--r--storage/spider/mysql-test/spider/handler/t/have_trigger.inc2
-rw-r--r--storage/spider/mysql-test/spider/handler/t/hs_test_deinit.inc17
-rw-r--r--storage/spider/mysql-test/spider/handler/t/hs_test_init.inc17
-rw-r--r--storage/spider/mysql-test/spider/handler/t/slave_test_deinit.inc6
-rw-r--r--storage/spider/mysql-test/spider/handler/t/slave_test_init.inc44
-rw-r--r--storage/spider/mysql-test/spider/handler/t/spider3_fixes.test297
-rw-r--r--storage/spider/mysql-test/spider/handler/t/spider3_fixes_part.test350
-rw-r--r--storage/spider/mysql-test/spider/handler/t/spider_fixes.test1433
-rw-r--r--storage/spider/mysql-test/spider/handler/t/spider_fixes_part.test650
-rw-r--r--storage/spider/mysql-test/spider/handler/t/test_deinit.inc37
-rw-r--r--storage/spider/mysql-test/spider/handler/t/test_init.inc74
-rw-r--r--storage/spider/mysql-test/spider/handler/t/vp_fixes.test335
-rw-r--r--storage/spider/mysql-test/spider/r/partition_mrr.result44
-rw-r--r--storage/spider/mysql-test/spider/r/variable_deprecation.result46
-rw-r--r--storage/spider/mysql-test/spider/t/partition_mrr.test1
-rw-r--r--storage/spider/mysql-test/spider/t/variable_deprecation.test24
-rw-r--r--storage/spider/spd_conn.cc118
-rw-r--r--storage/spider/spd_conn.h12
-rw-r--r--storage/spider/spd_copy_tables.cc3
-rw-r--r--storage/spider/spd_db_conn.cc1103
-rw-r--r--storage/spider/spd_db_conn.h20
-rw-r--r--storage/spider/spd_db_include.h35
-rw-r--r--storage/spider/spd_db_mysql.cc453
-rw-r--r--storage/spider/spd_db_mysql.h39
-rw-r--r--storage/spider/spd_direct_sql.cc7
-rw-r--r--storage/spider/spd_environ.h3
-rw-r--r--storage/spider/spd_group_by_handler.cc24
-rw-r--r--storage/spider/spd_i_s.cc33
-rw-r--r--storage/spider/spd_include.h8
-rw-r--r--storage/spider/spd_param.cc210
-rw-r--r--storage/spider/spd_param.h27
-rw-r--r--storage/spider/spd_ping_table.cc8
-rw-r--r--storage/spider/spd_table.cc105
-rw-r--r--storage/spider/spd_trx.cc9
-rw-r--r--strings/CMakeLists.txt20
-rw-r--r--strings/conf_to_src.c2
-rw-r--r--strings/ctype-big5.c24
-rw-r--r--strings/ctype-bin.c14
-rw-r--r--strings/ctype-cp932.c24
-rw-r--r--strings/ctype-czech.c6
-rw-r--r--strings/ctype-euc_kr.c24
-rw-r--r--strings/ctype-eucjpms.c24
-rw-r--r--strings/ctype-extra.c216
-rw-r--r--strings/ctype-gb2312.c24
-rw-r--r--strings/ctype-gbk.c24
-rw-r--r--strings/ctype-latin1.c14
-rw-r--r--strings/ctype-simple.c28
-rw-r--r--strings/ctype-sjis.c24
-rw-r--r--strings/ctype-tis620.c16
-rw-r--r--strings/ctype-uca-scanner_next.inl66
-rw-r--r--strings/ctype-uca.c1647
-rw-r--r--strings/ctype-uca.h187
-rw-r--r--strings/ctype-uca.inl229
-rw-r--r--strings/ctype-uca1400.h252
-rw-r--r--strings/ctype-ucs2.c98
-rw-r--r--strings/ctype-ujis.c24
-rw-r--r--strings/ctype-utf8.c62
-rw-r--r--strings/ctype-win1250ch.c6
-rw-r--r--strings/ctype.c26
-rw-r--r--strings/strings_def.h4
-rw-r--r--strings/uca-dump.c938
-rw-r--r--tests/mysql_client_test.c38
-rw-r--r--unittest/strings/strings-t.c2
837 files changed, 71307 insertions, 25478 deletions
diff --git a/.gitignore b/.gitignore
index 05c65848514..93a132b3d83 100644
--- a/.gitignore
+++ b/.gitignore
@@ -616,6 +616,8 @@ scripts/mariadb-setpermission
sql/mariadbd
sql/mariadb-tzinfo-to-sql
storage/rocksdb/mariadb-ldb
+strings/ctype-uca1400data.h
+strings/uca-dump
tests/mariadb-client-test
versioninfo_dll.rc
versioninfo_exe.rc
diff --git a/VERSION b/VERSION
index 03da2c314a5..4d9021a0d59 100644
--- a/VERSION
+++ b/VERSION
@@ -1,4 +1,4 @@
MYSQL_VERSION_MAJOR=10
-MYSQL_VERSION_MINOR=9
-MYSQL_VERSION_PATCH=5
+MYSQL_VERSION_MINOR=10
+MYSQL_VERSION_PATCH=3
SERVER_MATURITY=stable
diff --git a/client/mysql.cc b/client/mysql.cc
index e63dcf5dbe9..0e704f70ecb 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -1491,7 +1491,7 @@ static bool do_connect(MYSQL *mysql, const char *host, const char *user,
if (opt_secure_auth)
mysql_options(mysql, MYSQL_SECURE_AUTH, (char *) &opt_secure_auth);
#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
- if (opt_use_ssl)
+ if (opt_use_ssl && opt_protocol <= MYSQL_PROTOCOL_SOCKET)
{
mysql_ssl_set(mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
opt_ssl_capath, opt_ssl_cipher);
diff --git a/client/mysqldump.c b/client/mysqldump.c
index 455bf85b70d..e4977bde08c 100644
--- a/client/mysqldump.c
+++ b/client/mysqldump.c
@@ -2581,7 +2581,7 @@ static uint dump_events_for_db(char *db)
MYSQL_RES *event_res, *event_list_res;
MYSQL_ROW row, event_list_row;
- char db_cl_name[MY_CS_NAME_SIZE];
+ char db_cl_name[MY_CS_COLLATION_NAME_SIZE];
int db_cl_altered= FALSE;
DBUG_ENTER("dump_events_for_db");
@@ -2801,7 +2801,7 @@ static uint dump_routines_for_db(char *db)
FILE *sql_file= md_result_file;
MYSQL_ROW row, routine_list_row;
- char db_cl_name[MY_CS_NAME_SIZE];
+ char db_cl_name[MY_CS_COLLATION_NAME_SIZE];
int db_cl_altered= FALSE;
// before 10.3 packages are not supported
uint upper_bound= mysql_get_server_version(mysql) >= 100300 ?
@@ -3844,7 +3844,7 @@ static int dump_triggers_for_table(char *table_name, char *db_name)
MYSQL_ROW row;
FILE *sql_file= md_result_file;
- char db_cl_name[MY_CS_NAME_SIZE];
+ char db_cl_name[MY_CS_COLLATION_NAME_SIZE];
int ret= TRUE;
/* Servers below 5.1.21 do not support SHOW CREATE TRIGGER */
const int use_show_create_trigger= mysql_get_server_version(mysql) >= 50121;
diff --git a/client/mysqlimport.c b/client/mysqlimport.c
index 9d30fd989ca..82dbd682bd6 100644
--- a/client/mysqlimport.c
+++ b/client/mysqlimport.c
@@ -570,15 +570,18 @@ static void safe_exit(int error, MYSQL *mysql)
if (mysql)
mysql_close(mysql);
- if (error)
- sf_leaking_memory= 1; /* dirty exit, some threads are still running */
- else
+ if (counter)
{
- mysql_library_end();
- free_defaults(argv_to_free);
- my_free(opt_password);
- my_end(my_end_arg); /* clean exit */
+ /* dirty exit. some threads are running,
+ memory is not freed, openssl not deinitialized */
+ DBUG_ASSERT(error);
+ _exit(error);
}
+
+ mysql_library_end();
+ free_defaults(argv_to_free);
+ my_free(opt_password);
+ my_end(my_end_arg); /* clean exit */
exit(error);
}
diff --git a/client/mysqltest.cc b/client/mysqltest.cc
index ba67fd9b166..88f238c7855 100644
--- a/client/mysqltest.cc
+++ b/client/mysqltest.cc
@@ -6131,12 +6131,8 @@ void do_connect(struct st_command *command)
mysql_options(con_slot->mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
mysql_options(con_slot->mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
mysql_options(con_slot->mysql, MARIADB_OPT_TLS_VERSION, opt_tls_version);
-#if MYSQL_VERSION_ID >= 50000
- /* Turn on ssl_verify_server_cert only if host is "localhost" */
- opt_ssl_verify_server_cert= !strcmp(ds_host.str, "localhost");
mysql_options(con_slot->mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
&opt_ssl_verify_server_cert);
-#endif
}
#endif
@@ -9875,12 +9871,8 @@ int main(int argc, char **argv)
mysql_options(con->mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
mysql_options(con->mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
mysql_options(con->mysql, MARIADB_OPT_TLS_VERSION, opt_tls_version);
-#if MYSQL_VERSION_ID >= 50000
- /* Turn on ssl_verify_server_cert only if host is "localhost" */
- opt_ssl_verify_server_cert= opt_host && !strcmp(opt_host, "localhost");
mysql_options(con->mysql, MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
&opt_ssl_verify_server_cert);
-#endif
}
#endif
diff --git a/debian/additions/mariadb.conf.d/50-server.cnf b/debian/additions/mariadb.conf.d/50-server.cnf
index 953a34034c6..aa61301297e 100644
--- a/debian/additions/mariadb.conf.d/50-server.cnf
+++ b/debian/additions/mariadb.conf.d/50-server.cnf
@@ -108,7 +108,7 @@ collation-server = utf8mb4_general_ci
# you can put MariaDB-only options here
[mariadb]
-# This group is only read by MariaDB-10.9 servers.
+# This group is only read by MariaDB-10.10 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
-[mariadb-10.9]
+[mariadb-10.10]
diff --git a/debian/changelog b/debian/changelog
index 0ebfb0a61c2..2f98eccffce 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-mariadb (1:10.9.0) unstable; urgency=medium
+mariadb (1:10.10.0) unstable; urgency=medium
* Initial Release
diff --git a/debian/control b/debian/control
index 8a0e14beb80..8886da40fdf 100644
--- a/debian/control
+++ b/debian/control
@@ -337,7 +337,6 @@ Replaces: mariadb-client (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
- mariadb-client-10.9 (<< ${source:Version}),
mariadb-client-5.1,
mariadb-client-5.2,
mariadb-client-5.3,
@@ -367,7 +366,6 @@ Replaces: mariadb-client (<< ${source:Version}),
mariadb-server-core-10.6,
mariadb-server-core-10.7,
mariadb-server-core-10.8,
- mariadb-server-core-10.9 (<< ${source:Version}),
mysql-client (<< 5.0.51),
mysql-client-5.0,
mysql-client-5.1,
@@ -386,7 +384,7 @@ Replaces: mariadb-client (<< ${source:Version}),
percona-xtradb-cluster-server-5.7,
virtual-mysql-client-core
Provides: default-mysql-client-core,
- mariadb-client-core-10.9,
+ mariadb-client-core-10.10,
virtual-mysql-client-core
Description: MariaDB database core client binaries
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
@@ -415,7 +413,6 @@ Conflicts: mariadb-client (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
- mariadb-client-10.9 (<< ${source:Version}),
mariadb-client-5.1,
mariadb-client-5.2,
mariadb-client-5.3,
@@ -445,7 +442,6 @@ Breaks: mariadb-client-core (<< ${source:Version}),
mariadb-client-core-10.6,
mariadb-client-core-10.7,
mariadb-client-core-10.8,
- mariadb-client-core-10.9 (<< ${source:Version}),
mariadb-server (<< ${source:Version}),
mariadb-server-10.0,
mariadb-server-10.1,
@@ -456,7 +452,6 @@ Breaks: mariadb-client-core (<< ${source:Version}),
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
- mariadb-server-10.9 (<< ${source:Version}),
mariadb-server-core (<< ${source:Version}),
mariadb-server-core-10.0,
mariadb-server-core-10.1,
@@ -488,7 +483,6 @@ Replaces: mariadb-client (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
- mariadb-client-10.9 (<< ${source:Version}),
mariadb-client-5.1,
mariadb-client-5.2,
mariadb-client-5.3,
@@ -503,7 +497,6 @@ Replaces: mariadb-client (<< ${source:Version}),
mariadb-client-core-10.6,
mariadb-client-core-10.7,
mariadb-client-core-10.8,
- mariadb-client-core-10.9 (<< ${source:Version}),
mariadb-server (<< ${source:Version}),
mariadb-server-10.0,
mariadb-server-10.1,
@@ -514,7 +507,6 @@ Replaces: mariadb-client (<< ${source:Version}),
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
- mariadb-server-10.9 (<< ${source:Version}),
mariadb-server-core (<< ${source:Version}),
mariadb-server-core-10.0,
mariadb-server-core-10.1,
@@ -525,7 +517,6 @@ Replaces: mariadb-client (<< ${source:Version}),
mariadb-server-core-10.6,
mariadb-server-core-10.7,
mariadb-server-core-10.8,
- mariadb-server-core-10.9 (<< ${source:Version}),
mysql-client (<< 5.0.51),
mysql-client-5.0,
mysql-client-5.1,
@@ -553,7 +544,7 @@ Replaces: mariadb-client (<< ${source:Version}),
percona-xtradb-cluster-server-5.7,
virtual-mysql-client
Provides: default-mysql-client,
- mariadb-client-10.9,
+ mariadb-client-10.10,
virtual-mysql-client
Recommends: libdbd-mariadb-perl | libdbd-mysql-perl,
libdbi-perl,
@@ -572,7 +563,8 @@ Architecture: any
Depends: mariadb-common (>= ${source:Version}),
${misc:Depends},
${shlibs:Depends}
-Conflicts: mariadb-server-core-10.0,
+Conflicts: mariadb-server-core (<< ${source:Version}),
+ mariadb-server-core-10.0,
mariadb-server-core-10.1,
mariadb-server-core-10.2,
mariadb-server-core-10.3,
@@ -581,7 +573,6 @@ Conflicts: mariadb-server-core-10.0,
mariadb-server-core-10.6,
mariadb-server-core-10.7,
mariadb-server-core-10.8,
- mariadb-server-core-10.9 (<< ${source:Version}),
mariadb-server-core-5.1,
mariadb-server-core-5.2,
mariadb-server-core-5.3,
@@ -604,7 +595,6 @@ Breaks: mariadb-client (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
- mariadb-client-10.9 (<< ${source:Version}),
mariadb-server (<< ${source:Version}),
mariadb-server-10.0,
mariadb-server-10.1,
@@ -614,7 +604,6 @@ Breaks: mariadb-client (<< ${source:Version}),
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
- mariadb-server-10.9 (<< ${source:Version}),
mysql-client-5.5,
mysql-server-5.5,
mysql-server-5.6,
@@ -633,7 +622,6 @@ Replaces: mariadb-client (<< ${source:Version}),
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
- mariadb-client-10.9 (<< ${source:Version}),
mariadb-server (<< ${source:Version}),
mariadb-server-10.0,
mariadb-server-10.1,
@@ -643,7 +631,6 @@ Replaces: mariadb-client (<< ${source:Version}),
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
- mariadb-server-10.9 (<< ${source:Version}),
mariadb-server-core-10.0,
mariadb-server-core-10.1,
mariadb-server-core-10.2,
@@ -671,7 +658,7 @@ Replaces: mariadb-client (<< ${source:Version}),
percona-xtradb-cluster-server-5.7,
virtual-mysql-server-core
Provides: default-mysql-server-core,
- mariadb-server-core-10.9,
+ mariadb-server-core-10.10,
virtual-mysql-server-core
Description: MariaDB database core server files
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
@@ -718,7 +705,6 @@ Conflicts: mariadb-server (<< ${source:Version}),
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
- mariadb-server-10.9 (<< ${source:Version}),
mariadb-server-5.1,
mariadb-server-5.2,
mariadb-server-5.3,
@@ -753,7 +739,6 @@ Replaces: handlersocket-mysql-5.5,
mariadb-client-10.6,
mariadb-client-10.7,
mariadb-client-10.8,
- mariadb-client-10.9 (<< ${source:Version}),
mariadb-server (<< ${source:Version}),
mariadb-server-10.0,
mariadb-server-10.1,
@@ -764,7 +749,6 @@ Replaces: handlersocket-mysql-5.5,
mariadb-server-10.6,
mariadb-server-10.7,
mariadb-server-10.8,
- mariadb-server-10.9 (<< ${source:Version}),
mariadb-server-5.1,
mariadb-server-5.2,
mariadb-server-5.3,
@@ -787,7 +771,7 @@ Replaces: handlersocket-mysql-5.5,
percona-xtradb-cluster-server-5.7,
virtual-mysql-server
Provides: default-mysql-server,
- mariadb-server-10.9,
+ mariadb-server-10.10,
virtual-mysql-server
Description: MariaDB database server binaries
MariaDB is a fast, stable and true multi-user, multi-threaded SQL database
diff --git a/debian/not-installed b/debian/not-installed
index dd7882a9821..b94bfaf3c6e 100644
--- a/debian/not-installed
+++ b/debian/not-installed
@@ -24,6 +24,7 @@ usr/lib/x86_64-linux-gnu/libidbboot.a # ColumnStore header file
usr/lib/x86_64-linux-gnu/libprocessor.a # ColumnStore header file
usr/lib/x86_64-linux-gnu/libwe_xml.a # ColumnStore header file
usr/bin/test-connect-t
+usr/bin/uca-dump
usr/bin/wsrep_sst_backup
usr/lib/mysql/plugin/type_test.so
usr/lib/sysusers.d/mariadb.conf # Not used (yet) in Debian systemd
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides
index 0666044ac38..740a7871a2e 100644
--- a/debian/source/lintian-overrides
+++ b/debian/source/lintian-overrides
@@ -10,22 +10,22 @@ version-substvar-for-external-package mariadb-client-10.9 -> mysql-client-core-5
version-substvar-for-external-package mariadb-client-10.9 -> mysql-client-core-8.*
version-substvar-for-external-package libmariadbd-dev -> libmariadbclient-dev
# Intentional version-substvar-for-external-package as long as mariadb-server
-# provides mariadb-server-10.9 and mariadb-client provides mariadb-client-10.9
-version-substvar-for-external-package Conflicts (line 408) ${source:Version} mariadb-client -> mariadb-client-10.9
-version-substvar-for-external-package Conflicts (line 575) ${source:Version} mariadb-server-core -> mariadb-server-core-10.9
-version-substvar-for-external-package Conflicts (line 711) ${source:Version} mariadb-server -> mariadb-server-10.9
+# provides mariadb-server-10.10 and mariadb-client provides mariadb-client-10.10
+version-substvar-for-external-package Conflicts (line 408) ${source:Version} mariadb-client -> mariadb-client-10.10
+version-substvar-for-external-package Conflicts (line 575) ${source:Version} mariadb-server-core -> mariadb-server-core-10.10
+version-substvar-for-external-package Conflicts (line 711) ${source:Version} mariadb-server -> mariadb-server-10.10
version-substvar-for-external-package Conflicts (line 95) ${source:Version} libmariadb-dev-compat -> libmariadbclient-dev
version-substvar-for-external-package Replaces (line 109) ${source:Version} libmariadb-dev-compat -> libmariadbclient-dev
-version-substvar-for-external-package Replaces (line 330) ${source:Version} mariadb-client-core -> mariadb-client-10.9
-version-substvar-for-external-package Replaces (line 330) ${source:Version} mariadb-client-core -> mariadb-server-core-10.9
-version-substvar-for-external-package Replaces (line 481) ${source:Version} mariadb-client -> mariadb-client-10.9
-version-substvar-for-external-package Replaces (line 481) ${source:Version} mariadb-client -> mariadb-client-core-10.9
-version-substvar-for-external-package Replaces (line 481) ${source:Version} mariadb-client -> mariadb-server-10.9
-version-substvar-for-external-package Replaces (line 481) ${source:Version} mariadb-client -> mariadb-server-core-10.9
-version-substvar-for-external-package Replaces (line 626) ${source:Version} mariadb-server-core -> mariadb-client-10.9
-version-substvar-for-external-package Replaces (line 626) ${source:Version} mariadb-server-core -> mariadb-server-10.9
-version-substvar-for-external-package Replaces (line 748) ${source:Version} mariadb-server -> mariadb-client-10.9
-version-substvar-for-external-package Replaces (line 748) ${source:Version} mariadb-server -> mariadb-server-10.9
+version-substvar-for-external-package Replaces (line 330) ${source:Version} mariadb-client-core -> mariadb-client-10.10
+version-substvar-for-external-package Replaces (line 330) ${source:Version} mariadb-client-core -> mariadb-server-core-10.10
+version-substvar-for-external-package Replaces (line 481) ${source:Version} mariadb-client -> mariadb-client-10.10
+version-substvar-for-external-package Replaces (line 481) ${source:Version} mariadb-client -> mariadb-client-core-10.10
+version-substvar-for-external-package Replaces (line 481) ${source:Version} mariadb-client -> mariadb-server-10.10
+version-substvar-for-external-package Replaces (line 481) ${source:Version} mariadb-client -> mariadb-server-core-10.10
+version-substvar-for-external-package Replaces (line 626) ${source:Version} mariadb-server-core -> mariadb-client-10.10
+version-substvar-for-external-package Replaces (line 626) ${source:Version} mariadb-server-core -> mariadb-server-10.10
+version-substvar-for-external-package Replaces (line 748) ${source:Version} mariadb-server -> mariadb-client-10.10
+version-substvar-for-external-package Replaces (line 748) ${source:Version} mariadb-server -> mariadb-server-10.10
# ColumnStore not used in Debian, safe to ignore. Reported upstream in https://jira.mariadb.org/browse/MDEV-24124
source-is-missing storage/columnstore/columnstore/utils/jemalloc/libjemalloc.so.2
source-is-missing [storage/columnstore/columnstore/utils/jemalloc/libjemalloc.so.2]
diff --git a/extra/innochecksum.cc b/extra/innochecksum.cc
index c0dd80cf02f..fc616f1aa14 100644
--- a/extra/innochecksum.cc
+++ b/extra/innochecksum.cc
@@ -1209,16 +1209,16 @@ static struct my_option innochecksum_options[] = {
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
-/* Print out the Innodb version and machine information. */
-static void print_version(void)
+/** Print out the version and build information. */
+static void print_version()
{
#ifdef DBUG_OFF
printf("%s Ver %s, for %s (%s)\n",
- my_progname, INNODB_VERSION_STR,
+ my_progname, PACKAGE_VERSION,
SYSTEM_TYPE, MACHINE_TYPE);
#else
printf("%s-debug Ver %s, for %s (%s)\n",
- my_progname, INNODB_VERSION_STR,
+ my_progname, PACKAGE_VERSION,
SYSTEM_TYPE, MACHINE_TYPE);
#endif /* DBUG_OFF */
}
diff --git a/extra/mariabackup/backup_copy.cc b/extra/mariabackup/backup_copy.cc
index 32f10da04e2..09d473558e7 100644
--- a/extra/mariabackup/backup_copy.cc
+++ b/extra/mariabackup/backup_copy.cc
@@ -1493,7 +1493,7 @@ bool backup_start(CorruptedPages &corrupted_pages)
write_binlog_info(mysql_connection);
}
- if (have_flush_engine_logs && !opt_no_lock) {
+ if (!opt_no_lock) {
msg("Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...");
xb_mysql_query(mysql_connection,
"FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS", false);
diff --git a/extra/mariabackup/backup_mysql.cc b/extra/mariabackup/backup_mysql.cc
index ea85c478997..9a09da21d74 100644
--- a/extra/mariabackup/backup_mysql.cc
+++ b/extra/mariabackup/backup_mysql.cc
@@ -62,16 +62,13 @@ Street, Fifth Floor, Boston, MA 02110-1335 USA
char *tool_name;
char tool_args[2048];
-/* mysql flavor and version */
-mysql_flavor_t server_flavor = FLAVOR_UNKNOWN;
-unsigned long mysql_server_version = 0;
+ulong mysql_server_version;
/* server capabilities */
bool have_changed_page_bitmaps = false;
bool have_backup_locks = false;
bool have_lock_wait_timeout = false;
bool have_galera_enabled = false;
-bool have_flush_engine_logs = false;
bool have_multi_threaded_slave = false;
bool have_gtid_slave = false;
@@ -135,7 +132,7 @@ xb_mysql_connect()
opt_socket ? opt_socket : "not set");
#ifdef HAVE_OPENSSL
- if (opt_use_ssl)
+ if (opt_use_ssl && opt_protocol <= MYSQL_PROTOCOL_SOCKET)
{
mysql_ssl_set(connection, opt_ssl_key, opt_ssl_cert,
opt_ssl_ca, opt_ssl_capath,
@@ -298,48 +295,13 @@ read_mysql_one_value(MYSQL *mysql, const char *query)
static
bool
-check_server_version(unsigned long version_number,
- const char *version_string,
- const char *version_comment,
- const char *innodb_version)
+check_server_version(ulong version_number, const char *version_string)
{
- bool version_supported = false;
- bool mysql51 = false;
-
- mysql_server_version = version_number;
-
- server_flavor = FLAVOR_UNKNOWN;
- if (strstr(version_comment, "Percona") != NULL) {
- server_flavor = FLAVOR_PERCONA_SERVER;
- } else if (strstr(version_comment, "MariaDB") != NULL ||
- strstr(version_string, "MariaDB") != NULL) {
- server_flavor = FLAVOR_MARIADB;
- } else if (strstr(version_comment, "MySQL") != NULL) {
- server_flavor = FLAVOR_MYSQL;
- }
-
- mysql51 = version_number > 50100 && version_number < 50500;
- version_supported = version_supported
- || (mysql51 && innodb_version != NULL);
- version_supported = version_supported
- || (version_number > 50500 && version_number < 50700);
- version_supported = version_supported
- || ((version_number > 100000)
- && server_flavor == FLAVOR_MARIADB);
-
- if (mysql51 && innodb_version == NULL) {
- msg("Error: Built-in InnoDB in MySQL 5.1 is not "
- "supported in this release. You can either use "
- "Percona XtraBackup 2.0, or upgrade to InnoDB "
- "plugin.");
- } else if (!version_supported) {
- msg("Error: Unsupported server version: '%s'. Please "
- "report a bug at "
- "https://bugs.launchpad.net/percona-xtrabackup",
- version_string);
- }
+ if (strstr(version_string, "MariaDB") && version_number >= 100800)
+ return true;
- return(version_supported);
+ msg("Error: Unsupported server version: '%s'.", version_string);
+ return false;
}
/*********************************************************************//**
@@ -349,8 +311,6 @@ bool get_mysql_vars(MYSQL *connection)
{
char *gtid_mode_var= NULL;
char *version_var= NULL;
- char *version_comment_var= NULL;
- char *innodb_version_var= NULL;
char *have_backup_locks_var= NULL;
char *log_bin_var= NULL;
char *lock_wait_timeout_var= NULL;
@@ -370,7 +330,7 @@ bool get_mysql_vars(MYSQL *connection)
char *page_zip_level_var= NULL;
char *ignore_db_dirs= NULL;
char *endptr;
- unsigned long server_version= mysql_get_server_version(connection);
+ ulong server_version= mysql_get_server_version(connection);
bool ret= true;
@@ -380,8 +340,6 @@ bool get_mysql_vars(MYSQL *connection)
{"lock_wait_timeout", &lock_wait_timeout_var},
{"gtid_mode", &gtid_mode_var},
{"version", &version_var},
- {"version_comment", &version_comment_var},
- {"innodb_version", &innodb_version_var},
{"wsrep_on", &wsrep_on_var},
{"slave_parallel_workers", &slave_parallel_workers_var},
{"gtid_slave_pos", &gtid_slave_pos_var},
@@ -424,18 +382,13 @@ bool get_mysql_vars(MYSQL *connection)
have_galera_enabled= true;
}
- /* Check server version compatibility and detect server flavor */
-
- if (!(ret= check_server_version(server_version, version_var,
- version_comment_var, innodb_version_var)))
+ /* Check server version compatibility */
+ if (!(ret= check_server_version(server_version, version_var)))
{
goto out;
}
- if (server_version > 50500)
- {
- have_flush_engine_logs= true;
- }
+ mysql_server_version= server_version;
if (slave_parallel_workers_var != NULL &&
atoi(slave_parallel_workers_var) > 0)
@@ -566,16 +519,6 @@ detect_mysql_capabilities_for_backup()
have_changed_page_bitmaps = (atoi(innodb_changed_pages) == 1);
- /* INNODB_CHANGED_PAGES are listed in
- INFORMATION_SCHEMA.PLUGINS in MariaDB, but
- FLUSH NO_WRITE_TO_BINLOG CHANGED_PAGE_BITMAPS
- is not supported for versions below 10.1.6
- (see MDEV-7472) */
- if (server_flavor == FLAVOR_MARIADB &&
- mysql_server_version < 100106) {
- have_changed_page_bitmaps = false;
- }
-
free_mysql_variables(vars);
}
@@ -1382,21 +1325,8 @@ bool
write_slave_info(MYSQL *connection)
{
String sql, comment;
- bool show_all_slaves_status= false;
-
- switch (server_flavor)
- {
- case FLAVOR_MARIADB:
- show_all_slaves_status= mysql_server_version >= 100000;
- break;
- case FLAVOR_UNKNOWN:
- case FLAVOR_MYSQL:
- case FLAVOR_PERCONA_SERVER:
- break;
- }
- if (Show_slave_status::get_slave_info(connection, show_all_slaves_status,
- &sql, &comment))
+ if (Show_slave_status::get_slave_info(connection, true, &sql, &comment))
return false; // Error
if (!sql.length())
diff --git a/extra/mariabackup/backup_mysql.h b/extra/mariabackup/backup_mysql.h
index b61fa2362c6..eb4ed42c048 100644
--- a/extra/mariabackup/backup_mysql.h
+++ b/extra/mariabackup/backup_mysql.h
@@ -3,18 +3,14 @@
#include <mysql.h>
-/* mysql flavor and version */
-enum mysql_flavor_t { FLAVOR_UNKNOWN, FLAVOR_MYSQL,
- FLAVOR_PERCONA_SERVER, FLAVOR_MARIADB };
-extern mysql_flavor_t server_flavor;
-extern unsigned long mysql_server_version;
+/* MariaDB version */
+extern ulong mysql_server_version;
/* server capabilities */
extern bool have_changed_page_bitmaps;
extern bool have_backup_locks;
extern bool have_lock_wait_timeout;
extern bool have_galera_enabled;
-extern bool have_flush_engine_logs;
extern bool have_multi_threaded_slave;
extern bool have_gtid_slave;
diff --git a/include/m_ctype.h b/include/m_ctype.h
index 83b12c3c4f6..811b3b71a17 100644
--- a/include/m_ctype.h
+++ b/include/m_ctype.h
@@ -34,7 +34,9 @@ enum loglevel {
extern "C" {
#endif
-#define MY_CS_NAME_SIZE 32
+#define MY_CS_CHARACTER_SET_NAME_SIZE 32
+#define MY_CS_COLLATION_NAME_SIZE 64
+
#define MY_CS_CTYPE_TABLE_SIZE 257
#define MY_CS_TO_LOWER_TABLE_SIZE 256
#define MY_CS_TO_UPPER_TABLE_SIZE 256
@@ -116,7 +118,7 @@ extern MY_UNICASE_INFO my_unicase_unicode520;
*/
#define MY_UCA_MAX_WEIGHT_SIZE (8+1) /* Including 0 terminator */
#define MY_UCA_CONTRACTION_MAX_WEIGHT_SIZE (2*8+1) /* Including 0 terminator */
-#define MY_UCA_WEIGHT_LEVELS 2
+#define MY_UCA_WEIGHT_LEVELS 3
typedef struct my_contraction_t
{
@@ -139,6 +141,65 @@ const uint16 *my_uca_contraction2_weight(const MY_CONTRACTIONS *c,
my_wc_t wc1, my_wc_t wc2);
+typedef struct my_uca_weight2_t
+{
+ uint16 weight[2];
+} MY_UCA_WEIGHT2;
+
+
+/*
+ In DUCET as of Unicode-14.0.0:
+ - All characters in the range U+0000..U+007F (i.e. using one byte in utf8)
+ have not more than two weights on all weight levels.
+ - All characters in the range U+0080..U+07FF (i.e. using two bytes in utf8)
+ have not more than four weights on all weight levels.
+ Therefore the limit of 4 weights should cover all byte pairs
+ (i.e. two ASCII characters or one 2-byte character)
+ that are a subject for the "process 2 bytes at a time" optimization.
+ If some collation reorders any character from the mentioned ranges
+ in the way that it produces more weights, such character will not
+ be optimized, but will be correctly processed the slower mb_wc-based
+ method (1 character at a time).
+*/
+#define MY_UCA_2BYTES_MAX_WEIGHT_SIZE (4+1) /* Including 0 terminator */
+
+typedef struct my_uca_2bytes_item_t
+{
+ uint16 weight[MY_UCA_2BYTES_MAX_WEIGHT_SIZE];
+} MY_UCA_2BYTES_ITEM;
+
+
+typedef struct my_uca_level_booster_t
+{
+ /*
+ A helper array to process 2 bytes at a time during string comparison.
+ It maps all 2-bytes sequences that make:
+ - two ASCII characters or
+ - one 2-byte character
+ to their weights. The weight length is limited to
+ MY_UCA_2BYTES_MAX_WEIGHT_SIZE-1 weights.
+ This array is used in the main loop optimization.
+ */
+ MY_UCA_2BYTES_ITEM weight_strings_2bytes[0x10000];
+ /*
+ A helper array to process 2bytes at a time during string comparison,
+ with an even more efficient way than the above one.
+ The weight size is limited to 2 weights, so it's used for the cases
+ when 2 input bytes produce 1 or 2 weights.
+ This limit makes the code using this array even simpler and faster.
+ This array is used for prefix optimization.
+ */
+ MY_UCA_WEIGHT2 weight_strings_2bytes_to_1_or_2_weights[0x10000];
+} MY_UCA_LEVEL_BOOSTER;
+
+
+typedef struct my_uca_contraction_hash_t
+{
+ size_t nitems_alloced;
+ MY_CONTRACTION *item;
+} MY_UCA_CONTRACTION_HASH;
+
+
/* Collation weights on a single level (e.g. primary, secondary, tertiarty) */
typedef struct my_uca_level_info_st
{
@@ -147,6 +208,8 @@ typedef struct my_uca_level_info_st
uint16 **weights;
MY_CONTRACTIONS contractions;
uint levelno;
+ MY_UCA_CONTRACTION_HASH contraction_hash;
+ MY_UCA_LEVEL_BOOSTER *booster;
} MY_UCA_WEIGHT_LEVEL;
@@ -168,6 +231,9 @@ typedef struct uca_info_st
my_wc_t first_variable;
my_wc_t last_variable;
+ /* Unicode version */
+ uint version;
+
} MY_UCA_INFO;
@@ -237,6 +303,46 @@ typedef enum enum_repertoire_t
} my_repertoire_t;
+/* ID compatibility */
+typedef enum enum_collation_id_type
+{
+ MY_COLLATION_ID_TYPE_PRECISE= 0,
+ MY_COLLATION_ID_TYPE_COMPAT_100800= 1
+} my_collation_id_type_t;
+
+
+/* Collation name display modes */
+typedef enum enum_collation_name_mode
+{
+ MY_COLLATION_NAME_MODE_FULL= 0,
+ MY_COLLATION_NAME_MODE_CONTEXT= 1
+} my_collation_name_mode_t;
+
+
+/* Level flags */
+#define MY_CS_LEVEL_BIT_PRIMARY 0x00
+#define MY_CS_LEVEL_BIT_SECONDARY 0x01
+#define MY_CS_LEVEL_BIT_TERTIARY 0x02
+#define MY_CS_LEVEL_BIT_QUATERNARY 0x03
+
+#define MY_CS_COLL_LEVELS_S1 (1<<MY_CS_LEVEL_BIT_PRIMARY)
+
+#define MY_CS_COLL_LEVELS_AI_CS (1<<MY_CS_LEVEL_BIT_PRIMARY)| \
+ (1<<MY_CS_LEVEL_BIT_TERTIARY)
+
+#define MY_CS_COLL_LEVELS_S2 (1<<MY_CS_LEVEL_BIT_PRIMARY)| \
+ (1<<MY_CS_LEVEL_BIT_SECONDARY)
+
+#define MY_CS_COLL_LEVELS_S3 (1<<MY_CS_LEVEL_BIT_PRIMARY)| \
+ (1<<MY_CS_LEVEL_BIT_SECONDARY) | \
+ (1<<MY_CS_LEVEL_BIT_TERTIARY)
+
+#define MY_CS_COLL_LEVELS_S4 (1<<MY_CS_LEVEL_BIT_PRIMARY)| \
+ (1<<MY_CS_LEVEL_BIT_SECONDARY) | \
+ (1<<MY_CS_LEVEL_BIT_TERTIARY) | \
+ (1<<MY_CS_LEVEL_BIT_QUATERNARY)
+
+
/* Flags for strxfrm */
#define MY_STRXFRM_LEVEL1 0x00000001 /* for primary weights */
#define MY_STRXFRM_LEVEL2 0x00000002 /* for secondary weights */
@@ -437,8 +543,13 @@ struct my_collation_handler_st
*/
size_t (*min_str)(CHARSET_INFO *cs, uchar *dst, size_t dstlen, size_t nchars);
size_t (*max_str)(CHARSET_INFO *cs, uchar *dst, size_t dstlen, size_t nchars);
+
+ uint (*get_id)(CHARSET_INFO *cs, my_collation_id_type_t type);
+ LEX_CSTRING (*get_collation_name)(CHARSET_INFO *cs,
+ my_collation_name_mode_t mode);
};
+
extern MY_COLLATION_HANDLER my_collation_8bit_bin_handler;
extern MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler;
extern MY_COLLATION_HANDLER my_collation_8bit_nopad_bin_handler;
@@ -840,6 +951,21 @@ struct charset_info_st
}
/* Collation routines */
+ uint default_flag() const
+ {
+ return state & MY_CS_PRIMARY;
+ }
+
+ uint binsort_flag() const
+ {
+ return state & MY_CS_BINSORT;
+ }
+
+ uint compiled_flag() const
+ {
+ return state & MY_CS_COMPILED;
+ }
+
int strnncoll(const uchar *a, size_t alen,
const uchar *b, size_t blen, my_bool b_is_prefix= FALSE) const
{
@@ -937,6 +1063,15 @@ struct charset_info_st
return (coll->max_str)(this, dst, dstlen, nchars);
}
+ uint get_id(my_collation_id_type_t type) const
+ {
+ return (coll->get_id)(this, type);
+ }
+
+ LEX_CSTRING get_collation_name(my_collation_name_mode_t mode) const
+ {
+ return (coll->get_collation_name)(this, mode);
+ }
#endif /* __cplusplus */
};
@@ -1517,6 +1652,9 @@ extern size_t my_strcspn(CHARSET_INFO *cs, const char *str, const char *end,
my_bool my_propagate_simple(CHARSET_INFO *cs, const uchar *str, size_t len);
my_bool my_propagate_complex(CHARSET_INFO *cs, const uchar *str, size_t len);
+uint my_ci_get_id_generic(CHARSET_INFO *cs, my_collation_id_type_t type);
+LEX_CSTRING my_ci_get_collation_name_generic(CHARSET_INFO *cs,
+ my_collation_name_mode_t mode);
typedef struct
{
@@ -1531,7 +1669,7 @@ my_repertoire_t my_string_repertoire(CHARSET_INFO *cs,
my_bool my_charset_is_ascii_based(CHARSET_INFO *cs);
my_repertoire_t my_charset_repertoire(CHARSET_INFO *cs);
-uint my_strxfrm_flag_normalize(uint flags, uint nlevels);
+uint my_strxfrm_flag_normalize(CHARSET_INFO *cs, uint flags);
void my_strxfrm_desc_and_reverse(uchar *str, uchar *strend,
uint flags, uint level);
size_t my_strxfrm_pad_desc_and_reverse(CHARSET_INFO *cs,
diff --git a/include/my_rnd.h b/include/my_rnd.h
index a3e3788085d..dc8efbd276e 100644
--- a/include/my_rnd.h
+++ b/include/my_rnd.h
@@ -25,7 +25,6 @@ struct my_rnd_struct {
void my_rnd_init(struct my_rnd_struct *rand_st, ulong seed1, ulong seed2);
double my_rnd(struct my_rnd_struct *rand_st);
-double my_rnd_ssl(struct my_rnd_struct *rand_st);
C_MODE_END
diff --git a/include/my_sys.h b/include/my_sys.h
index 00a901a313b..a292200d2c4 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -243,7 +243,7 @@ extern void (*proc_info_hook)(void *, const PSI_stage_info *, PSI_stage_info *,
const char *, const char *, const unsigned int);
/* charsets */
-#define MY_ALL_CHARSETS_SIZE 2048
+#define MY_ALL_CHARSETS_SIZE 4096
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *default_charset_info;
extern MYSQL_PLUGIN_IMPORT CHARSET_INFO *all_charsets[MY_ALL_CHARSETS_SIZE];
extern struct charset_info_st compiled_charsets[];
@@ -1123,4 +1123,135 @@ void my_init_mysys_psi_keys(void);
struct st_mysql_file;
extern struct st_mysql_file *mysql_stdin;
C_MODE_END
+
+
+#ifdef __cplusplus
+
+class Charset_loader_mysys: public MY_CHARSET_LOADER
+{
+public:
+ Charset_loader_mysys()
+ {
+ my_charset_loader_init_mysys(this);
+ }
+
+ /**
+ Get a CHARSET_INFO by a character set name.
+
+ @param name Collation name
+ @param cs_flags e.g. MY_CS_PRIMARY, MY_CS_BINARY
+ @param my_flags mysys flags (MY_WME, MY_UTF8_IS_UTF8MB3)
+ @return
+ @retval NULL on error (e.g. not found)
+ @retval A CHARSET_INFO pointter on success
+ */
+ CHARSET_INFO *get_charset(const char *cs_name, uint cs_flags, myf my_flags)
+ {
+ error[0]= '\0'; // Need to clear in case of the second call
+ return my_charset_get_by_name(this, cs_name, cs_flags, my_flags);
+ }
+
+ /**
+ Get a CHARSET_INFO by an exact collation by name.
+
+ @param name Collation name
+ @param my_flags e.g. the utf8 translation flag
+ @return
+ @retval NULL on error (e.g. not found)
+ @retval A CHARSET_INFO pointter on success
+ */
+ CHARSET_INFO *get_exact_collation(const char *name, myf my_flags)
+ {
+ error[0]= '\0'; // Need to clear in case of the second call
+ return my_collation_get_by_name(this, name, my_flags);
+ }
+
+ /**
+ Get a CHARSET_INFO by a context collation by name.
+ The returned pointer must be further resolved to a character set.
+
+ @param name Collation name
+ @param utf8_flag The utf8 translation flag
+ @return
+ @retval NULL on error (e.g. not found)
+ @retval A CHARSET_INFO pointter on success
+ */
+ CHARSET_INFO *get_context_collation(const char *name, myf my_flags)
+ {
+ return get_exact_collation_by_context_name(&my_charset_utf8mb4_general_ci,
+ name, my_flags);
+ }
+
+ /**
+ Get an exact CHARSET_INFO by a contextually typed collation name.
+
+ @param name Collation name
+ @param utf8_flag The utf8 translation flag
+ @return
+ @retval NULL on error (e.g. not found)
+ @retval A CHARSET_INFO pointer on success
+ */
+ CHARSET_INFO *get_exact_collation_by_context_name(CHARSET_INFO *cs,
+ const char *name,
+ myf my_flags)
+ {
+ char tmp[MY_CS_COLLATION_NAME_SIZE];
+ my_snprintf(tmp, sizeof(tmp), "%s_%s", cs->cs_name.str, name);
+ return get_exact_collation(tmp, my_flags);
+ }
+
+ /*
+ Find a collation with binary comparison rules
+ */
+ CHARSET_INFO *get_bin_collation(CHARSET_INFO *cs, myf my_flags)
+ {
+ /*
+ We don't need to handle old_mode=UTF8_IS_UTF8MB3 here,
+ This method assumes that "cs" points to a real character set name.
+ It can be either "utf8mb3" or "utf8mb4". It cannot be "utf8".
+ No thd->get_utf8_flag() flag passed to get_charset_by_csname().
+ */
+ DBUG_ASSERT(cs->cs_name.length !=4 || memcmp(cs->cs_name.str, "utf8", 4));
+ /*
+ CREATE TABLE t1 (a CHAR(10) BINARY)
+ CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
+ Nothing to do, we have the binary collation already.
+ */
+ if (cs->state & MY_CS_BINSORT)
+ return cs;
+
+ // CREATE TABLE t1 (a CHAR(10) BINARY) CHARACTER SET utf8mb4;/
+ error[0]= '\0'; // Need in case of the second execution
+ return get_charset(cs->cs_name.str, MY_CS_BINSORT, my_flags);
+ }
+
+ /*
+ Find the default collation in the given character set
+ */
+ CHARSET_INFO *get_default_collation(CHARSET_INFO *cs, myf my_flags)
+ {
+ // See comments in find_bin_collation_or_error()
+ DBUG_ASSERT(cs->cs_name.length !=4 || memcmp(cs->cs_name.str, "utf8", 4));
+ /*
+ CREATE TABLE t1 (a CHAR(10) COLLATE DEFAULT) CHARACTER SET utf8mb4;
+ Nothing to do, we have the default collation already.
+ */
+ if (cs->state & MY_CS_PRIMARY)
+ return cs;
+ /*
+ CREATE TABLE t1 (a CHAR(10) COLLATE DEFAULT)
+ CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
+
+ Don't need to handle old_mode=UTF8_IS_UTF8MB3 here.
+ See comments in find_bin_collation_or_error.
+ */
+ cs= get_charset(cs->cs_name.str, MY_CS_PRIMARY, my_flags);
+ DBUG_ASSERT(cs);
+ return cs;
+ }
+};
+
+#endif /*__cplusplus */
+
+
#endif /* _my_sys_h */
diff --git a/include/sslopt-longopts.h b/include/sslopt-longopts.h
index ee90d17fb64..63d1a42c1bd 100644
--- a/include/sslopt-longopts.h
+++ b/include/sslopt-longopts.h
@@ -21,7 +21,7 @@
{"ssl", OPT_SSL_SSL,
"Enable SSL for connection (automatically enabled with other flags).",
- &opt_use_ssl, &opt_use_ssl, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
+ &opt_use_ssl, &opt_use_ssl, 0, GET_BOOL, OPT_ARG, 1, 0, 0, 0, 0, 0},
{"ssl-ca", OPT_SSL_CA,
"CA file in PEM format (check OpenSSL docs, implies --ssl).",
&opt_ssl_ca, &opt_ssl_ca, 0, GET_STR, REQUIRED_ARG,
diff --git a/include/sslopt-vars.h b/include/sslopt-vars.h
index e28f19b919d..d263e5dbd90 100644
--- a/include/sslopt-vars.h
+++ b/include/sslopt-vars.h
@@ -22,7 +22,7 @@
#else
#define SSL_STATIC static
#endif
-SSL_STATIC my_bool opt_use_ssl = 0;
+SSL_STATIC my_bool opt_use_ssl = 1;
SSL_STATIC char *opt_ssl_ca = 0;
SSL_STATIC char *opt_ssl_capath = 0;
SSL_STATIC char *opt_ssl_cert = 0;
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc
index 5a8945a35a6..14515cdcf4d 100644
--- a/libmysqld/lib_sql.cc
+++ b/libmysqld/lib_sql.cc
@@ -1094,13 +1094,15 @@ bool Protocol_text::store_field_metadata(const THD * thd,
if (charset_for_protocol == &my_charset_bin || thd_cs == NULL)
{
/* No conversion */
- client_field->charsetnr= charset_for_protocol->number;
+ client_field->charsetnr= charset_for_protocol->
+ get_id(MY_COLLATION_ID_TYPE_COMPAT_100800);
client_field->length= server_field.length;
}
else
{
/* With conversion */
- client_field->charsetnr= thd_cs->number;
+ client_field->charsetnr= thd_cs->
+ get_id(MY_COLLATION_ID_TYPE_COMPAT_100800);
client_field->length= server_field.max_octet_length(charset_for_protocol,
thd_cs);
}
diff --git a/man/comp_err.1 b/man/comp_err.1
index 6be91925bcc..1603ddf51de 100644
--- a/man/comp_err.1
+++ b/man/comp_err.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBCOMP_ERR\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBCOMP_ERR\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/galera_new_cluster.1 b/man/galera_new_cluster.1
index 8330668f983..d7efa7c84be 100644
--- a/man/galera_new_cluster.1
+++ b/man/galera_new_cluster.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBGALERA_NEW_CLUSTER\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBGALERA_NEW_CLUSTER\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/galera_recovery.1 b/man/galera_recovery.1
index 4261e81db79..90fbe67cbc0 100644
--- a/man/galera_recovery.1
+++ b/man/galera_recovery.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBGALERA_RECOVERY\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBGALERA_RECOVERY\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/innochecksum.1 b/man/innochecksum.1
index eefeddfc67e..56e4f43dbd4 100644
--- a/man/innochecksum.1
+++ b/man/innochecksum.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBINNOCHECKSUM\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBINNOCHECKSUM\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mariabackup.1 b/man/mariabackup.1
index 27354687f52..4ee0a2f09d4 100644
--- a/man/mariabackup.1
+++ b/man/mariabackup.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIABACKUP\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIABACKUP\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mariadb-conv.1 b/man/mariadb-conv.1
index 282b194f9df..c47e08c99a7 100644
--- a/man/mariadb-conv.1
+++ b/man/mariadb-conv.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-CONV" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-CONV" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mariadb-service-convert.1 b/man/mariadb-service-convert.1
index f10af9cb8cd..6694145e491 100644
--- a/man/mariadb-service-convert.1
+++ b/man/mariadb-service-convert.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-SERVICE-CONVERT\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-SERVICE-CONVERT\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mbstream.1 b/man/mbstream.1
index 5cf23447e66..ed9d0036381 100644
--- a/man/mbstream.1
+++ b/man/mbstream.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMBSTREAM\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMBSTREAM\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/msql2mysql.1 b/man/msql2mysql.1
index d2a362eceee..4aecf1eb077 100644
--- a/man/msql2mysql.1
+++ b/man/msql2mysql.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMSQL2MYSQL\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMSQL2MYSQL\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/my_print_defaults.1 b/man/my_print_defaults.1
index 7ce606f0bc2..e3d1c7ac06d 100644
--- a/man/my_print_defaults.1
+++ b/man/my_print_defaults.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMY_PRINT_DEFAULTS" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMY_PRINT_DEFAULTS" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/my_safe_process.1 b/man/my_safe_process.1
index 5fdb3195605..faa81190b0a 100644
--- a/man/my_safe_process.1
+++ b/man/my_safe_process.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMY_SAFE_PROCESS\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMY_SAFE_PROCESS\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/myisam_ftdump.1 b/man/myisam_ftdump.1
index 396c8341c8b..a14722f3625 100644
--- a/man/myisam_ftdump.1
+++ b/man/myisam_ftdump.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMYISAM_FTDUMP\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMYISAM_FTDUMP\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/myisamchk.1 b/man/myisamchk.1
index 203f0564f6a..a6a274ed2be 100644
--- a/man/myisamchk.1
+++ b/man/myisamchk.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMYISAMCHK\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMYISAMCHK\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/myisamlog.1 b/man/myisamlog.1
index b77a16d58f8..a907a9f6b99 100644
--- a/man/myisamlog.1
+++ b/man/myisamlog.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMYISAMLOG\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMYISAMLOG\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/myisampack.1 b/man/myisampack.1
index 7a2127dfaac..a27b62150cb 100644
--- a/man/myisampack.1
+++ b/man/myisampack.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMYISAMPACK\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMYISAMPACK\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/myrocks_hotbackup.1 b/man/myrocks_hotbackup.1
index 712bcd0cad4..4237c452f76 100644
--- a/man/myrocks_hotbackup.1
+++ b/man/myrocks_hotbackup.1
@@ -1,4 +1,4 @@
-.TH MYROCKS_HOTBACKUP "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH MYROCKS_HOTBACKUP "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.SH NAME
myrocks_hotbackup \- streaming backup for MariaDB MyRocks
.SH DESCRIPTION
diff --git a/man/mysql-stress-test.pl.1 b/man/mysql-stress-test.pl.1
index f122c0f92ae..c9cf6cb1069 100644
--- a/man/mysql-stress-test.pl.1
+++ b/man/mysql-stress-test.pl.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMYSQL\-STRESS\-TE" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMYSQL\-STRESS\-TE" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql-test-run.pl.1 b/man/mysql-test-run.pl.1
index 9f6909f9c66..618fadb0ba0 100644
--- a/man/mysql-test-run.pl.1
+++ b/man/mysql-test-run.pl.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMYSQL\-TEST\-RUN\" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMYSQL\-TEST\-RUN\" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql.1 b/man/mysql.1
index 6b51e0f46f9..38ab116a2ef 100644
--- a/man/mysql.1
+++ b/man/mysql.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql.server.1 b/man/mysql.server.1
index 475b2dd717d..43062e8f88f 100644
--- a/man/mysql.server.1
+++ b/man/mysql.server.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMYSQL\&.SERVER\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMYSQL\&.SERVER\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_client_test.1 b/man/mysql_client_test.1
index 2ed1527be72..9d23903768c 100644
--- a/man/mysql_client_test.1
+++ b/man/mysql_client_test.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-CLIENT-TEST" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-CLIENT-TEST" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_config.1 b/man/mysql_config.1
index 9b45f894c92..334478ce32c 100644
--- a/man/mysql_config.1
+++ b/man/mysql_config.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMYSQL_CONFIG\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMYSQL_CONFIG\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_convert_table_format.1 b/man/mysql_convert_table_format.1
index 4561270f801..e1deb7df54d 100644
--- a/man/mysql_convert_table_format.1
+++ b/man/mysql_convert_table_format.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-CONVERT-TAB" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-CONVERT-TAB" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_find_rows.1 b/man/mysql_find_rows.1
index fb5c0269878..f0220250bf7 100644
--- a/man/mysql_find_rows.1
+++ b/man/mysql_find_rows.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-FIND-ROWS\F" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-FIND-ROWS\F" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_fix_extensions.1 b/man/mysql_fix_extensions.1
index 5ad730ffb2d..f043a6e4298 100644
--- a/man/mysql_fix_extensions.1
+++ b/man/mysql_fix_extensions.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-FIX-EXTENSI" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-FIX-EXTENSI" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_install_db.1 b/man/mysql_install_db.1
index 17b260277c1..1046a77c7e0 100644
--- a/man/mysql_install_db.1
+++ b/man/mysql_install_db.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-INSTALL-DB\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-INSTALL-DB\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_ldb.1 b/man/mysql_ldb.1
index 2903d5f7ae6..e1c08bba995 100644
--- a/man/mysql_ldb.1
+++ b/man/mysql_ldb.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-LDB\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-LDB\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_plugin.1 b/man/mysql_plugin.1
index f1180c6e0c0..d01fd26634c 100644
--- a/man/mysql_plugin.1
+++ b/man/mysql_plugin.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-PLUGIN\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-PLUGIN\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
diff --git a/man/mysql_secure_installation.1 b/man/mysql_secure_installation.1
index f4f8b9b54b6..9c788238d9c 100644
--- a/man/mysql_secure_installation.1
+++ b/man/mysql_secure_installation.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-SECURE-INST" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-SECURE-INST" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_setpermission.1 b/man/mysql_setpermission.1
index e40d4fe4207..1510981ddeb 100644
--- a/man/mysql_setpermission.1
+++ b/man/mysql_setpermission.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-SETPERMISSI" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-SETPERMISSI" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_tzinfo_to_sql.1 b/man/mysql_tzinfo_to_sql.1
index 9e11ac048f3..08681335c47 100644
--- a/man/mysql_tzinfo_to_sql.1
+++ b/man/mysql_tzinfo_to_sql.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-TZINFO-TO-S" "1" "22 April 2022" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-TZINFO-TO-S" "1" "22 April 2022" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_upgrade.1 b/man/mysql_upgrade.1
index b109f517553..c4041f281a5 100644
--- a/man/mysql_upgrade.1
+++ b/man/mysql_upgrade.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-UPGRADE\FR" "1" "20 July 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-UPGRADE\FR" "1" "20 July 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysql_waitpid.1 b/man/mysql_waitpid.1
index 40b79ba6a41..9153d246a03 100644
--- a/man/mysql_waitpid.1
+++ b/man/mysql_waitpid.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-WAITPID\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-WAITPID\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqlaccess.1 b/man/mysqlaccess.1
index 874dbaa01ec..4d9e4902dae 100644
--- a/man/mysqlaccess.1
+++ b/man/mysqlaccess.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-ACCESS\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-ACCESS\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqladmin.1 b/man/mysqladmin.1
index b118e8d8a04..a3b6b167179 100644
--- a/man/mysqladmin.1
+++ b/man/mysqladmin.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-ADMIN\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-ADMIN\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqlbinlog.1 b/man/mysqlbinlog.1
index a4baf39c22c..05376046259 100644
--- a/man/mysqlbinlog.1
+++ b/man/mysqlbinlog.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-BINLOG\FR" "1" "14 April 2021" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-BINLOG\FR" "1" "14 April 2021" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqlcheck.1 b/man/mysqlcheck.1
index 0138c9a2ff1..ae9937db4d3 100644
--- a/man/mysqlcheck.1
+++ b/man/mysqlcheck.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-CHECK\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-CHECK\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqld.8 b/man/mysqld.8
index a28d6a46fa5..aee253fc220 100644
--- a/man/mysqld.8
+++ b/man/mysqld.8
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADBD\FR" "8" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADBD\FR" "8" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqld_multi.1 b/man/mysqld_multi.1
index d333ffea80c..e195eb59e2e 100644
--- a/man/mysqld_multi.1
+++ b/man/mysqld_multi.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADBD-MULTI\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADBD-MULTI\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqld_safe.1 b/man/mysqld_safe.1
index 49d7b30bbd8..2e58df90c69 100644
--- a/man/mysqld_safe.1
+++ b/man/mysqld_safe.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADBD-SAFE\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADBD-SAFE\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqld_safe_helper.1 b/man/mysqld_safe_helper.1
index bfd91f890aa..e25447e2c11 100644
--- a/man/mysqld_safe_helper.1
+++ b/man/mysqld_safe_helper.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADBD-SAFE-HELPER\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADBD-SAFE-HELPER\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqldump.1 b/man/mysqldump.1
index c3b526db891..04efe7e4de7 100644
--- a/man/mysqldump.1
+++ b/man/mysqldump.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-DUMP\FR" "1" "24 October 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-DUMP\FR" "1" "24 October 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqldumpslow.1 b/man/mysqldumpslow.1
index ef154b04302..4f82544dc14 100644
--- a/man/mysqldumpslow.1
+++ b/man/mysqldumpslow.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-DUMPSLOW\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-DUMPSLOW\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqlhotcopy.1 b/man/mysqlhotcopy.1
index fb819cd146c..9e545c784c0 100644
--- a/man/mysqlhotcopy.1
+++ b/man/mysqlhotcopy.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-HOTCOPY\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-HOTCOPY\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqlimport.1 b/man/mysqlimport.1
index 3b34c8a809b..bc84ed54179 100644
--- a/man/mysqlimport.1
+++ b/man/mysqlimport.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-IMPORT\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-IMPORT\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqlshow.1 b/man/mysqlshow.1
index d33b3ad1523..dd0f97ed407 100644
--- a/man/mysqlshow.1
+++ b/man/mysqlshow.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-SHOW\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-SHOW\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqlslap.1 b/man/mysqlslap.1
index 7641574b526..f14ab8fa3fa 100644
--- a/man/mysqlslap.1
+++ b/man/mysqlslap.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-SLAP\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-SLAP\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mysqltest.1 b/man/mysqltest.1
index 415627f7b95..0f1e138a448 100644
--- a/man/mysqltest.1
+++ b/man/mysqltest.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBMARIADB-TEST\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBMARIADB-TEST\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/mytop.1 b/man/mytop.1
index 057c60d5066..9594caade78 100644
--- a/man/mytop.1
+++ b/man/mytop.1
@@ -1,4 +1,4 @@
-.TH MYTOP "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH MYTOP "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.SH NAME
mytop \- display MariaDB server performance info like 'top'
.SH "SEE ALSO"
diff --git a/man/perror.1 b/man/perror.1
index 5d4a08d9c5a..f225e074f10 100644
--- a/man/perror.1
+++ b/man/perror.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBPERROR\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBPERROR\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/replace.1 b/man/replace.1
index b4e60d21901..d8cc27e0bab 100644
--- a/man/replace.1
+++ b/man/replace.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBREPLACE\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBREPLACE\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/resolve_stack_dump.1 b/man/resolve_stack_dump.1
index 8275cd4341a..6f59e8ef4b4 100644
--- a/man/resolve_stack_dump.1
+++ b/man/resolve_stack_dump.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBRESOLVE_STACK_DUM" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBRESOLVE_STACK_DUM" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/resolveip.1 b/man/resolveip.1
index 6d387d86522..56895b50bfc 100644
--- a/man/resolveip.1
+++ b/man/resolveip.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBRESOLVEIP\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBRESOLVEIP\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/wsrep_sst_common.1 b/man/wsrep_sst_common.1
index 4bf5d339a69..7b3ac5dd244 100644
--- a/man/wsrep_sst_common.1
+++ b/man/wsrep_sst_common.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBWSREP_SST_COMMON\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBWSREP_SST_COMMON\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/wsrep_sst_mariabackup.1 b/man/wsrep_sst_mariabackup.1
index e6514a1cf9c..21a73de16db 100644
--- a/man/wsrep_sst_mariabackup.1
+++ b/man/wsrep_sst_mariabackup.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBWSREP_SST_MARIABACKUP\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBWSREP_SST_MARIABACKUP\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/wsrep_sst_mysqldump.1 b/man/wsrep_sst_mysqldump.1
index 4dbb1887918..55a859bf979 100644
--- a/man/wsrep_sst_mysqldump.1
+++ b/man/wsrep_sst_mysqldump.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBWSREP_SST_MYSQLDUMP\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBWSREP_SST_MYSQLDUMP\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/wsrep_sst_rsync.1 b/man/wsrep_sst_rsync.1
index 6f31e47fbd2..02862256f1c 100644
--- a/man/wsrep_sst_rsync.1
+++ b/man/wsrep_sst_rsync.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBWSREP_SST_RSYNC\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBWSREP_SST_RSYNC\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/man/wsrep_sst_rsync_wan.1 b/man/wsrep_sst_rsync_wan.1
index 03e2bdfb550..0736c03f9e9 100644
--- a/man/wsrep_sst_rsync_wan.1
+++ b/man/wsrep_sst_rsync_wan.1
@@ -1,6 +1,6 @@
'\" t
.\"
-.TH "\FBWSREP_SST_RSYNC_WAN\FR" "1" "15 May 2020" "MariaDB 10\&.9" "MariaDB Database System"
+.TH "\FBWSREP_SST_RSYNC_WAN\FR" "1" "15 May 2020" "MariaDB 10\&.10" "MariaDB Database System"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
diff --git a/mysql-test/include/check-testcase.test b/mysql-test/include/check-testcase.test
index 60b376a2836..4a1af2a4553 100644
--- a/mysql-test/include/check-testcase.test
+++ b/mysql-test/include/check-testcase.test
@@ -62,7 +62,7 @@ if ($tmp)
--echo Master_Server_Id #
--echo Master_SSL_Crl #
--echo Master_SSL_Crlpath #
- --echo Using_Gtid No
+ --echo Using_Gtid Slave_Pos
--echo Gtid_IO_Pos #
--echo Replicate_Do_Domain_Ids
--echo Replicate_Ignore_Domain_Ids
diff --git a/mysql-test/include/check_qep.inc b/mysql-test/include/check_qep.inc
new file mode 100644
index 00000000000..ee5a4025400
--- /dev/null
+++ b/mysql-test/include/check_qep.inc
@@ -0,0 +1,57 @@
+# include/check_qep.inc
+#
+# SUMMARY
+#
+# Designed to be used together with include/expect_qep.inc
+#
+# $query should be assigned a select statement using
+# straight_join to force the tables to be joined in most
+# optimal order.
+#
+# expect_qep.inc will then store the estimated 'Last_query_cost'
+# and total # 'Handler_read%' for this straight_joined query.
+#
+# We should then assign a non-straight_join'ed version of
+# the same query to $query and execute it using
+# 'include/check_qep.inc'. Its estimated cost and
+# #handler_reads will then be verified against the
+# previous straight_joined query.
+#
+# USAGE
+#
+# let $query= <select straight_join optimal statement>;
+# --source include/expect_qep.inc
+# let $query= <select statement>;
+# --source include/check_qep.inc
+#
+# EXAMPLE
+# t/greedy_optimizer.test
+#
+
+flush status;
+eval EXPLAIN $query;
+eval $query;
+
+let $cost=
+ query_get_value(SHOW STATUS LIKE 'Last_query_cost', Value, 1);
+
+--disable_warnings
+let $reads=
+`select sum(variable_value)
+ from information_schema.session_status
+ where VARIABLE_NAME like 'Handler_read%'`;
+--enable_warnings
+
+#echo Cost: $cost, Handler_reads: $reads;
+
+if ($cost != $best_cost)
+{ echo ### FAILED: Query_cost: $cost, expected: $best_cost ###;
+}
+# Difference in handler reads are ok as tables in MariaDB are sorted according
+# to order in the query and the tables in greedy_optimizer.inc has reference to
+# rows that does not exists, so different table orders will do different
+# number of reads
+
+if ($reads != $best_reads)
+{ echo ### NOTE: Handler_reads: $reads, expected: $best_reads ###;
+}
diff --git a/mysql-test/include/ctype_uca1400_ids_using_convert.inc b/mysql-test/include/ctype_uca1400_ids_using_convert.inc
new file mode 100644
index 00000000000..1a6cf3a0460
--- /dev/null
+++ b/mysql-test/include/ctype_uca1400_ids_using_convert.inc
@@ -0,0 +1,21 @@
+--disable_ps_protocol
+--enable_metadata
+DELIMITER $$;
+FOR rec IN (SELECT COLLATION_NAME
+ FROM INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY
+ WHERE CHARACTER_SET_NAME=@charset
+ AND COLLATION_NAME RLIKE 'uca1400'
+ ORDER BY ID)
+DO
+ SET NAMES utf8mb4;
+ SET character_set_results=NULL;
+ EXECUTE IMMEDIATE CONCAT('SELECT CONVERT('''' USING ',@charset,')',
+ ' COLLATE ', rec.COLLATION_NAME,
+ ' AS ', rec.COLLATION_NAME,
+ ' LIMIT 0');
+END FOR;
+$$
+DELIMITER ;$$
+--disable_metadata
+--enable_ps_protocol
+SET NAMES utf8;
diff --git a/mysql-test/include/ctype_uca1400_ids_using_set_names.inc b/mysql-test/include/ctype_uca1400_ids_using_set_names.inc
new file mode 100644
index 00000000000..09cf49fc0e7
--- /dev/null
+++ b/mysql-test/include/ctype_uca1400_ids_using_set_names.inc
@@ -0,0 +1,17 @@
+
+--disable_ps_protocol
+--enable_metadata
+DELIMITER $$;
+FOR rec IN (SELECT COLLATION_NAME
+ FROM INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY
+ WHERE CHARACTER_SET_NAME=@charset
+ AND COLLATION_NAME RLIKE 'uca1400'
+ ORDER BY ID)
+DO
+ EXECUTE IMMEDIATE CONCAT('SET NAMES ',@charset,' COLLATE ', rec.COLLATION_NAME);
+ SELECT rec.COLLATION_NAME;
+END FOR;
+$$
+DELIMITER ;$$
+--disable_metadata
+--enable_ps_protocol
diff --git a/mysql-test/include/default_client.cnf b/mysql-test/include/default_client.cnf
index 1dda4b5b139..fc2fcf19e71 100644
--- a/mysql-test/include/default_client.cnf
+++ b/mysql-test/include/default_client.cnf
@@ -18,6 +18,9 @@ default-character-set=latin1
[mysql_upgrade]
default-character-set=latin1
+[mysqlslap]
+loose-skip-ssl
+
[mysqltest]
loose-ssl-ca=@ENV.MYSQL_TEST_DIR/std_data/cacert.pem
loose-ssl-cert=@ENV.MYSQL_TEST_DIR/std_data/client-cert.pem
diff --git a/mysql-test/include/execute_with_statistics.inc b/mysql-test/include/execute_with_statistics.inc
new file mode 100644
index 00000000000..c2305fe5247
--- /dev/null
+++ b/mysql-test/include/execute_with_statistics.inc
@@ -0,0 +1,30 @@
+# include/execute_with_statistics.inc
+#
+# SUMMARY
+#
+# Explain and execute the select statment in $query.
+# Then report 'Last_query_cost' estimate from the query
+# optimizer and total number of 'Handler_read%' when the
+# query was executed.
+# Intended usage is to verify that there are not regressions
+# in either calculated or actuall cost for $query.
+#
+# USAGE
+#
+# let $query= <select statement>;
+# --source include/execute_with_statistics.inc
+#
+# EXAMPLE
+# t/greedy_optimizer.test
+#
+
+eval EXPLAIN $query;
+SHOW STATUS LIKE 'Last_query_cost';
+
+FLUSH STATUS;
+eval $query;
+--disable_warnings
+SELECT SUM(variable_value) AS Total_handler_reads
+ FROM information_schema.session_status
+ WHERE variable_name LIKE 'Handler_read%';
+--enable_warnings
diff --git a/mysql-test/include/expect_qep.inc b/mysql-test/include/expect_qep.inc
new file mode 100644
index 00000000000..8878b0b3a5b
--- /dev/null
+++ b/mysql-test/include/expect_qep.inc
@@ -0,0 +1,45 @@
+# include/expect_qep.inc
+#
+# SUMMARY
+#
+# Designed to be used together with include/check_qep.inc
+#
+# $query should be assigned a select statement using
+# straight_join to force the tables to be joined in most
+# optimal order.
+#
+# expect_qep.inc will then store the estimated 'Last_query_cost'
+# and total # 'Handler_read%' for this straight_joined query.
+#
+# We should then assign a non-straight_join'ed version of
+# the same query to $query and execute it using
+# 'include/check_qep.inc'. Its estimated cost and
+# #handler_reads will then be verified against the
+# previous straight_joined query.
+#
+# USAGE
+#
+# let $query= <select straight_join optimal statement>;
+# --source include/expect_qep.inc
+# let $query= <select statement>;
+# --source include/check_qep.inc
+#
+# EXAMPLE
+# t/greedy_optimizer.test
+#
+
+flush status;
+eval EXPLAIN $query;
+eval $query;
+
+let $best_cost=
+ query_get_value(SHOW STATUS LIKE 'Last_query_cost', Value, 1);
+
+--disable_warnings
+let $best_reads=
+`select sum(variable_value)
+ from information_schema.session_status
+ where VARIABLE_NAME like 'Handler_read%'`;
+--enable_warnings
+
+#echo Expect, cost: $best_cost, Handler_reads: $best_reads;
diff --git a/mysql-test/include/reset_slave.inc b/mysql-test/include/reset_slave.inc
new file mode 100644
index 00000000000..567ec796dd3
--- /dev/null
+++ b/mysql-test/include/reset_slave.inc
@@ -0,0 +1,58 @@
+# ==== Purpose ====
+#
+# Reset the slave on the active connection
+#
+#
+# ==== Usage ====
+#
+# [--let $master_use_gtid_option= NO]
+# --source include/reset_slave.inc
+#
+# Parameters:
+# $master_use_gtid_option
+# Sets the context for the reset slave. When No, execute
+# CHANGE MASTER TO MASTER_USE_GTID=No after the RESET SLAVE. When
+# Slave_Pos, execute set gtid_slave_pos= "" after RESET SLAVE.
+#
+# $reset_slave_keep_gtid_state
+# When master_use_gtid_option is Slave_Pos, this defines whether or not
+# gtid_slave_pos will be reset as well. Accepted values are of boolean
+# type. Default value is false.
+#
+
+--let $include_filename= reset_slave.inc
+--source include/begin_include_file.inc
+
+
+if (!$rpl_debug)
+{
+ --disable_query_log
+}
+
+if (!$master_use_gtid_option)
+{
+ --let $master_use_gtid_option= Slave_Pos
+}
+
+if (!$reset_slave_keep_gtid_state)
+{
+ --let $reset_slave_keep_gtid_state=0
+}
+
+if (`SELECT strcmp("$master_use_gtid_option","Slave_Pos") != 0 AND strcmp("$master_use_gtid_option","No") != 0`)
+{
+ die Invalid option provided as master_use_gtid_option, Slave_Pos or No are the only allowed options;
+}
+
+RESET SLAVE;
+if (`SELECT strcmp("$master_use_gtid_option","Slave_Pos") = 0 AND NOT $reset_slave_keep_gtid_state`)
+{
+ SET @@GLOBAL.gtid_slave_pos= "";
+}
+if (`SELECT strcmp("$master_use_gtid_option","No") = 0`)
+{
+ CHANGE MASTER TO MASTER_USE_GTID=No;
+}
+
+--let $include_filename= reset_slave.inc
+--source include/end_include_file.inc
diff --git a/mysql-test/include/rpl_change_topology.inc b/mysql-test/include/rpl_change_topology.inc
index 799262986e6..387ab196ad1 100644
--- a/mysql-test/include/rpl_change_topology.inc
+++ b/mysql-test/include/rpl_change_topology.inc
@@ -225,7 +225,14 @@ if (!$rpl_skip_change_master)
{
--let $_rpl_master_log_pos=
}
- eval CHANGE MASTER TO MASTER_HOST = '127.0.0.1', MASTER_PORT = $_rpl_port, MASTER_USER = 'root', MASTER_LOG_FILE = '$_rpl_master_log_file'$_rpl_master_log_pos, MASTER_CONNECT_RETRY = 1;
+ if ($rpl_master_log_file)
+ {
+ eval CHANGE MASTER TO MASTER_HOST = '127.0.0.1', MASTER_PORT = $_rpl_port, MASTER_USER = 'root', MASTER_LOG_FILE = '$_rpl_master_log_file'$_rpl_master_log_pos, MASTER_CONNECT_RETRY = 1, MASTER_USE_GTID=NO;
+ }
+ if (!$rpl_master_log_file)
+ {
+ eval CHANGE MASTER TO MASTER_HOST = '127.0.0.1', MASTER_PORT = $_rpl_port, MASTER_USER = 'root', MASTER_CONNECT_RETRY=1;
+ }
}
if ($_rpl_master == '')
{
diff --git a/mysql-test/include/rpl_end.inc b/mysql-test/include/rpl_end.inc
index 3fdd91ba319..f49079db332 100644
--- a/mysql-test/include/rpl_end.inc
+++ b/mysql-test/include/rpl_end.inc
@@ -90,7 +90,7 @@ while ($_rpl_server)
--source include/rpl_connection.inc
# Clear Using_Gtid in SHOW SLAVE STATUS to keep check_testcase happy.
- CHANGE MASTER TO master_log_file='';
+ CHANGE MASTER TO master_use_gtid=Slave_Pos;
--dec $_rpl_server
}
diff --git a/mysql-test/include/rpl_reset.inc b/mysql-test/include/rpl_reset.inc
index a94371c38fc..53ed1de9874 100644
--- a/mysql-test/include/rpl_reset.inc
+++ b/mysql-test/include/rpl_reset.inc
@@ -63,13 +63,13 @@ while ($_rpl_server)
--let $rpl_connection_name= server_$_rpl_server
--source include/rpl_connection.inc
+ RESET MASTER;
# Check if this server is configured to have a master
if (`SELECT SUBSTRING('$rpl_master_list', 1 + ($_rpl_server - 1) * $rpl_server_count_length, $rpl_server_count_length) != ''`)
{
--source include/stop_slave.inc
- RESET SLAVE;
+ --source include/reset_slave.inc
}
- RESET MASTER;
--dec $_rpl_server
}
diff --git a/mysql-test/include/setup_fake_relay_log.inc b/mysql-test/include/setup_fake_relay_log.inc
index a1964572427..9f0447925db 100644
--- a/mysql-test/include/setup_fake_relay_log.inc
+++ b/mysql-test/include/setup_fake_relay_log.inc
@@ -100,7 +100,7 @@ RESET SLAVE;
--let $_fake_old_master_host= query_get_value(SHOW SLAVE STATUS, Master_Host, 1)
# Setup replication from existing relay log.
-eval CHANGE MASTER TO MASTER_HOST='dummy.localdomain', RELAY_LOG_FILE='$_fake_filename-fake.000001', RELAY_LOG_POS=4;
+eval CHANGE MASTER TO MASTER_HOST='dummy.localdomain', RELAY_LOG_FILE='$_fake_filename-fake.000001', RELAY_LOG_POS=4, MASTER_USE_GTID=NO;
--let $include_filename= setup_fake_relay_log.inc
--source include/end_include_file.inc
diff --git a/mysql-test/include/test_fieldsize.inc b/mysql-test/include/test_fieldsize.inc
index 105574b15b9..1ce846eed0b 100644
--- a/mysql-test/include/test_fieldsize.inc
+++ b/mysql-test/include/test_fieldsize.inc
@@ -11,7 +11,8 @@ DROP TABLE IF EXISTS t1;
sync_slave_with_master;
STOP SLAVE;
-RESET SLAVE;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
eval $test_table_slave;
connection master;
@@ -29,7 +30,7 @@ START SLAVE;
# The following should be 0
SELECT COUNT(*) FROM t1;
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
connection master;
RESET MASTER;
diff --git a/mysql-test/main/alter_table.test b/mysql-test/main/alter_table.test
index f6e9bfe1126..8ddf60f26d8 100644
--- a/mysql-test/main/alter_table.test
+++ b/mysql-test/main/alter_table.test
@@ -648,11 +648,11 @@ set sql_mode="no_zero_date";
create table t1(f1 int);
alter table t1 add column f2 datetime not null, add column f21 date not null;
insert into t1 values(1,'2000-01-01','2000-01-01');
---error 1292
+--error ER_TRUNCATED_WRONG_VALUE
alter table t1 add column f3 datetime not null;
---error 1292
+--error ER_TRUNCATED_WRONG_VALUE
alter table t1 add column f3 date not null;
---error 1292
+--error ER_TRUNCATED_WRONG_VALUE
alter table t1 add column f4 datetime not null default '2002-02-02',
add column f41 date not null;
alter table t1 add column f4 datetime not null default '2002-02-02',
diff --git a/mysql-test/main/check_constraint.result b/mysql-test/main/check_constraint.result
index 01a71bf36a5..899192905ea 100644
--- a/mysql-test/main/check_constraint.result
+++ b/mysql-test/main/check_constraint.result
@@ -284,11 +284,11 @@ drop table t1;
#
# MDEV-26061 MariaDB server crash at Field::set_default
#
-create table t1 (d timestamp check (default (d) is true)) as select 1;
+create table t1 (d timestamp not null default now() check (default (d) is true)) as select 1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `d` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() CHECK (default(`d`) is true),
+ `d` timestamp NOT NULL DEFAULT current_timestamp() CHECK (default(`d`) is true),
`1` int(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
drop table t1;
diff --git a/mysql-test/main/check_constraint.test b/mysql-test/main/check_constraint.test
index 194fdc04399..46a34239270 100644
--- a/mysql-test/main/check_constraint.test
+++ b/mysql-test/main/check_constraint.test
@@ -212,7 +212,7 @@ drop table t1;
--echo # MDEV-26061 MariaDB server crash at Field::set_default
--echo #
-create table t1 (d timestamp check (default (d) is true)) as select 1;
+create table t1 (d timestamp not null default now() check (default (d) is true)) as select 1;
show create table t1;
drop table t1;
diff --git a/mysql-test/main/create.result b/mysql-test/main/create.result
index 12de9bca44e..c80a7aec743 100644
--- a/mysql-test/main/create.result
+++ b/mysql-test/main/create.result
@@ -528,7 +528,7 @@ t2 CREATE TABLE `t2` (
`ifnull(h,h)` decimal(5,4) DEFAULT NULL,
`ifnull(i,i)` year(4) DEFAULT NULL,
`ifnull(j,j)` date DEFAULT NULL,
- `ifnull(k,k)` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `ifnull(k,k)` timestamp NOT NULL,
`ifnull(l,l)` datetime DEFAULT NULL,
`ifnull(m,m)` varchar(1) DEFAULT NULL,
`ifnull(n,n)` varchar(3) DEFAULT NULL,
@@ -1120,7 +1120,7 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`CHARACTER_SET_NAME` varchar(32) NOT NULL,
- `DEFAULT_COLLATE_NAME` varchar(32) NOT NULL,
+ `DEFAULT_COLLATE_NAME` varchar(64) NOT NULL,
`DESCRIPTION` varchar(60) NOT NULL,
`MAXLEN` bigint(3) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
@@ -1141,9 +1141,6 @@ SET sql_mode = NO_ZERO_DATE;
CREATE TABLE t2(c1 TIMESTAMP, c2 TIMESTAMP DEFAULT 0);
ERROR 42000: Invalid default value for 'c2'
-CREATE TABLE t2(c1 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, c2 TIMESTAMP NOT NULL);
-ERROR 42000: Invalid default value for 'c2'
-
# -- Check that NULL column still can be created.
CREATE TABLE t2(c1 TIMESTAMP NULL);
diff --git a/mysql-test/main/create.test b/mysql-test/main/create.test
index 541748fc6ad..1f29a9a31d4 100644
--- a/mysql-test/main/create.test
+++ b/mysql-test/main/create.test
@@ -1062,9 +1062,9 @@ SET sql_mode = NO_ZERO_DATE;
--error ER_INVALID_DEFAULT
CREATE TABLE t2(c1 TIMESTAMP, c2 TIMESTAMP DEFAULT 0);
---echo
---error ER_INVALID_DEFAULT
-CREATE TABLE t2(c1 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, c2 TIMESTAMP NOT NULL);
+#--echo
+#--error ER_INVALID_DEFAULT
+#CREATE TABLE t2(c1 TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, c2 TIMESTAMP NOT NULL);
--echo
--echo # -- Check that NULL column still can be created.
diff --git a/mysql-test/main/ctype_collate_context.result b/mysql-test/main/ctype_collate_context.result
index 53eeaa4e713..4ef3d9a6c7b 100644
--- a/mysql-test/main/ctype_collate_context.result
+++ b/mysql-test/main/ctype_collate_context.result
@@ -6,7 +6,9 @@ INSERT INTO t0 VALUES
('COLLATE DEFAULT'),
('COLLATE utf8mb4_bin'),
('COLLATE latin1_swedish_ci'),
-('COLLATE latin1_bin');
+('COLLATE latin1_bin'),
+('COLLATE uca1400_ai_ci'),
+('COLLATE uca1400_as_ci');
CREATE TABLE clauses
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -216,11 +218,11 @@ result CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
TEST: 1 clauses
-TOTAL 7
+TOTAL 9
ERROR 0
-OK 7
+OK 9
query CREATE DATABASE
attrs CHARACTER SET DEFAULT
@@ -250,11 +252,19 @@ query CREATE DATABASE
attrs COLLATE latin1_bin
result CHARACTER SET latin1 COLLATE latin1_bin
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
TEST: 2 clauses
-TOTAL 49
+TOTAL 81
-ERROR 24
+ERROR 46
query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET DEFAULT
@@ -281,6 +291,14 @@ attrs COLLATE utf8mb4_bin CHARACTER SET latin1
result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET utf8mb4
result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET utf8mb4'
@@ -301,6 +319,14 @@ attrs COLLATE latin1_bin COLLATE DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 COLLATE utf8mb4_bin
result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
@@ -317,6 +343,14 @@ attrs COLLATE latin1_bin COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_swedish_ci
result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
@@ -333,6 +367,14 @@ attrs COLLATE latin1_bin COLLATE latin1_swedish_ci
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_bin
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
@@ -352,7 +394,63 @@ query CREATE DATABASE
attrs COLLATE latin1_swedish_ci COLLATE latin1_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE latin1_bin'
-OK 25
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_as_ci
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+OK 35
query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET DEFAULT
@@ -371,6 +469,14 @@ attrs COLLATE utf8mb4_bin CHARACTER SET DEFAULT
result CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET latin1
result CHARACTER SET latin1 COLLATE latin1_swedish_ci
@@ -403,6 +509,14 @@ attrs COLLATE utf8mb4_bin CHARACTER SET utf8mb4
result CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE DEFAULT
result CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
@@ -454,11 +568,35 @@ query CREATE DATABASE
attrs COLLATE latin1_bin COLLATE latin1_bin
result CHARACTER SET latin1 COLLATE latin1_bin
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
TEST: 3 clauses
-TOTAL 343
+TOTAL 729
-ERROR 264
+ERROR 612
query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET DEFAULT CHARACTER SET DEFAULT
@@ -501,6 +639,14 @@ attrs COLLATE latin1_bin CHARACTER SET latin1 CHARACTER SET DEFAULT
result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET DEFAULT (utf8mb4)'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET latin1 CHARACTER SET DEFAULT
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET latin1 CHARACTER SET DEFAULT
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET utf8mb4 CHARACTER SET DEFAULT
result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET utf8mb4'
@@ -529,6 +675,14 @@ attrs COLLATE latin1_bin COLLATE DEFAULT CHARACTER SET DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE DEFAULT CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE DEFAULT CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 COLLATE utf8mb4_bin CHARACTER SET DEFAULT
result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
@@ -545,6 +699,14 @@ attrs COLLATE latin1_bin COLLATE utf8mb4_bin CHARACTER SET DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE utf8mb4_bin CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE utf8mb4_bin CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_swedish_ci CHARACTER SET DEFAULT
result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
@@ -573,6 +735,14 @@ attrs COLLATE latin1_bin COLLATE latin1_swedish_ci CHARACTER SET DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_swedish_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_bin CHARACTER SET DEFAULT
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
@@ -601,6 +771,62 @@ attrs COLLATE latin1_bin COLLATE latin1_bin CHARACTER SET DEFAULT
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_bin CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_bin CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_ai_ci CHARACTER SET DEFAULT
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_ai_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_ai_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_ai_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_ai_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_as_ci CHARACTER SET DEFAULT
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_as_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_as_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_as_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_as_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_as_ci CHARACTER SET DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET DEFAULT CHARACTER SET latin1
result ERROR: Conflicting declarations: 'CHARACTER SET DEFAULT (utf8mb4)' and 'CHARACTER SET latin1'
@@ -629,6 +855,14 @@ attrs COLLATE latin1_bin CHARACTER SET DEFAULT CHARACTER SET latin1
result ERROR: Conflicting declarations: 'CHARACTER SET DEFAULT (utf8mb4)' and 'CHARACTER SET latin1'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET DEFAULT CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET DEFAULT CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET latin1 CHARACTER SET latin1
result ERROR: Conflicting declarations: 'CHARACTER SET DEFAULT (utf8mb4)' and 'CHARACTER SET latin1'
@@ -641,6 +875,14 @@ attrs COLLATE utf8mb4_bin CHARACTER SET latin1 CHARACTER SET latin1
result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET latin1 CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET latin1 CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET utf8mb4 CHARACTER SET latin1
result ERROR: Conflicting declarations: 'CHARACTER SET utf8mb4' and 'CHARACTER SET latin1'
@@ -669,6 +911,14 @@ attrs COLLATE latin1_bin CHARACTER SET utf8mb4 CHARACTER SET latin1
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET utf8mb4 CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'CHARACTER SET utf8mb4' and 'CHARACTER SET latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET utf8mb4 CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'CHARACTER SET utf8mb4' and 'CHARACTER SET latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE DEFAULT CHARACTER SET latin1
result ERROR: Conflicting declarations: 'CHARACTER SET DEFAULT (utf8mb4)' and 'CHARACTER SET latin1'
@@ -685,6 +935,14 @@ attrs COLLATE latin1_bin COLLATE DEFAULT CHARACTER SET latin1
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE DEFAULT CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE DEFAULT CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE utf8mb4_bin CHARACTER SET latin1
result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
@@ -713,6 +971,14 @@ attrs COLLATE latin1_bin COLLATE utf8mb4_bin CHARACTER SET latin1
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE utf8mb4_bin CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE utf8mb4_bin CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_swedish_ci CHARACTER SET latin1
result ERROR: Conflicting declarations: 'CHARACTER SET DEFAULT (utf8mb4)' and 'CHARACTER SET latin1'
@@ -729,6 +995,14 @@ attrs COLLATE latin1_bin COLLATE latin1_swedish_ci CHARACTER SET latin1
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_swedish_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_bin CHARACTER SET latin1
result ERROR: Conflicting declarations: 'CHARACTER SET DEFAULT (utf8mb4)' and 'CHARACTER SET latin1'
@@ -749,6 +1023,86 @@ attrs COLLATE latin1_swedish_ci COLLATE latin1_bin CHARACTER SET latin1
result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE latin1_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_bin CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_bin CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_ai_ci CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_ai_ci CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'CHARACTER SET utf8mb4' and 'CHARACTER SET latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_ai_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_ai_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_ai_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_ai_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_as_ci CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_as_ci CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_as_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'CHARACTER SET utf8mb4' and 'CHARACTER SET latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_as_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_as_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_as_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_as_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_as_ci CHARACTER SET latin1
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci CHARACTER SET latin1
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET DEFAULT CHARACTER SET utf8mb4
result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET utf8mb4'
@@ -789,6 +1143,14 @@ attrs COLLATE latin1_bin CHARACTER SET latin1 CHARACTER SET utf8mb4
result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET utf8mb4'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET latin1 CHARACTER SET utf8mb4
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET latin1 CHARACTER SET utf8mb4
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET utf8mb4 CHARACTER SET utf8mb4
result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET utf8mb4'
@@ -817,6 +1179,14 @@ attrs COLLATE latin1_bin COLLATE DEFAULT CHARACTER SET utf8mb4
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE DEFAULT CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE DEFAULT CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 COLLATE utf8mb4_bin CHARACTER SET utf8mb4
result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
@@ -833,6 +1203,14 @@ attrs COLLATE latin1_bin COLLATE utf8mb4_bin CHARACTER SET utf8mb4
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE utf8mb4_bin CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE utf8mb4_bin CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_swedish_ci CHARACTER SET utf8mb4
result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
@@ -861,6 +1239,14 @@ attrs COLLATE latin1_bin COLLATE latin1_swedish_ci CHARACTER SET utf8mb4
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_swedish_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_bin CHARACTER SET utf8mb4
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
@@ -889,6 +1275,62 @@ attrs COLLATE latin1_bin COLLATE latin1_bin CHARACTER SET utf8mb4
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_bin CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_bin CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_ai_ci CHARACTER SET utf8mb4
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_ai_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_ai_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_ai_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_ai_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_as_ci CHARACTER SET utf8mb4
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_as_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_as_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_as_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_as_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_as_ci CHARACTER SET utf8mb4
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET DEFAULT COLLATE DEFAULT
result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET DEFAULT (utf8mb4)'
@@ -905,6 +1347,14 @@ attrs COLLATE latin1_bin CHARACTER SET DEFAULT COLLATE DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET DEFAULT COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET DEFAULT COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET latin1 COLLATE DEFAULT
result ERROR: Conflicting declarations: 'CHARACTER SET DEFAULT (utf8mb4)' and 'CHARACTER SET latin1'
@@ -921,6 +1371,14 @@ attrs COLLATE latin1_bin CHARACTER SET latin1 COLLATE DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET latin1 COLLATE DEFAULT
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET latin1 COLLATE DEFAULT
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET utf8mb4 COLLATE DEFAULT
result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET utf8mb4'
@@ -937,6 +1395,14 @@ attrs COLLATE latin1_bin CHARACTER SET utf8mb4 COLLATE DEFAULT
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET utf8mb4 COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET utf8mb4 COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs COLLATE utf8mb4_bin COLLATE DEFAULT COLLATE DEFAULT
result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE DEFAULT'
@@ -945,6 +1411,14 @@ attrs COLLATE latin1_bin COLLATE DEFAULT COLLATE DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE DEFAULT COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE DEFAULT COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE utf8mb4_bin COLLATE DEFAULT
result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE DEFAULT'
@@ -973,6 +1447,14 @@ attrs COLLATE latin1_bin COLLATE utf8mb4_bin COLLATE DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE utf8mb4_bin COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE utf8mb4_bin COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_swedish_ci COLLATE DEFAULT
result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
@@ -989,6 +1471,14 @@ attrs COLLATE latin1_bin COLLATE latin1_swedish_ci COLLATE DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_swedish_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_bin COLLATE DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
@@ -1017,6 +1507,86 @@ attrs COLLATE latin1_bin COLLATE latin1_bin COLLATE DEFAULT
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_bin COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_bin COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_ai_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_ai_ci COLLATE DEFAULT
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_ai_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_ai_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_ai_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_ai_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_as_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_as_ci COLLATE DEFAULT
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_as_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_as_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_as_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_as_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_as_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_as_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci COLLATE DEFAULT
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET DEFAULT COLLATE utf8mb4_bin
result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
@@ -1033,6 +1603,14 @@ attrs COLLATE latin1_bin CHARACTER SET DEFAULT COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET DEFAULT COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET DEFAULT COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET latin1 COLLATE utf8mb4_bin
result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
@@ -1061,6 +1639,14 @@ attrs COLLATE latin1_bin CHARACTER SET latin1 COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET latin1 COLLATE utf8mb4_bin
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET latin1 COLLATE utf8mb4_bin
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET utf8mb4'
@@ -1077,6 +1663,14 @@ attrs COLLATE latin1_bin CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE DEFAULT COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE utf8mb4_bin'
@@ -1105,6 +1699,14 @@ attrs COLLATE latin1_bin COLLATE DEFAULT COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE DEFAULT COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE DEFAULT COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 COLLATE utf8mb4_bin COLLATE utf8mb4_bin
result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
@@ -1121,6 +1723,14 @@ attrs COLLATE latin1_bin COLLATE utf8mb4_bin COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE utf8mb4_bin COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE utf8mb4_bin COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_swedish_ci COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE utf8mb4_bin'
@@ -1149,6 +1759,14 @@ attrs COLLATE latin1_bin COLLATE latin1_swedish_ci COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_swedish_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_bin COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
@@ -1177,6 +1795,86 @@ attrs COLLATE latin1_bin COLLATE latin1_bin COLLATE utf8mb4_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_bin COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_bin COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_ai_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_ai_ci COLLATE utf8mb4_bin
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_ai_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_ai_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_ai_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_ai_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_as_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_as_ci COLLATE utf8mb4_bin
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_as_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_as_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_as_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_as_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_as_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_as_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci COLLATE utf8mb4_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET DEFAULT COLLATE latin1_swedish_ci
result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
@@ -1205,6 +1903,14 @@ attrs COLLATE latin1_bin CHARACTER SET DEFAULT COLLATE latin1_swedish_ci
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET DEFAULT COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET DEFAULT COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci
result ERROR: Conflicting declarations: 'CHARACTER SET DEFAULT (utf8mb4)' and 'CHARACTER SET latin1'
@@ -1221,6 +1927,14 @@ attrs COLLATE latin1_bin CHARACTER SET latin1 COLLATE latin1_swedish_ci
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET latin1 COLLATE latin1_swedish_ci
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET latin1 COLLATE latin1_swedish_ci
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET utf8mb4 COLLATE latin1_swedish_ci
result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
@@ -1249,6 +1963,14 @@ attrs COLLATE latin1_bin CHARACTER SET utf8mb4 COLLATE latin1_swedish_ci
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET utf8mb4 COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET utf8mb4 COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE DEFAULT COLLATE latin1_swedish_ci
result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
@@ -1265,6 +1987,14 @@ attrs COLLATE latin1_bin COLLATE DEFAULT COLLATE latin1_swedish_ci
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE DEFAULT COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE DEFAULT COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE utf8mb4_bin COLLATE latin1_swedish_ci
result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE latin1_swedish_ci'
@@ -1293,6 +2023,14 @@ attrs COLLATE latin1_bin COLLATE utf8mb4_bin COLLATE latin1_swedish_ci
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE utf8mb4_bin COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE utf8mb4_bin COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_swedish_ci COLLATE latin1_swedish_ci
result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
@@ -1309,6 +2047,14 @@ attrs COLLATE latin1_bin COLLATE latin1_swedish_ci COLLATE latin1_swedish_ci
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_swedish_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_bin COLLATE latin1_swedish_ci
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
@@ -1337,6 +2083,86 @@ attrs COLLATE latin1_bin COLLATE latin1_bin COLLATE latin1_swedish_ci
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_bin COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_bin COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_as_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_as_ci COLLATE latin1_swedish_ci
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_as_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_as_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_as_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_as_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_as_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_as_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci COLLATE latin1_swedish_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET DEFAULT COLLATE latin1_bin
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
@@ -1365,6 +2191,14 @@ attrs COLLATE latin1_bin CHARACTER SET DEFAULT COLLATE latin1_bin
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET DEFAULT COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET DEFAULT COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET latin1 COLLATE latin1_bin
result ERROR: Conflicting declarations: 'CHARACTER SET DEFAULT (utf8mb4)' and 'CHARACTER SET latin1'
@@ -1385,6 +2219,14 @@ attrs COLLATE latin1_swedish_ci CHARACTER SET latin1 COLLATE latin1_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE latin1_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET latin1 COLLATE latin1_bin
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET latin1 COLLATE latin1_bin
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET utf8mb4 COLLATE latin1_bin
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
@@ -1413,6 +2255,14 @@ attrs COLLATE latin1_bin CHARACTER SET utf8mb4 COLLATE latin1_bin
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET utf8mb4 COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET utf8mb4 COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE DEFAULT COLLATE latin1_bin
result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE latin1_bin'
@@ -1441,6 +2291,14 @@ attrs COLLATE latin1_bin COLLATE DEFAULT COLLATE latin1_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE DEFAULT COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE DEFAULT COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE utf8mb4_bin COLLATE latin1_bin
result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE latin1_bin'
@@ -1469,6 +2327,14 @@ attrs COLLATE latin1_bin COLLATE utf8mb4_bin COLLATE latin1_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE utf8mb4_bin COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE utf8mb4_bin COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_swedish_ci COLLATE latin1_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE latin1_bin'
@@ -1497,6 +2363,14 @@ attrs COLLATE latin1_bin COLLATE latin1_swedish_ci COLLATE latin1_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_swedish_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE latin1_bin COLLATE latin1_bin
result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
@@ -1516,7 +2390,663 @@ query CREATE DATABASE
attrs COLLATE latin1_swedish_ci COLLATE latin1_bin COLLATE latin1_bin
result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE latin1_bin'
-OK 79
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_bin COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_bin COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_ai_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_ai_ci COLLATE latin1_bin
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_ai_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_ai_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_ai_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_ai_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_as_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_as_ci COLLATE latin1_bin
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_as_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_as_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_as_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_as_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_as_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_as_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci COLLATE latin1_bin
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 CHARACTER SET DEFAULT COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT CHARACTER SET DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin CHARACTER SET DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci CHARACTER SET DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin CHARACTER SET DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT CHARACTER SET latin1 COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 CHARACTER SET latin1 COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 CHARACTER SET latin1 COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'CHARACTER SET utf8mb4' and 'CHARACTER SET latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT CHARACTER SET latin1 COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin CHARACTER SET latin1 COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci CHARACTER SET latin1 COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin CHARACTER SET latin1 COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET latin1 COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET latin1 COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET utf8mb4'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_general_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_general_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE DEFAULT COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE utf8mb4_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE utf8mb4_bin COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE utf8mb4_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE utf8mb4_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE utf8mb4_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE utf8mb4_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE utf8mb4_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE utf8mb4_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE latin1_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE latin1_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE latin1_bin COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE latin1_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE latin1_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE latin1_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE latin1_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_bin COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_as_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_as_ci COLLATE uca1400_ai_ci
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_as_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_as_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_as_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_as_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_as_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_as_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci COLLATE uca1400_ai_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 CHARACTER SET DEFAULT COLLATE uca1400_as_ci
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT CHARACTER SET DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin CHARACTER SET DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci CHARACTER SET DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin CHARACTER SET DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT CHARACTER SET latin1 COLLATE uca1400_as_ci
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 CHARACTER SET latin1 COLLATE uca1400_as_ci
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 CHARACTER SET latin1 COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'CHARACTER SET utf8mb4' and 'CHARACTER SET latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT CHARACTER SET latin1 COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin CHARACTER SET latin1 COLLATE uca1400_as_ci
+result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci CHARACTER SET latin1 COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin CHARACTER SET latin1 COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET latin1 COLLATE uca1400_as_ci
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET latin1 COLLATE uca1400_as_ci
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 CHARACTER SET utf8mb4 COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'CHARACTER SET latin1' and 'CHARACTER SET utf8mb4'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT CHARACTER SET utf8mb4 COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_general_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin CHARACTER SET utf8mb4 COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci CHARACTER SET utf8mb4 COLLATE uca1400_as_ci
+result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin CHARACTER SET utf8mb4 COLLATE uca1400_as_ci
+result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET utf8mb4 COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_general_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE DEFAULT COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE DEFAULT'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE utf8mb4_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE utf8mb4_bin COLLATE uca1400_as_ci
+result ERROR: COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE utf8mb4_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE utf8mb4_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE utf8mb4_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE utf8mb4_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE utf8mb4_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE utf8mb4_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE utf8mb4_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE latin1_swedish_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE latin1_swedish_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE latin1_swedish_ci COLLATE uca1400_as_ci
+result ERROR: COLLATION 'latin1_swedish_ci' is not valid for CHARACTER SET 'utf8mb4'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE latin1_swedish_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE latin1_swedish_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE latin1_swedish_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE latin1_swedish_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_swedish_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_swedish_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_swedish_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE latin1_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE latin1_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE latin1_bin COLLATE uca1400_as_ci
+result ERROR: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE latin1_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE latin1_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE latin1_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE latin1_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE latin1_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE latin1_bin COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE latin1_bin'
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_ai_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_ai_ci COLLATE uca1400_as_ci
+result ERROR: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_ai_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_ai_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_ai_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_ai_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_ai_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_as_ci' and 'COLLATE uca1400_ai_ci'
+
+query CREATE DATABASE
+attrs CHARACTER SET latin1 COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+result ERROR: COLLATION 'uca1400_as_ci' is not valid for CHARACTER SET 'latin1'
+
+query CREATE DATABASE
+attrs COLLATE DEFAULT COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE DEFAULT' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE utf8mb4_bin COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE utf8mb4_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_swedish_ci COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_swedish_ci' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE latin1_bin COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE latin1_bin' and 'COLLATE uca1400_as_ci'
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+result ERROR: Conflicting declarations: 'COLLATE uca1400_ai_ci' and 'COLLATE uca1400_as_ci'
+
+OK 117
query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET DEFAULT CHARACTER SET DEFAULT
@@ -1535,6 +3065,14 @@ attrs COLLATE utf8mb4_bin CHARACTER SET DEFAULT CHARACTER SET DEFAULT
result CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET DEFAULT CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET DEFAULT CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET utf8mb4 CHARACTER SET DEFAULT
result CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
@@ -1551,6 +3089,14 @@ attrs COLLATE utf8mb4_bin CHARACTER SET utf8mb4 CHARACTER SET DEFAULT
result CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET utf8mb4 CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET utf8mb4 CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE DEFAULT CHARACTER SET DEFAULT
result CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
@@ -1575,6 +3121,30 @@ attrs COLLATE utf8mb4_bin COLLATE utf8mb4_bin CHARACTER SET DEFAULT
result CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_ai_ci CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_as_ci CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_as_ci CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci CHARACTER SET DEFAULT
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
attrs CHARACTER SET latin1 CHARACTER SET latin1 CHARACTER SET latin1
result CHARACTER SET latin1 COLLATE latin1_swedish_ci
@@ -1639,6 +3209,14 @@ attrs COLLATE utf8mb4_bin CHARACTER SET DEFAULT CHARACTER SET utf8mb4
result CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET DEFAULT CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET DEFAULT CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET utf8mb4 CHARACTER SET utf8mb4
result CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
@@ -1655,6 +3233,14 @@ attrs COLLATE utf8mb4_bin CHARACTER SET utf8mb4 CHARACTER SET utf8mb4
result CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET utf8mb4 CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET utf8mb4 CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT COLLATE DEFAULT CHARACTER SET utf8mb4
result CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
@@ -1679,6 +3265,30 @@ attrs COLLATE utf8mb4_bin COLLATE utf8mb4_bin CHARACTER SET utf8mb4
result CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_ai_ci CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_as_ci CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_as_ci CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci CHARACTER SET utf8mb4
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
attrs CHARACTER SET DEFAULT CHARACTER SET DEFAULT COLLATE DEFAULT
result CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
@@ -1833,6 +3443,78 @@ result CHARACTER SET latin1 COLLATE latin1_bin
query CREATE DATABASE
attrs COLLATE latin1_bin COLLATE latin1_bin COLLATE latin1_bin
result CHARACTER SET latin1 COLLATE latin1_bin
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT CHARACTER SET DEFAULT COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 CHARACTER SET DEFAULT COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET DEFAULT COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT CHARACTER SET DEFAULT COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 CHARACTER SET DEFAULT COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET DEFAULT COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT CHARACTER SET utf8mb4 COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 CHARACTER SET utf8mb4 COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci CHARACTER SET utf8mb4 COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET DEFAULT COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs CHARACTER SET utf8mb4 COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+
+query CREATE DATABASE
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+result CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
ALTER TABLE results RENAME TO results_create_db;
#
# Running ALTER DATABASE tests
@@ -1850,9 +3532,9 @@ ALTER TABLE results RENAME TO results_alter_db;
# ALTER DATABASE db1 COMMENT '' COLLATE DEFAULT; -- means "the default collation of the current character set of db1"
# ALTER DATABASE db1 COMMENT ''; -- means "keep the current db1 collation"
CALL diff_result_tables('results_create_db', 'results_alter_db', '');
-COUNT(*) 400
-SUM(t1.result=t2.result) 396
-SUM(t1.result<>t2.result) 4
+COUNT(*) 820
+SUM(t1.result=t2.result) 810
+SUM(t1.result<>t2.result) 10
attrs
aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
@@ -1862,13 +3544,37 @@ attrs COLLATE DEFAULT
aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci
+attrs COLLATE uca1400_ai_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci
+
+attrs COLLATE uca1400_as_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_as_ci
+
attrs COLLATE DEFAULT COLLATE DEFAULT
aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci
+
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_as_ci
+
attrs COLLATE DEFAULT COLLATE DEFAULT COLLATE DEFAULT
aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci
+
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci
+
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_as_ci
#
# Running CREATE TABLE tests
#
@@ -1880,8 +3586,8 @@ CALL run_all('',
ALTER TABLE results RENAME TO results_create_table;
# Expect no difference to CREATE DATABASE
CALL diff_result_tables('results_create_db', 'results_create_table', '');
-COUNT(*) 400
-SUM(t1.result=t2.result) 400
+COUNT(*) 820
+SUM(t1.result=t2.result) 820
SUM(t1.result<>t2.result) 0
DROP DATABASE test1;
#
@@ -1900,9 +3606,9 @@ ALTER TABLE results RENAME TO results_alter_table;
# ALTER TABLE test1.t1 COMMENT '' COLLATE DEFAULT; -- means "the default collation of the current character set of test1.t1"
# ALTER TABLE test1.t1 COMMENT ''; -- means "keep the current collation of test.t1"
CALL diff_result_tables('results_create_table', 'results_alter_table', '');
-COUNT(*) 400
-SUM(t1.result=t2.result) 396
-SUM(t1.result<>t2.result) 4
+COUNT(*) 820
+SUM(t1.result=t2.result) 810
+SUM(t1.result<>t2.result) 10
attrs
aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
@@ -1912,13 +3618,37 @@ attrs COLLATE DEFAULT
aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci
+attrs COLLATE uca1400_ai_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci
+
+attrs COLLATE uca1400_as_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_as_ci
+
attrs COLLATE DEFAULT COLLATE DEFAULT
aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci
+
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_as_ci
+
attrs COLLATE DEFAULT COLLATE DEFAULT COLLATE DEFAULT
aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci
+
+attrs COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci COLLATE uca1400_ai_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_ai_ci
+
+attrs COLLATE uca1400_as_ci COLLATE uca1400_as_ci COLLATE uca1400_as_ci
+aaa CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_as_ci
+bbb CHARACTER SET utf8mb3 COLLATE utf8mb3_uca1400_as_ci
DROP DATABASE test1;
#
# Running ALTER TABLE CONVERT TO tests
@@ -1931,16 +3661,16 @@ CALL run_all('CREATE TABLE test1.t1(a INT) CHARACTER SET utf8mb3 COLLATE utf8mb3
ALTER TABLE results RENAME TO results_convert_table;
# CONVERT TO COLLATE (without CHARACTER SET) is not supported yet
CALL diff_result_tables_stat('results_alter_table', 'results_convert_table','');
-COUNT(*) 400
-SUM(t1.result=t2.result) 36
-SUM(t1.result<>t2.result) 364
+COUNT(*) 820
+SUM(t1.result=t2.result) 66
+SUM(t1.result<>t2.result) 754
# Everything that did not fail on syntax error
# should give equal results with ALTER TABLE DEFAULT CHARACTER SET
# Expect 0 non-equal results:
CALL diff_result_tables('results_alter_table', 'results_convert_table',
't2.result NOT RLIKE ''SQL syntax''');
-COUNT(*) 36
-SUM(t1.result=t2.result) 36
+COUNT(*) 66
+SUM(t1.result=t2.result) 66
SUM(t1.result<>t2.result) 0
DROP DATABASE test1;
DROP PROCEDURE show_results_all;
diff --git a/mysql-test/main/ctype_collate_context.test b/mysql-test/main/ctype_collate_context.test
index 0867237a223..6934bf487c3 100644
--- a/mysql-test/main/ctype_collate_context.test
+++ b/mysql-test/main/ctype_collate_context.test
@@ -9,7 +9,9 @@ INSERT INTO t0 VALUES
('COLLATE DEFAULT'),
('COLLATE utf8mb4_bin'),
('COLLATE latin1_swedish_ci'),
-('COLLATE latin1_bin');
+('COLLATE latin1_bin'),
+('COLLATE uca1400_ai_ci'),
+('COLLATE uca1400_as_ci');
CREATE TABLE clauses
(
diff --git a/mysql-test/main/ctype_ldml.result b/mysql-test/main/ctype_ldml.result
index d4b24ad9af3..df009b77bca 100644
--- a/mysql-test/main/ctype_ldml.result
+++ b/mysql-test/main/ctype_ldml.result
@@ -469,6 +469,7 @@ utf8mb4_test_ci utf8mb4 326 8
utf16_test_ci utf16 327 8
utf8mb4_test_400_ci utf8mb4 328 8
utf8mb4_test_520_nopad_ci utf8mb4 329 8
+utf8mb4_uca1400_test01_as_ci utf8mb4 330 4
latin1_test latin1 331 1
latin1_test2 latin1 332 1
latin1_test2_cs latin1 333 1
@@ -505,6 +506,7 @@ ucs2_test_ci ucs2 358 8
utf8mb4_test_ci utf8mb4 326 8
utf8mb4_test_400_ci utf8mb4 328 8
utf8mb4_test_520_nopad_ci utf8mb4 329 8
+utf8mb4_uca1400_test01_as_ci utf8mb4 330 4
utf16_test_ci utf16 327 8
utf32_test_ci utf32 391 8
show collation like 'ucs2_vn_ci';
@@ -3079,3 +3081,100 @@ tèl.123 10020E8B0F2E025D0E2A0E2B0E2C
ťèl.123 10020E8B0F2E025D0E2A0E2B0E2C
tex.123 10020E8B105A025D0E2A0E2B0E2C
DROP TABLE t1;
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+#
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_test01_as_ci, comment VARCHAR(128));
+INSERT INTO t1 VALUES ('a', '0061 LATIN SMALL LETTER A');
+INSERT INTO t1 VALUES ('c', '0063 LATIN SMALL LETTER C');
+INSERT INTO t1 VALUES ('à', '00E0 LATIN SMALL LETTER A WITH GRAVE');
+INSERT INTO t1 VALUES ('ć', '0107 LATIN SMALL LETTER C WITH ACUTE');
+INSERT INTO t1 VALUES (_ucs2 0x0439, '0439 CYRILLIC SMALL LETTER SHORT I - precomposed');
+INSERT INTO t1 VALUES (_ucs2 0x04380306, '0438 0306 CYRILLIC SMALL LETTER SHORT I - contraction');
+INSERT INTO t1 VALUES (_ucs2 0x0CCB, '0CCB KANNADA VOWEL SIGN OO - precomposed');
+INSERT INTO t1 VALUES (_ucs2 0x0CC60CC20CD5, '0CC6 0CC2 0CD5 KANNADA VOWEL SIGN OO - contraction');
+SELECT
+'---' AS `---`,
+comment,
+HEX(a),
+HEX(WEIGHT_STRING(a)),
+HEX(WEIGHT_STRING(a LEVEL 1)),
+HEX(WEIGHT_STRING(a LEVEL 2)),
+WEIGHT_STRING(a LEVEL 1)=WEIGHT_STRING(a COLLATE utf8mb4_unicode_ci) AS is_400,
+WEIGHT_STRING(a LEVEL 1)=WEIGHT_STRING(a COLLATE utf8mb4_unicode_520_ci) AS is_520,
+WEIGHT_STRING(a LEVEL 1)=WEIGHT_STRING(a COLLATE utf8mb4_uca1400_ai_ci) AS is_1400
+FROM t1
+ORDER BY a, HEX(a);
+--- ---
+comment 0061 LATIN SMALL LETTER A
+HEX(a) 61
+HEX(WEIGHT_STRING(a)) 20750020
+HEX(WEIGHT_STRING(a LEVEL 1)) 2075
+HEX(WEIGHT_STRING(a LEVEL 2)) 0020
+is_400 0
+is_520 0
+is_1400 1
+--- ---
+comment 00E0 LATIN SMALL LETTER A WITH GRAVE
+HEX(a) C3A0
+HEX(WEIGHT_STRING(a)) 207500200025
+HEX(WEIGHT_STRING(a LEVEL 1)) 2075
+HEX(WEIGHT_STRING(a LEVEL 2)) 00200025
+is_400 0
+is_520 0
+is_1400 1
+--- ---
+comment 0063 LATIN SMALL LETTER C
+HEX(a) 63
+HEX(WEIGHT_STRING(a)) 20A90020
+HEX(WEIGHT_STRING(a LEVEL 1)) 20A9
+HEX(WEIGHT_STRING(a LEVEL 2)) 0020
+is_400 0
+is_520 0
+is_1400 1
+--- ---
+comment 0107 LATIN SMALL LETTER C WITH ACUTE
+HEX(a) C487
+HEX(WEIGHT_STRING(a)) 20A900200024
+HEX(WEIGHT_STRING(a LEVEL 1)) 20A9
+HEX(WEIGHT_STRING(a LEVEL 2)) 00200024
+is_400 0
+is_520 0
+is_1400 1
+--- ---
+comment 0438 0306 CYRILLIC SMALL LETTER SHORT I - contraction
+HEX(a) D0B8CC86
+HEX(WEIGHT_STRING(a)) 24E10020
+HEX(WEIGHT_STRING(a LEVEL 1)) 24E1
+HEX(WEIGHT_STRING(a LEVEL 2)) 0020
+is_400 0
+is_520 0
+is_1400 1
+--- ---
+comment 0439 CYRILLIC SMALL LETTER SHORT I - precomposed
+HEX(a) D0B9
+HEX(WEIGHT_STRING(a)) 24E10020
+HEX(WEIGHT_STRING(a LEVEL 1)) 24E1
+HEX(WEIGHT_STRING(a LEVEL 2)) 0020
+is_400 0
+is_520 0
+is_1400 1
+--- ---
+comment 0CC6 0CC2 0CD5 KANNADA VOWEL SIGN OO - contraction
+HEX(a) E0B386E0B382E0B395
+HEX(WEIGHT_STRING(a)) 2D150020
+HEX(WEIGHT_STRING(a LEVEL 1)) 2D15
+HEX(WEIGHT_STRING(a LEVEL 2)) 0020
+is_400 0
+is_520 0
+is_1400 1
+--- ---
+comment 0CCB KANNADA VOWEL SIGN OO - precomposed
+HEX(a) E0B38B
+HEX(WEIGHT_STRING(a)) 2D150020
+HEX(WEIGHT_STRING(a LEVEL 1)) 2D15
+HEX(WEIGHT_STRING(a LEVEL 2)) 0020
+is_400 0
+is_520 0
+is_1400 1
+DROP TABLE t1;
diff --git a/mysql-test/main/ctype_ldml.test b/mysql-test/main/ctype_ldml.test
index 447a9b4565a..ed3234970bb 100644
--- a/mysql-test/main/ctype_ldml.test
+++ b/mysql-test/main/ctype_ldml.test
@@ -639,3 +639,33 @@ SELECT * FROM t1 WHERE phone='123' ORDER BY BINARY phone;
SELECT * FROM t1 WHERE phone<>'123' ORDER BY BINARY phone;
SELECT phone, HEX(WEIGHT_STRING(phone)) FROM t1 ORDER BY phone, BINARY phone;
DROP TABLE t1;
+
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo #
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_test01_as_ci, comment VARCHAR(128));
+INSERT INTO t1 VALUES ('a', '0061 LATIN SMALL LETTER A');
+INSERT INTO t1 VALUES ('c', '0063 LATIN SMALL LETTER C');
+INSERT INTO t1 VALUES ('à', '00E0 LATIN SMALL LETTER A WITH GRAVE');
+INSERT INTO t1 VALUES ('ć', '0107 LATIN SMALL LETTER C WITH ACUTE');
+INSERT INTO t1 VALUES (_ucs2 0x0439, '0439 CYRILLIC SMALL LETTER SHORT I - precomposed');
+INSERT INTO t1 VALUES (_ucs2 0x04380306, '0438 0306 CYRILLIC SMALL LETTER SHORT I - contraction');
+INSERT INTO t1 VALUES (_ucs2 0x0CCB, '0CCB KANNADA VOWEL SIGN OO - precomposed');
+INSERT INTO t1 VALUES (_ucs2 0x0CC60CC20CD5, '0CC6 0CC2 0CD5 KANNADA VOWEL SIGN OO - contraction');
+--vertical_results
+SELECT
+ '---' AS `---`,
+ comment,
+ HEX(a),
+ HEX(WEIGHT_STRING(a)),
+ HEX(WEIGHT_STRING(a LEVEL 1)),
+ HEX(WEIGHT_STRING(a LEVEL 2)),
+ WEIGHT_STRING(a LEVEL 1)=WEIGHT_STRING(a COLLATE utf8mb4_unicode_ci) AS is_400,
+ WEIGHT_STRING(a LEVEL 1)=WEIGHT_STRING(a COLLATE utf8mb4_unicode_520_ci) AS is_520,
+ WEIGHT_STRING(a LEVEL 1)=WEIGHT_STRING(a COLLATE utf8mb4_uca1400_ai_ci) AS is_1400
+FROM t1
+ORDER BY a, HEX(a);
+--horizontal_results
+DROP TABLE t1;
diff --git a/mysql-test/main/ctype_ucs2_uca.result b/mysql-test/main/ctype_ucs2_uca.result
index 430f0ec1c37..317f86b1a4f 100644
--- a/mysql-test/main/ctype_ucs2_uca.result
+++ b/mysql-test/main/ctype_ucs2_uca.result
@@ -588,3 +588,581 @@ SET NAMES utf8;
#
# End of 10.2 tests
#
+#
+# Start of 10.9 tests
+#
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+# Collation IDs in the protocol
+#
+SET @charset='ucs2';
+FOR rec IN (SELECT COLLATION_NAME
+FROM INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY
+WHERE CHARACTER_SET_NAME=@charset
+AND COLLATION_NAME RLIKE 'uca1400'
+ ORDER BY ID)
+DO
+SET NAMES utf8mb4;
+SET character_set_results=NULL;
+EXECUTE IMMEDIATE CONCAT('SELECT CONVERT('''' USING ',@charset,')',
+' COLLATE ', rec.COLLATION_NAME,
+' AS ', rec.COLLATION_NAME,
+' LIMIT 0');
+END FOR;
+$$
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_ai_ci 253 0 0 Y 0 39 128
+uca1400_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_ai_cs 253 0 0 Y 0 39 128
+uca1400_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_as_ci 253 0 0 Y 0 39 128
+uca1400_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_as_cs 253 0 0 Y 0 39 128
+uca1400_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_ai_ci 253 0 0 Y 0 39 128
+uca1400_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_ai_cs 253 0 0 Y 0 39 128
+uca1400_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_as_ci 253 0 0 Y 0 39 128
+uca1400_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_as_cs 253 0 0 Y 0 39 128
+uca1400_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_ai_ci 253 0 0 Y 0 39 129
+uca1400_icelandic_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_ai_cs 253 0 0 Y 0 39 129
+uca1400_icelandic_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_as_ci 253 0 0 Y 0 39 129
+uca1400_icelandic_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_as_cs 253 0 0 Y 0 39 129
+uca1400_icelandic_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_ai_ci 253 0 0 Y 0 39 129
+uca1400_icelandic_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_ai_cs 253 0 0 Y 0 39 129
+uca1400_icelandic_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_as_ci 253 0 0 Y 0 39 129
+uca1400_icelandic_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_as_cs 253 0 0 Y 0 39 129
+uca1400_icelandic_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_ai_ci 253 0 0 Y 0 39 130
+uca1400_latvian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_ai_cs 253 0 0 Y 0 39 130
+uca1400_latvian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_as_ci 253 0 0 Y 0 39 130
+uca1400_latvian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_as_cs 253 0 0 Y 0 39 130
+uca1400_latvian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_ai_ci 253 0 0 Y 0 39 130
+uca1400_latvian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_ai_cs 253 0 0 Y 0 39 130
+uca1400_latvian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_as_ci 253 0 0 Y 0 39 130
+uca1400_latvian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_as_cs 253 0 0 Y 0 39 130
+uca1400_latvian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_ai_ci 253 0 0 Y 0 39 131
+uca1400_romanian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_ai_cs 253 0 0 Y 0 39 131
+uca1400_romanian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_as_ci 253 0 0 Y 0 39 131
+uca1400_romanian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_as_cs 253 0 0 Y 0 39 131
+uca1400_romanian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_ai_ci 253 0 0 Y 0 39 131
+uca1400_romanian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_ai_cs 253 0 0 Y 0 39 131
+uca1400_romanian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_as_ci 253 0 0 Y 0 39 131
+uca1400_romanian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_as_cs 253 0 0 Y 0 39 131
+uca1400_romanian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_ai_ci 253 0 0 Y 0 39 132
+uca1400_slovenian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_ai_cs 253 0 0 Y 0 39 132
+uca1400_slovenian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_as_ci 253 0 0 Y 0 39 132
+uca1400_slovenian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_as_cs 253 0 0 Y 0 39 132
+uca1400_slovenian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_ai_ci 253 0 0 Y 0 39 132
+uca1400_slovenian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_ai_cs 253 0 0 Y 0 39 132
+uca1400_slovenian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_as_ci 253 0 0 Y 0 39 132
+uca1400_slovenian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_as_cs 253 0 0 Y 0 39 132
+uca1400_slovenian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_ai_ci 253 0 0 Y 0 39 133
+uca1400_polish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_ai_cs 253 0 0 Y 0 39 133
+uca1400_polish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_as_ci 253 0 0 Y 0 39 133
+uca1400_polish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_as_cs 253 0 0 Y 0 39 133
+uca1400_polish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_ai_ci 253 0 0 Y 0 39 133
+uca1400_polish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_ai_cs 253 0 0 Y 0 39 133
+uca1400_polish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_as_ci 253 0 0 Y 0 39 133
+uca1400_polish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_as_cs 253 0 0 Y 0 39 133
+uca1400_polish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_ai_ci 253 0 0 Y 0 39 134
+uca1400_estonian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_ai_cs 253 0 0 Y 0 39 134
+uca1400_estonian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_as_ci 253 0 0 Y 0 39 134
+uca1400_estonian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_as_cs 253 0 0 Y 0 39 134
+uca1400_estonian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_ai_ci 253 0 0 Y 0 39 134
+uca1400_estonian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_ai_cs 253 0 0 Y 0 39 134
+uca1400_estonian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_as_ci 253 0 0 Y 0 39 134
+uca1400_estonian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_as_cs 253 0 0 Y 0 39 134
+uca1400_estonian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_ai_ci 253 0 0 Y 0 39 135
+uca1400_spanish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_ai_cs 253 0 0 Y 0 39 135
+uca1400_spanish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_as_ci 253 0 0 Y 0 39 135
+uca1400_spanish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_as_cs 253 0 0 Y 0 39 135
+uca1400_spanish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_ai_ci 253 0 0 Y 0 39 135
+uca1400_spanish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_ai_cs 253 0 0 Y 0 39 135
+uca1400_spanish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_as_ci 253 0 0 Y 0 39 135
+uca1400_spanish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_as_cs 253 0 0 Y 0 39 135
+uca1400_spanish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_ai_ci 253 0 0 Y 0 39 136
+uca1400_swedish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_ai_cs 253 0 0 Y 0 39 136
+uca1400_swedish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_as_ci 253 0 0 Y 0 39 136
+uca1400_swedish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_as_cs 253 0 0 Y 0 39 136
+uca1400_swedish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_ai_ci 253 0 0 Y 0 39 136
+uca1400_swedish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_ai_cs 253 0 0 Y 0 39 136
+uca1400_swedish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_as_ci 253 0 0 Y 0 39 136
+uca1400_swedish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_as_cs 253 0 0 Y 0 39 136
+uca1400_swedish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_ai_ci 253 0 0 Y 0 39 137
+uca1400_turkish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_ai_cs 253 0 0 Y 0 39 137
+uca1400_turkish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_as_ci 253 0 0 Y 0 39 137
+uca1400_turkish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_as_cs 253 0 0 Y 0 39 137
+uca1400_turkish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_ai_ci 253 0 0 Y 0 39 137
+uca1400_turkish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_ai_cs 253 0 0 Y 0 39 137
+uca1400_turkish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_as_ci 253 0 0 Y 0 39 137
+uca1400_turkish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_as_cs 253 0 0 Y 0 39 137
+uca1400_turkish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_ai_ci 253 0 0 Y 0 39 138
+uca1400_czech_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_ai_cs 253 0 0 Y 0 39 138
+uca1400_czech_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_as_ci 253 0 0 Y 0 39 138
+uca1400_czech_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_as_cs 253 0 0 Y 0 39 138
+uca1400_czech_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_ai_ci 253 0 0 Y 0 39 138
+uca1400_czech_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_ai_cs 253 0 0 Y 0 39 138
+uca1400_czech_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_as_ci 253 0 0 Y 0 39 138
+uca1400_czech_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_as_cs 253 0 0 Y 0 39 138
+uca1400_czech_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_ai_ci 253 0 0 Y 0 39 139
+uca1400_danish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_ai_cs 253 0 0 Y 0 39 139
+uca1400_danish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_as_ci 253 0 0 Y 0 39 139
+uca1400_danish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_as_cs 253 0 0 Y 0 39 139
+uca1400_danish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_ai_ci 253 0 0 Y 0 39 139
+uca1400_danish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_ai_cs 253 0 0 Y 0 39 139
+uca1400_danish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_as_ci 253 0 0 Y 0 39 139
+uca1400_danish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_as_cs 253 0 0 Y 0 39 139
+uca1400_danish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_ai_ci 253 0 0 Y 0 39 140
+uca1400_lithuanian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_ai_cs 253 0 0 Y 0 39 140
+uca1400_lithuanian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_as_ci 253 0 0 Y 0 39 140
+uca1400_lithuanian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_as_cs 253 0 0 Y 0 39 140
+uca1400_lithuanian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_ai_ci 253 0 0 Y 0 39 140
+uca1400_lithuanian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_ai_cs 253 0 0 Y 0 39 140
+uca1400_lithuanian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_as_ci 253 0 0 Y 0 39 140
+uca1400_lithuanian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_as_cs 253 0 0 Y 0 39 140
+uca1400_lithuanian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_ai_ci 253 0 0 Y 0 39 141
+uca1400_slovak_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_ai_cs 253 0 0 Y 0 39 141
+uca1400_slovak_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_as_ci 253 0 0 Y 0 39 141
+uca1400_slovak_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_as_cs 253 0 0 Y 0 39 141
+uca1400_slovak_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_ai_ci 253 0 0 Y 0 39 141
+uca1400_slovak_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_ai_cs 253 0 0 Y 0 39 141
+uca1400_slovak_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_as_ci 253 0 0 Y 0 39 141
+uca1400_slovak_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_as_cs 253 0 0 Y 0 39 141
+uca1400_slovak_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_ai_ci 253 0 0 Y 0 39 142
+uca1400_spanish2_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_ai_cs 253 0 0 Y 0 39 142
+uca1400_spanish2_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_as_ci 253 0 0 Y 0 39 142
+uca1400_spanish2_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_as_cs 253 0 0 Y 0 39 142
+uca1400_spanish2_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_ai_ci 253 0 0 Y 0 39 142
+uca1400_spanish2_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_ai_cs 253 0 0 Y 0 39 142
+uca1400_spanish2_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_as_ci 253 0 0 Y 0 39 142
+uca1400_spanish2_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_as_cs 253 0 0 Y 0 39 142
+uca1400_spanish2_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_ai_ci 253 0 0 Y 0 39 143
+uca1400_roman_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_ai_cs 253 0 0 Y 0 39 143
+uca1400_roman_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_as_ci 253 0 0 Y 0 39 143
+uca1400_roman_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_as_cs 253 0 0 Y 0 39 143
+uca1400_roman_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_ai_ci 253 0 0 Y 0 39 143
+uca1400_roman_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_ai_cs 253 0 0 Y 0 39 143
+uca1400_roman_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_as_ci 253 0 0 Y 0 39 143
+uca1400_roman_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_as_cs 253 0 0 Y 0 39 143
+uca1400_roman_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_ai_ci 253 0 0 Y 0 39 144
+uca1400_persian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_ai_cs 253 0 0 Y 0 39 144
+uca1400_persian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_as_ci 253 0 0 Y 0 39 144
+uca1400_persian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_as_cs 253 0 0 Y 0 39 144
+uca1400_persian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_ai_ci 253 0 0 Y 0 39 144
+uca1400_persian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_ai_cs 253 0 0 Y 0 39 144
+uca1400_persian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_as_ci 253 0 0 Y 0 39 144
+uca1400_persian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_as_cs 253 0 0 Y 0 39 144
+uca1400_persian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_ai_ci 253 0 0 Y 0 39 145
+uca1400_esperanto_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_ai_cs 253 0 0 Y 0 39 145
+uca1400_esperanto_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_as_ci 253 0 0 Y 0 39 145
+uca1400_esperanto_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_as_cs 253 0 0 Y 0 39 145
+uca1400_esperanto_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_ai_ci 253 0 0 Y 0 39 145
+uca1400_esperanto_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_ai_cs 253 0 0 Y 0 39 145
+uca1400_esperanto_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_as_ci 253 0 0 Y 0 39 145
+uca1400_esperanto_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_as_cs 253 0 0 Y 0 39 145
+uca1400_esperanto_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_ai_ci 253 0 0 Y 0 39 146
+uca1400_hungarian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_ai_cs 253 0 0 Y 0 39 146
+uca1400_hungarian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_as_ci 253 0 0 Y 0 39 146
+uca1400_hungarian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_as_cs 253 0 0 Y 0 39 146
+uca1400_hungarian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_ai_ci 253 0 0 Y 0 39 146
+uca1400_hungarian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_ai_cs 253 0 0 Y 0 39 146
+uca1400_hungarian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_as_ci 253 0 0 Y 0 39 146
+uca1400_hungarian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_as_cs 253 0 0 Y 0 39 146
+uca1400_hungarian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_ai_ci 253 0 0 Y 0 39 147
+uca1400_sinhala_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_ai_cs 253 0 0 Y 0 39 147
+uca1400_sinhala_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_as_ci 253 0 0 Y 0 39 147
+uca1400_sinhala_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_as_cs 253 0 0 Y 0 39 147
+uca1400_sinhala_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_ai_ci 253 0 0 Y 0 39 147
+uca1400_sinhala_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_ai_cs 253 0 0 Y 0 39 147
+uca1400_sinhala_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_as_ci 253 0 0 Y 0 39 147
+uca1400_sinhala_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_as_cs 253 0 0 Y 0 39 147
+uca1400_sinhala_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_ai_ci 253 0 0 Y 0 39 148
+uca1400_german2_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_ai_cs 253 0 0 Y 0 39 148
+uca1400_german2_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_as_ci 253 0 0 Y 0 39 148
+uca1400_german2_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_as_cs 253 0 0 Y 0 39 148
+uca1400_german2_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_ai_ci 253 0 0 Y 0 39 148
+uca1400_german2_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_ai_cs 253 0 0 Y 0 39 148
+uca1400_german2_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_as_ci 253 0 0 Y 0 39 148
+uca1400_german2_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_as_cs 253 0 0 Y 0 39 148
+uca1400_german2_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_ai_ci 253 0 0 Y 0 39 151
+uca1400_vietnamese_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_ai_cs 253 0 0 Y 0 39 151
+uca1400_vietnamese_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_as_ci 253 0 0 Y 0 39 151
+uca1400_vietnamese_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_as_cs 253 0 0 Y 0 39 151
+uca1400_vietnamese_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_ai_ci 253 0 0 Y 0 39 151
+uca1400_vietnamese_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_ai_cs 253 0 0 Y 0 39 151
+uca1400_vietnamese_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_as_ci 253 0 0 Y 0 39 151
+uca1400_vietnamese_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_as_cs 253 0 0 Y 0 39 151
+uca1400_vietnamese_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_ai_ci 253 0 0 Y 0 39 640
+uca1400_croatian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_ai_cs 253 0 0 Y 0 39 640
+uca1400_croatian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_as_ci 253 0 0 Y 0 39 640
+uca1400_croatian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_as_cs 253 0 0 Y 0 39 640
+uca1400_croatian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_ai_ci 253 0 0 Y 0 39 640
+uca1400_croatian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_ai_cs 253 0 0 Y 0 39 640
+uca1400_croatian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_as_ci 253 0 0 Y 0 39 640
+uca1400_croatian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_as_cs 253 0 0 Y 0 39 640
+uca1400_croatian_nopad_as_cs
+SET NAMES utf8;
+#
+# End of 10.9 tests
+#
diff --git a/mysql-test/main/ctype_ucs2_uca.test b/mysql-test/main/ctype_ucs2_uca.test
index 0aed0956f6c..5d0699401da 100644
--- a/mysql-test/main/ctype_ucs2_uca.test
+++ b/mysql-test/main/ctype_ucs2_uca.test
@@ -23,3 +23,21 @@ SET NAMES utf8;
--echo #
--echo # End of 10.2 tests
--echo #
+
+
+--echo #
+--echo # Start of 10.9 tests
+--echo #
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo # Collation IDs in the protocol
+--echo #
+
+SET @charset='ucs2';
+--source include/ctype_uca1400_ids_using_convert.inc
+
+
+--echo #
+--echo # End of 10.9 tests
+--echo #
diff --git a/mysql-test/main/ctype_utf16_uca.result b/mysql-test/main/ctype_utf16_uca.result
index 93a0748adc9..69ebfc4de54 100644
--- a/mysql-test/main/ctype_utf16_uca.result
+++ b/mysql-test/main/ctype_utf16_uca.result
@@ -7939,6 +7939,585 @@ SELECT HEX(c) FROM t1;
HEX(c)
0061006100610061006100610061006100610061
DROP TABLE t1;
+SET NAMES utf8;
#
# End of 10.2 tests
#
+#
+# Start of 10.9 tests
+#
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+# Collation IDs in the protocol
+#
+SET @charset='utf16';
+FOR rec IN (SELECT COLLATION_NAME
+FROM INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY
+WHERE CHARACTER_SET_NAME=@charset
+AND COLLATION_NAME RLIKE 'uca1400'
+ ORDER BY ID)
+DO
+SET NAMES utf8mb4;
+SET character_set_results=NULL;
+EXECUTE IMMEDIATE CONCAT('SELECT CONVERT('''' USING ',@charset,')',
+' COLLATE ', rec.COLLATION_NAME,
+' AS ', rec.COLLATION_NAME,
+' LIMIT 0');
+END FOR;
+$$
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_ai_ci 253 0 0 Y 0 39 101
+uca1400_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_ai_cs 253 0 0 Y 0 39 101
+uca1400_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_as_ci 253 0 0 Y 0 39 101
+uca1400_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_as_cs 253 0 0 Y 0 39 101
+uca1400_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_ai_ci 253 0 0 Y 0 39 101
+uca1400_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_ai_cs 253 0 0 Y 0 39 101
+uca1400_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_as_ci 253 0 0 Y 0 39 101
+uca1400_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_as_cs 253 0 0 Y 0 39 101
+uca1400_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_ai_ci 253 0 0 Y 0 39 102
+uca1400_icelandic_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_ai_cs 253 0 0 Y 0 39 102
+uca1400_icelandic_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_as_ci 253 0 0 Y 0 39 102
+uca1400_icelandic_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_as_cs 253 0 0 Y 0 39 102
+uca1400_icelandic_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_ai_ci 253 0 0 Y 0 39 102
+uca1400_icelandic_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_ai_cs 253 0 0 Y 0 39 102
+uca1400_icelandic_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_as_ci 253 0 0 Y 0 39 102
+uca1400_icelandic_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_as_cs 253 0 0 Y 0 39 102
+uca1400_icelandic_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_ai_ci 253 0 0 Y 0 39 103
+uca1400_latvian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_ai_cs 253 0 0 Y 0 39 103
+uca1400_latvian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_as_ci 253 0 0 Y 0 39 103
+uca1400_latvian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_as_cs 253 0 0 Y 0 39 103
+uca1400_latvian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_ai_ci 253 0 0 Y 0 39 103
+uca1400_latvian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_ai_cs 253 0 0 Y 0 39 103
+uca1400_latvian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_as_ci 253 0 0 Y 0 39 103
+uca1400_latvian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_as_cs 253 0 0 Y 0 39 103
+uca1400_latvian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_ai_ci 253 0 0 Y 0 39 104
+uca1400_romanian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_ai_cs 253 0 0 Y 0 39 104
+uca1400_romanian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_as_ci 253 0 0 Y 0 39 104
+uca1400_romanian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_as_cs 253 0 0 Y 0 39 104
+uca1400_romanian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_ai_ci 253 0 0 Y 0 39 104
+uca1400_romanian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_ai_cs 253 0 0 Y 0 39 104
+uca1400_romanian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_as_ci 253 0 0 Y 0 39 104
+uca1400_romanian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_as_cs 253 0 0 Y 0 39 104
+uca1400_romanian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_ai_ci 253 0 0 Y 0 39 105
+uca1400_slovenian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_ai_cs 253 0 0 Y 0 39 105
+uca1400_slovenian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_as_ci 253 0 0 Y 0 39 105
+uca1400_slovenian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_as_cs 253 0 0 Y 0 39 105
+uca1400_slovenian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_ai_ci 253 0 0 Y 0 39 105
+uca1400_slovenian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_ai_cs 253 0 0 Y 0 39 105
+uca1400_slovenian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_as_ci 253 0 0 Y 0 39 105
+uca1400_slovenian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_as_cs 253 0 0 Y 0 39 105
+uca1400_slovenian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_ai_ci 253 0 0 Y 0 39 106
+uca1400_polish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_ai_cs 253 0 0 Y 0 39 106
+uca1400_polish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_as_ci 253 0 0 Y 0 39 106
+uca1400_polish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_as_cs 253 0 0 Y 0 39 106
+uca1400_polish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_ai_ci 253 0 0 Y 0 39 106
+uca1400_polish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_ai_cs 253 0 0 Y 0 39 106
+uca1400_polish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_as_ci 253 0 0 Y 0 39 106
+uca1400_polish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_as_cs 253 0 0 Y 0 39 106
+uca1400_polish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_ai_ci 253 0 0 Y 0 39 107
+uca1400_estonian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_ai_cs 253 0 0 Y 0 39 107
+uca1400_estonian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_as_ci 253 0 0 Y 0 39 107
+uca1400_estonian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_as_cs 253 0 0 Y 0 39 107
+uca1400_estonian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_ai_ci 253 0 0 Y 0 39 107
+uca1400_estonian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_ai_cs 253 0 0 Y 0 39 107
+uca1400_estonian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_as_ci 253 0 0 Y 0 39 107
+uca1400_estonian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_as_cs 253 0 0 Y 0 39 107
+uca1400_estonian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_ai_ci 253 0 0 Y 0 39 108
+uca1400_spanish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_ai_cs 253 0 0 Y 0 39 108
+uca1400_spanish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_as_ci 253 0 0 Y 0 39 108
+uca1400_spanish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_as_cs 253 0 0 Y 0 39 108
+uca1400_spanish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_ai_ci 253 0 0 Y 0 39 108
+uca1400_spanish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_ai_cs 253 0 0 Y 0 39 108
+uca1400_spanish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_as_ci 253 0 0 Y 0 39 108
+uca1400_spanish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_as_cs 253 0 0 Y 0 39 108
+uca1400_spanish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_ai_ci 253 0 0 Y 0 39 109
+uca1400_swedish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_ai_cs 253 0 0 Y 0 39 109
+uca1400_swedish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_as_ci 253 0 0 Y 0 39 109
+uca1400_swedish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_as_cs 253 0 0 Y 0 39 109
+uca1400_swedish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_ai_ci 253 0 0 Y 0 39 109
+uca1400_swedish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_ai_cs 253 0 0 Y 0 39 109
+uca1400_swedish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_as_ci 253 0 0 Y 0 39 109
+uca1400_swedish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_as_cs 253 0 0 Y 0 39 109
+uca1400_swedish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_ai_ci 253 0 0 Y 0 39 110
+uca1400_turkish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_ai_cs 253 0 0 Y 0 39 110
+uca1400_turkish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_as_ci 253 0 0 Y 0 39 110
+uca1400_turkish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_as_cs 253 0 0 Y 0 39 110
+uca1400_turkish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_ai_ci 253 0 0 Y 0 39 110
+uca1400_turkish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_ai_cs 253 0 0 Y 0 39 110
+uca1400_turkish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_as_ci 253 0 0 Y 0 39 110
+uca1400_turkish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_as_cs 253 0 0 Y 0 39 110
+uca1400_turkish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_ai_ci 253 0 0 Y 0 39 111
+uca1400_czech_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_ai_cs 253 0 0 Y 0 39 111
+uca1400_czech_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_as_ci 253 0 0 Y 0 39 111
+uca1400_czech_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_as_cs 253 0 0 Y 0 39 111
+uca1400_czech_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_ai_ci 253 0 0 Y 0 39 111
+uca1400_czech_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_ai_cs 253 0 0 Y 0 39 111
+uca1400_czech_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_as_ci 253 0 0 Y 0 39 111
+uca1400_czech_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_as_cs 253 0 0 Y 0 39 111
+uca1400_czech_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_ai_ci 253 0 0 Y 0 39 112
+uca1400_danish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_ai_cs 253 0 0 Y 0 39 112
+uca1400_danish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_as_ci 253 0 0 Y 0 39 112
+uca1400_danish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_as_cs 253 0 0 Y 0 39 112
+uca1400_danish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_ai_ci 253 0 0 Y 0 39 112
+uca1400_danish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_ai_cs 253 0 0 Y 0 39 112
+uca1400_danish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_as_ci 253 0 0 Y 0 39 112
+uca1400_danish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_as_cs 253 0 0 Y 0 39 112
+uca1400_danish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_ai_ci 253 0 0 Y 0 39 113
+uca1400_lithuanian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_ai_cs 253 0 0 Y 0 39 113
+uca1400_lithuanian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_as_ci 253 0 0 Y 0 39 113
+uca1400_lithuanian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_as_cs 253 0 0 Y 0 39 113
+uca1400_lithuanian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_ai_ci 253 0 0 Y 0 39 113
+uca1400_lithuanian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_ai_cs 253 0 0 Y 0 39 113
+uca1400_lithuanian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_as_ci 253 0 0 Y 0 39 113
+uca1400_lithuanian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_as_cs 253 0 0 Y 0 39 113
+uca1400_lithuanian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_ai_ci 253 0 0 Y 0 39 114
+uca1400_slovak_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_ai_cs 253 0 0 Y 0 39 114
+uca1400_slovak_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_as_ci 253 0 0 Y 0 39 114
+uca1400_slovak_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_as_cs 253 0 0 Y 0 39 114
+uca1400_slovak_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_ai_ci 253 0 0 Y 0 39 114
+uca1400_slovak_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_ai_cs 253 0 0 Y 0 39 114
+uca1400_slovak_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_as_ci 253 0 0 Y 0 39 114
+uca1400_slovak_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_as_cs 253 0 0 Y 0 39 114
+uca1400_slovak_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_ai_ci 253 0 0 Y 0 39 115
+uca1400_spanish2_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_ai_cs 253 0 0 Y 0 39 115
+uca1400_spanish2_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_as_ci 253 0 0 Y 0 39 115
+uca1400_spanish2_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_as_cs 253 0 0 Y 0 39 115
+uca1400_spanish2_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_ai_ci 253 0 0 Y 0 39 115
+uca1400_spanish2_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_ai_cs 253 0 0 Y 0 39 115
+uca1400_spanish2_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_as_ci 253 0 0 Y 0 39 115
+uca1400_spanish2_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_as_cs 253 0 0 Y 0 39 115
+uca1400_spanish2_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_ai_ci 253 0 0 Y 0 39 116
+uca1400_roman_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_ai_cs 253 0 0 Y 0 39 116
+uca1400_roman_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_as_ci 253 0 0 Y 0 39 116
+uca1400_roman_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_as_cs 253 0 0 Y 0 39 116
+uca1400_roman_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_ai_ci 253 0 0 Y 0 39 116
+uca1400_roman_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_ai_cs 253 0 0 Y 0 39 116
+uca1400_roman_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_as_ci 253 0 0 Y 0 39 116
+uca1400_roman_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_as_cs 253 0 0 Y 0 39 116
+uca1400_roman_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_ai_ci 253 0 0 Y 0 39 117
+uca1400_persian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_ai_cs 253 0 0 Y 0 39 117
+uca1400_persian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_as_ci 253 0 0 Y 0 39 117
+uca1400_persian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_as_cs 253 0 0 Y 0 39 117
+uca1400_persian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_ai_ci 253 0 0 Y 0 39 117
+uca1400_persian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_ai_cs 253 0 0 Y 0 39 117
+uca1400_persian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_as_ci 253 0 0 Y 0 39 117
+uca1400_persian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_as_cs 253 0 0 Y 0 39 117
+uca1400_persian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_ai_ci 253 0 0 Y 0 39 118
+uca1400_esperanto_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_ai_cs 253 0 0 Y 0 39 118
+uca1400_esperanto_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_as_ci 253 0 0 Y 0 39 118
+uca1400_esperanto_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_as_cs 253 0 0 Y 0 39 118
+uca1400_esperanto_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_ai_ci 253 0 0 Y 0 39 118
+uca1400_esperanto_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_ai_cs 253 0 0 Y 0 39 118
+uca1400_esperanto_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_as_ci 253 0 0 Y 0 39 118
+uca1400_esperanto_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_as_cs 253 0 0 Y 0 39 118
+uca1400_esperanto_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_ai_ci 253 0 0 Y 0 39 119
+uca1400_hungarian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_ai_cs 253 0 0 Y 0 39 119
+uca1400_hungarian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_as_ci 253 0 0 Y 0 39 119
+uca1400_hungarian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_as_cs 253 0 0 Y 0 39 119
+uca1400_hungarian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_ai_ci 253 0 0 Y 0 39 119
+uca1400_hungarian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_ai_cs 253 0 0 Y 0 39 119
+uca1400_hungarian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_as_ci 253 0 0 Y 0 39 119
+uca1400_hungarian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_as_cs 253 0 0 Y 0 39 119
+uca1400_hungarian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_ai_ci 253 0 0 Y 0 39 120
+uca1400_sinhala_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_ai_cs 253 0 0 Y 0 39 120
+uca1400_sinhala_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_as_ci 253 0 0 Y 0 39 120
+uca1400_sinhala_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_as_cs 253 0 0 Y 0 39 120
+uca1400_sinhala_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_ai_ci 253 0 0 Y 0 39 120
+uca1400_sinhala_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_ai_cs 253 0 0 Y 0 39 120
+uca1400_sinhala_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_as_ci 253 0 0 Y 0 39 120
+uca1400_sinhala_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_as_cs 253 0 0 Y 0 39 120
+uca1400_sinhala_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_ai_ci 253 0 0 Y 0 39 121
+uca1400_german2_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_ai_cs 253 0 0 Y 0 39 121
+uca1400_german2_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_as_ci 253 0 0 Y 0 39 121
+uca1400_german2_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_as_cs 253 0 0 Y 0 39 121
+uca1400_german2_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_ai_ci 253 0 0 Y 0 39 121
+uca1400_german2_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_ai_cs 253 0 0 Y 0 39 121
+uca1400_german2_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_as_ci 253 0 0 Y 0 39 121
+uca1400_german2_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_as_cs 253 0 0 Y 0 39 121
+uca1400_german2_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_ai_ci 253 0 0 Y 0 39 124
+uca1400_vietnamese_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_ai_cs 253 0 0 Y 0 39 124
+uca1400_vietnamese_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_as_ci 253 0 0 Y 0 39 124
+uca1400_vietnamese_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_as_cs 253 0 0 Y 0 39 124
+uca1400_vietnamese_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_ai_ci 253 0 0 Y 0 39 124
+uca1400_vietnamese_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_ai_cs 253 0 0 Y 0 39 124
+uca1400_vietnamese_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_as_ci 253 0 0 Y 0 39 124
+uca1400_vietnamese_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_as_cs 253 0 0 Y 0 39 124
+uca1400_vietnamese_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_ai_ci 253 0 0 Y 0 39 672
+uca1400_croatian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_ai_cs 253 0 0 Y 0 39 672
+uca1400_croatian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_as_ci 253 0 0 Y 0 39 672
+uca1400_croatian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_as_cs 253 0 0 Y 0 39 672
+uca1400_croatian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_ai_ci 253 0 0 Y 0 39 672
+uca1400_croatian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_ai_cs 253 0 0 Y 0 39 672
+uca1400_croatian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_as_ci 253 0 0 Y 0 39 672
+uca1400_croatian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_as_cs 253 0 0 Y 0 39 672
+uca1400_croatian_nopad_as_cs
+SET NAMES utf8;
+#
+# End of 10.9 tests
+#
diff --git a/mysql-test/main/ctype_utf16_uca.test b/mysql-test/main/ctype_utf16_uca.test
index 9dff7b10c16..0a03c4fa57b 100644
--- a/mysql-test/main/ctype_utf16_uca.test
+++ b/mysql-test/main/ctype_utf16_uca.test
@@ -268,7 +268,26 @@ INSERT INTO t1 (c) VALUES (1);
SELECT HEX(c) FROM t1;
DROP TABLE t1;
+SET NAMES utf8;
+
--enable_service_connection
--echo #
--echo # End of 10.2 tests
--echo #
+
+
+--echo #
+--echo # Start of 10.9 tests
+--echo #
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo # Collation IDs in the protocol
+--echo #
+
+SET @charset='utf16';
+--source include/ctype_uca1400_ids_using_convert.inc
+
+--echo #
+--echo # End of 10.9 tests
+--echo #
diff --git a/mysql-test/main/ctype_utf32_uca.result b/mysql-test/main/ctype_utf32_uca.result
index a960325afe9..5468beafd32 100644
--- a/mysql-test/main/ctype_utf32_uca.result
+++ b/mysql-test/main/ctype_utf32_uca.result
@@ -7973,6 +7973,585 @@ t1 CREATE TABLE `t1` (
`c2` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`c2`))
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
+SET NAMES utf8;
#
# End of 10.4 tests
#
+#
+# Start of 10.9 tests
+#
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+# Collation IDs in the protocol
+#
+SET @charset='utf32';
+FOR rec IN (SELECT COLLATION_NAME
+FROM INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY
+WHERE CHARACTER_SET_NAME=@charset
+AND COLLATION_NAME RLIKE 'uca1400'
+ ORDER BY ID)
+DO
+SET NAMES utf8mb4;
+SET character_set_results=NULL;
+EXECUTE IMMEDIATE CONCAT('SELECT CONVERT('''' USING ',@charset,')',
+' COLLATE ', rec.COLLATION_NAME,
+' AS ', rec.COLLATION_NAME,
+' LIMIT 0');
+END FOR;
+$$
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_ai_ci 253 0 0 Y 0 39 160
+uca1400_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_ai_cs 253 0 0 Y 0 39 160
+uca1400_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_as_ci 253 0 0 Y 0 39 160
+uca1400_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_as_cs 253 0 0 Y 0 39 160
+uca1400_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_ai_ci 253 0 0 Y 0 39 160
+uca1400_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_ai_cs 253 0 0 Y 0 39 160
+uca1400_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_as_ci 253 0 0 Y 0 39 160
+uca1400_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_nopad_as_cs 253 0 0 Y 0 39 160
+uca1400_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_ai_ci 253 0 0 Y 0 39 161
+uca1400_icelandic_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_ai_cs 253 0 0 Y 0 39 161
+uca1400_icelandic_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_as_ci 253 0 0 Y 0 39 161
+uca1400_icelandic_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_as_cs 253 0 0 Y 0 39 161
+uca1400_icelandic_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_ai_ci 253 0 0 Y 0 39 161
+uca1400_icelandic_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_ai_cs 253 0 0 Y 0 39 161
+uca1400_icelandic_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_as_ci 253 0 0 Y 0 39 161
+uca1400_icelandic_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_icelandic_nopad_as_cs 253 0 0 Y 0 39 161
+uca1400_icelandic_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_ai_ci 253 0 0 Y 0 39 162
+uca1400_latvian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_ai_cs 253 0 0 Y 0 39 162
+uca1400_latvian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_as_ci 253 0 0 Y 0 39 162
+uca1400_latvian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_as_cs 253 0 0 Y 0 39 162
+uca1400_latvian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_ai_ci 253 0 0 Y 0 39 162
+uca1400_latvian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_ai_cs 253 0 0 Y 0 39 162
+uca1400_latvian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_as_ci 253 0 0 Y 0 39 162
+uca1400_latvian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_latvian_nopad_as_cs 253 0 0 Y 0 39 162
+uca1400_latvian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_ai_ci 253 0 0 Y 0 39 163
+uca1400_romanian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_ai_cs 253 0 0 Y 0 39 163
+uca1400_romanian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_as_ci 253 0 0 Y 0 39 163
+uca1400_romanian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_as_cs 253 0 0 Y 0 39 163
+uca1400_romanian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_ai_ci 253 0 0 Y 0 39 163
+uca1400_romanian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_ai_cs 253 0 0 Y 0 39 163
+uca1400_romanian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_as_ci 253 0 0 Y 0 39 163
+uca1400_romanian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_romanian_nopad_as_cs 253 0 0 Y 0 39 163
+uca1400_romanian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_ai_ci 253 0 0 Y 0 39 164
+uca1400_slovenian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_ai_cs 253 0 0 Y 0 39 164
+uca1400_slovenian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_as_ci 253 0 0 Y 0 39 164
+uca1400_slovenian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_as_cs 253 0 0 Y 0 39 164
+uca1400_slovenian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_ai_ci 253 0 0 Y 0 39 164
+uca1400_slovenian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_ai_cs 253 0 0 Y 0 39 164
+uca1400_slovenian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_as_ci 253 0 0 Y 0 39 164
+uca1400_slovenian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovenian_nopad_as_cs 253 0 0 Y 0 39 164
+uca1400_slovenian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_ai_ci 253 0 0 Y 0 39 165
+uca1400_polish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_ai_cs 253 0 0 Y 0 39 165
+uca1400_polish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_as_ci 253 0 0 Y 0 39 165
+uca1400_polish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_as_cs 253 0 0 Y 0 39 165
+uca1400_polish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_ai_ci 253 0 0 Y 0 39 165
+uca1400_polish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_ai_cs 253 0 0 Y 0 39 165
+uca1400_polish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_as_ci 253 0 0 Y 0 39 165
+uca1400_polish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_polish_nopad_as_cs 253 0 0 Y 0 39 165
+uca1400_polish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_ai_ci 253 0 0 Y 0 39 166
+uca1400_estonian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_ai_cs 253 0 0 Y 0 39 166
+uca1400_estonian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_as_ci 253 0 0 Y 0 39 166
+uca1400_estonian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_as_cs 253 0 0 Y 0 39 166
+uca1400_estonian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_ai_ci 253 0 0 Y 0 39 166
+uca1400_estonian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_ai_cs 253 0 0 Y 0 39 166
+uca1400_estonian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_as_ci 253 0 0 Y 0 39 166
+uca1400_estonian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_estonian_nopad_as_cs 253 0 0 Y 0 39 166
+uca1400_estonian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_ai_ci 253 0 0 Y 0 39 167
+uca1400_spanish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_ai_cs 253 0 0 Y 0 39 167
+uca1400_spanish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_as_ci 253 0 0 Y 0 39 167
+uca1400_spanish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_as_cs 253 0 0 Y 0 39 167
+uca1400_spanish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_ai_ci 253 0 0 Y 0 39 167
+uca1400_spanish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_ai_cs 253 0 0 Y 0 39 167
+uca1400_spanish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_as_ci 253 0 0 Y 0 39 167
+uca1400_spanish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish_nopad_as_cs 253 0 0 Y 0 39 167
+uca1400_spanish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_ai_ci 253 0 0 Y 0 39 168
+uca1400_swedish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_ai_cs 253 0 0 Y 0 39 168
+uca1400_swedish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_as_ci 253 0 0 Y 0 39 168
+uca1400_swedish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_as_cs 253 0 0 Y 0 39 168
+uca1400_swedish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_ai_ci 253 0 0 Y 0 39 168
+uca1400_swedish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_ai_cs 253 0 0 Y 0 39 168
+uca1400_swedish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_as_ci 253 0 0 Y 0 39 168
+uca1400_swedish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_swedish_nopad_as_cs 253 0 0 Y 0 39 168
+uca1400_swedish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_ai_ci 253 0 0 Y 0 39 169
+uca1400_turkish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_ai_cs 253 0 0 Y 0 39 169
+uca1400_turkish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_as_ci 253 0 0 Y 0 39 169
+uca1400_turkish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_as_cs 253 0 0 Y 0 39 169
+uca1400_turkish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_ai_ci 253 0 0 Y 0 39 169
+uca1400_turkish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_ai_cs 253 0 0 Y 0 39 169
+uca1400_turkish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_as_ci 253 0 0 Y 0 39 169
+uca1400_turkish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_turkish_nopad_as_cs 253 0 0 Y 0 39 169
+uca1400_turkish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_ai_ci 253 0 0 Y 0 39 170
+uca1400_czech_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_ai_cs 253 0 0 Y 0 39 170
+uca1400_czech_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_as_ci 253 0 0 Y 0 39 170
+uca1400_czech_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_as_cs 253 0 0 Y 0 39 170
+uca1400_czech_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_ai_ci 253 0 0 Y 0 39 170
+uca1400_czech_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_ai_cs 253 0 0 Y 0 39 170
+uca1400_czech_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_as_ci 253 0 0 Y 0 39 170
+uca1400_czech_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_czech_nopad_as_cs 253 0 0 Y 0 39 170
+uca1400_czech_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_ai_ci 253 0 0 Y 0 39 171
+uca1400_danish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_ai_cs 253 0 0 Y 0 39 171
+uca1400_danish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_as_ci 253 0 0 Y 0 39 171
+uca1400_danish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_as_cs 253 0 0 Y 0 39 171
+uca1400_danish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_ai_ci 253 0 0 Y 0 39 171
+uca1400_danish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_ai_cs 253 0 0 Y 0 39 171
+uca1400_danish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_as_ci 253 0 0 Y 0 39 171
+uca1400_danish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_danish_nopad_as_cs 253 0 0 Y 0 39 171
+uca1400_danish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_ai_ci 253 0 0 Y 0 39 172
+uca1400_lithuanian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_ai_cs 253 0 0 Y 0 39 172
+uca1400_lithuanian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_as_ci 253 0 0 Y 0 39 172
+uca1400_lithuanian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_as_cs 253 0 0 Y 0 39 172
+uca1400_lithuanian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_ai_ci 253 0 0 Y 0 39 172
+uca1400_lithuanian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_ai_cs 253 0 0 Y 0 39 172
+uca1400_lithuanian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_as_ci 253 0 0 Y 0 39 172
+uca1400_lithuanian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_lithuanian_nopad_as_cs 253 0 0 Y 0 39 172
+uca1400_lithuanian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_ai_ci 253 0 0 Y 0 39 173
+uca1400_slovak_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_ai_cs 253 0 0 Y 0 39 173
+uca1400_slovak_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_as_ci 253 0 0 Y 0 39 173
+uca1400_slovak_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_as_cs 253 0 0 Y 0 39 173
+uca1400_slovak_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_ai_ci 253 0 0 Y 0 39 173
+uca1400_slovak_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_ai_cs 253 0 0 Y 0 39 173
+uca1400_slovak_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_as_ci 253 0 0 Y 0 39 173
+uca1400_slovak_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_slovak_nopad_as_cs 253 0 0 Y 0 39 173
+uca1400_slovak_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_ai_ci 253 0 0 Y 0 39 174
+uca1400_spanish2_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_ai_cs 253 0 0 Y 0 39 174
+uca1400_spanish2_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_as_ci 253 0 0 Y 0 39 174
+uca1400_spanish2_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_as_cs 253 0 0 Y 0 39 174
+uca1400_spanish2_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_ai_ci 253 0 0 Y 0 39 174
+uca1400_spanish2_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_ai_cs 253 0 0 Y 0 39 174
+uca1400_spanish2_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_as_ci 253 0 0 Y 0 39 174
+uca1400_spanish2_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_spanish2_nopad_as_cs 253 0 0 Y 0 39 174
+uca1400_spanish2_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_ai_ci 253 0 0 Y 0 39 175
+uca1400_roman_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_ai_cs 253 0 0 Y 0 39 175
+uca1400_roman_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_as_ci 253 0 0 Y 0 39 175
+uca1400_roman_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_as_cs 253 0 0 Y 0 39 175
+uca1400_roman_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_ai_ci 253 0 0 Y 0 39 175
+uca1400_roman_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_ai_cs 253 0 0 Y 0 39 175
+uca1400_roman_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_as_ci 253 0 0 Y 0 39 175
+uca1400_roman_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_roman_nopad_as_cs 253 0 0 Y 0 39 175
+uca1400_roman_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_ai_ci 253 0 0 Y 0 39 176
+uca1400_persian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_ai_cs 253 0 0 Y 0 39 176
+uca1400_persian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_as_ci 253 0 0 Y 0 39 176
+uca1400_persian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_as_cs 253 0 0 Y 0 39 176
+uca1400_persian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_ai_ci 253 0 0 Y 0 39 176
+uca1400_persian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_ai_cs 253 0 0 Y 0 39 176
+uca1400_persian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_as_ci 253 0 0 Y 0 39 176
+uca1400_persian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_persian_nopad_as_cs 253 0 0 Y 0 39 176
+uca1400_persian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_ai_ci 253 0 0 Y 0 39 177
+uca1400_esperanto_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_ai_cs 253 0 0 Y 0 39 177
+uca1400_esperanto_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_as_ci 253 0 0 Y 0 39 177
+uca1400_esperanto_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_as_cs 253 0 0 Y 0 39 177
+uca1400_esperanto_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_ai_ci 253 0 0 Y 0 39 177
+uca1400_esperanto_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_ai_cs 253 0 0 Y 0 39 177
+uca1400_esperanto_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_as_ci 253 0 0 Y 0 39 177
+uca1400_esperanto_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_esperanto_nopad_as_cs 253 0 0 Y 0 39 177
+uca1400_esperanto_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_ai_ci 253 0 0 Y 0 39 178
+uca1400_hungarian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_ai_cs 253 0 0 Y 0 39 178
+uca1400_hungarian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_as_ci 253 0 0 Y 0 39 178
+uca1400_hungarian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_as_cs 253 0 0 Y 0 39 178
+uca1400_hungarian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_ai_ci 253 0 0 Y 0 39 178
+uca1400_hungarian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_ai_cs 253 0 0 Y 0 39 178
+uca1400_hungarian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_as_ci 253 0 0 Y 0 39 178
+uca1400_hungarian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_hungarian_nopad_as_cs 253 0 0 Y 0 39 178
+uca1400_hungarian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_ai_ci 253 0 0 Y 0 39 179
+uca1400_sinhala_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_ai_cs 253 0 0 Y 0 39 179
+uca1400_sinhala_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_as_ci 253 0 0 Y 0 39 179
+uca1400_sinhala_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_as_cs 253 0 0 Y 0 39 179
+uca1400_sinhala_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_ai_ci 253 0 0 Y 0 39 179
+uca1400_sinhala_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_ai_cs 253 0 0 Y 0 39 179
+uca1400_sinhala_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_as_ci 253 0 0 Y 0 39 179
+uca1400_sinhala_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_sinhala_nopad_as_cs 253 0 0 Y 0 39 179
+uca1400_sinhala_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_ai_ci 253 0 0 Y 0 39 180
+uca1400_german2_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_ai_cs 253 0 0 Y 0 39 180
+uca1400_german2_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_as_ci 253 0 0 Y 0 39 180
+uca1400_german2_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_as_cs 253 0 0 Y 0 39 180
+uca1400_german2_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_ai_ci 253 0 0 Y 0 39 180
+uca1400_german2_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_ai_cs 253 0 0 Y 0 39 180
+uca1400_german2_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_as_ci 253 0 0 Y 0 39 180
+uca1400_german2_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_german2_nopad_as_cs 253 0 0 Y 0 39 180
+uca1400_german2_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_ai_ci 253 0 0 Y 0 39 183
+uca1400_vietnamese_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_ai_cs 253 0 0 Y 0 39 183
+uca1400_vietnamese_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_as_ci 253 0 0 Y 0 39 183
+uca1400_vietnamese_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_as_cs 253 0 0 Y 0 39 183
+uca1400_vietnamese_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_ai_ci 253 0 0 Y 0 39 183
+uca1400_vietnamese_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_ai_cs 253 0 0 Y 0 39 183
+uca1400_vietnamese_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_as_ci 253 0 0 Y 0 39 183
+uca1400_vietnamese_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_vietnamese_nopad_as_cs 253 0 0 Y 0 39 183
+uca1400_vietnamese_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_ai_ci 253 0 0 Y 0 39 736
+uca1400_croatian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_ai_cs 253 0 0 Y 0 39 736
+uca1400_croatian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_as_ci 253 0 0 Y 0 39 736
+uca1400_croatian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_as_cs 253 0 0 Y 0 39 736
+uca1400_croatian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_ai_ci 253 0 0 Y 0 39 736
+uca1400_croatian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_ai_cs 253 0 0 Y 0 39 736
+uca1400_croatian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_as_ci 253 0 0 Y 0 39 736
+uca1400_croatian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def uca1400_croatian_nopad_as_cs 253 0 0 Y 0 39 736
+uca1400_croatian_nopad_as_cs
+SET NAMES utf8;
+#
+# End of 10.9 tests
+#
diff --git a/mysql-test/main/ctype_utf32_uca.test b/mysql-test/main/ctype_utf32_uca.test
index 658a03abacb..dd60feaf8e2 100644
--- a/mysql-test/main/ctype_utf32_uca.test
+++ b/mysql-test/main/ctype_utf32_uca.test
@@ -323,7 +323,25 @@ SET @@SESSION.collation_connection=utf32_estonian_ci;
CREATE TABLE t1(c1 SET('a') COLLATE 'Binary',c2 JSON);
SHOW CREATE TABLE t1;
DROP TABLE t1;
+SET NAMES utf8;
--echo #
--echo # End of 10.4 tests
--echo #
+
+
+--echo #
+--echo # Start of 10.9 tests
+--echo #
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo # Collation IDs in the protocol
+--echo #
+
+SET @charset='utf32';
+--source include/ctype_uca1400_ids_using_convert.inc
+
+--echo #
+--echo # End of 10.9 tests
+--echo #
diff --git a/mysql-test/main/ctype_utf8.result b/mysql-test/main/ctype_utf8.result
index 2d52f999698..5986ea3ac81 100644
--- a/mysql-test/main/ctype_utf8.result
+++ b/mysql-test/main/ctype_utf8.result
@@ -6130,7 +6130,7 @@ DROP TABLE t1, t2;
# MDEV-8630 Datetime value dropped in "INSERT ... SELECT ... ON DUPLICATE KEY"
#
SET NAMES utf8;
-CREATE TABLE t1 (id2 int, ts timestamp);
+CREATE TABLE t1 (id2 int, ts timestamp not null);
INSERT INTO t1 VALUES (1,'2012-06-11 15:17:34'),(2,'2012-06-11 15:18:24');
CREATE TABLE t2 AS SELECT
COALESCE(ts, 0) AS c0,
diff --git a/mysql-test/main/ctype_utf8.test b/mysql-test/main/ctype_utf8.test
index d96abb3e43b..c27dc97a69f 100644
--- a/mysql-test/main/ctype_utf8.test
+++ b/mysql-test/main/ctype_utf8.test
@@ -1669,7 +1669,7 @@ DROP TABLE t1, t2;
--echo # MDEV-8630 Datetime value dropped in "INSERT ... SELECT ... ON DUPLICATE KEY"
--echo #
SET NAMES utf8;
-CREATE TABLE t1 (id2 int, ts timestamp);
+CREATE TABLE t1 (id2 int, ts timestamp not null);
INSERT INTO t1 VALUES (1,'2012-06-11 15:17:34'),(2,'2012-06-11 15:18:24');
CREATE TABLE t2 AS SELECT
COALESCE(ts, 0) AS c0,
diff --git a/mysql-test/main/ctype_utf8_uca.result b/mysql-test/main/ctype_utf8_uca.result
index b1be3c23bda..700d4c40193 100644
--- a/mysql-test/main/ctype_utf8_uca.result
+++ b/mysql-test/main/ctype_utf8_uca.result
@@ -587,3 +587,775 @@ DROP TABLE t1;
#
# End of 10.2 tests
#
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+# Collation IDs in the protocol
+#
+SET NAMES utf8mb3;
+SET @charset=(SELECT @@character_set_client);
+FOR rec IN (SELECT COLLATION_NAME
+FROM INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY
+WHERE CHARACTER_SET_NAME=@charset
+AND COLLATION_NAME RLIKE 'uca1400'
+ ORDER BY ID)
+DO
+EXECUTE IMMEDIATE CONCAT('SET NAMES ',@charset,' COLLATE ', rec.COLLATION_NAME);
+SELECT rec.COLLATION_NAME;
+END FOR;
+$$
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 13 Y 0 0 192
+rec.COLLATION_NAME
+uca1400_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 13 Y 0 0 192
+rec.COLLATION_NAME
+uca1400_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 13 Y 0 0 192
+rec.COLLATION_NAME
+uca1400_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 13 Y 0 0 192
+rec.COLLATION_NAME
+uca1400_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 192
+rec.COLLATION_NAME
+uca1400_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 192
+rec.COLLATION_NAME
+uca1400_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 192
+rec.COLLATION_NAME
+uca1400_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 192
+rec.COLLATION_NAME
+uca1400_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 193
+rec.COLLATION_NAME
+uca1400_icelandic_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 193
+rec.COLLATION_NAME
+uca1400_icelandic_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 193
+rec.COLLATION_NAME
+uca1400_icelandic_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 193
+rec.COLLATION_NAME
+uca1400_icelandic_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 193
+rec.COLLATION_NAME
+uca1400_icelandic_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 193
+rec.COLLATION_NAME
+uca1400_icelandic_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 193
+rec.COLLATION_NAME
+uca1400_icelandic_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 193
+rec.COLLATION_NAME
+uca1400_icelandic_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 194
+rec.COLLATION_NAME
+uca1400_latvian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 194
+rec.COLLATION_NAME
+uca1400_latvian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 194
+rec.COLLATION_NAME
+uca1400_latvian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 194
+rec.COLLATION_NAME
+uca1400_latvian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 194
+rec.COLLATION_NAME
+uca1400_latvian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 194
+rec.COLLATION_NAME
+uca1400_latvian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 194
+rec.COLLATION_NAME
+uca1400_latvian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 194
+rec.COLLATION_NAME
+uca1400_latvian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 195
+rec.COLLATION_NAME
+uca1400_romanian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 195
+rec.COLLATION_NAME
+uca1400_romanian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 195
+rec.COLLATION_NAME
+uca1400_romanian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 195
+rec.COLLATION_NAME
+uca1400_romanian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 195
+rec.COLLATION_NAME
+uca1400_romanian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 195
+rec.COLLATION_NAME
+uca1400_romanian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 195
+rec.COLLATION_NAME
+uca1400_romanian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 195
+rec.COLLATION_NAME
+uca1400_romanian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 196
+rec.COLLATION_NAME
+uca1400_slovenian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 196
+rec.COLLATION_NAME
+uca1400_slovenian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 196
+rec.COLLATION_NAME
+uca1400_slovenian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 196
+rec.COLLATION_NAME
+uca1400_slovenian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 196
+rec.COLLATION_NAME
+uca1400_slovenian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 196
+rec.COLLATION_NAME
+uca1400_slovenian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 196
+rec.COLLATION_NAME
+uca1400_slovenian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 196
+rec.COLLATION_NAME
+uca1400_slovenian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 197
+rec.COLLATION_NAME
+uca1400_polish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 197
+rec.COLLATION_NAME
+uca1400_polish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 197
+rec.COLLATION_NAME
+uca1400_polish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 197
+rec.COLLATION_NAME
+uca1400_polish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 197
+rec.COLLATION_NAME
+uca1400_polish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 197
+rec.COLLATION_NAME
+uca1400_polish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 197
+rec.COLLATION_NAME
+uca1400_polish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 197
+rec.COLLATION_NAME
+uca1400_polish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 198
+rec.COLLATION_NAME
+uca1400_estonian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 198
+rec.COLLATION_NAME
+uca1400_estonian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 198
+rec.COLLATION_NAME
+uca1400_estonian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 198
+rec.COLLATION_NAME
+uca1400_estonian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 198
+rec.COLLATION_NAME
+uca1400_estonian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 198
+rec.COLLATION_NAME
+uca1400_estonian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 198
+rec.COLLATION_NAME
+uca1400_estonian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 198
+rec.COLLATION_NAME
+uca1400_estonian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 199
+rec.COLLATION_NAME
+uca1400_spanish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 199
+rec.COLLATION_NAME
+uca1400_spanish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 199
+rec.COLLATION_NAME
+uca1400_spanish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 199
+rec.COLLATION_NAME
+uca1400_spanish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 199
+rec.COLLATION_NAME
+uca1400_spanish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 199
+rec.COLLATION_NAME
+uca1400_spanish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 199
+rec.COLLATION_NAME
+uca1400_spanish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 199
+rec.COLLATION_NAME
+uca1400_spanish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 200
+rec.COLLATION_NAME
+uca1400_swedish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 200
+rec.COLLATION_NAME
+uca1400_swedish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 200
+rec.COLLATION_NAME
+uca1400_swedish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 200
+rec.COLLATION_NAME
+uca1400_swedish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 200
+rec.COLLATION_NAME
+uca1400_swedish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 200
+rec.COLLATION_NAME
+uca1400_swedish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 200
+rec.COLLATION_NAME
+uca1400_swedish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 200
+rec.COLLATION_NAME
+uca1400_swedish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 201
+rec.COLLATION_NAME
+uca1400_turkish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 201
+rec.COLLATION_NAME
+uca1400_turkish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 201
+rec.COLLATION_NAME
+uca1400_turkish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 201
+rec.COLLATION_NAME
+uca1400_turkish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 201
+rec.COLLATION_NAME
+uca1400_turkish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 201
+rec.COLLATION_NAME
+uca1400_turkish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 201
+rec.COLLATION_NAME
+uca1400_turkish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 201
+rec.COLLATION_NAME
+uca1400_turkish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 202
+rec.COLLATION_NAME
+uca1400_czech_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 202
+rec.COLLATION_NAME
+uca1400_czech_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 202
+rec.COLLATION_NAME
+uca1400_czech_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 202
+rec.COLLATION_NAME
+uca1400_czech_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 202
+rec.COLLATION_NAME
+uca1400_czech_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 202
+rec.COLLATION_NAME
+uca1400_czech_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 202
+rec.COLLATION_NAME
+uca1400_czech_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 202
+rec.COLLATION_NAME
+uca1400_czech_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 203
+rec.COLLATION_NAME
+uca1400_danish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 203
+rec.COLLATION_NAME
+uca1400_danish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 203
+rec.COLLATION_NAME
+uca1400_danish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 203
+rec.COLLATION_NAME
+uca1400_danish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 203
+rec.COLLATION_NAME
+uca1400_danish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 203
+rec.COLLATION_NAME
+uca1400_danish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 203
+rec.COLLATION_NAME
+uca1400_danish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 203
+rec.COLLATION_NAME
+uca1400_danish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 204
+rec.COLLATION_NAME
+uca1400_lithuanian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 204
+rec.COLLATION_NAME
+uca1400_lithuanian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 204
+rec.COLLATION_NAME
+uca1400_lithuanian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 204
+rec.COLLATION_NAME
+uca1400_lithuanian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 204
+rec.COLLATION_NAME
+uca1400_lithuanian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 204
+rec.COLLATION_NAME
+uca1400_lithuanian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 204
+rec.COLLATION_NAME
+uca1400_lithuanian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 204
+rec.COLLATION_NAME
+uca1400_lithuanian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 205
+rec.COLLATION_NAME
+uca1400_slovak_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 205
+rec.COLLATION_NAME
+uca1400_slovak_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 205
+rec.COLLATION_NAME
+uca1400_slovak_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 20 Y 0 0 205
+rec.COLLATION_NAME
+uca1400_slovak_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 205
+rec.COLLATION_NAME
+uca1400_slovak_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 205
+rec.COLLATION_NAME
+uca1400_slovak_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 205
+rec.COLLATION_NAME
+uca1400_slovak_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 26 Y 0 0 205
+rec.COLLATION_NAME
+uca1400_slovak_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 206
+rec.COLLATION_NAME
+uca1400_spanish2_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 206
+rec.COLLATION_NAME
+uca1400_spanish2_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 206
+rec.COLLATION_NAME
+uca1400_spanish2_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 206
+rec.COLLATION_NAME
+uca1400_spanish2_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 206
+rec.COLLATION_NAME
+uca1400_spanish2_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 206
+rec.COLLATION_NAME
+uca1400_spanish2_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 206
+rec.COLLATION_NAME
+uca1400_spanish2_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 206
+rec.COLLATION_NAME
+uca1400_spanish2_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 207
+rec.COLLATION_NAME
+uca1400_roman_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 207
+rec.COLLATION_NAME
+uca1400_roman_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 207
+rec.COLLATION_NAME
+uca1400_roman_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 19 Y 0 0 207
+rec.COLLATION_NAME
+uca1400_roman_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 207
+rec.COLLATION_NAME
+uca1400_roman_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 207
+rec.COLLATION_NAME
+uca1400_roman_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 207
+rec.COLLATION_NAME
+uca1400_roman_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 25 Y 0 0 207
+rec.COLLATION_NAME
+uca1400_roman_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 208
+rec.COLLATION_NAME
+uca1400_persian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 208
+rec.COLLATION_NAME
+uca1400_persian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 208
+rec.COLLATION_NAME
+uca1400_persian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 208
+rec.COLLATION_NAME
+uca1400_persian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 208
+rec.COLLATION_NAME
+uca1400_persian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 208
+rec.COLLATION_NAME
+uca1400_persian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 208
+rec.COLLATION_NAME
+uca1400_persian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 208
+rec.COLLATION_NAME
+uca1400_persian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 209
+rec.COLLATION_NAME
+uca1400_esperanto_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 209
+rec.COLLATION_NAME
+uca1400_esperanto_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 209
+rec.COLLATION_NAME
+uca1400_esperanto_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 209
+rec.COLLATION_NAME
+uca1400_esperanto_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 209
+rec.COLLATION_NAME
+uca1400_esperanto_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 209
+rec.COLLATION_NAME
+uca1400_esperanto_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 209
+rec.COLLATION_NAME
+uca1400_esperanto_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 209
+rec.COLLATION_NAME
+uca1400_esperanto_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 210
+rec.COLLATION_NAME
+uca1400_hungarian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 210
+rec.COLLATION_NAME
+uca1400_hungarian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 210
+rec.COLLATION_NAME
+uca1400_hungarian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 23 Y 0 0 210
+rec.COLLATION_NAME
+uca1400_hungarian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 210
+rec.COLLATION_NAME
+uca1400_hungarian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 210
+rec.COLLATION_NAME
+uca1400_hungarian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 210
+rec.COLLATION_NAME
+uca1400_hungarian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 29 Y 0 0 210
+rec.COLLATION_NAME
+uca1400_hungarian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 211
+rec.COLLATION_NAME
+uca1400_sinhala_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 211
+rec.COLLATION_NAME
+uca1400_sinhala_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 211
+rec.COLLATION_NAME
+uca1400_sinhala_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 211
+rec.COLLATION_NAME
+uca1400_sinhala_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 211
+rec.COLLATION_NAME
+uca1400_sinhala_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 211
+rec.COLLATION_NAME
+uca1400_sinhala_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 211
+rec.COLLATION_NAME
+uca1400_sinhala_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 211
+rec.COLLATION_NAME
+uca1400_sinhala_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 212
+rec.COLLATION_NAME
+uca1400_german2_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 212
+rec.COLLATION_NAME
+uca1400_german2_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 212
+rec.COLLATION_NAME
+uca1400_german2_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 21 Y 0 0 212
+rec.COLLATION_NAME
+uca1400_german2_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 212
+rec.COLLATION_NAME
+uca1400_german2_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 212
+rec.COLLATION_NAME
+uca1400_german2_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 212
+rec.COLLATION_NAME
+uca1400_german2_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 27 Y 0 0 212
+rec.COLLATION_NAME
+uca1400_german2_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 215
+rec.COLLATION_NAME
+uca1400_vietnamese_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 215
+rec.COLLATION_NAME
+uca1400_vietnamese_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 215
+rec.COLLATION_NAME
+uca1400_vietnamese_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 24 Y 0 0 215
+rec.COLLATION_NAME
+uca1400_vietnamese_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 215
+rec.COLLATION_NAME
+uca1400_vietnamese_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 215
+rec.COLLATION_NAME
+uca1400_vietnamese_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 215
+rec.COLLATION_NAME
+uca1400_vietnamese_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 30 Y 0 0 215
+rec.COLLATION_NAME
+uca1400_vietnamese_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 576
+rec.COLLATION_NAME
+uca1400_croatian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 576
+rec.COLLATION_NAME
+uca1400_croatian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 576
+rec.COLLATION_NAME
+uca1400_croatian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 22 Y 0 0 576
+rec.COLLATION_NAME
+uca1400_croatian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 576
+rec.COLLATION_NAME
+uca1400_croatian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 576
+rec.COLLATION_NAME
+uca1400_croatian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 576
+rec.COLLATION_NAME
+uca1400_croatian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 192 28 Y 0 0 576
+rec.COLLATION_NAME
+uca1400_croatian_nopad_as_cs
+#
+# MDEV-29776 collation_connection and db_collation are too short in mysql.proc and mysql.event
+#
+SET NAMES 'utf8mb3' COLLATE 'utf8mb3_uca1400_swedish_nopad_ai_ci';
+CREATE FUNCTION f1() RETURNS INT RETURN 1;
+SELECT length(collation_connection), collation_connection
+FROM mysql.proc WHERE db='test' AND name='f1';
+length(collation_connection) collation_connection
+35 utf8mb3_uca1400_swedish_nopad_ai_ci
+SELECT f1();
+f1()
+1
+DROP FUNCTION f1;
+SET NAMES utf8mb3;
+#
+# End of 10.10 tests
+#
diff --git a/mysql-test/main/ctype_utf8_uca.test b/mysql-test/main/ctype_utf8_uca.test
index 0879b4d2810..6ac5060a976 100644
--- a/mysql-test/main/ctype_utf8_uca.test
+++ b/mysql-test/main/ctype_utf8_uca.test
@@ -21,3 +21,33 @@ SET NAMES utf8 COLLATE utf8_unicode_nopad_ci;
--echo #
--echo # End of 10.2 tests
--echo #
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo # Collation IDs in the protocol
+--echo #
+
+SET NAMES utf8mb3;
+SET @charset=(SELECT @@character_set_client);
+--source include/ctype_uca1400_ids_using_set_names.inc
+
+--echo #
+--echo # MDEV-29776 collation_connection and db_collation are too short in mysql.proc and mysql.event
+--echo #
+
+SET NAMES 'utf8mb3' COLLATE 'utf8mb3_uca1400_swedish_nopad_ai_ci';
+CREATE FUNCTION f1() RETURNS INT RETURN 1;
+SELECT length(collation_connection), collation_connection
+FROM mysql.proc WHERE db='test' AND name='f1';
+SELECT f1();
+DROP FUNCTION f1;
+SET NAMES utf8mb3;
+
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/mysql-test/main/ctype_utf8mb4.test b/mysql-test/main/ctype_utf8mb4.test
index 200a205bd96..46a9c14dec0 100644
--- a/mysql-test/main/ctype_utf8mb4.test
+++ b/mysql-test/main/ctype_utf8mb4.test
@@ -2112,4 +2112,3 @@ DROP TABLE t1;
--echo #
--echo # End of 10.6 tests
--echo #
-
diff --git a/mysql-test/main/ctype_utf8mb4_uca.result b/mysql-test/main/ctype_utf8mb4_uca.result
index 8b19412a69b..658e84fa644 100644
--- a/mysql-test/main/ctype_utf8mb4_uca.result
+++ b/mysql-test/main/ctype_utf8mb4_uca.result
@@ -6605,3 +6605,4608 @@ SET NAMES utf8mb4;
#
# End of 10.2 tests
#
+#
+# End of 10.9 tests
+#
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+# Collation IDs in the protocol
+#
+SET NAMES utf8mb4;
+SET @charset=(SELECT @@character_set_client);
+FOR rec IN (SELECT COLLATION_NAME
+FROM INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY
+WHERE CHARACTER_SET_NAME=@charset
+AND COLLATION_NAME RLIKE 'uca1400'
+ ORDER BY ID)
+DO
+EXECUTE IMMEDIATE CONCAT('SET NAMES ',@charset,' COLLATE ', rec.COLLATION_NAME);
+SELECT rec.COLLATION_NAME;
+END FOR;
+$$
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 13 Y 0 0 224
+rec.COLLATION_NAME
+uca1400_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 13 Y 0 0 224
+rec.COLLATION_NAME
+uca1400_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 13 Y 0 0 224
+rec.COLLATION_NAME
+uca1400_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 13 Y 0 0 224
+rec.COLLATION_NAME
+uca1400_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 224
+rec.COLLATION_NAME
+uca1400_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 224
+rec.COLLATION_NAME
+uca1400_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 224
+rec.COLLATION_NAME
+uca1400_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 224
+rec.COLLATION_NAME
+uca1400_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 225
+rec.COLLATION_NAME
+uca1400_icelandic_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 225
+rec.COLLATION_NAME
+uca1400_icelandic_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 225
+rec.COLLATION_NAME
+uca1400_icelandic_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 225
+rec.COLLATION_NAME
+uca1400_icelandic_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 225
+rec.COLLATION_NAME
+uca1400_icelandic_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 225
+rec.COLLATION_NAME
+uca1400_icelandic_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 225
+rec.COLLATION_NAME
+uca1400_icelandic_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 225
+rec.COLLATION_NAME
+uca1400_icelandic_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 226
+rec.COLLATION_NAME
+uca1400_latvian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 226
+rec.COLLATION_NAME
+uca1400_latvian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 226
+rec.COLLATION_NAME
+uca1400_latvian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 226
+rec.COLLATION_NAME
+uca1400_latvian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 226
+rec.COLLATION_NAME
+uca1400_latvian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 226
+rec.COLLATION_NAME
+uca1400_latvian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 226
+rec.COLLATION_NAME
+uca1400_latvian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 226
+rec.COLLATION_NAME
+uca1400_latvian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 227
+rec.COLLATION_NAME
+uca1400_romanian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 227
+rec.COLLATION_NAME
+uca1400_romanian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 227
+rec.COLLATION_NAME
+uca1400_romanian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 227
+rec.COLLATION_NAME
+uca1400_romanian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 227
+rec.COLLATION_NAME
+uca1400_romanian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 227
+rec.COLLATION_NAME
+uca1400_romanian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 227
+rec.COLLATION_NAME
+uca1400_romanian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 227
+rec.COLLATION_NAME
+uca1400_romanian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 228
+rec.COLLATION_NAME
+uca1400_slovenian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 228
+rec.COLLATION_NAME
+uca1400_slovenian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 228
+rec.COLLATION_NAME
+uca1400_slovenian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 228
+rec.COLLATION_NAME
+uca1400_slovenian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 228
+rec.COLLATION_NAME
+uca1400_slovenian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 228
+rec.COLLATION_NAME
+uca1400_slovenian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 228
+rec.COLLATION_NAME
+uca1400_slovenian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 228
+rec.COLLATION_NAME
+uca1400_slovenian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 229
+rec.COLLATION_NAME
+uca1400_polish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 229
+rec.COLLATION_NAME
+uca1400_polish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 229
+rec.COLLATION_NAME
+uca1400_polish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 229
+rec.COLLATION_NAME
+uca1400_polish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 229
+rec.COLLATION_NAME
+uca1400_polish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 229
+rec.COLLATION_NAME
+uca1400_polish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 229
+rec.COLLATION_NAME
+uca1400_polish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 229
+rec.COLLATION_NAME
+uca1400_polish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 230
+rec.COLLATION_NAME
+uca1400_estonian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 230
+rec.COLLATION_NAME
+uca1400_estonian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 230
+rec.COLLATION_NAME
+uca1400_estonian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 230
+rec.COLLATION_NAME
+uca1400_estonian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 230
+rec.COLLATION_NAME
+uca1400_estonian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 230
+rec.COLLATION_NAME
+uca1400_estonian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 230
+rec.COLLATION_NAME
+uca1400_estonian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 230
+rec.COLLATION_NAME
+uca1400_estonian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 231
+rec.COLLATION_NAME
+uca1400_spanish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 231
+rec.COLLATION_NAME
+uca1400_spanish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 231
+rec.COLLATION_NAME
+uca1400_spanish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 231
+rec.COLLATION_NAME
+uca1400_spanish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 231
+rec.COLLATION_NAME
+uca1400_spanish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 231
+rec.COLLATION_NAME
+uca1400_spanish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 231
+rec.COLLATION_NAME
+uca1400_spanish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 231
+rec.COLLATION_NAME
+uca1400_spanish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 232
+rec.COLLATION_NAME
+uca1400_swedish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 232
+rec.COLLATION_NAME
+uca1400_swedish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 232
+rec.COLLATION_NAME
+uca1400_swedish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 232
+rec.COLLATION_NAME
+uca1400_swedish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 232
+rec.COLLATION_NAME
+uca1400_swedish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 232
+rec.COLLATION_NAME
+uca1400_swedish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 232
+rec.COLLATION_NAME
+uca1400_swedish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 232
+rec.COLLATION_NAME
+uca1400_swedish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 233
+rec.COLLATION_NAME
+uca1400_turkish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 233
+rec.COLLATION_NAME
+uca1400_turkish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 233
+rec.COLLATION_NAME
+uca1400_turkish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 233
+rec.COLLATION_NAME
+uca1400_turkish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 233
+rec.COLLATION_NAME
+uca1400_turkish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 233
+rec.COLLATION_NAME
+uca1400_turkish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 233
+rec.COLLATION_NAME
+uca1400_turkish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 233
+rec.COLLATION_NAME
+uca1400_turkish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 234
+rec.COLLATION_NAME
+uca1400_czech_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 234
+rec.COLLATION_NAME
+uca1400_czech_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 234
+rec.COLLATION_NAME
+uca1400_czech_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 234
+rec.COLLATION_NAME
+uca1400_czech_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 234
+rec.COLLATION_NAME
+uca1400_czech_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 234
+rec.COLLATION_NAME
+uca1400_czech_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 234
+rec.COLLATION_NAME
+uca1400_czech_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 234
+rec.COLLATION_NAME
+uca1400_czech_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 235
+rec.COLLATION_NAME
+uca1400_danish_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 235
+rec.COLLATION_NAME
+uca1400_danish_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 235
+rec.COLLATION_NAME
+uca1400_danish_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 235
+rec.COLLATION_NAME
+uca1400_danish_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 235
+rec.COLLATION_NAME
+uca1400_danish_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 235
+rec.COLLATION_NAME
+uca1400_danish_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 235
+rec.COLLATION_NAME
+uca1400_danish_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 235
+rec.COLLATION_NAME
+uca1400_danish_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 236
+rec.COLLATION_NAME
+uca1400_lithuanian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 236
+rec.COLLATION_NAME
+uca1400_lithuanian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 236
+rec.COLLATION_NAME
+uca1400_lithuanian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 236
+rec.COLLATION_NAME
+uca1400_lithuanian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 236
+rec.COLLATION_NAME
+uca1400_lithuanian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 236
+rec.COLLATION_NAME
+uca1400_lithuanian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 236
+rec.COLLATION_NAME
+uca1400_lithuanian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 236
+rec.COLLATION_NAME
+uca1400_lithuanian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 237
+rec.COLLATION_NAME
+uca1400_slovak_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 237
+rec.COLLATION_NAME
+uca1400_slovak_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 237
+rec.COLLATION_NAME
+uca1400_slovak_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 20 Y 0 0 237
+rec.COLLATION_NAME
+uca1400_slovak_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 237
+rec.COLLATION_NAME
+uca1400_slovak_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 237
+rec.COLLATION_NAME
+uca1400_slovak_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 237
+rec.COLLATION_NAME
+uca1400_slovak_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 26 Y 0 0 237
+rec.COLLATION_NAME
+uca1400_slovak_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 238
+rec.COLLATION_NAME
+uca1400_spanish2_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 238
+rec.COLLATION_NAME
+uca1400_spanish2_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 238
+rec.COLLATION_NAME
+uca1400_spanish2_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 238
+rec.COLLATION_NAME
+uca1400_spanish2_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 238
+rec.COLLATION_NAME
+uca1400_spanish2_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 238
+rec.COLLATION_NAME
+uca1400_spanish2_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 238
+rec.COLLATION_NAME
+uca1400_spanish2_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 238
+rec.COLLATION_NAME
+uca1400_spanish2_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 239
+rec.COLLATION_NAME
+uca1400_roman_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 239
+rec.COLLATION_NAME
+uca1400_roman_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 239
+rec.COLLATION_NAME
+uca1400_roman_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 19 Y 0 0 239
+rec.COLLATION_NAME
+uca1400_roman_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 239
+rec.COLLATION_NAME
+uca1400_roman_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 239
+rec.COLLATION_NAME
+uca1400_roman_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 239
+rec.COLLATION_NAME
+uca1400_roman_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 25 Y 0 0 239
+rec.COLLATION_NAME
+uca1400_roman_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 240
+rec.COLLATION_NAME
+uca1400_persian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 240
+rec.COLLATION_NAME
+uca1400_persian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 240
+rec.COLLATION_NAME
+uca1400_persian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 240
+rec.COLLATION_NAME
+uca1400_persian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 240
+rec.COLLATION_NAME
+uca1400_persian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 240
+rec.COLLATION_NAME
+uca1400_persian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 240
+rec.COLLATION_NAME
+uca1400_persian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 240
+rec.COLLATION_NAME
+uca1400_persian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 241
+rec.COLLATION_NAME
+uca1400_esperanto_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 241
+rec.COLLATION_NAME
+uca1400_esperanto_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 241
+rec.COLLATION_NAME
+uca1400_esperanto_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 241
+rec.COLLATION_NAME
+uca1400_esperanto_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 241
+rec.COLLATION_NAME
+uca1400_esperanto_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 241
+rec.COLLATION_NAME
+uca1400_esperanto_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 241
+rec.COLLATION_NAME
+uca1400_esperanto_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 241
+rec.COLLATION_NAME
+uca1400_esperanto_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 242
+rec.COLLATION_NAME
+uca1400_hungarian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 242
+rec.COLLATION_NAME
+uca1400_hungarian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 242
+rec.COLLATION_NAME
+uca1400_hungarian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 23 Y 0 0 242
+rec.COLLATION_NAME
+uca1400_hungarian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 242
+rec.COLLATION_NAME
+uca1400_hungarian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 242
+rec.COLLATION_NAME
+uca1400_hungarian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 242
+rec.COLLATION_NAME
+uca1400_hungarian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 29 Y 0 0 242
+rec.COLLATION_NAME
+uca1400_hungarian_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 243
+rec.COLLATION_NAME
+uca1400_sinhala_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 243
+rec.COLLATION_NAME
+uca1400_sinhala_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 243
+rec.COLLATION_NAME
+uca1400_sinhala_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 243
+rec.COLLATION_NAME
+uca1400_sinhala_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 243
+rec.COLLATION_NAME
+uca1400_sinhala_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 243
+rec.COLLATION_NAME
+uca1400_sinhala_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 243
+rec.COLLATION_NAME
+uca1400_sinhala_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 243
+rec.COLLATION_NAME
+uca1400_sinhala_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 244
+rec.COLLATION_NAME
+uca1400_german2_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 244
+rec.COLLATION_NAME
+uca1400_german2_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 244
+rec.COLLATION_NAME
+uca1400_german2_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 21 Y 0 0 244
+rec.COLLATION_NAME
+uca1400_german2_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 244
+rec.COLLATION_NAME
+uca1400_german2_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 244
+rec.COLLATION_NAME
+uca1400_german2_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 244
+rec.COLLATION_NAME
+uca1400_german2_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 27 Y 0 0 244
+rec.COLLATION_NAME
+uca1400_german2_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 247
+rec.COLLATION_NAME
+uca1400_vietnamese_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 247
+rec.COLLATION_NAME
+uca1400_vietnamese_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 247
+rec.COLLATION_NAME
+uca1400_vietnamese_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 24 Y 0 0 247
+rec.COLLATION_NAME
+uca1400_vietnamese_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 247
+rec.COLLATION_NAME
+uca1400_vietnamese_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 247
+rec.COLLATION_NAME
+uca1400_vietnamese_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 247
+rec.COLLATION_NAME
+uca1400_vietnamese_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 30 Y 0 0 247
+rec.COLLATION_NAME
+uca1400_vietnamese_nopad_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 608
+rec.COLLATION_NAME
+uca1400_croatian_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 608
+rec.COLLATION_NAME
+uca1400_croatian_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 608
+rec.COLLATION_NAME
+uca1400_croatian_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 22 Y 0 0 608
+rec.COLLATION_NAME
+uca1400_croatian_as_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 608
+rec.COLLATION_NAME
+uca1400_croatian_nopad_ai_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 608
+rec.COLLATION_NAME
+uca1400_croatian_nopad_ai_cs
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 608
+rec.COLLATION_NAME
+uca1400_croatian_nopad_as_ci
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def COLLATION_NAME rec.COLLATION_NAME 253 256 28 Y 0 0 608
+rec.COLLATION_NAME
+uca1400_croatian_nopad_as_cs
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+# SET NAMES CHARACTER SET cs [COLLATE cl]
+#
+CREATE VIEW vars AS
+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE variable_name IN
+('character_set_client','character_set_connection','character_set_results',
+'collation_connection') ORDER BY variable_name;
+---
+SET NAMES DEFAULT COLLATE DEFAULT;
+SELECT * FROM vars;
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SET_CLIENT latin1
+CHARACTER_SET_CONNECTION latin1
+CHARACTER_SET_RESULTS latin1
+COLLATION_CONNECTION latin1_swedish_ci
+---
+SET NAMES DEFAULT COLLATE `binary`;
+ERROR 42000: COLLATION 'binary' is not valid for CHARACTER SET 'latin1'
+SELECT * FROM vars;
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SET_CLIENT latin1
+CHARACTER_SET_CONNECTION latin1
+CHARACTER_SET_RESULTS latin1
+COLLATION_CONNECTION latin1_swedish_ci
+---
+SET NAMES DEFAULT COLLATE utf8mb4_uca1400_ai_ci;
+ERROR 42000: COLLATION 'utf8mb4_uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+SELECT * FROM vars;
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SET_CLIENT latin1
+CHARACTER_SET_CONNECTION latin1
+CHARACTER_SET_RESULTS latin1
+COLLATION_CONNECTION latin1_swedish_ci
+---
+SET NAMES DEFAULT COLLATE uca1400_ai_ci;
+ERROR 42000: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+SELECT * FROM vars;
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SET_CLIENT latin1
+CHARACTER_SET_CONNECTION latin1
+CHARACTER_SET_RESULTS latin1
+COLLATION_CONNECTION latin1_swedish_ci
+---
+SET NAMES utf8mb4;
+SELECT * FROM vars;
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SET_CLIENT utf8mb4
+CHARACTER_SET_CONNECTION utf8mb4
+CHARACTER_SET_RESULTS utf8mb4
+COLLATION_CONNECTION utf8mb4_general_ci
+---
+SET NAMES utf8mb4 COLLATE `binary`;
+ERROR 42000: COLLATION 'binary' is not valid for CHARACTER SET 'utf8mb4'
+SELECT * FROM vars;
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SET_CLIENT utf8mb4
+CHARACTER_SET_CONNECTION utf8mb4
+CHARACTER_SET_RESULTS utf8mb4
+COLLATION_CONNECTION utf8mb4_general_ci
+---
+SET NAMES utf8mb4 COLLATE DEFAULT;
+SELECT * FROM vars;
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SET_CLIENT utf8mb4
+CHARACTER_SET_CONNECTION utf8mb4
+CHARACTER_SET_RESULTS utf8mb4
+COLLATION_CONNECTION utf8mb4_general_ci
+---
+SET NAMES utf8mb4 COLLATE utf8mb4_uca1400_ai_ci;
+SELECT * FROM vars;
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SET_CLIENT utf8mb4
+CHARACTER_SET_CONNECTION utf8mb4
+CHARACTER_SET_RESULTS utf8mb4
+COLLATION_CONNECTION utf8mb4_uca1400_ai_ci
+---
+SET NAMES utf8mb4 COLLATE uca1400_ai_ci;
+SELECT * FROM vars;
+VARIABLE_NAME VARIABLE_VALUE
+CHARACTER_SET_CLIENT utf8mb4
+CHARACTER_SET_CONNECTION utf8mb4
+CHARACTER_SET_RESULTS utf8mb4
+COLLATION_CONNECTION utf8mb4_uca1400_ai_ci
+DROP VIEW vars;
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+# ALTER TABLE t1 CONVERT TO CHARACTER SET cs [COLLATE cl]
+#
+CREATE DATABASE db1 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
+USE db1;
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT COLLATE DEFAULT;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT COLLATE latin1_bin;
+ERROR 42000: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT COLLATE uca1400_ai_ci;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4 COLLATE DEFAULT;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4 COLLATE latin1_bin;
+ERROR 42000: COLLATION 'latin1_bin' is not valid for CHARACTER SET 'utf8mb4'
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(10) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
+DROP TABLE t1;
+DROP DATABASE db1;
+USE test;
+#
+# MDEV-27743 Remove Lex::charset
+# MDEV-27009 Add UCA-14.0.0 collations
+#
+CREATE TABLE t1 (c1 VARCHAR(10) CHARACTER SET utf8mb4);
+INSERT INTO t1 VALUES ('A'),('a'),('Ã'),('á');
+SELECT * FROM t1 ORDER BY c1 COLLATE DEFAULT;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DEFAULT' at line 1
+SELECT * FROM t1 ORDER BY c1 COLLATE `binary`;
+ERROR 42000: COLLATION 'binary' is not valid for CHARACTER SET 'utf8mb4'
+SELECT * FROM t1 ORDER BY c1 COLLATE utf8mb4_uca1400_as_cs;
+c1
+a
+A
+á
+EXPLAIN EXTENDED SELECT * FROM t1 ORDER BY c1 COLLATE utf8mb4_uca1400_as_cs;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 100.00 Using filesort
+Warnings:
+Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` order by `test`.`t1`.`c1` collate utf8mb4_uca1400_as_cs
+SELECT * FROM t1 ORDER BY c1 COLLATE uca1400_as_cs;
+c1
+a
+A
+á
+EXPLAIN EXTENDED SELECT * FROM t1 ORDER BY c1 COLLATE uca1400_as_cs;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 100.00 Using filesort
+Warnings:
+Note 1003 select `test`.`t1`.`c1` AS `c1` from `test`.`t1` order by `test`.`t1`.`c1` collate uca1400_as_cs
+DROP TABLE t1;
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+# CREATE DATABASE
+#
+SET @@collation_server=utf8mb4_bin;
+CREATE DATABASE db1;
+SHOW CREATE DATABASE db1;
+Database Create Database
+db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin */
+DROP DATABASE db1;
+CREATE DATABASE db1 COLLATE DEFAULT;
+SHOW CREATE DATABASE db1;
+Database Create Database
+db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */
+DROP DATABASE db1;
+CREATE DATABASE db1 COLLATE uca1400_ai_ci;
+SHOW CREATE DATABASE db1;
+Database Create Database
+db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci */
+DROP DATABASE db1;
+CREATE DATABASE db1 COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE DATABASE db1;
+Database Create Database
+db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci */
+DROP DATABASE db1;
+CREATE DATABASE db1 CHARACTER SET DEFAULT;
+SHOW CREATE DATABASE db1;
+Database Create Database
+db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */
+DROP DATABASE db1;
+CREATE DATABASE db1 CHARACTER SET DEFAULT COLLATE DEFAULT;
+SHOW CREATE DATABASE db1;
+Database Create Database
+db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */
+DROP DATABASE db1;
+CREATE DATABASE db1 CHARACTER SET DEFAULT COLLATE uca1400_ai_ci;
+SHOW CREATE DATABASE db1;
+Database Create Database
+db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci */
+DROP DATABASE db1;
+CREATE DATABASE db1 CHARACTER SET DEFAULT COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE DATABASE db1;
+Database Create Database
+db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci */
+DROP DATABASE db1;
+SET @@collation_server=DEFAULT;
+SET @@collation_server=latin1_bin;
+CREATE DATABASE db1 COLLATE uca1400_ai_ci;
+ERROR 42000: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+CREATE DATABASE db1 CHARACTER SET DEFAULT COLLATE uca1400_ai_ci;
+ERROR 42000: COLLATION 'uca1400_ai_ci' is not valid for CHARACTER SET 'latin1'
+CREATE DATABASE db1 CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci;
+SHOW CREATE DATABASE db1;
+Database Create Database
+db1 CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci */
+DROP DATABASE db1;
+SET @@collation_server=DEFAULT;
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+# CREATE TABLE - table level character set and collation
+#
+SELECT @@collation_database;
+@@collation_database
+latin1_swedish_ci
+CREATE DATABASE db1 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
+CREATE TABLE db1.t1 (a CHAR(1));
+SHOW CREATE TABLE db1.t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
+DROP TABLE db1.t1;
+CREATE TABLE db1.t1 (a CHAR(1)) COLLATE DEFAULT;
+SHOW CREATE TABLE db1.t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
+DROP TABLE db1.t1;
+CREATE TABLE db1.t1 (a CHAR(1)) COLLATE uca1400_ai_ci;
+SHOW CREATE TABLE db1.t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
+DROP TABLE db1.t1;
+CREATE TABLE db1.t1 (a CHAR(1)) COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE TABLE db1.t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
+DROP TABLE db1.t1;
+CREATE TABLE db1.t1 (a CHAR(1)) CHARACTER SET DEFAULT;
+SHOW CREATE TABLE db1.t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
+DROP TABLE db1.t1;
+CREATE TABLE db1.t1 (a CHAR(1)) CHARACTER SET DEFAULT COLLATE DEFAULT;
+SHOW CREATE TABLE db1.t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
+DROP TABLE db1.t1;
+CREATE TABLE db1.t1 (a CHAR(1)) CHARACTER SET DEFAULT COLLATE uca1400_ai_ci;
+SHOW CREATE TABLE db1.t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
+DROP TABLE db1.t1;
+CREATE TABLE db1.t1 (a CHAR(1)) CHARACTER SET DEFAULT COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE TABLE db1.t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` char(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
+DROP TABLE db1.t1;
+DROP DATABASE db1;
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+#
+SET NAMES utf8mb4;
+CREATE PROCEDURE exec_verbose(query TEXT CHARACTER SET utf8mb4)
+BEGIN
+SELECT query AS ``;
+EXECUTE IMMEDIATE query;
+END;
+$$
+CREATE PROCEDURE test_styles(clname VARCHAR(64) CHARACTER SET utf8mb4,
+where_clause TEXT CHARACTER SET utf8mb4)
+BEGIN
+DECLARE query TEXT CHARACTER SET utf8mb4 DEFAULT
+'SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),'','') '
+ 'FROM t1 <WHERE> GROUP BY a COLLATE <CL>';
+SET query=REPLACE(query, '<WHERE>', where_clause);
+CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_nopad_as_cs')));
+CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_as_cs')));
+CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_nopad_as_ci')));
+CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_as_ci')));
+CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_nopad_ai_cs')));
+CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_ai_cs')));
+CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_nopad_ai_ci')));
+CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_ai_ci')));
+END;
+$$
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf8mb4);
+insert into t1 values ('A'),('a');
+insert into t1 values ('B'),('b');
+insert into t1 values ('C'),('c');
+insert into t1 values ('D'),('d');
+insert into t1 values ('E'),('e');
+insert into t1 values ('F'),('f');
+insert into t1 values ('G'),('g');
+insert into t1 values ('H'),('h');
+insert into t1 values ('I'),('i');
+insert into t1 values ('J'),('j');
+insert into t1 values ('K'),('k');
+insert into t1 values ('L'),('l');
+insert into t1 values ('M'),('m');
+insert into t1 values ('N'),('n');
+insert into t1 values ('O'),('o');
+insert into t1 values ('P'),('p');
+insert into t1 values ('Q'),('q');
+insert into t1 values ('R'),('r');
+insert into t1 values ('S'),('s');
+insert into t1 values ('T'),('t');
+insert into t1 values ('U'),('u');
+insert into t1 values ('V'),('v');
+insert into t1 values ('W'),('w');
+insert into t1 values ('X'),('x');
+insert into t1 values ('Y'),('y');
+insert into t1 values ('Z'),('z');
+insert into t1 values (_ucs2 0x00e0),(_ucs2 0x00c0);
+insert into t1 values (_ucs2 0x00e1),(_ucs2 0x00c1);
+insert into t1 values (_ucs2 0x00e2),(_ucs2 0x00c2);
+insert into t1 values (_ucs2 0x00e3),(_ucs2 0x00c3);
+insert into t1 values (_ucs2 0x00e4),(_ucs2 0x00c4);
+insert into t1 values (_ucs2 0x00e5),(_ucs2 0x00c5);
+insert into t1 values (_ucs2 0x00e6),(_ucs2 0x00c6);
+insert into t1 values (_ucs2 0x00e7),(_ucs2 0x00c7);
+insert into t1 values (_ucs2 0x00e8),(_ucs2 0x00c8);
+insert into t1 values (_ucs2 0x00e9),(_ucs2 0x00c9);
+insert into t1 values (_ucs2 0x00ea),(_ucs2 0x00ca);
+insert into t1 values (_ucs2 0x00eb),(_ucs2 0x00cb);
+insert into t1 values (_ucs2 0x00ec),(_ucs2 0x00cc);
+insert into t1 values (_ucs2 0x00ed),(_ucs2 0x00cd);
+insert into t1 values (_ucs2 0x00ee),(_ucs2 0x00ce);
+insert into t1 values (_ucs2 0x00ef),(_ucs2 0x00cf);
+insert into t1 values (_ucs2 0x00f0),(_ucs2 0x00d0);
+insert into t1 values (_ucs2 0x00f1),(_ucs2 0x00d1);
+insert into t1 values (_ucs2 0x00f2),(_ucs2 0x00d2);
+insert into t1 values (_ucs2 0x00f3),(_ucs2 0x00d3);
+insert into t1 values (_ucs2 0x00f4),(_ucs2 0x00d4);
+insert into t1 values (_ucs2 0x00f5),(_ucs2 0x00d5);
+insert into t1 values (_ucs2 0x00f6),(_ucs2 0x00d6);
+insert into t1 values (_ucs2 0x00f7),(_ucs2 0x00d7);
+insert into t1 values (_ucs2 0x00f8),(_ucs2 0x00d8);
+insert into t1 values (_ucs2 0x00f9),(_ucs2 0x00d9);
+insert into t1 values (_ucs2 0x00fa),(_ucs2 0x00da);
+insert into t1 values (_ucs2 0x00fb),(_ucs2 0x00db);
+insert into t1 values (_ucs2 0x00fc),(_ucs2 0x00dc);
+insert into t1 values (_ucs2 0x00fd),(_ucs2 0x00dd);
+insert into t1 values (_ucs2 0x00fe),(_ucs2 0x00de);
+insert into t1 values (_ucs2 0x00ff),(_ucs2 0x00df);
+insert into t1 values (_ucs2 0x0100),(_ucs2 0x0101),(_ucs2 0x0102),(_ucs2 0x0103);
+insert into t1 values (_ucs2 0x0104),(_ucs2 0x0105),(_ucs2 0x0106),(_ucs2 0x0107);
+insert into t1 values (_ucs2 0x0108),(_ucs2 0x0109),(_ucs2 0x010a),(_ucs2 0x010b);
+insert into t1 values (_ucs2 0x010c),(_ucs2 0x010d),(_ucs2 0x010e),(_ucs2 0x010f);
+insert into t1 values (_ucs2 0x0110),(_ucs2 0x0111),(_ucs2 0x0112),(_ucs2 0x0113);
+insert into t1 values (_ucs2 0x0114),(_ucs2 0x0115),(_ucs2 0x0116),(_ucs2 0x0117);
+insert into t1 values (_ucs2 0x0118),(_ucs2 0x0119),(_ucs2 0x011a),(_ucs2 0x011b);
+insert into t1 values (_ucs2 0x011c),(_ucs2 0x011d),(_ucs2 0x011e),(_ucs2 0x011f);
+insert into t1 values (_ucs2 0x0120),(_ucs2 0x0121),(_ucs2 0x0122),(_ucs2 0x0123);
+insert into t1 values (_ucs2 0x0124),(_ucs2 0x0125),(_ucs2 0x0126),(_ucs2 0x0127);
+insert into t1 values (_ucs2 0x0128),(_ucs2 0x0129),(_ucs2 0x012a),(_ucs2 0x012b);
+insert into t1 values (_ucs2 0x012c),(_ucs2 0x012d),(_ucs2 0x012e),(_ucs2 0x012f);
+insert into t1 values (_ucs2 0x0130),(_ucs2 0x0131),(_ucs2 0x0132),(_ucs2 0x0133);
+insert into t1 values (_ucs2 0x0134),(_ucs2 0x0135),(_ucs2 0x0136),(_ucs2 0x0137);
+insert into t1 values (_ucs2 0x0138),(_ucs2 0x0139),(_ucs2 0x013a),(_ucs2 0x013b);
+insert into t1 values (_ucs2 0x013c),(_ucs2 0x013d),(_ucs2 0x013e),(_ucs2 0x013f);
+insert into t1 values (_ucs2 0x0140),(_ucs2 0x0141),(_ucs2 0x0142),(_ucs2 0x0143);
+insert into t1 values (_ucs2 0x0144),(_ucs2 0x0145),(_ucs2 0x0146),(_ucs2 0x0147);
+insert into t1 values (_ucs2 0x0148),(_ucs2 0x0149),(_ucs2 0x014a),(_ucs2 0x014b);
+insert into t1 values (_ucs2 0x014c),(_ucs2 0x014d),(_ucs2 0x014e),(_ucs2 0x014f);
+insert into t1 values (_ucs2 0x0150),(_ucs2 0x0151),(_ucs2 0x0152),(_ucs2 0x0153);
+insert into t1 values (_ucs2 0x0154),(_ucs2 0x0155),(_ucs2 0x0156),(_ucs2 0x0157);
+insert into t1 values (_ucs2 0x0158),(_ucs2 0x0159),(_ucs2 0x015a),(_ucs2 0x015b);
+insert into t1 values (_ucs2 0x015c),(_ucs2 0x015d),(_ucs2 0x015e),(_ucs2 0x015f);
+insert into t1 values (_ucs2 0x0160),(_ucs2 0x0161),(_ucs2 0x0162),(_ucs2 0x0163);
+insert into t1 values (_ucs2 0x0164),(_ucs2 0x0165),(_ucs2 0x0166),(_ucs2 0x0167);
+insert into t1 values (_ucs2 0x0168),(_ucs2 0x0169),(_ucs2 0x016a),(_ucs2 0x016b);
+insert into t1 values (_ucs2 0x016c),(_ucs2 0x016d),(_ucs2 0x016e),(_ucs2 0x016f);
+insert into t1 values (_ucs2 0x0170),(_ucs2 0x0171),(_ucs2 0x0172),(_ucs2 0x0173);
+insert into t1 values (_ucs2 0x0174),(_ucs2 0x0175),(_ucs2 0x0176),(_ucs2 0x0177);
+insert into t1 values (_ucs2 0x0178),(_ucs2 0x0179),(_ucs2 0x017a),(_ucs2 0x017b);
+insert into t1 values (_ucs2 0x017c),(_ucs2 0x017d),(_ucs2 0x017e),(_ucs2 0x017f);
+insert into t1 values (_ucs2 0x0180),(_ucs2 0x0181),(_ucs2 0x0182),(_ucs2 0x0183);
+insert into t1 values (_ucs2 0x0184),(_ucs2 0x0185),(_ucs2 0x0186),(_ucs2 0x0187);
+insert into t1 values (_ucs2 0x0188),(_ucs2 0x0189),(_ucs2 0x018a),(_ucs2 0x018b);
+insert into t1 values (_ucs2 0x018c),(_ucs2 0x018d),(_ucs2 0x018e),(_ucs2 0x018f);
+insert into t1 values (_ucs2 0x0190),(_ucs2 0x0191),(_ucs2 0x0192),(_ucs2 0x0193);
+insert into t1 values (_ucs2 0x0194),(_ucs2 0x0195),(_ucs2 0x0196),(_ucs2 0x0197);
+insert into t1 values (_ucs2 0x0198),(_ucs2 0x0199),(_ucs2 0x019a),(_ucs2 0x019b);
+insert into t1 values (_ucs2 0x019c),(_ucs2 0x019d),(_ucs2 0x019e),(_ucs2 0x019f);
+insert into t1 values (_ucs2 0x01a0),(_ucs2 0x01a1),(_ucs2 0x01a2),(_ucs2 0x01a3);
+insert into t1 values (_ucs2 0x01a4),(_ucs2 0x01a5),(_ucs2 0x01a6),(_ucs2 0x01a7);
+insert into t1 values (_ucs2 0x01a8),(_ucs2 0x01a9),(_ucs2 0x01aa),(_ucs2 0x01ab);
+insert into t1 values (_ucs2 0x01ac),(_ucs2 0x01ad),(_ucs2 0x01ae),(_ucs2 0x01af);
+insert into t1 values (_ucs2 0x01b0),(_ucs2 0x01b1),(_ucs2 0x01b2),(_ucs2 0x01b3);
+insert into t1 values (_ucs2 0x01b4),(_ucs2 0x01b5),(_ucs2 0x01b6),(_ucs2 0x01b7);
+insert into t1 values (_ucs2 0x01b8),(_ucs2 0x01b9),(_ucs2 0x01ba),(_ucs2 0x01bb);
+insert into t1 values (_ucs2 0x01bc),(_ucs2 0x01bd),(_ucs2 0x01be),(_ucs2 0x01bf);
+insert into t1 values (_ucs2 0x01c0),(_ucs2 0x01c1),(_ucs2 0x01c2),(_ucs2 0x01c3);
+insert into t1 values (_ucs2 0x01c4),(_ucs2 0x01c5),(_ucs2 0x01c6),(_ucs2 0x01c7);
+insert into t1 values (_ucs2 0x01c8),(_ucs2 0x01c9),(_ucs2 0x01ca),(_ucs2 0x01cb);
+insert into t1 values (_ucs2 0x01cc),(_ucs2 0x01cd),(_ucs2 0x01ce),(_ucs2 0x01cf);
+insert into t1 values (_ucs2 0x01d0),(_ucs2 0x01d1),(_ucs2 0x01d2),(_ucs2 0x01d3);
+insert into t1 values (_ucs2 0x01d4),(_ucs2 0x01d5),(_ucs2 0x01d6),(_ucs2 0x01d7);
+insert into t1 values (_ucs2 0x01d8),(_ucs2 0x01d9),(_ucs2 0x01da),(_ucs2 0x01db);
+insert into t1 values (_ucs2 0x01dc),(_ucs2 0x01dd),(_ucs2 0x01de),(_ucs2 0x01df);
+insert into t1 values (_ucs2 0x01e0),(_ucs2 0x01e1),(_ucs2 0x01e2),(_ucs2 0x01e3);
+insert into t1 values (_ucs2 0x01e4),(_ucs2 0x01e5),(_ucs2 0x01e6),(_ucs2 0x01e7);
+insert into t1 values (_ucs2 0x01e8),(_ucs2 0x01e9),(_ucs2 0x01ea),(_ucs2 0x01eb);
+insert into t1 values (_ucs2 0x01ec),(_ucs2 0x01ed),(_ucs2 0x01ee),(_ucs2 0x01ef);
+insert into t1 values (_ucs2 0x01f0),(_ucs2 0x01f1),(_ucs2 0x01f2),(_ucs2 0x01f3);
+insert into t1 values (_ucs2 0x01f4),(_ucs2 0x01f5),(_ucs2 0x01f6),(_ucs2 0x01f7);
+insert into t1 values (_ucs2 0x01f8),(_ucs2 0x01f9),(_ucs2 0x01fa),(_ucs2 0x01fb);
+insert into t1 values (_ucs2 0x01fc),(_ucs2 0x01fd),(_ucs2 0x01fe),(_ucs2 0x01ff);
+INSERT INTO t1 VALUES (_ucs2 0x1EA0),(_ucs2 0x1EA1),(_ucs2 0x1EA2),(_ucs2 0x1EA3);
+INSERT INTO t1 VALUES (_ucs2 0x1EA4),(_ucs2 0x1EA5),(_ucs2 0x1EA6),(_ucs2 0x1EA7);
+INSERT INTO t1 VALUES (_ucs2 0x1EA8),(_ucs2 0x1EA9),(_ucs2 0x1EAA),(_ucs2 0x1EAB);
+INSERT INTO t1 VALUES (_ucs2 0x1EAC),(_ucs2 0x1EAD),(_ucs2 0x1EAE),(_ucs2 0x1EAF);
+INSERT INTO t1 VALUES (_ucs2 0x1EB0),(_ucs2 0x1EB1),(_ucs2 0x1EB2),(_ucs2 0x1EB3);
+INSERT INTO t1 VALUES (_ucs2 0x1EB4),(_ucs2 0x1EB5),(_ucs2 0x1EB6),(_ucs2 0x1EB7);
+INSERT INTO t1 VALUES (_ucs2 0x1EB8),(_ucs2 0x1EB9),(_ucs2 0x1EBA),(_ucs2 0x1EBB);
+INSERT INTO t1 VALUES (_ucs2 0x1EBC),(_ucs2 0x1EBD),(_ucs2 0x1EBE),(_ucs2 0x1EBF);
+INSERT INTO t1 VALUES (_ucs2 0x1EC0),(_ucs2 0x1EC1),(_ucs2 0x1EC2),(_ucs2 0x1EC3);
+INSERT INTO t1 VALUES (_ucs2 0x1EC4),(_ucs2 0x1EC5),(_ucs2 0x1EC6),(_ucs2 0x1EC7);
+INSERT INTO t1 VALUES (_ucs2 0x1EC8),(_ucs2 0x1EC9),(_ucs2 0x1ECA),(_ucs2 0x1ECB);
+INSERT INTO t1 VALUES (_ucs2 0x1ECC),(_ucs2 0x1ECD),(_ucs2 0x1ECE),(_ucs2 0x1ECF);
+INSERT INTO t1 VALUES (_ucs2 0x1ED0),(_ucs2 0x1ED1),(_ucs2 0x1ED2),(_ucs2 0x1ED3);
+INSERT INTO t1 VALUES (_ucs2 0x1ED4),(_ucs2 0x1ED5),(_ucs2 0x1ED6),(_ucs2 0x1ED7);
+INSERT INTO t1 VALUES (_ucs2 0x1ED8),(_ucs2 0x1ED9),(_ucs2 0x1EDA),(_ucs2 0x1EDB);
+INSERT INTO t1 VALUES (_ucs2 0x1EDC),(_ucs2 0x1EDD),(_ucs2 0x1EDE),(_ucs2 0x1EDF);
+INSERT INTO t1 VALUES (_ucs2 0x1EE0),(_ucs2 0x1EE1),(_ucs2 0x1EE2),(_ucs2 0x1EE3);
+INSERT INTO t1 VALUES (_ucs2 0x1EE4),(_ucs2 0x1EE5),(_ucs2 0x1EE6),(_ucs2 0x1EE7);
+INSERT INTO t1 VALUES (_ucs2 0x1EE8),(_ucs2 0x1EE9),(_ucs2 0x1EEA),(_ucs2 0x1EEB);
+INSERT INTO t1 VALUES (_ucs2 0x1EEC),(_ucs2 0x1EED),(_ucs2 0x1EEE),(_ucs2 0x1EEF);
+INSERT INTO t1 VALUES (_ucs2 0x1EF0),(_ucs2 0x1EF1);
+insert into t1 values ('AA'),('Aa'),('aa'),('aA');
+insert into t1 values ('AE'),('Ae'),('ae'),('aE');
+insert into t1 values ('CH'),('Ch'),('ch'),('cH');
+insert into t1 values ('DZ'),('Dz'),('dz'),('dZ');
+insert into t1 values ('DŽ'),('Dž'),('dž'),('dŽ');
+insert into t1 values ('IJ'),('Ij'),('ij'),('iJ');
+insert into t1 values ('LJ'),('Lj'),('lj'),('lJ');
+insert into t1 values ('LL'),('Ll'),('ll'),('lL');
+insert into t1 values ('NJ'),('Nj'),('nj'),('nJ');
+insert into t1 values ('OE'),('Oe'),('oe'),('oE');
+insert into t1 values ('SS'),('Ss'),('ss'),('sS');
+insert into t1 values ('RR'),('Rr'),('rr'),('rR');
+INSERT INTO t1 VALUES('ẞ');
+INSERT INTO t1 SELECT CONCAT(a,' ') FROM t1;
+CALL test_styles('uca1400', '');
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 GROUP BY a COLLATE uca1400_nopad_as_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+÷,
+÷ ,
+×,
+× ,
+a,
+A,
+á,
+Ã,
+à,
+À,
+ă,
+Ä‚,
+ắ,
+Ắ,
+ằ,
+Ằ,
+ẵ,
+Ẵ,
+ẳ,
+Ẳ,
+â,
+Â,
+ấ,
+Ấ,
+ầ,
+Ầ,
+ẫ,
+Ẫ,
+ẩ,
+Ẩ,
+ÇŽ,
+Ç,
+Ã¥,
+Ã…,
+Ç»,
+Ǻ,
+ä,
+Ä,
+ÇŸ,
+Çž,
+ã,
+Ã,
+Ç¡,
+Ç ,
+Ä…,
+Ä„,
+Ä,
+Ä€,
+ả,
+Ả,
+ạ,
+Ạ,
+ặ,
+Ặ,
+ậ,
+Ậ,
+a ,
+A ,
+á ,
+Ã ,
+à ,
+À ,
+ă ,
+Ä‚ ,
+ắ ,
+Ắ ,
+ằ ,
+Ằ ,
+ẵ ,
+Ẵ ,
+ẳ ,
+Ẳ ,
+â ,
+Â ,
+ấ ,
+Ấ ,
+ầ ,
+Ầ ,
+ẫ ,
+Ẫ ,
+ẩ ,
+Ẩ ,
+ÇŽ ,
+Ç ,
+Ã¥ ,
+Ã… ,
+Ç» ,
+Ǻ ,
+ä ,
+Ä ,
+ÇŸ ,
+Çž ,
+ã ,
+Ã ,
+Ç¡ ,
+Ç  ,
+Ä… ,
+Ä„ ,
+Ä ,
+Ä€ ,
+ả ,
+Ả ,
+ạ ,
+Ạ ,
+ặ ,
+Ặ ,
+ậ ,
+Ậ ,
+aa,
+aA,
+Aa,
+AA,
+aa ,
+aA ,
+Aa ,
+AA ,
+ae,
+aE,
+Ae,
+AE,
+æ,
+Æ,
+ǽ,
+Ǽ,
+Ç£,
+Ç¢,
+ae ,
+aE ,
+Ae ,
+AE ,
+æ ,
+Æ ,
+ǽ ,
+Ǽ ,
+Ç£ ,
+Ç¢ ,
+b,
+B,
+b ,
+B ,
+Æ€,
+Æ€ ,
+Æ,
+Æ ,
+ƃ,
+Æ‚,
+ƃ ,
+Æ‚ ,
+c,
+C,
+ć,
+Ć,
+ĉ,
+Ĉ,
+Ä,
+Č,
+Ä‹,
+ÄŠ,
+ç,
+Ç,
+c ,
+C ,
+ć ,
+Ć ,
+ĉ ,
+Ĉ ,
+Ä ,
+Č ,
+Ä‹ ,
+ÄŠ ,
+ç ,
+Ç ,
+ch,
+cH,
+Ch,
+CH,
+ch ,
+cH ,
+Ch ,
+CH ,
+ƈ,
+Ƈ,
+ƈ ,
+Ƈ ,
+d,
+D,
+Ä,
+ÄŽ,
+Ä‘,
+Ä,
+ð,
+Ã,
+d ,
+D ,
+Ä ,
+ÄŽ ,
+Ä‘ ,
+Ä ,
+ð ,
+Ã ,
+dz,
+dZ,
+dz,
+Dz,
+DZ,
+Dz,
+DZ,
+dž,
+dŽ,
+dž,
+Dž,
+DŽ,
+Ç…,
+Ç„,
+dz ,
+dZ ,
+dz ,
+Dz ,
+DZ ,
+Dz ,
+DZ ,
+dž ,
+dŽ ,
+dž ,
+Dž ,
+DŽ ,
+Ç… ,
+Ç„ ,
+Ɖ,
+Ɖ ,
+ÆŠ,
+ÆŠ ,
+ƌ,
+Æ‹,
+ƌ ,
+Æ‹ ,
+e,
+E,
+é,
+É,
+è,
+È,
+Ä•,
+Ä”,
+ê,
+Ê,
+ế,
+Ế,
+á»,
+Ề,
+á»…,
+Ễ,
+ể,
+Ể,
+Ä›,
+Äš,
+ë,
+Ë,
+ẽ,
+Ẽ,
+Ä—,
+Ä–,
+Ä™,
+Ę,
+Ä“,
+Ä’,
+ẻ,
+Ẻ,
+ẹ,
+Ẹ,
+ệ,
+Ệ,
+e ,
+E ,
+é ,
+É ,
+è ,
+È ,
+Ä• ,
+Ä” ,
+ê ,
+Ê ,
+ế ,
+Ế ,
+á» ,
+Ề ,
+á»… ,
+Ễ ,
+ể ,
+Ể ,
+Ä› ,
+Äš ,
+ë ,
+Ë ,
+ẽ ,
+Ẽ ,
+Ä— ,
+Ä– ,
+Ä™ ,
+Ę ,
+Ä“ ,
+Ä’ ,
+ẻ ,
+Ẻ ,
+ẹ ,
+Ẹ ,
+ệ ,
+Ệ ,
+Ç,
+ÆŽ,
+Ç ,
+ÆŽ ,
+Æ,
+Æ ,
+Æ,
+Æ ,
+f,
+F,
+f ,
+F ,
+Æ’,
+Æ‘,
+Æ’ ,
+Æ‘ ,
+g,
+G,
+ǵ,
+Ç´,
+ÄŸ,
+Äž,
+Ä,
+Ĝ,
+ǧ,
+Ǧ,
+Ä¡,
+Ä ,
+Ä£,
+Ä¢,
+g ,
+G ,
+ǵ ,
+Ç´ ,
+ÄŸ ,
+Äž ,
+Ä ,
+Ĝ ,
+ǧ ,
+Ǧ ,
+Ä¡ ,
+Ä  ,
+Ä£ ,
+Ä¢ ,
+Ç¥,
+Ǥ,
+Ç¥ ,
+Ǥ ,
+Æ“,
+Æ“ ,
+Æ”,
+Æ” ,
+Æ£,
+Æ¢,
+Æ£ ,
+Æ¢ ,
+h,
+H,
+Ä¥,
+Ĥ,
+ħ,
+Ħ,
+h ,
+H ,
+Ä¥ ,
+Ĥ ,
+ħ ,
+Ħ ,
+Æ•,
+Ƕ,
+Æ• ,
+Ƕ ,
+i,
+I,
+í,
+Ã,
+ì,
+Ì,
+Ä­,
+Ĭ,
+î,
+ÃŽ,
+Ç,
+Ç,
+ï,
+Ã,
+Ä©,
+Ĩ,
+Ä°,
+į,
+Ä®,
+Ä«,
+Ī,
+ỉ,
+Ỉ,
+ị,
+Ị,
+i ,
+I ,
+í ,
+Ã ,
+ì ,
+Ì ,
+Ä­ ,
+Ĭ ,
+î ,
+ÃŽ ,
+Ç ,
+Ç ,
+ï ,
+Ã ,
+Ä© ,
+Ĩ ,
+Ä° ,
+į ,
+Ä® ,
+Ä« ,
+Ī ,
+ỉ ,
+Ỉ ,
+ị ,
+Ị ,
+ij,
+iJ,
+ij,
+Ij,
+IJ,
+IJ,
+ij ,
+iJ ,
+ij ,
+Ij ,
+IJ ,
+IJ ,
+ı,
+ı ,
+Æ—,
+Æ— ,
+Æ–,
+Æ– ,
+j,
+J,
+ĵ,
+Ä´,
+Ç°,
+j ,
+J ,
+ĵ ,
+Ä´ ,
+Ç° ,
+k,
+K,
+Ç©,
+Ǩ,
+Ä·,
+Ķ,
+k ,
+K ,
+Ç© ,
+Ǩ ,
+Ä· ,
+Ķ ,
+Æ™,
+Ƙ,
+Æ™ ,
+Ƙ ,
+l,
+L,
+ĺ,
+Ĺ,
+ľ,
+Ľ,
+ļ,
+Ä»,
+Å‚,
+Å,
+Å€,
+Ä¿,
+l ,
+L ,
+ĺ ,
+Ĺ ,
+ľ ,
+Ľ ,
+ļ ,
+Ä» ,
+Å‚ ,
+Å ,
+Å€ ,
+Ä¿ ,
+lj,
+lJ,
+lj,
+Lj,
+LJ,
+Lj,
+LJ,
+lj ,
+lJ ,
+lj ,
+Lj ,
+LJ ,
+Lj ,
+LJ ,
+ll,
+lL,
+Ll,
+LL,
+ll ,
+lL ,
+Ll ,
+LL ,
+Æš,
+Æš ,
+Æ›,
+Æ› ,
+m,
+M,
+m ,
+M ,
+n,
+N,
+Å„,
+Ń,
+ǹ,
+Ǹ,
+ň,
+Ň,
+ñ,
+Ñ,
+ņ,
+Å…,
+n ,
+N ,
+Å„ ,
+Ń ,
+ǹ ,
+Ǹ ,
+ň ,
+Ň ,
+ñ ,
+Ñ ,
+ņ ,
+Å… ,
+nj,
+nJ,
+nj,
+Nj,
+NJ,
+Ç‹,
+ÇŠ,
+nj ,
+nJ ,
+nj ,
+Nj ,
+NJ ,
+Ç‹ ,
+ÇŠ ,
+Æ,
+Æ ,
+Æž,
+Æž ,
+Å‹,
+ÅŠ,
+Å‹ ,
+ÅŠ ,
+o,
+O,
+ó,
+Ó,
+ò,
+Ã’,
+Å,
+ÅŽ,
+ô,
+Ô,
+ố,
+á»,
+ồ,
+á»’,
+á»—,
+á»–,
+ổ,
+á»”,
+Ç’,
+Ç‘,
+ö,
+Ö,
+Å‘,
+Å,
+õ,
+Õ,
+ø,
+Ø,
+Ç¿,
+Ǿ,
+Ç«,
+Ǫ,
+Ç­,
+Ǭ,
+Å,
+Ō,
+á»,
+Ỏ,
+Æ¡,
+Æ ,
+á»›,
+Ớ,
+á»,
+Ờ,
+ỡ,
+á» ,
+ở,
+Ở,
+ợ,
+Ợ,
+á»,
+Ọ,
+á»™,
+Ộ,
+o ,
+O ,
+ó ,
+Ó ,
+ò ,
+Ã’ ,
+Å ,
+ÅŽ ,
+ô ,
+Ô ,
+ố ,
+á» ,
+ồ ,
+á»’ ,
+á»— ,
+á»– ,
+ổ ,
+á»” ,
+Ç’ ,
+Ç‘ ,
+ö ,
+Ö ,
+Å‘ ,
+Å ,
+õ ,
+Õ ,
+ø ,
+Ø ,
+Ç¿ ,
+Ǿ ,
+Ç« ,
+Ǫ ,
+Ç­ ,
+Ǭ ,
+Å ,
+Ō ,
+á» ,
+Ỏ ,
+Æ¡ ,
+Æ  ,
+á»› ,
+Ớ ,
+á» ,
+Ờ ,
+ỡ ,
+á»  ,
+ở ,
+Ở ,
+ợ ,
+Ợ ,
+á» ,
+Ọ ,
+á»™ ,
+Ộ ,
+oe,
+oE,
+Oe,
+OE,
+Å“,
+Å’,
+oe ,
+oE ,
+Oe ,
+OE ,
+Å“ ,
+Å’ ,
+Ɔ,
+Ɔ ,
+ÆŸ,
+ÆŸ ,
+p,
+P,
+p ,
+P ,
+Æ¥,
+Ƥ,
+Æ¥ ,
+Ƥ ,
+q,
+Q,
+q ,
+Q ,
+ĸ,
+ĸ ,
+r,
+R,
+Å•,
+Å”,
+Å™,
+Ř,
+Å—,
+Å–,
+r ,
+R ,
+Å• ,
+Å” ,
+Å™ ,
+Ř ,
+Å— ,
+Å– ,
+rr,
+rR,
+Rr,
+RR,
+rr ,
+rR ,
+Rr ,
+RR ,
+Ʀ,
+Ʀ ,
+s,
+S,
+Å›,
+Åš,
+Å,
+Ŝ,
+Å¡,
+Å ,
+ÅŸ,
+Åž,
+Å¿,
+s ,
+S ,
+Å› ,
+Åš ,
+Å ,
+Ŝ ,
+Å¡ ,
+Å  ,
+ÅŸ ,
+Åž ,
+Å¿ ,
+ss,
+sS,
+Ss,
+SS,
+ß,
+ẞ,
+ss ,
+sS ,
+Ss ,
+SS ,
+ß ,
+ẞ ,
+Æ©,
+Æ© ,
+ƪ,
+ƪ ,
+t,
+T,
+Å¥,
+Ť,
+Å£,
+Å¢,
+t ,
+T ,
+Å¥ ,
+Ť ,
+Å£ ,
+Å¢ ,
+ƾ,
+ƾ ,
+ŧ,
+Ŧ,
+ŧ ,
+Ŧ ,
+Æ«,
+Æ« ,
+Æ­,
+Ƭ,
+Æ­ ,
+Ƭ ,
+Æ®,
+Æ® ,
+u,
+U,
+ú,
+Ú,
+ù,
+Ù,
+Å­,
+Ŭ,
+û,
+Û,
+Ç”,
+Ç“,
+ů,
+Å®,
+ü,
+Ü,
+ǘ,
+Ç—,
+ǜ,
+Ç›,
+Çš,
+Ç™,
+Ç–,
+Ç•,
+ű,
+Å°,
+Å©,
+Ũ,
+ų,
+Ų,
+Å«,
+Ū,
+ủ,
+Ủ,
+Æ°,
+Ư,
+ứ,
+Ứ,
+ừ,
+Ừ,
+ữ,
+á»®,
+á»­,
+Ử,
+á»±,
+á»°,
+ụ,
+Ụ,
+u ,
+U ,
+ú ,
+Ú ,
+ù ,
+Ù ,
+Å­ ,
+Ŭ ,
+û ,
+Û ,
+Ç” ,
+Ç“ ,
+ů ,
+Å® ,
+ü ,
+Ü ,
+ǘ ,
+Ç— ,
+ǜ ,
+Ç› ,
+Çš ,
+Ç™ ,
+Ç– ,
+Ç• ,
+ű ,
+Å° ,
+Å© ,
+Ũ ,
+ų ,
+Ų ,
+Å« ,
+Ū ,
+ủ ,
+Ủ ,
+Æ° ,
+Ư ,
+ứ ,
+Ứ ,
+ừ ,
+Ừ ,
+ữ ,
+á»® ,
+á»­ ,
+Ử ,
+á»± ,
+á»° ,
+ụ ,
+Ụ ,
+Ɯ,
+Ɯ ,
+Ʊ,
+Ʊ ,
+v,
+V,
+v ,
+V ,
+Ʋ,
+Ʋ ,
+w,
+W,
+ŵ,
+Å´,
+w ,
+W ,
+ŵ ,
+Å´ ,
+x,
+X,
+x ,
+X ,
+y,
+Y,
+ý,
+Ã,
+Å·,
+Ŷ,
+ÿ,
+Ÿ,
+y ,
+Y ,
+ý ,
+Ã ,
+Å· ,
+Ŷ ,
+ÿ ,
+Ÿ ,
+Æ´,
+Ƴ,
+Æ´ ,
+Ƴ ,
+z,
+Z,
+ź,
+Ź,
+ž,
+Ž,
+ż,
+Å»,
+z ,
+Z ,
+ź ,
+Ź ,
+ž ,
+Ž ,
+ż ,
+Å» ,
+Æ,
+Æ ,
+ƶ,
+Ƶ,
+ƶ ,
+Ƶ ,
+Æ·,
+ǯ,
+Ç®,
+Æ· ,
+ǯ ,
+Ç® ,
+ƹ,
+Ƹ,
+ƹ ,
+Ƹ ,
+ƺ,
+ƺ ,
+þ,
+Þ,
+þ ,
+Þ ,
+Æ¿,
+Ç·,
+Æ¿ ,
+Ç· ,
+Æ»,
+Æ» ,
+ƨ,
+Ƨ,
+ƨ ,
+Ƨ ,
+ƽ,
+Ƽ,
+ƽ ,
+Ƽ ,
+Æ…,
+Æ„,
+Æ… ,
+Æ„ ,
+ʼn,
+ʼn ,
+Ç€,
+Ç€ ,
+Ç,
+Ç ,
+Ç‚,
+Ç‚ ,
+ǃ,
+ǃ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 GROUP BY a COLLATE uca1400_as_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+÷,÷ ,
+×,× ,
+a,a ,
+A,A ,
+á,á ,
+Ã,Ã ,
+à,à ,
+À,À ,
+ă,ă ,
+Ä‚,Ä‚ ,
+ắ,ắ ,
+Ắ,Ắ ,
+ằ,ằ ,
+Ằ,Ằ ,
+ẵ,ẵ ,
+Ẵ,Ẵ ,
+ẳ,ẳ ,
+Ẳ,Ẳ ,
+â,â ,
+Â, ,
+ấ,ấ ,
+Ấ,Ấ ,
+ầ,ầ ,
+Ầ,Ầ ,
+ẫ,ẫ ,
+Ẫ,Ẫ ,
+ẩ,ẩ ,
+Ẩ,Ẩ ,
+ÇŽ,ÇŽ ,
+Ç,Ç ,
+Ã¥,Ã¥ ,
+Ã…,Ã… ,
+Ç»,Ç» ,
+Ǻ,Ǻ ,
+ä,ä ,
+Ä,Ä ,
+ÇŸ,ÇŸ ,
+Çž,Çž ,
+ã,ã ,
+Ã,Ã ,
+Ç¡,Ç¡ ,
+Ç ,Ç  ,
+Ä…,Ä… ,
+Ä„,Ä„ ,
+Ä,Ä ,
+Ä€,Ä€ ,
+ả,ả ,
+Ả,Ả ,
+ạ,ạ ,
+Ạ,Ạ ,
+ặ,ặ ,
+Ặ,Ặ ,
+ậ,ậ ,
+Ậ,Ậ ,
+aa,aa ,
+aA,aA ,
+Aa,Aa ,
+AA,AA ,
+ae,ae ,
+aE,aE ,
+Ae,Ae ,
+AE,AE ,
+æ,æ ,
+Æ,Æ ,
+ǽ,ǽ ,
+Ǽ,Ǽ ,
+Ç£,Ç£ ,
+Ç¢,Ç¢ ,
+b,b ,
+B,B ,
+Æ€,Æ€ ,
+Æ,Æ ,
+ƃ,ƃ ,
+Æ‚,Æ‚ ,
+c,c ,
+C,C ,
+ć,ć ,
+Ć,Ć ,
+ĉ,ĉ ,
+Ĉ,Ĉ ,
+Ä,Ä ,
+Č,Č ,
+Ä‹,Ä‹ ,
+ÄŠ,ÄŠ ,
+ç,ç ,
+Ç,Ç ,
+ch,ch ,
+cH,cH ,
+Ch,Ch ,
+CH,CH ,
+ƈ,ƈ ,
+Ƈ,Ƈ ,
+d,d ,
+D,D ,
+Ä,Ä ,
+ÄŽ,ÄŽ ,
+Ä‘,Ä‘ ,
+Ä,Ä ,
+ð,ð ,
+Ã,Ã ,
+dz,dz ,
+dZ,dZ ,
+dz,dz ,
+Dz,Dz ,
+DZ,DZ ,
+Dz,Dz ,
+DZ,DZ ,
+dž,dž ,
+dŽ,dŽ ,
+dž,dž ,
+Dž,Dž ,
+DŽ,DŽ ,
+Ç…,Ç… ,
+Ç„,Ç„ ,
+Ɖ,Ɖ ,
+ÆŠ,ÆŠ ,
+ƌ,ƌ ,
+Æ‹,Æ‹ ,
+e,e ,
+E,E ,
+é,é ,
+É,É ,
+è,è ,
+È,È ,
+Ä•,Ä• ,
+Ä”,Ä” ,
+ê,ê ,
+Ê,Ê ,
+ế,ế ,
+Ế,Ế ,
+á»,á» ,
+Ề,Ề ,
+á»…,á»… ,
+Ễ,Ễ ,
+ể,ể ,
+Ể,Ể ,
+Ä›,Ä› ,
+Äš,Äš ,
+ë,ë ,
+Ë,Ë ,
+ẽ,ẽ ,
+Ẽ,Ẽ ,
+Ä—,Ä— ,
+Ä–,Ä– ,
+Ä™,Ä™ ,
+Ę,Ę ,
+Ä“,Ä“ ,
+Ä’,Ä’ ,
+ẻ,ẻ ,
+Ẻ,Ẻ ,
+ẹ,ẹ ,
+Ẹ,Ẹ ,
+ệ,ệ ,
+Ệ,Ệ ,
+Ç,Ç ,
+ÆŽ,ÆŽ ,
+Æ,Æ ,
+Æ,Æ ,
+f,f ,
+F,F ,
+Æ’,Æ’ ,
+Æ‘,Æ‘ ,
+g,g ,
+G,G ,
+ǵ,ǵ ,
+Ç´,Ç´ ,
+ÄŸ,ÄŸ ,
+Äž,Äž ,
+Ä,Ä ,
+Ĝ,Ĝ ,
+ǧ,ǧ ,
+Ǧ,Ǧ ,
+Ä¡,Ä¡ ,
+Ä ,Ä  ,
+Ä£,Ä£ ,
+Ä¢,Ä¢ ,
+Ç¥,Ç¥ ,
+Ǥ,Ǥ ,
+Æ“,Æ“ ,
+Æ”,Æ” ,
+Æ£,Æ£ ,
+Æ¢,Æ¢ ,
+h,h ,
+H,H ,
+Ä¥,Ä¥ ,
+Ĥ,Ĥ ,
+ħ,ħ ,
+Ħ,Ħ ,
+Æ•,Æ• ,
+Ƕ,Ƕ ,
+i,i ,
+I,I ,
+í,í ,
+Ã,Ã ,
+ì,ì ,
+Ì,Ì ,
+Ä­,Ä­ ,
+Ĭ,Ĭ ,
+î,î ,
+ÃŽ,ÃŽ ,
+Ç,Ç ,
+Ç,Ç ,
+ï,ï ,
+Ã,Ã ,
+Ä©,Ä© ,
+Ĩ,Ĩ ,
+Ä°,Ä° ,
+į,į ,
+Ä®,Ä® ,
+Ä«,Ä« ,
+Ī,Ī ,
+ỉ,ỉ ,
+Ỉ,Ỉ ,
+ị,ị ,
+Ị,Ị ,
+ij,ij ,
+iJ,iJ ,
+ij,ij ,
+Ij,Ij ,
+IJ,IJ ,
+IJ,IJ ,
+ı,ı ,
+Æ—,Æ— ,
+Æ–,Æ– ,
+j,j ,
+J,J ,
+ĵ,ĵ ,
+Ä´,Ä´ ,
+Ç°,Ç° ,
+k,k ,
+K,K ,
+Ç©,Ç© ,
+Ǩ,Ǩ ,
+Ä·,Ä· ,
+Ķ,Ķ ,
+Æ™,Æ™ ,
+Ƙ,Ƙ ,
+l,l ,
+L,L ,
+ĺ,ĺ ,
+Ĺ,Ĺ ,
+ľ,ľ ,
+Ľ,Ľ ,
+ļ,ļ ,
+Ä»,Ä» ,
+Å‚,Å‚ ,
+Å,Å ,
+Å€,Å€ ,
+Ä¿,Ä¿ ,
+lj,lj ,
+lJ,lJ ,
+lj,lj ,
+Lj,Lj ,
+LJ,LJ ,
+Lj,Lj ,
+LJ,LJ ,
+ll,ll ,
+lL,lL ,
+Ll,Ll ,
+LL,LL ,
+Æš,Æš ,
+Æ›,Æ› ,
+m,m ,
+M,M ,
+n,n ,
+N,N ,
+Å„,Å„ ,
+Ń,Ń ,
+ǹ,ǹ ,
+Ǹ,Ǹ ,
+ň,ň ,
+Ň,Ň ,
+ñ,ñ ,
+Ñ,Ñ ,
+ņ,ņ ,
+Å…,Å… ,
+nj,nj ,
+nJ,nJ ,
+nj,nj ,
+Nj,Nj ,
+NJ,NJ ,
+Ç‹,Ç‹ ,
+ÇŠ,ÇŠ ,
+Æ,Æ ,
+Æž,Æž ,
+Å‹,Å‹ ,
+ÅŠ,ÅŠ ,
+o,o ,
+O,O ,
+ó,ó ,
+Ó,Ó ,
+ò,ò ,
+Ã’,Ã’ ,
+Å,Å ,
+ÅŽ,ÅŽ ,
+ô,ô ,
+Ô,Ô ,
+ố,ố ,
+á»,á» ,
+ồ,ồ ,
+á»’,á»’ ,
+á»—,á»— ,
+á»–,á»– ,
+ổ,ổ ,
+á»”,á»” ,
+Ç’,Ç’ ,
+Ç‘,Ç‘ ,
+ö,ö ,
+Ö,Ö ,
+Å‘,Å‘ ,
+Å,Å ,
+õ,õ ,
+Õ,Õ ,
+ø,ø ,
+Ø,Ø ,
+Ç¿,Ç¿ ,
+Ǿ,Ǿ ,
+Ç«,Ç« ,
+Ǫ,Ǫ ,
+Ç­,Ç­ ,
+Ǭ,Ǭ ,
+Å,Å ,
+Ō,Ō ,
+á»,á» ,
+Ỏ,Ỏ ,
+Æ¡,Æ¡ ,
+Æ ,Æ  ,
+á»›,á»› ,
+Ớ,Ớ ,
+á»,á» ,
+Ờ,Ờ ,
+ỡ,ỡ ,
+á» ,á»  ,
+ở,ở ,
+Ở,Ở ,
+ợ,ợ ,
+Ợ,Ợ ,
+á»,á» ,
+Ọ,Ọ ,
+á»™,á»™ ,
+Ộ,Ộ ,
+oe,oe ,
+oE,oE ,
+Oe,Oe ,
+OE,OE ,
+Å“,Å“ ,
+Å’,Å’ ,
+Ɔ,Ɔ ,
+ÆŸ,ÆŸ ,
+p,p ,
+P,P ,
+Æ¥,Æ¥ ,
+Ƥ,Ƥ ,
+q,q ,
+Q,Q ,
+ĸ,ĸ ,
+r,r ,
+R,R ,
+Å•,Å• ,
+Å”,Å” ,
+Å™,Å™ ,
+Ř,Ř ,
+Å—,Å— ,
+Å–,Å– ,
+rr,rr ,
+rR,rR ,
+Rr,Rr ,
+RR,RR ,
+Ʀ,Ʀ ,
+s,s ,
+S,S ,
+Å›,Å› ,
+Åš,Åš ,
+Å,Å ,
+Ŝ,Ŝ ,
+Å¡,Å¡ ,
+Å ,Å  ,
+ÅŸ,ÅŸ ,
+Åž,Åž ,
+Å¿,Å¿ ,
+ss,ss ,
+sS,sS ,
+Ss,Ss ,
+SS,SS ,
+ß,ß ,
+ẞ,ẞ ,
+Æ©,Æ© ,
+ƪ,ƪ ,
+t,t ,
+T,T ,
+Å¥,Å¥ ,
+Ť,Ť ,
+Å£,Å£ ,
+Å¢,Å¢ ,
+ƾ,ƾ ,
+ŧ,ŧ ,
+Ŧ,Ŧ ,
+Æ«,Æ« ,
+Æ­,Æ­ ,
+Ƭ,Ƭ ,
+Æ®,Æ® ,
+u,u ,
+U,U ,
+ú,ú ,
+Ú,Ú ,
+ù,ù ,
+Ù,Ù ,
+Å­,Å­ ,
+Ŭ,Ŭ ,
+û,û ,
+Û,Û ,
+Ç”,Ç” ,
+Ç“,Ç“ ,
+ů,ů ,
+Å®,Å® ,
+ü,ü ,
+Ü,Ü ,
+ǘ,ǘ ,
+Ç—,Ç— ,
+ǜ,ǜ ,
+Ç›,Ç› ,
+Çš,Çš ,
+Ç™,Ç™ ,
+Ç–,Ç– ,
+Ç•,Ç• ,
+ű,ű ,
+Å°,Å° ,
+Å©,Å© ,
+Ũ,Ũ ,
+ų,ų ,
+Ų,Ų ,
+Å«,Å« ,
+Ū,Ū ,
+ủ,ủ ,
+Ủ,Ủ ,
+Æ°,Æ° ,
+Ư,Ư ,
+ứ,ứ ,
+Ứ,Ứ ,
+ừ,ừ ,
+Ừ,Ừ ,
+ữ,ữ ,
+á»®,á»® ,
+á»­,á»­ ,
+Ử,Ử ,
+á»±,á»± ,
+á»°,á»° ,
+ụ,ụ ,
+Ụ,Ụ ,
+Ɯ,Ɯ ,
+Ʊ,Ʊ ,
+v,v ,
+V,V ,
+Ʋ,Ʋ ,
+w,w ,
+W,W ,
+ŵ,ŵ ,
+Å´,Å´ ,
+x,x ,
+X,X ,
+y,y ,
+Y,Y ,
+ý,ý ,
+Ã,Ã ,
+Å·,Å· ,
+Ŷ,Ŷ ,
+ÿ,ÿ ,
+Ÿ,Ÿ ,
+Æ´,Æ´ ,
+Ƴ,Ƴ ,
+z,z ,
+Z,Z ,
+ź,ź ,
+Ź,Ź ,
+ž,ž ,
+Ž,Ž ,
+ż,ż ,
+Å»,Å» ,
+Æ,Æ ,
+ƶ,ƶ ,
+Ƶ,Ƶ ,
+Æ·,Æ· ,
+ǯ,ǯ ,
+Ç®,Ç® ,
+ƹ,ƹ ,
+Ƹ,Ƹ ,
+ƺ,ƺ ,
+þ,þ ,
+Þ,Þ ,
+Æ¿,Æ¿ ,
+Ç·,Ç· ,
+Æ»,Æ» ,
+ƨ,ƨ ,
+Ƨ,Ƨ ,
+ƽ,ƽ ,
+Ƽ,Ƽ ,
+Æ…,Æ… ,
+Æ„,Æ„ ,
+ʼn,ʼn ,
+Ç€,Ç€ ,
+Ç,Ç ,
+Ç‚,Ç‚ ,
+ǃ,ǃ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 GROUP BY a COLLATE uca1400_nopad_as_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+÷,
+÷ ,
+×,
+× ,
+A,a,
+Ã,á,
+À,à,
+Ă,ă,
+Ắ,ắ,
+Ằ,ằ,
+Ẵ,ẵ,
+Ẳ,ẳ,
+Â,â,
+Ấ,ấ,
+Ầ,ầ,
+Ẫ,ẫ,
+Ẩ,ẩ,
+Ç,ÇŽ,
+Ã…,Ã¥,
+Ǻ,ǻ,
+Ä,ä,
+Çž,ÇŸ,
+Ã,ã,
+Ç ,Ç¡,
+Ä„,Ä…,
+Ä€,Ä,
+Ả,ả,
+Ạ,ạ,
+Ặ,ặ,
+Ậ,ậ,
+A ,a ,
+à ,á ,
+À ,à ,
+Ă ,ă ,
+Ắ ,ắ ,
+Ằ ,ằ ,
+Ẵ ,ẵ ,
+Ẳ ,ẳ ,
+Â ,â ,
+Ấ ,ấ ,
+Ầ ,ầ ,
+Ẫ ,ẫ ,
+Ẩ ,ẩ ,
+Ç ,ÇŽ ,
+Ã… ,Ã¥ ,
+Ǻ ,ǻ ,
+Ä ,ä ,
+Çž ,ÇŸ ,
+Ã ,ã ,
+Ç  ,Ç¡ ,
+Ä„ ,Ä… ,
+Ä€ ,Ä ,
+Ả ,ả ,
+Ạ ,ạ ,
+Ặ ,ặ ,
+Ậ ,ậ ,
+AA,Aa,aA,aa,
+AA ,Aa ,aA ,aa ,
+AE,Ae,aE,ae,
+Æ,æ,
+Ǽ,ǽ,
+Ç¢,Ç£,
+AE ,Ae ,aE ,ae ,
+Æ ,æ ,
+Ǽ ,ǽ ,
+Ç¢ ,Ç£ ,
+B,b,
+B ,b ,
+Æ€,
+Æ€ ,
+Æ,
+Æ ,
+Ƃ,ƃ,
+Ƃ ,ƃ ,
+C,c,
+Ć,ć,
+Ĉ,ĉ,
+ÄŒ,Ä,
+ÄŠ,Ä‹,
+Ç,ç,
+C ,c ,
+Ć ,ć ,
+Ĉ ,ĉ ,
+ÄŒ ,Ä ,
+ÄŠ ,Ä‹ ,
+Ç ,ç ,
+CH,Ch,cH,ch,
+CH ,Ch ,cH ,ch ,
+Ƈ,ƈ,
+Ƈ ,ƈ ,
+D,d,
+ÄŽ,Ä,
+Ä,Ä‘,
+Ã,ð,
+D ,d ,
+ÄŽ ,Ä ,
+Ä ,Ä‘ ,
+à ,ð ,
+DZ,Dz,dZ,dz,DZ,Dz,dz,
+DŽ,Dž,dŽ,dž,DŽ,Dž,dž,
+DZ ,Dz ,dZ ,dz ,DZ ,Dz ,dz ,
+DŽ ,Dž ,dŽ ,dž ,DŽ ,Dž ,dž ,
+Ɖ,
+Ɖ ,
+ÆŠ,
+ÆŠ ,
+Ƌ,ƌ,
+Ƌ ,ƌ ,
+E,e,
+É,é,
+È,è,
+Ä”,Ä•,
+Ê,ê,
+Ế,ế,
+Ề,á»,
+Ễ,ễ,
+Ể,ể,
+Äš,Ä›,
+Ë,ë,
+Ẽ,ẽ,
+Ä–,Ä—,
+Ę,ę,
+Ä’,Ä“,
+Ẻ,ẻ,
+Ẹ,ẹ,
+Ệ,ệ,
+E ,e ,
+É ,é ,
+È ,è ,
+Ä” ,Ä• ,
+Ê ,ê ,
+Ế ,ế ,
+Ề ,Ỡ,
+Ễ ,ễ ,
+Ể ,ể ,
+Äš ,Ä› ,
+Ë ,ë ,
+Ẽ ,ẽ ,
+Ä– ,Ä— ,
+Ę ,ę ,
+Ä’ ,Ä“ ,
+Ẻ ,ẻ ,
+Ẹ ,ẹ ,
+Ệ ,ệ ,
+ÆŽ,Ç,
+ÆŽ ,Ç ,
+Æ,
+Æ ,
+Æ,
+Æ ,
+F,f,
+F ,f ,
+Æ‘,Æ’,
+Æ‘ ,Æ’ ,
+G,g,
+Ǵ,ǵ,
+Äž,ÄŸ,
+Äœ,Ä,
+Ǧ,ǧ,
+Ä ,Ä¡,
+Ä¢,Ä£,
+G ,g ,
+Ǵ ,ǵ ,
+Äž ,ÄŸ ,
+Äœ ,Ä ,
+Ǧ ,ǧ ,
+Ä  ,Ä¡ ,
+Ä¢ ,Ä£ ,
+Ǥ,ǥ,
+Ǥ ,ǥ ,
+Æ“,
+Æ“ ,
+Æ”,
+Æ” ,
+Æ¢,Æ£,
+Æ¢ ,Æ£ ,
+H,h,
+Ĥ,ĥ,
+Ħ,ħ,
+H ,h ,
+Ĥ ,ĥ ,
+Ħ ,ħ ,
+ƕ,Ƕ,
+ƕ ,Ƕ ,
+I,i,
+Ã,í,
+Ì,ì,
+Ĭ,ĭ,
+Î,î,
+Ç,Ç,
+Ã,ï,
+Ĩ,ĩ,
+Ä°,
+Į,į,
+Ī,ī,
+Ỉ,ỉ,
+Ị,ị,
+I ,i ,
+à ,í ,
+Ì ,ì ,
+Ĭ ,ĭ ,
+Î ,î ,
+Ç ,Ç ,
+à ,ï ,
+Ĩ ,ĩ ,
+Ä° ,
+Į ,į ,
+Ī ,ī ,
+Ỉ ,ỉ ,
+Ị ,ị ,
+IJ,Ij,iJ,ij,IJ,ij,
+IJ ,Ij ,iJ ,ij ,IJ ,ij ,
+ı,
+ı ,
+Æ—,
+Æ— ,
+Æ–,
+Æ– ,
+J,j,
+Ĵ,ĵ,
+Ç°,
+J ,j ,
+Ĵ ,ĵ ,
+Ç° ,
+K,k,
+Ǩ,ǩ,
+Ķ,ķ,
+K ,k ,
+Ǩ ,ǩ ,
+Ķ ,ķ ,
+Ƙ,ƙ,
+Ƙ ,ƙ ,
+L,l,
+Ĺ,ĺ,
+Ľ,ľ,
+Ļ,ļ,
+Å,Å‚,
+Ä¿,Å€,
+L ,l ,
+Ĺ ,ĺ ,
+Ľ ,ľ ,
+Ļ ,ļ ,
+Å ,Å‚ ,
+Ä¿ ,Å€ ,
+LJ,Lj,lJ,lj,LJ,Lj,lj,
+LJ ,Lj ,lJ ,lj ,LJ ,Lj ,lj ,
+LL,Ll,lL,ll,
+LL ,Ll ,lL ,ll ,
+Æš,
+Æš ,
+Æ›,
+Æ› ,
+M,m,
+M ,m ,
+N,n,
+Ń,ń,
+Ǹ,ǹ,
+Ň,ň,
+Ñ,ñ,
+Ņ,ņ,
+N ,n ,
+Ń ,ń ,
+Ǹ ,ǹ ,
+Ň ,ň ,
+Ñ ,ñ ,
+Ņ ,ņ ,
+NJ,Nj,nJ,nj,NJ,Nj,nj,
+NJ ,Nj ,nJ ,nj ,NJ ,Nj ,nj ,
+Æ,
+Æ ,
+Æž,
+Æž ,
+ÅŠ,Å‹,
+ÅŠ ,Å‹ ,
+O,o,
+Ó,ó,
+Ò,ò,
+ÅŽ,Å,
+Ô,ô,
+á»,ố,
+Ồ,ồ,
+á»–,á»—,
+Ổ,ổ,
+Ç‘,Ç’,
+Ö,ö,
+Å,Å‘,
+Õ,õ,
+Ø,ø,
+Ǿ,ǿ,
+Ǫ,ǫ,
+Ǭ,ǭ,
+ÅŒ,Å,
+Ỏ,á»,
+Æ ,Æ¡,
+Ớ,ớ,
+Ờ,á»,
+Ỡ,ỡ,
+Ở,ở,
+Ợ,ợ,
+Ọ,á»,
+Ộ,ộ,
+O ,o ,
+Ó ,ó ,
+Ò ,ò ,
+ÅŽ ,Å ,
+Ô ,ô ,
+Ỡ,ố ,
+Ồ ,ồ ,
+á»– ,á»— ,
+Ổ ,ổ ,
+Ç‘ ,Ç’ ,
+Ö ,ö ,
+Å ,Å‘ ,
+Õ ,õ ,
+Ø ,ø ,
+Ǿ ,ǿ ,
+Ǫ ,ǫ ,
+Ǭ ,ǭ ,
+Ō ,Š,
+Ỏ ,Ỡ,
+Æ  ,Æ¡ ,
+Ớ ,ớ ,
+Ờ ,Ỡ,
+Ỡ ,ỡ ,
+Ở ,ở ,
+Ợ ,ợ ,
+Ọ ,Ỡ,
+Ộ ,ộ ,
+OE,Oe,oE,oe,
+Å’,Å“,
+OE ,Oe ,oE ,oe ,
+Å’ ,Å“ ,
+Ɔ,
+Ɔ ,
+ÆŸ,
+ÆŸ ,
+P,p,
+P ,p ,
+Ƥ,ƥ,
+Ƥ ,ƥ ,
+Q,q,
+Q ,q ,
+ĸ,
+ĸ ,
+R,r,
+Å”,Å•,
+Ř,ř,
+Å–,Å—,
+R ,r ,
+Å” ,Å• ,
+Ř ,ř ,
+Å– ,Å— ,
+RR,Rr,rR,rr,
+RR ,Rr ,rR ,rr ,
+Ʀ,
+Ʀ ,
+S,s,
+Åš,Å›,
+Åœ,Å,
+Å ,Å¡,
+Åž,ÅŸ,
+Å¿,
+S ,s ,
+Åš ,Å› ,
+Ŝ ,Š,
+Å  ,Å¡ ,
+Åž ,ÅŸ ,
+Å¿ ,
+SS,Ss,sS,ss,
+ß,ẞ,
+SS ,Ss ,sS ,ss ,
+ß ,ẞ ,
+Æ©,
+Æ© ,
+ƪ,
+ƪ ,
+T,t,
+Ť,ť,
+Å¢,Å£,
+T ,t ,
+Ť ,ť ,
+Å¢ ,Å£ ,
+ƾ,
+ƾ ,
+Ŧ,ŧ,
+Ŧ ,ŧ ,
+Æ«,
+Æ« ,
+Ƭ,ƭ,
+Ƭ ,ƭ ,
+Æ®,
+Æ® ,
+U,u,
+Ú,ú,
+Ù,ù,
+Ŭ,ŭ,
+Û,û,
+Ç“,Ç”,
+Ů,ů,
+Ü,ü,
+Ǘ,ǘ,
+Ǜ,ǜ,
+Ç™,Çš,
+Ç•,Ç–,
+Ű,ű,
+Ũ,ũ,
+Ų,ų,
+Ū,ū,
+Ủ,ủ,
+Ư,ư,
+Ứ,ứ,
+Ừ,ừ,
+Ữ,ữ,
+Ử,ử,
+á»°,á»±,
+Ụ,ụ,
+U ,u ,
+Ú ,ú ,
+Ù ,ù ,
+Ŭ ,ŭ ,
+Û ,û ,
+Ç“ ,Ç” ,
+Ů ,ů ,
+Ü ,ü ,
+Ǘ ,ǘ ,
+Ǜ ,ǜ ,
+Ç™ ,Çš ,
+Ç• ,Ç– ,
+Ű ,ű ,
+Ũ ,ũ ,
+Ų ,ų ,
+Ū ,ū ,
+Ủ ,ủ ,
+Ư ,ư ,
+Ứ ,ứ ,
+Ừ ,ừ ,
+Ữ ,ữ ,
+Ử ,ử ,
+á»° ,á»± ,
+Ụ ,ụ ,
+Ɯ,
+Ɯ ,
+Ʊ,
+Ʊ ,
+V,v,
+V ,v ,
+Ʋ,
+Ʋ ,
+W,w,
+Ŵ,ŵ,
+W ,w ,
+Ŵ ,ŵ ,
+X,x,
+X ,x ,
+Y,y,
+Ã,ý,
+Ŷ,ŷ,
+ÿ,Ÿ,
+Y ,y ,
+à ,ý ,
+Ŷ ,ŷ ,
+ÿ ,Ÿ ,
+Ƴ,ƴ,
+Ƴ ,ƴ ,
+Z,z,
+Ź,ź,
+Ž,ž,
+Ż,ż,
+Z ,z ,
+Ź ,ź ,
+Ž ,ž ,
+Ż ,ż ,
+Æ,
+Æ ,
+Ƶ,ƶ,
+Ƶ ,ƶ ,
+Æ·,
+Ǯ,ǯ,
+Æ· ,
+Ǯ ,ǯ ,
+Ƹ,ƹ,
+Ƹ ,ƹ ,
+ƺ,
+ƺ ,
+Þ,þ,
+Þ ,þ ,
+Æ¿,Ç·,
+Æ¿ ,Ç· ,
+Æ»,
+Æ» ,
+Ƨ,ƨ,
+Ƨ ,ƨ ,
+Ƽ,ƽ,
+Ƽ ,ƽ ,
+Æ„,Æ…,
+Æ„ ,Æ… ,
+ʼn,
+ʼn ,
+Ç€,
+Ç€ ,
+Ç,
+Ç ,
+Ç‚,
+Ç‚ ,
+ǃ,
+ǃ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 GROUP BY a COLLATE uca1400_as_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+÷,÷ ,
+×,× ,
+A,A ,a,a ,
+Ã,à ,á,á ,
+À,À ,à,à ,
+Ă,Ă ,ă,ă ,
+Ắ,Ắ ,ắ,ắ ,
+Ằ,Ằ ,ằ,ằ ,
+Ẵ,Ẵ ,ẵ,ẵ ,
+Ẳ,Ẳ ,ẳ,ẳ ,
+Â, ,â,â ,
+Ấ,Ấ ,ấ,ấ ,
+Ầ,Ầ ,ầ,ầ ,
+Ẫ,Ẫ ,ẫ,ẫ ,
+Ẩ,Ẩ ,ẩ,ẩ ,
+Ç,Ç ,ÇŽ,ÇŽ ,
+Ã…,Ã… ,Ã¥,Ã¥ ,
+Ǻ,Ǻ ,ǻ,ǻ ,
+Ä,Ä ,ä,ä ,
+Çž,Çž ,ÇŸ,ÇŸ ,
+Ã,Ã ,ã,ã ,
+Ç ,Ç  ,Ç¡,Ç¡ ,
+Ä„,Ä„ ,Ä…,Ä… ,
+Ä€,Ä€ ,Ä,Ä ,
+Ả,Ả ,ả,ả ,
+Ạ,Ạ ,ạ,ạ ,
+Ặ,Ặ ,ặ,ặ ,
+Ậ,Ậ ,ậ,ậ ,
+AA,AA ,Aa,Aa ,aA,aA ,aa,aa ,
+AE,AE ,Ae,Ae ,aE,aE ,ae,ae ,
+Æ,Æ ,æ,æ ,
+Ǽ,Ǽ ,ǽ,ǽ ,
+Ç¢,Ç¢ ,Ç£,Ç£ ,
+B,B ,b,b ,
+Æ€,Æ€ ,
+Æ,Æ ,
+Ƃ,Ƃ ,ƃ,ƃ ,
+C,C ,c,c ,
+Ć,Ć ,ć,ć ,
+Ĉ,Ĉ ,ĉ,ĉ ,
+ÄŒ,ÄŒ ,Ä,Ä ,
+ÄŠ,ÄŠ ,Ä‹,Ä‹ ,
+Ç,Ç ,ç,ç ,
+CH,CH ,Ch,Ch ,cH,cH ,ch,ch ,
+Ƈ,Ƈ ,ƈ,ƈ ,
+D,D ,d,d ,
+ÄŽ,ÄŽ ,Ä,Ä ,
+Ä,Ä ,Ä‘,Ä‘ ,
+Ã,à ,ð,ð ,
+DZ,DZ ,Dz,Dz ,dZ,dZ ,dz,dz ,DZ,DZ ,Dz,Dz ,dz,dz ,
+DŽ,DŽ ,Dž,Dž ,dŽ,dŽ ,dž,dž ,DŽ,DŽ ,Dž,Dž ,dž,dž ,
+Ɖ,Ɖ ,
+ÆŠ,ÆŠ ,
+Ƌ,Ƌ ,ƌ,ƌ ,
+E,E ,e,e ,
+É,É ,é,é ,
+È,È ,è,è ,
+Ä”,Ä” ,Ä•,Ä• ,
+Ê,Ê ,ê,ê ,
+Ế,Ế ,ế,ế ,
+Ề,Ề ,á»,á» ,
+Ễ,Ễ ,ễ,ễ ,
+Ể,Ể ,ể,ể ,
+Äš,Äš ,Ä›,Ä› ,
+Ë,Ë ,ë,ë ,
+Ẽ,Ẽ ,ẽ,ẽ ,
+Ä–,Ä– ,Ä—,Ä— ,
+Ę,Ę ,ę,ę ,
+Ä’,Ä’ ,Ä“,Ä“ ,
+Ẻ,Ẻ ,ẻ,ẻ ,
+Ẹ,Ẹ ,ẹ,ẹ ,
+Ệ,Ệ ,ệ,ệ ,
+ÆŽ,ÆŽ ,Ç,Ç ,
+Æ,Æ ,
+Æ,Æ ,
+F,F ,f,f ,
+Æ‘,Æ‘ ,Æ’,Æ’ ,
+G,G ,g,g ,
+Ǵ,Ǵ ,ǵ,ǵ ,
+Äž,Äž ,ÄŸ,ÄŸ ,
+Äœ,Äœ ,Ä,Ä ,
+Ǧ,Ǧ ,ǧ,ǧ ,
+Ä ,Ä  ,Ä¡,Ä¡ ,
+Ä¢,Ä¢ ,Ä£,Ä£ ,
+Ǥ,Ǥ ,ǥ,ǥ ,
+Æ“,Æ“ ,
+Æ”,Æ” ,
+Æ¢,Æ¢ ,Æ£,Æ£ ,
+H,H ,h,h ,
+Ĥ,Ĥ ,ĥ,ĥ ,
+Ħ,Ħ ,ħ,ħ ,
+ƕ,ƕ ,Ƕ,Ƕ ,
+I,I ,i,i ,
+Ã,à ,í,í ,
+Ì,Ì ,ì,ì ,
+Ĭ,Ĭ ,ĭ,ĭ ,
+Î,Î ,î,î ,
+Ç,Ç ,Ç,Ç ,
+Ã,à ,ï,ï ,
+Ĩ,Ĩ ,ĩ,ĩ ,
+Ä°,Ä° ,
+Į,Į ,į,į ,
+Ī,Ī ,ī,ī ,
+Ỉ,Ỉ ,ỉ,ỉ ,
+Ị,Ị ,ị,ị ,
+IJ,IJ ,Ij,Ij ,iJ,iJ ,ij,ij ,IJ,IJ ,ij,ij ,
+ı,ı ,
+Æ—,Æ— ,
+Æ–,Æ– ,
+J,J ,j,j ,
+Ĵ,Ĵ ,ĵ,ĵ ,
+Ç°,Ç° ,
+K,K ,k,k ,
+Ǩ,Ǩ ,ǩ,ǩ ,
+Ķ,Ķ ,ķ,ķ ,
+Ƙ,Ƙ ,ƙ,ƙ ,
+L,L ,l,l ,
+Ĺ,Ĺ ,ĺ,ĺ ,
+Ľ,Ľ ,ľ,ľ ,
+Ļ,Ļ ,ļ,ļ ,
+Å,Å ,Å‚,Å‚ ,
+Ä¿,Ä¿ ,Å€,Å€ ,
+LJ,LJ ,Lj,Lj ,lJ,lJ ,lj,lj ,LJ,LJ ,Lj,Lj ,lj,lj ,
+LL,LL ,Ll,Ll ,lL,lL ,ll,ll ,
+Æš,Æš ,
+Æ›,Æ› ,
+M,M ,m,m ,
+N,N ,n,n ,
+Ń,Ń ,ń,ń ,
+Ǹ,Ǹ ,ǹ,ǹ ,
+Ň,Ň ,ň,ň ,
+Ñ,Ñ ,ñ,ñ ,
+Ņ,Ņ ,ņ,ņ ,
+NJ,NJ ,Nj,Nj ,nJ,nJ ,nj,nj ,NJ,NJ ,Nj,Nj ,nj,nj ,
+Æ,Æ ,
+Æž,Æž ,
+ÅŠ,ÅŠ ,Å‹,Å‹ ,
+O,O ,o,o ,
+Ó,Ó ,ó,ó ,
+Ò,Ò ,ò,ò ,
+ÅŽ,ÅŽ ,Å,Å ,
+Ô,Ô ,ô,ô ,
+á»,á» ,ố,ố ,
+Ồ,Ồ ,ồ,ồ ,
+á»–,á»– ,á»—,á»— ,
+Ổ,Ổ ,ổ,ổ ,
+Ç‘,Ç‘ ,Ç’,Ç’ ,
+Ö,Ö ,ö,ö ,
+Å,Å ,Å‘,Å‘ ,
+Õ,Õ ,õ,õ ,
+Ø,Ø ,ø,ø ,
+Ǿ,Ǿ ,ǿ,ǿ ,
+Ǫ,Ǫ ,ǫ,ǫ ,
+Ǭ,Ǭ ,ǭ,ǭ ,
+ÅŒ,ÅŒ ,Å,Å ,
+Ỏ,Ỏ ,á»,á» ,
+Æ ,Æ  ,Æ¡,Æ¡ ,
+Ớ,Ớ ,ớ,ớ ,
+Ờ,Ờ ,á»,á» ,
+Ỡ,Ỡ ,ỡ,ỡ ,
+Ở,Ở ,ở,ở ,
+Ợ,Ợ ,ợ,ợ ,
+Ọ,Ọ ,á»,á» ,
+Ộ,Ộ ,ộ,ộ ,
+OE,OE ,Oe,Oe ,oE,oE ,oe,oe ,
+Å’,Å’ ,Å“,Å“ ,
+Ɔ,Ɔ ,
+ÆŸ,ÆŸ ,
+P,P ,p,p ,
+Ƥ,Ƥ ,ƥ,ƥ ,
+Q,Q ,q,q ,
+ĸ,ĸ ,
+R,R ,r,r ,
+Å”,Å” ,Å•,Å• ,
+Ř,Ř ,ř,ř ,
+Å–,Å– ,Å—,Å— ,
+RR,RR ,Rr,Rr ,rR,rR ,rr,rr ,
+Ʀ,Ʀ ,
+S,S ,s,s ,
+Åš,Åš ,Å›,Å› ,
+Åœ,Åœ ,Å,Å ,
+Å ,Å  ,Å¡,Å¡ ,
+Åž,Åž ,ÅŸ,ÅŸ ,
+Å¿,Å¿ ,
+SS,SS ,Ss,Ss ,sS,sS ,ss,ss ,
+ß,ß ,ẞ,ẞ ,
+Æ©,Æ© ,
+ƪ,ƪ ,
+T,T ,t,t ,
+Ť,Ť ,ť,ť ,
+Å¢,Å¢ ,Å£,Å£ ,
+ƾ,ƾ ,
+Ŧ,Ŧ ,ŧ,ŧ ,
+Æ«,Æ« ,
+Ƭ,Ƭ ,ƭ,ƭ ,
+Æ®,Æ® ,
+U,U ,u,u ,
+Ú,Ú ,ú,ú ,
+Ù,Ù ,ù,ù ,
+Ŭ,Ŭ ,ŭ,ŭ ,
+Û,Û ,û,û ,
+Ç“,Ç“ ,Ç”,Ç” ,
+Ů,Ů ,ů,ů ,
+Ü,Ü ,ü,ü ,
+Ǘ,Ǘ ,ǘ,ǘ ,
+Ǜ,Ǜ ,ǜ,ǜ ,
+Ç™,Ç™ ,Çš,Çš ,
+Ç•,Ç• ,Ç–,Ç– ,
+Ű,Ű ,ű,ű ,
+Ũ,Ũ ,ũ,ũ ,
+Ų,Ų ,ų,ų ,
+Ū,Ū ,ū,ū ,
+Ủ,Ủ ,ủ,ủ ,
+Ư,Ư ,ư,ư ,
+Ứ,Ứ ,ứ,ứ ,
+Ừ,Ừ ,ừ,ừ ,
+Ữ,Ữ ,ữ,ữ ,
+Ử,Ử ,ử,ử ,
+á»°,á»° ,á»±,á»± ,
+Ụ,Ụ ,ụ,ụ ,
+Ɯ,Ɯ ,
+Ʊ,Ʊ ,
+V,V ,v,v ,
+Ʋ,Ʋ ,
+W,W ,w,w ,
+Ŵ,Ŵ ,ŵ,ŵ ,
+X,X ,x,x ,
+Y,Y ,y,y ,
+Ã,à ,ý,ý ,
+Ŷ,Ŷ ,ŷ,ŷ ,
+ÿ,ÿ ,Ÿ,Ÿ ,
+Ƴ,Ƴ ,ƴ,ƴ ,
+Z,Z ,z,z ,
+Ź,Ź ,ź,ź ,
+Ž,Ž ,ž,ž ,
+Ż,Ż ,ż,ż ,
+Æ,Æ ,
+Ƶ,Ƶ ,ƶ,ƶ ,
+Æ·,Æ· ,
+Ǯ,Ǯ ,ǯ,ǯ ,
+Ƹ,Ƹ ,ƹ,ƹ ,
+ƺ,ƺ ,
+Þ,Þ ,þ,þ ,
+Æ¿,Æ¿ ,Ç·,Ç· ,
+Æ»,Æ» ,
+Ƨ,Ƨ ,ƨ,ƨ ,
+Ƽ,Ƽ ,ƽ,ƽ ,
+Æ„,Æ„ ,Æ…,Æ… ,
+ʼn,ʼn ,
+Ç€,Ç€ ,
+Ç,Ç ,
+Ç‚,Ç‚ ,
+ǃ,ǃ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 GROUP BY a COLLATE uca1400_nopad_ai_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+÷,
+÷ ,
+×,
+× ,
+a,à,á,â,ã,ä,Ã¥,Ä,ă,Ä…,ÇŽ,ÇŸ,Ç¡,Ç»,ạ,ả,ấ,ầ,ẩ,ẫ,ậ,ắ,ằ,ẳ,ẵ,ặ,
+A,À,Ã,Â,Ã,Ä,Ã…,Ä€,Ä‚,Ä„,Ç,Çž,Ç ,Ǻ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ẵ,Ặ,
+a ,à ,á ,â ,ã ,ä ,Ã¥ ,Ä ,ă ,Ä… ,ÇŽ ,ÇŸ ,Ç¡ ,Ç» ,ạ ,ả ,ấ ,ầ ,ẩ ,ẫ ,ậ ,ắ ,ằ ,ẳ ,ẵ ,ặ ,
+A ,À ,à , ,à ,Ä ,Ã… ,Ä€ ,Ä‚ ,Ä„ ,Ç ,Çž ,Ç  ,Ǻ ,Ạ ,Ả ,Ấ ,Ầ ,Ẩ ,Ẫ ,Ậ ,Ắ ,Ằ ,Ẳ ,Ẵ ,Ặ ,
+aa,
+aA,
+Aa,
+AA,
+aa ,
+aA ,
+Aa ,
+AA ,
+ae,
+aE,
+æ,ǣ,ǽ,
+Ae,
+AE,
+Æ,Ǣ,Ǽ,
+ae ,
+aE ,
+æ ,ǣ ,ǽ ,
+Ae ,
+AE ,
+Æ ,Ǣ ,Ǽ ,
+b,
+B,
+b ,
+B ,
+Æ€,
+Æ€ ,
+Æ,
+Æ ,
+ƃ,
+Æ‚,
+ƃ ,
+Æ‚ ,
+c,ç,ć,ĉ,Ä‹,Ä,
+C,Ç,Ć,Ĉ,Ċ,Č,
+c ,ç ,ć ,ĉ ,Ä‹ ,Ä ,
+C ,Ç ,Ć ,Ĉ ,Ċ ,Č ,
+ch,
+cH,
+Ch,
+CH,
+ch ,
+cH ,
+Ch ,
+CH ,
+ƈ,
+Ƈ,
+ƈ ,
+Ƈ ,
+d,Ä,Ä‘,
+ð,
+D,ÄŽ,Ä,
+Ã,
+d ,Ä ,Ä‘ ,
+ð ,
+D ,ÄŽ ,Ä ,
+Ã ,
+dz,dž,
+dZ,dŽ,
+dz,
+dž,
+Dz,Dž,
+DZ,DŽ,
+Dz,
+Ç…,
+DZ,
+Ç„,
+dz ,dž ,
+dZ ,dŽ ,
+dz ,
+dž ,
+Dz ,Dž ,
+DZ ,DŽ ,
+Dz ,
+Ç… ,
+DZ ,
+Ç„ ,
+Ɖ,
+Ɖ ,
+ÆŠ,
+ÆŠ ,
+ƌ,
+Æ‹,
+ƌ ,
+Æ‹ ,
+e,è,é,ê,ë,Ä“,Ä•,Ä—,Ä™,Ä›,ẹ,ẻ,ẽ,ế,á»,ể,á»…,ệ,
+E,È,É,Ê,Ë,Ē,Ĕ,Ė,Ę,Ě,Ẹ,Ẻ,Ẽ,Ế,Ề,Ể,Ễ,Ệ,
+e ,è ,é ,ê ,ë ,ē ,ĕ ,ė ,ę ,ě ,ẹ ,ẻ ,ẽ ,ế ,Ỡ,ể ,ễ ,ệ ,
+E ,È ,É ,Ê ,Ë ,Ē ,Ĕ ,Ė ,Ę ,Ě ,Ẹ ,Ẻ ,Ẽ ,Ế ,Ề ,Ể ,Ễ ,Ệ ,
+Ç,
+ÆŽ,
+Ç ,
+ÆŽ ,
+Æ,
+Æ ,
+Æ,
+Æ ,
+f,
+F,
+f ,
+F ,
+Æ’,
+Æ‘,
+Æ’ ,
+Æ‘ ,
+g,Ä,ÄŸ,Ä¡,Ä£,ǧ,ǵ,
+G,Ĝ,Ğ,Ġ,Ģ,Ǧ,Ǵ,
+g ,Ä ,ÄŸ ,Ä¡ ,Ä£ ,ǧ ,ǵ ,
+G ,Ĝ ,Ğ ,Ġ ,Ģ ,Ǧ ,Ǵ ,
+Ç¥,
+Ǥ,
+Ç¥ ,
+Ǥ ,
+Æ“,
+Æ“ ,
+Æ”,
+Æ” ,
+Æ£,
+Æ¢,
+Æ£ ,
+Æ¢ ,
+h,ĥ,ħ,
+H,Ĥ,Ħ,
+h ,ĥ ,ħ ,
+H ,Ĥ ,Ħ ,
+Æ•,
+Ƕ,
+Æ• ,
+Ƕ ,
+i,ì,í,î,ï,Ä©,Ä«,Ä­,į,Ç,ỉ,ị,
+I,ÃŒ,Ã,ÃŽ,Ã,Ĩ,Ī,Ĭ,Ä®,Ä°,Ç,Ỉ,Ị,
+i ,ì ,í ,î ,ï ,Ä© ,Ä« ,Ä­ ,į ,Ç ,ỉ ,ị ,
+I ,ÃŒ ,à ,ÃŽ ,à ,Ĩ ,Ī ,Ĭ ,Ä® ,Ä° ,Ç ,Ỉ ,Ị ,
+ij,
+iJ,
+ij,
+Ij,
+IJ,
+IJ,
+ij ,
+iJ ,
+ij ,
+Ij ,
+IJ ,
+IJ ,
+ı,
+ı ,
+Æ—,
+Æ— ,
+Æ–,
+Æ– ,
+j,ĵ,ǰ,
+J,Ä´,
+j ,ĵ ,ǰ ,
+J ,Ä´ ,
+k,Ä·,Ç©,
+K,Ķ,Ǩ,
+k ,Ä· ,Ç© ,
+K ,Ķ ,Ǩ ,
+Æ™,
+Ƙ,
+Æ™ ,
+Ƙ ,
+l,ĺ,ļ,ľ,ŀ,ł,
+L,Ĺ,Ä»,Ľ,Ä¿,Å,
+l ,ĺ ,ļ ,ľ ,ŀ ,ł ,
+L ,Ĺ ,Ļ ,Ľ ,Ŀ ,Š,
+lj,
+lJ,
+lj,
+Lj,
+LJ,
+Lj,
+LJ,
+lj ,
+lJ ,
+lj ,
+Lj ,
+LJ ,
+Lj ,
+LJ ,
+ll,
+lL,
+Ll,
+LL,
+ll ,
+lL ,
+Ll ,
+LL ,
+Æš,
+Æš ,
+Æ›,
+Æ› ,
+m,
+M,
+m ,
+M ,
+n,ñ,ń,ņ,ň,ǹ,
+N,Ñ,Ń,Ņ,Ň,Ǹ,
+n ,ñ ,ń ,ņ ,ň ,ǹ ,
+N ,Ñ ,Ń ,Ņ ,Ň ,Ǹ ,
+nj,
+nJ,
+nj,
+Nj,
+NJ,
+Ç‹,
+ÇŠ,
+nj ,
+nJ ,
+nj ,
+Nj ,
+NJ ,
+Ç‹ ,
+ÇŠ ,
+Æ,
+Æ ,
+Æž,
+Æž ,
+Å‹,
+ÅŠ,
+Å‹ ,
+ÅŠ ,
+o,ò,ó,ô,õ,ö,ø,Å,Å,Å‘,Æ¡,Ç’,Ç«,Ç­,Ç¿,á»,á»,ố,ồ,ổ,á»—,á»™,á»›,á»,ở,ỡ,ợ,
+O,Ã’,Ó,Ô,Õ,Ö,Ø,ÅŒ,ÅŽ,Å,Æ ,Ç‘,Ǫ,Ǭ,Ǿ,Ọ,Ỏ,á»,á»’,á»”,á»–,Ộ,Ớ,Ờ,Ở,á» ,Ợ,
+o ,ò ,ó ,ô ,õ ,ö ,ø ,Š,Š,ő ,ơ ,ǒ ,ǫ ,ǭ ,ǿ ,Ỡ,Ỡ,ố ,ồ ,ổ ,ỗ ,ộ ,ớ ,Ỡ,ở ,ỡ ,ợ ,
+O ,Ò ,Ó ,Ô ,Õ ,Ö ,Ø ,Ō ,Ŏ ,Š,Ơ ,Ǒ ,Ǫ ,Ǭ ,Ǿ ,Ọ ,Ỏ ,Ỡ,Ồ ,Ổ ,Ỗ ,Ộ ,Ớ ,Ờ ,Ở ,Ỡ ,Ợ ,
+oe,
+oE,
+Å“,
+Oe,
+OE,
+Å’,
+oe ,
+oE ,
+Å“ ,
+Oe ,
+OE ,
+Å’ ,
+Ɔ,
+Ɔ ,
+ÆŸ,
+ÆŸ ,
+p,
+P,
+p ,
+P ,
+Æ¥,
+Ƥ,
+Æ¥ ,
+Ƥ ,
+q,
+Q,
+q ,
+Q ,
+ĸ,
+ĸ ,
+r,Å•,Å—,Å™,
+R,Ŕ,Ŗ,Ř,
+r ,Å• ,Å— ,Å™ ,
+R ,Ŕ ,Ŗ ,Ř ,
+rr,
+rR,
+Rr,
+RR,
+rr ,
+rR ,
+Rr ,
+RR ,
+Ʀ,
+Ʀ ,
+s,Å›,Å,ÅŸ,Å¡,
+Å¿,
+S,Ś,Ŝ,Ş,Š,
+s ,Å› ,Å ,ÅŸ ,Å¡ ,
+Å¿ ,
+S ,Ś ,Ŝ ,Ş ,Š ,
+ss,
+sS,
+ß,
+Ss,
+SS,
+ẞ,
+ss ,
+sS ,
+ß ,
+Ss ,
+SS ,
+ẞ ,
+Æ©,
+Æ© ,
+ƪ,
+ƪ ,
+t,Å£,Å¥,
+T,Ţ,Ť,
+t ,Å£ ,Å¥ ,
+T ,Ţ ,Ť ,
+ƾ,
+ƾ ,
+ŧ,
+Ŧ,
+ŧ ,
+Ŧ ,
+Æ«,
+Æ« ,
+Æ­,
+Ƭ,
+Æ­ ,
+Ƭ ,
+Æ®,
+Æ® ,
+u,ù,ú,û,ü,ũ,ū,ŭ,ů,ű,ų,ư,ǔ,ǖ,ǘ,ǚ,ǜ,ụ,ủ,ứ,ừ,ử,ữ,ự,
+U,Ù,Ú,Û,Ü,Ũ,Ū,Ŭ,Ů,Ű,Ų,Ư,Ǔ,Ǖ,Ǘ,Ǚ,Ǜ,Ụ,Ủ,Ứ,Ừ,Ử,Ữ,Ự,
+u ,ù ,ú ,û ,ü ,ũ ,ū ,ŭ ,ů ,ű ,ų ,ư ,ǔ ,ǖ ,ǘ ,ǚ ,ǜ ,ụ ,ủ ,ứ ,ừ ,ử ,ữ ,ự ,
+U ,Ù ,Ú ,Û ,Ü ,Ũ ,Ū ,Ŭ ,Ů ,Ű ,Ų ,Ư ,Ǔ ,Ǖ ,Ǘ ,Ǚ ,Ǜ ,Ụ ,Ủ ,Ứ ,Ừ ,Ử ,Ữ ,Ự ,
+Ɯ,
+Ɯ ,
+Ʊ,
+Ʊ ,
+v,
+V,
+v ,
+V ,
+Ʋ,
+Ʋ ,
+w,ŵ,
+W,Å´,
+w ,ŵ ,
+W ,Å´ ,
+x,
+X,
+x ,
+X ,
+y,ý,ÿ,ŷ,
+Y,Ã,Ŷ,Ÿ,
+y ,ý ,ÿ ,ŷ ,
+Y ,à ,Ŷ ,Ÿ ,
+Æ´,
+Ƴ,
+Æ´ ,
+Ƴ ,
+z,ź,ż,ž,
+Z,Ź,Ż,Ž,
+z ,ź ,ż ,ž ,
+Z ,Ź ,Ż ,Ž ,
+Æ,
+Æ ,
+ƶ,
+Ƶ,
+ƶ ,
+Ƶ ,
+ǯ,
+Æ·,Ç®,
+ǯ ,
+Æ· ,Ç® ,
+ƹ,
+Ƹ,
+ƹ ,
+Ƹ ,
+ƺ,
+ƺ ,
+þ,
+Þ,
+þ ,
+Þ ,
+Æ¿,
+Ç·,
+Æ¿ ,
+Ç· ,
+Æ»,
+Æ» ,
+ƨ,
+Ƨ,
+ƨ ,
+Ƨ ,
+ƽ,
+Ƽ,
+ƽ ,
+Ƽ ,
+Æ…,
+Æ„,
+Æ… ,
+Æ„ ,
+ʼn,
+ʼn ,
+Ç€,
+Ç€ ,
+Ç,
+Ç ,
+Ç‚,
+Ç‚ ,
+ǃ,
+ǃ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 GROUP BY a COLLATE uca1400_ai_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+÷,÷ ,
+×,× ,
+a,a ,à,à ,á,á ,â,â ,ã,ã ,ä,ä ,Ã¥,Ã¥ ,Ä,Ä ,ă,ă ,Ä…,Ä… ,ÇŽ,ÇŽ ,ÇŸ,ÇŸ ,Ç¡,Ç¡ ,Ç»,Ç» ,ạ,ạ ,ả,ả ,ấ,ấ ,ầ,ầ ,ẩ,ẩ ,ẫ,ẫ ,ậ,ậ ,ắ,ắ ,ằ,ằ ,ẳ,ẳ ,ẵ,ẵ ,ặ,ặ ,
+A,A ,À,À ,Ã,à ,Â, ,Ã,à ,Ä,Ä ,Ã…,Ã… ,Ä€,Ä€ ,Ä‚,Ä‚ ,Ä„,Ä„ ,Ç,Ç ,Çž,Çž ,Ç ,Ç  ,Ǻ,Ǻ ,Ạ,Ạ ,Ả,Ả ,Ấ,Ấ ,Ầ,Ầ ,Ẩ,Ẩ ,Ẫ,Ẫ ,Ậ,Ậ ,Ắ,Ắ ,Ằ,Ằ ,Ẳ,Ẳ ,Ẵ,Ẵ ,Ặ,Ặ ,
+aa,aa ,
+aA,aA ,
+Aa,Aa ,
+AA,AA ,
+ae,ae ,
+aE,aE ,
+æ,æ ,ǣ,ǣ ,ǽ,ǽ ,
+Ae,Ae ,
+AE,AE ,
+Æ,Æ ,Ǣ,Ǣ ,Ǽ,Ǽ ,
+b,b ,
+B,B ,
+Æ€,Æ€ ,
+Æ,Æ ,
+ƃ,ƃ ,
+Æ‚,Æ‚ ,
+c,c ,ç,ç ,ć,ć ,ĉ,ĉ ,Ä‹,Ä‹ ,Ä,Ä ,
+C,C ,Ç,Ç ,Ć,Ć ,Ĉ,Ĉ ,Ċ,Ċ ,Č,Č ,
+ch,ch ,
+cH,cH ,
+Ch,Ch ,
+CH,CH ,
+ƈ,ƈ ,
+Ƈ,Ƈ ,
+d,d ,Ä,Ä ,Ä‘,Ä‘ ,
+ð,ð ,
+D,D ,ÄŽ,ÄŽ ,Ä,Ä ,
+Ã,Ã ,
+dz,dz ,dž,dž ,
+dZ,dZ ,dŽ,dŽ ,
+dz,dz ,
+dž,dž ,
+Dz,Dz ,Dž,Dž ,
+DZ,DZ ,DŽ,DŽ ,
+Dz,Dz ,
+Ç…,Ç… ,
+DZ,DZ ,
+Ç„,Ç„ ,
+Ɖ,Ɖ ,
+ÆŠ,ÆŠ ,
+ƌ,ƌ ,
+Æ‹,Æ‹ ,
+e,e ,è,è ,é,é ,ê,ê ,ë,ë ,Ä“,Ä“ ,Ä•,Ä• ,Ä—,Ä— ,Ä™,Ä™ ,Ä›,Ä› ,ẹ,ẹ ,ẻ,ẻ ,ẽ,ẽ ,ế,ế ,á»,á» ,ể,ể ,á»…,á»… ,ệ,ệ ,
+E,E ,È,È ,É,É ,Ê,Ê ,Ë,Ë ,Ē,Ē ,Ĕ,Ĕ ,Ė,Ė ,Ę,Ę ,Ě,Ě ,Ẹ,Ẹ ,Ẻ,Ẻ ,Ẽ,Ẽ ,Ế,Ế ,Ề,Ề ,Ể,Ể ,Ễ,Ễ ,Ệ,Ệ ,
+Ç,Ç ,
+ÆŽ,ÆŽ ,
+Æ,Æ ,
+Æ,Æ ,
+f,f ,
+F,F ,
+Æ’,Æ’ ,
+Æ‘,Æ‘ ,
+g,g ,Ä,Ä ,ÄŸ,ÄŸ ,Ä¡,Ä¡ ,Ä£,Ä£ ,ǧ,ǧ ,ǵ,ǵ ,
+G,G ,Ĝ,Ĝ ,Ğ,Ğ ,Ġ,Ġ ,Ģ,Ģ ,Ǧ,Ǧ ,Ǵ,Ǵ ,
+Ç¥,Ç¥ ,
+Ǥ,Ǥ ,
+Æ“,Æ“ ,
+Æ”,Æ” ,
+Æ£,Æ£ ,
+Æ¢,Æ¢ ,
+h,h ,ĥ,ĥ ,ħ,ħ ,
+H,H ,Ĥ,Ĥ ,Ħ,Ħ ,
+Æ•,Æ• ,
+Ƕ,Ƕ ,
+i,i ,ì,ì ,í,í ,î,î ,ï,ï ,Ä©,Ä© ,Ä«,Ä« ,Ä­,Ä­ ,į,į ,Ç,Ç ,ỉ,ỉ ,ị,ị ,
+I,I ,ÃŒ,ÃŒ ,Ã,à ,ÃŽ,ÃŽ ,Ã,à ,Ĩ,Ĩ ,Ī,Ī ,Ĭ,Ĭ ,Ä®,Ä® ,Ä°,Ä° ,Ç,Ç ,Ỉ,Ỉ ,Ị,Ị ,
+ij,ij ,
+iJ,iJ ,
+ij,ij ,
+Ij,Ij ,
+IJ,IJ ,
+IJ,IJ ,
+ı,ı ,
+Æ—,Æ— ,
+Æ–,Æ– ,
+j,j ,ĵ,ĵ ,ǰ,ǰ ,
+J,J ,Ä´,Ä´ ,
+k,k ,Ä·,Ä· ,Ç©,Ç© ,
+K,K ,Ķ,Ķ ,Ǩ,Ǩ ,
+Æ™,Æ™ ,
+Ƙ,Ƙ ,
+l,l ,ĺ,ĺ ,ļ,ļ ,ľ,ľ ,ŀ,ŀ ,ł,ł ,
+L,L ,Ĺ,Ĺ ,Ä»,Ä» ,Ľ,Ľ ,Ä¿,Ä¿ ,Å,Å ,
+lj,lj ,
+lJ,lJ ,
+lj,lj ,
+Lj,Lj ,
+LJ,LJ ,
+Lj,Lj ,
+LJ,LJ ,
+ll,ll ,
+lL,lL ,
+Ll,Ll ,
+LL,LL ,
+Æš,Æš ,
+Æ›,Æ› ,
+m,m ,
+M,M ,
+n,n ,ñ,ñ ,ń,ń ,ņ,ņ ,ň,ň ,ǹ,ǹ ,
+N,N ,Ñ,Ñ ,Ń,Ń ,Ņ,Ņ ,Ň,Ň ,Ǹ,Ǹ ,
+nj,nj ,
+nJ,nJ ,
+nj,nj ,
+Nj,Nj ,
+NJ,NJ ,
+Ç‹,Ç‹ ,
+ÇŠ,ÇŠ ,
+Æ,Æ ,
+Æž,Æž ,
+Å‹,Å‹ ,
+ÅŠ,ÅŠ ,
+o,o ,ò,ò ,ó,ó ,ô,ô ,õ,õ ,ö,ö ,ø,ø ,Å,Å ,Å,Å ,Å‘,Å‘ ,Æ¡,Æ¡ ,Ç’,Ç’ ,Ç«,Ç« ,Ç­,Ç­ ,Ç¿,Ç¿ ,á»,á» ,á»,á» ,ố,ố ,ồ,ồ ,ổ,ổ ,á»—,á»— ,á»™,á»™ ,á»›,á»› ,á»,á» ,ở,ở ,ỡ,ỡ ,ợ,ợ ,
+O,O ,Ã’,Ã’ ,Ó,Ó ,Ô,Ô ,Õ,Õ ,Ö,Ö ,Ø,Ø ,ÅŒ,ÅŒ ,ÅŽ,ÅŽ ,Å,Å ,Æ ,Æ  ,Ç‘,Ç‘ ,Ǫ,Ǫ ,Ǭ,Ǭ ,Ǿ,Ǿ ,Ọ,Ọ ,Ỏ,Ỏ ,á»,á» ,á»’,á»’ ,á»”,á»” ,á»–,á»– ,Ộ,Ộ ,Ớ,Ớ ,Ờ,Ờ ,Ở,Ở ,á» ,á»  ,Ợ,Ợ ,
+oe,oe ,
+oE,oE ,
+Å“,Å“ ,
+Oe,Oe ,
+OE,OE ,
+Å’,Å’ ,
+Ɔ,Ɔ ,
+ÆŸ,ÆŸ ,
+p,p ,
+P,P ,
+Æ¥,Æ¥ ,
+Ƥ,Ƥ ,
+q,q ,
+Q,Q ,
+ĸ,ĸ ,
+r,r ,Å•,Å• ,Å—,Å— ,Å™,Å™ ,
+R,R ,Ŕ,Ŕ ,Ŗ,Ŗ ,Ř,Ř ,
+rr,rr ,
+rR,rR ,
+Rr,Rr ,
+RR,RR ,
+Ʀ,Ʀ ,
+s,s ,Å›,Å› ,Å,Å ,ÅŸ,ÅŸ ,Å¡,Å¡ ,
+Å¿,Å¿ ,
+S,S ,Ś,Ś ,Ŝ,Ŝ ,Ş,Ş ,Š,Š ,
+ss,ss ,
+sS,sS ,
+ß,ß ,
+Ss,Ss ,
+SS,SS ,
+ẞ,ẞ ,
+Æ©,Æ© ,
+ƪ,ƪ ,
+t,t ,Å£,Å£ ,Å¥,Å¥ ,
+T,T ,Ţ,Ţ ,Ť,Ť ,
+ƾ,ƾ ,
+ŧ,ŧ ,
+Ŧ,Ŧ ,
+Æ«,Æ« ,
+Æ­,Æ­ ,
+Ƭ,Ƭ ,
+Æ®,Æ® ,
+u,u ,ù,ù ,ú,ú ,û,û ,ü,ü ,ũ,ũ ,ū,ū ,ŭ,ŭ ,ů,ů ,ű,ű ,ų,ų ,ư,ư ,ǔ,ǔ ,ǖ,ǖ ,ǘ,ǘ ,ǚ,ǚ ,ǜ,ǜ ,ụ,ụ ,ủ,ủ ,ứ,ứ ,ừ,ừ ,ử,ử ,ữ,ữ ,ự,ự ,
+U,U ,Ù,Ù ,Ú,Ú ,Û,Û ,Ü,Ü ,Ũ,Ũ ,Ū,Ū ,Ŭ,Ŭ ,Ů,Ů ,Ű,Ű ,Ų,Ų ,Ư,Ư ,Ǔ,Ǔ ,Ǖ,Ǖ ,Ǘ,Ǘ ,Ǚ,Ǚ ,Ǜ,Ǜ ,Ụ,Ụ ,Ủ,Ủ ,Ứ,Ứ ,Ừ,Ừ ,Ử,Ử ,Ữ,Ữ ,Ự,Ự ,
+Ɯ,Ɯ ,
+Ʊ,Ʊ ,
+v,v ,
+V,V ,
+Ʋ,Ʋ ,
+w,w ,ŵ,ŵ ,
+W,W ,Å´,Å´ ,
+x,x ,
+X,X ,
+y,y ,ý,ý ,ÿ,ÿ ,ŷ,ŷ ,
+Y,Y ,Ã,à ,Ŷ,Ŷ ,Ÿ,Ÿ ,
+Æ´,Æ´ ,
+Ƴ,Ƴ ,
+z,z ,ź,ź ,ż,ż ,ž,ž ,
+Z,Z ,Ź,Ź ,Ż,Ż ,Ž,Ž ,
+Æ,Æ ,
+ƶ,ƶ ,
+Ƶ,Ƶ ,
+ǯ,ǯ ,
+Æ·,Æ· ,Ç®,Ç® ,
+ƹ,ƹ ,
+Ƹ,Ƹ ,
+ƺ,ƺ ,
+þ,þ ,
+Þ,Þ ,
+Æ¿,Æ¿ ,
+Ç·,Ç· ,
+Æ»,Æ» ,
+ƨ,ƨ ,
+Ƨ,Ƨ ,
+ƽ,ƽ ,
+Ƽ,Ƽ ,
+Æ…,Æ… ,
+Æ„,Æ„ ,
+ʼn,ʼn ,
+Ç€,Ç€ ,
+Ç,Ç ,
+Ç‚,Ç‚ ,
+ǃ,ǃ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 GROUP BY a COLLATE uca1400_nopad_ai_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+÷,
+÷ ,
+×,
+× ,
+A,a,À,Ã,Â,Ã,Ä,Ã…,à,á,â,ã,ä,Ã¥,Ä€,Ä,Ä‚,ă,Ä„,Ä…,Ç,ÇŽ,Çž,ÇŸ,Ç ,Ç¡,Ǻ,Ç»,Ạ,ạ,Ả,ả,Ấ,ấ,Ầ,ầ,Ẩ,ẩ,Ẫ,ẫ,Ậ,ậ,Ắ,ắ,Ằ,ằ,Ẳ,ẳ,Ẵ,ẵ,Ặ,ặ,
+A ,a ,À ,à , ,à ,Ä ,Ã… ,à ,á ,â ,ã ,ä ,Ã¥ ,Ä€ ,Ä ,Ä‚ ,ă ,Ä„ ,Ä… ,Ç ,ÇŽ ,Çž ,ÇŸ ,Ç  ,Ç¡ ,Ǻ ,Ç» ,Ạ ,ạ ,Ả ,ả ,Ấ ,ấ ,Ầ ,ầ ,Ẩ ,ẩ ,Ẫ ,ẫ ,Ậ ,ậ ,Ắ ,ắ ,Ằ ,ằ ,Ẳ ,ẳ ,Ẵ ,ẵ ,Ặ ,ặ ,
+AA,Aa,aA,aa,
+AA ,Aa ,aA ,aa ,
+AE,Ae,aE,ae,Æ,æ,Ǣ,ǣ,Ǽ,ǽ,
+AE ,Ae ,aE ,ae ,Æ ,æ ,Ǣ ,ǣ ,Ǽ ,ǽ ,
+B,b,
+B ,b ,
+Æ€,
+Æ€ ,
+Æ,
+Æ ,
+Ƃ,ƃ,
+Ƃ ,ƃ ,
+C,c,Ç,ç,Ć,ć,Ĉ,ĉ,ÄŠ,Ä‹,ÄŒ,Ä,
+C ,c ,Ç ,ç ,Ć ,ć ,Ĉ ,ĉ ,ÄŠ ,Ä‹ ,ÄŒ ,Ä ,
+CH,Ch,cH,ch,
+CH ,Ch ,cH ,ch ,
+Ƈ,ƈ,
+Ƈ ,ƈ ,
+D,d,Ã,ð,ÄŽ,Ä,Ä,Ä‘,
+D ,d ,à ,ð ,ÄŽ ,Ä ,Ä ,Ä‘ ,
+DZ,Dz,DŽ,Dž,dZ,dz,dŽ,dž,DŽ,Dž,dž,DZ,Dz,dz,
+DZ ,Dz ,DŽ ,Dž ,dZ ,dz ,dŽ ,dž ,DŽ ,Dž ,dž ,DZ ,Dz ,dz ,
+Ɖ,
+Ɖ ,
+ÆŠ,
+ÆŠ ,
+Ƌ,ƌ,
+Ƌ ,ƌ ,
+E,e,È,É,Ê,Ë,è,é,ê,ë,Ä’,Ä“,Ä”,Ä•,Ä–,Ä—,Ę,Ä™,Äš,Ä›,Ẹ,ẹ,Ẻ,ẻ,Ẽ,ẽ,Ế,ế,Ề,á»,Ể,ể,Ễ,á»…,Ệ,ệ,
+E ,e ,È ,É ,Ê ,Ë ,è ,é ,ê ,ë ,Ē ,ē ,Ĕ ,ĕ ,Ė ,ė ,Ę ,ę ,Ě ,ě ,Ẹ ,ẹ ,Ẻ ,ẻ ,Ẽ ,ẽ ,Ế ,ế ,Ề ,Ỡ,Ể ,ể ,Ễ ,ễ ,Ệ ,ệ ,
+ÆŽ,Ç,
+ÆŽ ,Ç ,
+Æ,
+Æ ,
+Æ,
+Æ ,
+F,f,
+F ,f ,
+Æ‘,Æ’,
+Æ‘ ,Æ’ ,
+G,g,Äœ,Ä,Äž,ÄŸ,Ä ,Ä¡,Ä¢,Ä£,Ǧ,ǧ,Ç´,ǵ,
+G ,g ,Äœ ,Ä ,Äž ,ÄŸ ,Ä  ,Ä¡ ,Ä¢ ,Ä£ ,Ǧ ,ǧ ,Ç´ ,ǵ ,
+Ǥ,ǥ,
+Ǥ ,ǥ ,
+Æ“,
+Æ“ ,
+Æ”,
+Æ” ,
+Æ¢,Æ£,
+Æ¢ ,Æ£ ,
+H,h,Ĥ,ĥ,Ħ,ħ,
+H ,h ,Ĥ ,ĥ ,Ħ ,ħ ,
+ƕ,Ƕ,
+ƕ ,Ƕ ,
+I,i,ÃŒ,Ã,ÃŽ,Ã,ì,í,î,ï,Ĩ,Ä©,Ī,Ä«,Ĭ,Ä­,Ä®,į,Ä°,Ç,Ç,Ỉ,ỉ,Ị,ị,
+I ,i ,ÃŒ ,à ,ÃŽ ,à ,ì ,í ,î ,ï ,Ĩ ,Ä© ,Ī ,Ä« ,Ĭ ,Ä­ ,Ä® ,į ,Ä° ,Ç ,Ç ,Ỉ ,ỉ ,Ị ,ị ,
+IJ,Ij,iJ,ij,IJ,ij,
+IJ ,Ij ,iJ ,ij ,IJ ,ij ,
+ı,
+ı ,
+Æ—,
+Æ— ,
+Æ–,
+Æ– ,
+J,j,Ĵ,ĵ,ǰ,
+J ,j ,Ĵ ,ĵ ,ǰ ,
+K,k,Ķ,ķ,Ǩ,ǩ,
+K ,k ,Ķ ,ķ ,Ǩ ,ǩ ,
+Ƙ,ƙ,
+Ƙ ,ƙ ,
+L,l,Ĺ,ĺ,Ä»,ļ,Ľ,ľ,Ä¿,Å€,Å,Å‚,
+L ,l ,Ĺ ,ĺ ,Ļ ,ļ ,Ľ ,ľ ,Ŀ ,ŀ ,Š,ł ,
+LJ,Lj,lJ,lj,LJ,Lj,lj,
+LJ ,Lj ,lJ ,lj ,LJ ,Lj ,lj ,
+LL,Ll,lL,ll,
+LL ,Ll ,lL ,ll ,
+Æš,
+Æš ,
+Æ›,
+Æ› ,
+M,m,
+M ,m ,
+N,n,Ñ,ñ,Ń,ń,Ņ,ņ,Ň,ň,Ǹ,ǹ,
+N ,n ,Ñ ,ñ ,Ń ,ń ,Ņ ,ņ ,Ň ,ň ,Ǹ ,ǹ ,
+NJ,Nj,nJ,nj,NJ,Nj,nj,
+NJ ,Nj ,nJ ,nj ,NJ ,Nj ,nj ,
+Æ,
+Æ ,
+Æž,
+Æž ,
+ÅŠ,Å‹,
+ÅŠ ,Å‹ ,
+O,o,Ã’,Ó,Ô,Õ,Ö,Ø,ò,ó,ô,õ,ö,ø,ÅŒ,Å,ÅŽ,Å,Å,Å‘,Æ ,Æ¡,Ç‘,Ç’,Ǫ,Ç«,Ǭ,Ç­,Ǿ,Ç¿,Ọ,á»,Ỏ,á»,á»,ố,á»’,ồ,á»”,ổ,á»–,á»—,Ộ,á»™,Ớ,á»›,Ờ,á»,Ở,ở,á» ,ỡ,Ợ,ợ,
+O ,o ,Ò ,Ó ,Ô ,Õ ,Ö ,Ø ,ò ,ó ,ô ,õ ,ö ,ø ,Ō ,Š,Ŏ ,Š,Š,ő ,Ơ ,ơ ,Ǒ ,ǒ ,Ǫ ,ǫ ,Ǭ ,ǭ ,Ǿ ,ǿ ,Ọ ,Ỡ,Ỏ ,Ỡ,Ỡ,ố ,Ồ ,ồ ,Ổ ,ổ ,Ỗ ,ỗ ,Ộ ,ộ ,Ớ ,ớ ,Ờ ,Ỡ,Ở ,ở ,Ỡ ,ỡ ,Ợ ,ợ ,
+OE,Oe,oE,oe,Å’,Å“,
+OE ,Oe ,oE ,oe ,Å’ ,Å“ ,
+Ɔ,
+Ɔ ,
+ÆŸ,
+ÆŸ ,
+P,p,
+P ,p ,
+Ƥ,ƥ,
+Ƥ ,ƥ ,
+Q,q,
+Q ,q ,
+ĸ,
+ĸ ,
+R,r,Ŕ,ŕ,Ŗ,ŗ,Ř,ř,
+R ,r ,Ŕ ,ŕ ,Ŗ ,ŗ ,Ř ,ř ,
+RR,Rr,rR,rr,
+RR ,Rr ,rR ,rr ,
+Ʀ,
+Ʀ ,
+S,s,Åš,Å›,Åœ,Å,Åž,ÅŸ,Å ,Å¡,Å¿,
+S ,s ,Ś ,ś ,Ŝ ,Š,Ş ,ş ,Š ,š ,ſ ,
+SS,Ss,sS,ss,ß,ẞ,
+SS ,Ss ,sS ,ss ,ß ,ẞ ,
+Æ©,
+Æ© ,
+ƪ,
+ƪ ,
+T,t,Ţ,ţ,Ť,ť,
+T ,t ,Ţ ,ţ ,Ť ,ť ,
+ƾ,
+ƾ ,
+Ŧ,ŧ,
+Ŧ ,ŧ ,
+Æ«,
+Æ« ,
+Ƭ,ƭ,
+Ƭ ,ƭ ,
+Æ®,
+Æ® ,
+U,u,Ù,Ú,Û,Ü,ù,ú,û,ü,Ũ,ũ,Ū,ū,Ŭ,ŭ,Ů,ů,Ű,ű,Ų,ų,Ư,ư,Ǔ,ǔ,Ǖ,ǖ,Ǘ,ǘ,Ǚ,ǚ,Ǜ,ǜ,Ụ,ụ,Ủ,ủ,Ứ,ứ,Ừ,ừ,Ử,ử,Ữ,ữ,Ự,ự,
+U ,u ,Ù ,Ú ,Û ,Ü ,ù ,ú ,û ,ü ,Ũ ,ũ ,Ū ,ū ,Ŭ ,ŭ ,Ů ,ů ,Ű ,ű ,Ų ,ų ,Ư ,ư ,Ǔ ,ǔ ,Ǖ ,ǖ ,Ǘ ,ǘ ,Ǚ ,ǚ ,Ǜ ,ǜ ,Ụ ,ụ ,Ủ ,ủ ,Ứ ,ứ ,Ừ ,ừ ,Ử ,ử ,Ữ ,ữ ,Ự ,ự ,
+Ɯ,
+Ɯ ,
+Ʊ,
+Ʊ ,
+V,v,
+V ,v ,
+Ʋ,
+Ʋ ,
+W,w,Ŵ,ŵ,
+W ,w ,Ŵ ,ŵ ,
+X,x,
+X ,x ,
+Y,y,Ã,ý,ÿ,Ŷ,Å·,Ÿ,
+Y ,y ,à ,ý ,ÿ ,Ŷ ,ŷ ,Ÿ ,
+Ƴ,ƴ,
+Ƴ ,ƴ ,
+Z,z,Ź,ź,Ż,ż,Ž,ž,
+Z ,z ,Ź ,ź ,Ż ,ż ,Ž ,ž ,
+Æ,
+Æ ,
+Ƶ,ƶ,
+Ƶ ,ƶ ,
+Ʒ,Ǯ,ǯ,
+Ʒ ,Ǯ ,ǯ ,
+Ƹ,ƹ,
+Ƹ ,ƹ ,
+ƺ,
+ƺ ,
+Þ,þ,
+Þ ,þ ,
+Æ¿,Ç·,
+Æ¿ ,Ç· ,
+Æ»,
+Æ» ,
+Ƨ,ƨ,
+Ƨ ,ƨ ,
+Ƽ,ƽ,
+Ƽ ,ƽ ,
+Æ„,Æ…,
+Æ„ ,Æ… ,
+ʼn,
+ʼn ,
+Ç€,
+Ç€ ,
+Ç,
+Ç ,
+Ç‚,
+Ç‚ ,
+ǃ,
+ǃ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 GROUP BY a COLLATE uca1400_ai_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+÷,÷ ,
+×,× ,
+A,A ,a,a ,À,À ,Ã,à ,Â, ,Ã,à ,Ä,Ä ,Ã…,Ã… ,à,à ,á,á ,â,â ,ã,ã ,ä,ä ,Ã¥,Ã¥ ,Ä€,Ä€ ,Ä,Ä ,Ä‚,Ä‚ ,ă,ă ,Ä„,Ä„ ,Ä…,Ä… ,Ç,Ç ,ÇŽ,ÇŽ ,Çž,Çž ,ÇŸ,ÇŸ ,Ç ,Ç  ,Ç¡,Ç¡ ,Ǻ,Ǻ ,Ç»,Ç» ,Ạ,Ạ ,ạ,ạ ,Ả,Ả ,ả,ả ,Ấ,Ấ ,ấ,ấ ,Ầ,Ầ ,ầ,ầ ,Ẩ,Ẩ ,ẩ,ẩ ,Ẫ,Ẫ ,ẫ,ẫ ,Ậ,Ậ ,ậ,ậ ,Ắ,Ắ ,ắ,ắ ,Ằ,Ằ ,ằ,ằ ,Ẳ,Ẳ ,ẳ,ẳ ,Ẵ,Ẵ ,ẵ,ẵ ,Ặ,Ặ ,ặ,ặ ,
+AA,AA ,Aa,Aa ,aA,aA ,aa,aa ,
+AE,AE ,Ae,Ae ,aE,aE ,ae,ae ,Æ,Æ ,æ,æ ,Ǣ,Ǣ ,ǣ,ǣ ,Ǽ,Ǽ ,ǽ,ǽ ,
+B,B ,b,b ,
+Æ€,Æ€ ,
+Æ,Æ ,
+Ƃ,Ƃ ,ƃ,ƃ ,
+C,C ,c,c ,Ç,Ç ,ç,ç ,Ć,Ć ,ć,ć ,Ĉ,Ĉ ,ĉ,ĉ ,ÄŠ,ÄŠ ,Ä‹,Ä‹ ,ÄŒ,ÄŒ ,Ä,Ä ,
+CH,CH ,Ch,Ch ,cH,cH ,ch,ch ,
+Ƈ,Ƈ ,ƈ,ƈ ,
+D,D ,d,d ,Ã,à ,ð,ð ,ÄŽ,ÄŽ ,Ä,Ä ,Ä,Ä ,Ä‘,Ä‘ ,
+DZ,DZ ,Dz,Dz ,DŽ,DŽ ,Dž,Dž ,dZ,dZ ,dz,dz ,dŽ,dŽ ,dž,dž ,DŽ,DŽ ,Dž,Dž ,dž,dž ,DZ,DZ ,Dz,Dz ,dz,dz ,
+Ɖ,Ɖ ,
+ÆŠ,ÆŠ ,
+Ƌ,Ƌ ,ƌ,ƌ ,
+E,E ,e,e ,È,È ,É,É ,Ê,Ê ,Ë,Ë ,è,è ,é,é ,ê,ê ,ë,ë ,Ä’,Ä’ ,Ä“,Ä“ ,Ä”,Ä” ,Ä•,Ä• ,Ä–,Ä– ,Ä—,Ä— ,Ę,Ę ,Ä™,Ä™ ,Äš,Äš ,Ä›,Ä› ,Ẹ,Ẹ ,ẹ,ẹ ,Ẻ,Ẻ ,ẻ,ẻ ,Ẽ,Ẽ ,ẽ,ẽ ,Ế,Ế ,ế,ế ,Ề,Ề ,á»,á» ,Ể,Ể ,ể,ể ,Ễ,Ễ ,á»…,á»… ,Ệ,Ệ ,ệ,ệ ,
+ÆŽ,ÆŽ ,Ç,Ç ,
+Æ,Æ ,
+Æ,Æ ,
+F,F ,f,f ,
+Æ‘,Æ‘ ,Æ’,Æ’ ,
+G,G ,g,g ,Äœ,Äœ ,Ä,Ä ,Äž,Äž ,ÄŸ,ÄŸ ,Ä ,Ä  ,Ä¡,Ä¡ ,Ä¢,Ä¢ ,Ä£,Ä£ ,Ǧ,Ǧ ,ǧ,ǧ ,Ç´,Ç´ ,ǵ,ǵ ,
+Ǥ,Ǥ ,ǥ,ǥ ,
+Æ“,Æ“ ,
+Æ”,Æ” ,
+Æ¢,Æ¢ ,Æ£,Æ£ ,
+H,H ,h,h ,Ĥ,Ĥ ,ĥ,ĥ ,Ħ,Ħ ,ħ,ħ ,
+ƕ,ƕ ,Ƕ,Ƕ ,
+I,I ,i,i ,ÃŒ,ÃŒ ,Ã,à ,ÃŽ,ÃŽ ,Ã,à ,ì,ì ,í,í ,î,î ,ï,ï ,Ĩ,Ĩ ,Ä©,Ä© ,Ī,Ī ,Ä«,Ä« ,Ĭ,Ĭ ,Ä­,Ä­ ,Ä®,Ä® ,į,į ,Ä°,Ä° ,Ç,Ç ,Ç,Ç ,Ỉ,Ỉ ,ỉ,ỉ ,Ị,Ị ,ị,ị ,
+IJ,IJ ,Ij,Ij ,iJ,iJ ,ij,ij ,IJ,IJ ,ij,ij ,
+ı,ı ,
+Æ—,Æ— ,
+Æ–,Æ– ,
+J,J ,j,j ,Ĵ,Ĵ ,ĵ,ĵ ,ǰ,ǰ ,
+K,K ,k,k ,Ķ,Ķ ,ķ,ķ ,Ǩ,Ǩ ,ǩ,ǩ ,
+Ƙ,Ƙ ,ƙ,ƙ ,
+L,L ,l,l ,Ĺ,Ĺ ,ĺ,ĺ ,Ä»,Ä» ,ļ,ļ ,Ľ,Ľ ,ľ,ľ ,Ä¿,Ä¿ ,Å€,Å€ ,Å,Å ,Å‚,Å‚ ,
+LJ,LJ ,Lj,Lj ,lJ,lJ ,lj,lj ,LJ,LJ ,Lj,Lj ,lj,lj ,
+LL,LL ,Ll,Ll ,lL,lL ,ll,ll ,
+Æš,Æš ,
+Æ›,Æ› ,
+M,M ,m,m ,
+N,N ,n,n ,Ñ,Ñ ,ñ,ñ ,Ń,Ń ,ń,ń ,Ņ,Ņ ,ņ,ņ ,Ň,Ň ,ň,ň ,Ǹ,Ǹ ,ǹ,ǹ ,
+NJ,NJ ,Nj,Nj ,nJ,nJ ,nj,nj ,NJ,NJ ,Nj,Nj ,nj,nj ,
+Æ,Æ ,
+Æž,Æž ,
+ÅŠ,ÅŠ ,Å‹,Å‹ ,
+O,O ,o,o ,Ã’,Ã’ ,Ó,Ó ,Ô,Ô ,Õ,Õ ,Ö,Ö ,Ø,Ø ,ò,ò ,ó,ó ,ô,ô ,õ,õ ,ö,ö ,ø,ø ,ÅŒ,ÅŒ ,Å,Å ,ÅŽ,ÅŽ ,Å,Å ,Å,Å ,Å‘,Å‘ ,Æ ,Æ  ,Æ¡,Æ¡ ,Ç‘,Ç‘ ,Ç’,Ç’ ,Ǫ,Ǫ ,Ç«,Ç« ,Ǭ,Ǭ ,Ç­,Ç­ ,Ǿ,Ǿ ,Ç¿,Ç¿ ,Ọ,Ọ ,á»,á» ,Ỏ,Ỏ ,á»,á» ,á»,á» ,ố,ố ,á»’,á»’ ,ồ,ồ ,á»”,á»” ,ổ,ổ ,á»–,á»– ,á»—,á»— ,Ộ,Ộ ,á»™,á»™ ,Ớ,Ớ ,á»›,á»› ,Ờ,Ờ ,á»,á» ,Ở,Ở ,ở,ở ,á» ,á»  ,ỡ,ỡ ,Ợ,Ợ ,ợ,ợ ,
+OE,OE ,Oe,Oe ,oE,oE ,oe,oe ,Å’,Å’ ,Å“,Å“ ,
+Ɔ,Ɔ ,
+ÆŸ,ÆŸ ,
+P,P ,p,p ,
+Ƥ,Ƥ ,ƥ,ƥ ,
+Q,Q ,q,q ,
+ĸ,ĸ ,
+R,R ,r,r ,Ŕ,Ŕ ,ŕ,ŕ ,Ŗ,Ŗ ,ŗ,ŗ ,Ř,Ř ,ř,ř ,
+RR,RR ,Rr,Rr ,rR,rR ,rr,rr ,
+Ʀ,Ʀ ,
+S,S ,s,s ,Åš,Åš ,Å›,Å› ,Åœ,Åœ ,Å,Å ,Åž,Åž ,ÅŸ,ÅŸ ,Å ,Å  ,Å¡,Å¡ ,Å¿,Å¿ ,
+SS,SS ,Ss,Ss ,sS,sS ,ss,ss ,ß,ß ,ẞ,ẞ ,
+Æ©,Æ© ,
+ƪ,ƪ ,
+T,T ,t,t ,Ţ,Ţ ,ţ,ţ ,Ť,Ť ,ť,ť ,
+ƾ,ƾ ,
+Ŧ,Ŧ ,ŧ,ŧ ,
+Æ«,Æ« ,
+Ƭ,Ƭ ,ƭ,ƭ ,
+Æ®,Æ® ,
+U,U ,u,u ,Ù,Ù ,Ú,Ú ,Û,Û ,Ü,Ü ,ù,ù ,ú,ú ,û,û ,ü,ü ,Ũ,Ũ ,ũ,ũ ,Ū,Ū ,ū,ū ,Ŭ,Ŭ ,ŭ,ŭ ,Ů,Ů ,ů,ů ,Ű,Ű ,ű,ű ,Ų,Ų ,ų,ų ,Ư,Ư ,ư,ư ,Ǔ,Ǔ ,ǔ,ǔ ,Ǖ,Ǖ ,ǖ,ǖ ,Ǘ,Ǘ ,ǘ,ǘ ,Ǚ,Ǚ ,ǚ,ǚ ,Ǜ,Ǜ ,ǜ,ǜ ,Ụ,Ụ ,ụ,ụ ,Ủ,Ủ ,ủ,ủ ,Ứ,Ứ ,ứ,ứ ,Ừ,Ừ ,ừ,ừ ,Ử,Ử ,ử,ử ,Ữ,Ữ ,ữ,ữ ,Ự,Ự ,ự,ự ,
+Ɯ,Ɯ ,
+Ʊ,Ʊ ,
+V,V ,v,v ,
+Ʋ,Ʋ ,
+W,W ,w,w ,Ŵ,Ŵ ,ŵ,ŵ ,
+X,X ,x,x ,
+Y,Y ,y,y ,Ã,à ,ý,ý ,ÿ,ÿ ,Ŷ,Ŷ ,Å·,Å· ,Ÿ,Ÿ ,
+Ƴ,Ƴ ,ƴ,ƴ ,
+Z,Z ,z,z ,Ź,Ź ,ź,ź ,Ż,Ż ,ż,ż ,Ž,Ž ,ž,ž ,
+Æ,Æ ,
+Ƶ,Ƶ ,ƶ,ƶ ,
+Ʒ,Ʒ ,Ǯ,Ǯ ,ǯ,ǯ ,
+Ƹ,Ƹ ,ƹ,ƹ ,
+ƺ,ƺ ,
+Þ,Þ ,þ,þ ,
+Æ¿,Æ¿ ,Ç·,Ç· ,
+Æ»,Æ» ,
+Ƨ,Ƨ ,ƨ,ƨ ,
+Ƽ,Ƽ ,ƽ,ƽ ,
+Æ„,Æ„ ,Æ…,Æ… ,
+ʼn,ʼn ,
+Ç€,Ç€ ,
+Ç,Ç ,
+Ç‚,Ç‚ ,
+ǃ,ǃ ,
+CALL test_styles('uca1400', _utf8mb4"WHERE BINARY(LOWER(TRIM(a))) IN ('ss','s','ß','ẞ')");
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('ss','s','ß','ẞ') GROUP BY a COLLATE uca1400_nopad_as_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+s,
+S,
+s ,
+S ,
+ss,
+sS,
+Ss,
+SS,
+ß,
+ẞ,
+ss ,
+sS ,
+Ss ,
+SS ,
+ß ,
+ẞ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('ss','s','ß','ẞ') GROUP BY a COLLATE uca1400_as_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+s,s ,
+S,S ,
+ss,ss ,
+sS,sS ,
+Ss,Ss ,
+SS,SS ,
+ß,ß ,
+ẞ,ẞ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('ss','s','ß','ẞ') GROUP BY a COLLATE uca1400_nopad_as_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+S,s,
+S ,s ,
+SS,Ss,sS,ss,
+ß,ẞ,
+SS ,Ss ,sS ,ss ,
+ß ,ẞ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('ss','s','ß','ẞ') GROUP BY a COLLATE uca1400_as_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+S,S ,s,s ,
+SS,SS ,Ss,Ss ,sS,sS ,ss,ss ,
+ß,ß ,ẞ,ẞ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('ss','s','ß','ẞ') GROUP BY a COLLATE uca1400_nopad_ai_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+s,
+S,
+s ,
+S ,
+ss,
+sS,
+ß,
+Ss,
+SS,
+ẞ,
+ss ,
+sS ,
+ß ,
+Ss ,
+SS ,
+ẞ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('ss','s','ß','ẞ') GROUP BY a COLLATE uca1400_ai_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+s,s ,
+S,S ,
+ss,ss ,
+sS,sS ,
+ß,ß ,
+Ss,Ss ,
+SS,SS ,
+ẞ,ẞ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('ss','s','ß','ẞ') GROUP BY a COLLATE uca1400_nopad_ai_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+S,s,
+S ,s ,
+SS,Ss,sS,ss,ß,ẞ,
+SS ,Ss ,sS ,ss ,ß ,ẞ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('ss','s','ß','ẞ') GROUP BY a COLLATE uca1400_ai_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+S,S ,s,s ,
+SS,SS ,Ss,Ss ,sS,sS ,ss,ss ,ß,ß ,ẞ,ẞ ,
+CALL test_styles('uca1400_danish', _utf8mb4"WHERE BINARY(LOWER(TRIM(a))) IN ('aa','Ã¥')");
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('aa','Ã¥') GROUP BY a COLLATE uca1400_danish_nopad_as_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+aA,
+aA ,
+Ã¥,
+Ã…,
+aa,
+Aa,
+AA,
+Ã¥ ,
+Ã… ,
+aa ,
+Aa ,
+AA ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('aa','Ã¥') GROUP BY a COLLATE uca1400_danish_as_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+aA,aA ,
+Ã¥,Ã¥ ,
+Ã…,Ã… ,
+aa,aa ,
+Aa,Aa ,
+AA,AA ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('aa','Ã¥') GROUP BY a COLLATE uca1400_danish_nopad_as_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+aA,
+aA ,
+Ã…,Ã¥,
+AA,Aa,aa,
+Ã… ,Ã¥ ,
+AA ,Aa ,aa ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('aa','Ã¥') GROUP BY a COLLATE uca1400_danish_as_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+aA,aA ,
+Ã…,Ã… ,Ã¥,Ã¥ ,
+AA,AA ,Aa,Aa ,aa,aa ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('aa','Ã¥') GROUP BY a COLLATE uca1400_danish_nopad_ai_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+aA,
+aA ,
+aa,Ã¥,
+Aa,Ã…,
+AA,
+aa ,Ã¥ ,
+Aa ,Ã… ,
+AA ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('aa','Ã¥') GROUP BY a COLLATE uca1400_danish_ai_cs
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+aA,aA ,
+aa,aa ,Ã¥,Ã¥ ,
+Aa,Aa ,Ã…,Ã… ,
+AA,AA ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('aa','Ã¥') GROUP BY a COLLATE uca1400_danish_nopad_ai_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+aA,
+aA ,
+AA,Aa,aa,Ã…,Ã¥,
+AA ,Aa ,aa ,Ã… ,Ã¥ ,
+
+SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',') FROM t1 WHERE BINARY(LOWER(TRIM(a))) IN ('aa','Ã¥') GROUP BY a COLLATE uca1400_danish_ai_ci
+CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),',')
+aA,aA ,
+AA,AA ,Aa,Aa ,aa,aa ,Ã…,Ã… ,Ã¥,Ã¥ ,
+DROP TABLE t1;
+DROP PROCEDURE exec_verbose;
+DROP PROCEDURE test_styles;
+#
+# End of 10.9 tests
+#
diff --git a/mysql-test/main/ctype_utf8mb4_uca.test b/mysql-test/main/ctype_utf8mb4_uca.test
index 7a95da8468c..9ef001fd378 100644
--- a/mysql-test/main/ctype_utf8mb4_uca.test
+++ b/mysql-test/main/ctype_utf8mb4_uca.test
@@ -108,3 +108,299 @@ SET NAMES utf8mb4;
--echo #
--echo # End of 10.2 tests
--echo #
+
+--echo #
+--echo # End of 10.9 tests
+--echo #
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo # Collation IDs in the protocol
+--echo #
+
+SET NAMES utf8mb4;
+SET @charset=(SELECT @@character_set_client);
+--source include/ctype_uca1400_ids_using_set_names.inc
+
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo # SET NAMES CHARACTER SET cs [COLLATE cl]
+--echo #
+
+#enable after fix MDEV-29554
+--disable_view_protocol
+
+CREATE VIEW vars AS
+SELECT * FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE variable_name IN
+('character_set_client','character_set_connection','character_set_results',
+ 'collation_connection') ORDER BY variable_name;
+
+--echo ---
+SET NAMES DEFAULT COLLATE DEFAULT;
+SELECT * FROM vars;
+
+--echo ---
+--error ER_COLLATION_CHARSET_MISMATCH
+SET NAMES DEFAULT COLLATE `binary`;
+SELECT * FROM vars;
+
+--echo ---
+--error ER_COLLATION_CHARSET_MISMATCH
+SET NAMES DEFAULT COLLATE utf8mb4_uca1400_ai_ci;
+SELECT * FROM vars;
+
+--echo ---
+--error ER_COLLATION_CHARSET_MISMATCH
+SET NAMES DEFAULT COLLATE uca1400_ai_ci;
+SELECT * FROM vars;
+
+--echo ---
+SET NAMES utf8mb4;
+SELECT * FROM vars;
+
+--echo ---
+--error ER_COLLATION_CHARSET_MISMATCH
+SET NAMES utf8mb4 COLLATE `binary`;
+SELECT * FROM vars;
+
+--echo ---
+SET NAMES utf8mb4 COLLATE DEFAULT;
+SELECT * FROM vars;
+
+--echo ---
+SET NAMES utf8mb4 COLLATE utf8mb4_uca1400_ai_ci;
+SELECT * FROM vars;
+
+--echo ---
+SET NAMES utf8mb4 COLLATE uca1400_ai_ci;
+SELECT * FROM vars;
+
+DROP VIEW vars;
+
+--enable_view_protocol
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo # ALTER TABLE t1 CONVERT TO CHARACTER SET cs [COLLATE cl]
+--echo #
+
+CREATE DATABASE db1 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
+USE db1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT COLLATE DEFAULT;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+--error ER_COLLATION_CHARSET_MISMATCH
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT COLLATE latin1_bin;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET DEFAULT COLLATE uca1400_ai_ci;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4 COLLATE DEFAULT;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+--error ER_COLLATION_CHARSET_MISMATCH
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4 COLLATE latin1_bin;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET latin1);
+ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+DROP DATABASE db1;
+USE test;
+
+
+--echo #
+--echo # MDEV-27743 Remove Lex::charset
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo #
+
+CREATE TABLE t1 (c1 VARCHAR(10) CHARACTER SET utf8mb4);
+INSERT INTO t1 VALUES ('A'),('a'),('Ã'),('á');
+--error ER_PARSE_ERROR
+SELECT * FROM t1 ORDER BY c1 COLLATE DEFAULT;
+--error ER_COLLATION_CHARSET_MISMATCH
+SELECT * FROM t1 ORDER BY c1 COLLATE `binary`;
+SELECT * FROM t1 ORDER BY c1 COLLATE utf8mb4_uca1400_as_cs;
+EXPLAIN EXTENDED SELECT * FROM t1 ORDER BY c1 COLLATE utf8mb4_uca1400_as_cs;
+SELECT * FROM t1 ORDER BY c1 COLLATE uca1400_as_cs;
+EXPLAIN EXTENDED SELECT * FROM t1 ORDER BY c1 COLLATE uca1400_as_cs;
+DROP TABLE t1;
+
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo # CREATE DATABASE
+--echo #
+
+SET @@collation_server=utf8mb4_bin;
+
+CREATE DATABASE db1;
+SHOW CREATE DATABASE db1;
+DROP DATABASE db1;
+
+CREATE DATABASE db1 COLLATE DEFAULT;
+SHOW CREATE DATABASE db1;
+DROP DATABASE db1;
+
+CREATE DATABASE db1 COLLATE uca1400_ai_ci;
+SHOW CREATE DATABASE db1;
+DROP DATABASE db1;
+
+CREATE DATABASE db1 COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE DATABASE db1;
+DROP DATABASE db1;
+
+CREATE DATABASE db1 CHARACTER SET DEFAULT;
+SHOW CREATE DATABASE db1;
+DROP DATABASE db1;
+
+CREATE DATABASE db1 CHARACTER SET DEFAULT COLLATE DEFAULT;
+SHOW CREATE DATABASE db1;
+DROP DATABASE db1;
+
+CREATE DATABASE db1 CHARACTER SET DEFAULT COLLATE uca1400_ai_ci;
+SHOW CREATE DATABASE db1;
+DROP DATABASE db1;
+
+CREATE DATABASE db1 CHARACTER SET DEFAULT COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE DATABASE db1;
+DROP DATABASE db1;
+
+SET @@collation_server=DEFAULT;
+
+SET @@collation_server=latin1_bin;
+--error ER_COLLATION_CHARSET_MISMATCH
+CREATE DATABASE db1 COLLATE uca1400_ai_ci;
+--error ER_COLLATION_CHARSET_MISMATCH
+CREATE DATABASE db1 CHARACTER SET DEFAULT COLLATE uca1400_ai_ci;
+CREATE DATABASE db1 CHARACTER SET utf8mb4 COLLATE uca1400_ai_ci;
+SHOW CREATE DATABASE db1;
+DROP DATABASE db1;
+SET @@collation_server=DEFAULT;
+
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo # CREATE TABLE - table level character set and collation
+--echo #
+
+SELECT @@collation_database;
+CREATE DATABASE db1 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
+
+CREATE TABLE db1.t1 (a CHAR(1));
+SHOW CREATE TABLE db1.t1;
+DROP TABLE db1.t1;
+
+CREATE TABLE db1.t1 (a CHAR(1)) COLLATE DEFAULT;
+SHOW CREATE TABLE db1.t1;
+DROP TABLE db1.t1;
+
+CREATE TABLE db1.t1 (a CHAR(1)) COLLATE uca1400_ai_ci;
+SHOW CREATE TABLE db1.t1;
+DROP TABLE db1.t1;
+
+CREATE TABLE db1.t1 (a CHAR(1)) COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE TABLE db1.t1;
+DROP TABLE db1.t1;
+
+CREATE TABLE db1.t1 (a CHAR(1)) CHARACTER SET DEFAULT;
+SHOW CREATE TABLE db1.t1;
+DROP TABLE db1.t1;
+
+CREATE TABLE db1.t1 (a CHAR(1)) CHARACTER SET DEFAULT COLLATE DEFAULT;
+SHOW CREATE TABLE db1.t1;
+DROP TABLE db1.t1;
+
+CREATE TABLE db1.t1 (a CHAR(1)) CHARACTER SET DEFAULT COLLATE uca1400_ai_ci;
+SHOW CREATE TABLE db1.t1;
+DROP TABLE db1.t1;
+
+CREATE TABLE db1.t1 (a CHAR(1)) CHARACTER SET DEFAULT COLLATE utf8mb4_uca1400_ai_ci;
+SHOW CREATE TABLE db1.t1;
+DROP TABLE db1.t1;
+
+DROP DATABASE db1;
+
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo #
+
+SET NAMES utf8mb4;
+DELIMITER $$;
+CREATE PROCEDURE exec_verbose(query TEXT CHARACTER SET utf8mb4)
+BEGIN
+ SELECT query AS ``;
+ EXECUTE IMMEDIATE query;
+END;
+$$
+
+CREATE PROCEDURE test_styles(clname VARCHAR(64) CHARACTER SET utf8mb4,
+ where_clause TEXT CHARACTER SET utf8mb4)
+BEGIN
+ DECLARE query TEXT CHARACTER SET utf8mb4 DEFAULT
+ 'SELECT CONCAT(GROUP_CONCAT(a ORDER BY BINARY(a)),'','') '
+ 'FROM t1 <WHERE> GROUP BY a COLLATE <CL>';
+ SET query=REPLACE(query, '<WHERE>', where_clause);
+ CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_nopad_as_cs')));
+ CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_as_cs')));
+ CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_nopad_as_ci')));
+ CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_as_ci')));
+ CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_nopad_ai_cs')));
+ CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_ai_cs')));
+ CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_nopad_ai_ci')));
+ CALL exec_verbose(REPLACE(query, '<CL>', CONCAT(clname,'_ai_ci')));
+END;
+$$
+DELIMITER ;$$
+
+CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf8mb4);
+--source include/ctype_unicode_latin.inc
+INSERT INTO t1 VALUES('ẞ');
+INSERT INTO t1 SELECT CONCAT(a,' ') FROM t1;
+
+CALL test_styles('uca1400', '');
+CALL test_styles('uca1400', _utf8mb4"WHERE BINARY(LOWER(TRIM(a))) IN ('ss','s','ß','ẞ')");
+CALL test_styles('uca1400_danish', _utf8mb4"WHERE BINARY(LOWER(TRIM(a))) IN ('aa','Ã¥')");
+
+DROP TABLE t1;
+
+DROP PROCEDURE exec_verbose;
+DROP PROCEDURE test_styles;
+
+--echo #
+--echo # End of 10.9 tests
+--echo #
diff --git a/mysql-test/main/ctype_utf8mb4_uca_allkeys1400.result b/mysql-test/main/ctype_utf8mb4_uca_allkeys1400.result
new file mode 100644
index 00000000000..a3dd7a4d7b8
--- /dev/null
+++ b/mysql-test/main/ctype_utf8mb4_uca_allkeys1400.result
@@ -0,0 +1,120 @@
+#
+# Start of 10.8 tests
+#
+#
+# MDEV-27009 Add UCA-14.0.0 collations
+#
+SET NAMES utf8mb4 COLLATE utf8mb4_bin;
+CREATE TABLE allchars AS SELECT 1 AS code, ' ' AS str LIMIT 0;
+SHOW CREATE TABLE allchars;
+Table Create Table
+allchars CREATE TABLE `allchars` (
+ `code` int(1) NOT NULL,
+ `str` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t1tmp (a INT NOT NULL);
+FOR i IN 0..0xFFF
+DO
+INSERT INTO t1tmp VALUES (i);
+END FOR;
+$$
+INSERT INTO allchars SELECT
+t1.a*0x1000+t2.a,
+CHAR(t1.a*0x1000+t2.a USING utf32)
+FROM t1tmp t1, t1tmp t2
+WHERE t1.a BETWEEN 0 AND 0x10F;
+DROP TABLE t1tmp;
+SELECT COUNT(*) FROM allchars;
+COUNT(*)
+1114112
+#
+# Load allkeys.txt from Unicode-14.0.0
+#
+CREATE TABLE allkeys_txt (a TEXT, b TEXT, c TEXT) ENGINE=MyISAM;
+LOAD DATA INFILE '../../std_data/unicode/allkeys1400.txt'
+INTO TABLE allkeys_txt FIELDS TERMINATED BY ';' (@a,@b,@qq)
+SET a=TRIM(@a), b=TRIM(REGEXP_SUBSTR(@b,'^[^#]*')), c=TRIM(REGEXP_SUBSTR(@b, '#.*$'));
+CREATE TABLE allkeys AS
+SELECT
+a,
+CONVERT(CAST(UNHEX(regexp_replace(regexp_replace(regexp_replace(a,'(\\b[0-9A-Z]{4}\\b)','-0000\\1-'),'(\\b[0-9A-Z]{5}\\b)','-000\\1-'),'[ -]','')) AS CHAR CHARACTER SET utf32) USING utf8mb4) COLLATE utf8mb4_bin AS str,
+HEX(WEIGHT_STRING(CONVERT(CAST(UNHEX(regexp_replace(regexp_replace(regexp_replace(a,'(\\b[0-9A-Z]{4}\\b)','-0000\\1-'),'(\\b[0-9A-Z]{5}\\b)','-000\\1-'),'[ -]','')) AS CHAR CHARACTER SET utf32) USING utf8mb4) COLLATE utf8mb4_uca1400_ai_ci)) as ws,
+REPLACE(REPLACE(REGEXP_REPLACE(b,'[[][.*](....)[.]....[.]....]','-\\1-'),'-0000-',''),'-','') AS wd,
+c
+FROM allkeys_txt
+WHERE a RLIKE '^[0-9A-Z]';
+ALTER TABLE allkeys ADD KEY(str(3));
+#
+# Test explicit weights for individual characters
+# U+FDFA is the only character that has a different weight than allkeys.txt
+#
+SELECT COUNT(*), SUM(ws<>wd) FROM allkeys WHERE a NOT LIKE '% %';
+COUNT(*) SUM(ws<>wd)
+32958 1
+SELECT a, ws, wd FROM allkeys WHERE ws<>wd AND a NOT LIKE '% %';
+a ws wd
+FDFA 27C22802282D02092762280228022819 27C22802282D02092762280228022819020927CE2802282E28190209281F27B72802280A
+#
+# Test explicit weights for built-in contractions
+#
+SELECT COUNT(*), SUM(ws<>wd) FROM allkeys WHERE a LIKE '% %';
+COUNT(*) SUM(ws<>wd)
+939 0
+SELECT a, ws, wd FROM allkeys WHERE ws<>wd AND a LIKE '% %';
+a ws wd
+#
+# Test implicit weights.
+#
+SELECT
+HEX(code),
+HEX(WEIGHT_STRING(str COLLATE utf8mb4_uca1400_ai_ci)) AS ws,
+CASE
+/* Core Han Unified Ideograms */
+WHEN (code >= 0x4E00 AND code <= 0x9FFF) OR
+(code >= 0xFA0E AND code <= 0xFA0F) OR
+(code = 0xFA11) OR
+(code >= 0xFA13 AND code <= 0xFA14) OR
+(code = 0xFA1F) OR
+(code = 0xFA21) OR
+(code >= 0xFA23 AND code <= 0xFA24) OR
+(code >= 0xFA27 AND code <= 0xFA29) THEN
+CONCAT(LPAD(HEX(0xFB40 + (code >> 15)),4,'0'),
+LPAD(HEX(0x8000 | (code & 0x7FFF)),4,'0'))
+/* All other Han Unified Ideographs */
+WHEN (code >= 0x3400 AND code <= 0x4DBF) OR
+(code >= 0x20000 AND code <= 0x2A6DF) OR
+(code >= 0x2A700 AND code <= 0x2B738) OR
+(code >= 0x2B740 AND code <= 0x2B81D) OR
+(code >= 0x2B820 AND code <= 0x2CEA1) OR
+(code >= 0x2CEB0 AND code <= 0x2EBE0) OR
+(code >= 0x30000 AND code <= 0x3134A) THEN
+CONCAT(LPAD(HEX(0xFB80 + (code >> 15)),4,'0'),
+LPAD(HEX(0x8000 | (code & 0x7FFF)),4,'0'))
+/* Siniform: Tangut */
+WHEN (code >= 0x17000 AND code <= 0x187FF) OR
+(code >= 0x18800 AND code <= 0x18AFF) OR
+(code >= 0x18D00 AND code <= 0x18D7F) THEN
+CONCAT('FB00', LPAD(HEX(0x8000 | (code - 0x17000)),4,'0'))
+/* Siniform: Nushu */
+WHEN (code >= 0x1B170 AND code <= 0x1B2FF) THEN
+CONCAT('FB01', LPAD(HEX(0x8000 | (code - 0x1B170)),4,'0'))
+/* Siniform: Khitan */
+WHEN (code >= 0x18B00 AND code <= 0x18CFF) THEN
+CONCAT('FB02', LPAD(HEX(0x8000 | (code - 0x18B00)),4,'0'))
+/* Unassigned: Any other code point */
+ELSE
+CONCAT(LPAD(HEX(0xFBC0 + (code >> 15)),4,'0'),
+LPAD(HEX(0x8000 | (code & 0x7FFF)),4,'0'))
+END AS wd
+FROM allchars
+LEFT OUTER JOIN allkeys USING (str)
+WHERE allkeys.str IS NULL
+HAVING ws<>wd
+ORDER BY HEX(str);
+HEX(code) ws wd
+DROP TABLE allkeys_txt;
+DROP TABLE allkeys;
+DROP TABLE allchars;
+#
+# End of 10.8 tests
+#
diff --git a/mysql-test/main/ctype_utf8mb4_uca_allkeys1400.test b/mysql-test/main/ctype_utf8mb4_uca_allkeys1400.test
new file mode 100644
index 00000000000..074925aef6c
--- /dev/null
+++ b/mysql-test/main/ctype_utf8mb4_uca_allkeys1400.test
@@ -0,0 +1,128 @@
+--source include/have_utf32.inc
+--source include/have_utf8mb4.inc
+
+--echo #
+--echo # Start of 10.8 tests
+--echo #
+
+--echo #
+--echo # MDEV-27009 Add UCA-14.0.0 collations
+--echo #
+
+
+SET NAMES utf8mb4 COLLATE utf8mb4_bin;
+--source include/ctype_unicode_allchars.inc
+
+--echo #
+--echo # Load allkeys.txt from Unicode-14.0.0
+--echo #
+
+# The 14.0.0 file has three weight levels.
+# Unlike 5.2.0, there are no optional extra fields after the character
+# name like "; QQK". But lets still use the "@qq" variable for symmetry.
+#00A0 ; [*0209.0020.001B] # NO-BREAK SPACE
+#
+
+CREATE TABLE allkeys_txt (a TEXT, b TEXT, c TEXT) ENGINE=MyISAM;
+LOAD DATA INFILE '../../std_data/unicode/allkeys1400.txt'
+INTO TABLE allkeys_txt FIELDS TERMINATED BY ';' (@a,@b,@qq)
+SET a=TRIM(@a), b=TRIM(REGEXP_SUBSTR(@b,'^[^#]*')), c=TRIM(REGEXP_SUBSTR(@b, '#.*$'));
+CREATE TABLE allkeys AS
+SELECT
+ a,
+ CONVERT(CAST(UNHEX(regexp_replace(regexp_replace(regexp_replace(a,'(\\b[0-9A-Z]{4}\\b)','-0000\\1-'),'(\\b[0-9A-Z]{5}\\b)','-000\\1-'),'[ -]','')) AS CHAR CHARACTER SET utf32) USING utf8mb4) COLLATE utf8mb4_bin AS str,
+ HEX(WEIGHT_STRING(CONVERT(CAST(UNHEX(regexp_replace(regexp_replace(regexp_replace(a,'(\\b[0-9A-Z]{4}\\b)','-0000\\1-'),'(\\b[0-9A-Z]{5}\\b)','-000\\1-'),'[ -]','')) AS CHAR CHARACTER SET utf32) USING utf8mb4) COLLATE utf8mb4_uca1400_ai_ci)) as ws,
+ REPLACE(REPLACE(REGEXP_REPLACE(b,'[[][.*](....)[.]....[.]....]','-\\1-'),'-0000-',''),'-','') AS wd,
+ c
+FROM allkeys_txt
+WHERE a RLIKE '^[0-9A-Z]';
+ALTER TABLE allkeys ADD KEY(str(3));
+
+--echo #
+--echo # Test explicit weights for individual characters
+--echo # U+FDFA is the only character that has a different weight than allkeys.txt
+--echo #
+
+# The (NOT LIKE '% %') part of the condition filters out contractions.
+
+SELECT COUNT(*), SUM(ws<>wd) FROM allkeys WHERE a NOT LIKE '% %';
+SELECT a, ws, wd FROM allkeys WHERE ws<>wd AND a NOT LIKE '% %';
+
+--echo #
+--echo # Test explicit weights for built-in contractions
+--echo #
+
+SELECT COUNT(*), SUM(ws<>wd) FROM allkeys WHERE a LIKE '% %';
+SELECT a, ws, wd FROM allkeys WHERE ws<>wd AND a LIKE '% %';
+
+
+--echo #
+--echo # Test implicit weights.
+--echo #
+
+# The below CASE resembles the implicit weight formula according to
+# https://unicode.org/reports/tr10/#Implicit_Weights
+# as of Unicode-14.0.0
+
+
+SELECT
+ HEX(code),
+ HEX(WEIGHT_STRING(str COLLATE utf8mb4_uca1400_ai_ci)) AS ws,
+ CASE
+
+ /* Core Han Unified Ideograms */
+ WHEN (code >= 0x4E00 AND code <= 0x9FFF) OR
+ (code >= 0xFA0E AND code <= 0xFA0F) OR
+ (code = 0xFA11) OR
+ (code >= 0xFA13 AND code <= 0xFA14) OR
+ (code = 0xFA1F) OR
+ (code = 0xFA21) OR
+ (code >= 0xFA23 AND code <= 0xFA24) OR
+ (code >= 0xFA27 AND code <= 0xFA29) THEN
+ CONCAT(LPAD(HEX(0xFB40 + (code >> 15)),4,'0'),
+ LPAD(HEX(0x8000 | (code & 0x7FFF)),4,'0'))
+
+ /* All other Han Unified Ideographs */
+ WHEN (code >= 0x3400 AND code <= 0x4DBF) OR
+ (code >= 0x20000 AND code <= 0x2A6DF) OR
+ (code >= 0x2A700 AND code <= 0x2B738) OR
+ (code >= 0x2B740 AND code <= 0x2B81D) OR
+ (code >= 0x2B820 AND code <= 0x2CEA1) OR
+ (code >= 0x2CEB0 AND code <= 0x2EBE0) OR
+ (code >= 0x30000 AND code <= 0x3134A) THEN
+ CONCAT(LPAD(HEX(0xFB80 + (code >> 15)),4,'0'),
+ LPAD(HEX(0x8000 | (code & 0x7FFF)),4,'0'))
+
+ /* Siniform: Tangut */
+ WHEN (code >= 0x17000 AND code <= 0x187FF) OR
+ (code >= 0x18800 AND code <= 0x18AFF) OR
+ (code >= 0x18D00 AND code <= 0x18D7F) THEN
+ CONCAT('FB00', LPAD(HEX(0x8000 | (code - 0x17000)),4,'0'))
+
+ /* Siniform: Nushu */
+ WHEN (code >= 0x1B170 AND code <= 0x1B2FF) THEN
+ CONCAT('FB01', LPAD(HEX(0x8000 | (code - 0x1B170)),4,'0'))
+
+ /* Siniform: Khitan */
+ WHEN (code >= 0x18B00 AND code <= 0x18CFF) THEN
+ CONCAT('FB02', LPAD(HEX(0x8000 | (code - 0x18B00)),4,'0'))
+
+ /* Unassigned: Any other code point */
+ ELSE
+ CONCAT(LPAD(HEX(0xFBC0 + (code >> 15)),4,'0'),
+ LPAD(HEX(0x8000 | (code & 0x7FFF)),4,'0'))
+
+ END AS wd
+FROM allchars
+LEFT OUTER JOIN allkeys USING (str)
+WHERE allkeys.str IS NULL
+HAVING ws<>wd
+ORDER BY HEX(str);
+
+DROP TABLE allkeys_txt;
+DROP TABLE allkeys;
+DROP TABLE allchars;
+
+--echo #
+--echo # End of 10.8 tests
+--echo #
diff --git a/mysql-test/main/default.result b/mysql-test/main/default.result
index 9a29cf7ddb0..abcf3b27c9c 100644
--- a/mysql-test/main/default.result
+++ b/mysql-test/main/default.result
@@ -371,7 +371,7 @@ create or replace table t1 (param_list blob DEFAULT "" NOT NULL);
drop table t1;
create table t1 (a int);
insert into t1 values(-1);
-alter table t1 add b int default 1, add c int default -1, add d int default (1+1), add e timestamp;
+alter table t1 add b int default 1, add c int default -1, add d int default (1+1), add e timestamp not null default now();
select a,b,c,d,e from t1;
a b c d e
-1 1 -1 2 2001-01-01 10:20:30
@@ -388,7 +388,7 @@ t1 CREATE TABLE `t1` (
`b` int(11) DEFAULT 1,
`c` int(11) DEFAULT -1,
`d` int(11) DEFAULT (1 + 1),
- `e` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `e` timestamp NOT NULL DEFAULT current_timestamp(),
`f` int(11) DEFAULT (1 + 1 + 1),
`g` int(11) NOT NULL DEFAULT (1 + 1 + 1 + 1),
`h` int(11) DEFAULT (2 + 2 + 2 + 2)
@@ -401,7 +401,7 @@ t2 CREATE TABLE `t2` (
`b` int(11) DEFAULT 1,
`c` int(11) DEFAULT -1,
`d` int(11) DEFAULT (1 + 1),
- `e` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `e` timestamp NOT NULL DEFAULT current_timestamp(),
`f` int(11) DEFAULT (1 + 1 + 1),
`g` int(11) NOT NULL DEFAULT (1 + 1 + 1 + 1),
`h` int(11) DEFAULT (2 + 2 + 2 + 2)
@@ -1067,7 +1067,7 @@ CREATE TABLE t1 (a TIMESTAMP DEFAULT COALESCE(CURRENT_TIMESTAMP));
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp NOT NULL DEFAULT coalesce(current_timestamp())
+ `a` timestamp NULL DEFAULT coalesce(current_timestamp())
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
CREATE TABLE t1 (a DATE DEFAULT COALESCE(CURRENT_DATE));
@@ -1091,8 +1091,8 @@ b TIMESTAMP DEFAULT COALESCE(CURRENT_TIMESTAMP(6))
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp NOT NULL DEFAULT current_timestamp(),
- `b` timestamp NOT NULL DEFAULT coalesce(current_timestamp(6))
+ `a` timestamp NULL DEFAULT current_timestamp(),
+ `b` timestamp NULL DEFAULT coalesce(current_timestamp(6))
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO t1 VALUES ();
SELECT CURRENT_TIMESTAMP(6);
@@ -1525,8 +1525,8 @@ CREATE TABLE t1 (a TIMESTAMP DEFAULT NOW(), b TIMESTAMP DEFAULT UTC_TIMESTAMP())
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp NOT NULL DEFAULT current_timestamp(),
- `b` timestamp NOT NULL DEFAULT utc_timestamp()
+ `a` timestamp NULL DEFAULT current_timestamp(),
+ `b` timestamp NULL DEFAULT utc_timestamp()
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO t1 VALUES ();
SELECT * FROM t1;
@@ -1538,9 +1538,9 @@ CREATE TABLE t1 (a TIMESTAMP(6) DEFAULT SYSDATE(6), s INT, b TIMESTAMP(6) DEFAUL
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp(6) NOT NULL DEFAULT sysdate(6),
+ `a` timestamp(6) NULL DEFAULT sysdate(6),
`s` int(11) DEFAULT NULL,
- `b` timestamp(6) NOT NULL DEFAULT sysdate(6)
+ `b` timestamp(6) NULL DEFAULT sysdate(6)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO t1 VALUES (DEFAULT(a), SLEEP(0.1), DEFAULT(b));
SELECT b>a FROM t1;
@@ -1553,7 +1553,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
- `b` timestamp NOT NULL DEFAULT from_unixtime(`a`)
+ `b` timestamp NULL DEFAULT from_unixtime(`a`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO t1 VALUES (1447430881, DEFAULT);
SELECT * FROM t1;
@@ -1565,8 +1565,8 @@ CREATE TABLE t1 (a TIMESTAMP, b TIMESTAMP DEFAULT CONVERT_TZ(a, '-10:00', '+10:0
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `b` timestamp NOT NULL DEFAULT convert_tz(`a`,'-10:00','+10:00')
+ `a` timestamp NULL DEFAULT NULL,
+ `b` timestamp NULL DEFAULT convert_tz(`a`,'-10:00','+10:00')
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO t1 VALUES ('2001-01-01 10:20:30', DEFAULT);
SELECT * FROM t1;
diff --git a/mysql-test/main/default.test b/mysql-test/main/default.test
index 3064209a4a2..26fc2186533 100644
--- a/mysql-test/main/default.test
+++ b/mysql-test/main/default.test
@@ -287,7 +287,7 @@ drop table t1;
create table t1 (a int);
insert into t1 values(-1);
-alter table t1 add b int default 1, add c int default -1, add d int default (1+1), add e timestamp;
+alter table t1 add b int default 1, add c int default -1, add d int default (1+1), add e timestamp not null default now();
select a,b,c,d,e from t1;
insert into t1 values(10,10,10,10,0);
alter table t1 add f int default (1+1+1) null, add g int default (1+1+1+1) not null,add h int default (2+2+2+2);
diff --git a/mysql-test/main/fast_prefix_index_fetch_innodb.result b/mysql-test/main/fast_prefix_index_fetch_innodb.result
index aa888fb0704..1ce29100c66 100644
--- a/mysql-test/main/fast_prefix_index_fetch_innodb.result
+++ b/mysql-test/main/fast_prefix_index_fetch_innodb.result
@@ -1,8 +1,3 @@
-SET @save_opt= @@GLOBAL.innodb_prefix_index_cluster_optimization;
-set global innodb_prefix_index_cluster_optimization = ON;
-show variables like 'innodb_prefix_index_cluster_optimization';
-Variable_name Value
-innodb_prefix_index_cluster_optimization ON
SET @save_innodb_stats_persistent=@@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = OFF;
# Create a table with a large varchar field that we index the prefix
@@ -31,110 +26,39 @@ id fake_id bigfield
32 1032 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
33 1033 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
128 1128 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
-# Baseline sanity check: 0, 0.
-select "no-op query";
-no-op query
-no-op query
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Eligible for optimization.
select id, bigfield from prefixinno where bigfield = repeat('d', 31);
id bigfield
31 ddddddddddddddddddddddddddddddd
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Eligible for optimization, access via fake_id only.
select id, bigfield from prefixinno where fake_id = 1031;
id bigfield
31 ddddddddddddddddddddddddddddddd
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Not eligible for optimization, access via fake_id of big row.
select id, bigfield from prefixinno where fake_id = 1033;
id bigfield
33 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Not eligible for optimization.
select id, bigfield from prefixinno where bigfield = repeat('x', 32);
id bigfield
32 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
-# Not eligible for optimization.
select id, bigfield from prefixinno where bigfield = repeat('y', 33);
id bigfield
33 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
-# Eligible, should not increment lookup counter.
select id, bigfield from prefixinno where bigfield = repeat('b', 8);
id bigfield
8 bbbbbbbb
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
-# Eligible, should not increment lookup counter.
select id, bigfield from prefixinno where bigfield = repeat('c', 24);
id bigfield
24 cccccccccccccccccccccccc
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
-# Should increment lookup counter.
select id, bigfield from prefixinno where bigfield = repeat('z', 128);
id bigfield
128 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
-# Disable optimization, confirm we still increment counter.
-set global innodb_prefix_index_cluster_optimization = OFF;
select id, bigfield from prefixinno where fake_id = 1033;
id bigfield
33 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
drop table prefixinno;
# Multi-byte handling case
-set global innodb_prefix_index_cluster_optimization = ON;
SET NAMES utf8mb4;
CREATE TABLE t1(
f1 varchar(10) CHARACTER SET UTF8MB4 COLLATE UTF8MB4_BIN,
@@ -146,113 +70,47 @@ INSERT INTO t1 VALUES('😊me'), ('eu€'), ('ls¢');
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'a';
f1
a
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'c%';
f1
cccc
cÄc
-select @cluster_lookups;
-@cluster_lookups
-3
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Eligible - record length shorter than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'až';
f1
až
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'தமிழà¯';
f1
தமிழà¯
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'ggáµ·%';
f1
ggáµ·g
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '😊%';
f1
😊me
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'ls¢';
f1
ls¢
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Eligible - record length shorter than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '¢¢%';
f1
¢¢
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Eligible - record length shorter than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'ðŸ±ðŸŒ‘%';
f1
ðŸ±ðŸŒ‘
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '🌑%';
f1
🌑
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-2
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '🌒%';
f1
🌒
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-2
DROP TABLE t1;
# Multi-byte with minimum character length > 1 bytes
CREATE TABLE t1(
@@ -265,113 +123,47 @@ INSERT INTO t1 VALUES('😊me'), ('eu€'), ('ls¢');
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'a';
f1
a
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'c%';
f1
cccc
cÄc
-select @cluster_lookups;
-@cluster_lookups
-3
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Eligible - record length shorter than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'až';
f1
až
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'தமிழà¯';
f1
தமிழà¯
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'ggáµ·%';
f1
ggáµ·g
-select @cluster_lookups;
-@cluster_lookups
-2
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '😊%';
f1
😊me
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Not eligible - record length longer than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'ls¢';
f1
ls¢
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
# Eligible - record length shorter than prefix length
SELECT f1 FROM t1 FORCE INDEX(`f1`) WHERE f1 like '¢¢%';
f1
¢¢
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Eligible - record length shorter than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'ðŸ±ðŸŒ‘%';
f1
ðŸ±ðŸŒ‘
-select @cluster_lookups;
-@cluster_lookups
-1
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Eligible - record length is shorter than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '🌑%';
f1
🌑
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-2
# Eligible - record length is shorter than prefix length
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '🌒%';
f1
🌒
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-2
DROP TABLE t1;
CREATE TABLE t1(
col1 INT,
@@ -383,22 +175,10 @@ INSERT INTO t1(col1) VALUES(1);
SELECT col1 FROM t1 FORCE INDEX (`idx1`) WHERE col2 is NULL;
col1
1
-select @cluster_lookups;
-@cluster_lookups
-0
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-1
# Not eligible - record length longer than prefix index
SELECT col1 FROM t1 FORCE INDEX (`idx1`) WHERE col2 like 'test1%';
col1
3
-select @cluster_lookups;
-@cluster_lookups
-2
-select @cluster_lookups_avoided;
-@cluster_lookups_avoided
-0
DROP TABLE t1;
#
# MDEV-20464 Division by 0 in row_search_with_covering_prefix()
@@ -443,18 +223,10 @@ INSERT INTO wp_blogs (domain, path) VALUES
('domain.no', '/fondsinvesteringer/'), ('domain.no', '/'),
('foo', 'bar'), ('bar', 'foo'), ('foo', 'foo'), ('bar', 'bar'),
('foo', 'foobar'), ('bar', 'foobar'), ('foobar', 'foobar');
-SET GLOBAL innodb_prefix_index_cluster_optimization=off;
-SELECT blog_id FROM wp_blogs WHERE domain IN ('domain.no')
-AND path IN ( '/fondsinvesteringer/', '/' );
-blog_id
-2
-1
-SET GLOBAL innodb_prefix_index_cluster_optimization=on;
SELECT blog_id FROM wp_blogs WHERE domain IN ('domain.no')
AND path IN ( '/fondsinvesteringer/', '/' );
blog_id
2
1
DROP TABLE wp_blogs;
-SET GLOBAL innodb_prefix_index_cluster_optimization = @save_opt;
SET GLOBAL innodb_stats_persistent = @save_innodb_stats_persistent;
diff --git a/mysql-test/main/fast_prefix_index_fetch_innodb.test b/mysql-test/main/fast_prefix_index_fetch_innodb.test
index 52066e96117..eca87e3db28 100644
--- a/mysql-test/main/fast_prefix_index_fetch_innodb.test
+++ b/mysql-test/main/fast_prefix_index_fetch_innodb.test
@@ -1,10 +1,6 @@
-- source include/have_innodb.inc
--disable_service_connection
-SET @save_opt= @@GLOBAL.innodb_prefix_index_cluster_optimization;
-set global innodb_prefix_index_cluster_optimization = ON;
-show variables like 'innodb_prefix_index_cluster_optimization';
-
SET @save_innodb_stats_persistent=@@GLOBAL.innodb_stats_persistent;
SET GLOBAL innodb_stats_persistent = OFF;
@@ -29,185 +25,28 @@ insert into prefixinno values (1, 1001, repeat('a', 1)),
select * from prefixinno;
-let $show_count_statement = show status like 'innodb_secondary_index_triggered_cluster_reads';
-let $show_opt_statement = show status like 'innodb_secondary_index_triggered_cluster_reads_avoided';
-
---echo # Baseline sanity check: 0, 0.
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
-select "no-op query";
-
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval select $count - $base_count into @cluster_lookups;
-eval select $opt - $base_opt into @cluster_lookups_avoided;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Eligible for optimization.
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
select id, bigfield from prefixinno where bigfield = repeat('d', 31);
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval select $count - $base_count into @cluster_lookups;
-eval select $opt - $base_opt into @cluster_lookups_avoided;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Eligible for optimization, access via fake_id only.
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
select id, bigfield from prefixinno where fake_id = 1031;
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval select $count - $base_count into @cluster_lookups;
-eval select $opt - $base_opt into @cluster_lookups_avoided;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible for optimization, access via fake_id of big row.
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
select id, bigfield from prefixinno where fake_id = 1033;
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval select $count - $base_count into @cluster_lookups;
-eval select $opt - $base_opt into @cluster_lookups_avoided;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible for optimization.
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
select id, bigfield from prefixinno where bigfield = repeat('x', 32);
-
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval select $count - $base_count into @cluster_lookups;
-eval select $opt - $base_opt into @cluster_lookups_avoided;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
---echo # Not eligible for optimization.
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
select id, bigfield from prefixinno where bigfield = repeat('y', 33);
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval select $count - $base_count into @cluster_lookups;
-eval select $opt - $base_opt into @cluster_lookups_avoided;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
---echo # Eligible, should not increment lookup counter.
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
select id, bigfield from prefixinno where bigfield = repeat('b', 8);
-
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval select $count - $base_count into @cluster_lookups;
-eval select $opt - $base_opt into @cluster_lookups_avoided;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
---echo # Eligible, should not increment lookup counter.
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
select id, bigfield from prefixinno where bigfield = repeat('c', 24);
-
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval select $count - $base_count into @cluster_lookups;
-eval select $opt - $base_opt into @cluster_lookups_avoided;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
---echo # Should increment lookup counter.
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
select id, bigfield from prefixinno where bigfield = repeat('z', 128);
-
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval select $count - $base_count into @cluster_lookups;
-eval select $opt - $base_opt into @cluster_lookups_avoided;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
---echo # Disable optimization, confirm we still increment counter.
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
-set global innodb_prefix_index_cluster_optimization = OFF;
select id, bigfield from prefixinno where fake_id = 1033;
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval select $count - $base_count into @cluster_lookups;
-eval select $opt - $base_opt into @cluster_lookups_avoided;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
drop table prefixinno;
--echo # Multi-byte handling case
-set global innodb_prefix_index_cluster_optimization = ON;
SET NAMES utf8mb4;
CREATE TABLE t1(
f1 varchar(10) CHARACTER SET UTF8MB4 COLLATE UTF8MB4_BIN,
@@ -218,200 +57,38 @@ INSERT INTO t1 VALUES('தமிழà¯'), ('ðŸ±ðŸŒ‘'), ('🌒'), ('🌑');
INSERT INTO t1 VALUES('😊me'), ('eu€'), ('ls¢');
--echo # Eligible - record length is shorter than prefix
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'a';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'c%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Eligible - record length shorter than prefix length
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'až';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'தமிழà¯';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'ggáµ·%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '😊%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'ls¢';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Eligible - record length shorter than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '¢¢%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Eligible - record length shorter than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'ðŸ±ðŸŒ‘%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '🌑%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '🌒%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
DROP TABLE t1;
--echo # Multi-byte with minimum character length > 1 bytes
@@ -425,201 +102,38 @@ INSERT INTO t1 VALUES('தமிழà¯'), ('ðŸ±ðŸŒ‘'), ('🌒'), ('🌑');
INSERT INTO t1 VALUES('😊me'), ('eu€'), ('ls¢');
--echo # Eligible - record length is shorter than prefix
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'a';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'c%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Eligible - record length shorter than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'až';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'தமிழà¯';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'ggáµ·%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '😊%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 = 'ls¢';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Eligible - record length shorter than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX(`f1`) WHERE f1 like '¢¢%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Eligible - record length shorter than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like 'ðŸ±ðŸŒ‘%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Eligible - record length is shorter than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '🌑%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Eligible - record length is shorter than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT f1 FROM t1 FORCE INDEX (`f1`) WHERE f1 like '🌒%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
DROP TABLE t1;
CREATE TABLE t1(
@@ -630,41 +144,11 @@ INSERT INTO t1 VALUES (2, 'test'), (3, repeat('test1', 2000));
INSERT INTO t1(col1) VALUES(1);
--echo # Eligible - record length is shorter than prefix length
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT col1 FROM t1 FORCE INDEX (`idx1`) WHERE col2 is NULL;
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
--echo # Not eligible - record length longer than prefix index
-
-let $base_count = query_get_value($show_count_statement, Value, 1);
-let $base_opt = query_get_value($show_opt_statement, Value, 1);
-
SELECT col1 FROM t1 FORCE INDEX (`idx1`) WHERE col2 like 'test1%';
-let $count = query_get_value($show_count_statement, Value, 1);
-let $opt = query_get_value($show_opt_statement, Value, 1);
-
---disable_query_log
-eval set @cluster_lookups = $count - $base_count;
-eval set @cluster_lookups_avoided = $opt - $base_opt;
---enable_query_log
-
-select @cluster_lookups;
-select @cluster_lookups_avoided;
-
DROP TABLE t1;
--echo #
@@ -710,16 +194,10 @@ INSERT INTO wp_blogs (domain, path) VALUES
('foo', 'bar'), ('bar', 'foo'), ('foo', 'foo'), ('bar', 'bar'),
('foo', 'foobar'), ('bar', 'foobar'), ('foobar', 'foobar');
-SET GLOBAL innodb_prefix_index_cluster_optimization=off;
-SELECT blog_id FROM wp_blogs WHERE domain IN ('domain.no')
-AND path IN ( '/fondsinvesteringer/', '/' );
-
-SET GLOBAL innodb_prefix_index_cluster_optimization=on;
SELECT blog_id FROM wp_blogs WHERE domain IN ('domain.no')
AND path IN ( '/fondsinvesteringer/', '/' );
DROP TABLE wp_blogs;
-SET GLOBAL innodb_prefix_index_cluster_optimization = @save_opt;
SET GLOBAL innodb_stats_persistent = @save_innodb_stats_persistent;
--enable_service_connection
diff --git a/mysql-test/main/func_default.result b/mysql-test/main/func_default.result
index 8330b3a39fe..d01a86b4cd1 100644
--- a/mysql-test/main/func_default.result
+++ b/mysql-test/main/func_default.result
@@ -175,7 +175,7 @@ default(a) = now()
1
drop view v1, v2;
drop table t1;
-create table t1 (v1 timestamp) select 'x';
+create table t1 (v1 timestamp not null default now() on update now()) select 'x';
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
diff --git a/mysql-test/main/func_default.test b/mysql-test/main/func_default.test
index 1125ac32e81..ebd4f6e7b1e 100644
--- a/mysql-test/main/func_default.test
+++ b/mysql-test/main/func_default.test
@@ -156,7 +156,7 @@ drop table t1;
--enable_view_protocol
-create table t1 (v1 timestamp) select 'x';
+create table t1 (v1 timestamp not null default now() on update now()) select 'x';
show create table t1;
select default(v1) from (select v1 from t1) dt;
select default(v1) from (select v1 from t1 group by v1) dt;
diff --git a/mysql-test/main/func_des_encrypt.result b/mysql-test/main/func_des_encrypt.result
index 540596589b6..9ce577a5794 100644
--- a/mysql-test/main/func_des_encrypt.result
+++ b/mysql-test/main/func_des_encrypt.result
@@ -1,12 +1,16 @@
select des_encrypt('hello');
des_encrypt('hello')
€Ö2nV“Ø}
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
#
# Bug #11643: des_encrypt() causes server to die
#
CREATE TABLE t1 (des VARBINARY(200) NOT NULL DEFAULT '') ENGINE=MyISAM;
INSERT INTO t1 VALUES ('1234'), ('12345'), ('123456'), ('1234567');
UPDATE t1 SET des=DES_ENCRYPT('1234');
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
SELECT LENGTH(des) FROM t1;
LENGTH(des)
9
@@ -19,6 +23,8 @@ DES_DECRYPT(des)
1234
1234
1234
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
SELECT
LENGTH(DES_ENCRYPT('1234')),
LENGTH(DES_ENCRYPT('12345')),
@@ -26,6 +32,11 @@ LENGTH(DES_ENCRYPT('123456')),
LENGTH(DES_ENCRYPT('1234567'));
LENGTH(DES_ENCRYPT('1234')) LENGTH(DES_ENCRYPT('12345')) LENGTH(DES_ENCRYPT('123456')) LENGTH(DES_ENCRYPT('1234567'))
9 9 9 9
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
SELECT
DES_DECRYPT(DES_ENCRYPT('1234')),
DES_DECRYPT(DES_ENCRYPT('12345')),
@@ -33,6 +44,15 @@ DES_DECRYPT(DES_ENCRYPT('123456')),
DES_DECRYPT(DES_ENCRYPT('1234567'));
DES_DECRYPT(DES_ENCRYPT('1234')) DES_DECRYPT(DES_ENCRYPT('12345')) DES_DECRYPT(DES_ENCRYPT('123456')) DES_DECRYPT(DES_ENCRYPT('1234567'))
1234 12345 123456 1234567
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
DROP TABLE t1;
End of 5.0 tests
#
@@ -64,6 +84,8 @@ i NULL
j 000000000009
j NULL
NULL NULL
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
DROP TABLE t1;
CREATE TABLE t1 (a INT);
INSERT t1 VALUES (1),(2);
@@ -71,5 +93,20 @@ SELECT CHAR_LENGTH(a), DES_DECRYPT(a) FROM (SELECT _utf8 0xC2A2 AS a FROM t1) AS
CHAR_LENGTH(a) DES_DECRYPT(a)
1 ¢
1 ¢
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
DROP TABLE t1;
-End of 10.5 tests
+#
+# End of 10.5 tests
+#
+#
+# MDEV-27104 deprecate DES_ENCRYPT/DECRYPT functions
+#
+# just show how to disable deprecation note
+set sql_notes=0;
+select hex(des_encrypt('a'));
+hex(des_encrypt('a'))
+80E4DE4136BA6CD7F3
+#
+# End of 10.10 tests
+#
diff --git a/mysql-test/main/func_des_encrypt.test b/mysql-test/main/func_des_encrypt.test
index 44fc30ff00f..884fad54635 100644
--- a/mysql-test/main/func_des_encrypt.test
+++ b/mysql-test/main/func_des_encrypt.test
@@ -1,4 +1,6 @@
-- source include/have_des.inc
+#double warning for view protocol
+--source include/no_view_protocol.inc
# This test can't be in func_encrypt.test, because it requires
# --des-key-file to not be set.
@@ -57,4 +59,17 @@ INSERT t1 VALUES (1),(2);
SELECT CHAR_LENGTH(a), DES_DECRYPT(a) FROM (SELECT _utf8 0xC2A2 AS a FROM t1) AS t2;
DROP TABLE t1;
---Echo End of 10.5 tests
+--echo #
+--echo # End of 10.5 tests
+--echo #
+
+--echo #
+--echo # MDEV-27104 deprecate DES_ENCRYPT/DECRYPT functions
+--echo #
+--echo # just show how to disable deprecation note
+set sql_notes=0;
+select hex(des_encrypt('a'));
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/mysql-test/main/func_encrypt.result b/mysql-test/main/func_encrypt.result
index 97aaed336de..4570ff312cf 100644
--- a/mysql-test/main/func_encrypt.result
+++ b/mysql-test/main/func_encrypt.result
@@ -1,45 +1,125 @@
drop table if exists t1;
create table t1 (x blob);
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('a','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','a'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('ab','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','ab'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('abc','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','abc'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('abcd','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','abcd'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('abcde','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','abcde'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('abcdef','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','abcdef'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('abcdefg','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','abcdefg'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('abcdefgh','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','abcdefgh'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('abcdefghi','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','abcdefghi'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('abcdefghij','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','abcdefghij'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('abcdefghijk','The quick red fox jumped over the lazy brown dog'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','abcdefghijk'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('The quick red fox jumped over the lazy brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('quick red fox jumped over the lazy brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('red fox jumped over the lazy brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('fox jumped over the lazy brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('jumped over the lazy brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('over the lazy brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('the lazy brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('lazy brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('dog!','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('dog!!','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('dog!!!','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('dog!!!!','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('dog!!!!!','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('jumped over the lazy brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
insert into t1 values (des_encrypt('jumped over the lazy brown dog','sabakala'));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
select hex(x), hex(des_decrypt(x,'sabakala')) from t1;
hex(x) hex(des_decrypt(x,'sabakala'))
FFA185A4656D113445E31D7A5B31BB57671A4CA9E21E63FE5D9C801E0CC7AA6190C13E269C2AE8D8060D3FB3FEA94FEC7FB006B9DCAC3E3E41 NULL
@@ -82,6 +162,8 @@ FF3FC2E42D7C840905 646F6721212121
FF9723312D26D9E6DA01D01A784A64DB9D 646F672121212121
FF8333F3DD21E4488F967E03DD12394813A49F72848BB49473D3CB1C8A1AACF220 6A756D706564206F76657220746865206C617A792062726F776E20646F67
FF8333F3DD21E4488F967E03DD12394813A49F72848BB49473D3CB1C8A1AACF220 6A756D706564206F76657220746865206C617A792062726F776E20646F67
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select des_decrypt(x,'sabakala') as s from t1 having s like '%dog%';
s
The quick red fox jumped over the lazy brown dog
@@ -101,87 +183,145 @@ dog!!!!
dog!!!!!
jumped over the lazy brown dog
jumped over the lazy brown dog
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
drop table t1;
select hex(des_encrypt("hello")),des_decrypt(des_encrypt("hello"));
hex(des_encrypt("hello")) des_decrypt(des_encrypt("hello"))
85D6DC8859F9759BBB hello
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select des_decrypt(des_encrypt("hello",4));
des_decrypt(des_encrypt("hello",4))
hello
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select des_decrypt(des_encrypt("hello",'test'),'test');
des_decrypt(des_encrypt("hello",'test'),'test')
hello
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select hex(des_encrypt("hello")),hex(des_encrypt("hello",5)),hex(des_encrypt("hello",'default_password'));
hex(des_encrypt("hello")) hex(des_encrypt("hello",5)) hex(des_encrypt("hello",'default_password'))
85D6DC8859F9759BBB 85D6DC8859F9759BBB FFD6DC8859F9759BBB
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
select des_decrypt(des_encrypt("hello"),'default_password');
des_decrypt(des_encrypt("hello"),'default_password')
hello
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select des_decrypt(des_encrypt("hello",4),'password4');
des_decrypt(des_encrypt("hello",4),'password4')
hello
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select des_encrypt("hello",10);
des_encrypt("hello",10)
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1108 Incorrect parameters to procedure 'des_encrypt'
select des_encrypt(NULL);
des_encrypt(NULL)
NULL
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
select des_encrypt(NULL, 10);
des_encrypt(NULL, 10)
NULL
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
select des_encrypt(NULL, NULL);
des_encrypt(NULL, NULL)
NULL
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
select des_encrypt(10, NULL);
des_encrypt(10, NULL)
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1108 Incorrect parameters to procedure 'des_encrypt'
select des_encrypt("hello", NULL);
des_encrypt("hello", NULL)
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1108 Incorrect parameters to procedure 'des_encrypt'
select des_decrypt("hello",10);
des_decrypt("hello",10)
hello
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select des_decrypt(NULL);
des_decrypt(NULL)
NULL
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select des_decrypt(NULL, 10);
des_decrypt(NULL, 10)
NULL
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select des_decrypt(NULL, NULL);
des_decrypt(NULL, NULL)
NULL
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select des_decrypt(10, NULL);
des_decrypt(10, NULL)
10
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select des_decrypt("hello", NULL);
des_decrypt("hello", NULL)
hello
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
SET @a=des_decrypt(des_encrypt("hello"));
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
flush des_key_file;
select @a = des_decrypt(des_encrypt("hello"));
@a = des_decrypt(des_encrypt("hello"))
1
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select hex("hello");
hex("hello")
68656C6C6F
select hex(des_decrypt(des_encrypt("hello",4),'password2'));
hex(des_decrypt(des_encrypt("hello",4),'password2'))
NULL
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select hex(des_decrypt(des_encrypt("hello","hidden")));
hex(des_decrypt(des_encrypt("hello","hidden")))
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1108 Incorrect parameters to procedure 'des_decrypt'
explain extended select des_decrypt(des_encrypt("hello",4),'password2'), des_decrypt(des_encrypt("hello","hidden"));
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Note 1003 select des_decrypt(des_encrypt('hello',4),'password2') AS `des_decrypt(des_encrypt("hello",4),'password2')`,des_decrypt(des_encrypt('hello','hidden')) AS `des_decrypt(des_encrypt("hello","hidden"))`
#
# Start of 10.1 tests
@@ -196,6 +336,7 @@ SELECT * FROM t1 WHERE a=1 AND DES_ENCRYPT('test',a)=_latin1 'abc' COLLATE latin
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 1 and des_encrypt('test',`test`.`t1`.`a`) = 'abc'
DROP TABLE t1;
#
@@ -212,6 +353,9 @@ a VARCHAR(30),
b BLOB DEFAULT DES_ENCRYPT(a, 'passwd'),
c TEXT DEFAULT DES_DECRYPT(b, 'passwd')
);
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
diff --git a/mysql-test/main/func_encrypt.test b/mysql-test/main/func_encrypt.test
index 4a8c20e3dbc..306939ef2ac 100644
--- a/mysql-test/main/func_encrypt.test
+++ b/mysql-test/main/func_encrypt.test
@@ -1,4 +1,6 @@
-- source include/have_des.inc
+#double warning for view protocol
+--source include/no_view_protocol.inc
--disable_warnings
drop table if exists t1;
@@ -120,7 +122,9 @@ CREATE TABLE t1 (
b BLOB DEFAULT DES_ENCRYPT(a, 'passwd'),
c TEXT DEFAULT DES_DECRYPT(b, 'passwd')
);
+--disable_warnings
SHOW CREATE TABLE t1;
+--enable_warnings
INSERT INTO t1 (a) VALUES ('test');
SELECT c FROM t1;
DROP TABLE t1;
diff --git a/mysql-test/main/func_encrypt_nossl.result b/mysql-test/main/func_encrypt_nossl.result
index dd45717a22f..b28d4811433 100644
--- a/mysql-test/main/func_encrypt_nossl.result
+++ b/mysql-test/main/func_encrypt_nossl.result
@@ -2,67 +2,87 @@ select des_encrypt("test", 'akeystr');
des_encrypt("test", 'akeystr')
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_encrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_encrypt("test", 1);
des_encrypt("test", 1)
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_encrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_encrypt("test", 9);
des_encrypt("test", 9)
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_encrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_encrypt("test", 100);
des_encrypt("test", 100)
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_encrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_encrypt("test", NULL);
des_encrypt("test", NULL)
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_encrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_encrypt(NULL, NULL);
des_encrypt(NULL, NULL)
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_encrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_decrypt("test", 'anotherkeystr');
des_decrypt("test", 'anotherkeystr')
NULL
Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_decrypt(1, 1);
des_decrypt(1, 1)
NULL
Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_decrypt(des_encrypt("test", 'thekey'));
des_decrypt(des_encrypt("test", 'thekey'))
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select hex(des_encrypt("hello")),des_decrypt(des_encrypt("hello"));
hex(des_encrypt("hello")) des_decrypt(des_encrypt("hello"))
NULL NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_encrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_decrypt(des_encrypt("hello",4));
des_decrypt(des_encrypt("hello",4))
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_decrypt(des_encrypt("hello",'test'),'test');
des_decrypt(des_encrypt("hello",'test'),'test')
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select hex(des_encrypt("hello")),hex(des_encrypt("hello",5)),hex(des_encrypt("hello",'default_password'));
hex(des_encrypt("hello")) hex(des_encrypt("hello",5)) hex(des_encrypt("hello",'default_password'))
NULL NULL NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_encrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
Warning 1289 The 'des_encrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
Warning 1289 The 'des_encrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
@@ -70,19 +90,28 @@ select des_decrypt(des_encrypt("hello"),'default_password');
des_decrypt(des_encrypt("hello"),'default_password')
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select des_decrypt(des_encrypt("hello",4),'password4');
des_decrypt(des_encrypt("hello",4),'password4')
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
SET @a=des_decrypt(des_encrypt("hello"));
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
flush des_key_file;
select @a = des_decrypt(des_encrypt("hello"));
@a = des_decrypt(des_encrypt("hello"))
NULL
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
select hex("hello");
hex("hello")
68656C6C6F
@@ -90,9 +119,13 @@ select hex(des_decrypt(des_encrypt("hello",4),'password2'));
hex(des_decrypt(des_encrypt("hello",4),'password2'))
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
select hex(des_decrypt(des_encrypt("hello","hidden")));
hex(des_decrypt(des_encrypt("hello","hidden")))
NULL
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1289 The 'des_decrypt' feature is disabled; you need MariaDB built with '--with-ssl' to have it working
diff --git a/mysql-test/main/func_encrypt_nossl.test b/mysql-test/main/func_encrypt_nossl.test
index 2dafaa671c4..fbaffe7850c 100644
--- a/mysql-test/main/func_encrypt_nossl.test
+++ b/mysql-test/main/func_encrypt_nossl.test
@@ -1,4 +1,4 @@
--- source include/not_ssl.inc
+-- source include/is_embedded.inc
#
# Test output from des_encrypt and des_decrypt when server is
diff --git a/mysql-test/main/func_encrypt_ucs2.result b/mysql-test/main/func_encrypt_ucs2.result
index 989d593da8f..ab04c3b4621 100644
--- a/mysql-test/main/func_encrypt_ucs2.result
+++ b/mysql-test/main/func_encrypt_ucs2.result
@@ -4,16 +4,22 @@
SELECT CHAR_LENGTH(DES_ENCRYPT(0, CHAR('1' USING ucs2)));
CHAR_LENGTH(DES_ENCRYPT(0, CHAR('1' USING ucs2)))
9
+Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
SELECT CONVERT(DES_ENCRYPT(0, CHAR('1' USING ucs2)),UNSIGNED);
CONVERT(DES_ENCRYPT(0, CHAR('1' USING ucs2)),UNSIGNED)
0
Warnings:
+Note 1287 'des_encrypt' is deprecated and will be removed in a future release
Warning 1292 Truncated incorrect INTEGER value: '\xFFT\xDCiK\x92j\xE6\xFC'
SELECT CHAR_LENGTH(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' USING ucs2))) as a;
a
4
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
SELECT CONVERT(DES_DECRYPT(0xFF0DC9FC9537CA75F4, CHAR('1' using ucs2)), UNSIGNED) as a;
a
0
Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
Warning 1292 Truncated incorrect INTEGER value: 'test'
diff --git a/mysql-test/main/func_encrypt_ucs2.test b/mysql-test/main/func_encrypt_ucs2.test
index 088af7ffee7..aaf233fa031 100644
--- a/mysql-test/main/func_encrypt_ucs2.test
+++ b/mysql-test/main/func_encrypt_ucs2.test
@@ -1,5 +1,7 @@
-- source include/have_des.inc
-- source include/have_ucs2.inc
+#double warning for view protocol
+--source include/no_view_protocol.inc
--echo #
--echo # Bug#59648 my_strtoll10_mb2: Assertion `(*endptr - s) % 2 == 0' failed.
diff --git a/mysql-test/main/func_hybrid_type.result b/mysql-test/main/func_hybrid_type.result
index dde6cfa4ed8..550f61d46e8 100644
--- a/mysql-test/main/func_hybrid_type.result
+++ b/mysql-test/main/func_hybrid_type.result
@@ -2310,15 +2310,15 @@ LEAST(b, b) AS least____b_b,
GREATEST(b, b) AS greatest_b_b
FROM t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def test t1 t1 a ___________a 7 19 19 N 9377 0 63
+def test t1 t1 a ___________a 7 19 19 Y 160 0 63
def case_______a 7 19 19 Y 128 0 63
-def case_____a_a 7 19 19 N 129 0 63
-def coalesce___a 7 19 19 N 129 0 63
-def coalesce_a_a 7 19 19 N 129 0 63
-def if_______a_a 7 19 19 N 129 0 63
-def ifnull___a_a 7 19 19 N 129 0 63
-def least____a_a 7 19 19 N 129 0 63
-def greatest_a_a 7 19 19 N 129 0 63
+def case_____a_a 7 19 19 Y 128 0 63
+def coalesce___a 7 19 19 Y 128 0 63
+def coalesce_a_a 7 19 19 Y 128 0 63
+def if_______a_a 7 19 19 Y 128 0 63
+def ifnull___a_a 7 19 19 Y 128 0 63
+def least____a_a 7 19 19 Y 128 0 63
+def greatest_a_a 7 19 19 Y 128 0 63
def test t1 t1 b ___________b 11 10 8 Y 128 0 63
def case_______b 11 10 8 Y 128 0 63
def case_____b_b 11 10 8 Y 128 0 63
@@ -2368,7 +2368,7 @@ def coalesce_b_a 12 19 19 Y 128 0 63
def if_______a_b 12 19 19 Y 128 0 63
def if_______b_a 12 19 19 Y 128 0 63
def ifnull___a_b 12 19 19 Y 128 0 63
-def ifnull___b_a 12 19 19 N 129 0 63
+def ifnull___b_a 12 19 19 Y 128 0 63
def least____a_b 12 19 19 Y 128 0 63
def least____b_a 12 19 19 Y 128 0 63
def greatest_a_b 12 19 19 Y 128 0 63
@@ -2409,15 +2409,15 @@ FROM t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `___________a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `___________a` timestamp NULL DEFAULT NULL,
`case_______a` timestamp NULL DEFAULT NULL,
- `case_____a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `coalesce___a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `coalesce_a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `if_______a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `ifnull___a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `least____a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `greatest_a_a` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `case_____a_a` timestamp NULL DEFAULT NULL,
+ `coalesce___a` timestamp NULL DEFAULT NULL,
+ `coalesce_a_a` timestamp NULL DEFAULT NULL,
+ `if_______a_a` timestamp NULL DEFAULT NULL,
+ `ifnull___a_a` timestamp NULL DEFAULT NULL,
+ `least____a_a` timestamp NULL DEFAULT NULL,
+ `greatest_a_a` timestamp NULL DEFAULT NULL,
`___________b` time DEFAULT NULL,
`case_______b` time DEFAULT NULL,
`case_____b_b` time DEFAULT NULL,
@@ -2455,7 +2455,7 @@ t2 CREATE TABLE `t2` (
`if_______a_b` datetime DEFAULT NULL,
`if_______b_a` datetime DEFAULT NULL,
`ifnull___a_b` datetime DEFAULT NULL,
- `ifnull___b_a` datetime NOT NULL,
+ `ifnull___b_a` datetime DEFAULT NULL,
`least____a_b` datetime DEFAULT NULL,
`least____b_a` datetime DEFAULT NULL,
`greatest_a_b` datetime DEFAULT NULL,
@@ -3058,12 +3058,12 @@ CREATE TABLE t1 (a TIMESTAMP);
INSERT INTO t1 VALUES ('2010-01-01 10:20:30');
SELECT GREATEST(a,a) FROM t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def GREATEST(a,a) 7 19 19 N 129 0 63
+def GREATEST(a,a) 7 19 19 Y 128 0 63
GREATEST(a,a)
2010-01-01 10:20:30
SELECT COALESCE(a,a) FROM t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def COALESCE(a,a) 7 19 19 N 129 0 63
+def COALESCE(a,a) 7 19 19 Y 128 0 63
COALESCE(a,a)
2010-01-01 10:20:30
DROP TABLE t1;
@@ -3072,7 +3072,7 @@ CREATE TABLE t2 AS SELECT LEAST(a,a),LEAST(b,b),LEAST(a,b) FROM t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `LEAST(a,a)` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `LEAST(a,a)` timestamp NULL DEFAULT NULL,
`LEAST(b,b)` datetime DEFAULT NULL,
`LEAST(a,b)` datetime DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
diff --git a/mysql-test/main/func_math.result b/mysql-test/main/func_math.result
index 746dd9169ca..a465199c49c 100644
--- a/mysql-test/main/func_math.result
+++ b/mysql-test/main/func_math.result
@@ -3648,7 +3648,7 @@ DROP TABLE t1,t2;
#
# MDEV-21278 Assertion `is_unsigned() == attr.unsigned_flag' or Assertion `field.is_sane()' failed
#
-CREATE TABLE t1 (a TIMESTAMP);
+CREATE TABLE t1 (a TIMESTAMP NOT NULL DEFAULT NOW());
INSERT INTO t1 VALUES (NULL),(NULL);
SET SESSION SQL_MODE= 'NO_UNSIGNED_SUBTRACTION';
SELECT DISTINCT UUID_SHORT() - a FROM t1;
@@ -3663,7 +3663,7 @@ t2 CREATE TABLE `t2` (
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t2, t1;
SET sql_mode=DEFAULT;
-CREATE TABLE t1 (a TIMESTAMP);
+CREATE TABLE t1 (a TIMESTAMP NOT NULL DEFAULT NOW());
INSERT INTO t1 VALUES (NULL),(NULL);
SET SESSION SQL_MODE= 'NO_UNSIGNED_SUBTRACTION';
SELECT UUID_SHORT() - a FROM t1;
diff --git a/mysql-test/main/func_math.test b/mysql-test/main/func_math.test
index 02c5b872ea5..d4145a71912 100644
--- a/mysql-test/main/func_math.test
+++ b/mysql-test/main/func_math.test
@@ -1931,7 +1931,7 @@ DROP TABLE t1,t2;
--echo # MDEV-21278 Assertion `is_unsigned() == attr.unsigned_flag' or Assertion `field.is_sane()' failed
--echo #
-CREATE TABLE t1 (a TIMESTAMP);
+CREATE TABLE t1 (a TIMESTAMP NOT NULL DEFAULT NOW());
INSERT INTO t1 VALUES (NULL),(NULL);
SET SESSION SQL_MODE= 'NO_UNSIGNED_SUBTRACTION';
--replace_column 1 xxx
@@ -1941,7 +1941,7 @@ SHOW CREATE TABLE t2;
DROP TABLE t2, t1;
SET sql_mode=DEFAULT;
-CREATE TABLE t1 (a TIMESTAMP);
+CREATE TABLE t1 (a TIMESTAMP NOT NULL DEFAULT NOW());
INSERT INTO t1 VALUES (NULL),(NULL);
SET SESSION SQL_MODE= 'NO_UNSIGNED_SUBTRACTION';
--replace_column 1 xxx
diff --git a/mysql-test/main/func_str.result b/mysql-test/main/func_str.result
index 8de7cbf679f..b912cfa7cd3 100644
--- a/mysql-test/main/func_str.result
+++ b/mysql-test/main/func_str.result
@@ -1,4 +1,3 @@
-drop table if exists t1,t2;
set @save_max_allowed_packet=@@global.max_allowed_packet;
set global max_allowed_packet=1048576;
connect conn1,localhost,root,,;
@@ -5265,3 +5264,178 @@ f
#
# End of 10.4 tests
#
+#
+# MDEV-25704 Function random_bytes
+#
+create table t1 as select random_bytes(100);
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `random_bytes(100)` varbinary(100) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+drop table t1;
+# The sequence starts at 17 so that the probability of test failure is small enough (about 2^(-136))
+select count(*) from seq_17_to_1024 where random_bytes(seq) <=> random_bytes(seq);
+count(*)
+0
+select count(*) from seq_1_to_1024 where length(random_bytes(seq)) = seq;
+count(*)
+1024
+select random_bytes(`0`),`1` from (values (0,1),(null,2),(0,3)) t1;
+random_bytes(`0`) 1
+ 1
+NULL 2
+ 3
+#
+# Test NULL output for NULL input
+#
+SELECT random_bytes(NULL);
+random_bytes(NULL)
+NULL
+#
+# Test For values outside range from 1 to 1024 return NULL
+#
+SELECT random_bytes(0);
+random_bytes(0)
+
+SELECT random_bytes(-1);
+random_bytes(-1)
+NULL
+SELECT random_bytes(-100);
+random_bytes(-100)
+NULL
+SELECT random_bytes(-26);
+random_bytes(-26)
+NULL
+SELECT random_bytes(-132);
+random_bytes(-132)
+NULL
+SELECT random_bytes(1025);
+random_bytes(1025)
+NULL
+SELECT random_bytes(11111);
+random_bytes(11111)
+NULL
+SELECT random_bytes(2056);
+random_bytes(2056)
+NULL
+SELECT length(random_bytes(10.0));
+length(random_bytes(10.0))
+10
+SELECT length(random_bytes(10.1));
+length(random_bytes(10.1))
+10
+SELECT length(random_bytes(+1e1));
+length(random_bytes(+1e1))
+10
+SELECT length(random_bytes(time("00:01")));
+length(random_bytes(time("00:01")))
+100
+SELECT length(random_bytes("10.0"));
+length(random_bytes("10.0"))
+10
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: '10.0'
+Warning 1292 Truncated incorrect INTEGER value: '10.0'
+SELECT length(random_bytes("10.1"));
+length(random_bytes("10.1"))
+10
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: '10.1'
+Warning 1292 Truncated incorrect INTEGER value: '10.1'
+SELECT length(random_bytes("+1e1"));
+length(random_bytes("+1e1"))
+1
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: '+1e1'
+Warning 1292 Truncated incorrect INTEGER value: '+1e1'
+SELECT length(random_bytes("10.0bunnies"));
+length(random_bytes("10.0bunnies"))
+10
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: '10.0bunnies'
+Warning 1292 Truncated incorrect INTEGER value: '10.0bunnies'
+SELECT length(random_bytes("10.1chickens"));
+length(random_bytes("10.1chickens"))
+10
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: '10.1chickens'
+Warning 1292 Truncated incorrect INTEGER value: '10.1chickens'
+SELECT length(random_bytes("+1e1rabbits"));
+length(random_bytes("+1e1rabbits"))
+1
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: '+1e1rabbits'
+Warning 1292 Truncated incorrect INTEGER value: '+1e1rabbits'
+create procedure p1()
+begin
+declare r ROW (c1 INT);
+set r.c1= 10;
+select random_bytes(r);
+end|
+call p1();
+ERROR 21000: Operand should contain 1 column(s)
+drop procedure p1;
+#
+# Test For invalid argument return NULL
+#
+SELECT random_bytes('s');
+random_bytes('s')
+
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: 's'
+Warning 1292 Truncated incorrect INTEGER value: 's'
+SELECT random_bytes('r');
+random_bytes('r')
+
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: 'r'
+Warning 1292 Truncated incorrect INTEGER value: 'r'
+SELECT random_bytes('res');
+random_bytes('res')
+
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: 'res'
+Warning 1292 Truncated incorrect INTEGER value: 'res'
+SELECT random_bytes('test');
+random_bytes('test')
+
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: 'test'
+Warning 1292 Truncated incorrect INTEGER value: 'test'
+#
+# MDEV-29108 RANDOM_BYTES - assertion in Create_tmp_table::finalize
+#
+CREATE TABLE t (a INT);
+INSERT INTO t VALUES (1),(2);
+SELECT RANDOM_BYTES(-10) f1, IFNULL(a,1) f2 FROM t GROUP BY f1, f2;
+f1 f2
+NULL 1
+NULL 2
+DROP TABLE t;
+#
+# MDEV-29154 Excessive warnings upon a call to RANDOM_BYTES
+#
+select length(random_bytes(cast('x' as unsigned)+1));
+length(random_bytes(cast('x' as unsigned)+1))
+1
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: 'x'
+Warning 1292 Truncated incorrect INTEGER value: 'x'
+select repeat('.', cast('x' as unsigned)+1);
+repeat('.', cast('x' as unsigned)+1)
+.
+Warnings:
+Warning 1292 Truncated incorrect INTEGER value: 'x'
+Warning 1292 Truncated incorrect INTEGER value: 'x'
+#
+# MDEV-23149 Server crashes in my_convert / ErrConvString::ptr / Item_char_typecast::check_truncation_with_warn
+#
+select "a" in ("abc", (convert(random_bytes(8) ,binary(2))));
+"a" in ("abc", (convert(random_bytes(8) ,binary(2))))
+0
+Warnings:
+Warning 1292 Truncated incorrect BINARY(2) value: '...random bytes...'
+#
+# End of 10.10 tests
+#
diff --git a/mysql-test/main/func_str.test b/mysql-test/main/func_str.test
index 390b5199cec..1c8839f24a2 100644
--- a/mysql-test/main/func_str.test
+++ b/mysql-test/main/func_str.test
@@ -1,10 +1,7 @@
# Description
# -----------
# Testing string functions
-
---disable_warnings
-drop table if exists t1,t2;
---enable_warnings
+--source include/have_sequence.inc
set @save_max_allowed_packet=@@global.max_allowed_packet;
set global max_allowed_packet=1048576;
@@ -2314,3 +2311,106 @@ SELECT GROUP_CONCAT( UpdateXML( '<a>new year</a>', '/a', '2019-01-01 00:00:00' )
--echo #
--echo # End of 10.4 tests
--echo #
+
+--echo #
+--echo # MDEV-25704 Function random_bytes
+--echo #
+
+create table t1 as select random_bytes(100);
+show create table t1;
+drop table t1;
+
+--echo # The sequence starts at 17 so that the probability of test failure is small enough (about 2^(-136))
+select count(*) from seq_17_to_1024 where random_bytes(seq) <=> random_bytes(seq);
+
+select count(*) from seq_1_to_1024 where length(random_bytes(seq)) = seq;
+
+select random_bytes(`0`),`1` from (values (0,1),(null,2),(0,3)) t1;
+
+--echo #
+--echo # Test NULL output for NULL input
+--echo #
+
+SELECT random_bytes(NULL);
+
+--echo #
+--echo # Test For values outside range from 1 to 1024 return NULL
+--echo #
+
+SELECT random_bytes(0);
+SELECT random_bytes(-1);
+SELECT random_bytes(-100);
+SELECT random_bytes(-26);
+SELECT random_bytes(-132);
+SELECT random_bytes(1025);
+SELECT random_bytes(11111);
+SELECT random_bytes(2056);
+
+#double warning for view protocol
+--disable_view_protocol
+SELECT length(random_bytes(10.0));
+SELECT length(random_bytes(10.1));
+SELECT length(random_bytes(+1e1));
+SELECT length(random_bytes(time("00:01")));
+SELECT length(random_bytes("10.0"));
+SELECT length(random_bytes("10.1"));
+SELECT length(random_bytes("+1e1"));
+SELECT length(random_bytes("10.0bunnies"));
+SELECT length(random_bytes("10.1chickens"));
+SELECT length(random_bytes("+1e1rabbits"));
+--enable_view_protocol
+
+--delimiter |
+create procedure p1()
+begin
+ declare r ROW (c1 INT);
+ set r.c1= 10;
+ select random_bytes(r);
+end|
+--delimiter ;
+--error 1241
+call p1();
+drop procedure p1;
+
+--echo #
+--echo # Test For invalid argument return NULL
+--echo #
+#double warning for view protocol
+--disable_view_protocol
+SELECT random_bytes('s');
+SELECT random_bytes('r');
+SELECT random_bytes('res');
+SELECT random_bytes('test');
+--enable_view_protocol
+
+--echo #
+--echo # MDEV-29108 RANDOM_BYTES - assertion in Create_tmp_table::finalize
+--echo #
+
+CREATE TABLE t (a INT);
+INSERT INTO t VALUES (1),(2);
+SELECT RANDOM_BYTES(-10) f1, IFNULL(a,1) f2 FROM t GROUP BY f1, f2;
+
+# Cleanup
+DROP TABLE t;
+
+--echo #
+--echo # MDEV-29154 Excessive warnings upon a call to RANDOM_BYTES
+--echo #
+#double warning for view protocol
+--disable_view_protocol
+select length(random_bytes(cast('x' as unsigned)+1));
+select repeat('.', cast('x' as unsigned)+1);
+--enable_view_protocol
+
+--echo #
+--echo # MDEV-23149 Server crashes in my_convert / ErrConvString::ptr / Item_char_typecast::check_truncation_with_warn
+--echo #
+#double warning for view protocol
+--disable_view_protocol
+--replace_regex /'.*'/'...random bytes...'/
+select "a" in ("abc", (convert(random_bytes(8) ,binary(2))));
+--enable_view_protocol
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/mysql-test/main/greedy_optimizer.result b/mysql-test/main/greedy_optimizer.result
index d7c7e603c68..55812cb6ff9 100644
--- a/mysql-test/main/greedy_optimizer.result
+++ b/mysql-test/main/greedy_optimizer.result
@@ -155,9 +155,9 @@ Last_query_cost 844.037037
explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
-1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using index
+1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
@@ -179,9 +179,9 @@ Last_query_cost 844.037037
explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1
+1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using where
-1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using where
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using where
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
@@ -237,9 +237,9 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using join buffer (flat, BNL join)
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.c21 1 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
-1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using index
+1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
show status like 'Last_query_cost';
Variable_name Value
@@ -261,9 +261,9 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.c21 1 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using where
-1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using where
1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using where
+1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using where
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using where
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
show status like 'Last_query_cost';
Variable_name Value
@@ -311,9 +311,9 @@ Last_query_cost 844.037037
explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
-1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using index
+1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
@@ -335,9 +335,9 @@ Last_query_cost 844.037037
explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1
+1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using where
-1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using where
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using where
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
@@ -389,9 +389,9 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using join buffer (flat, BNL join)
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.c21 1 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
-1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using index
+1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
show status like 'Last_query_cost';
Variable_name Value
@@ -413,17 +413,17 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.c21 1 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using where
-1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using where
1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using where
+1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using where
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using where
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
show status like 'Last_query_cost';
Variable_name Value
Last_query_cost 362.618727
-set optimizer_prune_level=1;
+set optimizer_prune_level=2;
select @@optimizer_prune_level;
@@optimizer_prune_level
-1
+2
set optimizer_search_depth=0;
select @@optimizer_search_depth;
@@optimizer_search_depth
@@ -467,9 +467,9 @@ Last_query_cost 844.037037
explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where
+1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using index
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
-1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using index
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
@@ -491,9 +491,9 @@ Last_query_cost 844.037037
explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1
+1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using where
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using where
-1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using where
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
@@ -543,9 +543,9 @@ Last_query_cost 844.037037
explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where
+1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using index
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
-1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using index
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
@@ -567,9 +567,9 @@ Last_query_cost 844.037037
explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1
+1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using where
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using where
-1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using where
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
@@ -619,9 +619,9 @@ Last_query_cost 844.037037
explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where
+1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using index
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using index
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using index
-1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using index
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
@@ -643,9 +643,9 @@ Last_query_cost 844.037037
explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and t1.c12 = t3.c31 and t1.c13 = t4.c41 and t1.c14 = t5.c51 and t1.c15 = t6.c61 and t1.c16 = t7.c71 and t2.c22 = t3.c32 and t2.c23 = t4.c42 and t2.c24 = t5.c52 and t2.c25 = t6.c62 and t2.c26 = t7.c72 and t3.c33 = t4.c43 and t3.c34 = t5.c53 and t3.c35 = t6.c63 and t3.c36 = t7.c73 and t4.c42 = t5.c54 and t4.c43 = t6.c64 and t4.c44 = t7.c74 and t5.c52 = t6.c65 and t5.c53 = t7.c75 and t6.c62 = t7.c76;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1
+1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.c12 1 Using where
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t1.c14 1 Using where
-1 SIMPLE t7 eq_ref PRIMARY PRIMARY 4 test.t1.c16 1 Using where
1 SIMPLE t2 ALL NULL NULL NULL NULL 6 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
@@ -729,5 +729,2207 @@ t4 LEFT JOIN (t5 JOIN t5_1 ON t5.l = t5_1.l) ON t5.d = t4.d
1
SET optimizer_search_depth = DEFAULT;
DROP TABLE t1,t2,t2_1,t3,t3_1,t4,t4_1,t5,t5_1;
-End of 5.0 tests
set join_cache_level=@save_join_cache_level;
+End of 5.0 tests
+#
+# Bug #59326: Greedy optimizer produce stupid query execution plans.
+#
+CREATE TABLE t10(
+K INT NOT NULL AUTO_INCREMENT,
+I INT,
+PRIMARY KEY(K)
+);
+INSERT INTO t10(I) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(0);
+CREATE TABLE t100 LIKE t10;
+INSERT INTO t100(I)
+SELECT X.I FROM t10 AS X,t10 AS Y;
+CREATE TABLE t10000 LIKE t10;
+INSERT INTO t10000(I)
+SELECT X.I FROM t100 AS X, t100 AS Y;
+EXPLAIN SELECT * FROM t10,t100,t10000;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using join buffer (flat, BNL join)
+1 SIMPLE t10000 ALL NULL NULL NULL NULL 10000 Using join buffer (incremental, BNL join)
+EXPLAIN SELECT * FROM t10,t10000,t100;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using join buffer (flat, BNL join)
+1 SIMPLE t10000 ALL NULL NULL NULL NULL 10000 Using join buffer (incremental, BNL join)
+EXPLAIN SELECT * FROM t100,t10,t10000;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using join buffer (flat, BNL join)
+1 SIMPLE t10000 ALL NULL NULL NULL NULL 10000 Using join buffer (incremental, BNL join)
+EXPLAIN SELECT * FROM t100,t10000,t10;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using join buffer (flat, BNL join)
+1 SIMPLE t10000 ALL NULL NULL NULL NULL 10000 Using join buffer (incremental, BNL join)
+EXPLAIN SELECT * FROM t10000,t10,t100;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using join buffer (flat, BNL join)
+1 SIMPLE t10000 ALL NULL NULL NULL NULL 10000 Using join buffer (incremental, BNL join)
+EXPLAIN SELECT * FROM t10000,t100,t10;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using join buffer (flat, BNL join)
+1 SIMPLE t10000 ALL NULL NULL NULL NULL 10000 Using join buffer (incremental, BNL join)
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.K=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.K=t10.I;
+COUNT(*)
+9
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+AND t10000.K=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+AND t10000.K=t10.I;
+COUNT(*)
+9
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.K=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.K=t10.I;
+COUNT(*)
+9
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+AND t10000.K=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+AND t10000.K=t10.I;
+COUNT(*)
+9
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL PRIMARY NULL NULL NULL 10 Using where
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.K 1 Using index
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+COUNT(*)
+9
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL PRIMARY NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.K 1 Using index
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+COUNT(*)
+9
+### NOTE: Handler_reads: 31, expected: 30 ###
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t100,t10,t10000
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL PRIMARY NULL NULL NULL 10 Using where
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.K 1 Using index
+SELECT COUNT(*) FROM t100,t10,t10000
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+COUNT(*)
+9
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t100,t10000,t10
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL PRIMARY NULL NULL NULL 10 Using where
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.K 1 Using index
+SELECT COUNT(*) FROM t100,t10000,t10
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+COUNT(*)
+9
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10000,t10,t100
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL PRIMARY NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.K 1 Using index
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+SELECT COUNT(*) FROM t10000,t10,t100
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+COUNT(*)
+9
+### NOTE: Handler_reads: 31, expected: 30 ###
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10000,t100,t10
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL PRIMARY NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.K 1 Using index
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+SELECT COUNT(*) FROM t10000,t100,t10
+WHERE t100.K=t10.I
+AND t10000.K=t10.K;
+COUNT(*)
+9
+### NOTE: Handler_reads: 31, expected: 30 ###
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 ALL NULL NULL NULL NULL 10000 Using where; Using join buffer (flat, BNL join)
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 ALL NULL NULL NULL NULL 10000 Using where; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 ALL NULL NULL NULL NULL 10000 Using where; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+AND t10000.K=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+AND t10000.K=t10.I;
+COUNT(*)
+90
+# See BUG#18352936
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.I=t10.I
+AND t10000.K=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.I=t10.I
+AND t10000.K=t10.I;
+COUNT(*)
+90
+# See BUG#18352936
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+AND t10000.K=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+AND t10000.K=t10.I;
+COUNT(*)
+90
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+AND t10000.K=t100.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+AND t10000.K=t100.I;
+COUNT(*)
+90
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.I=t10.I
+AND t10000.K=t100.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.I=t10.I
+AND t10000.K=t100.I;
+COUNT(*)
+90
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+AND t10000.K=t100.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE t10000 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t100 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+AND t10000.K=t100.I;
+COUNT(*)
+90
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y index NULL PRIMARY 4 NULL 10000 Using index; Using join buffer (flat, BNL join)
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+COUNT(*)
+90000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y index NULL PRIMARY 4 NULL 10000 Using index; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+COUNT(*)
+90000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y index NULL PRIMARY 4 NULL 10000 Using index; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i;
+COUNT(*)
+90000
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ALL NULL NULL NULL NULL 10000 Using where; Using join buffer (flat, BNL join)
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=t10.i;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ALL NULL NULL NULL NULL 10000 Using where; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=t10.i;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+AND y.i=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ALL NULL NULL NULL NULL 10000 Using where; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+AND y.i=t10.i;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=x.k;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ALL NULL NULL NULL NULL 10000 Using where; Using join buffer (flat, BNL join)
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=x.k;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=x.k;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ALL NULL NULL NULL NULL 10000 Using where; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=x.k;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+AND y.i=x.k;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 ALL NULL NULL NULL NULL 10 Using where
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ALL NULL NULL NULL NULL 10000 Using where; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+AND y.i=x.k;
+COUNT(*)
+9000
+CREATE INDEX IX ON t10(I);
+CREATE INDEX IX ON t100(I);
+CREATE INDEX IX ON t10000(I);
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 ref IX IX 5 test.t10.I 1000 Using index
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 ref IX IX 5 test.t10.I 1000 Using index
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+COUNT(*)
+9000
+### NOTE: Handler_reads: 9030, expected: 9045 ###
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE t100 eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE t10000 ref IX IX 5 test.t10.I 1000 Using index
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+AND t10000.I=t10.I;
+COUNT(*)
+9000
+### NOTE: Handler_reads: 9030, expected: 9045 ###
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y index NULL PRIMARY 4 NULL 10000 Using index; Using join buffer (flat, BNL join)
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+COUNT(*)
+90000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y index NULL PRIMARY 4 NULL 10000 Using index; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+COUNT(*)
+90000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y index NULL PRIMARY 4 NULL 10000 Using index; Using join buffer (flat, BNL join)
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i;
+COUNT(*)
+90000
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ref IX IX 5 test.t10.I 1000 Using index
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=t10.i;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ref IX IX 5 test.t10.I 1000 Using index
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=t10.i;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+AND y.i=t10.i;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ref IX IX 5 test.t10.I 1000 Using index
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+AND y.i=t10.i;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=x.k;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ref IX IX 5 test.t10.I 1000 Using index
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=x.k;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=x.k;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ref IX IX 5 test.t10.I 1000 Using index
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+AND y.i=x.k;
+COUNT(*)
+9000
+flush status;
+EXPLAIN SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+AND y.i=x.k;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t10 index IX IX 5 NULL 10 Using where; Using index
+1 SIMPLE x eq_ref PRIMARY PRIMARY 4 test.t10.I 1 Using index
+1 SIMPLE y ref IX IX 5 test.t10.I 1000 Using index
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+AND y.i=x.k;
+COUNT(*)
+9000
+#
+# Test improved capabilities of analyzing complex query
+# plans without restricting 'optimizer_search_depth'.
+# Fix problems like those reported as bug#41740 & bug#58225.
+#
+# EPLAIN of queries using T1-T62 will timeout/hang wo/ fixes
+#
+DROP TABLE t10, t10000;
+CREATE TABLE t1 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t1(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 1;
+CREATE TABLE t2 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t2(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 2;
+CREATE TABLE t3 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t3(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 3;
+CREATE TABLE t4 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t4(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 4;
+CREATE TABLE t5 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t5(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 5;
+CREATE TABLE t6 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t6(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 6;
+CREATE TABLE t7 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t7(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 7;
+CREATE TABLE t8 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t8(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 8;
+CREATE TABLE t9 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t9(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 9;
+CREATE TABLE t10 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t10(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 10;
+CREATE TABLE t11 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t11(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 11;
+CREATE TABLE t12 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t12(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 12;
+CREATE TABLE t13 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t13(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 13;
+CREATE TABLE t14 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t14(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 14;
+CREATE TABLE t15 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t15(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 15;
+CREATE TABLE t16 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t16(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 16;
+CREATE TABLE t17 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t17(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 17;
+CREATE TABLE t18 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t18(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 18;
+CREATE TABLE t19 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t19(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 19;
+CREATE TABLE t20 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t20(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 20;
+CREATE TABLE t21 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t21(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 21;
+CREATE TABLE t22 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t22(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 22;
+CREATE TABLE t23 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t23(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 23;
+CREATE TABLE t24 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t24(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 24;
+CREATE TABLE t25 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t25(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 25;
+CREATE TABLE t26 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t26(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 26;
+CREATE TABLE t27 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t27(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 27;
+CREATE TABLE t28 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t28(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 28;
+CREATE TABLE t29 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t29(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 29;
+CREATE TABLE t30 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t30(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 30;
+CREATE TABLE t31 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t31(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 31;
+CREATE TABLE t32 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t32(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 32;
+CREATE TABLE t33 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t33(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 33;
+CREATE TABLE t34 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t34(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 34;
+CREATE TABLE t35 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t35(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 35;
+CREATE TABLE t36 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t36(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 36;
+CREATE TABLE t37 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t37(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 37;
+CREATE TABLE t38 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t38(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 38;
+CREATE TABLE t39 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t39(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 39;
+CREATE TABLE t40 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t40(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 40;
+CREATE TABLE t41 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t41(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 41;
+CREATE TABLE t42 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t42(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 42;
+CREATE TABLE t43 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t43(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 43;
+CREATE TABLE t44 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t44(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 44;
+CREATE TABLE t45 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t45(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 45;
+CREATE TABLE t46 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t46(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 46;
+CREATE TABLE t47 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t47(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 47;
+CREATE TABLE t48 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t48(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 48;
+CREATE TABLE t49 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t49(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 49;
+CREATE TABLE t50 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t50(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 50;
+CREATE TABLE t51 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t51(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 51;
+CREATE TABLE t52 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t52(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 52;
+CREATE TABLE t53 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t53(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 53;
+CREATE TABLE t54 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t54(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 54;
+CREATE TABLE t55 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t55(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 55;
+CREATE TABLE t56 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t56(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 56;
+CREATE TABLE t57 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t57(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 57;
+CREATE TABLE t58 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t58(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 58;
+CREATE TABLE t59 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t59(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 59;
+CREATE TABLE t60 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t60(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 60;
+CREATE TABLE t61 ( K INT NOT NULL AUTO_INCREMENT,
+I INT,
+A INT,
+PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+INSERT INTO t61(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= 61;
+ANALYZE TABLE t100, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61;
+set optimizer_prune_level=default;
+flush status;
+set optimizer_search_depth=0;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I JOIN t59 ON t59.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I JOIN t59 ON t59.I=x.I JOIN t60 ON t60.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I JOIN t41 as t41 ON t41.I=x.I JOIN t41 as t42 ON t42.I=x.I JOIN t41 as t43 ON t43.I=x.I JOIN t41 as t44 ON t44.I=x.I JOIN t41 as t45 ON t45.I=x.I JOIN t41 as t46 ON t46.I=x.I JOIN t41 as t47 ON t47.I=x.I JOIN t41 as t48 ON t48.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I JOIN t41 as t41 ON t41.I=x.I JOIN t41 as t42 ON t42.I=x.I JOIN t41 as t43 ON t43.I=x.I JOIN t41 as t44 ON t44.I=x.I JOIN t41 as t45 ON t45.I=x.I JOIN t41 as t46 ON t46.I=x.I JOIN t41 as t47 ON t47.I=x.I JOIN t41 as t48 ON t48.I=x.I JOIN t49 as t49 ON t49.I=x.I JOIN t49 as t50 ON t50.I=x.I JOIN t49 as t51 ON t51.I=x.I JOIN t49 as t52 ON t52.I=x.I JOIN t49 as t53 ON t53.I=x.I JOIN t49 as t54 ON t54.I=x.I JOIN t49 as t55 ON t55.I=x.I JOIN t49 as t56 ON t56.I=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.I = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.I = x.I JOIN t60 ON t60.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.K = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.I = x.I JOIN t60 ON t60.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.K = x.I JOIN t56 ON t56.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.K = x.I JOIN t56 ON t56.K = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.K = x.I JOIN t60 ON t60.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I JOIN t59 ON t59.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I JOIN t59 ON t59.K=x.I JOIN t60 ON t60.K=x.I;
+set optimizer_search_depth=1;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I JOIN t59 ON t59.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I JOIN t59 ON t59.I=x.I JOIN t60 ON t60.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I JOIN t41 as t41 ON t41.I=x.I JOIN t41 as t42 ON t42.I=x.I JOIN t41 as t43 ON t43.I=x.I JOIN t41 as t44 ON t44.I=x.I JOIN t41 as t45 ON t45.I=x.I JOIN t41 as t46 ON t46.I=x.I JOIN t41 as t47 ON t47.I=x.I JOIN t41 as t48 ON t48.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I JOIN t41 as t41 ON t41.I=x.I JOIN t41 as t42 ON t42.I=x.I JOIN t41 as t43 ON t43.I=x.I JOIN t41 as t44 ON t44.I=x.I JOIN t41 as t45 ON t45.I=x.I JOIN t41 as t46 ON t46.I=x.I JOIN t41 as t47 ON t47.I=x.I JOIN t41 as t48 ON t48.I=x.I JOIN t49 as t49 ON t49.I=x.I JOIN t49 as t50 ON t50.I=x.I JOIN t49 as t51 ON t51.I=x.I JOIN t49 as t52 ON t52.I=x.I JOIN t49 as t53 ON t53.I=x.I JOIN t49 as t54 ON t54.I=x.I JOIN t49 as t55 ON t55.I=x.I JOIN t49 as t56 ON t56.I=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.I = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.I = x.I JOIN t60 ON t60.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.K = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.I = x.I JOIN t60 ON t60.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.K = x.I JOIN t56 ON t56.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.K = x.I JOIN t56 ON t56.K = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.K = x.I JOIN t60 ON t60.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I JOIN t59 ON t59.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I JOIN t59 ON t59.K=x.I JOIN t60 ON t60.K=x.I;
+set optimizer_search_depth=3;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I JOIN t59 ON t59.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I JOIN t59 ON t59.I=x.I JOIN t60 ON t60.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I JOIN t41 as t41 ON t41.I=x.I JOIN t41 as t42 ON t42.I=x.I JOIN t41 as t43 ON t43.I=x.I JOIN t41 as t44 ON t44.I=x.I JOIN t41 as t45 ON t45.I=x.I JOIN t41 as t46 ON t46.I=x.I JOIN t41 as t47 ON t47.I=x.I JOIN t41 as t48 ON t48.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I JOIN t41 as t41 ON t41.I=x.I JOIN t41 as t42 ON t42.I=x.I JOIN t41 as t43 ON t43.I=x.I JOIN t41 as t44 ON t44.I=x.I JOIN t41 as t45 ON t45.I=x.I JOIN t41 as t46 ON t46.I=x.I JOIN t41 as t47 ON t47.I=x.I JOIN t41 as t48 ON t48.I=x.I JOIN t49 as t49 ON t49.I=x.I JOIN t49 as t50 ON t50.I=x.I JOIN t49 as t51 ON t51.I=x.I JOIN t49 as t52 ON t52.I=x.I JOIN t49 as t53 ON t53.I=x.I JOIN t49 as t54 ON t54.I=x.I JOIN t49 as t55 ON t55.I=x.I JOIN t49 as t56 ON t56.I=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.I = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.I = x.I JOIN t60 ON t60.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.K = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.I = x.I JOIN t60 ON t60.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.K = x.I JOIN t56 ON t56.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.K = x.I JOIN t56 ON t56.K = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.K = x.I JOIN t60 ON t60.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I JOIN t59 ON t59.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I JOIN t59 ON t59.K=x.I JOIN t60 ON t60.K=x.I;
+set optimizer_search_depth=62;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I JOIN t59 ON t59.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I=x.I JOIN t2 ON t2.I=x.I JOIN t3 ON t3.I=x.I JOIN t4 ON t4.I=x.I JOIN t5 ON t5.I=x.I JOIN t6 ON t6.I=x.I JOIN t7 ON t7.I=x.I JOIN t8 ON t8.I=x.I JOIN t9 ON t9.I=x.I JOIN t10 ON t10.I=x.I JOIN t11 ON t11.I=x.I JOIN t12 ON t12.I=x.I JOIN t13 ON t13.I=x.I JOIN t14 ON t14.I=x.I JOIN t15 ON t15.I=x.I JOIN t16 ON t16.I=x.I JOIN t17 ON t17.I=x.I JOIN t18 ON t18.I=x.I JOIN t19 ON t19.I=x.I JOIN t20 ON t20.I=x.I JOIN t21 ON t21.I=x.I JOIN t22 ON t22.I=x.I JOIN t23 ON t23.I=x.I JOIN t24 ON t24.I=x.I JOIN t25 ON t25.I=x.I JOIN t26 ON t26.I=x.I JOIN t27 ON t27.I=x.I JOIN t28 ON t28.I=x.I JOIN t29 ON t29.I=x.I JOIN t30 ON t30.I=x.I JOIN t31 ON t31.I=x.I JOIN t32 ON t32.I=x.I JOIN t33 ON t33.I=x.I JOIN t34 ON t34.I=x.I JOIN t35 ON t35.I=x.I JOIN t36 ON t36.I=x.I JOIN t37 ON t37.I=x.I JOIN t38 ON t38.I=x.I JOIN t39 ON t39.I=x.I JOIN t40 ON t40.I=x.I JOIN t41 ON t41.I=x.I JOIN t42 ON t42.I=x.I JOIN t43 ON t43.I=x.I JOIN t44 ON t44.I=x.I JOIN t45 ON t45.I=x.I JOIN t46 ON t46.I=x.I JOIN t47 ON t47.I=x.I JOIN t48 ON t48.I=x.I JOIN t49 ON t49.I=x.I JOIN t50 ON t50.I=x.I JOIN t51 ON t51.I=x.I JOIN t52 ON t52.I=x.I JOIN t53 ON t53.I=x.I JOIN t54 ON t54.I=x.I JOIN t55 ON t55.I=x.I JOIN t56 ON t56.I=x.I JOIN t57 ON t57.I=x.I JOIN t58 ON t58.I=x.I JOIN t59 ON t59.I=x.I JOIN t60 ON t60.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I JOIN t41 as t41 ON t41.I=x.I JOIN t41 as t42 ON t42.I=x.I JOIN t41 as t43 ON t43.I=x.I JOIN t41 as t44 ON t44.I=x.I JOIN t41 as t45 ON t45.I=x.I JOIN t41 as t46 ON t46.I=x.I JOIN t41 as t47 ON t47.I=x.I JOIN t41 as t48 ON t48.I=x.I;
+select @@optimizer_prune_level;
+select @@optimizer_search_depth;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 as t1 ON t1.I=x.I JOIN t1 as t2 ON t2.I=x.I JOIN t1 as t3 ON t3.I=x.I JOIN t1 as t4 ON t4.I=x.I JOIN t1 as t5 ON t5.I=x.I JOIN t1 as t6 ON t6.I=x.I JOIN t1 as t7 ON t7.I=x.I JOIN t1 as t8 ON t8.I=x.I JOIN t9 as t9 ON t9.I=x.I JOIN t9 as t10 ON t10.I=x.I JOIN t9 as t11 ON t11.I=x.I JOIN t9 as t12 ON t12.I=x.I JOIN t9 as t13 ON t13.I=x.I JOIN t9 as t14 ON t14.I=x.I JOIN t9 as t15 ON t15.I=x.I JOIN t9 as t16 ON t16.I=x.I JOIN t17 as t17 ON t17.I=x.I JOIN t17 as t18 ON t18.I=x.I JOIN t17 as t19 ON t19.I=x.I JOIN t17 as t20 ON t20.I=x.I JOIN t17 as t21 ON t21.I=x.I JOIN t17 as t22 ON t22.I=x.I JOIN t17 as t23 ON t23.I=x.I JOIN t17 as t24 ON t24.I=x.I JOIN t25 as t25 ON t25.I=x.I JOIN t25 as t26 ON t26.I=x.I JOIN t25 as t27 ON t27.I=x.I JOIN t25 as t28 ON t28.I=x.I JOIN t25 as t29 ON t29.I=x.I JOIN t25 as t30 ON t30.I=x.I JOIN t25 as t31 ON t31.I=x.I JOIN t25 as t32 ON t32.I=x.I JOIN t33 as t33 ON t33.I=x.I JOIN t33 as t34 ON t34.I=x.I JOIN t33 as t35 ON t35.I=x.I JOIN t33 as t36 ON t36.I=x.I JOIN t33 as t37 ON t37.I=x.I JOIN t33 as t38 ON t38.I=x.I JOIN t33 as t39 ON t39.I=x.I JOIN t33 as t40 ON t40.I=x.I JOIN t41 as t41 ON t41.I=x.I JOIN t41 as t42 ON t42.I=x.I JOIN t41 as t43 ON t43.I=x.I JOIN t41 as t44 ON t44.I=x.I JOIN t41 as t45 ON t45.I=x.I JOIN t41 as t46 ON t46.I=x.I JOIN t41 as t47 ON t47.I=x.I JOIN t41 as t48 ON t48.I=x.I JOIN t49 as t49 ON t49.I=x.I JOIN t49 as t50 ON t50.I=x.I JOIN t49 as t51 ON t51.I=x.I JOIN t49 as t52 ON t52.I=x.I JOIN t49 as t53 ON t53.I=x.I JOIN t49 as t54 ON t54.I=x.I JOIN t49 as t55 ON t55.I=x.I JOIN t49 as t56 ON t56.I=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.I = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.I = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.I = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.I = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.I = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.I = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.I = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.I = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.I = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.I = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.I = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.I = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.I = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.I = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.I = x.I JOIN t60 ON t60.I = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.I = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.I = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.I = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.I = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.I = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.I = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.I = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.I = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.I = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.I = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.I = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.I = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.I = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.I = x.I JOIN t56 ON t56.K = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.I = x.I JOIN t60 ON t60.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.K = x.I JOIN t56 ON t56.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.I = x.I JOIN t2 ON t2.K = x.I JOIN t3 ON t3.K = x.I JOIN t4 ON t4.K = x.I JOIN t5 ON t5.I = x.I JOIN t6 ON t6.K = x.I JOIN t7 ON t7.K = x.I JOIN t8 ON t8.K = x.I JOIN t9 ON t9.I = x.I JOIN t10 ON t10.K = x.I JOIN t11 ON t11.K = x.I JOIN t12 ON t12.K = x.I JOIN t13 ON t13.I = x.I JOIN t14 ON t14.K = x.I JOIN t15 ON t15.K = x.I JOIN t16 ON t16.K = x.I JOIN t17 ON t17.I = x.I JOIN t18 ON t18.K = x.I JOIN t19 ON t19.K = x.I JOIN t20 ON t20.K = x.I JOIN t21 ON t21.I = x.I JOIN t22 ON t22.K = x.I JOIN t23 ON t23.K = x.I JOIN t24 ON t24.K = x.I JOIN t25 ON t25.I = x.I JOIN t26 ON t26.K = x.I JOIN t27 ON t27.K = x.I JOIN t28 ON t28.K = x.I JOIN t29 ON t29.I = x.I JOIN t30 ON t30.K = x.I JOIN t31 ON t31.K = x.I JOIN t32 ON t32.K = x.I JOIN t33 ON t33.I = x.I JOIN t34 ON t34.K = x.I JOIN t35 ON t35.K = x.I JOIN t36 ON t36.K = x.I JOIN t37 ON t37.I = x.I JOIN t38 ON t38.K = x.I JOIN t39 ON t39.K = x.I JOIN t40 ON t40.K = x.I JOIN t41 ON t41.I = x.I JOIN t42 ON t42.K = x.I JOIN t43 ON t43.K = x.I JOIN t44 ON t44.K = x.I JOIN t45 ON t45.I = x.I JOIN t46 ON t46.K = x.I JOIN t47 ON t47.K = x.I JOIN t48 ON t48.K = x.I JOIN t49 ON t49.I = x.I JOIN t50 ON t50.K = x.I JOIN t51 ON t51.K = x.I JOIN t52 ON t52.K = x.I JOIN t53 ON t53.I = x.I JOIN t54 ON t54.K = x.I JOIN t55 ON t55.K = x.I JOIN t56 ON t56.K = x.I JOIN t57 ON t57.I = x.I JOIN t58 ON t58.K = x.I JOIN t59 ON t59.K = x.I JOIN t60 ON t60.K = x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I JOIN t59 ON t59.K=x.I;
+EXPLAIN SELECT COUNT(*) FROM t1 AS x JOIN t1 ON t1.K=x.I JOIN t2 ON t2.K=x.I JOIN t3 ON t3.K=x.I JOIN t4 ON t4.K=x.I JOIN t5 ON t5.K=x.I JOIN t6 ON t6.K=x.I JOIN t7 ON t7.K=x.I JOIN t8 ON t8.K=x.I JOIN t9 ON t9.K=x.I JOIN t10 ON t10.K=x.I JOIN t11 ON t11.K=x.I JOIN t12 ON t12.K=x.I JOIN t13 ON t13.K=x.I JOIN t14 ON t14.K=x.I JOIN t15 ON t15.K=x.I JOIN t16 ON t16.K=x.I JOIN t17 ON t17.K=x.I JOIN t18 ON t18.K=x.I JOIN t19 ON t19.K=x.I JOIN t20 ON t20.K=x.I JOIN t21 ON t21.K=x.I JOIN t22 ON t22.K=x.I JOIN t23 ON t23.K=x.I JOIN t24 ON t24.K=x.I JOIN t25 ON t25.K=x.I JOIN t26 ON t26.K=x.I JOIN t27 ON t27.K=x.I JOIN t28 ON t28.K=x.I JOIN t29 ON t29.K=x.I JOIN t30 ON t30.K=x.I JOIN t31 ON t31.K=x.I JOIN t32 ON t32.K=x.I JOIN t33 ON t33.K=x.I JOIN t34 ON t34.K=x.I JOIN t35 ON t35.K=x.I JOIN t36 ON t36.K=x.I JOIN t37 ON t37.K=x.I JOIN t38 ON t38.K=x.I JOIN t39 ON t39.K=x.I JOIN t40 ON t40.K=x.I JOIN t41 ON t41.K=x.I JOIN t42 ON t42.K=x.I JOIN t43 ON t43.K=x.I JOIN t44 ON t44.K=x.I JOIN t45 ON t45.K=x.I JOIN t46 ON t46.K=x.I JOIN t47 ON t47.K=x.I JOIN t48 ON t48.K=x.I JOIN t49 ON t49.K=x.I JOIN t50 ON t50.K=x.I JOIN t51 ON t51.K=x.I JOIN t52 ON t52.K=x.I JOIN t53 ON t53.K=x.I JOIN t54 ON t54.K=x.I JOIN t55 ON t55.K=x.I JOIN t56 ON t56.K=x.I JOIN t57 ON t57.K=x.I JOIN t58 ON t58.K=x.I JOIN t59 ON t59.K=x.I JOIN t60 ON t60.K=x.I;
+DROP TABLE t100, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t22, t23, t24, t25, t26, t27, t28, t29, t30, t31, t32, t33, t34, t35, t36, t37, t38, t39, t40, t41, t42, t43, t44, t45, t46, t47, t48, t49, t50, t51, t52, t53, t54, t55, t56, t57, t58, t59, t60, t61;
+show status like "optimizer%";
+Variable_name Value
+Optimizer_join_prefixes_check_calls 57916
+SET OPTIMIZER_SEARCH_DEPTH = DEFAULT;
+#
+# Bug found when testing greedy optimizer tests
+#
+CREATE TABLE t1 (pk INTEGER,
+col_int_key INTEGER,
+col_varchar_key VARCHAR(8),
+PRIMARY KEY (pk),
+KEY (col_varchar_key, col_int_key, pk));
+INSERT INTO t1 values (1,1,"A"),(2,2,"B");
+explain SELECT * FROM t1 AS alias1
+WHERE alias1.col_varchar_key IN (SELECT COUNT(*) FROM t1 AS SQ3_alias2 JOIN t1 AS SQ3_alias3 ON (SQ3_alias3.col_varchar_key = SQ3_alias2.col_varchar_key AND SQ3_alias3.pk = SQ3_alias2.pk));
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY alias1 index NULL col_varchar_key 20 NULL 2 Using where; Using index
+2 DEPENDENT SUBQUERY SQ3_alias2 index PRIMARY,col_varchar_key col_varchar_key 20 NULL 2 Using index
+2 DEPENDENT SUBQUERY SQ3_alias3 eq_ref PRIMARY,col_varchar_key PRIMARY 4 test.SQ3_alias2.pk 1 Using where
+drop table t1;
+#
+# This triggered an assert failure while testing
+#
+CREATE TABLE t1 (a int, b int, key(b));
+INSERT INTO t1 VALUES (7,4),(1,1);
+CREATE TABLE t2 (d int);
+INSERT INTO t2 VALUES (2),(3);
+CREATE TABLE t3 (c int);
+INSERT INTO t3 VALUES (5),(6);
+SELECT * FROM t1 WHERE 5 IN (SELECT t1_a.a FROM t1 as t1_a WHERE 1 IN (SELECT t1_b.a FROM t1 as t1_b LEFT JOIN (t2 JOIN t3) ON (t1_b.a = t2.d) WHERE t1_b.b < 1));
+a b
+drop table t1,t2,t3;
+End of 10.0 tests
diff --git a/mysql-test/main/greedy_optimizer.test b/mysql-test/main/greedy_optimizer.test
index cac262bca64..2a830c70677 100644
--- a/mysql-test/main/greedy_optimizer.test
+++ b/mysql-test/main/greedy_optimizer.test
@@ -1,3 +1,5 @@
+--source include/have_innodb.inc
+
#
# A simple test of the greedy query optimization algorithm and the switches that
# control the optimizationprocess.
@@ -248,7 +250,7 @@ explain select t1.c11 from t7, t6, t5, t4, t3, t2, t1 where t1.c11 = t2.c21 and
show status like 'Last_query_cost';
-set optimizer_prune_level=1;
+set optimizer_prune_level=2;
select @@optimizer_prune_level;
set optimizer_search_depth=0;
@@ -381,6 +383,578 @@ LEFT JOIN (
SET optimizer_search_depth = DEFAULT;
DROP TABLE t1,t2,t2_1,t3,t3_1,t4,t4_1,t5,t5_1;
+set join_cache_level=@save_join_cache_level;
+
--echo End of 5.0 tests
-set join_cache_level=@save_join_cache_level;
+--echo #
+--echo # Bug #59326: Greedy optimizer produce stupid query execution plans.
+--echo #
+
+#double warning for view protocol
+--disable_view_protocol
+
+CREATE TABLE t10(
+ K INT NOT NULL AUTO_INCREMENT,
+ I INT,
+ PRIMARY KEY(K)
+);
+INSERT INTO t10(I) VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(0);
+
+CREATE TABLE t100 LIKE t10;
+INSERT INTO t100(I)
+SELECT X.I FROM t10 AS X,t10 AS Y;
+
+CREATE TABLE t10000 LIKE t10;
+INSERT INTO t10000(I)
+SELECT X.I FROM t100 AS X, t100 AS Y;
+
+--disable_warnings
+let $total_handler_reads=
+select sum(variable_value) from information_schema.session_status
+ where VARIABLE_NAME like 'Handler_read%';
+--enable_warnings
+
+
+## All crossproducts should be executed in order t10,t100,t10000
+EXPLAIN SELECT * FROM t10,t100,t10000;
+EXPLAIN SELECT * FROM t10,t10000,t100;
+EXPLAIN SELECT * FROM t100,t10,t10000;
+EXPLAIN SELECT * FROM t100,t10000,t10;
+EXPLAIN SELECT * FROM t10000,t10,t100;
+EXPLAIN SELECT * FROM t10000,t100,t10;
+
+######
+## Ordering between T100,T10000 EQ-joined T10 will
+## normally be with smallest EQ-table joined first
+######
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+ AND t10000.K=t10.I;
+--source include/expect_qep.inc
+
+## However, swapping EQ_REF-joined tables gives the same cost
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+ AND t10000.K=t10.I;
+--source include/check_qep.inc
+
+#####
+# Expect all variants of EQ joining t100 & t10000 with T10
+# to have same cost # handler_reads:
+let $query=
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+ AND t10000.K=t10.I;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+ AND t10000.K=t10.I;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+ AND t10000.K=t10.K;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+ AND t10000.K=t10.K;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t100,t10,t10000
+WHERE t100.K=t10.I
+ AND t10000.K=t10.K;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t100,t10000,t10
+WHERE t100.K=t10.I
+ AND t10000.K=t10.K;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10000,t10,t100
+WHERE t100.K=t10.I
+ AND t10000.K=t10.K;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10000,t100,t10
+WHERE t100.K=t10.I
+ AND t10000.K=t10.K;
+--source include/check_qep.inc
+
+
+#####
+## EQ_REF Should be executed before table scan(ALL)
+## - Independent of #records in table being EQ_REF-joined
+#####
+#####
+# Expect: Join EQ_REF(t100) before ALL(t10000)
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+ AND t10000.I=t10.I;
+--source include/expect_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+ AND t10000.I=t10.I;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+ AND t10000.I=t10.I;
+--source include/check_qep.inc
+
+#####
+# Expect: Join EQ_REF(t10000) before ALL(t100) (star-join)
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+ AND t10000.K=t10.I;
+--source include/expect_qep.inc
+
+--echo # See BUG#18352936
+let $query=
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.I=t10.I
+ AND t10000.K=t10.I;
+--source include/check_qep.inc
+
+--echo # See BUG#18352936
+let $query=
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+ AND t10000.K=t10.I;
+--source include/check_qep.inc
+
+#####
+# Expect: Join EQ_REF(t10000) before ALL(t100)
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+ AND t10000.K=t100.I;
+--source include/expect_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.I=t10.I
+ AND t10000.K=t100.I;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.I=t10.I
+ AND t10000.K=t100.I;
+--source include/check_qep.inc
+
+
+#####
+## EQ_REF & ALL join two instances of t10000 with t10:
+## Always EQ_REF join first before producing cross product
+#####
+
+#####
+# Expected QEP: 'join EQ_REF(X) on X.K=t10.I' before 'cross' ALL(Y)
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+--source include/expect_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i;
+--source include/check_qep.inc
+
+#####
+# Expected QEP: 'join EQ_REF(X) on X.K=t10.I' before ALL(Y)
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+ AND y.i=t10.i;
+--source include/expect_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+ AND y.i=t10.i;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+ AND y.i=t10.i;
+--source include/check_qep.inc
+
+#####
+# Expected QEP: 'join EQ_REF(X) on X.K=t10.I' before ALL(Y)
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+ AND y.i=x.k;
+--source include/expect_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+ AND y.i=x.k;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+ AND y.i=x.k;
+--source include/check_qep.inc
+
+
+
+## Create indexes to test REF access
+CREATE INDEX IX ON t10(I);
+CREATE INDEX IX ON t100(I);
+CREATE INDEX IX ON t10000(I);
+
+########
+## EQ_REF Should be executed before 'REF'
+## - Independent of #records in table being EQ_REF-joined
+
+####
+# Expected QEP: 'join EQ_REF(t100) on t100.K=t10.I' before REF(t10000)
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+ AND t10000.I=t10.I;
+--source include/expect_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t100,t10000
+WHERE t100.K=t10.I
+ AND t10000.I=t10.I;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000,t100
+WHERE t100.K=t10.I
+ AND t10000.I=t10.I;
+--source include/check_qep.inc
+
+
+#####
+## EQ_REF & REF join two instances of t10000 with t10:
+#####
+
+#####
+## Expect this QEP, cost & #handler_read
+# Expected QEP: 'join EQ_REF(X) on X.K=t10.I' before 'cross' ALL(Y)
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+--source include/expect_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i;
+--source include/check_qep.inc
+
+#####
+# Expected QEP: 'join EQ_REF(X) on X.K=t10.I' before REF(Y)
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+ AND y.i=t10.i;
+--source include/expect_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+ AND y.i=t10.i;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+ AND y.i=t10.i;
+--source include/check_qep.inc
+
+#####
+# Expected QEP: 'join EQ_REF(X) on X.K=t10.I' before REF(Y)
+let $query=
+SELECT STRAIGHT_JOIN COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+ AND y.i=x.k;
+--source include/expect_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 x,t10000 y
+WHERE x.k=t10.i
+ AND y.i=x.k;
+--source include/check_qep.inc
+
+let $query=
+SELECT COUNT(*) FROM t10,t10000 y,t10000 x
+WHERE x.k=t10.i
+ AND y.i=x.k;
+--source include/check_qep.inc
+
+########
+
+
+
+########
+
+--echo #
+--echo # Test improved capabilities of analyzing complex query
+--echo # plans without restricting 'optimizer_search_depth'.
+--echo # Fix problems like those reported as bug#41740 & bug#58225.
+--echo #
+--echo # EPLAIN of queries using T1-T62 will timeout/hang wo/ fixes
+--echo #
+
+DROP TABLE t10, t10000;
+
+--disable_result_log
+
+let $tabledef=
+( K INT NOT NULL AUTO_INCREMENT,
+ I INT,
+ A INT,
+ PRIMARY KEY(K), KEY IX(A)
+) engine = InnoDB;
+
+let $analyze = ANALYZE TABLE t100;
+
+let $i= 1;
+while ($i < 62)
+{
+ let $create= CREATE TABLE t$i $tabledef;
+ eval $create;
+
+ let $insert =
+ INSERT INTO t$i(I,A) SELECT X.K,X.K FROM t100 AS X, t100 AS Y WHERE X.K < 20 AND Y.K <= $i;
+ eval $insert;
+
+ let $analyze = $analyze, t$i;
+ inc $i;
+}
+eval $analyze;
+
+set optimizer_prune_level=default;
+#--enable_result_log
+#select @@optimizer_prune_level;
+#--disable_result_log
+flush status;
+
+#################
+## The EXPLAIN'ed query itself can't be part of the verified
+## result as the QEP is not 100% predictable due to variation
+## in statistics from the engines. This is believed to be
+## caused by:
+## - Variations in table fill degree.
+## - 'Fuzzy' statistics provided by engines.
+## - Round errors caused by 'cost' calculation using
+## 'only' 64-bit double precision.
+## - Other bugs...?
+##
+###############
+
+## Will test with optimizer_search_depth= [0,1,3,62]
+let $depth= 0;
+while ($depth<4)
+{
+ if ($depth==0)
+ {
+ set optimizer_search_depth=0;
+ }
+ if ($depth==1)
+ {
+ set optimizer_search_depth=1;
+ }
+ if ($depth==2)
+ {
+ set optimizer_search_depth=3;
+ }
+ if ($depth==3)
+ {
+ set optimizer_search_depth=62;
+ }
+ inc $depth;
+
+
+ ## Test pruning of joined table scans (ALL)
+ ## Prepare of QEP without timeout is heavily dependent
+ ## on maintaining correctly '#rows-sorted' plan
+ ##
+ let $query= SELECT COUNT(*) FROM t1 AS x;
+ let $i= 1;
+ while ($i < 61)
+ {
+ let $query= $query JOIN t$i ON t$i.I=x.I;
+ inc $i;
+
+ select @@optimizer_prune_level;
+ select @@optimizer_search_depth;
+ eval EXPLAIN $query;
+ }
+
+ ## Test pruning of joined table scans (ALL)
+ ## with multiple instances of same table.
+ ## (All instances being equally expensive)
+ let $query= SELECT COUNT(*) FROM t1 AS x;
+ let $i= 1;
+ while ($i <= 56)
+ {
+ let $t= t$i;
+ let $query= $query JOIN $t as t$i ON t$i.I=x.I;
+ inc $i;
+ let $query= $query JOIN $t as t$i ON t$i.I=x.I;
+ inc $i;
+ let $query= $query JOIN $t as t$i ON t$i.I=x.I;
+ inc $i;
+ let $query= $query JOIN $t as t$i ON t$i.I=x.I;
+ inc $i;
+ let $query= $query JOIN $t as t$i ON t$i.I=x.I;
+ inc $i;
+ let $query= $query JOIN $t as t$i ON t$i.I=x.I;
+ inc $i;
+ let $query= $query JOIN $t as t$i ON t$i.I=x.I;
+ inc $i;
+ let $query= $query JOIN $t as t$i ON t$i.I=x.I;
+ inc $i;
+
+ select @@optimizer_prune_level;
+ select @@optimizer_search_depth;
+ eval EXPLAIN $query;
+ }
+
+ ## A mix of 25% EQ_REF / 75% ALL joins
+ ##
+ let $query= SELECT COUNT(*) FROM t1 AS x;
+ let $i= 1;
+ while ($i < 60)
+ {
+ let $query= $query JOIN t$i ON t$i.I = x.I;
+ inc $i;
+ let $query= $query JOIN t$i ON t$i.K = x.I;
+ inc $i;
+ let $query= $query JOIN t$i ON t$i.I = x.I;
+ inc $i;
+ let $query= $query JOIN t$i ON t$i.I = x.I;
+ inc $i;
+
+ eval EXPLAIN $query;
+ }
+
+ ## A mix of 50% EQ_REF / 50% ALL joins
+ ##
+ let $query= SELECT COUNT(*) FROM t1 AS x;
+ let $i= 1;
+ while ($i < 60)
+ {
+ let $query= $query JOIN t$i ON t$i.I = x.I;
+ inc $i;
+ let $query= $query JOIN t$i ON t$i.K = x.I;
+ inc $i;
+ let $query= $query JOIN t$i ON t$i.I = x.I;
+ inc $i;
+ let $query= $query JOIN t$i ON t$i.K = x.I;
+ inc $i;
+
+ eval EXPLAIN $query;
+ }
+
+ ## A mix of 75% EQ_REF / 25% ALL joins
+ ##
+ let $query= SELECT COUNT(*) FROM t1 AS x;
+ let $i= 1;
+ while ($i < 60)
+ {
+ let $query= $query JOIN t$i ON t$i.I = x.I;
+ inc $i;
+ let $query= $query JOIN t$i ON t$i.K = x.I;
+ inc $i;
+ let $query= $query JOIN t$i ON t$i.K = x.I;
+ inc $i;
+ let $query= $query JOIN t$i ON t$i.K = x.I;
+ inc $i;
+
+ eval EXPLAIN $query;
+ }
+
+ ## 100% EQ_REF joins
+ ##
+ let $query= SELECT COUNT(*) FROM t1 AS x;
+ let $i= 1;
+ while ($i < 61)
+ {
+ let $query= $query JOIN t$i ON t$i.K=x.I;
+ inc $i;
+
+ eval EXPLAIN $query;
+ }
+}
+
+let $drop = DROP TABLE t100;
+let $i= 1;
+while ($i < 62)
+{
+ let $drop = $drop, t$i;
+ inc $i;
+}
+eval $drop;
+
+--enable_result_log
+
+show status like "optimizer%";
+SET OPTIMIZER_SEARCH_DEPTH = DEFAULT;
+
+--echo #
+--echo # Bug found when testing greedy optimizer tests
+--echo #
+
+CREATE TABLE t1 (pk INTEGER,
+ col_int_key INTEGER,
+ col_varchar_key VARCHAR(8),
+ PRIMARY KEY (pk),
+ KEY (col_varchar_key, col_int_key, pk));
+
+INSERT INTO t1 values (1,1,"A"),(2,2,"B");
+explain SELECT * FROM t1 AS alias1
+WHERE alias1.col_varchar_key IN (SELECT COUNT(*) FROM t1 AS SQ3_alias2 JOIN t1 AS SQ3_alias3 ON (SQ3_alias3.col_varchar_key = SQ3_alias2.col_varchar_key AND SQ3_alias3.pk = SQ3_alias2.pk));
+drop table t1;
+
+--echo #
+--echo # This triggered an assert failure while testing
+--echo #
+
+CREATE TABLE t1 (a int, b int, key(b));
+INSERT INTO t1 VALUES (7,4),(1,1);
+CREATE TABLE t2 (d int);
+INSERT INTO t2 VALUES (2),(3);
+CREATE TABLE t3 (c int);
+INSERT INTO t3 VALUES (5),(6);
+SELECT * FROM t1 WHERE 5 IN (SELECT t1_a.a FROM t1 as t1_a WHERE 1 IN (SELECT t1_b.a FROM t1 as t1_b LEFT JOIN (t2 JOIN t3) ON (t1_b.a = t2.d) WHERE t1_b.b < 1));
+drop table t1,t2,t3;
+
+--enable_view_protocol
+
+--echo End of 10.0 tests
diff --git a/mysql-test/main/information_schema.result b/mysql-test/main/information_schema.result
index 6aa7d43dece..ae1bf46c33b 100644
--- a/mysql-test/main/information_schema.result
+++ b/mysql-test/main/information_schema.result
@@ -312,17 +312,17 @@ latin1_swedish_nopad_ci latin1 1032 # 1
latin1_nopad_bin latin1 1071 # 1
select * from information_schema.COLLATION_CHARACTER_SET_APPLICABILITY
where COLLATION_NAME like 'latin1%';
-COLLATION_NAME CHARACTER_SET_NAME
-latin1_german1_ci latin1
-latin1_swedish_ci latin1
-latin1_danish_ci latin1
-latin1_german2_ci latin1
-latin1_bin latin1
-latin1_general_ci latin1
-latin1_general_cs latin1
-latin1_spanish_ci latin1
-latin1_swedish_nopad_ci latin1
-latin1_nopad_bin latin1
+COLLATION_NAME CHARACTER_SET_NAME FULL_COLLATION_NAME ID IS_DEFAULT
+latin1_german1_ci latin1 latin1_german1_ci 5
+latin1_swedish_ci latin1 latin1_swedish_ci 8 Yes
+latin1_danish_ci latin1 latin1_danish_ci 15
+latin1_german2_ci latin1 latin1_german2_ci 31
+latin1_bin latin1 latin1_bin 47
+latin1_general_ci latin1 latin1_general_ci 48
+latin1_general_cs latin1 latin1_general_cs 49
+latin1_spanish_ci latin1 latin1_spanish_ci 94
+latin1_swedish_nopad_ci latin1 latin1_swedish_nopad_ci 1032
+latin1_nopad_bin latin1 latin1_nopad_bin 1071
drop procedure if exists sel2;
drop function if exists sub1;
drop function if exists sub2;
@@ -610,7 +610,7 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
Table Create Table
CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` (
`CHARACTER_SET_NAME` varchar(32) NOT NULL,
- `DEFAULT_COLLATE_NAME` varchar(32) NOT NULL,
+ `DEFAULT_COLLATE_NAME` varchar(64) NOT NULL,
`DESCRIPTION` varchar(60) NOT NULL,
`MAXLEN` bigint(3) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
@@ -619,7 +619,7 @@ SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
Table Create Table
CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` (
`CHARACTER_SET_NAME` varchar(32) NOT NULL,
- `DEFAULT_COLLATE_NAME` varchar(32) NOT NULL,
+ `DEFAULT_COLLATE_NAME` varchar(64) NOT NULL,
`DESCRIPTION` varchar(60) NOT NULL,
`MAXLEN` bigint(3) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
@@ -634,7 +634,7 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`CHARACTER_SET_NAME` varchar(32) NOT NULL,
- `DEFAULT_COLLATE_NAME` varchar(32) NOT NULL,
+ `DEFAULT_COLLATE_NAME` varchar(64) NOT NULL,
`DESCRIPTION` varchar(60) NOT NULL,
`MAXLEN` bigint(3) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
@@ -679,8 +679,8 @@ proc modified timestamp
proc sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL')
proc comment text
proc character_set_client char(32)
-proc collation_connection char(32)
-proc db_collation char(32)
+proc collation_connection char(64)
+proc db_collation char(64)
proc body_utf8 longblob
proc aggregate enum('NONE','GROUP')
drop table t115;
@@ -828,7 +828,7 @@ where table_schema="information_schema" and table_name="COLUMNS" and
(column_name="character_set_name" or column_name="collation_name");
column_type
varchar(32)
-varchar(32)
+varchar(64)
select TABLE_ROWS from information_schema.tables where
table_schema="information_schema" and table_name="COLUMNS";
TABLE_ROWS
diff --git a/mysql-test/main/information_schema_routines.result b/mysql-test/main/information_schema_routines.result
index 90768765883..35f12510556 100644
--- a/mysql-test/main/information_schema_routines.result
+++ b/mysql-test/main/information_schema_routines.result
@@ -34,8 +34,8 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
`ROUTINE_COMMENT` longtext NOT NULL,
`DEFINER` varchar(384) NOT NULL,
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL,
- `COLLATION_CONNECTION` varchar(32) NOT NULL,
- `DATABASE_COLLATION` varchar(32) NOT NULL
+ `COLLATION_CONNECTION` varchar(64) NOT NULL,
+ `DATABASE_COLLATION` varchar(64) NOT NULL
) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SELECT * FROM information_schema.columns
WHERE table_schema = 'information_schema'
@@ -687,14 +687,14 @@ ORDINAL_POSITION 30
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
-CHARACTER_MAXIMUM_LENGTH 32
-CHARACTER_OCTET_LENGTH 96
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
NUMERIC_PRECISION NULL
NUMERIC_SCALE NULL
DATETIME_PRECISION NULL
CHARACTER_SET_NAME utf8mb3
COLLATION_NAME utf8mb3_general_ci
-COLUMN_TYPE varchar(32)
+COLUMN_TYPE varchar(64)
COLUMN_KEY
EXTRA
PRIVILEGES #
@@ -709,14 +709,14 @@ ORDINAL_POSITION 31
COLUMN_DEFAULT NULL
IS_NULLABLE NO
DATA_TYPE varchar
-CHARACTER_MAXIMUM_LENGTH 32
-CHARACTER_OCTET_LENGTH 96
+CHARACTER_MAXIMUM_LENGTH 64
+CHARACTER_OCTET_LENGTH 192
NUMERIC_PRECISION NULL
NUMERIC_SCALE NULL
DATETIME_PRECISION NULL
CHARACTER_SET_NAME utf8mb3
COLLATION_NAME utf8mb3_general_ci
-COLUMN_TYPE varchar(32)
+COLUMN_TYPE varchar(64)
COLUMN_KEY
EXTRA
PRIVILEGES #
@@ -754,8 +754,8 @@ SQL_MODE varchar(8192) NO NULL
ROUTINE_COMMENT longtext NO NULL
DEFINER varchar(384) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
# ========== routines.2 ==========
DROP DATABASE IF EXISTS i_s_routines_test;
CREATE DATABASE i_s_routines_test;
diff --git a/mysql-test/main/innodb_ext_key.result b/mysql-test/main/innodb_ext_key.result
index 3025e3ec3f0..02e199bc58a 100644
--- a/mysql-test/main/innodb_ext_key.result
+++ b/mysql-test/main/innodb_ext_key.result
@@ -385,9 +385,9 @@ SELECT a FROM t1 AS t, t2
WHERE c = a AND b IN (SELECT b FROM t1, t2 WHERE b = t.b);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t index a,b b 7 NULL 10 Using index
+1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t.a 1 Using index
1 PRIMARY t1 ref b b 3 test.t.b 2 Using index; Start temporary
1 PRIMARY t2 index NULL PRIMARY 4 NULL 11 Using index; End temporary; Using join buffer (flat, BNL join)
-1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t.a 1 Using index
SELECT a FROM t1 AS t, t2
WHERE c = a AND b IN (SELECT b FROM t1, t2 WHERE b = t.b);
a
diff --git a/mysql-test/main/join.result b/mysql-test/main/join.result
index 11b7ecad3ee..65dccc6b9a3 100644
--- a/mysql-test/main/join.result
+++ b/mysql-test/main/join.result
@@ -890,7 +890,7 @@ insert into t2 select @v:=A.a+10*B.a, @v from t1 A, t1 B;
explain select * from t1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 10
-show status like '%cost%';
+show status like 'Last_query_cost';
Variable_name Value
Last_query_cost 4.016090
select 'The cost of accessing t1 (dont care if it changes' '^';
@@ -904,7 +904,7 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 10 Using where
1 SIMPLE A eq_ref PRIMARY PRIMARY 4 test.t1.a 1 Using where
1 SIMPLE B eq_ref PRIMARY PRIMARY 4 test.A.b 1
-show status like '%cost%';
+show status like 'Last_query_cost';
Variable_name Value
Last_query_cost 28.016090
select '^^: The above should be ~= 20 + cost(select * from t1). Value less than 20 is an error' Z;
diff --git a/mysql-test/main/join.test b/mysql-test/main/join.test
index b99f05f7c88..e929854251a 100644
--- a/mysql-test/main/join.test
+++ b/mysql-test/main/join.test
@@ -692,13 +692,13 @@ create table t2 (a int, b int, primary key(a));
insert into t2 select @v:=A.a+10*B.a, @v from t1 A, t1 B;
explain select * from t1;
-show status like '%cost%';
+show status like 'Last_query_cost';
select 'The cost of accessing t1 (dont care if it changes' '^';
select 'vv: Following query must use ALL(t1), eq_ref(A), eq_ref(B): vv' Z;
explain select * from t1, t2 A, t2 B where A.a = t1.a and B.a=A.b;
-show status like '%cost%';
+show status like 'Last_query_cost';
select '^^: The above should be ~= 20 + cost(select * from t1). Value less than 20 is an error' Z;
diff --git a/mysql-test/main/join_cache.result b/mysql-test/main/join_cache.result
index 3a5c975f472..fa96261532a 100644
--- a/mysql-test/main/join_cache.result
+++ b/mysql-test/main/join_cache.result
@@ -2952,7 +2952,7 @@ metaid int NOT NULL default '0',
formatid int NOT NULL default '0',
status int default NULL,
path varchar(100) NOT NULL default '',
-datemodified timestamp NOT NULL ,
+datemodified timestamp NOT NULL default now(),
resourcetype int NOT NULL default '1',
parameters text,
signature int default NULL,
diff --git a/mysql-test/main/join_cache.test b/mysql-test/main/join_cache.test
index f09f28c273a..125ae84c309 100644
--- a/mysql-test/main/join_cache.test
+++ b/mysql-test/main/join_cache.test
@@ -1132,7 +1132,7 @@ CREATE TABLE t3(
formatid int NOT NULL default '0',
status int default NULL,
path varchar(100) NOT NULL default '',
- datemodified timestamp NOT NULL ,
+ datemodified timestamp NOT NULL default now(),
resourcetype int NOT NULL default '1',
parameters text,
signature int default NULL,
diff --git a/mysql-test/main/join_nested.result b/mysql-test/main/join_nested.result
index 5f26b03e0d1..eee3a01c078 100644
--- a/mysql-test/main/join_nested.result
+++ b/mysql-test/main/join_nested.result
@@ -964,13 +964,13 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
-1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where
-1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where
1 SIMPLE t5 ALL idx_b NULL NULL NULL 7 100.00 Using where
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t8 ALL NULL NULL NULL NULL 2 100.00 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where
+1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where
Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(`test`.`t3`.`a` = 1 and `test`.`t4`.`b` = `test`.`t2`.`b` and `test`.`t2`.`a` > 0 and `test`.`t4`.`a` > 0 and `test`.`t2`.`b` is not null) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(`test`.`t8`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` < 10)) on(`test`.`t7`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` >= 2 and `test`.`t5`.`a` > 0)) on((`test`.`t3`.`b` = 2 or `test`.`t3`.`c` is null) and (`test`.`t6`.`b` = 2 or `test`.`t6`.`c` is null) and (`test`.`t5`.`b` = `test`.`t0`.`b` or `test`.`t3`.`c` is null or `test`.`t6`.`c` is null or `test`.`t8`.`c` is null) and `test`.`t1`.`a` <> 2) join `test`.`t9` where `test`.`t0`.`a` = 1 and `test`.`t1`.`b` = `test`.`t0`.`b` and `test`.`t9`.`a` = 1 and (`test`.`t2`.`a` >= 4 or `test`.`t2`.`c` is null) and (`test`.`t3`.`a` < 5 or `test`.`t3`.`c` is null) and (`test`.`t4`.`b` = `test`.`t3`.`b` or `test`.`t3`.`c` is null or `test`.`t4`.`c` is null) and (`test`.`t5`.`a` >= 2 or `test`.`t5`.`c` is null) and (`test`.`t6`.`a` >= 4 or `test`.`t6`.`c` is null) and (`test`.`t7`.`a` <= 2 or `test`.`t7`.`c` is null) and (`test`.`t8`.`a` < 1 or `test`.`t8`.`c` is null) and (`test`.`t8`.`b` = `test`.`t9`.`b` or `test`.`t8`.`c` is null)
INSERT INTO t8 VALUES (-3,12,0), (-1,14,0), (-5,15,0), (-1,11,0), (-4,13,0);
@@ -1014,13 +1014,13 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
-1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where
-1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where
1 SIMPLE t5 ALL idx_b NULL NULL NULL 7 100.00 Using where
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where
+1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where
Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(`test`.`t3`.`a` = 1 and `test`.`t4`.`b` = `test`.`t2`.`b` and `test`.`t2`.`a` > 0 and `test`.`t4`.`a` > 0 and `test`.`t2`.`b` is not null) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(`test`.`t8`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` < 10 and `test`.`t8`.`a` >= 0 and `test`.`t5`.`b` is not null)) on(`test`.`t7`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` >= 2 and `test`.`t5`.`a` > 0)) on((`test`.`t3`.`b` = 2 or `test`.`t3`.`c` is null) and (`test`.`t6`.`b` = 2 or `test`.`t6`.`c` is null) and (`test`.`t5`.`b` = `test`.`t0`.`b` or `test`.`t3`.`c` is null or `test`.`t6`.`c` is null or `test`.`t8`.`c` is null) and `test`.`t1`.`a` <> 2) join `test`.`t9` where `test`.`t0`.`a` = 1 and `test`.`t1`.`b` = `test`.`t0`.`b` and `test`.`t9`.`a` = 1 and (`test`.`t2`.`a` >= 4 or `test`.`t2`.`c` is null) and (`test`.`t3`.`a` < 5 or `test`.`t3`.`c` is null) and (`test`.`t4`.`b` = `test`.`t3`.`b` or `test`.`t3`.`c` is null or `test`.`t4`.`c` is null) and (`test`.`t5`.`a` >= 2 or `test`.`t5`.`c` is null) and (`test`.`t6`.`a` >= 4 or `test`.`t6`.`c` is null) and (`test`.`t7`.`a` <= 2 or `test`.`t7`.`c` is null) and (`test`.`t8`.`a` < 1 or `test`.`t8`.`c` is null) and (`test`.`t8`.`b` = `test`.`t9`.`b` or `test`.`t8`.`c` is null)
INSERT INTO t1 VALUES (-1,133,0), (-2,12,0), (-3,11,0), (-5,15,0);
@@ -1065,13 +1065,13 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t0 ref idx_a idx_a 5 const 2 100.00
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t1 ALL idx_b NULL NULL NULL 7 100.00 Using where; Using join buffer (flat, BNL join)
-1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where
-1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where
1 SIMPLE t5 ALL idx_b NULL NULL NULL 7 100.00 Using where
1 SIMPLE t7 ALL NULL NULL NULL NULL 2 100.00 Using where
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where
+1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where
Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(`test`.`t3`.`a` = 1 and `test`.`t4`.`b` = `test`.`t2`.`b` and `test`.`t2`.`b` is not null) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(`test`.`t8`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` < 10 and `test`.`t5`.`b` is not null)) on(`test`.`t7`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` >= 2)) on((`test`.`t3`.`b` = 2 or `test`.`t3`.`c` is null) and (`test`.`t6`.`b` = 2 or `test`.`t6`.`c` is null) and (`test`.`t5`.`b` = `test`.`t0`.`b` or `test`.`t3`.`c` is null or `test`.`t6`.`c` is null or `test`.`t8`.`c` is null) and `test`.`t1`.`a` <> 2 and `test`.`t1`.`a` > 0) join `test`.`t9` where `test`.`t0`.`a` = 1 and `test`.`t1`.`b` = `test`.`t0`.`b` and `test`.`t9`.`a` = 1 and (`test`.`t2`.`a` >= 4 or `test`.`t2`.`c` is null) and (`test`.`t3`.`a` < 5 or `test`.`t3`.`c` is null) and (`test`.`t4`.`b` = `test`.`t3`.`b` or `test`.`t3`.`c` is null or `test`.`t4`.`c` is null) and (`test`.`t5`.`a` >= 2 or `test`.`t5`.`c` is null) and (`test`.`t6`.`a` >= 4 or `test`.`t6`.`c` is null) and (`test`.`t7`.`a` <= 2 or `test`.`t7`.`c` is null) and (`test`.`t8`.`a` < 1 or `test`.`t8`.`c` is null) and (`test`.`t8`.`b` = `test`.`t9`.`b` or `test`.`t8`.`c` is null)
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
@@ -1111,20 +1111,20 @@ t0.b=t1.b AND
a b a b a b a b a b a b a b a b a b a b
1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 1
1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 2
+1 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 0 2 1 2
1 2 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 1
-1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 1
-1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 1
-1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 1
-1 2 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 1
-1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 1 1
1 2 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 2
-1 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 0 2 1 2
+1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 1
1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 2
-1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 2
1 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 0 2 1 2
+1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 1
+1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 2
+1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 1
1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 2
-1 2 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 2
1 2 3 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 1 2
+1 2 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 1
+1 2 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 2
+1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 1 1
1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 1 2
SELECT t2.a,t2.b
FROM t2;
diff --git a/mysql-test/main/join_nested.test b/mysql-test/main/join_nested.test
index cc1bd327031..bc87dab0054 100644
--- a/mysql-test/main/join_nested.test
+++ b/mysql-test/main/join_nested.test
@@ -637,6 +637,7 @@ SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
+--sorted_result
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
diff --git a/mysql-test/main/join_nested_jcl6.result b/mysql-test/main/join_nested_jcl6.result
index 221a3118b8a..ab5618bd2f6 100644
--- a/mysql-test/main/join_nested_jcl6.result
+++ b/mysql-test/main/join_nested_jcl6.result
@@ -973,13 +973,13 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t1 hash_ALL NULL #hash#$hj 5 test.t0.b 3 100.00 Using where; Using join buffer (flat, BNLH join)
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
-1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where; Using join buffer (incremental, BNL join)
-1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
1 SIMPLE t5 ALL idx_b NULL NULL NULL 7 100.00 Using where; Using join buffer (incremental, BNL join)
1 SIMPLE t7 hash_ALL NULL #hash#$hj 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
1 SIMPLE t8 hash_ALL NULL #hash#$hj 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
+1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where; Using join buffer (incremental, BNL join)
+1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(`test`.`t3`.`a` = 1 and `test`.`t4`.`b` = `test`.`t2`.`b` and `test`.`t2`.`a` > 0 and `test`.`t4`.`a` > 0 and `test`.`t2`.`b` is not null) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(`test`.`t8`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` < 10 and `test`.`t5`.`b` is not null)) on(`test`.`t7`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` >= 2 and `test`.`t5`.`a` > 0 and `test`.`t5`.`b` is not null)) on((`test`.`t3`.`b` = 2 or `test`.`t3`.`c` is null) and (`test`.`t6`.`b` = 2 or `test`.`t6`.`c` is null) and (`test`.`t5`.`b` = `test`.`t0`.`b` or `test`.`t3`.`c` is null or `test`.`t6`.`c` is null or `test`.`t8`.`c` is null) and `test`.`t1`.`a` <> 2) join `test`.`t9` where `test`.`t0`.`a` = 1 and `test`.`t1`.`b` = `test`.`t0`.`b` and `test`.`t9`.`a` = 1 and (`test`.`t2`.`a` >= 4 or `test`.`t2`.`c` is null) and (`test`.`t3`.`a` < 5 or `test`.`t3`.`c` is null) and (`test`.`t4`.`b` = `test`.`t3`.`b` or `test`.`t3`.`c` is null or `test`.`t4`.`c` is null) and (`test`.`t5`.`a` >= 2 or `test`.`t5`.`c` is null) and (`test`.`t6`.`a` >= 4 or `test`.`t6`.`c` is null) and (`test`.`t7`.`a` <= 2 or `test`.`t7`.`c` is null) and (`test`.`t8`.`a` < 1 or `test`.`t8`.`c` is null) and (`test`.`t8`.`b` = `test`.`t9`.`b` or `test`.`t8`.`c` is null)
INSERT INTO t8 VALUES (-3,12,0), (-1,14,0), (-5,15,0), (-1,11,0), (-4,13,0);
@@ -1023,13 +1023,13 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t0 ALL NULL NULL NULL NULL 3 100.00 Using where
1 SIMPLE t1 hash_ALL NULL #hash#$hj 5 test.t0.b 3 100.00 Using where; Using join buffer (flat, BNLH join)
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
-1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where; Using join buffer (incremental, BNL join)
-1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
1 SIMPLE t5 ALL idx_b NULL NULL NULL 7 100.00 Using where; Using join buffer (incremental, BNL join)
1 SIMPLE t7 hash_ALL NULL #hash#$hj 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
+1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where; Using join buffer (incremental, BNL join)
+1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(`test`.`t3`.`a` = 1 and `test`.`t4`.`b` = `test`.`t2`.`b` and `test`.`t2`.`a` > 0 and `test`.`t4`.`a` > 0 and `test`.`t2`.`b` is not null) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(`test`.`t8`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` < 10 and `test`.`t8`.`a` >= 0 and `test`.`t5`.`b` is not null)) on(`test`.`t7`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` >= 2 and `test`.`t5`.`a` > 0 and `test`.`t5`.`b` is not null)) on((`test`.`t3`.`b` = 2 or `test`.`t3`.`c` is null) and (`test`.`t6`.`b` = 2 or `test`.`t6`.`c` is null) and (`test`.`t5`.`b` = `test`.`t0`.`b` or `test`.`t3`.`c` is null or `test`.`t6`.`c` is null or `test`.`t8`.`c` is null) and `test`.`t1`.`a` <> 2) join `test`.`t9` where `test`.`t0`.`a` = 1 and `test`.`t1`.`b` = `test`.`t0`.`b` and `test`.`t9`.`a` = 1 and (`test`.`t2`.`a` >= 4 or `test`.`t2`.`c` is null) and (`test`.`t3`.`a` < 5 or `test`.`t3`.`c` is null) and (`test`.`t4`.`b` = `test`.`t3`.`b` or `test`.`t3`.`c` is null or `test`.`t4`.`c` is null) and (`test`.`t5`.`a` >= 2 or `test`.`t5`.`c` is null) and (`test`.`t6`.`a` >= 4 or `test`.`t6`.`c` is null) and (`test`.`t7`.`a` <= 2 or `test`.`t7`.`c` is null) and (`test`.`t8`.`a` < 1 or `test`.`t8`.`c` is null) and (`test`.`t8`.`b` = `test`.`t9`.`b` or `test`.`t8`.`c` is null)
INSERT INTO t1 VALUES (-1,133,0), (-2,12,0), (-3,11,0), (-5,15,0);
@@ -1074,13 +1074,13 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t0 ref idx_a idx_a 5 const 2 100.00
1 SIMPLE t9 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
1 SIMPLE t1 ALL idx_b NULL NULL NULL 7 100.00 Using where; Using join buffer (incremental, BNL join)
-1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where; Using join buffer (incremental, BNL join)
-1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
-1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
1 SIMPLE t5 ALL idx_b NULL NULL NULL 7 100.00 Using where; Using join buffer (incremental, BNL join)
1 SIMPLE t7 hash_ALL NULL #hash#$hj 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BNLH join)
1 SIMPLE t6 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (incremental, BNL join)
1 SIMPLE t8 ref idx_b idx_b 5 test.t5.b 2 100.00 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
+1 SIMPLE t2 ALL NULL NULL NULL NULL 8 100.00 Using where; Using join buffer (incremental, BNL join)
+1 SIMPLE t3 ALL NULL NULL NULL NULL 2 100.00 Using where; Using join buffer (incremental, BNL join)
+1 SIMPLE t4 ref idx_b idx_b 5 test.t2.b 2 100.00 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
Warnings:
Note 1003 select `test`.`t0`.`a` AS `a`,`test`.`t0`.`b` AS `b`,`test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b`,`test`.`t5`.`a` AS `a`,`test`.`t5`.`b` AS `b`,`test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b`,`test`.`t9`.`a` AS `a`,`test`.`t9`.`b` AS `b` from `test`.`t0` join `test`.`t1` left join (`test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(`test`.`t3`.`a` = 1 and `test`.`t4`.`b` = `test`.`t2`.`b` and `test`.`t2`.`b` is not null) join `test`.`t5` left join (`test`.`t6` join `test`.`t7` left join `test`.`t8` on(`test`.`t8`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` < 10 and `test`.`t5`.`b` is not null)) on(`test`.`t7`.`b` = `test`.`t5`.`b` and `test`.`t6`.`b` >= 2 and `test`.`t5`.`b` is not null)) on((`test`.`t3`.`b` = 2 or `test`.`t3`.`c` is null) and (`test`.`t6`.`b` = 2 or `test`.`t6`.`c` is null) and (`test`.`t5`.`b` = `test`.`t0`.`b` or `test`.`t3`.`c` is null or `test`.`t6`.`c` is null or `test`.`t8`.`c` is null) and `test`.`t1`.`a` <> 2 and `test`.`t1`.`a` > 0) join `test`.`t9` where `test`.`t0`.`a` = 1 and `test`.`t1`.`b` = `test`.`t0`.`b` and `test`.`t9`.`a` = 1 and (`test`.`t2`.`a` >= 4 or `test`.`t2`.`c` is null) and (`test`.`t3`.`a` < 5 or `test`.`t3`.`c` is null) and (`test`.`t4`.`b` = `test`.`t3`.`b` or `test`.`t3`.`c` is null or `test`.`t4`.`c` is null) and (`test`.`t5`.`a` >= 2 or `test`.`t5`.`c` is null) and (`test`.`t6`.`a` >= 4 or `test`.`t6`.`c` is null) and (`test`.`t7`.`a` <= 2 or `test`.`t7`.`c` is null) and (`test`.`t8`.`a` < 1 or `test`.`t8`.`c` is null) and (`test`.`t8`.`b` = `test`.`t9`.`b` or `test`.`t8`.`c` is null)
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
@@ -1118,14 +1118,16 @@ t0.b=t1.b AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
a b a b a b a b a b a b a b a b a b a b
-1 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 0 2 1 2
+1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 1
+1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 2
1 2 3 2 4 2 1 2 3 2 2 2 6 2 2 2 0 2 1 2
1 2 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 1
1 2 3 2 4 2 1 2 3 2 3 1 6 2 1 1 NULL NULL 1 2
-1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 1
-1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 2
1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 1
1 2 3 2 4 2 1 2 3 2 3 3 NULL NULL NULL NULL NULL NULL 1 2
+1 2 3 2 4 2 1 2 4 2 2 2 6 2 2 2 0 2 1 2
+1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 1
+1 2 3 2 4 2 1 2 4 2 3 1 6 2 1 1 NULL NULL 1 2
1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 1
1 2 3 2 4 2 1 2 4 2 3 3 NULL NULL NULL NULL NULL NULL 1 2
1 2 3 2 5 3 NULL NULL NULL NULL 2 2 6 2 2 2 0 2 1 2
@@ -1133,8 +1135,6 @@ a b a b a b a b a b a b a b a b a b a b
1 2 3 2 5 3 NULL NULL NULL NULL 3 1 6 2 1 1 NULL NULL 1 2
1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 1 1
1 2 3 2 5 3 NULL NULL NULL NULL 3 3 NULL NULL NULL NULL NULL NULL 1 2
-1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 1
-1 2 2 2 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 1 2
SELECT t2.a,t2.b
FROM t2;
a b
diff --git a/mysql-test/main/join_outer.result b/mysql-test/main/join_outer.result
index 522b668e07b..58f24c236f9 100644
--- a/mysql-test/main/join_outer.result
+++ b/mysql-test/main/join_outer.result
@@ -2009,10 +2009,10 @@ EXPLAIN EXTENDED
SELECT * FROM (t2 LEFT JOIN t1 ON t1.b = t2.b) JOIN t3 ON t1.b = t3.b;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
-1 SIMPLE t3 hash_ALL PRIMARY #hash#PRIMARY 4 test.t1.b 10 10.00 Using join buffer (flat, BNLH join)
-1 SIMPLE t2 hash_index PRIMARY #hash#PRIMARY:PRIMARY 4:4 test.t1.b 27 3.70 Using index; Using join buffer (incremental, BNLH join)
+1 SIMPLE t2 hash_index PRIMARY #hash#PRIMARY:PRIMARY 4:4 test.t1.b 27 3.70 Using index; Using join buffer (flat, BNLH join)
+1 SIMPLE t3 hash_ALL PRIMARY #hash#PRIMARY 4 test.t1.b 10 10.00 Using join buffer (incremental, BNLH join)
Warnings:
-Note 1003 select `test`.`t2`.`b` AS `b`,`test`.`t1`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t2` join `test`.`t1` join `test`.`t3` where `test`.`t3`.`b` = `test`.`t1`.`b` and `test`.`t2`.`b` = `test`.`t1`.`b`
+Note 1003 select `test`.`t2`.`b` AS `b`,`test`.`t1`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t2` join `test`.`t1` join `test`.`t3` where `test`.`t2`.`b` = `test`.`t1`.`b` and `test`.`t3`.`b` = `test`.`t1`.`b`
PREPARE stmt FROM
'SELECT * FROM (t2 LEFT JOIN t1 ON t1.b = t2.b) JOIN t3 ON t1.b = t3.b';
EXECUTE stmt;
@@ -2644,9 +2644,9 @@ WHERE t1.timestamp < 1294664900039 AND t1.timestamp > 1294644616416 AND
t2.REVTYPE=2;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 42 100.00 Using where
+1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.REV 1 100.00 Using where
1 SIMPLE t3 ref PRIMARY PRIMARY 4 test.t2.profile_id 1 100.00 Using where
1 SIMPLE t4 ref PRIMARY PRIMARY 4 test.t3.person_id 1 100.00 Using index
-1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.REV 1 100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`timestamp` AS `timestamp`,`test`.`t1`.`modifiedBy` AS `modifiedBy`,`test`.`t2`.`id` AS `id`,`test`.`t2`.`REV` AS `REV`,`test`.`t2`.`REVTYPE` AS `REVTYPE`,`test`.`t2`.`profile_id` AS `profile_id`,`test`.`t3`.`id` AS `id`,`test`.`t3`.`REV` AS `REV`,`test`.`t3`.`person_id` AS `person_id`,`test`.`t4`.`id` AS `id`,`test`.`t4`.`REV` AS `REV` from `test`.`t1` join `test`.`t2` join `test`.`t3` join `test`.`t4` where `test`.`t2`.`REVTYPE` = 2 and `test`.`t4`.`id` = `test`.`t3`.`person_id` and `test`.`t3`.`id` = `test`.`t2`.`profile_id` and `test`.`t1`.`id` = `test`.`t2`.`REV` and `test`.`t1`.`timestamp` < 1294664900039 and `test`.`t1`.`timestamp` > 1294644616416
SELECT *
@@ -2669,9 +2669,9 @@ WHERE t1.timestamp < 1294664900039 AND t1.timestamp > 1294644616416
AND t2.REVTYPE=2;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 42 100.00 Using where
+1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.REV 1 100.00 Using where
1 SIMPLE t3 ref PRIMARY PRIMARY 4 test.t2.profile_id 1 100.00 Using where
1 SIMPLE t4 ref PRIMARY PRIMARY 4 test.t3.person_id 1 100.00 Using index
-1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.REV 1 100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`timestamp` AS `timestamp`,`test`.`t1`.`modifiedBy` AS `modifiedBy`,`test`.`t2`.`id` AS `id`,`test`.`t2`.`REV` AS `REV`,`test`.`t2`.`REVTYPE` AS `REVTYPE`,`test`.`t2`.`profile_id` AS `profile_id`,`test`.`t3`.`id` AS `id`,`test`.`t3`.`REV` AS `REV`,`test`.`t3`.`person_id` AS `person_id`,`test`.`t4`.`id` AS `id`,`test`.`t4`.`REV` AS `REV` from `test`.`t4` join `test`.`t3` join `test`.`t2` join `test`.`t1` where `test`.`t2`.`REVTYPE` = 2 and `test`.`t1`.`id` = `test`.`t2`.`REV` and `test`.`t3`.`id` = `test`.`t2`.`profile_id` and `test`.`t4`.`id` = `test`.`t3`.`person_id` and `test`.`t1`.`timestamp` < 1294664900039 and `test`.`t1`.`timestamp` > 1294644616416
SELECT *
diff --git a/mysql-test/main/join_outer_innodb.result b/mysql-test/main/join_outer_innodb.result
index 6f87048cdc1..809a980576d 100644
--- a/mysql-test/main/join_outer_innodb.result
+++ b/mysql-test/main/join_outer_innodb.result
@@ -437,15 +437,15 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL a4,a6,a5,a7 NULL NULL NULL 3 Using where
1 SIMPLE t2 ref PRIMARY PRIMARY 4 test.t1.a1 1 Using index
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t2.b2 1 Using where; Using index
+1 SIMPLE t8 eq_ref PRIMARY PRIMARY 1 test.t1.a4 1 Using index
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 test.t1.a2 1 Using index
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t4.d1 1 Using where
1 SIMPLE t6 eq_ref PRIMARY PRIMARY 4 test.t1.a3 1 Using where; Using index
-1 SIMPLE t8 eq_ref PRIMARY PRIMARY 1 test.t1.a4 1 Using index
1 SIMPLE t7 eq_ref PRIMARY PRIMARY 1 test.t1.a7 1
-1 SIMPLE t9 ref PRIMARY PRIMARY 1 test.t1.a4 1
1 SIMPLE t11 eq_ref PRIMARY PRIMARY 4 test.t1.a5 1
1 SIMPLE t12 eq_ref PRIMARY PRIMARY 4 test.t11.k3 1 Using where
1 SIMPLE l2 eq_ref PRIMARY PRIMARY 4 test.t11.k4 1 Using where
+1 SIMPLE t9 ref PRIMARY PRIMARY 1 test.t1.a4 1
1 SIMPLE t13 ref PRIMARY,m3 m3 8 const,test.t1.a1 1 Using index
1 SIMPLE l4 eq_ref PRIMARY PRIMARY 4 test.t13.m2 1 Using where; Using index
1 SIMPLE m2 ref PRIMARY,m3 m3 8 const,test.t1.a1 1 Using index
@@ -459,15 +459,15 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL a4,a6,a5,a7 NULL NULL NULL 3 Using where
1 SIMPLE t2 ref PRIMARY PRIMARY 4 test.t1.a1 1 Using index
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t2.b2 1 Using where; Using index
+1 SIMPLE t8 eq_ref PRIMARY PRIMARY 1 test.t1.a4 1 Using index
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 test.t1.a2 1 Using index
1 SIMPLE t5 eq_ref PRIMARY PRIMARY 4 test.t4.d1 1 Using where
1 SIMPLE t6 eq_ref PRIMARY PRIMARY 4 test.t1.a3 1 Using where; Using index
-1 SIMPLE t8 eq_ref PRIMARY PRIMARY 1 test.t1.a4 1 Using index
1 SIMPLE t7 eq_ref PRIMARY PRIMARY 1 test.t1.a7 1
-1 SIMPLE t9 ref PRIMARY PRIMARY 1 test.t1.a4 1
1 SIMPLE t11 eq_ref PRIMARY PRIMARY 4 test.t1.a5 1
1 SIMPLE t12 eq_ref PRIMARY PRIMARY 4 test.t11.k3 1 Using where
1 SIMPLE l2 eq_ref PRIMARY PRIMARY 4 test.t11.k4 1 Using where
+1 SIMPLE t9 ref PRIMARY PRIMARY 1 test.t1.a4 1
1 SIMPLE t13 ref PRIMARY,m3 m3 8 const,test.t1.a1 1 Using index
1 SIMPLE l4 eq_ref PRIMARY PRIMARY 4 test.t13.m2 1 Using where; Using index
1 SIMPLE m2 ref PRIMARY,m3 m3 8 const,test.t1.a1 1 Using index
diff --git a/mysql-test/main/join_outer_jcl6.result b/mysql-test/main/join_outer_jcl6.result
index b579cfc6ac0..c3dd72e5988 100644
--- a/mysql-test/main/join_outer_jcl6.result
+++ b/mysql-test/main/join_outer_jcl6.result
@@ -2016,10 +2016,10 @@ EXPLAIN EXTENDED
SELECT * FROM (t2 LEFT JOIN t1 ON t1.b = t2.b) JOIN t3 ON t1.b = t3.b;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00
-1 SIMPLE t3 hash_ALL PRIMARY #hash#PRIMARY 4 test.t1.b 10 10.00 Using join buffer (flat, BNLH join)
-1 SIMPLE t2 hash_index PRIMARY #hash#PRIMARY:PRIMARY 4:4 test.t1.b 27 3.70 Using index; Using join buffer (incremental, BNLH join)
+1 SIMPLE t2 hash_index PRIMARY #hash#PRIMARY:PRIMARY 4:4 test.t1.b 27 3.70 Using index; Using join buffer (flat, BNLH join)
+1 SIMPLE t3 hash_ALL PRIMARY #hash#PRIMARY 4 test.t1.b 10 10.00 Using join buffer (incremental, BNLH join)
Warnings:
-Note 1003 select `test`.`t2`.`b` AS `b`,`test`.`t1`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t2` join `test`.`t1` join `test`.`t3` where `test`.`t3`.`b` = `test`.`t1`.`b` and `test`.`t2`.`b` = `test`.`t1`.`b`
+Note 1003 select `test`.`t2`.`b` AS `b`,`test`.`t1`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t2` join `test`.`t1` join `test`.`t3` where `test`.`t2`.`b` = `test`.`t1`.`b` and `test`.`t3`.`b` = `test`.`t1`.`b`
PREPARE stmt FROM
'SELECT * FROM (t2 LEFT JOIN t1 ON t1.b = t2.b) JOIN t3 ON t1.b = t3.b';
EXECUTE stmt;
@@ -2651,9 +2651,9 @@ WHERE t1.timestamp < 1294664900039 AND t1.timestamp > 1294644616416 AND
t2.REVTYPE=2;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 42 100.00 Using where
-1 SIMPLE t3 ref PRIMARY PRIMARY 4 test.t2.profile_id 1 100.00 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
-1 SIMPLE t4 ref PRIMARY PRIMARY 4 test.t3.person_id 1 100.00 Using index
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.REV 1 100.00 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
+1 SIMPLE t3 ref PRIMARY PRIMARY 4 test.t2.profile_id 1 100.00 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
+1 SIMPLE t4 ref PRIMARY PRIMARY 4 test.t3.person_id 1 100.00 Using index
Warnings:
Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`timestamp` AS `timestamp`,`test`.`t1`.`modifiedBy` AS `modifiedBy`,`test`.`t2`.`id` AS `id`,`test`.`t2`.`REV` AS `REV`,`test`.`t2`.`REVTYPE` AS `REVTYPE`,`test`.`t2`.`profile_id` AS `profile_id`,`test`.`t3`.`id` AS `id`,`test`.`t3`.`REV` AS `REV`,`test`.`t3`.`person_id` AS `person_id`,`test`.`t4`.`id` AS `id`,`test`.`t4`.`REV` AS `REV` from `test`.`t1` join `test`.`t2` join `test`.`t3` join `test`.`t4` where `test`.`t2`.`REVTYPE` = 2 and `test`.`t4`.`id` = `test`.`t3`.`person_id` and `test`.`t3`.`id` = `test`.`t2`.`profile_id` and `test`.`t1`.`id` = `test`.`t2`.`REV` and `test`.`t1`.`timestamp` < 1294664900039 and `test`.`t1`.`timestamp` > 1294644616416
SELECT *
@@ -2676,9 +2676,9 @@ WHERE t1.timestamp < 1294664900039 AND t1.timestamp > 1294644616416
AND t2.REVTYPE=2;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 42 100.00 Using where
-1 SIMPLE t3 ref PRIMARY PRIMARY 4 test.t2.profile_id 1 100.00 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
-1 SIMPLE t4 ref PRIMARY PRIMARY 4 test.t3.person_id 1 100.00 Using index
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.REV 1 100.00 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
+1 SIMPLE t3 ref PRIMARY PRIMARY 4 test.t2.profile_id 1 100.00 Using where; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
+1 SIMPLE t4 ref PRIMARY PRIMARY 4 test.t3.person_id 1 100.00 Using index
Warnings:
Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`timestamp` AS `timestamp`,`test`.`t1`.`modifiedBy` AS `modifiedBy`,`test`.`t2`.`id` AS `id`,`test`.`t2`.`REV` AS `REV`,`test`.`t2`.`REVTYPE` AS `REVTYPE`,`test`.`t2`.`profile_id` AS `profile_id`,`test`.`t3`.`id` AS `id`,`test`.`t3`.`REV` AS `REV`,`test`.`t3`.`person_id` AS `person_id`,`test`.`t4`.`id` AS `id`,`test`.`t4`.`REV` AS `REV` from `test`.`t4` join `test`.`t3` join `test`.`t2` join `test`.`t1` where `test`.`t2`.`REVTYPE` = 2 and `test`.`t1`.`id` = `test`.`t2`.`REV` and `test`.`t3`.`id` = `test`.`t2`.`profile_id` and `test`.`t4`.`id` = `test`.`t3`.`person_id` and `test`.`t1`.`timestamp` < 1294664900039 and `test`.`t1`.`timestamp` > 1294644616416
SELECT *
diff --git a/mysql-test/main/mysql_upgrade-6984.result b/mysql-test/main/mysql_upgrade-6984.result
index a0ea4607b24..301fdfc3bfd 100644
--- a/mysql-test/main/mysql_upgrade-6984.result
+++ b/mysql-test/main/mysql_upgrade-6984.result
@@ -168,3 +168,4 @@ connect con1,localhost,root,foo,,,;
update mysql.global_priv set priv=json_compact(json_remove(priv, '$.plugin', '$.authentication_string')) where user='root';
flush privileges;
set global event_scheduler=OFF;
+# restart
diff --git a/mysql-test/main/mysql_upgrade-6984.test b/mysql-test/main/mysql_upgrade-6984.test
index 48a06bbd542..034310e036f 100644
--- a/mysql-test/main/mysql_upgrade-6984.test
+++ b/mysql-test/main/mysql_upgrade-6984.test
@@ -26,3 +26,7 @@ set global event_scheduler=OFF;
let MYSQLD_DATADIR= `select @@datadir`;
--remove_file $MYSQLD_DATADIR/mysql_upgrade_info
+
+# --skip-grant-tables state may changed during the test. Need to restart the server
+# to restore the --skip-grant-tables state. Otherwise MTR's internal check will fail
+--source include/restart_mysqld.inc
diff --git a/mysql-test/main/mysql_upgrade.opt b/mysql-test/main/mysql_upgrade.opt
new file mode 100644
index 00000000000..b0a968b1bfb
--- /dev/null
+++ b/mysql-test/main/mysql_upgrade.opt
@@ -0,0 +1 @@
+--loose-skip-ssl
diff --git a/mysql-test/main/mysqlbinlog-innodb.result b/mysql-test/main/mysqlbinlog-innodb.result
index be34c273019..6f0b4dd40b6 100644
--- a/mysql-test/main/mysqlbinlog-innodb.result
+++ b/mysql-test/main/mysqlbinlog-innodb.result
@@ -29,7 +29,7 @@ START TRANSACTION
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -60,7 +60,7 @@ START TRANSACTION
use `foo`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/main/mysqlbinlog.result b/mysql-test/main/mysqlbinlog.result
index e970e3f9662..2093f8d2fa0 100644
--- a/mysql-test/main/mysqlbinlog.result
+++ b/mysql-test/main/mysqlbinlog.result
@@ -22,7 +22,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -102,7 +102,7 @@ START TRANSACTION
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -138,7 +138,7 @@ START TRANSACTION
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -189,7 +189,7 @@ START TRANSACTION
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -216,7 +216,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -296,7 +296,7 @@ START TRANSACTION
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -332,7 +332,7 @@ START TRANSACTION
/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -383,7 +383,7 @@ START TRANSACTION
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -492,7 +492,7 @@ DELIMITER /*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -544,7 +544,7 @@ DELIMITER /*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/main/mysqlbinlog_row_compressed.result b/mysql-test/main/mysqlbinlog_row_compressed.result
index a6846f245ff..ca815a518c7 100644
--- a/mysql-test/main/mysqlbinlog_row_compressed.result
+++ b/mysql-test/main/mysqlbinlog_row_compressed.result
@@ -33,7 +33,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=X/*!*/;
SET @@session.pseudo_thread_id=5/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/main/mysqlbinlog_row_minimal.result b/mysql-test/main/mysqlbinlog_row_minimal.result
index 99d5757be8d..4d9ca93012b 100644
--- a/mysql-test/main/mysqlbinlog_row_minimal.result
+++ b/mysql-test/main/mysqlbinlog_row_minimal.result
@@ -31,7 +31,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=X/*!*/;
SET @@session.pseudo_thread_id=5/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -397,7 +397,7 @@ START TRANSACTION
#<date> server id 1 end_log_pos END_LOG_POS CRC32 XXX Query thread_id=TID exec_time=x error_code=0 xid=<xid>
SET TIMESTAMP=X/*!*/;
SET @@session.pseudo_thread_id=TID/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/main/mysqlbinlog_stmt_compressed.result b/mysql-test/main/mysqlbinlog_stmt_compressed.result
index 7e709eeef2c..5f3e82648c6 100644
--- a/mysql-test/main/mysqlbinlog_stmt_compressed.result
+++ b/mysql-test/main/mysqlbinlog_stmt_compressed.result
@@ -33,7 +33,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=X/*!*/;
SET @@session.pseudo_thread_id=5/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=#/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/main/mysqld--help.result b/mysql-test/main/mysqld--help.result
index 92a7676530e..c92c1cd3cd2 100644
--- a/mysql-test/main/mysqld--help.result
+++ b/mysql-test/main/mysqld--help.result
@@ -8,10 +8,11 @@ The following specify which files/extra groups are read (specified before remain
--defaults-group-suffix=# Additionally read default groups with # appended as a suffix.
--allow-suspicious-udfs
- Allows use of UDFs consisting of only one symbol xxx()
- without corresponding xxx_init() or xxx_deinit(). That
- also means that one can load any function from any
- library, for example exit() from libc.so
+ Allows use of user-defined functions (UDFs) consisting of
+ only one symbol xxx() without corresponding xxx_init() or
+ xxx_deinit(). That also means that one can load any
+ function from any library, for example exit() from
+ libc.so
--alter-algorithm[=name]
Specify the alter table algorithm. One of: DEFAULT, COPY,
INPLACE, NOCOPY, INSTANT
@@ -287,6 +288,7 @@ The following specify which files/extra groups are read (specified before remain
columns as NULL with DEFAULT NULL attribute, Without this
option, TIMESTAMP columns are NOT NULL and have implicit
DEFAULT clauses.
+ (Defaults to on; use --skip-explicit-defaults-for-timestamp to disable.)
--external-locking Use system (external) locking (disabled by default).
With this option enabled you can run myisamchk to test
(not repair) tables while the MySQL server is running.
@@ -702,6 +704,10 @@ The following specify which files/extra groups are read (specified before remain
max_connections*5 or max_connections + table_cache*2
(whichever is larger) number of file descriptors
(Automatically configured unless set explicitly)
+ --optimizer-extra-pruning-depth=#
+ If the optimizer needs to enumerate join prefix of this
+ size or larger, then it will try agressively prune away
+ the search space.
--optimizer-max-sel-arg-weight=#
The maximum weight of the SEL_ARG graph. Set to 0 for no
limit
@@ -709,8 +715,9 @@ The following specify which files/extra groups are read (specified before remain
Controls the heuristic(s) applied during query
optimization to prune less-promising partial plans from
the optimizer search space. Meaning: 0 - do not apply any
- heuristic, thus perform exhaustive search; 1 - prune
- plans based on number of retrieved rows
+ heuristic, thus perform exhaustive search: 1 - prune
+ plans based on cost and number of retrieved rows eq_ref:
+ 2 - prune also if we find an eq_ref chain
--optimizer-search-depth=#
Maximum depth of search performed by the query optimizer.
Values larger than the number of relations in a query
@@ -1219,6 +1226,11 @@ The following specify which files/extra groups are read (specified before remain
--slave-max-allowed-packet=#
The maximum packet length to sent successfully from the
master to slave.
+ --slave-max-statement-time=#
+ A query that has taken more than slave_max_statement_time
+ seconds to run on the slave will be aborted. The argument
+ will be treated as a decimal value with microsecond
+ precision. A value of 0 (default) means no timeout
--slave-net-timeout=#
Number of seconds to wait for more data from any
master/slave connection before aborting the read
@@ -1537,7 +1549,7 @@ eq-range-index-dive-limit 200
event-scheduler OFF
expensive-subquery-limit 100
expire-logs-days 0
-explicit-defaults-for-timestamp FALSE
+explicit-defaults-for-timestamp TRUE
external-locking FALSE
extra-max-connections 1
extra-port 0
@@ -1664,8 +1676,9 @@ old-alter-table DEFAULT
old-mode UTF8_IS_UTF8MB3
old-passwords FALSE
old-style-user-limits FALSE
+optimizer-extra-pruning-depth 8
optimizer-max-sel-arg-weight 32000
-optimizer-prune-level 1
+optimizer-prune-level 2
optimizer-search-depth 62
optimizer-selectivity-sampling-limit 100
optimizer-switch index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on,condition_pushdown_for_subquery=on,rowid_filter=on,condition_pushdown_from_having=on
@@ -1795,6 +1808,7 @@ slave-ddl-exec-mode IDEMPOTENT
slave-domain-parallel-threads 0
slave-exec-mode STRICT
slave-max-allowed-packet 1073741824
+slave-max-statement-time 0
slave-net-timeout 60
slave-parallel-max-queued 131072
slave-parallel-mode conservative
diff --git a/mysql-test/main/mysqld--help.test b/mysql-test/main/mysqld--help.test
index 42f551974d9..9bf53c7200b 100644
--- a/mysql-test/main/mysqld--help.test
+++ b/mysql-test/main/mysqld--help.test
@@ -39,7 +39,8 @@ perl;
query-response-time metadata-lock-info locales unix-socket
wsrep file-key-management cracklib-password-check user-variables
provider-bzip2 provider-lzma provider-lzo
- thread-pool-groups thread-pool-queues thread-pool-stats thread-pool-waits/;
+ thread-pool-groups thread-pool-queues thread-pool-stats
+ thread-pool-waits hashicorp provider/;
# And substitute the content some environment variables with their
# names:
diff --git a/mysql-test/main/mysqldump.result b/mysql-test/main/mysqldump.result
index b9cdfba9a09..8edfb156131 100644
--- a/mysql-test/main/mysqldump.result
+++ b/mysql-test/main/mysqldump.result
@@ -3813,7 +3813,7 @@ CREATE TEMPORARY TABLE `TABLES` (
`CREATE_TIME` datetime,
`UPDATE_TIME` datetime,
`CHECK_TIME` datetime,
- `TABLE_COLLATION` varchar(32),
+ `TABLE_COLLATION` varchar(64),
`CHECKSUM` bigint(21) unsigned,
`CREATE_OPTIONS` varchar(2048),
`TABLE_COMMENT` varchar(2048) NOT NULL,
diff --git a/mysql-test/main/null.result b/mysql-test/main/null.result
index 755108be267..2653140dfc3 100644
--- a/mysql-test/main/null.result
+++ b/mysql-test/main/null.result
@@ -1,4 +1,6 @@
-drop table if exists t1, t2;
+#
+# Testing of NULL in a lot of different places
+#
select null,\N,isnull(null),isnull(1/0),isnull(1/0 = null),ifnull(null,1),ifnull(null,"TRUE"),ifnull("TRUE","ERROR"),1/0 is null,1 is not null;
NULL NULL isnull(null) isnull(1/0) isnull(1/0 = null) ifnull(null,1) ifnull(null,"TRUE") ifnull("TRUE","ERROR") 1/0 is null 1 is not null
NULL NULL 1 1 1 1 TRUE TRUE 1 1
@@ -62,6 +64,9 @@ insert into t1 values (null);
select * from t1 where x != 0;
x
drop table t1;
+#
+# Test problem med index on NULL columns and testing with =NULL;
+#
CREATE TABLE t1 (
indexed_field int default NULL,
KEY indexed_field (indexed_field)
@@ -78,6 +83,9 @@ indexed_field
NULL
NULL
DROP TABLE t1;
+#
+# Testing of IFNULL
+#
create table t1 (a int, b int) engine=myisam;
insert into t1 values(20,null);
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
@@ -95,6 +103,9 @@ b ifnull(t2.b,"this is null")
NULL this is null
NULL this is null
drop table t1;
+#
+# Test inserting and updating with NULL
+#
CREATE TABLE t1 (a varchar(16) NOT NULL default '', b smallint(6) NOT NULL default 0, c datetime NOT NULL default '0000-00-00 00:00:00', d smallint(6) NOT NULL default 0);
INSERT IGNORE INTO t1 SET a = "", d= "2003-01-14 03:54:55";
Warnings:
@@ -149,6 +160,10 @@ a b c d
0 0000-00-00 00:00:00 0
0 0000-00-00 00:00:00 0
drop table t1;
+#
+# Test to check elimination of IS NULL predicate for a non-nullable attribute
+# (bug #1990)
+#
create table t1 (a int not null, b int not null, index idx(a));
insert into t1 values
(1,1), (2,2), (3,3), (4,4), (5,5), (6,6),
@@ -163,6 +178,10 @@ drop table t1;
select cast(NULL as signed);
cast(NULL as signed)
NULL
+#
+# IS NULL is unable to use index in range if column is declared not null
+# (Bug #4256)
+#
create table t1(i int, key(i));
insert into t1 values(1);
insert into t1 select i*2 from t1;
@@ -192,6 +211,11 @@ select count(*) from t1 where i=2 or i is null;
count(*)
9
drop table t1;
+#
+# NULL has its own type BINARY(0) by default.
+# But NULL should be weaker than a constant
+# when mixing charsets/collations
+#
set names latin2;
create table t1 select
null as c00,
@@ -275,6 +299,11 @@ t1 CREATE TABLE `t1` (
`c38` varchar(10) CHARACTER SET latin2 COLLATE latin2_general_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
drop table t1;
+#
+# Check that comparison is done according to
+# non-null string collation, i.e. case insensitively,
+# rather than according to NULL's collation, i.e. case sensitively
+#
select
case 'str' when 'STR' then 'str' when null then 'null' end as c01,
case 'str' when null then 'null' when 'STR' then 'str' end as c02,
@@ -286,10 +315,13 @@ field('str1', null, 'STR1') as c05,
c01 c02 c03 c04 c05 c08 c09
str str 0 1 2 1 1
set names latin1;
-create table bug19145a (e enum('a','b','c') default 'b' , s set('x', 'y', 'z') default 'y' ) engine=MyISAM;
-create table bug19145b (e enum('a','b','c') default null, s set('x', 'y', 'z') default null) engine=MyISAM;
+#
+# Bug#19145: mysqld crashes if you set the default value of an enum field to NULL
+#
+create table bug19145a (e enum('a','b','c') default 'b' , s set('x', 'y', 'z') default 'y' ) engine=MyISAM;
+create table bug19145b (e enum('a','b','c') default null, s set('x', 'y', 'z') default null) engine=MyISAM;
create table bug19145c (e enum('a','b','c') not null default 'b' , s set('x', 'y', 'z') not null default 'y' ) engine=MyISAM;
-create table bug19145setnotnulldefaultnull (e enum('a','b','c') default null, s set('x', 'y', 'z') not null default null) engine=MyISAM;
+create table bug19145setnotnulldefaultnull (e enum('a','b','c') default null, s set('x', 'y', 'z') not null default null) engine=MyISAM;
ERROR 42000: Invalid default value for 's'
create table bug19145enumnotnulldefaultnull (e enum('a','b','c') not null default null, s set('x', 'y', 'z') default null) engine=MyISAM;
ERROR 42000: Invalid default value for 'e'
@@ -328,8 +360,10 @@ bug19145c CREATE TABLE `bug19145c` (
drop table bug19145a;
drop table bug19145b;
drop table bug19145c;
+#
# End of 4.1 tests
#
+#
# Bug #31471: decimal_bin_size: Assertion `scale >= 0 &&
# precision > 0 && scale <= precision'
#
@@ -350,8 +384,10 @@ DESCRIBE t2;
Field Type Null Key Default Extra
IFNULL(NULL, b) decimal(1,0) YES NULL
DROP TABLE t1, t2;
+#
# End of 5.0 tests
#
+#
# MDEV-4895 Valgrind warnings (Conditional jump or move depends on uninitialised value) in Field_datetime::get_date on GREATEST(..) IS NULL
#
CREATE TABLE t1 (dt DATETIME NOT NULL);
@@ -382,8 +418,7 @@ SELECT * FROM t1 WHERE NOT (concat( dt, '1' ) IS NOT NULL);
dt
DROP TABLE t1;
#
-# Bug mdev-5132: crash when exeicuting a join query
-# with IS NULL and IS NOT NULL in where
+# MDEV-5132 crash when exeicuting a join query with IS NULL and IS NOT NULL in where
#
CREATE TABLE t1 (a DATE, b INT, c INT, KEY(a), KEY(b), KEY(c)) ENGINE=MyISAM;
CREATE TABLE t2 (d DATE) ENGINE=MyISAM;
@@ -391,9 +426,6 @@ SELECT * FROM t1,t2 WHERE 1 IS NOT NULL AND t1.b IS NULL;
a b c d
DROP TABLE t1,t2;
#
-# Start of 10.0 tests
-#
-#
# MDEV-7001 Bad result for NOT NOT STRCMP('a','b') and NOT NOT NULLIF(2,3)
#
SELECT NOT NOT NULLIF(2,3);
diff --git a/mysql-test/main/null.test b/mysql-test/main/null.test
index 3741ec0f8ea..7bb698e4392 100644
--- a/mysql-test/main/null.test
+++ b/mysql-test/main/null.test
@@ -1,11 +1,6 @@
-# Initialise
---disable_warnings
-drop table if exists t1, t2;
---enable_warnings
-
-#
-# Testing of NULL in a lot of different places
-#
+--echo #
+--echo # Testing of NULL in a lot of different places
+--echo #
#enable view protocol after fix MDEV-28535
--disable_view_protocol
@@ -34,9 +29,9 @@ insert into t1 values (null);
select * from t1 where x != 0;
drop table t1;
-#
-# Test problem med index on NULL columns and testing with =NULL;
-#
+--echo #
+--echo # Test problem med index on NULL columns and testing with =NULL;
+--echo #
CREATE TABLE t1 (
indexed_field int default NULL,
@@ -48,9 +43,9 @@ SELECT * FROM t1 WHERE indexed_field IS NULL;
SELECT * FROM t1 WHERE indexed_field<=>NULL;
DROP TABLE t1;
-#
-# Testing of IFNULL
-#
+--echo #
+--echo # Testing of IFNULL
+--echo #
create table t1 (a int, b int) engine=myisam;
insert into t1 values(20,null);
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
@@ -62,40 +57,40 @@ select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
t2.b=t3.a order by 1;
drop table t1;
-#
-# Test inserting and updating with NULL
-#
+--echo #
+--echo # Test inserting and updating with NULL
+--echo #
CREATE TABLE t1 (a varchar(16) NOT NULL default '', b smallint(6) NOT NULL default 0, c datetime NOT NULL default '0000-00-00 00:00:00', d smallint(6) NOT NULL default 0);
INSERT IGNORE INTO t1 SET a = "", d= "2003-01-14 03:54:55";
UPDATE IGNORE t1 SET d=1/NULL;
UPDATE IGNORE t1 SET d=NULL;
---error 1048
+--error ER_BAD_NULL_ERROR
INSERT INTO t1 (a) values (null);
---error 1048
+--error ER_BAD_NULL_ERROR
INSERT INTO t1 (a) values (1/null);
INSERT IGNORE INTO t1 (a) values (null),(null);
---error 1048
+--error ER_BAD_NULL_ERROR
INSERT INTO t1 (b) values (null);
---error 1048
+--error ER_BAD_NULL_ERROR
INSERT INTO t1 (b) values (1/null);
INSERT IGNORE INTO t1 (b) values (null),(null);
---error 1048
+--error ER_BAD_NULL_ERROR
INSERT INTO t1 (c) values (null);
---error 1048
+--error ER_BAD_NULL_ERROR
INSERT INTO t1 (c) values (1/null);
INSERT IGNORE INTO t1 (c) values (null),(null);
---error 1048
+--error ER_BAD_NULL_ERROR
INSERT INTO t1 (d) values (null);
---error 1048
+--error ER_BAD_NULL_ERROR
INSERT INTO t1 (d) values (1/null);
INSERT IGNORE INTO t1 (d) values (null),(null);
select * from t1;
drop table t1;
-#
-# Test to check elimination of IS NULL predicate for a non-nullable attribute
-# (bug #1990)
-#
+--echo #
+--echo # Test to check elimination of IS NULL predicate for a non-nullable attribute
+--echo # (bug #1990)
+--echo #
create table t1 (a int not null, b int not null, index idx(a));
insert into t1 values
(1,1), (2,2), (3,3), (4,4), (5,5), (6,6),
@@ -105,10 +100,10 @@ explain select * from t1 where a between 2 and 3 or b is null;
drop table t1;
select cast(NULL as signed);
-#
-# IS NULL is unable to use index in range if column is declared not null
-# (Bug #4256)
-#
+--echo #
+--echo # IS NULL is unable to use index in range if column is declared not null
+--echo # (Bug #4256)
+--echo #
create table t1(i int, key(i));
insert into t1 values(1);
insert into t1 select i*2 from t1;
@@ -129,11 +124,11 @@ explain select * from t1 where i=2 or i is null;
select count(*) from t1 where i=2 or i is null;
drop table t1;
-#
-# NULL has its own type BINARY(0) by default.
-# But NULL should be weaker than a constant
-# when mixing charsets/collations
-#
+--echo #
+--echo # NULL has its own type BINARY(0) by default.
+--echo # But NULL should be weaker than a constant
+--echo # when mixing charsets/collations
+--echo #
set names latin2;
# Check that result type is taken from a non-null string
create table t1 select
@@ -179,11 +174,11 @@ create table t1 select
show create table t1;
drop table t1;
-#
-# Check that comparison is done according to
-# non-null string collation, i.e. case insensitively,
-# rather than according to NULL's collation, i.e. case sensitively
-#
+--echo #
+--echo # Check that comparison is done according to
+--echo # non-null string collation, i.e. case insensitively,
+--echo # rather than according to NULL's collation, i.e. case sensitively
+--echo #
# in field
select
case 'str' when 'STR' then 'str' when null then 'null' end as c01,
@@ -197,20 +192,20 @@ select
# Restore charset to the default value.
set names latin1;
-#
-# Bug#19145: mysqld crashes if you set the default value of an enum field to NULL
-#
-create table bug19145a (e enum('a','b','c') default 'b' , s set('x', 'y', 'z') default 'y' ) engine=MyISAM;
-create table bug19145b (e enum('a','b','c') default null, s set('x', 'y', 'z') default null) engine=MyISAM;
+--echo #
+--echo # Bug#19145: mysqld crashes if you set the default value of an enum field to NULL
+--echo #
+create table bug19145a (e enum('a','b','c') default 'b' , s set('x', 'y', 'z') default 'y' ) engine=MyISAM;
+create table bug19145b (e enum('a','b','c') default null, s set('x', 'y', 'z') default null) engine=MyISAM;
create table bug19145c (e enum('a','b','c') not null default 'b' , s set('x', 'y', 'z') not null default 'y' ) engine=MyISAM;
# Invalid default value for 's'
---error 1067
-create table bug19145setnotnulldefaultnull (e enum('a','b','c') default null, s set('x', 'y', 'z') not null default null) engine=MyISAM;
+--error ER_INVALID_DEFAULT
+create table bug19145setnotnulldefaultnull (e enum('a','b','c') default null, s set('x', 'y', 'z') not null default null) engine=MyISAM;
# Invalid default value for 'e'
---error 1067
+--error ER_INVALID_DEFAULT
create table bug19145enumnotnulldefaultnull (e enum('a','b','c') not null default null, s set('x', 'y', 'z') default null) engine=MyISAM;
alter table bug19145a alter column e set default null;
@@ -222,11 +217,11 @@ alter table bug19145b alter column s set default null;
alter table bug19145b add column (i int);
# Invalid default value for 'e'
---error 1067
+--error ER_INVALID_DEFAULT
alter table bug19145c alter column e set default null;
# Invalid default value for 's'
---error 1067
+--error ER_INVALID_DEFAULT
alter table bug19145c alter column s set default null;
alter table bug19145c add column (i int);
@@ -238,7 +233,9 @@ drop table bug19145a;
drop table bug19145b;
drop table bug19145c;
+--echo #
--echo # End of 4.1 tests
+--echo #
--echo #
--echo # Bug #31471: decimal_bin_size: Assertion `scale >= 0 &&
@@ -261,7 +258,9 @@ DESCRIBE t2;
DROP TABLE t1, t2;
+--echo #
--echo # End of 5.0 tests
+--echo #
--echo #
--echo # MDEV-4895 Valgrind warnings (Conditional jump or move depends on uninitialised value) in Field_datetime::get_date on GREATEST(..) IS NULL
@@ -292,8 +291,7 @@ SELECT * FROM t1 WHERE NOT (concat( dt, '1' ) IS NOT NULL);
DROP TABLE t1;
--echo #
---echo # Bug mdev-5132: crash when exeicuting a join query
---echo # with IS NULL and IS NOT NULL in where
+--echo # MDEV-5132 crash when exeicuting a join query with IS NULL and IS NOT NULL in where
--echo #
CREATE TABLE t1 (a DATE, b INT, c INT, KEY(a), KEY(b), KEY(c)) ENGINE=MyISAM;
@@ -304,10 +302,6 @@ SELECT * FROM t1,t2 WHERE 1 IS NOT NULL AND t1.b IS NULL;
DROP TABLE t1,t2;
--echo #
---echo # Start of 10.0 tests
---echo #
-
---echo #
--echo # MDEV-7001 Bad result for NOT NOT STRCMP('a','b') and NOT NOT NULLIF(2,3)
--echo #
SELECT NOT NOT NULLIF(2,3);
@@ -1194,7 +1188,6 @@ SELECT * FROM t1 WHERE ((c1 IS NOT NULL) >= (NOT TRUE)) IS NOT NULL;
SELECT * FROM t1 WHERE ((c1 IS NOT NULL) >= (NOT TRUE)) IS NOT NULL;
DROP TABLE t1;
-
--echo #
--echo # End of 10.1 tests
--echo #
diff --git a/mysql-test/main/old-mode.result b/mysql-test/main/old-mode.result
index e0a3412bbdf..44e8f5bfece 100644
--- a/mysql-test/main/old-mode.result
+++ b/mysql-test/main/old-mode.result
@@ -129,7 +129,7 @@ DROP TABLE t1;
SET @@global.mysql56_temporal_format=DEFAULT;
set time_zone='Europe/Moscow';
set global mysql56_temporal_format=false;
-create table t1 (a timestamp);
+create table t1 (a timestamp not null default now());
set timestamp=1288477526;
insert t1 values (null);
insert t1 values ();
@@ -158,7 +158,7 @@ a unix_timestamp(a)
2010-10-31 02:25:26 1288481126
drop table t1;
set global mysql56_temporal_format=false;
-create table t1 (a timestamp);
+create table t1 (a timestamp not null default now());
set timestamp=1288477526;
insert t1 values (null);
set timestamp=1288481126;
diff --git a/mysql-test/main/old-mode.test b/mysql-test/main/old-mode.test
index a09de1cf87d..0419be4bf6a 100644
--- a/mysql-test/main/old-mode.test
+++ b/mysql-test/main/old-mode.test
@@ -91,7 +91,7 @@ SET @@global.mysql56_temporal_format=DEFAULT;
# Copy_field
set time_zone='Europe/Moscow';
set global mysql56_temporal_format=false;
-create table t1 (a timestamp);
+create table t1 (a timestamp not null default now());
set timestamp=1288477526;
insert t1 values (null);
insert t1 values ();
@@ -107,7 +107,7 @@ drop table t1;
# field_conv_incompatible()
set global mysql56_temporal_format=false;
-create table t1 (a timestamp);
+create table t1 (a timestamp not null default now());
set timestamp=1288477526;
insert t1 values (null);
set timestamp=1288481126;
diff --git a/mysql-test/main/openssl_1.test b/mysql-test/main/openssl_1.test
index 639fd0a294d..9232868bddd 100644
--- a/mysql-test/main/openssl_1.test
+++ b/mysql-test/main/openssl_1.test
@@ -72,7 +72,7 @@ drop table t1;
# Handle that openssl gives different error messages from YaSSL.
--replace_regex /2026 TLS\/SSL error.*/2026 TLS\/SSL error: xxxx/
--error 1
---exec $MYSQL_TEST --ssl-ca=$MYSQL_TEST_DIR/std_data/untrusted-cacert.pem --max-connect-retries=1 < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
+--exec $MYSQL_TEST --ssl-verify-server-cert --ssl-ca=$MYSQL_TEST_DIR/std_data/untrusted-cacert.pem --max-connect-retries=1 < $MYSQLTEST_VARDIR/tmp/test.sql 2>&1
--echo
#
diff --git a/mysql-test/main/opt_trace.result b/mysql-test/main/opt_trace.result
index 6f0d13441ff..da6c1f320e9 100644
--- a/mysql-test/main/opt_trace.result
+++ b/mysql-test/main/opt_trace.result
@@ -127,23 +127,31 @@ select * from v1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 1,
- "cost": 2.204394531,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 1,
+ "cost": 2.204394531,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 1,
+ "cost": 2.204394531,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 1,
- "cost": 2.204394531,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 1,
"cost_for_plan": 2.404394531
}
@@ -277,23 +285,31 @@ select * from (select * from t1 where t1.a=1)q {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 1,
- "cost": 2.204394531,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 1,
+ "cost": 2.204394531,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 1,
+ "cost": 2.204394531,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 1,
- "cost": 2.204394531,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 1,
"cost_for_plan": 2.404394531
}
@@ -432,24 +448,32 @@ select * from v2 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 1,
- "cost": 2.204394531,
- "chosen": true,
- "use_tmp_table": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 1,
+ "cost": 2.204394531,
+ "chosen": true,
+ "use_tmp_table": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 1,
+ "cost": 2.204394531,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 1,
- "cost": 2.204394531,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 1,
"cost_for_plan": 2.404394531,
"cost_for_sorting": 1
@@ -504,23 +528,31 @@ select * from v2 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "<derived2>",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 2,
- "cost": 2,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "<derived2>",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 2,
+ "cost": 2,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 2,
+ "cost": 2,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 2,
- "cost": 2,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "<derived2>",
"rows_for_plan": 2,
"cost_for_plan": 2.4
}
@@ -640,23 +672,31 @@ explain select * from v2 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 10,
- "cost": 2.021972656,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 10,
+ "cost": 2.021972656,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 10,
+ "cost": 2.021972656,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 10,
- "cost": 2.021972656,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t2",
"rows_for_plan": 10,
"cost_for_plan": 4.021972656
}
@@ -755,24 +795,32 @@ explain select * from v1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 10,
- "cost": 2.021972656,
- "chosen": true,
- "use_tmp_table": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 10,
+ "cost": 2.021972656,
+ "chosen": true,
+ "use_tmp_table": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 10,
+ "cost": 2.021972656,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 10,
- "cost": 2.021972656,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 10,
"cost_for_plan": 4.021972656,
"cost_for_sorting": 10
@@ -821,23 +869,31 @@ explain select * from v1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "<derived2>",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 10,
- "cost": 10,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "<derived2>",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 10,
+ "cost": 10,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 10,
+ "cost": 10,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 10,
- "cost": 10,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "<derived2>",
"rows_for_plan": 10,
"cost_for_plan": 12
}
@@ -992,113 +1048,141 @@ explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 100,
- "cost": 2.317382812,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 100,
- "cost": 2.317382812,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 100,
- "cost_for_plan": 22.31738281,
- "rest_of_plan": [
+ "get_costs_for_tables": [
{
- "plan_prefix": ["t1"],
- "table": "t2",
"best_access_path": {
+ "table": "t1",
"considered_access_paths": [
{
- "access_type": "ref",
- "index": "a",
- "used_range_estimates": false,
- "reason": "not available",
- "rows": 1,
- "cost": 200.0585794,
+ "access_type": "scan",
+ "resulting_rows": 100,
+ "cost": 2.317382812,
"chosen": true
- },
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 100,
+ "cost": 2.317382812,
+ "uses_join_buffering": false
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t2",
+ "considered_access_paths": [
{
"access_type": "scan",
"resulting_rows": 100,
"cost": 2.317382812,
- "chosen": false
+ "chosen": true
}
],
"chosen_access_method": {
- "type": "ref",
- "records": 1,
- "cost": 200.0585794,
+ "type": "scan",
+ "records": 100,
+ "cost": 2.317382812,
"uses_join_buffering": false
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
+ "rows_for_plan": 100,
+ "cost_for_plan": 22.31738281,
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t1"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t2",
+ "considered_access_paths": [
+ {
+ "access_type": "ref",
+ "index": "a",
+ "used_range_estimates": false,
+ "reason": "not available",
+ "rows": 1,
+ "cost": 200.0585794,
+ "chosen": true
+ },
+ {
+ "access_type": "scan",
+ "resulting_rows": 100,
+ "cost": 2.317382812,
+ "chosen": false
+ }
+ ],
+ "chosen_access_method": {
+ "type": "ref",
+ "records": 1,
+ "cost": 200.0585794,
+ "uses_join_buffering": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t1"],
+ "table": "t2",
"rows_for_plan": 100,
- "cost_for_plan": 242.3759623,
- "pruned_by_hanging_leaf": true
+ "cost_for_plan": 242.3759623
}
]
},
{
"plan_prefix": [],
"table": "t2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 100,
- "cost": 2.317382812,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 100,
- "cost": 2.317382812,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 100,
"cost_for_plan": 22.31738281,
"rest_of_plan": [
{
"plan_prefix": ["t2"],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "ref",
- "index": "a",
- "used_range_estimates": false,
- "reason": "not available",
- "rows": 1,
- "cost": 200.0585794,
- "chosen": true
- },
- {
- "access_type": "scan",
- "resulting_rows": 100,
- "cost": 2.317382812,
- "chosen": false
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "ref",
+ "index": "a",
+ "used_range_estimates": false,
+ "reason": "not available",
+ "rows": 1,
+ "cost": 200.0585794,
+ "chosen": true
+ },
+ {
+ "access_type": "scan",
+ "resulting_rows": 100,
+ "cost": 2.317382812,
+ "chosen": false
+ }
+ ],
+ "chosen_access_method": {
+ "type": "ref",
+ "records": 1,
+ "cost": 200.0585794,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "ref",
- "records": 1,
- "cost": 200.0585794,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": ["t2"],
+ "table": "t1",
"rows_for_plan": 100,
"cost_for_plan": 242.3759623,
- "pruned_by_cost": true
+ "pruned_by_cost": true,
+ "current_cost": 242.3759623,
+ "best_cost": 242.3759623
}
]
}
@@ -1255,23 +1339,31 @@ EXPLAIN SELECT DISTINCT a FROM t1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "index_merge",
- "resulting_rows": 5,
- "cost": 6.25,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "index_merge",
+ "resulting_rows": 5,
+ "cost": 6.25,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "index_merge",
+ "records": 5,
+ "cost": 6.25,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "index_merge",
- "records": 5,
- "cost": 6.25,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 5,
"cost_for_plan": 7.25
}
@@ -1444,24 +1536,32 @@ EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "index_merge",
- "resulting_rows": 8,
- "cost": 2.2,
- "chosen": true,
- "use_tmp_table": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "index_merge",
+ "resulting_rows": 8,
+ "cost": 2.2,
+ "chosen": true,
+ "use_tmp_table": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "index_merge",
+ "records": 8,
+ "cost": 2.2,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "index_merge",
- "records": 8,
- "cost": 2.2,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 8,
"cost_for_plan": 3.8,
"cost_for_sorting": 8
@@ -1642,24 +1742,32 @@ EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "index_merge",
- "resulting_rows": 9,
- "cost": 2.35,
- "chosen": true,
- "use_tmp_table": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "index_merge",
+ "resulting_rows": 9,
+ "cost": 2.35,
+ "chosen": true,
+ "use_tmp_table": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "index_merge",
+ "records": 9,
+ "cost": 2.35,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "index_merge",
- "records": 9,
- "cost": 2.35,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 9,
"cost_for_plan": 4.15,
"cost_for_sorting": 9
@@ -1829,24 +1937,32 @@ EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "index_merge",
- "resulting_rows": 9,
- "cost": 2.35,
- "chosen": true,
- "use_tmp_table": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "index_merge",
+ "resulting_rows": 9,
+ "cost": 2.35,
+ "chosen": true,
+ "use_tmp_table": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "index_merge",
+ "records": 9,
+ "cost": 2.35,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "index_merge",
- "records": 9,
- "cost": 2.35,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 9,
"cost_for_plan": 4.15,
"cost_for_sorting": 9
@@ -2101,38 +2217,46 @@ explain select * from t1 where a=1 and b=2 order by c limit 1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "ref",
- "index": "a_c",
- "used_range_estimates": true,
- "rows": 180,
- "cost": 180.2743776,
- "chosen": true
- },
- {
- "access_type": "ref",
- "index": "a_b",
- "used_range_estimates": true,
- "rows": 21,
- "cost": 21.14242739,
- "chosen": true
- },
- {
- "type": "scan",
- "chosen": false,
- "cause": "cost"
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "ref",
+ "index": "a_c",
+ "used_range_estimates": true,
+ "rows": 180,
+ "cost": 180.2743776,
+ "chosen": true
+ },
+ {
+ "access_type": "ref",
+ "index": "a_b",
+ "used_range_estimates": true,
+ "rows": 21,
+ "cost": 21.14242739,
+ "chosen": true
+ },
+ {
+ "type": "scan",
+ "chosen": false,
+ "cause": "cost"
+ }
+ ],
+ "chosen_access_method": {
+ "type": "ref",
+ "records": 21,
+ "cost": 21.14242739,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "ref",
- "records": 21,
- "cost": 21.14242739,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 21,
"cost_for_plan": 25.34242739
}
@@ -2370,23 +2494,31 @@ select t1.a from t1 left join t2 on t1.a=t2.a {
"considered_execution_plans": [
{
"plan_prefix": ["t2"],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 4,
- "cost": 2.006835938,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 4,
+ "cost": 2.006835938,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 4,
+ "cost": 2.006835938,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 4,
- "cost": 2.006835938,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": ["t2"],
+ "table": "t1",
"rows_for_plan": 4,
"cost_for_plan": 2.806835937
}
@@ -2509,55 +2641,70 @@ explain select * from t1 left join t2 on t2.a=t1.a {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 4,
- "cost": 2.006835938,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 4,
- "cost": 2.006835938,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 4,
- "cost_for_plan": 2.806835937,
- "rest_of_plan": [
+ "get_costs_for_tables": [
{
- "plan_prefix": ["t1"],
- "table": "t2",
"best_access_path": {
+ "table": "t1",
"considered_access_paths": [
{
- "access_type": "eq_ref",
- "index": "PRIMARY",
- "rows": 1,
- "cost": 4,
- "chosen": true
- },
- {
"access_type": "scan",
- "resulting_rows": 2,
- "cost": 8.017578125,
- "chosen": false
+ "resulting_rows": 4,
+ "cost": 2.006835938,
+ "chosen": true
}
],
"chosen_access_method": {
- "type": "eq_ref",
- "records": 1,
- "cost": 4,
+ "type": "scan",
+ "records": 4,
+ "cost": 2.006835938,
"uses_join_buffering": false
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
+ "rows_for_plan": 4,
+ "cost_for_plan": 2.806835937,
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t1"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t2",
+ "considered_access_paths": [
+ {
+ "access_type": "eq_ref",
+ "index": "PRIMARY",
+ "rows": 1,
+ "cost": 4,
+ "chosen": true
+ },
+ {
+ "access_type": "scan",
+ "resulting_rows": 2,
+ "cost": 8.017578125,
+ "chosen": false
+ }
+ ],
+ "chosen_access_method": {
+ "type": "eq_ref",
+ "records": 1,
+ "cost": 4,
+ "uses_join_buffering": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t1"],
+ "table": "t2",
"rows_for_plan": 4,
- "cost_for_plan": 7.606835937,
- "pruned_by_hanging_leaf": true
+ "cost_for_plan": 7.606835937
}
]
}
@@ -2722,23 +2869,31 @@ explain select t1.a from t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and
"considered_execution_plans": [
{
"plan_prefix": ["t3", "t2"],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 4,
- "cost": 2.006835938,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 4,
+ "cost": 2.006835938,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 4,
+ "cost": 2.006835938,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 4,
- "cost": 2.006835938,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": ["t3", "t2"],
+ "table": "t1",
"rows_for_plan": 4,
"cost_for_plan": 2.806835937
}
@@ -2929,23 +3084,31 @@ explain extended select * from t1 where a in (select pk from t10) {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t10",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 10,
- "cost": 2.021972656,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t10",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 10,
+ "cost": 2.021972656,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 10,
+ "cost": 2.021972656,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 10,
- "cost": 2.021972656,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t10",
"rows_for_plan": 10,
"cost_for_plan": 4.021972656
}
@@ -2958,31 +3121,29 @@ explain extended select * from t1 where a in (select pk from t10) {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.006591797,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.006591797,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.006591797,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.006591797,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 3,
- "cost_for_plan": 2.606591797,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ },
{
- "plan_prefix": ["t1"],
- "table": "t10",
"best_access_path": {
+ "table": "t10",
"considered_access_paths": [
{
"access_type": "scan",
@@ -2995,9 +3156,46 @@ explain extended select * from t1 where a in (select pk from t10) {
"type": "scan",
"records": 10,
"cost": 2.021972656,
- "uses_join_buffering": true
+ "uses_join_buffering": false
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
+ "rows_for_plan": 3,
+ "cost_for_plan": 2.606591797,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t1"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t10",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 10,
+ "cost": 2.021972656,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 10,
+ "cost": 2.021972656,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t1"],
+ "table": "t10",
"rows_for_plan": 30,
"cost_for_plan": 10.62856445,
"semijoin_strategy_choice": [
@@ -3026,22 +3224,6 @@ explain extended select * from t1 where a in (select pk from t10) {
{
"plan_prefix": [],
"table": "t10",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 10,
- "cost": 2.021972656,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 10,
- "cost": 2.021972656,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 10,
"cost_for_plan": 4.021972656,
"semijoin_strategy_choice": [],
@@ -3387,50 +3569,57 @@ explain select * from t1 where pk = 2 and a=5 and b=1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "ref",
- "index": "pk",
- "used_range_estimates": true,
- "rows": 1,
- "cost": 1.125585794,
- "chosen": true
- },
- {
- "access_type": "ref",
- "index": "pk_a",
- "used_range_estimates": true,
- "rows": 1,
- "cost": 1.125829876,
- "chosen": false,
- "cause": "cost"
- },
- {
- "access_type": "ref",
- "index": "pk_a_b",
- "used_range_estimates": true,
- "rows": 1,
- "cost": 0.126073957,
- "chosen": true
- },
- {
- "type": "scan",
- "chosen": false,
- "cause": "cost"
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "ref",
+ "index": "pk",
+ "used_range_estimates": true,
+ "rows": 1,
+ "cost": 1.125585794,
+ "chosen": true
+ },
+ {
+ "access_type": "ref",
+ "index": "pk_a",
+ "used_range_estimates": true,
+ "rows": 1,
+ "cost": 1.125829876,
+ "chosen": false,
+ "cause": "cost"
+ },
+ {
+ "access_type": "ref",
+ "index": "pk_a_b",
+ "used_range_estimates": true,
+ "rows": 1,
+ "cost": 0.126073957,
+ "chosen": true
+ },
+ {
+ "type": "scan",
+ "chosen": false,
+ "cause": "cost"
+ }
+ ],
+ "chosen_access_method": {
+ "type": "ref",
+ "records": 1,
+ "cost": 0.126073957,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "ref",
- "records": 1,
- "cost": 0.126073957,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 1,
- "cost_for_plan": 0.326073957,
- "pruned_by_hanging_leaf": true
+ "cost_for_plan": 0.326073957
}
]
},
@@ -3540,23 +3729,31 @@ select f1(a) from t1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 4,
- "cost": 2.006835938,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 4,
+ "cost": 2.006835938,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 4,
+ "cost": 2.006835938,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 4,
- "cost": 2.006835938,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 4,
"cost_for_plan": 2.806835937
}
@@ -3636,23 +3833,31 @@ select f2(a) from t1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 4,
- "cost": 2.006835938,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 4,
+ "cost": 2.006835938,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 4,
+ "cost": 2.006835938,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 4,
- "cost": 2.006835938,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 4,
"cost_for_plan": 2.806835937
}
@@ -3700,7 +3905,7 @@ a
2
select length(trace) from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
length(trace)
-2092
+2360
set optimizer_trace_max_mem_size=100;
select * from t1;
a
@@ -3714,7 +3919,7 @@ select * from t1 {
"join_preparation": {
"select_id": 1,
"steps": [
- 1992 0
+ 2260 0
set optimizer_trace_max_mem_size=0;
select * from t1;
a
@@ -3722,7 +3927,7 @@ a
2
select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE;
QUERY TRACE MISSING_BYTES_BEYOND_MAX_MEM_SIZE INSUFFICIENT_PRIVILEGES
-select * from t1 2092 0
+select * from t1 2360 0
drop table t1;
set optimizer_trace='enabled=off';
set @@optimizer_trace_max_mem_size= @save_optimizer_trace_max_mem_size;
@@ -4018,112 +4223,140 @@ explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t0",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "range",
- "resulting_rows": 3,
- "cost": 0.746757383,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "range",
- "records": 3,
- "cost": 0.746757383,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 3,
- "cost_for_plan": 1.346757383,
- "rest_of_plan": [
+ "get_costs_for_tables": [
{
- "plan_prefix": ["t0"],
- "table": "t1",
"best_access_path": {
+ "table": "t0",
"considered_access_paths": [
{
- "access_type": "ref",
- "index": "a",
- "used_range_estimates": false,
- "reason": "not better than ref estimates",
- "rows": 1,
- "cost": 3.001757383,
+ "access_type": "range",
+ "resulting_rows": 3,
+ "cost": 0.746757383,
"chosen": true
- },
+ }
+ ],
+ "chosen_access_method": {
+ "type": "range",
+ "records": 3,
+ "cost": 0.746757383,
+ "uses_join_buffering": false
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
{
- "type": "scan",
- "chosen": false,
- "cause": "cost"
+ "access_type": "range",
+ "resulting_rows": 3,
+ "cost": 0.746757383,
+ "chosen": true
}
],
"chosen_access_method": {
- "type": "ref",
- "records": 1,
- "cost": 3.001757383,
+ "type": "range",
+ "records": 3,
+ "cost": 0.746757383,
"uses_join_buffering": false
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t0",
+ "rows_for_plan": 3,
+ "cost_for_plan": 1.346757383,
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t0"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "ref",
+ "index": "a",
+ "used_range_estimates": false,
+ "reason": "not better than ref estimates",
+ "rows": 1,
+ "cost": 3.001757383,
+ "chosen": true
+ },
+ {
+ "type": "scan",
+ "chosen": false,
+ "cause": "cost"
+ }
+ ],
+ "chosen_access_method": {
+ "type": "ref",
+ "records": 1,
+ "cost": 3.001757383,
+ "uses_join_buffering": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t0"],
+ "table": "t1",
"rows_for_plan": 3,
- "cost_for_plan": 4.948514767,
- "pruned_by_hanging_leaf": true
+ "cost_for_plan": 4.948514767
}
]
},
{
"plan_prefix": [],
"table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "range",
- "resulting_rows": 3,
- "cost": 0.746757383,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "range",
- "records": 3,
- "cost": 0.746757383,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 3,
"cost_for_plan": 1.346757383,
"rest_of_plan": [
{
"plan_prefix": ["t1"],
- "table": "t0",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "ref",
- "index": "a",
- "rec_per_key_stats_missing": true,
- "used_range_estimates": false,
- "reason": "not better than ref estimates",
- "rows": 2,
- "cost": 3.003514767,
- "chosen": true
- },
- {
- "type": "scan",
- "chosen": false,
- "cause": "cost"
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t0",
+ "considered_access_paths": [
+ {
+ "access_type": "ref",
+ "index": "a",
+ "rec_per_key_stats_missing": true,
+ "used_range_estimates": false,
+ "reason": "not better than ref estimates",
+ "rows": 2,
+ "cost": 3.003514767,
+ "chosen": true
+ },
+ {
+ "type": "scan",
+ "chosen": false,
+ "cause": "cost"
+ }
+ ],
+ "chosen_access_method": {
+ "type": "ref",
+ "records": 2,
+ "cost": 3.003514767,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "ref",
- "records": 2,
- "cost": 3.003514767,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": ["t1"],
+ "table": "t0",
"rows_for_plan": 6,
"cost_for_plan": 5.55027215,
- "pruned_by_cost": true
+ "pruned_by_cost": true,
+ "current_cost": 5.55027215,
+ "best_cost": 4.948514767
}
]
}
@@ -4248,23 +4481,31 @@ explain select * from (select rand() from t1)q {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 3,
"cost_for_plan": 2.605126953
}
@@ -4312,23 +4553,31 @@ explain select * from (select rand() from t1)q {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "<derived2>",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 3,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "<derived2>",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 3,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 3,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 3,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "<derived2>",
"rows_for_plan": 3,
"cost_for_plan": 3.6
}
@@ -4518,30 +4767,29 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t_inner_1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 3,
- "cost_for_plan": 2.605126953,
- "rest_of_plan": [
+ },
{
- "plan_prefix": ["t_inner_1"],
- "table": "t_inner_2",
"best_access_path": {
+ "table": "t_inner_2",
"considered_access_paths": [
{
"access_type": "scan",
@@ -4554,9 +4802,45 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan",
"records": 3,
"cost": 2.005126953,
- "uses_join_buffering": true
+ "uses_join_buffering": false
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t_inner_1",
+ "rows_for_plan": 3,
+ "cost_for_plan": 2.605126953,
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_inner_1"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_inner_1"],
+ "table": "t_inner_2",
"rows_for_plan": 9,
"cost_for_plan": 6.410253906
}
@@ -4565,22 +4849,6 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"plan_prefix": [],
"table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 3,
"cost_for_plan": 2.605126953,
"pruned_by_heuristic": true
@@ -4594,31 +4862,29 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 3,
- "cost_for_plan": 2.605126953,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ },
{
- "plan_prefix": ["t1"],
- "table": "t_inner_1",
"best_access_path": {
+ "table": "t_inner_1",
"considered_access_paths": [
{
"access_type": "scan",
@@ -4631,17 +4897,44 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"type": "scan",
"records": 3,
"cost": 2.005126953,
- "uses_join_buffering": true
+ "uses_join_buffering": false
}
- },
- "rows_for_plan": 9,
- "cost_for_plan": 6.410253906,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
+ "rows_for_plan": 3,
+ "cost_for_plan": 2.605126953,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t1"],
+ "get_costs_for_tables": [
{
- "plan_prefix": ["t1", "t_inner_1"],
- "table": "t_inner_2",
"best_access_path": {
+ "table": "t_inner_1",
"considered_access_paths": [
{
"access_type": "scan",
@@ -4656,7 +4949,63 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
"cost": 2.005126953,
"uses_join_buffering": true
}
- },
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t1"],
+ "table": "t_inner_1",
+ "rows_for_plan": 9,
+ "cost_for_plan": 6.410253906,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t1", "t_inner_1"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t1", "t_inner_1"],
+ "table": "t_inner_2",
"rows_for_plan": 27,
"cost_for_plan": 13.81538086,
"semijoin_strategy_choice": [
@@ -4685,22 +5034,6 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"plan_prefix": ["t1"],
"table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 9,
"cost_for_plan": 6.410253906,
"semijoin_strategy_choice": [],
@@ -4711,22 +5044,6 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"plan_prefix": [],
"table": "t_inner_1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 3,
"cost_for_plan": 2.605126953,
"semijoin_strategy_choice": [],
@@ -4735,22 +5052,6 @@ explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_
{
"plan_prefix": [],
"table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 3,
"cost_for_plan": 2.605126953,
"semijoin_strategy_choice": [],
@@ -5048,31 +5349,29 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t_outer_1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_outer_1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 3,
- "cost_for_plan": 2.605126953,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ },
{
- "plan_prefix": ["t_outer_1"],
- "table": "t_inner_1",
"best_access_path": {
+ "table": "t_inner_1",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5085,17 +5384,120 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan",
"records": 3,
"cost": 2.005126953,
- "uses_join_buffering": true
+ "uses_join_buffering": false
}
- },
- "rows_for_plan": 9,
- "cost_for_plan": 6.410253906,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": false
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_outer_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": false
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t_outer_1",
+ "rows_for_plan": 3,
+ "cost_for_plan": 2.605126953,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
{
- "plan_prefix": ["t_outer_1", "t_inner_1"],
- "table": "t_inner_2",
"best_access_path": {
+ "table": "t_inner_2",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5110,29 +5512,137 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 81,
- "cost_for_plan": 24.62563477,
- "semijoin_strategy_choice": [
- {
- "strategy": "FirstMatch",
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_outer_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
"records": 3,
- "read_time": 44.75893555
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1"],
+ "table": "t_outer_2",
+ "rows_for_plan": 27,
+ "cost_for_plan": 10.02050781,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
},
{
- "strategy": "DuplicateWeedout",
- "records": 3,
- "read_time": 37.22563477
+ "best_access_path": {
+ "table": "t_inner_1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
},
{
- "chosen_strategy": "DuplicateWeedout"
- }
- ],
- "rest_of_plan": [
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
{
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
- "table": "t_outer_2",
"best_access_path": {
+ "table": "t_inner_3",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5147,20 +5657,42 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 27,
- "cost_for_plan": 44.64101563,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2"],
+ "table": "t_inner_1",
+ "rows_for_plan": 81,
+ "cost_for_plan": 28.22563477,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"],
+ "get_costs_for_tables": [
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_2",
- "t_outer_2"
- ],
- "table": "t_inner_4",
"best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5175,21 +5707,80 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.005126953,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 81,
- "cost_for_plan": 62.84614258,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"],
+ "table": "t_inner_2",
+ "rows_for_plan": 729,
+ "cost_for_plan": 176.0410156,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "FirstMatch",
+ "records": 27,
+ "read_time": 389.4047852
+ },
+ {
+ "strategy": "DuplicateWeedout",
+ "records": 27,
+ "read_time": 289.4410156
+ },
+ {
+ "chosen_strategy": "DuplicateWeedout"
+ }
+ ],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_2"
+ ],
+ "get_costs_for_tables": [
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_2",
- "t_outer_2",
- "t_inner_4"
- ],
- "table": "t_inner_3",
"best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5204,19 +5795,73 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_2"
+ ],
+ "table": "t_inner_4",
+ "rows_for_plan": 81,
+ "cost_for_plan": 307.6461426,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "table": "t_inner_3",
"rows_for_plan": 729,
- "cost_for_plan": 210.6615234,
+ "cost_for_plan": 455.4615234,
"semijoin_strategy_choice": [
{
"strategy": "FirstMatch",
"records": 27,
- "read_time": 424.025293
+ "read_time": 668.825293
},
{
"strategy": "DuplicateWeedout",
"records": 27,
- "read_time": 324.0615234
+ "read_time": 568.8615234
},
{
"chosen_strategy": "DuplicateWeedout"
@@ -5228,95 +5873,55 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": [
"t_outer_1",
+ "t_outer_2",
"t_inner_1",
- "t_inner_2",
- "t_outer_2"
+ "t_inner_2"
],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 243,
- "cost_for_plan": 95.25639648,
+ "cost_for_plan": 340.0563965,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
]
},
{
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
+ "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"],
"table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 9,
- "cost_for_plan": 41.03076172,
+ "rows_for_plan": 243,
+ "cost_for_plan": 78.83076172,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
"plan_prefix": [
"t_outer_1",
+ "t_outer_2",
"t_inner_1",
- "t_inner_2",
"t_inner_4"
],
- "table": "t_outer_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 81,
- "cost_for_plan": 59.24614258,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ },
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_2",
- "t_inner_4",
- "t_outer_2"
- ],
- "table": "t_inner_3",
"best_access_path": {
+ "table": "t_inner_3",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5331,57 +5936,148 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 729,
- "cost_for_plan": 207.0615234,
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_4"
+ ],
+ "table": "t_inner_2",
+ "rows_for_plan": 2187,
+ "cost_for_plan": 518.2461426,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_4",
+ "t_inner_2"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_4",
+ "t_inner_2"
+ ],
+ "table": "t_inner_3",
+ "rows_for_plan": 19683,
+ "cost_for_plan": 4456.861523,
"semijoin_strategy_choice": [
{
+ "strategy": "FirstMatch",
+ "records": 27,
+ "read_time": 9562.749707
+ },
+ {
"strategy": "DuplicateWeedout",
"records": 27,
- "read_time": 320.4615234
+ "read_time": 7413.361523
},
{
- "chosen_strategy": "DuplicateWeedout"
+ "chosen_strategy": "FirstMatch"
}
- ]
+ ],
+ "pruned_by_cost": true,
+ "current_cost": 9562.749707,
+ "best_cost": 568.8615234
}
]
},
{
"plan_prefix": [
"t_outer_1",
+ "t_outer_2",
"t_inner_1",
- "t_inner_2",
"t_inner_4"
],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 81,
- "cost_for_plan": 59.24614258,
+ "rows_for_plan": 2187,
+ "cost_for_plan": 518.2461426,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
]
},
{
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
+ "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"],
"table": "t_inner_3",
+ "rows_for_plan": 729,
+ "cost_for_plan": 176.0410156,
+ "semijoin_strategy_choice": [],
+ "pruned_by_heuristic": "min_read_time"
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2"],
+ "table": "t_inner_2",
+ "rows_for_plan": 243,
+ "cost_for_plan": 60.63588867,
+ "semijoin_strategy_choice": [],
+ "pruned_by_heuristic": true
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2"],
+ "table": "t_inner_4",
+ "rows_for_plan": 81,
+ "cost_for_plan": 28.22563477,
+ "semijoin_strategy_choice": [],
+ "pruned_by_heuristic": true
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2"],
+ "table": "t_inner_3",
+ "rows_for_plan": 243,
+ "cost_for_plan": 60.63588867,
+ "semijoin_strategy_choice": [],
+ "pruned_by_heuristic": true
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1"],
+ "table": "t_inner_1",
+ "rows_for_plan": 9,
+ "cost_for_plan": 6.410253906,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1"],
+ "get_costs_for_tables": [
+ {
"best_access_path": {
+ "table": "t_inner_2",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5396,41 +6092,11 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 27,
- "cost_for_plan": 44.64101563,
- "semijoin_strategy_choice": [],
- "pruned_by_heuristic": true
- }
- ]
- },
- {
- "plan_prefix": ["t_outer_1", "t_inner_1"],
- "table": "t_outer_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 81,
- "cost_for_plan": 24.62563477,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ },
{
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"],
- "table": "t_inner_2",
"best_access_path": {
+ "table": "t_outer_2",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5445,7 +6111,120 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1"],
+ "table": "t_outer_2",
+ "rows_for_plan": 81,
+ "cost_for_plan": 24.62563477,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"],
+ "table": "t_inner_2",
"rows_for_plan": 729,
"cost_for_plan": 172.4410156,
"semijoin_strategy_choice": [
@@ -5466,37 +6245,29 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"t_outer_2",
"t_inner_2"
],
- "table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 81,
- "cost_for_plan": 304.0461426,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ },
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_outer_2",
- "t_inner_2",
- "t_inner_4"
- ],
- "table": "t_inner_3",
"best_access_path": {
+ "table": "t_inner_3",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5511,7 +6282,61 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_2"
+ ],
+ "table": "t_inner_4",
+ "rows_for_plan": 81,
+ "cost_for_plan": 304.0461426,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "table": "t_inner_3",
"rows_for_plan": 729,
"cost_for_plan": 451.8615234,
"semijoin_strategy_choice": [
@@ -5528,8 +6353,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"chosen_strategy": "DuplicateWeedout"
}
- ],
- "pruned_by_cost": true
+ ]
}
]
},
@@ -5541,48 +6365,16 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"t_inner_2"
],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 243,
"cost_for_plan": 336.4563965,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "pruned_by_heuristic": true
}
]
},
{
"plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"],
"table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 243,
"cost_for_plan": 75.23076172,
"semijoin_strategy_choice": [],
@@ -5594,27 +6386,115 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"t_outer_2",
"t_inner_4"
],
- "table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_4"
+ ],
+ "table": "t_inner_2",
"rows_for_plan": 2187,
"cost_for_plan": 514.6461426,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_4",
+ "t_inner_2"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_outer_2",
+ "t_inner_4",
+ "t_inner_2"
+ ],
+ "table": "t_inner_3",
+ "rows_for_plan": 19683,
+ "cost_for_plan": 4453.261523,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "DuplicateWeedout",
+ "records": 27,
+ "read_time": 7409.761523
+ },
+ {
+ "chosen_strategy": "DuplicateWeedout"
+ }
+ ],
+ "pruned_by_cost": true,
+ "current_cost": 7409.761523,
+ "best_cost": 565.2615234
+ }
+ ]
},
{
"plan_prefix": [
@@ -5624,61 +6504,50 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"t_inner_4"
],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 2187,
"cost_for_plan": 514.6461426,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "pruned_by_heuristic": true
}
]
},
{
"plan_prefix": ["t_outer_1", "t_inner_1", "t_outer_2"],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 729,
"cost_for_plan": 172.4410156,
"semijoin_strategy_choice": [],
- "rest_of_plan": [
+ "pruned_by_heuristic": "min_read_time"
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1"],
+ "table": "t_inner_2",
+ "rows_for_plan": 81,
+ "cost_for_plan": 24.62563477,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "FirstMatch",
+ "records": 3,
+ "read_time": 44.75893555
+ },
+ {
+ "strategy": "DuplicateWeedout",
+ "records": 3,
+ "read_time": 37.22563477
+ },
+ {
+ "chosen_strategy": "DuplicateWeedout"
+ }
+ ],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
+ "get_costs_for_tables": [
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_outer_2",
- "t_inner_3"
- ],
- "table": "t_inner_2",
"best_access_path": {
+ "table": "t_outer_2",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5693,21 +6562,11 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 6561,
- "cost_for_plan": 1486.656396,
- "semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ }
},
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_outer_2",
- "t_inner_3"
- ],
- "table": "t_inner_4",
"best_access_path": {
+ "table": "t_inner_4",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5722,71 +6581,11 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.005126953,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 2187,
- "cost_for_plan": 611.8461426,
- "semijoin_strategy_choice": [],
- "pruned_by_cost": true
- }
- ]
- }
- ]
- },
- {
- "plan_prefix": ["t_outer_1", "t_inner_1"],
- "table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 27,
- "cost_for_plan": 13.81538086,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
- {
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"],
- "table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 243,
- "cost_for_plan": 64.43076172,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ },
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_4",
- "t_inner_2"
- ],
- "table": "t_outer_2",
"best_access_path": {
+ "table": "t_inner_3",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5801,88 +6600,292 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 2187,
- "cost_for_plan": 503.8461426,
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
+ "table": "t_outer_2",
+ "rows_for_plan": 27,
+ "cost_for_plan": 44.64101563,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_outer_2"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_outer_2"
+ ],
+ "table": "t_inner_4",
+ "rows_for_plan": 81,
+ "cost_for_plan": 62.84614258,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_outer_2",
+ "t_inner_4"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_outer_2",
+ "t_inner_4"
+ ],
+ "table": "t_inner_3",
+ "rows_for_plan": 729,
+ "cost_for_plan": 210.6615234,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "FirstMatch",
+ "records": 27,
+ "read_time": 424.025293
+ },
+ {
+ "strategy": "DuplicateWeedout",
+ "records": 27,
+ "read_time": 324.0615234
+ },
+ {
+ "chosen_strategy": "DuplicateWeedout"
+ }
+ ]
+ }
+ ]
},
{
"plan_prefix": [
"t_outer_1",
"t_inner_1",
- "t_inner_4",
- "t_inner_2"
+ "t_inner_2",
+ "t_outer_2"
],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 2187,
- "cost_for_plan": 503.8461426,
+ "rows_for_plan": 243,
+ "cost_for_plan": 95.25639648,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "pruned_by_heuristic": true
}
]
},
{
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"],
- "table": "t_outer_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 243,
- "cost_for_plan": 64.43076172,
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
+ "table": "t_inner_4",
+ "rows_for_plan": 9,
+ "cost_for_plan": 41.03076172,
"semijoin_strategy_choice": [],
- "pruned_by_heuristic": true
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_outer_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "table": "t_outer_2",
+ "rows_for_plan": 81,
+ "cost_for_plan": 59.24614258,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4",
+ "t_outer_2"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4",
+ "t_outer_2"
+ ],
+ "table": "t_inner_3",
+ "rows_for_plan": 729,
+ "cost_for_plan": 207.0615234,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "DuplicateWeedout",
+ "records": 27,
+ "read_time": 320.4615234
+ },
+ {
+ "chosen_strategy": "DuplicateWeedout"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "table": "t_inner_3",
+ "rows_for_plan": 81,
+ "cost_for_plan": 59.24614258,
+ "semijoin_strategy_choice": [],
+ "pruned_by_heuristic": true
+ }
+ ]
},
{
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"],
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 243,
- "cost_for_plan": 64.43076172,
+ "rows_for_plan": 27,
+ "cost_for_plan": 44.64101563,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
}
@@ -5890,59 +6893,17 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
},
{
"plan_prefix": ["t_outer_1", "t_inner_1"],
- "table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 81,
- "cost_for_plan": 24.62563477,
+ "table": "t_inner_4",
+ "rows_for_plan": 27,
+ "cost_for_plan": 13.81538086,
"semijoin_strategy_choice": [],
"rest_of_plan": [
{
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_3"],
- "table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 729,
- "cost_for_plan": 172.4410156,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"],
+ "get_costs_for_tables": [
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_3",
- "t_inner_2"
- ],
- "table": "t_outer_2",
"best_access_path": {
+ "table": "t_outer_2",
"considered_access_paths": [
{
"access_type": "scan",
@@ -5957,99 +6918,30 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 6561,
- "cost_for_plan": 1486.656396,
- "semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ }
},
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_3",
- "t_inner_2"
- ],
- "table": "t_inner_4",
"best_access_path": {
+ "table": "t_inner_2",
"considered_access_paths": [
{
"access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
+ "resulting_rows": 9,
+ "cost": 2.015380859,
"chosen": true
}
],
"chosen_access_method": {
"type": "scan",
- "records": 3,
- "cost": 2.005126953,
+ "records": 9,
+ "cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 2187,
- "cost_for_plan": 611.8461426,
- "semijoin_strategy_choice": [],
- "pruned_by_cost": true
- }
- ]
- },
- {
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_3"],
- "table": "t_outer_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 729,
- "cost_for_plan": 172.4410156,
- "semijoin_strategy_choice": [],
- "pruned_by_heuristic": true
- },
- {
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_3"],
- "table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 243,
- "cost_for_plan": 75.23076172,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ },
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_3",
- "t_inner_4"
- ],
- "table": "t_inner_2",
"best_access_path": {
+ "table": "t_inner_3",
"considered_access_paths": [
{
"access_type": "scan",
@@ -6064,90 +6956,128 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"],
+ "table": "t_outer_2",
+ "rows_for_plan": 243,
+ "cost_for_plan": 64.43076172,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_4",
+ "t_outer_2"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_4",
+ "t_outer_2"
+ ],
+ "table": "t_inner_2",
"rows_for_plan": 2187,
- "cost_for_plan": 514.6461426,
+ "cost_for_plan": 503.8461426,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "pruned_by_cost": true,
+ "current_cost": 503.8461426,
+ "best_cost": 320.4615234
},
{
"plan_prefix": [
"t_outer_1",
"t_inner_1",
- "t_inner_3",
- "t_inner_4"
+ "t_inner_4",
+ "t_outer_2"
],
- "table": "t_outer_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
+ "table": "t_inner_3",
"rows_for_plan": 2187,
- "cost_for_plan": 514.6461426,
+ "cost_for_plan": 503.8461426,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "pruned_by_cost": true,
+ "current_cost": 503.8461426,
+ "best_cost": 320.4615234
}
]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"],
+ "table": "t_inner_2",
+ "rows_for_plan": 243,
+ "cost_for_plan": 64.43076172,
+ "semijoin_strategy_choice": [],
+ "pruned_by_heuristic": true
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_4"],
+ "table": "t_inner_3",
+ "rows_for_plan": 243,
+ "cost_for_plan": 64.43076172,
+ "semijoin_strategy_choice": [],
+ "pruned_by_heuristic": true
}
]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1"],
+ "table": "t_inner_3",
+ "rows_for_plan": 81,
+ "cost_for_plan": 24.62563477,
+ "semijoin_strategy_choice": [],
+ "pruned_by_heuristic": true
}
]
},
{
"plan_prefix": ["t_outer_1"],
"table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 27,
- "cost_for_plan": 10.02050781,
- "semijoin_strategy_choice": [],
- "pruned_by_heuristic": true
- },
- {
- "plan_prefix": ["t_outer_1"],
- "table": "t_outer_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 27,
"cost_for_plan": 10.02050781,
"semijoin_strategy_choice": [],
@@ -6156,22 +7086,6 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": ["t_outer_1"],
"table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 9,
"cost_for_plan": 6.410253906,
"semijoin_strategy_choice": [],
@@ -6180,22 +7094,6 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": ["t_outer_1"],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 27,
"cost_for_plan": 10.02050781,
"semijoin_strategy_choice": [],
@@ -6205,71 +7103,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
},
{
"plan_prefix": [],
- "table": "t_inner_1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 3,
- "cost_for_plan": 2.605126953,
+ "table": "t_outer_2",
+ "rows_for_plan": 9,
+ "cost_for_plan": 3.815380859,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
{
"plan_prefix": [],
- "table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 9,
- "cost_for_plan": 3.815380859,
+ "table": "t_inner_1",
+ "rows_for_plan": 3,
+ "cost_for_plan": 2.605126953,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
{
"plan_prefix": [],
- "table": "t_outer_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": false
- }
- },
+ "table": "t_inner_2",
"rows_for_plan": 9,
"cost_for_plan": 3.815380859,
"semijoin_strategy_choice": [],
@@ -6278,22 +7128,6 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": [],
"table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 3,
"cost_for_plan": 2.605126953,
"semijoin_strategy_choice": [],
@@ -6302,22 +7136,6 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": [],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 9,
"cost_for_plan": 3.815380859,
"semijoin_strategy_choice": [],
@@ -6398,8 +7216,8 @@ explain select * from t1 t_outer_1,t2 t_outer_2 where t_outer_1.a in (select t_
t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t_outer_1 ALL NULL NULL NULL NULL 3
-1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
1 PRIMARY t_outer_2 ALL NULL NULL NULL NULL 9 Using join buffer (flat, BNL join)
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1
2 MATERIALIZED t_inner_1 ALL NULL NULL NULL NULL 3
2 MATERIALIZED t_inner_2 ALL NULL NULL NULL NULL 9 Using join buffer (flat, BNL join)
@@ -6620,30 +7438,29 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t_inner_1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 3,
- "cost_for_plan": 2.605126953,
- "rest_of_plan": [
+ },
{
- "plan_prefix": ["t_inner_1"],
- "table": "t_inner_2",
"best_access_path": {
+ "table": "t_inner_2",
"considered_access_paths": [
{
"access_type": "scan",
@@ -6656,9 +7473,45 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan",
"records": 9,
"cost": 2.015380859,
- "uses_join_buffering": true
+ "uses_join_buffering": false
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t_inner_1",
+ "rows_for_plan": 3,
+ "cost_for_plan": 2.605126953,
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_inner_1"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_inner_1"],
+ "table": "t_inner_2",
"rows_for_plan": 27,
"cost_for_plan": 10.02050781
}
@@ -6667,22 +7520,6 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": [],
"table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 9,
"cost_for_plan": 3.815380859,
"pruned_by_heuristic": true
@@ -6693,30 +7530,29 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 3,
- "cost_for_plan": 2.605126953,
- "rest_of_plan": [
+ },
{
- "plan_prefix": ["t_inner_4"],
- "table": "t_inner_3",
"best_access_path": {
+ "table": "t_inner_3",
"considered_access_paths": [
{
"access_type": "scan",
@@ -6729,9 +7565,45 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan",
"records": 9,
"cost": 2.015380859,
- "uses_join_buffering": true
+ "uses_join_buffering": false
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t_inner_4",
+ "rows_for_plan": 3,
+ "cost_for_plan": 2.605126953,
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_inner_4"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_inner_4"],
+ "table": "t_inner_3",
"rows_for_plan": 27,
"cost_for_plan": 10.02050781
}
@@ -6740,22 +7612,6 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": [],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 9,
"cost_for_plan": 3.815380859,
"pruned_by_heuristic": true
@@ -6769,31 +7625,29 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t_outer_1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_outer_1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 3,
- "cost_for_plan": 2.605126953,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ },
{
- "plan_prefix": ["t_outer_1"],
- "table": "t_inner_1",
"best_access_path": {
+ "table": "t_inner_1",
"considered_access_paths": [
{
"access_type": "scan",
@@ -6806,17 +7660,120 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"type": "scan",
"records": 3,
"cost": 2.005126953,
- "uses_join_buffering": true
+ "uses_join_buffering": false
}
- },
- "rows_for_plan": 9,
- "cost_for_plan": 6.410253906,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": false
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_outer_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": false
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": false
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t_outer_1",
+ "rows_for_plan": 3,
+ "cost_for_plan": 2.605126953,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1"],
+ "get_costs_for_tables": [
{
- "plan_prefix": ["t_outer_1", "t_inner_1"],
- "table": "t_inner_2",
"best_access_path": {
+ "table": "t_inner_1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
"considered_access_paths": [
{
"access_type": "scan",
@@ -6831,34 +7788,137 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 81,
- "cost_for_plan": 24.62563477,
- "semijoin_strategy_choice": [
- {
- "strategy": "FirstMatch",
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_outer_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
"records": 3,
- "read_time": 44.75893555
- },
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1"],
+ "table": "t_outer_2",
+ "rows_for_plan": 27,
+ "cost_for_plan": 10.02050781,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2"],
+ "get_costs_for_tables": [
{
- "strategy": "SJ-Materialization",
- "records": 3,
- "read_time": 8.125634766
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
},
{
- "strategy": "DuplicateWeedout",
- "records": 3,
- "read_time": 37.22563477
+ "best_access_path": {
+ "table": "t_inner_1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
},
{
- "chosen_strategy": "SJ-Materialization"
- }
- ],
- "rest_of_plan": [
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
{
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
- "table": "t_outer_2",
"best_access_path": {
+ "table": "t_inner_3",
"considered_access_paths": [
{
"access_type": "scan",
@@ -6873,20 +7933,42 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 27,
- "cost_for_plan": 15.54101562,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2"],
+ "table": "t_inner_1",
+ "rows_for_plan": 81,
+ "cost_for_plan": 28.22563477,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"],
+ "get_costs_for_tables": [
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_2",
- "t_outer_2"
- ],
- "table": "t_inner_4",
"best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
"considered_access_paths": [
{
"access_type": "scan",
@@ -6901,21 +7983,85 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.005126953,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 81,
- "cost_for_plan": 33.74614258,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"],
+ "table": "t_inner_2",
+ "rows_for_plan": 729,
+ "cost_for_plan": 176.0410156,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "FirstMatch",
+ "records": 27,
+ "read_time": 389.4047852
+ },
+ {
+ "strategy": "SJ-Materialization",
+ "records": 27,
+ "read_time": 16.74101562
+ },
+ {
+ "strategy": "DuplicateWeedout",
+ "records": 27,
+ "read_time": 289.4410156
+ },
+ {
+ "chosen_strategy": "SJ-Materialization"
+ }
+ ],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_2"
+ ],
+ "get_costs_for_tables": [
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_2",
- "t_outer_2",
- "t_inner_4"
- ],
- "table": "t_inner_3",
"best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
"considered_access_paths": [
{
"access_type": "scan",
@@ -6930,24 +8076,78 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_2"
+ ],
+ "table": "t_inner_4",
+ "rows_for_plan": 81,
+ "cost_for_plan": 34.94614258,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_outer_2",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "table": "t_inner_3",
"rows_for_plan": 729,
- "cost_for_plan": 181.5615234,
+ "cost_for_plan": 182.7615234,
"semijoin_strategy_choice": [
{
"strategy": "FirstMatch",
"records": 27,
- "read_time": 394.925293
+ "read_time": 396.125293
},
{
"strategy": "SJ-Materialization",
"records": 27,
- "read_time": 22.26152344
+ "read_time": 23.46152344
},
{
"strategy": "DuplicateWeedout",
"records": 27,
- "read_time": 294.9615234
+ "read_time": 296.1615234
},
{
"chosen_strategy": "SJ-Materialization"
@@ -6959,38 +8159,125 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": [
"t_outer_1",
+ "t_outer_2",
"t_inner_1",
- "t_inner_2",
- "t_outer_2"
+ "t_inner_2"
],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 243,
- "cost_for_plan": 66.15639648,
+ "cost_for_plan": 67.35639648,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "pruned_by_cost": true,
+ "current_cost": 67.35639648,
+ "best_cost": 23.46152344
}
]
},
{
- "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
+ "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"],
"table": "t_inner_4",
+ "rows_for_plan": 243,
+ "cost_for_plan": 78.83076172,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true,
+ "current_cost": 78.83076172,
+ "best_cost": 23.46152344
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2", "t_inner_1"],
+ "table": "t_inner_3",
+ "rows_for_plan": 729,
+ "cost_for_plan": 176.0410156,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true,
+ "current_cost": 176.0410156,
+ "best_cost": 23.46152344
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2"],
+ "table": "t_inner_2",
+ "rows_for_plan": 243,
+ "cost_for_plan": 60.63588867,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true,
+ "current_cost": 60.63588867,
+ "best_cost": 23.46152344
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2"],
+ "table": "t_inner_4",
+ "rows_for_plan": 81,
+ "cost_for_plan": 28.22563477,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true,
+ "current_cost": 28.22563477,
+ "best_cost": 23.46152344
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_outer_2"],
+ "table": "t_inner_3",
+ "rows_for_plan": 243,
+ "cost_for_plan": 60.63588867,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true,
+ "current_cost": 60.63588867,
+ "best_cost": 23.46152344
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1"],
+ "table": "t_inner_1",
+ "rows_for_plan": 9,
+ "cost_for_plan": 6.410253906,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1"],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_outer_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
"best_access_path": {
+ "table": "t_inner_4",
"considered_access_paths": [
{
"access_type": "scan",
@@ -7005,20 +8292,71 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.005126953,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 9,
- "cost_for_plan": 11.93076172,
- "semijoin_strategy_choice": [],
- "rest_of_plan": [
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1"],
+ "table": "t_outer_2",
+ "rows_for_plan": 81,
+ "cost_for_plan": 24.62563477,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true,
+ "current_cost": 24.62563477,
+ "best_cost": 23.46152344
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1"],
+ "table": "t_inner_2",
+ "rows_for_plan": 81,
+ "cost_for_plan": 24.62563477,
+ "semijoin_strategy_choice": [
+ {
+ "strategy": "FirstMatch",
+ "records": 3,
+ "read_time": 44.75893555
+ },
+ {
+ "strategy": "SJ-Materialization",
+ "records": 3,
+ "read_time": 8.125634766
+ },
+ {
+ "strategy": "DuplicateWeedout",
+ "records": 3,
+ "read_time": 37.22563477
+ },
+ {
+ "chosen_strategy": "SJ-Materialization"
+ }
+ ],
+ "rest_of_plan": [
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
+ "get_costs_for_tables": [
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_2",
- "t_inner_4"
- ],
- "table": "t_outer_2",
"best_access_path": {
+ "table": "t_outer_2",
"considered_access_paths": [
{
"access_type": "scan",
@@ -7033,21 +8371,30 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
- "rows_for_plan": 81,
- "cost_for_plan": 30.14614258,
- "semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ }
},
{
- "plan_prefix": [
- "t_outer_1",
- "t_inner_1",
- "t_inner_2",
- "t_inner_4"
- ],
- "table": "t_inner_3",
"best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
"considered_access_paths": [
{
"access_type": "scan",
@@ -7062,33 +8409,187 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"cost": 2.015380859,
"uses_join_buffering": true
}
- },
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
+ "table": "t_outer_2",
+ "rows_for_plan": 27,
+ "cost_for_plan": 15.54101562,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_outer_2"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_inner_4",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_outer_2"
+ ],
+ "table": "t_inner_4",
+ "rows_for_plan": 81,
+ "cost_for_plan": 33.74614258,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true,
+ "current_cost": 33.74614258,
+ "best_cost": 23.46152344
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_outer_2"
+ ],
+ "table": "t_inner_3",
+ "rows_for_plan": 243,
+ "cost_for_plan": 66.15639648,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true,
+ "current_cost": 66.15639648,
+ "best_cost": 23.46152344
+ }
+ ]
+ },
+ {
+ "plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
+ "table": "t_inner_4",
+ "rows_for_plan": 9,
+ "cost_for_plan": 11.93076172,
+ "semijoin_strategy_choice": [],
+ "rest_of_plan": [
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t_outer_2",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ },
+ {
+ "best_access_path": {
+ "table": "t_inner_3",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 9,
+ "cost": 2.015380859,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 9,
+ "cost": 2.015380859,
+ "uses_join_buffering": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "table": "t_outer_2",
+ "rows_for_plan": 81,
+ "cost_for_plan": 30.14614258,
+ "semijoin_strategy_choice": [],
+ "pruned_by_cost": true,
+ "current_cost": 30.14614258,
+ "best_cost": 23.46152344
+ },
+ {
+ "plan_prefix": [
+ "t_outer_1",
+ "t_inner_1",
+ "t_inner_2",
+ "t_inner_4"
+ ],
+ "table": "t_inner_3",
"rows_for_plan": 81,
"cost_for_plan": 30.14614258,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "pruned_by_cost": true,
+ "current_cost": 30.14614258,
+ "best_cost": 23.46152344
}
]
},
{
"plan_prefix": ["t_outer_1", "t_inner_1", "t_inner_2"],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 27,
"cost_for_plan": 15.54101562,
"semijoin_strategy_choice": [],
@@ -7098,47 +8599,7 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
},
{
"plan_prefix": ["t_outer_1", "t_inner_1"],
- "table": "t_outer_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 81,
- "cost_for_plan": 24.62563477,
- "semijoin_strategy_choice": [],
- "pruned_by_cost": true
- },
- {
- "plan_prefix": ["t_outer_1", "t_inner_1"],
"table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 27,
"cost_for_plan": 13.81538086,
"semijoin_strategy_choice": [],
@@ -7147,72 +8608,18 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": ["t_outer_1", "t_inner_1"],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 81,
"cost_for_plan": 24.62563477,
"semijoin_strategy_choice": [],
- "pruned_by_cost": true
+ "pruned_by_cost": true,
+ "current_cost": 24.62563477,
+ "best_cost": 23.46152344
}
]
},
{
"plan_prefix": ["t_outer_1"],
"table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
- "rows_for_plan": 27,
- "cost_for_plan": 10.02050781,
- "semijoin_strategy_choice": [],
- "pruned_by_heuristic": true
- },
- {
- "plan_prefix": ["t_outer_1"],
- "table": "t_outer_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 27,
"cost_for_plan": 10.02050781,
"semijoin_strategy_choice": [],
@@ -7221,22 +8628,6 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": ["t_outer_1"],
"table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 9,
"cost_for_plan": 6.410253906,
"semijoin_strategy_choice": [],
@@ -7245,22 +8636,6 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": ["t_outer_1"],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": true
- }
- },
"rows_for_plan": 27,
"cost_for_plan": 10.02050781,
"semijoin_strategy_choice": [],
@@ -7270,71 +8645,23 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
},
{
"plan_prefix": [],
- "table": "t_inner_1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 3,
- "cost_for_plan": 2.605126953,
+ "table": "t_outer_2",
+ "rows_for_plan": 9,
+ "cost_for_plan": 3.815380859,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
{
"plan_prefix": [],
- "table": "t_inner_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 9,
- "cost_for_plan": 3.815380859,
+ "table": "t_inner_1",
+ "rows_for_plan": 3,
+ "cost_for_plan": 2.605126953,
"semijoin_strategy_choice": [],
"pruned_by_heuristic": true
},
{
"plan_prefix": [],
- "table": "t_outer_2",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": false
- }
- },
+ "table": "t_inner_2",
"rows_for_plan": 9,
"cost_for_plan": 3.815380859,
"semijoin_strategy_choice": [],
@@ -7343,22 +8670,6 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": [],
"table": "t_inner_4",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 3,
"cost_for_plan": 2.605126953,
"semijoin_strategy_choice": [],
@@ -7367,22 +8678,6 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"plan_prefix": [],
"table": "t_inner_3",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 9,
- "cost": 2.015380859,
- "chosen": true
- }
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 9,
- "cost": 2.015380859,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 9,
"cost_for_plan": 3.815380859,
"semijoin_strategy_choice": [],
@@ -7419,8 +8714,8 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
{
"best_join_order": [
"t_outer_1",
- "<subquery2>",
"t_outer_2",
+ "<subquery2>",
"<subquery3>"
]
},
@@ -7443,19 +8738,19 @@ t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4) {
"attached": null
},
{
- "table": "t_inner_1",
+ "table": "t_outer_2",
"attached": null
},
{
- "table": "t_inner_2",
+ "table": "t_inner_1",
"attached": null
},
{
- "table": "<subquery2>",
+ "table": "t_inner_2",
"attached": null
},
{
- "table": "t_outer_2",
+ "table": "<subquery2>",
"attached": null
},
{
@@ -8065,47 +9360,44 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"plan_prefix":
[
],
- "table": "A",
- "best_access_path":
- {
- "considered_access_paths":
- [
-
+ "get_costs_for_tables":
+ [
+
+ {
+ "best_access_path":
{
- "access_type": "scan",
- "resulting_rows": 5,
- "cost": 3.017089844,
- "chosen": true
+ "table": "A",
+ "considered_access_paths":
+ [
+
+ {
+ "access_type": "scan",
+ "resulting_rows": 5,
+ "cost": 3.017089844,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method":
+ {
+ "type": "scan",
+ "records": 5,
+ "cost": 3.017089844,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method":
- {
- "type": "scan",
- "records": 5,
- "cost": 3.017089844,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 5,
- "cost_for_plan": 4.017089844,
- "rest_of_plan":
- [
+ },
{
- "plan_prefix":
- [
- "A"
- ],
- "table": "B",
"best_access_path":
{
+ "table": "B",
"considered_access_paths":
[
{
"access_type": "scan",
"resulting_rows": 800,
- "cost": 220.9863281,
+ "cost": 44.19726562,
"chosen": true
}
],
@@ -8113,10 +9405,64 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
{
"type": "scan",
"records": 800,
- "cost": 220.9863281,
+ "cost": 44.19726562,
"uses_join_buffering": false
}
- },
+ }
+ }
+ ]
+ },
+
+ {
+ "plan_prefix":
+ [
+ ],
+ "table": "A",
+ "rows_for_plan": 5,
+ "cost_for_plan": 4.017089844,
+ "rest_of_plan":
+ [
+
+ {
+ "plan_prefix":
+ [
+ "A"
+ ],
+ "get_costs_for_tables":
+ [
+
+ {
+ "best_access_path":
+ {
+ "table": "B",
+ "considered_access_paths":
+ [
+
+ {
+ "access_type": "scan",
+ "resulting_rows": 800,
+ "cost": 220.9863281,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method":
+ {
+ "type": "scan",
+ "records": 800,
+ "cost": 220.9863281,
+ "uses_join_buffering": false
+ }
+ }
+ }
+ ]
+ },
+
+ {
+ "plan_prefix":
+ [
+ "A"
+ ],
+ "table": "B",
"rows_for_plan": 4000,
"cost_for_plan": 1025.003418
}
@@ -8128,26 +9474,6 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
[
],
"table": "B",
- "best_access_path":
- {
- "considered_access_paths":
- [
-
- {
- "access_type": "scan",
- "resulting_rows": 800,
- "cost": 44.19726562,
- "chosen": true
- }
- ],
- "chosen_access_method":
- {
- "type": "scan",
- "records": 800,
- "cost": 44.19726562,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 800,
"cost_for_plan": 204.1972656,
"pruned_by_heuristic": true
@@ -8170,68 +9496,119 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"plan_prefix":
[
],
- "table": "A",
- "best_access_path":
- {
- "considered_access_paths":
- [
-
- {
- "access_type": "scan",
- "resulting_rows": 10,
- "cost": 2.017089844,
- "chosen": true
- }
- ],
- "chosen_access_method":
- {
- "type": "scan",
- "records": 10,
- "cost": 2.017089844,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 10,
- "cost_for_plan": 4.017089844,
- "rest_of_plan":
+ "get_costs_for_tables":
[
{
- "plan_prefix":
- [
- "A"
- ],
- "table": "B",
"best_access_path":
{
+ "table": "A",
"considered_access_paths":
[
{
- "access_type": "ref",
- "index": "b",
- "used_range_estimates": false,
- "reason": "not available",
- "rows": 1,
- "cost": 20.00585794,
+ "access_type": "scan",
+ "resulting_rows": 10,
+ "cost": 2.017089844,
"chosen": true
- },
+ }
+ ],
+ "chosen_access_method":
+ {
+ "type": "scan",
+ "records": 10,
+ "cost": 2.017089844,
+ "uses_join_buffering": false
+ }
+ }
+ },
+
+ {
+ "best_access_path":
+ {
+ "table": "B",
+ "considered_access_paths":
+ [
{
"access_type": "scan",
"resulting_rows": 800,
"cost": 44.19726562,
- "chosen": false
+ "chosen": true
}
],
"chosen_access_method":
{
- "type": "ref",
- "records": 1,
- "cost": 20.00585794,
+ "type": "scan",
+ "records": 800,
+ "cost": 44.19726562,
"uses_join_buffering": false
}
- },
+ }
+ }
+ ]
+ },
+
+ {
+ "plan_prefix":
+ [
+ ],
+ "table": "A",
+ "rows_for_plan": 10,
+ "cost_for_plan": 4.017089844,
+ "rest_of_plan":
+ [
+
+ {
+ "plan_prefix":
+ [
+ "A"
+ ],
+ "get_costs_for_tables":
+ [
+
+ {
+ "best_access_path":
+ {
+ "table": "B",
+ "considered_access_paths":
+ [
+
+ {
+ "access_type": "ref",
+ "index": "b",
+ "used_range_estimates": false,
+ "reason": "not available",
+ "rows": 1,
+ "cost": 20.00585794,
+ "chosen": true
+ },
+
+ {
+ "access_type": "scan",
+ "resulting_rows": 800,
+ "cost": 44.19726562,
+ "chosen": false
+ }
+ ],
+ "chosen_access_method":
+ {
+ "type": "ref",
+ "records": 1,
+ "cost": 20.00585794,
+ "uses_join_buffering": false
+ }
+ }
+ }
+ ]
+ },
+
+ {
+ "plan_prefix":
+ [
+ "A"
+ ],
+ "table": "B",
"rows_for_plan": 10,
"cost_for_plan": 26.02294779,
"selectivity": 0.8,
@@ -8245,29 +9622,11 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
[
],
"table": "B",
- "best_access_path":
- {
- "considered_access_paths":
- [
-
- {
- "access_type": "scan",
- "resulting_rows": 800,
- "cost": 44.19726562,
- "chosen": true
- }
- ],
- "chosen_access_method":
- {
- "type": "scan",
- "records": 800,
- "cost": 44.19726562,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 800,
"cost_for_plan": 204.1972656,
- "pruned_by_cost": true
+ "pruned_by_cost": true,
+ "current_cost": 204.1972656,
+ "best_cost": 26.02294779
}
]
]
@@ -8394,72 +9753,123 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
"plan_prefix":
[
],
- "table": "t1",
- "best_access_path":
- {
- "considered_access_paths":
- [
-
- {
- "access_type": "scan",
- "resulting_rows": 10,
- "cost": 2.021972656,
- "chosen": true
- }
- ],
- "chosen_access_method":
- {
- "type": "scan",
- "records": 10,
- "cost": 2.021972656,
- "uses_join_buffering": false
- }
- },
- "rows_for_plan": 10,
- "cost_for_plan": 4.021972656,
- "rest_of_plan":
+ "get_costs_for_tables":
[
{
- "plan_prefix":
- [
- "t1"
- ],
- "table": "t2",
"best_access_path":
{
+ "table": "t1",
"considered_access_paths":
[
{
- "access_type": "ref",
- "index": "a",
- "used_range_estimates": false,
- "reason": "not available",
- "rows": 1,
- "cost": 20.00585794,
+ "access_type": "scan",
+ "resulting_rows": 10,
+ "cost": 2.021972656,
"chosen": true
- },
+ }
+ ],
+ "chosen_access_method":
+ {
+ "type": "scan",
+ "records": 10,
+ "cost": 2.021972656,
+ "uses_join_buffering": false
+ }
+ }
+ },
+
+ {
+ "best_access_path":
+ {
+ "table": "t2",
+ "considered_access_paths":
+ [
{
"access_type": "scan",
"resulting_rows": 100,
"cost": 2.219726562,
- "chosen": false
+ "chosen": true,
+ "use_tmp_table": true
}
],
"chosen_access_method":
{
- "type": "ref",
- "records": 1,
- "cost": 20.00585794,
+ "type": "scan",
+ "records": 100,
+ "cost": 2.219726562,
"uses_join_buffering": false
}
- },
+ }
+ }
+ ]
+ },
+
+ {
+ "plan_prefix":
+ [
+ ],
+ "table": "t1",
+ "rows_for_plan": 10,
+ "cost_for_plan": 4.021972656,
+ "rest_of_plan":
+ [
+
+ {
+ "plan_prefix":
+ [
+ "t1"
+ ],
+ "get_costs_for_tables":
+ [
+
+ {
+ "best_access_path":
+ {
+ "table": "t2",
+ "considered_access_paths":
+ [
+
+ {
+ "access_type": "ref",
+ "index": "a",
+ "used_range_estimates": false,
+ "reason": "not available",
+ "rows": 1,
+ "cost": 20.00585794,
+ "chosen": true
+ },
+
+ {
+ "access_type": "scan",
+ "resulting_rows": 100,
+ "cost": 2.219726562,
+ "chosen": false
+ }
+ ],
+ "chosen_access_method":
+ {
+ "type": "ref",
+ "records": 1,
+ "cost": 20.00585794,
+ "uses_join_buffering": false
+ }
+ }
+ }
+ ]
+ },
+
+ {
+ "plan_prefix":
+ [
+ "t1"
+ ],
+ "table": "t2",
"rows_for_plan": 10,
"cost_for_plan": 26.0278306,
- "cost_for_sorting": 10,
- "pruned_by_hanging_leaf": true
+ "cost_for_sorting": 10
}
]
},
@@ -8469,27 +9879,6 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
[
],
"table": "t2",
- "best_access_path":
- {
- "considered_access_paths":
- [
-
- {
- "access_type": "scan",
- "resulting_rows": 100,
- "cost": 2.219726562,
- "chosen": true,
- "use_tmp_table": true
- }
- ],
- "chosen_access_method":
- {
- "type": "scan",
- "records": 100,
- "cost": 2.219726562,
- "uses_join_buffering": false
- }
- },
"rows_for_plan": 100,
"cost_for_plan": 22.21972656,
"rest_of_plan":
@@ -8500,40 +9889,56 @@ JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans'))
[
"t2"
],
- "table": "t1",
- "best_access_path":
- {
- "considered_access_paths":
- [
-
- {
- "access_type": "ref",
- "index": "a",
- "used_range_estimates": false,
- "reason": "not available",
- "rows": 1,
- "cost": 200.0585794,
- "chosen": true
- },
-
+ "get_costs_for_tables":
+ [
+
+ {
+ "best_access_path":
{
- "access_type": "scan",
- "resulting_rows": 10,
- "cost": 2.021972656,
- "chosen": true
+ "table": "t1",
+ "considered_access_paths":
+ [
+
+ {
+ "access_type": "ref",
+ "index": "a",
+ "used_range_estimates": false,
+ "reason": "not available",
+ "rows": 1,
+ "cost": 200.0585794,
+ "chosen": true
+ },
+
+ {
+ "access_type": "scan",
+ "resulting_rows": 10,
+ "cost": 2.021972656,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method":
+ {
+ "type": "scan",
+ "records": 10,
+ "cost": 2.021972656,
+ "uses_join_buffering": true
+ }
}
- ],
- "chosen_access_method":
- {
- "type": "scan",
- "records": 10,
- "cost": 2.021972656,
- "uses_join_buffering": true
}
- },
+ ]
+ },
+
+ {
+ "plan_prefix":
+ [
+ "t2"
+ ],
+ "table": "t1",
"rows_for_plan": 1000,
"cost_for_plan": 224.2416992,
- "pruned_by_cost": true
+ "pruned_by_cost": true,
+ "current_cost": 224.2416992,
+ "best_cost": 36.0278306
}
]
}
@@ -8761,23 +10166,31 @@ select count(*) from seq_1_to_10000000 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "seq_1_to_10000000",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 10000000,
- "cost": 10000000,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "seq_1_to_10000000",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 10000000,
+ "cost": 10000000,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 10000000,
+ "cost": 10000000,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 10000000,
- "cost": 10000000,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "seq_1_to_10000000",
"rows_for_plan": 10000000,
"cost_for_plan": 12000000
}
@@ -8948,7 +10361,7 @@ set @path= (select json_search(@trace, 'one', 'no predicate for first keypart'))
set @sub_path= substr(@path, 2, locate('.best_access_path', @path)-2);
select @sub_path;
@sub_path
-$.steps[1].join_optimization.steps[4].considered_execution_plans[0].rest_of_plan[0]
+$.steps[1].join_optimization.steps[4].considered_execution_plans[1].rest_of_plan[0].get_costs_for_tables[0]
select
json_detailed(json_extract(
@trace,
@@ -9151,36 +10564,49 @@ json_detailed(json_extract(trace, '$**.choose_best_splitting'))
"plan_prefix":
[
],
- "table": "t2",
- "best_access_path":
- {
- "considered_access_paths":
- [
-
- {
- "access_type": "ref",
- "index": "idx_a",
- "used_range_estimates": false,
- "reason": "not available",
- "rows": 1.8367,
- "cost": 2.000585794,
- "chosen": true
- },
-
+ "get_costs_for_tables":
+ [
+
+ {
+ "best_access_path":
{
- "type": "scan",
- "chosen": false,
- "cause": "cost"
+ "table": "t2",
+ "considered_access_paths":
+ [
+
+ {
+ "access_type": "ref",
+ "index": "idx_a",
+ "used_range_estimates": false,
+ "reason": "not available",
+ "rows": 1.8367,
+ "cost": 2.000585794,
+ "chosen": true
+ },
+
+ {
+ "type": "scan",
+ "chosen": false,
+ "cause": "cost"
+ }
+ ],
+ "chosen_access_method":
+ {
+ "type": "ref",
+ "records": 1.8367,
+ "cost": 2.000585794,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method":
- {
- "type": "ref",
- "records": 1.8367,
- "cost": 2.000585794,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+
+ {
+ "plan_prefix":
+ [
+ ],
+ "table": "t2",
"rows_for_plan": 1.8367,
"cost_for_plan": 2.367925794,
"cost_for_sorting": 1.8367
@@ -9258,5 +10684,5 @@ left(trace, 100)
"select_id": 1,
"steps": [
-# End of 10.6 tests
set optimizer_trace='enabled=off';
+# End of 10.6 tests
diff --git a/mysql-test/main/opt_trace.test b/mysql-test/main/opt_trace.test
index e98964c2830..d07afb2dfce 100644
--- a/mysql-test/main/opt_trace.test
+++ b/mysql-test/main/opt_trace.test
@@ -924,6 +924,7 @@ set optimizer_trace=0;
set statement optimizer_trace=1 for select * from seq_1_to_10 where seq<2;
--echo # The trace must not be empty:
select left(trace, 100) from information_schema.optimizer_trace;
+set optimizer_trace='enabled=off';
--echo # End of 10.6 tests
-set optimizer_trace='enabled=off';
+
diff --git a/mysql-test/main/opt_trace_index_merge.result b/mysql-test/main/opt_trace_index_merge.result
index 335e408bddd..885740d59c3 100644
--- a/mysql-test/main/opt_trace_index_merge.result
+++ b/mysql-test/main/opt_trace_index_merge.result
@@ -203,23 +203,31 @@ explain select * from t1 where a=1 or b=1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "index_merge",
- "resulting_rows": 2,
- "cost": 2.484903732,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "index_merge",
+ "resulting_rows": 2,
+ "cost": 2.484903732,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "index_merge",
+ "records": 2,
+ "cost": 2.484903732,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "index_merge",
- "records": 2,
- "cost": 2.484903732,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 2,
"cost_for_plan": 2.884903732
}
diff --git a/mysql-test/main/opt_trace_index_merge_innodb.result b/mysql-test/main/opt_trace_index_merge_innodb.result
index 590b659f40d..adb9cd5d622 100644
--- a/mysql-test/main/opt_trace_index_merge_innodb.result
+++ b/mysql-test/main/opt_trace_index_merge_innodb.result
@@ -202,33 +202,40 @@ explain select * from t1 where pk1 != 0 and key1 = 1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "ref",
- "index": "key1",
- "used_range_estimates": true,
- "rows": 1,
- "cost": 1.125146475,
- "chosen": true
- },
- {
- "type": "scan",
- "chosen": false,
- "cause": "cost"
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "ref",
+ "index": "key1",
+ "used_range_estimates": true,
+ "rows": 1,
+ "cost": 1.125146475,
+ "chosen": true
+ },
+ {
+ "type": "scan",
+ "chosen": false,
+ "cause": "cost"
+ }
+ ],
+ "chosen_access_method": {
+ "type": "ref",
+ "records": 1,
+ "cost": 1.125146475,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "ref",
- "records": 1,
- "cost": 1.125146475,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 1,
- "cost_for_plan": 1.325146475,
- "pruned_by_hanging_leaf": true
+ "cost_for_plan": 1.325146475
}
]
},
diff --git a/mysql-test/main/opt_trace_security.result b/mysql-test/main/opt_trace_security.result
index 7debcb06b46..48ca5c5e36f 100644
--- a/mysql-test/main/opt_trace_security.result
+++ b/mysql-test/main/opt_trace_security.result
@@ -89,23 +89,31 @@ select * from db1.t1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 3,
"cost_for_plan": 2.605126953
}
@@ -210,23 +218,31 @@ select * from db1.v1 {
"considered_execution_plans": [
{
"plan_prefix": [],
- "table": "t1",
- "best_access_path": {
- "considered_access_paths": [
- {
- "access_type": "scan",
- "resulting_rows": 3,
- "cost": 2.005126953,
- "chosen": true
+ "get_costs_for_tables": [
+ {
+ "best_access_path": {
+ "table": "t1",
+ "considered_access_paths": [
+ {
+ "access_type": "scan",
+ "resulting_rows": 3,
+ "cost": 2.005126953,
+ "chosen": true
+ }
+ ],
+ "chosen_access_method": {
+ "type": "scan",
+ "records": 3,
+ "cost": 2.005126953,
+ "uses_join_buffering": false
+ }
}
- ],
- "chosen_access_method": {
- "type": "scan",
- "records": 3,
- "cost": 2.005126953,
- "uses_join_buffering": false
}
- },
+ ]
+ },
+ {
+ "plan_prefix": [],
+ "table": "t1",
"rows_for_plan": 3,
"cost_for_plan": 2.605126953
}
diff --git a/mysql-test/main/opt_tvc.result b/mysql-test/main/opt_tvc.result
index 9b6d97492cd..eaf75ed7999 100644
--- a/mysql-test/main/opt_tvc.result
+++ b/mysql-test/main/opt_tvc.result
@@ -91,10 +91,10 @@ where a in (1,2) and
b in (1,5);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00
-1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 func 1 100.00
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
-4 MATERIALIZED <derived5> ALL NULL NULL NULL NULL 2 100.00
+1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 func 1 100.00
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+4 MATERIALIZED <derived5> ALL NULL NULL NULL NULL 2 100.00
5 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
@@ -112,10 +112,10 @@ from (values (1),(5)) as tvc_1
);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 6 100.00
-1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 func 1 100.00
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
-4 MATERIALIZED <derived5> ALL NULL NULL NULL NULL 2 100.00
+1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 func 1 100.00
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
+4 MATERIALIZED <derived5> ALL NULL NULL NULL NULL 2 100.00
5 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
diff --git a/mysql-test/main/partition_alter.result b/mysql-test/main/partition_alter.result
index 5a2d1ada4a4..29e239aa087 100644
--- a/mysql-test/main/partition_alter.result
+++ b/mysql-test/main/partition_alter.result
@@ -136,7 +136,7 @@ select * from t1 partition (p0);
pk
1
drop table t1;
-create or replace table t1 (pk int not null, x timestamp(6), unique u(pk, x)) engine innodb
+create or replace table t1 (pk int not null, x timestamp(6) not null, unique u(pk, x)) engine innodb
partition by key() partitions 2;
insert into t1 (pk, x) values (1, '2000-01-01 00:00'), (2, '2000-01-01 00:01');
# Same for NOT NULL UNIQUE KEY as this is actually primary key
@@ -147,7 +147,7 @@ select * from t1 partition (p0);
pk
1
drop table t1;
-create or replace table t1 (pk int, x timestamp(6), primary key (pk)) engine innodb
+create or replace table t1 (pk int, x timestamp(6) not null, primary key (pk)) engine innodb
partition by key(pk) partitions 2;
insert into t1 (pk, x) values (1, '2000-01-01 00:00'), (2, '2000-01-01 00:01');
# Inplace for DROP PRIMARY KEY when partitioned by explicit field list is allowed
diff --git a/mysql-test/main/partition_alter.test b/mysql-test/main/partition_alter.test
index a4f2d529109..827527695fa 100644
--- a/mysql-test/main/partition_alter.test
+++ b/mysql-test/main/partition_alter.test
@@ -126,7 +126,7 @@ alter table t1 drop primary key, drop column x, add primary key (pk);
select * from t1 partition (p0);
drop table t1;
-create or replace table t1 (pk int not null, x timestamp(6), unique u(pk, x)) engine innodb
+create or replace table t1 (pk int not null, x timestamp(6) not null, unique u(pk, x)) engine innodb
partition by key() partitions 2;
insert into t1 (pk, x) values (1, '2000-01-01 00:00'), (2, '2000-01-01 00:01');
--echo # Same for NOT NULL UNIQUE KEY as this is actually primary key
@@ -136,7 +136,7 @@ alter table t1 drop key u, drop column x, add unique (pk);
select * from t1 partition (p0);
drop table t1;
-create or replace table t1 (pk int, x timestamp(6), primary key (pk)) engine innodb
+create or replace table t1 (pk int, x timestamp(6) not null, primary key (pk)) engine innodb
partition by key(pk) partitions 2;
insert into t1 (pk, x) values (1, '2000-01-01 00:00'), (2, '2000-01-01 00:01');
--echo # Inplace for DROP PRIMARY KEY when partitioned by explicit field list is allowed
diff --git a/mysql-test/main/query_cache.result b/mysql-test/main/query_cache.result
index 3a81b648171..f78a6ccc388 100644
--- a/mysql-test/main/query_cache.result
+++ b/mysql-test/main/query_cache.result
@@ -2239,3 +2239,28 @@ DROP TABLE t;
restore defaults
SET GLOBAL query_cache_type= default;
SET GLOBAL query_cache_size=@save_query_cache_size;
+#
+# MDEV-29028: Queries using RANDOM_BYTES get stored in query cache
+#
+set @qcache= @@global.query_cache_type;
+set global query_cache_type= 1;
+set query_cache_type= 1;
+create table t1 (a int);
+insert into t1 values (1000);
+flush status;
+select * from information_schema.global_status where variable_name in ('Qcache_inserts','Qcache_hits') order by variable_name;
+VARIABLE_NAME VARIABLE_VALUE
+QCACHE_HITS 0
+QCACHE_INSERTS 0
+select * from information_schema.global_status where variable_name in ('Qcache_inserts','Qcache_hits') order by variable_name;
+VARIABLE_NAME VARIABLE_VALUE
+QCACHE_HITS 0
+QCACHE_INSERTS 0
+select random_bytes(1024) = random_bytes(1024) as improbable;
+improbable
+0
+drop table t1;
+set global query_cache_type= @qcache;
+#
+# End of 10.10 tests
+#
diff --git a/mysql-test/main/query_cache.test b/mysql-test/main/query_cache.test
index f3c8093d41b..8bc98fba982 100644
--- a/mysql-test/main/query_cache.test
+++ b/mysql-test/main/query_cache.test
@@ -1836,3 +1836,35 @@ DROP TABLE t;
--echo restore defaults
SET GLOBAL query_cache_type= default;
SET GLOBAL query_cache_size=@save_query_cache_size;
+
+--echo #
+--echo # MDEV-29028: Queries using RANDOM_BYTES get stored in query cache
+--echo #
+
+set @qcache= @@global.query_cache_type;
+set global query_cache_type= 1;
+set query_cache_type= 1;
+
+create table t1 (a int);
+insert into t1 values (1000);
+
+flush status;
+--let $v1 = `select hex(random_bytes(a)) from t1`
+select * from information_schema.global_status where variable_name in ('Qcache_inserts','Qcache_hits') order by variable_name;
+
+--let $v2 = `select hex(random_bytes(a)) from t1`
+select * from information_schema.global_status where variable_name in ('Qcache_inserts','Qcache_hits') order by variable_name;
+
+if ($v1 == $v2) {
+--echo highly improbable $v1 = $v2
+}
+
+select random_bytes(1024) = random_bytes(1024) as improbable;
+
+# Cleanup
+drop table t1;
+set global query_cache_type= @qcache;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/mysql-test/main/selectivity.result b/mysql-test/main/selectivity.result
index 86c151630a2..691ba1319dd 100644
--- a/mysql-test/main/selectivity.result
+++ b/mysql-test/main/selectivity.result
@@ -486,8 +486,8 @@ order by s_name
limit 10;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY supplier ALL PRIMARY,i_s_nationkey NULL NULL NULL 10 100.00 Using where; Using filesort
-1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
1 PRIMARY nation eq_ref PRIMARY PRIMARY 4 dbt3_s001.supplier.s_nationkey 1 100.00 Using where
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
2 MATERIALIZED part ALL PRIMARY NULL NULL NULL 200 100.00 Using where
2 MATERIALIZED partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey i_ps_partkey 4 dbt3_s001.part.p_partkey 3 100.00 Using where
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 100.00 Using where
@@ -1245,11 +1245,11 @@ EXPLAIN EXTENDED
SELECT * FROM language, country, continent
WHERE country_group = lang_group AND lang_group IS NULL;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE country ALL NULL NULL NULL NULL 2 50.00 Using where
-1 SIMPLE language ALL NULL NULL NULL NULL 6 16.67 Using where; Using join buffer (flat, BNL join)
+1 SIMPLE language ALL NULL NULL NULL NULL 6 16.67 Using where
+1 SIMPLE country ALL NULL NULL NULL NULL 2 50.00 Using where; Using join buffer (flat, BNL join)
1 SIMPLE continent ALL NULL NULL NULL NULL 6 100.00 Using join buffer (incremental, BNL join)
Warnings:
-Note 1003 select `test`.`language`.`lang_group` AS `lang_group`,`test`.`language`.`lang` AS `lang`,`test`.`country`.`code` AS `code`,`test`.`country`.`country_group` AS `country_group`,`test`.`continent`.`cont_group` AS `cont_group`,`test`.`continent`.`cont` AS `cont` from `test`.`language` join `test`.`country` join `test`.`continent` where `test`.`language`.`lang_group` = `test`.`country`.`country_group` and `test`.`country`.`country_group` is null
+Note 1003 select `test`.`language`.`lang_group` AS `lang_group`,`test`.`language`.`lang` AS `lang`,`test`.`country`.`code` AS `code`,`test`.`country`.`country_group` AS `country_group`,`test`.`continent`.`cont_group` AS `cont_group`,`test`.`continent`.`cont` AS `cont` from `test`.`language` join `test`.`country` join `test`.`continent` where `test`.`country`.`country_group` = `test`.`language`.`lang_group` and `test`.`language`.`lang_group` is null
set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity;
drop table language, country, continent;
set use_stat_tables=@save_use_stat_tables;
@@ -1769,8 +1769,8 @@ explain extended select t1.b,t2.a,t3.a,t3.b from t1,t2,t3
where t1.c = t2.a AND t1.d = t3.a and t1.a = 50 and t1.b <= 100;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 range a a 10 NULL 9 100.00 Using index condition; Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.d 1 100.00
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.c 1 100.00 Using index
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.d 1 100.00
Warnings:
Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t1` join `test`.`t2` join `test`.`t3` where `test`.`t2`.`a` = `test`.`t1`.`c` and `test`.`t3`.`a` = `test`.`t1`.`d` and `test`.`t1`.`a` = 50 and `test`.`t1`.`b` <= 100
select t1.b,t2.a,t3.a,t3.b from t1,t2,t3
@@ -1791,8 +1791,8 @@ explain extended select t1.b,t2.a,t3.a,t3.b from t1,t2,t3
where t1.c = t2.a AND t1.d = t3.a and t1.a = 50 and t1.b <= 100;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 range a a 10 NULL 9 9.00 Using index condition; Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.d 1 100.00
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.c 1 100.00 Using index
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.d 1 100.00
Warnings:
Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t1` join `test`.`t2` join `test`.`t3` where `test`.`t2`.`a` = `test`.`t1`.`c` and `test`.`t3`.`a` = `test`.`t1`.`d` and `test`.`t1`.`a` = 50 and `test`.`t1`.`b` <= 100
select t1.b,t2.a,t3.a,t3.b from t1,t2,t3
diff --git a/mysql-test/main/selectivity_innodb.result b/mysql-test/main/selectivity_innodb.result
index eb9b131b5a6..4f37fcddbec 100644
--- a/mysql-test/main/selectivity_innodb.result
+++ b/mysql-test/main/selectivity_innodb.result
@@ -491,8 +491,8 @@ order by s_name
limit 10;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY supplier ALL PRIMARY,i_s_nationkey NULL NULL NULL 10 100.00 Using where; Using filesort
-1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
1 PRIMARY nation eq_ref PRIMARY PRIMARY 4 dbt3_s001.supplier.s_nationkey 1 100.00 Using where
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
2 MATERIALIZED part ALL PRIMARY NULL NULL NULL 200 100.00 Using where
2 MATERIALIZED partsupp ref PRIMARY,i_ps_partkey,i_ps_suppkey PRIMARY 4 dbt3_s001.part.p_partkey 3 100.00 Using where
4 DEPENDENT SUBQUERY lineitem ref i_l_shipdate,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey i_l_suppkey_partkey 10 dbt3_s001.partsupp.ps_partkey,dbt3_s001.partsupp.ps_suppkey 8 100.00 Using where
@@ -1257,11 +1257,11 @@ EXPLAIN EXTENDED
SELECT * FROM language, country, continent
WHERE country_group = lang_group AND lang_group IS NULL;
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 SIMPLE country ALL NULL NULL NULL NULL 2 50.00 Using where
-1 SIMPLE language ALL NULL NULL NULL NULL 6 16.67 Using where; Using join buffer (flat, BNL join)
+1 SIMPLE language ALL NULL NULL NULL NULL 6 16.67 Using where
+1 SIMPLE country ALL NULL NULL NULL NULL 2 50.00 Using where; Using join buffer (flat, BNL join)
1 SIMPLE continent ALL NULL NULL NULL NULL 6 100.00 Using join buffer (incremental, BNL join)
Warnings:
-Note 1003 select `test`.`language`.`lang_group` AS `lang_group`,`test`.`language`.`lang` AS `lang`,`test`.`country`.`code` AS `code`,`test`.`country`.`country_group` AS `country_group`,`test`.`continent`.`cont_group` AS `cont_group`,`test`.`continent`.`cont` AS `cont` from `test`.`language` join `test`.`country` join `test`.`continent` where `test`.`language`.`lang_group` = `test`.`country`.`country_group` and `test`.`country`.`country_group` is null
+Note 1003 select `test`.`language`.`lang_group` AS `lang_group`,`test`.`language`.`lang` AS `lang`,`test`.`country`.`code` AS `code`,`test`.`country`.`country_group` AS `country_group`,`test`.`continent`.`cont_group` AS `cont_group`,`test`.`continent`.`cont` AS `cont` from `test`.`language` join `test`.`country` join `test`.`continent` where `test`.`country`.`country_group` = `test`.`language`.`lang_group` and `test`.`language`.`lang_group` is null
set optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity;
drop table language, country, continent;
set use_stat_tables=@save_use_stat_tables;
@@ -1781,8 +1781,8 @@ explain extended select t1.b,t2.a,t3.a,t3.b from t1,t2,t3
where t1.c = t2.a AND t1.d = t3.a and t1.a = 50 and t1.b <= 100;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 range a a 10 NULL 11 100.00 Using index condition; Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.d 1 100.00
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.c 1 100.00 Using index
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.d 1 100.00
Warnings:
Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t1` join `test`.`t2` join `test`.`t3` where `test`.`t2`.`a` = `test`.`t1`.`c` and `test`.`t3`.`a` = `test`.`t1`.`d` and `test`.`t1`.`a` = 50 and `test`.`t1`.`b` <= 100
select t1.b,t2.a,t3.a,t3.b from t1,t2,t3
@@ -1803,8 +1803,8 @@ explain extended select t1.b,t2.a,t3.a,t3.b from t1,t2,t3
where t1.c = t2.a AND t1.d = t3.a and t1.a = 50 and t1.b <= 100;
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE t1 range a a 10 NULL 11 11.00 Using index condition; Using where
-1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.d 1 100.00
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.c 1 100.00 Using index
+1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.d 1 100.00
Warnings:
Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t1` join `test`.`t2` join `test`.`t3` where `test`.`t2`.`a` = `test`.`t1`.`c` and `test`.`t3`.`a` = `test`.`t1`.`d` and `test`.`t1`.`a` = 50 and `test`.`t1`.`b` <= 100
select t1.b,t2.a,t3.a,t3.b from t1,t2,t3
diff --git a/mysql-test/main/show_check.result b/mysql-test/main/show_check.result
index 26c96a5114b..35428b34599 100644
--- a/mysql-test/main/show_check.result
+++ b/mysql-test/main/show_check.result
@@ -134,7 +134,7 @@ def information_schema TABLES TABLES AUTO_INCREMENT Auto_increment 8 21 0 Y 3689
def information_schema TABLES TABLES CREATE_TIME Create_time 12 19 0 Y 4224 0 63
def information_schema TABLES TABLES UPDATE_TIME Update_time 12 19 0 Y 4224 0 63
def information_schema TABLES TABLES CHECK_TIME Check_time 12 19 0 Y 4224 0 63
-def information_schema TABLES TABLES TABLE_COLLATION Collation 253 32 0 Y 4096 0 8
+def information_schema TABLES TABLES TABLE_COLLATION Collation 253 64 0 Y 4096 0 8
def information_schema TABLES TABLES CHECKSUM Checksum 8 21 0 Y 36896 0 63
def information_schema TABLES TABLES CREATE_OPTIONS Create_options 253 2048 0 Y 4096 0 8
def information_schema TABLES TABLES TABLE_COMMENT Comment 253 2048 0 N 4097 0 8
@@ -879,17 +879,17 @@ SHOW CHARACTER SET LIKE 'utf8mb3';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def information_schema CHARACTER_SETS CHARACTER_SETS CHARACTER_SET_NAME Charset 253 96 7 N 4097 0 33
def information_schema CHARACTER_SETS CHARACTER_SETS DESCRIPTION Description 253 180 13 N 4097 0 33
-def information_schema CHARACTER_SETS CHARACTER_SETS DEFAULT_COLLATE_NAME Default collation 253 96 18 N 4097 0 33
+def information_schema CHARACTER_SETS CHARACTER_SETS DEFAULT_COLLATE_NAME Default collation 253 192 18 N 4097 0 33
def information_schema CHARACTER_SETS CHARACTER_SETS MAXLEN Maxlen 8 3 1 N 36865 0 63
Charset Description Default collation Maxlen
utf8mb3 UTF-8 Unicode utf8mb3_general_ci 3
----------------------------------------------------------------
SHOW COLLATION LIKE 'latin1_bin';
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
-def information_schema COLLATIONS COLLATIONS COLLATION_NAME Collation 253 96 10 N 4097 0 33
-def information_schema COLLATIONS COLLATIONS CHARACTER_SET_NAME Charset 253 96 6 N 4097 0 33
-def information_schema COLLATIONS COLLATIONS ID Id 8 11 2 N 36865 0 63
-def information_schema COLLATIONS COLLATIONS IS_DEFAULT Default 253 9 0 N 4097 0 33
+def information_schema COLLATIONS COLLATIONS COLLATION_NAME Collation 253 192 10 N 4097 0 33
+def information_schema COLLATIONS COLLATIONS CHARACTER_SET_NAME Charset 253 96 6 Y 4096 0 33
+def information_schema COLLATIONS COLLATIONS ID Id 8 11 2 Y 36864 0 63
+def information_schema COLLATIONS COLLATIONS IS_DEFAULT Default 253 9 0 Y 4096 0 33
def information_schema COLLATIONS COLLATIONS IS_COMPILED Compiled 253 9 3 N 4097 0 33
def information_schema COLLATIONS COLLATIONS SORTLEN Sortlen 8 3 1 N 36865 0 63
Collation Charset Id Default Compiled Sortlen
@@ -956,7 +956,7 @@ def information_schema TABLES TABLES TABLE_NAME TABLE_NAME 253 192 2 N 4097 0 33
def information_schema TABLES TABLES TABLE_TYPE TABLE_TYPE 253 192 10 N 4097 0 33
def information_schema TABLES TABLES ENGINE ENGINE 253 192 6 Y 4096 0 33
def information_schema TABLES TABLES ROW_FORMAT ROW_FORMAT 253 30 5 Y 4096 0 33
-def information_schema TABLES TABLES TABLE_COLLATION TABLE_COLLATION 253 96 17 Y 4096 0 33
+def information_schema TABLES TABLES TABLE_COLLATION TABLE_COLLATION 253 192 17 Y 4096 0 33
def information_schema TABLES TABLES CREATE_OPTIONS CREATE_OPTIONS 253 6144 0 Y 4096 0 33
def information_schema TABLES TABLES TABLE_COMMENT TABLE_COMMENT 253 6144 0 N 4097 0 33
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE ROW_FORMAT TABLE_COLLATION CREATE_OPTIONS TABLE_COMMENT
@@ -988,7 +988,7 @@ def information_schema COLUMNS COLUMNS COLUMN_DEFAULT COLUMN_DEFAULT 252 589788
def information_schema COLUMNS COLUMNS IS_NULLABLE IS_NULLABLE 253 9 2 N 4097 0 33
def information_schema COLUMNS COLUMNS DATA_TYPE DATA_TYPE 253 192 3 N 4097 0 33
def information_schema COLUMNS COLUMNS CHARACTER_SET_NAME CHARACTER_SET_NAME 253 96 0 Y 4096 0 33
-def information_schema COLUMNS COLUMNS COLLATION_NAME COLLATION_NAME 253 96 0 Y 4096 0 33
+def information_schema COLUMNS COLUMNS COLLATION_NAME COLLATION_NAME 253 192 0 Y 4096 0 33
def information_schema COLUMNS COLUMNS COLUMN_TYPE COLUMN_TYPE 252 589815 7 N 4113 0 33
def information_schema COLUMNS COLUMNS COLUMN_KEY COLUMN_KEY 253 9 3 N 4097 0 33
def information_schema COLUMNS COLUMNS EXTRA EXTRA 253 240 0 N 4097 0 33
@@ -1025,8 +1025,8 @@ def information_schema TRIGGERS TRIGGERS CREATED Created 12 22 22 Y 4224 2 63
def information_schema TRIGGERS TRIGGERS SQL_MODE sql_mode 253 24576 89 N 4097 0 33
def information_schema TRIGGERS TRIGGERS DEFINER Definer 253 1152 14 N 4097 0 33
def information_schema TRIGGERS TRIGGERS CHARACTER_SET_CLIENT character_set_client 253 96 6 N 4097 0 33
-def information_schema TRIGGERS TRIGGERS COLLATION_CONNECTION collation_connection 253 96 6 N 4097 0 33
-def information_schema TRIGGERS TRIGGERS DATABASE_COLLATION Database Collation 253 96 17 N 4097 0 33
+def information_schema TRIGGERS TRIGGERS COLLATION_CONNECTION collation_connection 253 192 6 N 4097 0 33
+def information_schema TRIGGERS TRIGGERS DATABASE_COLLATION Database Collation 253 192 17 N 4097 0 33
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
t1_bi INSERT t1 SET @a = 1 BEFORE # STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost binary binary latin1_swedish_ci
----------------------------------------------------------------
@@ -1081,7 +1081,7 @@ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is
def View 253 192 2 N 1 39 33
def Create View 253 3072 103 N 1 39 33
def character_set_client 253 96 6 N 1 39 33
-def collation_connection 253 96 6 N 1 39 33
+def collation_connection 253 192 6 N 1 39 33
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 AS `1` binary binary
----------------------------------------------------------------
@@ -1098,7 +1098,7 @@ def information_schema VIEWS VIEWS IS_UPDATABLE IS_UPDATABLE 253 9 2 N 4097 0 33
def information_schema VIEWS VIEWS DEFINER DEFINER 253 1152 14 N 4097 0 33
def information_schema VIEWS VIEWS SECURITY_TYPE SECURITY_TYPE 253 21 7 N 4097 0 33
def information_schema VIEWS VIEWS CHARACTER_SET_CLIENT CHARACTER_SET_CLIENT 253 96 6 N 4097 0 33
-def information_schema VIEWS VIEWS COLLATION_CONNECTION COLLATION_CONNECTION 253 96 6 N 4097 0 33
+def information_schema VIEWS VIEWS COLLATION_CONNECTION COLLATION_CONNECTION 253 192 6 N 4097 0 33
def information_schema VIEWS VIEWS ALGORITHM ALGORITHM 253 30 9 N 4097 0 33
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME VIEW_DEFINITION CHECK_OPTION IS_UPDATABLE DEFINER SECURITY_TYPE CHARACTER_SET_CLIENT COLLATION_CONNECTION ALGORITHM
def test v1 select 1 AS `1` NONE NO root@localhost DEFINER binary binary UNDEFINED
@@ -1109,7 +1109,7 @@ def Procedure 253 192 2 N 1 39 33
def sql_mode 253 267 89 N 1 39 33
def Create Procedure 253 3072 59 Y 0 39 33
def character_set_client 253 96 6 N 1 39 33
-def collation_connection 253 96 6 N 1 39 33
+def collation_connection 253 192 6 N 1 39 33
def Database Collation 253 96 17 N 1 39 33
Procedure sql_mode Create Procedure character_set_client collation_connection Database Collation
p1 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
@@ -1164,7 +1164,7 @@ def Function 253 192 2 N 1 39 33
def sql_mode 253 267 89 N 1 39 33
def Create Function 253 3072 74 Y 0 39 33
def character_set_client 253 96 6 N 1 39 33
-def collation_connection 253 96 6 N 1 39 33
+def collation_connection 253 192 6 N 1 39 33
def Database Collation 253 96 17 N 1 39 33
Function sql_mode Create Function character_set_client collation_connection Database Collation
f1 STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
diff --git a/mysql-test/main/skip_grants.result b/mysql-test/main/skip_grants.result
index f21bfa1da41..fdd7be41095 100644
--- a/mysql-test/main/skip_grants.result
+++ b/mysql-test/main/skip_grants.result
@@ -137,3 +137,17 @@ drop user baz@baz;
#
# End of 10.3 tests
#
+#
+# MDEV-24815 Show "--skip-grant-tables" state in SYSTEM VARIABLES
+#
+SELECT @@skip_grant_tables AS EXPECT_1;
+EXPECT_1
+1
+# restart: --skip-skip-grant-tables
+SELECT @@skip_grant_tables AS EXPECT_0;
+EXPECT_0
+0
+# restart: --skip-grant-tables
+#
+# End of 10.10 tests
+#
diff --git a/mysql-test/main/skip_grants.test b/mysql-test/main/skip_grants.test
index 7594285aed7..b74cd41b039 100644
--- a/mysql-test/main/skip_grants.test
+++ b/mysql-test/main/skip_grants.test
@@ -160,7 +160,7 @@ alter user baz@baz identified with mysql_native_password as password("baz");
show create user baz@baz;
drop user bar@foo;
drop user baz@baz;
-# need to restart the server to restore the --skip-grant state
+# Need to restart the server to restore the "--skip-grant-tables" state
--source include/restart_mysqld.inc
--enable_ps_protocol
@@ -168,3 +168,22 @@ drop user baz@baz;
--echo #
--echo # End of 10.3 tests
--echo #
+
+--echo #
+--echo # MDEV-24815 Show "--skip-grant-tables" state in SYSTEM VARIABLES
+--echo #
+
+SELECT @@skip_grant_tables AS EXPECT_1;
+
+# Also check when the server starts without "--skip-grant-table" option
+--let $restart_parameters = "--skip-skip-grant-tables"
+--source include/restart_mysqld.inc
+SELECT @@skip_grant_tables AS EXPECT_0;
+
+# Need to restart the server to restore the "--skip-grant-tables" state
+--let $restart_parameters = "--skip-grant-tables"
+--source include/restart_mysqld.inc
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/mysql-test/main/sp-anchor-type.result b/mysql-test/main/sp-anchor-type.result
index 94e5182acb2..47bbed31e19 100644
--- a/mysql-test/main/sp-anchor-type.result
+++ b/mysql-test/main/sp-anchor-type.result
@@ -562,7 +562,7 @@ def tm6 tm6 11 17 15 Y 128 6 63
def dt0 dt0 12 19 19 Y 128 0 63
def dt3 dt3 12 23 23 Y 128 3 63
def dt6 dt6 12 26 26 Y 128 6 63
-def ts0 ts0 7 19 19 Y 9376 0 63
+def ts0 ts0 7 19 19 Y 160 0 63
def ts3 ts3 7 23 23 Y 160 3 63
def ts6 ts6 7 26 26 Y 160 6 63
bit6 0
diff --git a/mysql-test/main/ssl_7937,nossl.result b/mysql-test/main/ssl_7937,nossl.result
index 7ce4a754bf8..6ba2d23db7d 100644
--- a/mysql-test/main/ssl_7937,nossl.result
+++ b/mysql-test/main/ssl_7937,nossl.result
@@ -12,4 +12,10 @@ mysql --ssl-ca=cacert.pem --ssl-verify-server-cert -e "call test.have_ssl()"
ERROR 2026 (HY000): TLS/SSL error: SSL is required, but the server does not support it
mysql --ssl --ssl-verify-server-cert -e "call test.have_ssl()"
ERROR 2026 (HY000): TLS/SSL error: SSL is required, but the server does not support it
+#
+# MDEV-27105 --ssl option set as default for mariadb CLI
+#
+mysql -e "call test.have_ssl()"
+have_ssl
+no
drop procedure have_ssl;
diff --git a/mysql-test/main/ssl_7937.result b/mysql-test/main/ssl_7937.result
index 86180af3692..1ad3c2464ed 100644
--- a/mysql-test/main/ssl_7937.result
+++ b/mysql-test/main/ssl_7937.result
@@ -13,4 +13,10 @@ have_ssl
yes
mysql --ssl --ssl-verify-server-cert -e "call test.have_ssl()"
ERROR 2026 (HY000): TLS/SSL error: Failed to verify the server certificate
+#
+# MDEV-27105 --ssl option set as default for mariadb CLI
+#
+mysql -e "call test.have_ssl()"
+have_ssl
+yes
drop procedure have_ssl;
diff --git a/mysql-test/main/ssl_7937.test b/mysql-test/main/ssl_7937.test
index 58583a32ae3..be3d43ee4a0 100644
--- a/mysql-test/main/ssl_7937.test
+++ b/mysql-test/main/ssl_7937.test
@@ -23,4 +23,10 @@ create procedure have_ssl()
--echo mysql --ssl --ssl-verify-server-cert -e "call test.have_ssl()"
--replace_regex /TLS\/SSL error.*certificate[^\n]*/TLS\/SSL error: Failed to verify the server certificate/
--exec $MYSQL --ssl --ssl-verify-server-cert -e "call test.have_ssl()" 2>&1
+
+--echo #
+--echo # MDEV-27105 --ssl option set as default for mariadb CLI
+--echo #
+--echo mysql -e "call test.have_ssl()"
+--exec $MYSQL -e "call test.have_ssl()"
drop procedure have_ssl;
diff --git a/mysql-test/main/ssl_and_innodb.result b/mysql-test/main/ssl_and_innodb.result
index 71373fc4033..21d98908517 100644
--- a/mysql-test/main/ssl_and_innodb.result
+++ b/mysql-test/main/ssl_and_innodb.result
@@ -5,4 +5,6 @@ convert((SELECT des_decrypt(2,1) AS a FROM t1 WHERE @a:=1), signed) as d
FROM t1 ;
d
2
+Warnings:
+Note 1287 'des_decrypt' is deprecated and will be removed in a future release
DROP TABLE t1;
diff --git a/mysql-test/main/stat_tables.result b/mysql-test/main/stat_tables.result
index 22f5bfafb8e..947dcabcd77 100644
--- a/mysql-test/main/stat_tables.result
+++ b/mysql-test/main/stat_tables.result
@@ -216,8 +216,8 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE part ALL PRIMARY NULL NULL NULL 200 Using where; Using join buffer (flat, BNL join)
1 SIMPLE lineitem ref PRIMARY,i_l_suppkey_partkey,i_l_partkey,i_l_suppkey,i_l_orderkey,i_l_orderkey_quantity i_l_partkey 5 dbt3_s001.part.p_partkey 30 Using where
1 SIMPLE supplier eq_ref PRIMARY,i_s_nationkey PRIMARY 4 dbt3_s001.lineitem.l_suppkey 1 Using where
-1 SIMPLE orders eq_ref|filter PRIMARY,i_o_orderdate,i_o_custkey PRIMARY|i_o_orderdate 4|4 dbt3_s001.lineitem.l_orderkey 1 (27%) Using where; Using rowid filter
1 SIMPLE n2 eq_ref PRIMARY PRIMARY 4 dbt3_s001.supplier.s_nationkey 1
+1 SIMPLE orders eq_ref|filter PRIMARY,i_o_orderdate,i_o_custkey PRIMARY|i_o_orderdate 4|4 dbt3_s001.lineitem.l_orderkey 1 (27%) Using where; Using rowid filter
1 SIMPLE customer eq_ref PRIMARY,i_c_nationkey PRIMARY 4 dbt3_s001.orders.o_custkey 1 Using where
1 SIMPLE n1 eq_ref PRIMARY,i_n_regionkey PRIMARY 4 dbt3_s001.customer.c_nationkey 1 Using where
select o_year,
diff --git a/mysql-test/main/subselect2.result b/mysql-test/main/subselect2.result
index e6363610301..db6c85900ad 100644
--- a/mysql-test/main/subselect2.result
+++ b/mysql-test/main/subselect2.result
@@ -120,19 +120,19 @@ ALTER TABLE t2 ADD FOREIGN KEY FK_DCMNTS_FLDRS ( FOLDERID)
REFERENCES t3 (FOLDERID );
ALTER TABLE t3 ADD FOREIGN KEY FK_FLDRS_PRNTID ( PARENTID)
REFERENCES t3 (FOLDERID );
-SELECT t2.*, t4.DOCTYPENAME, t1.CONTENTSIZE,t1.MIMETYPE FROM t2 INNER JOIN t4 ON t2.DOCTYPEID = t4.DOCTYPEID LEFT OUTER JOIN t1 ON t2.DOCID = t1.DOCID WHERE t2.FOLDERID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t3.FOLDERNAME = 'Level1') AND t3.FOLDERNAME = 'Level2') AND t3.FOLDERNAME = 'Level3') AND t3.FOLDERNAME = 'CopiedFolder') AND t3.FOLDERNAME = 'Movie Reviews') AND t2.DOCNAME = 'Last Discussion';
+SELECT t2.*, t4.DOCTYPENAME, t1.CONTENTSIZE,t1.MIMETYPE FROM t2 INNER JOIN t4 ON t2.DOCTYPEID = t4.DOCTYPEID LEFT OUTER JOIN t1 ON t2.DOCID = t1.DOCID WHERE t2.FOLDERID IN(SELECT t3_a.FOLDERID FROM t3 as t3_a WHERE t3_a.PARENTID IN(SELECT t3_b.FOLDERID FROM t3 as t3_b WHERE t3_b.PARENTID IN(SELECT t3_c.FOLDERID FROM t3 as t3_c WHERE t3_c.PARENTID IN(SELECT t3_d.FOLDERID FROM t3 as t3_d WHERE t3_d.PARENTID IN(SELECT t3_e.FOLDERID FROM t3 as t3_e WHERE t3_e.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t3_e.FOLDERNAME = 'Level1') AND t3_d.FOLDERNAME = 'Level2') AND t3_c.FOLDERNAME = 'Level3') AND t3_b.FOLDERNAME = 'CopiedFolder') AND t3_a.FOLDERNAME = 'Movie Reviews') AND t2.DOCNAME = 'Last Discussion';
DOCID DOCNAME DOCTYPEID FOLDERID AUTHOR CREATED TITLE SUBTITLE DOCABSTRACT PUBLISHDATE EXPIRATIONDATE LOCKEDBY STATUS PARENTDOCID REPID MODIFIED MODIFIER PUBLISHSTATUS ORIGINATOR DOCTYPENAME CONTENTSIZE MIMETYPE
c373e9f5ad07993f3859444553544200 Last Discussion c373e9f5ad079174ff17444553544200 c373e9f5ad0796c0eca4444553544200 Goldilocks 2003-06-09 11:21:06 Title: Last Discussion NULL Setting new abstract and keeping doc checked out 2003-06-09 10:51:26 2003-06-09 10:51:26 NULL NULL NULL 03eea05112b845949f3fd03278b5fe43 2003-06-09 11:21:06 admin 0 NULL Discussion NULL NULL
-EXPLAIN SELECT t2.*, t4.DOCTYPENAME, t1.CONTENTSIZE,t1.MIMETYPE FROM t2 INNER JOIN t4 ON t2.DOCTYPEID = t4.DOCTYPEID LEFT OUTER JOIN t1 ON t2.DOCID = t1.DOCID WHERE t2.FOLDERID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t3.FOLDERNAME = 'Level1') AND t3.FOLDERNAME = 'Level2') AND t3.FOLDERNAME = 'Level3') AND t3.FOLDERNAME = 'CopiedFolder') AND t3.FOLDERNAME = 'Movie Reviews') AND t2.DOCNAME = 'Last Discussion';
+EXPLAIN SELECT t2.*, t4.DOCTYPENAME, t1.CONTENTSIZE,t1.MIMETYPE FROM t2 INNER JOIN t4 ON t2.DOCTYPEID = t4.DOCTYPEID LEFT OUTER JOIN t1 ON t2.DOCID = t1.DOCID WHERE t2.FOLDERID IN(SELECT t3_a.FOLDERID FROM t3 as t3_a WHERE t3_a.PARENTID IN(SELECT t3_b.FOLDERID FROM t3 as t3_b WHERE t3_b.PARENTID IN(SELECT t3_c.FOLDERID FROM t3 as t3_c WHERE t3_c.PARENTID IN(SELECT t3_d.FOLDERID FROM t3 as t3_d WHERE t3_d.PARENTID IN(SELECT t3_e.FOLDERID FROM t3 as t3_e WHERE t3_e.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t3_e.FOLDERNAME = 'Level1') AND t3_d.FOLDERNAME = 'Level2') AND t3_c.FOLDERNAME = 'Level3') AND t3_b.FOLDERNAME = 'CopiedFolder') AND t3_a.FOLDERNAME = 'Movie Reviews') AND t2.DOCNAME = 'Last Discussion';
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t2 ALL DDOCTYPEID_IDX,DFOLDERID_IDX NULL NULL NULL 9 Using where
-1 PRIMARY t1 eq_ref PRIMARY PRIMARY 34 test.t2.DOCID 1
1 PRIMARY t4 eq_ref PRIMARY PRIMARY 34 test.t2.DOCTYPEID 1
-1 PRIMARY t3 eq_ref PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX PRIMARY 34 test.t2.FOLDERID 1 Using where
-1 PRIMARY t3 eq_ref PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX PRIMARY 34 test.t3.PARENTID 1 Using where
-1 PRIMARY t3 eq_ref PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX PRIMARY 34 test.t3.PARENTID 1 Using where
-1 PRIMARY t3 eq_ref PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX PRIMARY 34 test.t3.PARENTID 1 Using where
-1 PRIMARY t3 ref|filter PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX FFOLDERID_IDX|CMFLDRPARNT_IDX 34|35 test.t3.PARENTID 1 (29%) Using where; Using rowid filter
+1 PRIMARY t1 eq_ref PRIMARY PRIMARY 34 test.t2.DOCID 1
+1 PRIMARY t3_a eq_ref PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX PRIMARY 34 test.t2.FOLDERID 1 Using where
+1 PRIMARY t3_b eq_ref PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX PRIMARY 34 test.t3_a.PARENTID 1 Using where
+1 PRIMARY t3_c eq_ref PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX PRIMARY 34 test.t3_b.PARENTID 1 Using where
+1 PRIMARY t3_d eq_ref PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX PRIMARY 34 test.t3_c.PARENTID 1 Using where
+1 PRIMARY t3_e ref|filter PRIMARY,FFOLDERID_IDX,CMFLDRPARNT_IDX FFOLDERID_IDX|CMFLDRPARNT_IDX 34|35 test.t3_d.PARENTID 1 (29%) Using where; Using rowid filter
drop table t1, t2, t3, t4;
CREATE TABLE t1 (a int(10) , PRIMARY KEY (a)) Engine=InnoDB;
INSERT INTO t1 VALUES (1),(2);
diff --git a/mysql-test/main/subselect2.test b/mysql-test/main/subselect2.test
index fcc39f73097..b341e516941 100644
--- a/mysql-test/main/subselect2.test
+++ b/mysql-test/main/subselect2.test
@@ -148,9 +148,9 @@ ALTER TABLE t2 ADD FOREIGN KEY FK_DCMNTS_FLDRS ( FOLDERID)
ALTER TABLE t3 ADD FOREIGN KEY FK_FLDRS_PRNTID ( PARENTID)
REFERENCES t3 (FOLDERID );
-SELECT t2.*, t4.DOCTYPENAME, t1.CONTENTSIZE,t1.MIMETYPE FROM t2 INNER JOIN t4 ON t2.DOCTYPEID = t4.DOCTYPEID LEFT OUTER JOIN t1 ON t2.DOCID = t1.DOCID WHERE t2.FOLDERID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t3.FOLDERNAME = 'Level1') AND t3.FOLDERNAME = 'Level2') AND t3.FOLDERNAME = 'Level3') AND t3.FOLDERNAME = 'CopiedFolder') AND t3.FOLDERNAME = 'Movie Reviews') AND t2.DOCNAME = 'Last Discussion';
+SELECT t2.*, t4.DOCTYPENAME, t1.CONTENTSIZE,t1.MIMETYPE FROM t2 INNER JOIN t4 ON t2.DOCTYPEID = t4.DOCTYPEID LEFT OUTER JOIN t1 ON t2.DOCID = t1.DOCID WHERE t2.FOLDERID IN(SELECT t3_a.FOLDERID FROM t3 as t3_a WHERE t3_a.PARENTID IN(SELECT t3_b.FOLDERID FROM t3 as t3_b WHERE t3_b.PARENTID IN(SELECT t3_c.FOLDERID FROM t3 as t3_c WHERE t3_c.PARENTID IN(SELECT t3_d.FOLDERID FROM t3 as t3_d WHERE t3_d.PARENTID IN(SELECT t3_e.FOLDERID FROM t3 as t3_e WHERE t3_e.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t3_e.FOLDERNAME = 'Level1') AND t3_d.FOLDERNAME = 'Level2') AND t3_c.FOLDERNAME = 'Level3') AND t3_b.FOLDERNAME = 'CopiedFolder') AND t3_a.FOLDERNAME = 'Movie Reviews') AND t2.DOCNAME = 'Last Discussion';
-EXPLAIN SELECT t2.*, t4.DOCTYPENAME, t1.CONTENTSIZE,t1.MIMETYPE FROM t2 INNER JOIN t4 ON t2.DOCTYPEID = t4.DOCTYPEID LEFT OUTER JOIN t1 ON t2.DOCID = t1.DOCID WHERE t2.FOLDERID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t3.FOLDERNAME = 'Level1') AND t3.FOLDERNAME = 'Level2') AND t3.FOLDERNAME = 'Level3') AND t3.FOLDERNAME = 'CopiedFolder') AND t3.FOLDERNAME = 'Movie Reviews') AND t2.DOCNAME = 'Last Discussion';
+EXPLAIN SELECT t2.*, t4.DOCTYPENAME, t1.CONTENTSIZE,t1.MIMETYPE FROM t2 INNER JOIN t4 ON t2.DOCTYPEID = t4.DOCTYPEID LEFT OUTER JOIN t1 ON t2.DOCID = t1.DOCID WHERE t2.FOLDERID IN(SELECT t3_a.FOLDERID FROM t3 as t3_a WHERE t3_a.PARENTID IN(SELECT t3_b.FOLDERID FROM t3 as t3_b WHERE t3_b.PARENTID IN(SELECT t3_c.FOLDERID FROM t3 as t3_c WHERE t3_c.PARENTID IN(SELECT t3_d.FOLDERID FROM t3 as t3_d WHERE t3_d.PARENTID IN(SELECT t3_e.FOLDERID FROM t3 as t3_e WHERE t3_e.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t3_e.FOLDERNAME = 'Level1') AND t3_d.FOLDERNAME = 'Level2') AND t3_c.FOLDERNAME = 'Level3') AND t3_b.FOLDERNAME = 'CopiedFolder') AND t3_a.FOLDERNAME = 'Movie Reviews') AND t2.DOCNAME = 'Last Discussion';
drop table t1, t2, t3, t4;
# End of 4.1 tests
diff --git a/mysql-test/main/subselect_mat.result b/mysql-test/main/subselect_mat.result
index 271b3c18a30..25465fe650a 100644
--- a/mysql-test/main/subselect_mat.result
+++ b/mysql-test/main/subselect_mat.result
@@ -2404,6 +2404,21 @@ id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 32 test.t1.assignment_group 1 Using where; Using index
2 MATERIALIZED t2 ref idx3,idx4 idx4 35 const 2 Using index condition; Using where
2 MATERIALIZED t3_i eq_ref PRIMARY PRIMARY 32 test.t2.ugroup 1 Using index condition; Using where
+set statement optimizer_prune_level=1 for explain SELECT t1.assignment_group
+FROM t1, t3
+WHERE t1.assignment_group = t3.sys_id AND
+t1.dispatch_group IN
+(SELECT t2.ugroup
+FROM t2, t3 t3_i
+WHERE t2.ugroup = t3_i.sys_id AND
+t3_i.type LIKE '59e22fb137032000158bbfc8bcbe5d52' AND
+t2.user = '86826bf03710200044e0bfc8bcbe5d79');
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2
+1 PRIMARY t1 ref idx1,idx2 idx1 35 test.t2.ugroup 2 Using where
+1 PRIMARY t3 eq_ref PRIMARY PRIMARY 32 test.t1.assignment_group 1 Using where; Using index
+3 MATERIALIZED t2 ref idx3,idx4 idx4 35 const 2 Using index condition; Using where
+3 MATERIALIZED t3_i eq_ref PRIMARY PRIMARY 32 test.t2.ugroup 1 Using index condition; Using where
SELECT t1.assignment_group
FROM t1, t3
WHERE t1.assignment_group = t3.sys_id AND
diff --git a/mysql-test/main/subselect_sj.result b/mysql-test/main/subselect_sj.result
index ea6180e9022..b69471edce3 100644
--- a/mysql-test/main/subselect_sj.result
+++ b/mysql-test/main/subselect_sj.result
@@ -1056,10 +1056,10 @@ AND t1.val IN (SELECT t3.val FROM t3
WHERE t3.val LIKE 'a%' OR t3.val LIKE 'e%');
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
-1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 13 func 1
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 13 func 1
-3 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using where
+1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 13 func 1
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 6 Using where
+3 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using where
SELECT *
FROM t1
WHERE t1.val IN (SELECT t2.val FROM t2
@@ -1610,9 +1610,9 @@ A.t1field IN (SELECT C.t2field FROM t2 C
WHERE C.t2field IN (SELECT D.t2field FROM t2 D));
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY A index PRIMARY PRIMARY 4 NULL 3 Using index
-1 PRIMARY B index NULL PRIMARY 4 NULL 3 Using index; Start temporary; End temporary
1 PRIMARY C eq_ref PRIMARY PRIMARY 4 test.A.t1field 1 Using index
1 PRIMARY D eq_ref PRIMARY PRIMARY 4 test.A.t1field 1 Using index
+1 PRIMARY B index NULL PRIMARY 4 NULL 3 Using index; Start temporary; End temporary
SELECT * FROM t1 A
WHERE
A.t1field IN (SELECT A.t1field FROM t2 B) AND
@@ -2179,8 +2179,8 @@ explain
SELECT * FROM t3 WHERE t3.a IN (SELECT t5.a FROM t2, t4, t5 WHERE t2.c = t5.a AND t2.b = t5.b);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t5 index a a 10 NULL 2 Using where; Using index; LooseScan
-1 PRIMARY t4 ALL NULL NULL NULL NULL 3
-1 PRIMARY t2 ref b b 5 test.t5.b 2 Using where; FirstMatch(t5)
+1 PRIMARY t2 ref b b 5 test.t5.b 2 Using where
+1 PRIMARY t4 ALL NULL NULL NULL NULL 3 FirstMatch(t5)
1 PRIMARY t3 ALL NULL NULL NULL NULL 15 Using where; Using join buffer (flat, BNL join)
SELECT * FROM t3 WHERE t3.a IN (SELECT t5.a FROM t2, t4, t5 WHERE t2.c = t5.a AND t2.b = t5.b);
a
@@ -2260,11 +2260,11 @@ alias1.c IN (SELECT SQ3_alias1.b
FROM t2 AS SQ3_alias1 STRAIGHT_JOIN t2 AS SQ3_alias2)
LIMIT 100;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY SQ3_alias1 ALL NULL NULL NULL NULL 20 Start temporary
-1 PRIMARY <derived2> ALL NULL NULL NULL NULL 20 Using where; Using join buffer (flat, BNL join)
-1 PRIMARY SQ3_alias2 index NULL PRIMARY 4 NULL 20 Using index; End temporary
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 20
1 PRIMARY alias2 ALL NULL NULL NULL NULL 20 Using join buffer (flat, BNL join)
1 PRIMARY t2 ALL NULL NULL NULL NULL 20 Using join buffer (flat, BNL join)
+1 PRIMARY SQ3_alias1 ALL NULL NULL NULL NULL 20 Using where; Start temporary
+1 PRIMARY SQ3_alias2 index NULL PRIMARY 4 NULL 20 Using index; End temporary
2 DERIVED t2 ALL NULL NULL NULL NULL 20
create table t3 as
SELECT
diff --git a/mysql-test/main/subselect_sj2.result b/mysql-test/main/subselect_sj2.result
index 727dfcc4c40..6643aa13f83 100644
--- a/mysql-test/main/subselect_sj2.result
+++ b/mysql-test/main/subselect_sj2.result
@@ -466,11 +466,20 @@ where t0.a in ( select t1.a from t1,t2 where t2.a=t0.a and
t1.b=t2.b);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t0 ALL NULL NULL NULL NULL 5 100.00 Using where
-1 PRIMARY t1 ref a a 5 test.t0.a 1 100.00 Start temporary
-1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t0.a 1 100.00 Using where; End temporary
+1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t0.a 1 100.00
+1 PRIMARY t1 ref a a 5 test.t0.a 1 100.00 Using where; FirstMatch(t2)
Warnings:
Note 1276 Field or reference 'test.t0.a' of SELECT #2 was resolved in SELECT #1
-Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) join `test`.`t0` where `test`.`t1`.`a` = `test`.`t0`.`a` and `test`.`t2`.`a` = `test`.`t0`.`a` and `test`.`t2`.`b` = `test`.`t1`.`b`
+Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) join `test`.`t0` where `test`.`t2`.`a` = `test`.`t0`.`a` and `test`.`t1`.`a` = `test`.`t0`.`a` and `test`.`t1`.`b` = `test`.`t2`.`b`
+select * from t0
+where t0.a in ( select t1.a from t1,t2 where t2.a=t0.a and
+t1.b=t2.b);
+a
+0
+1
+2
+3
+4
update t1 set a=3, b=11 where a=4;
update t2 set b=11 where a=3;
select * from t0 where t0.a in
@@ -759,10 +768,14 @@ c2 in (select 1 from t3, t2) and
c1 in (select convert(c6,char(1)) from t2);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where
-1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 Using where
1 PRIMARY t2 ALL NULL NULL NULL NULL 1
-1 PRIMARY t3 ALL NULL NULL NULL NULL 2 FirstMatch((sj-nest))
+1 PRIMARY t3 ALL NULL NULL NULL NULL 2 FirstMatch(t2)
+1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 Using where
3 MATERIALIZED t2 ALL NULL NULL NULL NULL 1
+select 1 from t2 where
+c2 in (select 1 from t3, t2) and
+c1 in (select convert(c6,char(1)) from t2);
+1
drop table t2, t3;
#
# BUG#761598: InnoDB: Error: row_search_for_mysql() is called without ha_innobase::external_lock() in maria-5.3
diff --git a/mysql-test/main/subselect_sj2.test b/mysql-test/main/subselect_sj2.test
index be2d91571e7..5b9ec409c5d 100644
--- a/mysql-test/main/subselect_sj2.test
+++ b/mysql-test/main/subselect_sj2.test
@@ -604,6 +604,9 @@ insert into t2 select * from t1;
explain extended select * from t0
where t0.a in ( select t1.a from t1,t2 where t2.a=t0.a and
t1.b=t2.b);
+select * from t0
+where t0.a in ( select t1.a from t1,t2 where t2.a=t0.a and
+t1.b=t2.b);
#
# BUG#46556 "Returning incorrect, empty results for some IN subqueries
@@ -934,6 +937,9 @@ create table t2 (c1 tinytext,c2 text,c6 timestamp) engine=innodb;
explain select 1 from t2 where
c2 in (select 1 from t3, t2) and
c1 in (select convert(c6,char(1)) from t2);
+select 1 from t2 where
+ c2 in (select 1 from t3, t2) and
+ c1 in (select convert(c6,char(1)) from t2);
drop table t2, t3;
diff --git a/mysql-test/main/subselect_sj2_jcl6.result b/mysql-test/main/subselect_sj2_jcl6.result
index 66882150ebd..83abb68ca51 100644
--- a/mysql-test/main/subselect_sj2_jcl6.result
+++ b/mysql-test/main/subselect_sj2_jcl6.result
@@ -477,11 +477,20 @@ where t0.a in ( select t1.a from t1,t2 where t2.a=t0.a and
t1.b=t2.b);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t0 ALL NULL NULL NULL NULL 5 100.00 Using where
-1 PRIMARY t1 ref a a 5 test.t0.a 1 100.00 Start temporary; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
-1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t0.a 1 100.00 Using where; End temporary; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
+1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t0.a 1 100.00 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
+1 PRIMARY t1 ref a a 5 test.t0.a 1 100.00 Using where; FirstMatch(t2); Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
Warnings:
Note 1276 Field or reference 'test.t0.a' of SELECT #2 was resolved in SELECT #1
-Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) join `test`.`t0` where `test`.`t1`.`a` = `test`.`t0`.`a` and `test`.`t2`.`a` = `test`.`t0`.`a` and `test`.`t2`.`b` = `test`.`t1`.`b`
+Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) join `test`.`t0` where `test`.`t2`.`a` = `test`.`t0`.`a` and `test`.`t1`.`a` = `test`.`t0`.`a` and `test`.`t1`.`b` = `test`.`t2`.`b`
+select * from t0
+where t0.a in ( select t1.a from t1,t2 where t2.a=t0.a and
+t1.b=t2.b);
+a
+0
+1
+2
+3
+4
update t1 set a=3, b=11 where a=4;
update t2 set b=11 where a=3;
# Not anymore:
@@ -772,10 +781,14 @@ c2 in (select 1 from t3, t2) and
c1 in (select convert(c6,char(1)) from t2);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where
-1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 Using where
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using join buffer (flat, BNL join)
-1 PRIMARY t3 ALL NULL NULL NULL NULL 2 FirstMatch((sj-nest)); Using join buffer (incremental, BNL join)
+1 PRIMARY t3 ALL NULL NULL NULL NULL 2 FirstMatch(t2); Using join buffer (incremental, BNL join)
+1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 Using where
3 MATERIALIZED t2 ALL NULL NULL NULL NULL 1
+select 1 from t2 where
+c2 in (select 1 from t3, t2) and
+c1 in (select convert(c6,char(1)) from t2);
+1
drop table t2, t3;
#
# BUG#761598: InnoDB: Error: row_search_for_mysql() is called without ha_innobase::external_lock() in maria-5.3
diff --git a/mysql-test/main/subselect_sj2_mat.result b/mysql-test/main/subselect_sj2_mat.result
index fe6bc0b9cbe..5d7e7d49da2 100644
--- a/mysql-test/main/subselect_sj2_mat.result
+++ b/mysql-test/main/subselect_sj2_mat.result
@@ -468,11 +468,20 @@ where t0.a in ( select t1.a from t1,t2 where t2.a=t0.a and
t1.b=t2.b);
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t0 ALL NULL NULL NULL NULL 5 100.00 Using where
-1 PRIMARY t1 ref a a 5 test.t0.a 1 100.00 Start temporary
-1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t0.a 1 100.00 Using where; End temporary
+1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t0.a 1 100.00
+1 PRIMARY t1 ref a a 5 test.t0.a 1 100.00 Using where; FirstMatch(t2)
Warnings:
Note 1276 Field or reference 'test.t0.a' of SELECT #2 was resolved in SELECT #1
-Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) join `test`.`t0` where `test`.`t1`.`a` = `test`.`t0`.`a` and `test`.`t2`.`a` = `test`.`t0`.`a` and `test`.`t2`.`b` = `test`.`t1`.`b`
+Note 1003 select `test`.`t0`.`a` AS `a` from `test`.`t2` semi join (`test`.`t1`) join `test`.`t0` where `test`.`t2`.`a` = `test`.`t0`.`a` and `test`.`t1`.`a` = `test`.`t0`.`a` and `test`.`t1`.`b` = `test`.`t2`.`b`
+select * from t0
+where t0.a in ( select t1.a from t1,t2 where t2.a=t0.a and
+t1.b=t2.b);
+a
+0
+1
+2
+3
+4
update t1 set a=3, b=11 where a=4;
update t2 set b=11 where a=3;
select * from t0 where t0.a in
@@ -761,10 +770,14 @@ c2 in (select 1 from t3, t2) and
c1 in (select convert(c6,char(1)) from t2);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where
-1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 Using where
1 PRIMARY t2 ALL NULL NULL NULL NULL 1
-1 PRIMARY t3 ALL NULL NULL NULL NULL 2 FirstMatch((sj-nest))
+1 PRIMARY t3 ALL NULL NULL NULL NULL 2 FirstMatch(t2)
+1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 Using where
3 MATERIALIZED t2 ALL NULL NULL NULL NULL 1
+select 1 from t2 where
+c2 in (select 1 from t3, t2) and
+c1 in (select convert(c6,char(1)) from t2);
+1
drop table t2, t3;
#
# BUG#761598: InnoDB: Error: row_search_for_mysql() is called without ha_innobase::external_lock() in maria-5.3
@@ -1481,8 +1494,8 @@ t3.cat_id IN (SELECT cat_id FROM t2) AND
t3.sack_id = 33479 AND t3.kit_id = 6;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t3 ref PRIMARY PRIMARY 5 const,const 5 Using index
-1 PRIMARY t2 ref cat_id cat_id 4 test.t3.cat_id 2 Using where; Using index; FirstMatch(t3)
-1 PRIMARY t1 eq_ref PRIMARY PRIMARY 4 test.t2.cat_id 1 Using where; Using index
+1 PRIMARY t1 eq_ref PRIMARY PRIMARY 4 test.t3.cat_id 1 Using index
+1 PRIMARY t2 ref cat_id cat_id 4 test.t3.cat_id 2 Using where; Using index; FirstMatch(t1)
SELECT count(*) FROM t1, t3
WHERE t1.cat_id = t3.cat_id AND
t3.cat_id IN (SELECT cat_id FROM t2) AND
@@ -1497,8 +1510,8 @@ t3.cat_id IN (SELECT cat_id FROM t4) AND
t3.sack_id = 33479 AND t3.kit_id = 6;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t3 ref PRIMARY PRIMARY 5 const,const 5 Using index
-1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
1 PRIMARY t1 eq_ref PRIMARY PRIMARY 4 test.t3.cat_id 1 Using index
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
2 MATERIALIZED t4 index cat_id cat_id 4 NULL 19 Using index
SELECT count(*) FROM t1, t3
WHERE t1.cat_id = t3.cat_id AND
@@ -1513,8 +1526,8 @@ t3.cat_id IN (SELECT cat_id FROM t2) AND
t3.sack_id = 33479 AND t3.kit_id = 6;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t3 ref PRIMARY PRIMARY 5 const,const 5 Using index
-1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 Using where
1 PRIMARY t1 eq_ref PRIMARY PRIMARY 4 test.t3.cat_id 1 Using index
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 Using where
2 MATERIALIZED t2 index cat_id cat_id 4 NULL 19 Using index
SELECT count(*) FROM t1, t3
WHERE t1.cat_id = t3.cat_id AND
@@ -1542,9 +1555,9 @@ EXPLAIN EXTENDED
SELECT * FROM t1 LEFT JOIN t2 ON ( b1 = a2 )
WHERE ( b1, b1 ) IN ( SELECT a4, b4 FROM t3, t4);
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY t3 ALL NULL NULL NULL NULL 2 100.00 Start temporary
-1 PRIMARY t4 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
-1 PRIMARY t1 ref idx idx 2 test.t4.a4 1 100.00 Using index; End temporary
+1 PRIMARY t4 ALL NULL NULL NULL NULL 3 100.00 Using where; Start temporary
+1 PRIMARY t1 ref idx idx 2 test.t4.a4 1 100.00 Using index
+1 PRIMARY t3 ALL NULL NULL NULL NULL 2 100.00 End temporary; Using join buffer (flat, BNL join)
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
Warnings:
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`b1` AS `b1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b2` AS `b2` from `test`.`t1` semi join (`test`.`t3` join `test`.`t4`) left join `test`.`t2` on(`test`.`t2`.`a2` = `test`.`t4`.`a4`) where `test`.`t4`.`b4` = `test`.`t4`.`a4` and `test`.`t1`.`b1` = `test`.`t4`.`a4`
@@ -1560,13 +1573,12 @@ EXPLAIN EXTENDED
SELECT * FROM t1 LEFT JOIN t2 ON ( b1 = a2 )
WHERE ( b1, b1 ) IN ( SELECT a4, b4 FROM t3, t4);
id select_type table type possible_keys key key_len ref rows filtered Extra
-1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3 100.00
+1 PRIMARY t4 ALL NULL NULL NULL NULL 3 100.00 Using where; Start temporary
1 PRIMARY t1 ref idx idx 2 test.t4.a4 1 100.00 Using index
+1 PRIMARY t3 ALL NULL NULL NULL NULL 2 100.00 End temporary; Using join buffer (flat, BNL join)
1 PRIMARY t2 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
-2 MATERIALIZED t3 ALL NULL NULL NULL NULL 2 100.00
-2 MATERIALIZED t4 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
Warnings:
-Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`b1` AS `b1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b2` AS `b2` from `test`.`t1` semi join (`test`.`t3` join `test`.`t4`) left join `test`.`t2` on(`test`.`t1`.`b1` = `test`.`t4`.`a4` and `test`.`t2`.`a2` = `test`.`t4`.`a4`) where `test`.`t4`.`b4` = `test`.`t4`.`a4` and `test`.`t1`.`b1` = `test`.`t4`.`a4`
+Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`b1` AS `b1`,`test`.`t2`.`a2` AS `a2`,`test`.`t2`.`b2` AS `b2` from `test`.`t1` semi join (`test`.`t3` join `test`.`t4`) left join `test`.`t2` on(`test`.`t2`.`a2` = `test`.`t4`.`a4`) where `test`.`t4`.`b4` = `test`.`t4`.`a4` and `test`.`t1`.`b1` = `test`.`t4`.`a4`
SELECT * FROM t1 LEFT JOIN t2 ON ( b1 = a2 )
WHERE ( b1, b1 ) IN ( SELECT a4, b4 FROM t3, t4);
a1 b1 a2 b2
@@ -1827,8 +1839,8 @@ SELECT t2.id FROM t2,t1
WHERE t2.id IN (SELECT t3.ref_id FROM t3,t1 where t3.id = t1.id) and t2.id = t1.id;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t2 index PRIMARY PRIMARY 4 NULL 30 Using index
-1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 Using where
1 PRIMARY t1 eq_ref PRIMARY PRIMARY 4 test.t2.id 1 Using index
+1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 Using where
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 14
2 MATERIALIZED t1 eq_ref PRIMARY PRIMARY 4 test.t3.id 1 Using index
SELECT t2.id FROM t2,t1
@@ -1933,19 +1945,19 @@ AND t3.id_product IN (SELECT id_product FROM t2 t2_4 WHERE t2_4.id_t2 = 34 OR t2
AND t3.id_product IN (SELECT id_product FROM t2 t2_5 WHERE t2_5.id_t2 = 29 OR t2_5.id_t2 = 28 OR t2_5.id_t2 = 26);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t3 index PRIMARY PRIMARY 4 NULL 18 Using index
-1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 4 func 1 Using where
+1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 Using where
1 PRIMARY t5 ALL NULL NULL NULL NULL 18 Using where; Using join buffer (flat, BNL join)
-1 PRIMARY <subquery6> eq_ref distinct_key distinct_key 4 func 1 Using where
1 PRIMARY t4 eq_ref PRIMARY PRIMARY 8 test.t3.id_product,const 1 Using where; Using index
-1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1 Using where
-1 PRIMARY t1 index NULL PRIMARY 8 NULL 73 Using where; Using index; Using join buffer (flat, BNL join)
-1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 func 1 Using where
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 Using where
-5 MATERIALIZED t2_4 range id_t2,id_product id_t2 5 NULL 18 Using index condition; Using where
-6 MATERIALIZED t2_5 range id_t2,id_product id_t2 5 NULL 31 Using index condition; Using where
+1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 func 1 Using where
+1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 4 func 1 Using where
+1 PRIMARY t1 index NULL PRIMARY 8 NULL 73 Using where; Using index; Using join buffer (flat, BNL join)
+1 PRIMARY <subquery6> eq_ref distinct_key distinct_key 4 func 1 Using where
3 MATERIALIZED t2_2 ref id_t2,id_product id_t2 5 const 12
-4 MATERIALIZED t2_3 range id_t2,id_product id_t2 5 NULL 33 Using index condition; Using where
2 MATERIALIZED t2_1 ALL id_t2,id_product NULL NULL NULL 223 Using where
+4 MATERIALIZED t2_3 range id_t2,id_product id_t2 5 NULL 33 Using index condition; Using where
+5 MATERIALIZED t2_4 range id_t2,id_product id_t2 5 NULL 18 Using index condition; Using where
+6 MATERIALIZED t2_5 range id_t2,id_product id_t2 5 NULL 31 Using index condition; Using where
set optimizer_switch='rowid_filter=default';
drop table t1,t2,t3,t4,t5;
set global innodb_stats_persistent= @innodb_stats_persistent_save;
diff --git a/mysql-test/main/subselect_sj_jcl6.result b/mysql-test/main/subselect_sj_jcl6.result
index bddf3fdd268..6efa3fc12b1 100644
--- a/mysql-test/main/subselect_sj_jcl6.result
+++ b/mysql-test/main/subselect_sj_jcl6.result
@@ -1067,10 +1067,10 @@ AND t1.val IN (SELECT t3.val FROM t3
WHERE t3.val LIKE 'a%' OR t3.val LIKE 'e%');
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
-1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 13 func 1
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 13 func 1
-3 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using where
+1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 13 func 1
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 6 Using where
+3 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using where
SELECT *
FROM t1
WHERE t1.val IN (SELECT t2.val FROM t2
@@ -1621,9 +1621,9 @@ A.t1field IN (SELECT C.t2field FROM t2 C
WHERE C.t2field IN (SELECT D.t2field FROM t2 D));
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY A index PRIMARY PRIMARY 4 NULL 3 Using index
-1 PRIMARY B index NULL PRIMARY 4 NULL 3 Using index; FirstMatch(A); Using join buffer (flat, BNL join)
1 PRIMARY C eq_ref PRIMARY PRIMARY 4 test.A.t1field 1 Using index
1 PRIMARY D eq_ref PRIMARY PRIMARY 4 test.A.t1field 1 Using index
+1 PRIMARY B index NULL PRIMARY 4 NULL 3 Using index; FirstMatch(D); Using join buffer (flat, BNL join)
SELECT * FROM t1 A
WHERE
A.t1field IN (SELECT A.t1field FROM t2 B) AND
@@ -2190,8 +2190,8 @@ explain
SELECT * FROM t3 WHERE t3.a IN (SELECT t5.a FROM t2, t4, t5 WHERE t2.c = t5.a AND t2.b = t5.b);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t5 index a a 10 NULL 2 Using where; Using index; LooseScan
-1 PRIMARY t4 ALL NULL NULL NULL NULL 3
-1 PRIMARY t2 ref b b 5 test.t5.b 2 Using where; FirstMatch(t5)
+1 PRIMARY t2 ref b b 5 test.t5.b 2 Using where
+1 PRIMARY t4 ALL NULL NULL NULL NULL 3 FirstMatch(t5)
1 PRIMARY t3 ALL NULL NULL NULL NULL 15 Using where; Using join buffer (flat, BNL join)
SELECT * FROM t3 WHERE t3.a IN (SELECT t5.a FROM t2, t4, t5 WHERE t2.c = t5.a AND t2.b = t5.b);
a
@@ -2271,11 +2271,11 @@ alias1.c IN (SELECT SQ3_alias1.b
FROM t2 AS SQ3_alias1 STRAIGHT_JOIN t2 AS SQ3_alias2)
LIMIT 100;
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY SQ3_alias1 ALL NULL NULL NULL NULL 20 Start temporary
-1 PRIMARY <derived2> ALL NULL NULL NULL NULL 20 Using where; Using join buffer (flat, BNL join)
-1 PRIMARY SQ3_alias2 index NULL PRIMARY 4 NULL 20 Using index; End temporary; Using join buffer (incremental, BNL join)
-1 PRIMARY alias2 ALL NULL NULL NULL NULL 20 Using join buffer (incremental, BNL join)
+1 PRIMARY <derived2> ALL NULL NULL NULL NULL 20
+1 PRIMARY alias2 ALL NULL NULL NULL NULL 20 Using join buffer (flat, BNL join)
1 PRIMARY t2 ALL NULL NULL NULL NULL 20 Using join buffer (incremental, BNL join)
+1 PRIMARY SQ3_alias1 ALL NULL NULL NULL NULL 20 Using where; Start temporary; Using join buffer (incremental, BNL join)
+1 PRIMARY SQ3_alias2 index NULL PRIMARY 4 NULL 20 Using index; End temporary; Using join buffer (incremental, BNL join)
2 DERIVED t2 ALL NULL NULL NULL NULL 20
create table t3 as
SELECT
@@ -3382,8 +3382,8 @@ SELECT * FROM t0 WHERE t0.a IN
(SELECT t1.a FROM t1, t2 WHERE t2.a=t0.a AND t1.b=t2.b);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t0 ALL NULL NULL NULL NULL 5 Using where
-1 PRIMARY t1 ref a a 5 test.t0.a 1 Start temporary; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
-1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t0.a 1 Using where; End temporary; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
+1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t0.a 1 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
+1 PRIMARY t1 ref a a 5 test.t0.a 1 Using where; Start temporary; End temporary; Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
SELECT * FROM t0 WHERE t0.a IN
(SELECT t1.a FROM t1, t2 WHERE t2.a=t0.a AND t1.b=t2.b);
a
diff --git a/mysql-test/main/subselect_sj_mat.result b/mysql-test/main/subselect_sj_mat.result
index 2cc35c1896c..61a7ff25569 100644
--- a/mysql-test/main/subselect_sj_mat.result
+++ b/mysql-test/main/subselect_sj_mat.result
@@ -332,11 +332,11 @@ where (a1, a2) in (select b1, b2 from t2 where b1 > '0') and
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
-1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 16 func,func 1 100.00
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 func,func 1 100.00
+1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 16 func,func 1 100.00
+2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
3 MATERIALIZED t2i ref it2i1,it2i2,it2i3 it2i3 18 test.t3.c1,test.t3.c2 1 100.00 Using index
-2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
Warnings:
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) semi join (`test`.`t2i` join `test`.`t3`) where `test`.`t2i`.`b1` = `test`.`t3`.`c1` and `test`.`t2i`.`b2` = `test`.`t3`.`c2` and `test`.`t2`.`b1` > '0' and `test`.`t3`.`c2` > '0'
select * from t1
@@ -353,11 +353,11 @@ where (a1, a2) in (select b1, b2 from t2i where b1 > '0') and
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1i range it1i1,it1i2,it1i3 # # # 3 100.00 #
-1 PRIMARY <subquery3> eq_ref distinct_key # # # 1 100.00 #
1 PRIMARY <subquery2> eq_ref distinct_key # # # 1 100.00 #
+1 PRIMARY <subquery3> eq_ref distinct_key # # # 1 100.00 #
+2 MATERIALIZED t2i range it2i1,it2i2,it2i3 # # # 5 100.00 #
3 MATERIALIZED t3i range it3i1,it3i2,it3i3 # # # 4 100.00 #
3 MATERIALIZED t2i ref it2i1,it2i2,it2i3 # # # 1 100.00 #
-2 MATERIALIZED t2i range it2i1,it2i2,it2i3 # # # 5 100.00 #
Warnings:
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` semi join (`test`.`t2i`) semi join (`test`.`t2i` join `test`.`t3i`) where `test`.`t2i`.`b1` = `test`.`t3i`.`c1` and `test`.`t2i`.`b2` = `test`.`t3i`.`c2` and `test`.`t2i`.`b1` > '0' and `test`.`t3i`.`c2` > '0'
select * from t1i
@@ -376,11 +376,11 @@ b2 in (select c2 from t3 where c2 LIKE '%03')) and
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
-1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 16 func,func 1 100.00
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 func,func 1 100.00
+1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 16 func,func 1 100.00
+2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
5 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
5 MATERIALIZED t2i ref it2i1,it2i2,it2i3 it2i3 18 test.t3.c1,test.t3.c2 1 100.00 Using index
-2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
4 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
Warnings:
@@ -402,15 +402,15 @@ b2 in (select c2 from t3 t3b where c2 LIKE '%03')) and
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
-1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 16 func,func 1 100.00
1 PRIMARY t2 ALL NULL NULL NULL NULL 5 100.00 Using where; Start temporary; End temporary; Using join buffer (flat, BNL join)
+1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 16 func,func 1 100.00
5 MATERIALIZED t3c ALL NULL NULL NULL NULL 4 100.00 Using where
5 MATERIALIZED t2i ref it2i1,it2i2,it2i3 it2i3 18 test.t3c.c1,test.t3c.c2 1 100.00 Using index
4 MATERIALIZED t3b ALL NULL NULL NULL NULL 4 100.00 Using where
3 DEPENDENT SUBQUERY t3a ALL NULL NULL NULL NULL 4 100.00 Using where
Warnings:
Note 1276 Field or reference 'test.t1.a1' of SELECT #3 was resolved in SELECT #1
-Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) semi join (`test`.`t2i` join `test`.`t3` `t3c`) where `test`.`t2i`.`b1` = `test`.`t3c`.`c1` and `test`.`t2`.`b1` = `test`.`t1`.`a1` and `test`.`t2i`.`b2` = `test`.`t3c`.`c2` and `test`.`t2`.`b2` = `test`.`t1`.`a2` and (<expr_cache><`test`.`t2`.`b2`,`test`.`t1`.`a1`>(<in_optimizer>(`test`.`t2`.`b2`,<exists>(/* select#3 */ select `test`.`t3a`.`c2` from `test`.`t3` `t3a` where `test`.`t3a`.`c1` = `test`.`t1`.`a1` and <cache>(`test`.`t2`.`b2`) = `test`.`t3a`.`c2`))) or <expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#4 */ select `test`.`t3b`.`c2` from `test`.`t3` `t3b` where `test`.`t3b`.`c2` like '%03' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery4>`.`c2`))))) and `test`.`t3c`.`c2` > '0'
+Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) semi join (`test`.`t2i` join `test`.`t3` `t3c`) where `test`.`t2`.`b1` = `test`.`t1`.`a1` and `test`.`t2i`.`b1` = `test`.`t3c`.`c1` and `test`.`t2`.`b2` = `test`.`t1`.`a2` and `test`.`t2i`.`b2` = `test`.`t3c`.`c2` and (<expr_cache><`test`.`t2`.`b2`,`test`.`t1`.`a1`>(<in_optimizer>(`test`.`t2`.`b2`,<exists>(/* select#3 */ select `test`.`t3a`.`c2` from `test`.`t3` `t3a` where `test`.`t3a`.`c1` = `test`.`t1`.`a1` and <cache>(`test`.`t2`.`b2`) = `test`.`t3a`.`c2`))) or <expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#4 */ select `test`.`t3b`.`c2` from `test`.`t3` `t3b` where `test`.`t3b`.`c2` like '%03' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery4>`.`c2`))))) and `test`.`t3c`.`c2` > '0'
select * from t1
where (a1, a2) in (select b1, b2 from t2
where b2 in (select c2 from t3 t3a where c1 = a1) or
@@ -435,19 +435,19 @@ where (a1, a2) in (select b1, b2 from t2i where b1 > '0') and
where (c1, c2) in (select b1, b2 from t2i where b2 > '0')));
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL # # # 3 100.00 #
-1 PRIMARY <subquery5> eq_ref distinct_key # # # 1 100.00 #
1 PRIMARY <subquery2> eq_ref distinct_key # # # 1 100.00 #
+1 PRIMARY <subquery5> eq_ref distinct_key # # # 1 100.00 #
+2 MATERIALIZED t2 ALL NULL # # # 5 100.00 #
5 MATERIALIZED t3 ALL NULL # # # 4 100.00 #
5 MATERIALIZED t2i ref it2i1,it2i2,it2i3 # # # 1 100.00 #
-2 MATERIALIZED t2 ALL NULL # # # 5 100.00 #
4 MATERIALIZED t3 ALL NULL # # # 4 100.00 #
3 MATERIALIZED t3 ALL NULL # # # 4 100.00 #
7 UNION t1i range it1i1,it1i2,it1i3 # # # 3 100.00 #
-7 UNION <subquery9> eq_ref distinct_key # # # 1 100.00 #
7 UNION <subquery8> eq_ref distinct_key # # # 1 100.00 #
+7 UNION <subquery9> eq_ref distinct_key # # # 1 100.00 #
+8 MATERIALIZED t2i range it2i1,it2i2,it2i3 # # # 5 100.00 #
9 MATERIALIZED t3i range it3i1,it3i2,it3i3 # # # 4 100.00 #
9 MATERIALIZED t2i ref it2i1,it2i2,it2i3 # # # 1 100.00 #
-8 MATERIALIZED t2i range it2i1,it2i2,it2i3 # # # 5 100.00 #
NULL UNION RESULT <union1,7> ALL NULL # # # NULL NULL #
Warnings:
Note 1003 (/* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) semi join (`test`.`t2i` join `test`.`t3`) where `test`.`t2i`.`b1` = `test`.`t3`.`c1` and `test`.`t2i`.`b2` = `test`.`t3`.`c2` and (<expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#3 */ select `test`.`t3`.`c2` from `test`.`t3` where `test`.`t3`.`c2` like '%02' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery3>`.`c2`)))) or <expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#4 */ select `test`.`t3`.`c2` from `test`.`t3` where `test`.`t3`.`c2` like '%03' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery4>`.`c2`))))) and `test`.`t3`.`c2` > '0') union (/* select#7 */ select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from `test`.`t1i` semi join (`test`.`t2i`) semi join (`test`.`t2i` join `test`.`t3i`) where `test`.`t2i`.`b1` = `test`.`t3i`.`c1` and `test`.`t2i`.`b2` = `test`.`t3i`.`c2` and `test`.`t2i`.`b1` > '0' and `test`.`t3i`.`c2` > '0')
@@ -542,15 +542,15 @@ b2 in (select c2 from t3 t3b where c2 LIKE '%03')) and
where (c1, c2) in (select b1, b2 from t2i where b2 > '0' or b2 = a2));
id select_type table type possible_keys key key_len ref rows filtered Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
+1 PRIMARY t2 ALL NULL NULL NULL NULL 5 100.00 Using where; Start temporary; End temporary; Using join buffer (flat, BNL join)
1 PRIMARY t2i ref it2i1,it2i2,it2i3 it2i3 18 test.t1.a1,test.t1.a2 1 100.00 Using index; Start temporary
1 PRIMARY t3c ALL NULL NULL NULL NULL 4 100.00 Using where; End temporary; Using join buffer (flat, BNL join)
-1 PRIMARY t2 ALL NULL NULL NULL NULL 5 100.00 Using where; Start temporary; End temporary; Using join buffer (flat, BNL join)
4 MATERIALIZED t3b ALL NULL NULL NULL NULL 4 100.00 Using where
3 DEPENDENT SUBQUERY t3a ALL NULL NULL NULL NULL 4 100.00 Using where
Warnings:
Note 1276 Field or reference 'test.t1.a1' of SELECT #3 was resolved in SELECT #1
Note 1276 Field or reference 'test.t1.a2' of SELECT #6 was resolved in SELECT #1
-Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) semi join (`test`.`t2i` join `test`.`t3` `t3c`) where `test`.`t2i`.`b1` = `test`.`t1`.`a1` and `test`.`t3c`.`c1` = `test`.`t1`.`a1` and `test`.`t2`.`b1` = `test`.`t1`.`a1` and `test`.`t2i`.`b2` = `test`.`t1`.`a2` and `test`.`t3c`.`c2` = `test`.`t1`.`a2` and `test`.`t2`.`b2` = `test`.`t1`.`a2` and (<expr_cache><`test`.`t2`.`b2`,`test`.`t1`.`a1`>(<in_optimizer>(`test`.`t2`.`b2`,<exists>(/* select#3 */ select `test`.`t3a`.`c2` from `test`.`t3` `t3a` where `test`.`t3a`.`c1` = `test`.`t1`.`a1` and <cache>(`test`.`t2`.`b2`) = `test`.`t3a`.`c2`))) or <expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#4 */ select `test`.`t3b`.`c2` from `test`.`t3` `t3b` where `test`.`t3b`.`c2` like '%03' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery4>`.`c2`)))))
+Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) semi join (`test`.`t2i` join `test`.`t3` `t3c`) where `test`.`t2`.`b1` = `test`.`t1`.`a1` and `test`.`t2i`.`b1` = `test`.`t1`.`a1` and `test`.`t3c`.`c1` = `test`.`t1`.`a1` and `test`.`t2`.`b2` = `test`.`t1`.`a2` and `test`.`t2i`.`b2` = `test`.`t1`.`a2` and `test`.`t3c`.`c2` = `test`.`t1`.`a2` and (<expr_cache><`test`.`t2`.`b2`,`test`.`t1`.`a1`>(<in_optimizer>(`test`.`t2`.`b2`,<exists>(/* select#3 */ select `test`.`t3a`.`c2` from `test`.`t3` `t3a` where `test`.`t3a`.`c1` = `test`.`t1`.`a1` and <cache>(`test`.`t2`.`b2`) = `test`.`t3a`.`c2`))) or <expr_cache><`test`.`t2`.`b2`>(<in_optimizer>(`test`.`t2`.`b2`,`test`.`t2`.`b2` in ( <materialize> (/* select#4 */ select `test`.`t3b`.`c2` from `test`.`t3` `t3b` where `test`.`t3b`.`c2` like '%03' ), <primary_index_lookup>(`test`.`t2`.`b2` in <temporary table> on distinct_key where `test`.`t2`.`b2` = `<subquery4>`.`c2`)))))
explain extended
select * from t1 where (a1, a2) in (select '1 - 01', '2 - 01');
id select_type table type possible_keys key key_len ref rows filtered Extra
@@ -2446,6 +2446,21 @@ id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 32 test.t1.assignment_group 1 Using where; Using index
2 MATERIALIZED t2 ref idx3,idx4 idx4 35 const 2 Using index condition; Using where
2 MATERIALIZED t3_i eq_ref PRIMARY PRIMARY 32 test.t2.ugroup 1 Using index condition; Using where
+set statement optimizer_prune_level=1 for explain SELECT t1.assignment_group
+FROM t1, t3
+WHERE t1.assignment_group = t3.sys_id AND
+t1.dispatch_group IN
+(SELECT t2.ugroup
+FROM t2, t3 t3_i
+WHERE t2.ugroup = t3_i.sys_id AND
+t3_i.type LIKE '59e22fb137032000158bbfc8bcbe5d52' AND
+t2.user = '86826bf03710200044e0bfc8bcbe5d79');
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2
+1 PRIMARY t1 ref idx1,idx2 idx1 35 test.t2.ugroup 2 Using where
+1 PRIMARY t3 eq_ref PRIMARY PRIMARY 32 test.t1.assignment_group 1 Using where; Using index
+3 MATERIALIZED t2 ref idx3,idx4 idx4 35 const 2 Using index condition; Using where
+3 MATERIALIZED t3_i eq_ref PRIMARY PRIMARY 32 test.t2.ugroup 1 Using index condition; Using where
SELECT t1.assignment_group
FROM t1, t3
WHERE t1.assignment_group = t3.sys_id AND
diff --git a/mysql-test/main/subselect_sj_mat.test b/mysql-test/main/subselect_sj_mat.test
index 6b343900dca..6a9c78adc52 100644
--- a/mysql-test/main/subselect_sj_mat.test
+++ b/mysql-test/main/subselect_sj_mat.test
@@ -2171,6 +2171,7 @@ eval $q;
set optimizer_switch='materialization=on';
eval explain $q;
+eval set statement optimizer_prune_level=1 for explain $q;
eval $q;
DROP TABLE t1,t2,t3;
diff --git a/mysql-test/main/subselect_sj_nonmerged.result b/mysql-test/main/subselect_sj_nonmerged.result
index 422af02c31a..a3e6c493930 100644
--- a/mysql-test/main/subselect_sj_nonmerged.result
+++ b/mysql-test/main/subselect_sj_nonmerged.result
@@ -77,8 +77,8 @@ explain select * from t4 where
t4.a in (select max(t2.a) from t1, t2 group by t2.b) and
t4.b in (select max(t2.a) from t1, t2 group by t2.b);
id select_type table type possible_keys key key_len ref rows Extra
-1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 5
-1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 5 Using join buffer (flat, BNL join)
+1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 5
+1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 5 Using join buffer (flat, BNL join)
1 PRIMARY t4 eq_ref a a 10 <subquery2>.max(t2.a),<subquery3>.max(t2.a) 1
3 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
3 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
diff --git a/mysql-test/main/system_mysql_db.result b/mysql-test/main/system_mysql_db.result
index 2c97d0c6809..b89381da5c3 100644
--- a/mysql-test/main/system_mysql_db.result
+++ b/mysql-test/main/system_mysql_db.result
@@ -154,8 +154,8 @@ proc CREATE TABLE `proc` (
`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL') NOT NULL DEFAULT '',
`comment` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`character_set_client` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `collation_connection` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `db_collation` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`aggregate` enum('NONE','GROUP') NOT NULL DEFAULT 'NONE',
PRIMARY KEY (`db`,`name`,`type`)
@@ -182,8 +182,8 @@ event CREATE TABLE `event` (
`originator` int(10) unsigned NOT NULL,
`time_zone` char(64) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'SYSTEM',
`character_set_client` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `collation_connection` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `db_collation` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
diff --git a/mysql-test/main/system_mysql_db_fix40123.result b/mysql-test/main/system_mysql_db_fix40123.result
index 57845704fa1..31a334878ec 100644
--- a/mysql-test/main/system_mysql_db_fix40123.result
+++ b/mysql-test/main/system_mysql_db_fix40123.result
@@ -14,8 +14,8 @@ Warning 1280 Name 'Host' ignored for PRIMARY key.
INSERT INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
INSERT INTO user VALUES ('localhost','','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
CREATE TABLE func ( name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User defined functions';
-CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
-CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
+CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp not null default now() on update now(), Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
+CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp not null default now() on update now(), Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
CREATE TABLE help_topic ( help_topic_id int unsigned not null, name varchar(64) not null, help_category_id smallint unsigned not null, description text not null, example text not null, url varchar(128) not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help topics';
CREATE TABLE help_category ( help_category_id smallint unsigned not null, name varchar(64) not null, parent_category_id smallint unsigned null, url varchar(128) not null, primary key (help_category_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help categories';
CREATE TABLE help_relation ( help_topic_id int unsigned not null references help_topic, help_keyword_id int unsigned not null references help_keyword, primary key (help_keyword_id, help_topic_id) ) engine=MyISAM CHARACTER SET utf8 comment='keyword-topic relation';
@@ -192,8 +192,8 @@ proc CREATE TABLE `proc` (
`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL') NOT NULL DEFAULT '',
`comment` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`character_set_client` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `collation_connection` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `db_collation` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`aggregate` enum('NONE','GROUP') NOT NULL DEFAULT 'NONE',
PRIMARY KEY (`db`,`name`,`type`)
@@ -220,8 +220,8 @@ event CREATE TABLE `event` (
`originator` int(10) unsigned NOT NULL,
`time_zone` char(64) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'SYSTEM',
`character_set_client` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `collation_connection` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `db_collation` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
diff --git a/mysql-test/main/system_mysql_db_fix40123.test b/mysql-test/main/system_mysql_db_fix40123.test
index 08aac433433..5e4672ea4e8 100644
--- a/mysql-test/main/system_mysql_db_fix40123.test
+++ b/mysql-test/main/system_mysql_db_fix40123.test
@@ -33,8 +33,8 @@ CREATE TABLE user ( Host char(60) binary DEFAULT '' NOT NULL, User char(16) bina
INSERT INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
INSERT INTO user VALUES ('localhost','','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0);
CREATE TABLE func ( name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User defined functions';
-CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
-CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
+CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp not null default now() on update now(), Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
+CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp not null default now() on update now(), Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
CREATE TABLE help_topic ( help_topic_id int unsigned not null, name varchar(64) not null, help_category_id smallint unsigned not null, description text not null, example text not null, url varchar(128) not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help topics';
CREATE TABLE help_category ( help_category_id smallint unsigned not null, name varchar(64) not null, parent_category_id smallint unsigned null, url varchar(128) not null, primary key (help_category_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help categories';
CREATE TABLE help_relation ( help_topic_id int unsigned not null references help_topic, help_keyword_id int unsigned not null references help_keyword, primary key (help_keyword_id, help_topic_id) ) engine=MyISAM CHARACTER SET utf8 comment='keyword-topic relation';
diff --git a/mysql-test/main/system_mysql_db_fix50030.result b/mysql-test/main/system_mysql_db_fix50030.result
index 377a3790754..8055211e5b2 100644
--- a/mysql-test/main/system_mysql_db_fix50030.result
+++ b/mysql-test/main/system_mysql_db_fix50030.result
@@ -14,8 +14,8 @@ Warning 1280 Name 'Host' ignored for PRIMARY key.
INSERT INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
INSERT INTO user VALUES ('localhost','','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0, 0);
CREATE TABLE func ( name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User defined functions';
-CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
-CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
+CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp not null default now() on update now(), Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
+CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp not null default now() on update now(), Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
CREATE TABLE help_topic ( help_topic_id int unsigned not null, name char(64) not null, help_category_id smallint unsigned not null, description text not null, example text not null, url char(128) not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help topics';
CREATE TABLE help_category ( help_category_id smallint unsigned not null, name char(64) not null, parent_category_id smallint unsigned null, url char(128) not null, primary key (help_category_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help categories';
CREATE TABLE help_relation ( help_topic_id int unsigned not null references help_topic, help_keyword_id int unsigned not null references help_keyword, primary key (help_keyword_id, help_topic_id) ) engine=MyISAM CHARACTER SET utf8 comment='keyword-topic relation';
@@ -35,7 +35,7 @@ Warning 1280 Name 'TzIdTrTId' ignored for PRIMARY key.
CREATE TABLE time_zone_leap_second ( Transition_time bigint signed NOT NULL, Correction int signed NOT NULL, PRIMARY KEY TranTime (Transition_time) ) engine=MyISAM CHARACTER SET utf8 comment='Leap seconds information for time zones';
Warnings:
Warning 1280 Name 'TranTime' ignored for PRIMARY key.
-CREATE TABLE proc ( db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum('CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA' ) DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob DEFAULT '' NOT NULL, returns char(64) DEFAULT '' NOT NULL, body longblob DEFAULT '' NOT NULL, definer char(77) collate utf8_bin DEFAULT '' NOT NULL, created timestamp, modified timestamp, sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NOT_USED', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE' ) DEFAULT '' NOT NULL, comment char(64) collate utf8_bin DEFAULT '' NOT NULL, PRIMARY KEY (db,name,type) ) engine=MyISAM character set utf8 comment='Stored Procedures';
+CREATE TABLE proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA' ) DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob DEFAULT '' NOT NULL, returns char(64) DEFAULT '' NOT NULL, body longblob DEFAULT '' NOT NULL, definer char(77) collate utf8_bin DEFAULT '' NOT NULL, created timestamp not null default now() on update now(), modified timestamp not null default 0, sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NOT_USED', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE' ) DEFAULT '' NOT NULL, comment char(64) collate utf8_bin DEFAULT '' NOT NULL, PRIMARY KEY (db,name,type) ) engine=MyISAM character set utf8 comment='Stored Procedures';
CREATE TABLE procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) binary DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp, PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
CREATE TABLE servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';
INSERT INTO servers VALUES ('test','localhost','test','root','', 0,'','mysql','root');
@@ -196,8 +196,8 @@ proc CREATE TABLE `proc` (
`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL') NOT NULL DEFAULT '',
`comment` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`character_set_client` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `collation_connection` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `db_collation` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`aggregate` enum('NONE','GROUP') NOT NULL DEFAULT 'NONE',
PRIMARY KEY (`db`,`name`,`type`)
@@ -224,8 +224,8 @@ event CREATE TABLE `event` (
`originator` int(10) unsigned NOT NULL,
`time_zone` char(64) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'SYSTEM',
`character_set_client` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `collation_connection` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `db_collation` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
diff --git a/mysql-test/main/system_mysql_db_fix50030.test b/mysql-test/main/system_mysql_db_fix50030.test
index a9830471988..8fc049f8797 100644
--- a/mysql-test/main/system_mysql_db_fix50030.test
+++ b/mysql-test/main/system_mysql_db_fix50030.test
@@ -33,8 +33,8 @@ CREATE TABLE user ( Host char(60) binary DEFAULT '' NOT NULL, User char(16) bina
INSERT INTO user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0);
INSERT INTO user VALUES ('localhost','','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0, 0);
CREATE TABLE func ( name char(64) binary DEFAULT '' NOT NULL, ret tinyint(1) DEFAULT '0' NOT NULL, dl char(128) DEFAULT '' NOT NULL, type enum ('function','aggregate') COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='User defined functions';
-CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp, Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
-CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
+CREATE TABLE tables_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Timestamp timestamp not null default now() on update now(), Table_priv set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','Create View','Show view') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Table privileges';
+CREATE TABLE columns_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Table_name char(64) binary DEFAULT '' NOT NULL, Column_name char(64) binary DEFAULT '' NOT NULL, Timestamp timestamp not null default now() on update now(), Column_priv set('Select','Insert','Update','References') COLLATE utf8_general_ci DEFAULT '' NOT NULL, PRIMARY KEY (Host,Db,User,Table_name,Column_name) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Column privileges';
CREATE TABLE help_topic ( help_topic_id int unsigned not null, name char(64) not null, help_category_id smallint unsigned not null, description text not null, example text not null, url char(128) not null, primary key (help_topic_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help topics';
CREATE TABLE help_category ( help_category_id smallint unsigned not null, name char(64) not null, parent_category_id smallint unsigned null, url char(128) not null, primary key (help_category_id), unique index (name) ) engine=MyISAM CHARACTER SET utf8 comment='help categories';
CREATE TABLE help_relation ( help_topic_id int unsigned not null references help_topic, help_keyword_id int unsigned not null references help_keyword, primary key (help_keyword_id, help_topic_id) ) engine=MyISAM CHARACTER SET utf8 comment='keyword-topic relation';
@@ -44,7 +44,7 @@ CREATE TABLE time_zone ( Time_zone_id int unsigned NOT NULL auto_increment, Use_
CREATE TABLE time_zone_transition ( Time_zone_id int unsigned NOT NULL, Transition_time bigint signed NOT NULL, Transition_type_id int unsigned NOT NULL, PRIMARY KEY TzIdTranTime (Time_zone_id, Transition_time) ) engine=MyISAM CHARACTER SET utf8 comment='Time zone transitions';
CREATE TABLE time_zone_transition_type ( Time_zone_id int unsigned NOT NULL, Transition_type_id int unsigned NOT NULL, `Offset` int signed DEFAULT 0 NOT NULL, Is_DST tinyint unsigned DEFAULT 0 NOT NULL, Abbreviation char(8) DEFAULT '' NOT NULL, PRIMARY KEY TzIdTrTId (Time_zone_id, Transition_type_id) ) engine=MyISAM CHARACTER SET utf8 comment='Time zone transition types';
CREATE TABLE time_zone_leap_second ( Transition_time bigint signed NOT NULL, Correction int signed NOT NULL, PRIMARY KEY TranTime (Transition_time) ) engine=MyISAM CHARACTER SET utf8 comment='Leap seconds information for time zones';
-CREATE TABLE proc ( db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum('CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA' ) DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob DEFAULT '' NOT NULL, returns char(64) DEFAULT '' NOT NULL, body longblob DEFAULT '' NOT NULL, definer char(77) collate utf8_bin DEFAULT '' NOT NULL, created timestamp, modified timestamp, sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NOT_USED', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE' ) DEFAULT '' NOT NULL, comment char(64) collate utf8_bin DEFAULT '' NOT NULL, PRIMARY KEY (db,name,type) ) engine=MyISAM character set utf8 comment='Stored Procedures';
+CREATE TABLE proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA' ) DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob DEFAULT '' NOT NULL, returns char(64) DEFAULT '' NOT NULL, body longblob DEFAULT '' NOT NULL, definer char(77) collate utf8_bin DEFAULT '' NOT NULL, created timestamp not null default now() on update now(), modified timestamp not null default 0, sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'NOT_USED', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE' ) DEFAULT '' NOT NULL, comment char(64) collate utf8_bin DEFAULT '' NOT NULL, PRIMARY KEY (db,name,type) ) engine=MyISAM character set utf8 comment='Stored Procedures';
CREATE TABLE procs_priv ( Host char(60) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(16) binary DEFAULT '' NOT NULL, Routine_name char(64) binary DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE') NOT NULL, Grantor char(77) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp, PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=MyISAM CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
CREATE TABLE servers ( Server_name char(64) NOT NULL DEFAULT '', Host char(64) NOT NULL DEFAULT '', Db char(64) NOT NULL DEFAULT '', Username char(64) NOT NULL DEFAULT '', Password char(64) NOT NULL DEFAULT '', Port INT(4) NOT NULL DEFAULT '0', Socket char(64) NOT NULL DEFAULT '', Wrapper char(64) NOT NULL DEFAULT '', Owner char(64) NOT NULL DEFAULT '', PRIMARY KEY (Server_name)) CHARACTER SET utf8 comment='MySQL Foreign Servers table';
INSERT INTO servers VALUES ('test','localhost','test','root','', 0,'','mysql','root');
diff --git a/mysql-test/main/system_mysql_db_fix50117.result b/mysql-test/main/system_mysql_db_fix50117.result
index 2811e0fc660..214b7ee572d 100644
--- a/mysql-test/main/system_mysql_db_fix50117.result
+++ b/mysql-test/main/system_mysql_db_fix50117.result
@@ -176,8 +176,8 @@ proc CREATE TABLE `proc` (
`sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL') NOT NULL DEFAULT '',
`comment` text CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL,
`character_set_client` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `collation_connection` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `db_collation` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`aggregate` enum('NONE','GROUP') NOT NULL DEFAULT 'NONE',
PRIMARY KEY (`db`,`name`,`type`)
@@ -204,8 +204,8 @@ event CREATE TABLE `event` (
`originator` int(10) unsigned NOT NULL,
`time_zone` char(64) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'SYSTEM',
`character_set_client` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `collation_connection` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
- `db_collation` char(32) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
+ `db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
diff --git a/mysql-test/main/table_elim.result b/mysql-test/main/table_elim.result
index deff0623370..4da85c4a9ca 100644
--- a/mysql-test/main/table_elim.result
+++ b/mysql-test/main/table_elim.result
@@ -704,3 +704,322 @@ LIMIT 1;
PostID Voted
1 NULL
DROP TABLE t1,t2;
+#
+# MDEV-26278: Table elimination does not work across derived tables
+#
+create table t1 (a int, b int);
+insert into t1 select seq, seq+10 from seq_1_to_10;
+create table t11 (
+a int not null,
+b int,
+key(a)
+);
+insert into t11 select A.seq, A.seq+B.seq
+from
+seq_1_to_10 A,
+seq_1_to_100 B;
+create table t12 (
+pk int primary key,
+col1 int
+);
+insert into t12 select seq, seq from seq_1_to_1000;
+create view v2b as
+select t11.a as a, count(*) as b
+from t11 left join t12 on t12.pk=t11.b
+group by t11.a;
+# The whole v2b is eliminated
+explain select t1.* from t1 left join v2b on v2b.a=t1.a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+# Check format JSON as well
+explain format=JSON select t1.* from t1 left join v2b on t1.a=v2b.a;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "const_condition": "1",
+ "nested_loop": [
+ {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 10,
+ "filtered": 100
+ }
+ }
+ ]
+ }
+}
+# Elimination of a whole subquery
+explain select t1.* from t1 left join
+(select t11.a as a, count(*) as b
+from t11 left join t12 on t12.pk=t11.b
+group by t11.a) v2b on v2b.a=t1.a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+# In this case v2b cannot be eliminated (since v2b.b is not unique)!
+explain select t1.* from t1 left join v2b on t1.a=v2b.b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+1 PRIMARY <derived2> ref key0 key0 8 test.t1.a 10 Using where
+2 DERIVED t11 ALL NULL NULL NULL NULL 1000 Using temporary; Using filesort
+# Check format JSON as well
+explain format=JSON select t1.* from t1 left join v2b on t1.a=v2b.b;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "const_condition": "1",
+ "nested_loop": [
+ {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 10,
+ "filtered": 100
+ }
+ },
+ {
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "8",
+ "used_key_parts": ["b"],
+ "ref": ["test.t1.a"],
+ "rows": 10,
+ "filtered": 100,
+ "attached_condition": "trigcond(t1.a = v2b.b and trigcond(t1.a is not null))",
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "const_condition": "1",
+ "filesort": {
+ "sort_key": "t11.a",
+ "temporary_table": {
+ "nested_loop": [
+ {
+ "table": {
+ "table_name": "t11",
+ "access_type": "ALL",
+ "rows": 1000,
+ "filtered": 100
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+}
+create view v2c as
+select t11.a as a, max(t12.col1) as b
+from t11 left join t12 on t12.pk=t11.b
+group by t11.a;
+# The whole v2c is eliminated
+explain select t1.* from t1 left join v2c on v2c.a=t1.a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+# Check format JSON as well
+explain format=JSON select t1.* from t1 left join v2c on v2c.a=t1.a;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "const_condition": "1",
+ "nested_loop": [
+ {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 10,
+ "filtered": 100
+ }
+ }
+ ]
+ }
+}
+# In this case v2c cannot be eliminated (since v2c.b is not unique)!
+explain select t1.* from t1 left join v2c on t1.a=v2c.b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+1 PRIMARY <derived2> ref key0 key0 5 test.t1.a 10 Using where
+2 DERIVED t11 ALL NULL NULL NULL NULL 1000 Using temporary; Using filesort
+2 DERIVED t12 eq_ref PRIMARY PRIMARY 4 test.t11.b 1 Using where
+# Check format JSON as well
+explain format=JSON select t1.* from t1 left join v2c on t1.a=v2c.b;
+EXPLAIN
+{
+ "query_block": {
+ "select_id": 1,
+ "const_condition": "1",
+ "nested_loop": [
+ {
+ "table": {
+ "table_name": "t1",
+ "access_type": "ALL",
+ "rows": 10,
+ "filtered": 100
+ }
+ },
+ {
+ "table": {
+ "table_name": "<derived2>",
+ "access_type": "ref",
+ "possible_keys": ["key0"],
+ "key": "key0",
+ "key_length": "5",
+ "used_key_parts": ["b"],
+ "ref": ["test.t1.a"],
+ "rows": 10,
+ "filtered": 100,
+ "attached_condition": "trigcond(trigcond(t1.a is not null))",
+ "materialized": {
+ "query_block": {
+ "select_id": 2,
+ "const_condition": "1",
+ "filesort": {
+ "sort_key": "t11.a",
+ "temporary_table": {
+ "nested_loop": [
+ {
+ "table": {
+ "table_name": "t11",
+ "access_type": "ALL",
+ "rows": 1000,
+ "filtered": 100
+ }
+ },
+ {
+ "table": {
+ "table_name": "t12",
+ "access_type": "eq_ref",
+ "possible_keys": ["PRIMARY"],
+ "key": "PRIMARY",
+ "key_length": "4",
+ "used_key_parts": ["pk"],
+ "ref": ["test.t11.b"],
+ "rows": 1,
+ "filtered": 100,
+ "attached_condition": "trigcond(trigcond(t11.b is not null))"
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ ]
+ }
+}
+# Create a view with multiple fields in the GROUP BY clause:
+create view v2d as
+select t11.a as a, t11.b as b, max(t12.col1) as max_col1
+from t11 left join t12 on t12.pk=t11.b
+group by t11.a, t11.b;
+# This one must not be eliminated since only one of the GROUP BY fields is bound:
+explain select t1.* from t1 left join v2d on v2d.a=t1.a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+1 PRIMARY <derived2> ref key0 key0 5 test.t1.a 10 Using where
+2 DERIVED t11 ALL a NULL NULL NULL 1000 Using temporary; Using filesort
+2 DERIVED t12 eq_ref PRIMARY PRIMARY 4 test.t11.b 1 Using where
+# This must be eliminated since both fields are bound:
+explain select t1.* from t1 left join v2d on v2d.a=t1.a and v2d.b=t1.b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+create table t13 (dt date, b int);
+# Function year() in the GROUP BY list prevents treating this field
+# as a unique key
+create view v2e as
+select year(t13.dt) as yyy, max(t12.col1) as max_col1
+from t13 join t12 on t12.pk=t13.b
+group by yyy;
+# No elimination here since function year() is used
+explain select t1.* from t1 left join v2e on v2e.yyy=t1.a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+1 PRIMARY <derived2> ref key0 key0 5 test.t1.a 2 Using where
+2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
+create table t2 (a int, b int, c int);
+insert into t2 select A.seq, B.seq, 123 from seq_1_to_3 A, seq_1_to_3 B;
+# No elimination here since not all fields of the derived table's
+# GROUP BY are on the SELECT list so D.a is not unique
+explain select t1.* from t1 left join
+(select a, count(*) as cnt from t2 group by a, b) D on D.a=t1.a;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+1 PRIMARY <derived2> ref key0 key0 5 test.t1.a 2 Using where
+2 DERIVED t2 ALL NULL NULL NULL NULL 9 Using temporary; Using filesort
+# Still no elimination 'cause field D.b is just an alias for t2.a
+explain select t1.* from t1 left join
+(select a, a as b, count(*) as cnt from t2 group by a, b) D on D.a=t1.a and D.b=t1.b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+1 PRIMARY <derived2> ref key0 key0 10 test.t1.a,test.t1.b 2 Using where
+2 DERIVED t2 ALL NULL NULL NULL NULL 9 Using temporary; Using filesort
+Warnings:
+Warning 1052 Column 'b' in group statement is ambiguous
+# Now both a and b fields are on the SELECT list and they are bound to t1
+# so derived D must be eliminated
+explain select t1.* from t1 left join
+(select a as a1, b as b1, count(*) as cnt from t2 group by a, b) D
+on D.a1=t1.a and D.b1=t1.b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+# Different order of fields in GROUP BY and SELECT lists
+# must not hamper the elimination
+explain select t1.* from t1 left join
+(select count(*) as cnt, b, a from t2 group by a, b) D on D.a=t1.a and D.b=t1.b;
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 10
+drop view v2b, v2c, v2d, v2e;
+drop table t1, t11, t12, t13, t2;
+#
+# End of MDEV-26278: Table elimination does not work across derived tables
+#
+#
+# MDEV-28881: Server crashes in Dep_analysis_context::create_table_value/
+# check_func_dependency
+#
+CREATE TABLE t1 (a1 int, a2 int);
+INSERT INTO t1 VALUES (0,276),(5,277),(NULL,278);
+CREATE TABLE t2 ( a1 int, a2 int, KEY a2 (a2));
+INSERT INTO t2 VALUES (11,NULL),(185,0);
+SELECT t1.* FROM t1 LEFT JOIN
+( SELECT * FROM (SELECT t2.a1 AS a1, min(t2.a2) AS a2 FROM t2
+WHERE t2.a2 <> NULL
+GROUP BY t2.a1) dt
+) dt2 ON dt2.a2 = t1.a2;
+a1 a2
+0 276
+5 277
+NULL 278
+DROP TABLE t1, t2;
+#
+# MDEV-30007: SIGSEGV in st_select_lex_unit::is_derived_eliminated,
+# runtime error: member access within null pointer of type
+# 'struct TABLE' in st_select_lex_unit::is_derived_eliminated()
+#
+CREATE VIEW v AS SELECT 1 AS a;
+SELECT ROUND ((SELECT 1 FROM v)) FROM v GROUP BY ROUND ((SELECT 1 FROM v));
+ROUND ((SELECT 1 FROM v))
+1
+EXPLAIN
+SELECT ROUND ((SELECT 1 FROM v)) FROM v GROUP BY ROUND ((SELECT 1 FROM v));
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY <derived4> system NULL NULL NULL NULL 1
+4 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
+2 SUBQUERY <derived5> system NULL NULL NULL NULL 1
+5 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
+DROP VIEW v;
+#
+# End of 10.10 tests
+#
diff --git a/mysql-test/main/table_elim.test b/mysql-test/main/table_elim.test
index e5770877e6f..d6bf925c2c0 100644
--- a/mysql-test/main/table_elim.test
+++ b/mysql-test/main/table_elim.test
@@ -1,6 +1,7 @@
#
# Table elimination (MWL#17) tests
#
+--source include/have_sequence.inc
--disable_warnings
drop table if exists t0, t1, t2, t3, t4, t5, t6;
drop view if exists v1, v2;
@@ -646,3 +647,155 @@ LIMIT 1;
DROP TABLE t1,t2;
--enable_view_protocol
+
+--echo #
+--echo # MDEV-26278: Table elimination does not work across derived tables
+--echo #
+create table t1 (a int, b int);
+insert into t1 select seq, seq+10 from seq_1_to_10;
+
+create table t11 (
+ a int not null,
+ b int,
+ key(a)
+);
+
+insert into t11 select A.seq, A.seq+B.seq
+from
+ seq_1_to_10 A,
+ seq_1_to_100 B;
+create table t12 (
+ pk int primary key,
+ col1 int
+);
+
+insert into t12 select seq, seq from seq_1_to_1000;
+
+create view v2b as
+select t11.a as a, count(*) as b
+from t11 left join t12 on t12.pk=t11.b
+group by t11.a;
+
+--echo # The whole v2b is eliminated
+explain select t1.* from t1 left join v2b on v2b.a=t1.a;
+
+--echo # Check format JSON as well
+explain format=JSON select t1.* from t1 left join v2b on t1.a=v2b.a;
+
+--echo # Elimination of a whole subquery
+explain select t1.* from t1 left join
+ (select t11.a as a, count(*) as b
+ from t11 left join t12 on t12.pk=t11.b
+ group by t11.a) v2b on v2b.a=t1.a;
+
+--echo # In this case v2b cannot be eliminated (since v2b.b is not unique)!
+explain select t1.* from t1 left join v2b on t1.a=v2b.b;
+
+--echo # Check format JSON as well
+explain format=JSON select t1.* from t1 left join v2b on t1.a=v2b.b;
+
+create view v2c as
+select t11.a as a, max(t12.col1) as b
+from t11 left join t12 on t12.pk=t11.b
+group by t11.a;
+
+--echo # The whole v2c is eliminated
+explain select t1.* from t1 left join v2c on v2c.a=t1.a;
+
+--echo # Check format JSON as well
+explain format=JSON select t1.* from t1 left join v2c on v2c.a=t1.a;
+
+--echo # In this case v2c cannot be eliminated (since v2c.b is not unique)!
+explain select t1.* from t1 left join v2c on t1.a=v2c.b;
+
+--echo # Check format JSON as well
+explain format=JSON select t1.* from t1 left join v2c on t1.a=v2c.b;
+
+--echo # Create a view with multiple fields in the GROUP BY clause:
+create view v2d as
+select t11.a as a, t11.b as b, max(t12.col1) as max_col1
+from t11 left join t12 on t12.pk=t11.b
+group by t11.a, t11.b;
+
+--echo # This one must not be eliminated since only one of the GROUP BY fields is bound:
+explain select t1.* from t1 left join v2d on v2d.a=t1.a;
+
+--echo # This must be eliminated since both fields are bound:
+explain select t1.* from t1 left join v2d on v2d.a=t1.a and v2d.b=t1.b;
+
+create table t13 (dt date, b int);
+
+--echo # Function year() in the GROUP BY list prevents treating this field
+--echo # as a unique key
+create view v2e as
+select year(t13.dt) as yyy, max(t12.col1) as max_col1
+from t13 join t12 on t12.pk=t13.b
+group by yyy;
+
+--echo # No elimination here since function year() is used
+explain select t1.* from t1 left join v2e on v2e.yyy=t1.a;
+
+create table t2 (a int, b int, c int);
+insert into t2 select A.seq, B.seq, 123 from seq_1_to_3 A, seq_1_to_3 B;
+
+--echo # No elimination here since not all fields of the derived table's
+--echo # GROUP BY are on the SELECT list so D.a is not unique
+explain select t1.* from t1 left join
+ (select a, count(*) as cnt from t2 group by a, b) D on D.a=t1.a;
+
+--echo # Still no elimination 'cause field D.b is just an alias for t2.a
+explain select t1.* from t1 left join
+ (select a, a as b, count(*) as cnt from t2 group by a, b) D on D.a=t1.a and D.b=t1.b;
+
+--echo # Now both a and b fields are on the SELECT list and they are bound to t1
+--echo # so derived D must be eliminated
+explain select t1.* from t1 left join
+ (select a as a1, b as b1, count(*) as cnt from t2 group by a, b) D
+ on D.a1=t1.a and D.b1=t1.b;
+
+--echo # Different order of fields in GROUP BY and SELECT lists
+--echo # must not hamper the elimination
+explain select t1.* from t1 left join
+ (select count(*) as cnt, b, a from t2 group by a, b) D on D.a=t1.a and D.b=t1.b;
+
+
+drop view v2b, v2c, v2d, v2e;
+drop table t1, t11, t12, t13, t2;
+
+--echo #
+--echo # End of MDEV-26278: Table elimination does not work across derived tables
+--echo #
+
+--echo #
+--echo # MDEV-28881: Server crashes in Dep_analysis_context::create_table_value/
+--echo # check_func_dependency
+--echo #
+
+CREATE TABLE t1 (a1 int, a2 int);
+INSERT INTO t1 VALUES (0,276),(5,277),(NULL,278);
+
+CREATE TABLE t2 ( a1 int, a2 int, KEY a2 (a2));
+INSERT INTO t2 VALUES (11,NULL),(185,0);
+
+SELECT t1.* FROM t1 LEFT JOIN
+ ( SELECT * FROM (SELECT t2.a1 AS a1, min(t2.a2) AS a2 FROM t2
+ WHERE t2.a2 <> NULL
+ GROUP BY t2.a1) dt
+ ) dt2 ON dt2.a2 = t1.a2;
+
+DROP TABLE t1, t2;
+
+--echo #
+--echo # MDEV-30007: SIGSEGV in st_select_lex_unit::is_derived_eliminated,
+--echo # runtime error: member access within null pointer of type
+--echo # 'struct TABLE' in st_select_lex_unit::is_derived_eliminated()
+--echo #
+CREATE VIEW v AS SELECT 1 AS a;
+SELECT ROUND ((SELECT 1 FROM v)) FROM v GROUP BY ROUND ((SELECT 1 FROM v));
+EXPLAIN
+SELECT ROUND ((SELECT 1 FROM v)) FROM v GROUP BY ROUND ((SELECT 1 FROM v));
+DROP VIEW v;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/mysql-test/main/timezone2.result b/mysql-test/main/timezone2.result
index 806255f26f5..31b17fbc0d9 100644
--- a/mysql-test/main/timezone2.result
+++ b/mysql-test/main/timezone2.result
@@ -607,7 +607,7 @@ SET time_zone=DEFAULT;
# MDEV-19961 MIN(timestamp_column) returns a wrong result in a GROUP BY query
#
SET time_zone='Europe/Moscow';
-CREATE OR REPLACE TABLE t1 (i INT, d TIMESTAMP);
+CREATE OR REPLACE TABLE t1 (i INT, d TIMESTAMP NOT NULL DEFAULT NOW());
SET timestamp=1288477526 /* this is summer time */ ;
INSERT INTO t1 VALUES (3,NULL);
SET timestamp=1288477526+3599 /* this is winter time*/ ;
@@ -629,7 +629,7 @@ SET time_zone=DEFAULT;
# MDEV-20397 Support TIMESTAMP, DATETIME, TIME in ROUND() and TRUNCATE()
#
SET time_zone='Europe/Moscow';
-CREATE TABLE t1 (i INT, d TIMESTAMP(6));
+CREATE TABLE t1 (i INT, d TIMESTAMP(6) NOT NULL DEFAULT NOW());
SET timestamp=1288479599.999999 /* this is the last second in summer time */ ;
INSERT INTO t1 VALUES (1,NULL);
SET timestamp=1288479600.000000 /* this is the first second in winter time */ ;
diff --git a/mysql-test/main/timezone2.test b/mysql-test/main/timezone2.test
index 20c926a796c..b5045203903 100644
--- a/mysql-test/main/timezone2.test
+++ b/mysql-test/main/timezone2.test
@@ -573,7 +573,7 @@ SET time_zone=DEFAULT;
--echo #
SET time_zone='Europe/Moscow';
-CREATE OR REPLACE TABLE t1 (i INT, d TIMESTAMP);
+CREATE OR REPLACE TABLE t1 (i INT, d TIMESTAMP NOT NULL DEFAULT NOW());
SET timestamp=1288477526 /* this is summer time */ ;
INSERT INTO t1 VALUES (3,NULL);
SET timestamp=1288477526+3599 /* this is winter time*/ ;
@@ -590,7 +590,7 @@ SET time_zone=DEFAULT;
--echo #
SET time_zone='Europe/Moscow';
-CREATE TABLE t1 (i INT, d TIMESTAMP(6));
+CREATE TABLE t1 (i INT, d TIMESTAMP(6) NOT NULL DEFAULT NOW());
SET timestamp=1288479599.999999 /* this is the last second in summer time */ ;
INSERT INTO t1 VALUES (1,NULL);
SET timestamp=1288479600.000000 /* this is the first second in winter time */ ;
diff --git a/mysql-test/main/trigger_null-8605.result b/mysql-test/main/trigger_null-8605.result
index 10315988708..9dcd2994b79 100644
--- a/mysql-test/main/trigger_null-8605.result
+++ b/mysql-test/main/trigger_null-8605.result
@@ -183,7 +183,7 @@ a b c
1 NULL 1
2 2 NULL
drop table t1;
-create table t1 (a timestamp, b int auto_increment primary key);
+create table t1 (a timestamp not null default now() on update now(), b int auto_increment primary key);
create trigger trgi before insert on t1 for each row set new.a=if(new.a is null, '2000-10-20 10:20:30', NULL);
set statement timestamp=777777777 for insert t1 (a) values (NULL);
set statement timestamp=888888888 for insert t1 (a) values ('1999-12-11 10:9:8');
diff --git a/mysql-test/main/trigger_null-8605.test b/mysql-test/main/trigger_null-8605.test
index 7645b61f5ad..c9a7cd5477d 100644
--- a/mysql-test/main/trigger_null-8605.test
+++ b/mysql-test/main/trigger_null-8605.test
@@ -152,7 +152,7 @@ drop table t1;
--remove_file $datadir/test/mdev8605.txt
# timestamps (on NULL = NOW())
-create table t1 (a timestamp, b int auto_increment primary key);
+create table t1 (a timestamp not null default now() on update now(), b int auto_increment primary key);
create trigger trgi before insert on t1 for each row set new.a=if(new.a is null, '2000-10-20 10:20:30', NULL);
set statement timestamp=777777777 for insert t1 (a) values (NULL);
set statement timestamp=888888888 for insert t1 (a) values ('1999-12-11 10:9:8');
diff --git a/mysql-test/main/type_temporal_mysql56_debug.result b/mysql-test/main/type_temporal_mysql56_debug.result
index 24fbc511aef..5ee22aa5b7f 100644
--- a/mysql-test/main/type_temporal_mysql56_debug.result
+++ b/mysql-test/main/type_temporal_mysql56_debug.result
@@ -301,25 +301,25 @@ CALL mdev16542;
# Original table
Table Create Table
t1 CREATE TABLE `t1` (
- `a0` timestamp /* mysql-5.6 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `a1` timestamp(1) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
- `a2` timestamp(2) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
- `a3` timestamp(3) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
- `a4` timestamp(4) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
- `a5` timestamp(5) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
- `a6` timestamp(6) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000'
+ `a0` timestamp /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a1` timestamp(1) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a2` timestamp(2) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a3` timestamp(3) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a4` timestamp(4) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a5` timestamp(5) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a6` timestamp(6) /* mysql-5.6 */ NULL DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
# CREATE..SELECT and SHOW
Table Create Table
t2 CREATE TABLE `t2` (
- `a0` timestamp /* mysql-5.6 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `a1` timestamp(1) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
- `a2` timestamp(2) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
- `a3` timestamp(3) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
- `a4` timestamp(4) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
- `a5` timestamp(5) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
- `a6` timestamp(6) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
+ `a0` timestamp /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a1` timestamp(1) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a2` timestamp(2) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a3` timestamp(3) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a4` timestamp(4) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a5` timestamp(5) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a6` timestamp(6) /* mysql-5.6 */ NULL DEFAULT NULL,
`COALESCE(a0)` timestamp /* mysql-5.6 */ NULL DEFAULT NULL,
`COALESCE(a1)` timestamp(1) /* mysql-5.6 */ NULL DEFAULT NULL,
`COALESCE(a2)` timestamp(2) /* mysql-5.6 */ NULL DEFAULT NULL,
@@ -332,13 +332,13 @@ t2 CREATE TABLE `t2` (
# ALTER..FORCE and SHOW
Table Create Table
t1 CREATE TABLE `t1` (
- `a0` timestamp /* mysql-5.6 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `a1` timestamp(1) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
- `a2` timestamp(2) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
- `a3` timestamp(3) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
- `a4` timestamp(4) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
- `a5` timestamp(5) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
- `a6` timestamp(6) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000'
+ `a0` timestamp /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a1` timestamp(1) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a2` timestamp(2) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a3` timestamp(3) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a4` timestamp(4) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a5` timestamp(5) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a6` timestamp(6) /* mysql-5.6 */ NULL DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
# Setting @@global.mysql56_temporal_format=false
@@ -346,13 +346,13 @@ t1 CREATE TABLE `t1` (
# CREATE..SELECT and SHOW
Table Create Table
t2 CREATE TABLE `t2` (
- `a0` timestamp /* mariadb-5.3 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `a1` timestamp(1) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
- `a2` timestamp(2) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
- `a3` timestamp(3) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
- `a4` timestamp(4) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
- `a5` timestamp(5) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
- `a6` timestamp(6) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
+ `a0` timestamp /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a1` timestamp(1) /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a2` timestamp(2) /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a3` timestamp(3) /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a4` timestamp(4) /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a5` timestamp(5) /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a6` timestamp(6) /* mariadb-5.3 */ NULL DEFAULT NULL,
`COALESCE(a0)` timestamp /* mariadb-5.3 */ NULL DEFAULT NULL,
`COALESCE(a1)` timestamp(1) /* mariadb-5.3 */ NULL DEFAULT NULL,
`COALESCE(a2)` timestamp(2) /* mariadb-5.3 */ NULL DEFAULT NULL,
@@ -365,13 +365,13 @@ t2 CREATE TABLE `t2` (
# ALTER..FORCE and SHOW
Table Create Table
t1 CREATE TABLE `t1` (
- `a0` timestamp /* mariadb-5.3 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `a1` timestamp(1) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
- `a2` timestamp(2) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
- `a3` timestamp(3) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
- `a4` timestamp(4) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
- `a5` timestamp(5) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
- `a6` timestamp(6) /* mariadb-5.3 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000'
+ `a0` timestamp /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a1` timestamp(1) /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a2` timestamp(2) /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a3` timestamp(3) /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a4` timestamp(4) /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a5` timestamp(5) /* mariadb-5.3 */ NULL DEFAULT NULL,
+ `a6` timestamp(6) /* mariadb-5.3 */ NULL DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
# Setting @@global.mysql56_temporal_format=true
@@ -379,13 +379,13 @@ t1 CREATE TABLE `t1` (
# CREATE..SELECT and SHOW
Table Create Table
t2 CREATE TABLE `t2` (
- `a0` timestamp /* mysql-5.6 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `a1` timestamp(1) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
- `a2` timestamp(2) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
- `a3` timestamp(3) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
- `a4` timestamp(4) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
- `a5` timestamp(5) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
- `a6` timestamp(6) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
+ `a0` timestamp /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a1` timestamp(1) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a2` timestamp(2) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a3` timestamp(3) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a4` timestamp(4) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a5` timestamp(5) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a6` timestamp(6) /* mysql-5.6 */ NULL DEFAULT NULL,
`COALESCE(a0)` timestamp /* mysql-5.6 */ NULL DEFAULT NULL,
`COALESCE(a1)` timestamp(1) /* mysql-5.6 */ NULL DEFAULT NULL,
`COALESCE(a2)` timestamp(2) /* mysql-5.6 */ NULL DEFAULT NULL,
@@ -398,13 +398,13 @@ t2 CREATE TABLE `t2` (
# ALTER..FORCE and SHOW
Table Create Table
t1 CREATE TABLE `t1` (
- `a0` timestamp /* mysql-5.6 */ NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `a1` timestamp(1) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0',
- `a2` timestamp(2) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00',
- `a3` timestamp(3) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000',
- `a4` timestamp(4) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.0000',
- `a5` timestamp(5) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.00000',
- `a6` timestamp(6) /* mysql-5.6 */ NOT NULL DEFAULT '0000-00-00 00:00:00.000000'
+ `a0` timestamp /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a1` timestamp(1) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a2` timestamp(2) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a3` timestamp(3) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a4` timestamp(4) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a5` timestamp(5) /* mysql-5.6 */ NULL DEFAULT NULL,
+ `a6` timestamp(6) /* mysql-5.6 */ NULL DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SET @@global.mysql56_temporal_format=DEFAULT;
diff --git a/mysql-test/main/type_timestamp.result b/mysql-test/main/type_timestamp.result
index 508dd56f694..09ba852e032 100644
--- a/mysql-test/main/type_timestamp.result
+++ b/mysql-test/main/type_timestamp.result
@@ -1145,7 +1145,7 @@ DROP TABLE t1;
# MDEV-17972 Assertion `is_valid_value_slow()' failed in Datetime::Datetime
#
SET time_zone='+00:00';
-CREATE TABLE t1 (a TIMESTAMP(6)) ENGINE=MyISAM;
+CREATE TABLE t1 (a TIMESTAMP(6) NOT NULL) ENGINE=MyISAM;
INSERT INTO t1 VALUES ('2001-01-01 10:20:30');
FLUSH TABLES;
MYD
diff --git a/mysql-test/main/type_timestamp.test b/mysql-test/main/type_timestamp.test
index 3f4346bb17a..b5b1fb02f40 100644
--- a/mysql-test/main/type_timestamp.test
+++ b/mysql-test/main/type_timestamp.test
@@ -731,7 +731,7 @@ DROP TABLE t1;
let $MYSQLD_DATADIR= `select @@datadir`;
SET time_zone='+00:00';
-CREATE TABLE t1 (a TIMESTAMP(6)) ENGINE=MyISAM;
+CREATE TABLE t1 (a TIMESTAMP(6) NOT NULL) ENGINE=MyISAM;
INSERT INTO t1 VALUES ('2001-01-01 10:20:30');
FLUSH TABLES;
--remove_file $MYSQLD_DATADIR/test/t1.MYD
diff --git a/mysql-test/main/type_timestamp_hires.result b/mysql-test/main/type_timestamp_hires.result
index 94807e8c561..ac2d4392bee 100644
--- a/mysql-test/main/type_timestamp_hires.result
+++ b/mysql-test/main/type_timestamp_hires.result
@@ -276,19 +276,19 @@ create or replace table t1 (a timestamp(5) default current_timestamp);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp(5) NOT NULL DEFAULT current_timestamp(5)
+ `a` timestamp(5) NULL DEFAULT current_timestamp(5)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
create or replace table t1 (a timestamp(5) default current_timestamp());
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp(5) NOT NULL DEFAULT current_timestamp(5)
+ `a` timestamp(5) NULL DEFAULT current_timestamp(5)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
create or replace table t1 (a timestamp(5) default current_timestamp(2));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp(5) NOT NULL DEFAULT current_timestamp(2)
+ `a` timestamp(5) NULL DEFAULT current_timestamp(2)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
insert t1 () values ();
select * from t1;
@@ -298,25 +298,25 @@ create or replace table t1 (a timestamp(5) default current_timestamp(5));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp(5) NOT NULL DEFAULT current_timestamp(5)
+ `a` timestamp(5) NULL DEFAULT current_timestamp(5)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
create or replace table t1 (a timestamp(5) default current_timestamp(6));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp(5) NOT NULL DEFAULT current_timestamp(5)
+ `a` timestamp(5) NULL DEFAULT current_timestamp(5)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
create or replace table t1 (a timestamp(5) on update current_timestamp);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp(5) NOT NULL DEFAULT '0000-00-00 00:00:00.00000' ON UPDATE current_timestamp(5)
+ `a` timestamp(5) NULL DEFAULT NULL ON UPDATE current_timestamp(5)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
create or replace table t1 (a timestamp(5) on update current_timestamp());
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp(5) NOT NULL DEFAULT '0000-00-00 00:00:00.00000' ON UPDATE current_timestamp(5)
+ `a` timestamp(5) NULL DEFAULT NULL ON UPDATE current_timestamp(5)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
create or replace table t1 (a timestamp(5) on update current_timestamp(3));
ERROR HY000: Invalid ON UPDATE clause for 'a' column
@@ -324,13 +324,13 @@ create or replace table t1 (a timestamp(5) on update current_timestamp(5));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp(5) NOT NULL DEFAULT '0000-00-00 00:00:00.00000' ON UPDATE current_timestamp(5)
+ `a` timestamp(5) NULL DEFAULT NULL ON UPDATE current_timestamp(5)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
create or replace table t1 (a timestamp(5) on update current_timestamp(6));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp(5) NOT NULL DEFAULT '0000-00-00 00:00:00.00000' ON UPDATE current_timestamp(5)
+ `a` timestamp(5) NULL DEFAULT NULL ON UPDATE current_timestamp(5)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
drop table t1;
#
diff --git a/mysql-test/main/user_var-binlog.result b/mysql-test/main/user_var-binlog.result
index c07d6d42b98..6743f340a19 100644
--- a/mysql-test/main/user_var-binlog.result
+++ b/mysql-test/main/user_var-binlog.result
@@ -29,7 +29,7 @@ SET @`a b`:=_latin1 X'68656C6C6F' COLLATE `latin1_swedish_ci`/*!*/;
use `test`/*!*/;
SET TIMESTAMP=10000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/main/variables.result b/mysql-test/main/variables.result
index 3f367ef4599..f6817a2a4d2 100644
--- a/mysql-test/main/variables.result
+++ b/mysql-test/main/variables.result
@@ -1744,24 +1744,24 @@ drop function t1_max;
#
# Bug #59884: setting charset to 2048 crashes
#
-set session character_set_results = 2048;
-ERROR 42000: Unknown character set: '2048'
-set session character_set_client=2048;
-ERROR 42000: Unknown character set: '2048'
-set session character_set_connection=2048;
-ERROR 42000: Unknown character set: '2048'
-set session character_set_server=2048;
-ERROR 42000: Unknown character set: '2048'
-set session collation_server=2048;
-ERROR HY000: Unknown collation: '2048'
-set session character_set_filesystem=2048;
-ERROR 42000: Unknown character set: '2048'
-set session character_set_database=2048;
-ERROR 42000: Unknown character set: '2048'
-set session collation_connection=2048;
-ERROR HY000: Unknown collation: '2048'
-set session collation_database=2048;
-ERROR HY000: Unknown collation: '2048'
+set session character_set_results = 4096;
+ERROR 42000: Unknown character set: '4096'
+set session character_set_client=4096;
+ERROR 42000: Unknown character set: '4096'
+set session character_set_connection=4096;
+ERROR 42000: Unknown character set: '4096'
+set session character_set_server=4096;
+ERROR 42000: Unknown character set: '4096'
+set session collation_server=4096;
+ERROR HY000: Unknown collation: '4096'
+set session character_set_filesystem=4096;
+ERROR 42000: Unknown character set: '4096'
+set session character_set_database=4096;
+ERROR 42000: Unknown character set: '4096'
+set session collation_connection=4096;
+ERROR HY000: Unknown collation: '4096'
+set session collation_database=4096;
+ERROR HY000: Unknown collation: '4096'
set session rand_seed1=DEFAULT;
ERROR 42000: Variable 'rand_seed1' doesn't have a default value
set autocommit = value(v);
diff --git a/mysql-test/main/variables.test b/mysql-test/main/variables.test
index 495ab101352..c8b36925df6 100644
--- a/mysql-test/main/variables.test
+++ b/mysql-test/main/variables.test
@@ -1484,23 +1484,23 @@ drop function t1_max;
--echo #
--error ER_UNKNOWN_CHARACTER_SET
-set session character_set_results = 2048;
+set session character_set_results = 4096;
--error ER_UNKNOWN_CHARACTER_SET
-set session character_set_client=2048;
+set session character_set_client=4096;
--error ER_UNKNOWN_CHARACTER_SET
-set session character_set_connection=2048;
+set session character_set_connection=4096;
--error ER_UNKNOWN_CHARACTER_SET
-set session character_set_server=2048;
+set session character_set_server=4096;
--error ER_UNKNOWN_COLLATION
-set session collation_server=2048;
+set session collation_server=4096;
--error ER_UNKNOWN_CHARACTER_SET
-set session character_set_filesystem=2048;
+set session character_set_filesystem=4096;
--error ER_UNKNOWN_CHARACTER_SET
-set session character_set_database=2048;
+set session character_set_database=4096;
--error ER_UNKNOWN_COLLATION
-set session collation_connection=2048;
+set session collation_connection=4096;
--error ER_UNKNOWN_COLLATION
-set session collation_database=2048;
+set session collation_database=4096;
#
# Bug #16044655 CRASH: SETTING DEFAULT VALUE FOR SOME VARIABLES
diff --git a/mysql-test/std_data/ldml/Index.xml b/mysql-test/std_data/ldml/Index.xml
index a6fee091d02..b55b05598da 100644
--- a/mysql-test/std_data/ldml/Index.xml
+++ b/mysql-test/std_data/ldml/Index.xml
@@ -175,6 +175,9 @@
</collation>
<collation name="utf8mb4_test_520_nopad_ci" id="329" version="5.2.0" flag="nopad">
</collation>
+ <collation name="utf8mb4_uca1400_test01_as_ci" id="330" version="14.0.0">
+ <settings strength="2"/>
+ </collation>
</charset>
<charset name="utf16">
diff --git a/mysql-test/std_data/unicode/allkeys1400.txt b/mysql-test/std_data/unicode/allkeys1400.txt
new file mode 100644
index 00000000000..ef0f8816a95
--- /dev/null
+++ b/mysql-test/std_data/unicode/allkeys1400.txt
@@ -0,0 +1,33925 @@
+# allkeys-14.0.0.txt
+# Date: 2021-07-10, 10:53:42 GMT [KW]
+# Copyright 2021 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# This file defines the Default Unicode Collation Element Table
+# (DUCET) for the Unicode Collation Algorithm
+#
+# See UTS #10, Unicode Collation Algorithm, for more information.
+#
+# Diagnostic weight ranges
+# Primary weight range: 0200..5E72 (23667)
+# Secondary weight range: 0020..011C (253)
+# Variant secondaries: 0118..011C (5)
+# Tertiary weight range: 0002..001F (30)
+#
+@version 14.0.0
+
+@implicitweights 17000..18AFF; FB00 # Tangut and Tangut Components
+
+@implicitweights 18D00..18D8F; FB00 # Tangut Supplement
+
+@implicitweights 1B170..1B2FF; FB01 # Nushu
+
+@implicitweights 18B00..18CFF; FB02 # Khitan Small Script
+
+0000 ; [.0000.0000.0000] # NULL (in ISO 6429)
+0001 ; [.0000.0000.0000] # START OF HEADING (in ISO 6429)
+0002 ; [.0000.0000.0000] # START OF TEXT (in ISO 6429)
+0003 ; [.0000.0000.0000] # END OF TEXT (in ISO 6429)
+0004 ; [.0000.0000.0000] # END OF TRANSMISSION (in ISO 6429)
+0005 ; [.0000.0000.0000] # ENQUIRY (in ISO 6429)
+0006 ; [.0000.0000.0000] # ACKNOWLEDGE (in ISO 6429)
+0007 ; [.0000.0000.0000] # BELL (in ISO 6429)
+0008 ; [.0000.0000.0000] # BACKSPACE (in ISO 6429)
+000E ; [.0000.0000.0000] # SHIFT OUT (in ISO 6429)
+000F ; [.0000.0000.0000] # SHIFT IN (in ISO 6429)
+0010 ; [.0000.0000.0000] # DATA LINK ESCAPE (in ISO 6429)
+0011 ; [.0000.0000.0000] # DEVICE CONTROL ONE (in ISO 6429)
+0012 ; [.0000.0000.0000] # DEVICE CONTROL TWO (in ISO 6429)
+0013 ; [.0000.0000.0000] # DEVICE CONTROL THREE (in ISO 6429)
+0014 ; [.0000.0000.0000] # DEVICE CONTROL FOUR (in ISO 6429)
+0015 ; [.0000.0000.0000] # NEGATIVE ACKNOWLEDGE (in ISO 6429)
+0016 ; [.0000.0000.0000] # SYNCHRONOUS IDLE (in ISO 6429)
+0017 ; [.0000.0000.0000] # END OF TRANSMISSION BLOCK (in ISO 6429)
+0018 ; [.0000.0000.0000] # CANCEL (in ISO 6429)
+0019 ; [.0000.0000.0000] # END OF MEDIUM (in ISO 6429)
+001A ; [.0000.0000.0000] # SUBSTITUTE (in ISO 6429)
+001B ; [.0000.0000.0000] # ESCAPE (in ISO 6429)
+001C ; [.0000.0000.0000] # FILE SEPARATOR (in ISO 6429)
+001D ; [.0000.0000.0000] # GROUP SEPARATOR (in ISO 6429)
+001E ; [.0000.0000.0000] # RECORD SEPARATOR (in ISO 6429)
+001F ; [.0000.0000.0000] # UNIT SEPARATOR (in ISO 6429)
+007F ; [.0000.0000.0000] # DELETE (in ISO 6429)
+0080 ; [.0000.0000.0000] # <control>
+0081 ; [.0000.0000.0000] # <control>
+0082 ; [.0000.0000.0000] # BREAK PERMITTED HERE (in ISO 6429)
+0083 ; [.0000.0000.0000] # NO BREAK HERE (in ISO 6429)
+0084 ; [.0000.0000.0000] # <control>
+0086 ; [.0000.0000.0000] # START OF SELECTED AREA (in ISO 6429)
+0087 ; [.0000.0000.0000] # END OF SELECTED AREA (in ISO 6429)
+0088 ; [.0000.0000.0000] # CHARACTER TABULATION SET (in ISO 6429)
+0089 ; [.0000.0000.0000] # CHARACTER TABULATION WITH JUSTIFICATION (in ISO 6429)
+008A ; [.0000.0000.0000] # LINE TABULATION SET (in ISO 6429)
+008B ; [.0000.0000.0000] # PARTIAL LINE FORWARD (in ISO 6429)
+008C ; [.0000.0000.0000] # PARTIAL LINE BACKWARD (in ISO 6429)
+008D ; [.0000.0000.0000] # PARTIAL LINE FEED (in ISO 6429)
+008E ; [.0000.0000.0000] # SINGLE SHIFT TWO (in ISO 6429)
+008F ; [.0000.0000.0000] # SINGLE SHIFT THREE (in ISO 6429)
+0090 ; [.0000.0000.0000] # DEVICE CONTROL STRING (in ISO 6429)
+0091 ; [.0000.0000.0000] # PRIVATE USE ONE (in ISO 6429)
+0092 ; [.0000.0000.0000] # PRIVATE USE TWO (in ISO 6429)
+0093 ; [.0000.0000.0000] # SET TRANSMIT STATE (in ISO 6429)
+0094 ; [.0000.0000.0000] # CANCEL CHARACTER (in ISO 6429)
+0095 ; [.0000.0000.0000] # MESSAGE WAITING (in ISO 6429)
+0096 ; [.0000.0000.0000] # START OF GUARDED AREA (in ISO 6429)
+0097 ; [.0000.0000.0000] # END OF GUARDED AREA (in ISO 6429)
+0098 ; [.0000.0000.0000] # START OF STRING (in ISO 6429)
+0099 ; [.0000.0000.0000] # <control>
+009A ; [.0000.0000.0000] # SINGLE CHARACTER INTRODUCER (in ISO 6429)
+009B ; [.0000.0000.0000] # CONTROL SEQUENCE INTRODUCER (in ISO 6429)
+009C ; [.0000.0000.0000] # STRING TERMINATOR (in ISO 6429)
+009D ; [.0000.0000.0000] # OPERATING SYSTEM COMMAND (in ISO 6429)
+009E ; [.0000.0000.0000] # PRIVACY MESSAGE (in ISO 6429)
+009F ; [.0000.0000.0000] # APPLICATION PROGRAM COMMAND (in ISO 6429)
+00AD ; [.0000.0000.0000] # SOFT HYPHEN
+061C ; [.0000.0000.0000] # ARABIC LETTER MARK
+180B ; [.0000.0000.0000] # MONGOLIAN FREE VARIATION SELECTOR ONE
+180C ; [.0000.0000.0000] # MONGOLIAN FREE VARIATION SELECTOR TWO
+180D ; [.0000.0000.0000] # MONGOLIAN FREE VARIATION SELECTOR THREE
+180E ; [.0000.0000.0000] # MONGOLIAN VOWEL SEPARATOR
+180F ; [.0000.0000.0000] # MONGOLIAN FREE VARIATION SELECTOR FOUR
+200B ; [.0000.0000.0000] # ZERO WIDTH SPACE
+200C ; [.0000.0000.0000] # ZERO WIDTH NON-JOINER
+200D ; [.0000.0000.0000] # ZERO WIDTH JOINER
+200E ; [.0000.0000.0000] # LEFT-TO-RIGHT MARK
+200F ; [.0000.0000.0000] # RIGHT-TO-LEFT MARK
+202A ; [.0000.0000.0000] # LEFT-TO-RIGHT EMBEDDING
+202B ; [.0000.0000.0000] # RIGHT-TO-LEFT EMBEDDING
+202C ; [.0000.0000.0000] # POP DIRECTIONAL FORMATTING
+202D ; [.0000.0000.0000] # LEFT-TO-RIGHT OVERRIDE
+202E ; [.0000.0000.0000] # RIGHT-TO-LEFT OVERRIDE
+2060 ; [.0000.0000.0000] # WORD JOINER
+2066 ; [.0000.0000.0000] # LEFT-TO-RIGHT ISOLATE
+2067 ; [.0000.0000.0000] # RIGHT-TO-LEFT ISOLATE
+2068 ; [.0000.0000.0000] # FIRST STRONG ISOLATE
+2069 ; [.0000.0000.0000] # POP DIRECTIONAL ISOLATE
+206A ; [.0000.0000.0000] # INHIBIT SYMMETRIC SWAPPING
+206B ; [.0000.0000.0000] # ACTIVATE SYMMETRIC SWAPPING
+206C ; [.0000.0000.0000] # INHIBIT ARABIC FORM SHAPING
+206D ; [.0000.0000.0000] # ACTIVATE ARABIC FORM SHAPING
+206E ; [.0000.0000.0000] # NATIONAL DIGIT SHAPES
+206F ; [.0000.0000.0000] # NOMINAL DIGIT SHAPES
+FE00 ; [.0000.0000.0000] # VARIATION SELECTOR-1
+FE01 ; [.0000.0000.0000] # VARIATION SELECTOR-2
+FE02 ; [.0000.0000.0000] # VARIATION SELECTOR-3
+FE03 ; [.0000.0000.0000] # VARIATION SELECTOR-4
+FE04 ; [.0000.0000.0000] # VARIATION SELECTOR-5
+FE05 ; [.0000.0000.0000] # VARIATION SELECTOR-6
+FE06 ; [.0000.0000.0000] # VARIATION SELECTOR-7
+FE07 ; [.0000.0000.0000] # VARIATION SELECTOR-8
+FE08 ; [.0000.0000.0000] # VARIATION SELECTOR-9
+FE09 ; [.0000.0000.0000] # VARIATION SELECTOR-10
+FE0A ; [.0000.0000.0000] # VARIATION SELECTOR-11
+FE0B ; [.0000.0000.0000] # VARIATION SELECTOR-12
+FE0C ; [.0000.0000.0000] # VARIATION SELECTOR-13
+FE0D ; [.0000.0000.0000] # VARIATION SELECTOR-14
+FE0E ; [.0000.0000.0000] # VARIATION SELECTOR-15
+FE0F ; [.0000.0000.0000] # VARIATION SELECTOR-16
+FEFF ; [.0000.0000.0000] # ZERO WIDTH NO-BREAK SPACE
+FFF9 ; [.0000.0000.0000] # INTERLINEAR ANNOTATION ANCHOR
+FFFA ; [.0000.0000.0000] # INTERLINEAR ANNOTATION SEPARATOR
+FFFB ; [.0000.0000.0000] # INTERLINEAR ANNOTATION TERMINATOR
+13430 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH VERTICAL JOINER
+13431 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH HORIZONTAL JOINER
+13432 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH INSERT AT TOP START
+13433 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH INSERT AT BOTTOM START
+13434 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH INSERT AT TOP END
+13435 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH INSERT AT BOTTOM END
+13436 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH OVERLAY MIDDLE
+13437 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH BEGIN SEGMENT
+13438 ; [.0000.0000.0000] # EGYPTIAN HIEROGLYPH END SEGMENT
+1BCA0 ; [.0000.0000.0000] # SHORTHAND FORMAT LETTER OVERLAP
+1BCA1 ; [.0000.0000.0000] # SHORTHAND FORMAT CONTINUING OVERLAP
+1BCA2 ; [.0000.0000.0000] # SHORTHAND FORMAT DOWN STEP
+1BCA3 ; [.0000.0000.0000] # SHORTHAND FORMAT UP STEP
+1D173 ; [.0000.0000.0000] # MUSICAL SYMBOL BEGIN BEAM
+1D174 ; [.0000.0000.0000] # MUSICAL SYMBOL END BEAM
+1D175 ; [.0000.0000.0000] # MUSICAL SYMBOL BEGIN TIE
+1D176 ; [.0000.0000.0000] # MUSICAL SYMBOL END TIE
+1D177 ; [.0000.0000.0000] # MUSICAL SYMBOL BEGIN SLUR
+1D178 ; [.0000.0000.0000] # MUSICAL SYMBOL END SLUR
+1D179 ; [.0000.0000.0000] # MUSICAL SYMBOL BEGIN PHRASE
+1D17A ; [.0000.0000.0000] # MUSICAL SYMBOL END PHRASE
+E0001 ; [.0000.0000.0000] # LANGUAGE TAG
+E0020 ; [.0000.0000.0000] # TAG SPACE
+E0021 ; [.0000.0000.0000] # TAG EXCLAMATION MARK
+E0022 ; [.0000.0000.0000] # TAG QUOTATION MARK
+E0023 ; [.0000.0000.0000] # TAG NUMBER SIGN
+E0024 ; [.0000.0000.0000] # TAG DOLLAR SIGN
+E0025 ; [.0000.0000.0000] # TAG PERCENT SIGN
+E0026 ; [.0000.0000.0000] # TAG AMPERSAND
+E0027 ; [.0000.0000.0000] # TAG APOSTROPHE
+E0028 ; [.0000.0000.0000] # TAG LEFT PARENTHESIS
+E0029 ; [.0000.0000.0000] # TAG RIGHT PARENTHESIS
+E002A ; [.0000.0000.0000] # TAG ASTERISK
+E002B ; [.0000.0000.0000] # TAG PLUS SIGN
+E002C ; [.0000.0000.0000] # TAG COMMA
+E002D ; [.0000.0000.0000] # TAG HYPHEN-MINUS
+E002E ; [.0000.0000.0000] # TAG FULL STOP
+E002F ; [.0000.0000.0000] # TAG SOLIDUS
+E0030 ; [.0000.0000.0000] # TAG DIGIT ZERO
+E0031 ; [.0000.0000.0000] # TAG DIGIT ONE
+E0032 ; [.0000.0000.0000] # TAG DIGIT TWO
+E0033 ; [.0000.0000.0000] # TAG DIGIT THREE
+E0034 ; [.0000.0000.0000] # TAG DIGIT FOUR
+E0035 ; [.0000.0000.0000] # TAG DIGIT FIVE
+E0036 ; [.0000.0000.0000] # TAG DIGIT SIX
+E0037 ; [.0000.0000.0000] # TAG DIGIT SEVEN
+E0038 ; [.0000.0000.0000] # TAG DIGIT EIGHT
+E0039 ; [.0000.0000.0000] # TAG DIGIT NINE
+E003A ; [.0000.0000.0000] # TAG COLON
+E003B ; [.0000.0000.0000] # TAG SEMICOLON
+E003C ; [.0000.0000.0000] # TAG LESS-THAN SIGN
+E003D ; [.0000.0000.0000] # TAG EQUALS SIGN
+E003E ; [.0000.0000.0000] # TAG GREATER-THAN SIGN
+E003F ; [.0000.0000.0000] # TAG QUESTION MARK
+E0040 ; [.0000.0000.0000] # TAG COMMERCIAL AT
+E0041 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER A
+E0042 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER B
+E0043 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER C
+E0044 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER D
+E0045 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER E
+E0046 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER F
+E0047 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER G
+E0048 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER H
+E0049 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER I
+E004A ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER J
+E004B ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER K
+E004C ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER L
+E004D ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER M
+E004E ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER N
+E004F ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER O
+E0050 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER P
+E0051 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER Q
+E0052 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER R
+E0053 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER S
+E0054 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER T
+E0055 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER U
+E0056 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER V
+E0057 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER W
+E0058 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER X
+E0059 ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER Y
+E005A ; [.0000.0000.0000] # TAG LATIN CAPITAL LETTER Z
+E005B ; [.0000.0000.0000] # TAG LEFT SQUARE BRACKET
+E005C ; [.0000.0000.0000] # TAG REVERSE SOLIDUS
+E005D ; [.0000.0000.0000] # TAG RIGHT SQUARE BRACKET
+E005E ; [.0000.0000.0000] # TAG CIRCUMFLEX ACCENT
+E005F ; [.0000.0000.0000] # TAG LOW LINE
+E0060 ; [.0000.0000.0000] # TAG GRAVE ACCENT
+E0061 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER A
+E0062 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER B
+E0063 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER C
+E0064 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER D
+E0065 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER E
+E0066 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER F
+E0067 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER G
+E0068 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER H
+E0069 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER I
+E006A ; [.0000.0000.0000] # TAG LATIN SMALL LETTER J
+E006B ; [.0000.0000.0000] # TAG LATIN SMALL LETTER K
+E006C ; [.0000.0000.0000] # TAG LATIN SMALL LETTER L
+E006D ; [.0000.0000.0000] # TAG LATIN SMALL LETTER M
+E006E ; [.0000.0000.0000] # TAG LATIN SMALL LETTER N
+E006F ; [.0000.0000.0000] # TAG LATIN SMALL LETTER O
+E0070 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER P
+E0071 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER Q
+E0072 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER R
+E0073 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER S
+E0074 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER T
+E0075 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER U
+E0076 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER V
+E0077 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER W
+E0078 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER X
+E0079 ; [.0000.0000.0000] # TAG LATIN SMALL LETTER Y
+E007A ; [.0000.0000.0000] # TAG LATIN SMALL LETTER Z
+E007B ; [.0000.0000.0000] # TAG LEFT CURLY BRACKET
+E007C ; [.0000.0000.0000] # TAG VERTICAL LINE
+E007D ; [.0000.0000.0000] # TAG RIGHT CURLY BRACKET
+E007E ; [.0000.0000.0000] # TAG TILDE
+E007F ; [.0000.0000.0000] # CANCEL TAG
+E0100 ; [.0000.0000.0000] # VARIATION SELECTOR-17
+E0101 ; [.0000.0000.0000] # VARIATION SELECTOR-18
+E0102 ; [.0000.0000.0000] # VARIATION SELECTOR-19
+E0103 ; [.0000.0000.0000] # VARIATION SELECTOR-20
+E0104 ; [.0000.0000.0000] # VARIATION SELECTOR-21
+E0105 ; [.0000.0000.0000] # VARIATION SELECTOR-22
+E0106 ; [.0000.0000.0000] # VARIATION SELECTOR-23
+E0107 ; [.0000.0000.0000] # VARIATION SELECTOR-24
+E0108 ; [.0000.0000.0000] # VARIATION SELECTOR-25
+E0109 ; [.0000.0000.0000] # VARIATION SELECTOR-26
+E010A ; [.0000.0000.0000] # VARIATION SELECTOR-27
+E010B ; [.0000.0000.0000] # VARIATION SELECTOR-28
+E010C ; [.0000.0000.0000] # VARIATION SELECTOR-29
+E010D ; [.0000.0000.0000] # VARIATION SELECTOR-30
+E010E ; [.0000.0000.0000] # VARIATION SELECTOR-31
+E010F ; [.0000.0000.0000] # VARIATION SELECTOR-32
+E0110 ; [.0000.0000.0000] # VARIATION SELECTOR-33
+E0111 ; [.0000.0000.0000] # VARIATION SELECTOR-34
+E0112 ; [.0000.0000.0000] # VARIATION SELECTOR-35
+E0113 ; [.0000.0000.0000] # VARIATION SELECTOR-36
+E0114 ; [.0000.0000.0000] # VARIATION SELECTOR-37
+E0115 ; [.0000.0000.0000] # VARIATION SELECTOR-38
+E0116 ; [.0000.0000.0000] # VARIATION SELECTOR-39
+E0117 ; [.0000.0000.0000] # VARIATION SELECTOR-40
+E0118 ; [.0000.0000.0000] # VARIATION SELECTOR-41
+E0119 ; [.0000.0000.0000] # VARIATION SELECTOR-42
+E011A ; [.0000.0000.0000] # VARIATION SELECTOR-43
+E011B ; [.0000.0000.0000] # VARIATION SELECTOR-44
+E011C ; [.0000.0000.0000] # VARIATION SELECTOR-45
+E011D ; [.0000.0000.0000] # VARIATION SELECTOR-46
+E011E ; [.0000.0000.0000] # VARIATION SELECTOR-47
+E011F ; [.0000.0000.0000] # VARIATION SELECTOR-48
+E0120 ; [.0000.0000.0000] # VARIATION SELECTOR-49
+E0121 ; [.0000.0000.0000] # VARIATION SELECTOR-50
+E0122 ; [.0000.0000.0000] # VARIATION SELECTOR-51
+E0123 ; [.0000.0000.0000] # VARIATION SELECTOR-52
+E0124 ; [.0000.0000.0000] # VARIATION SELECTOR-53
+E0125 ; [.0000.0000.0000] # VARIATION SELECTOR-54
+E0126 ; [.0000.0000.0000] # VARIATION SELECTOR-55
+E0127 ; [.0000.0000.0000] # VARIATION SELECTOR-56
+E0128 ; [.0000.0000.0000] # VARIATION SELECTOR-57
+E0129 ; [.0000.0000.0000] # VARIATION SELECTOR-58
+E012A ; [.0000.0000.0000] # VARIATION SELECTOR-59
+E012B ; [.0000.0000.0000] # VARIATION SELECTOR-60
+E012C ; [.0000.0000.0000] # VARIATION SELECTOR-61
+E012D ; [.0000.0000.0000] # VARIATION SELECTOR-62
+E012E ; [.0000.0000.0000] # VARIATION SELECTOR-63
+E012F ; [.0000.0000.0000] # VARIATION SELECTOR-64
+E0130 ; [.0000.0000.0000] # VARIATION SELECTOR-65
+E0131 ; [.0000.0000.0000] # VARIATION SELECTOR-66
+E0132 ; [.0000.0000.0000] # VARIATION SELECTOR-67
+E0133 ; [.0000.0000.0000] # VARIATION SELECTOR-68
+E0134 ; [.0000.0000.0000] # VARIATION SELECTOR-69
+E0135 ; [.0000.0000.0000] # VARIATION SELECTOR-70
+E0136 ; [.0000.0000.0000] # VARIATION SELECTOR-71
+E0137 ; [.0000.0000.0000] # VARIATION SELECTOR-72
+E0138 ; [.0000.0000.0000] # VARIATION SELECTOR-73
+E0139 ; [.0000.0000.0000] # VARIATION SELECTOR-74
+E013A ; [.0000.0000.0000] # VARIATION SELECTOR-75
+E013B ; [.0000.0000.0000] # VARIATION SELECTOR-76
+E013C ; [.0000.0000.0000] # VARIATION SELECTOR-77
+E013D ; [.0000.0000.0000] # VARIATION SELECTOR-78
+E013E ; [.0000.0000.0000] # VARIATION SELECTOR-79
+E013F ; [.0000.0000.0000] # VARIATION SELECTOR-80
+E0140 ; [.0000.0000.0000] # VARIATION SELECTOR-81
+E0141 ; [.0000.0000.0000] # VARIATION SELECTOR-82
+E0142 ; [.0000.0000.0000] # VARIATION SELECTOR-83
+E0143 ; [.0000.0000.0000] # VARIATION SELECTOR-84
+E0144 ; [.0000.0000.0000] # VARIATION SELECTOR-85
+E0145 ; [.0000.0000.0000] # VARIATION SELECTOR-86
+E0146 ; [.0000.0000.0000] # VARIATION SELECTOR-87
+E0147 ; [.0000.0000.0000] # VARIATION SELECTOR-88
+E0148 ; [.0000.0000.0000] # VARIATION SELECTOR-89
+E0149 ; [.0000.0000.0000] # VARIATION SELECTOR-90
+E014A ; [.0000.0000.0000] # VARIATION SELECTOR-91
+E014B ; [.0000.0000.0000] # VARIATION SELECTOR-92
+E014C ; [.0000.0000.0000] # VARIATION SELECTOR-93
+E014D ; [.0000.0000.0000] # VARIATION SELECTOR-94
+E014E ; [.0000.0000.0000] # VARIATION SELECTOR-95
+E014F ; [.0000.0000.0000] # VARIATION SELECTOR-96
+E0150 ; [.0000.0000.0000] # VARIATION SELECTOR-97
+E0151 ; [.0000.0000.0000] # VARIATION SELECTOR-98
+E0152 ; [.0000.0000.0000] # VARIATION SELECTOR-99
+E0153 ; [.0000.0000.0000] # VARIATION SELECTOR-100
+E0154 ; [.0000.0000.0000] # VARIATION SELECTOR-101
+E0155 ; [.0000.0000.0000] # VARIATION SELECTOR-102
+E0156 ; [.0000.0000.0000] # VARIATION SELECTOR-103
+E0157 ; [.0000.0000.0000] # VARIATION SELECTOR-104
+E0158 ; [.0000.0000.0000] # VARIATION SELECTOR-105
+E0159 ; [.0000.0000.0000] # VARIATION SELECTOR-106
+E015A ; [.0000.0000.0000] # VARIATION SELECTOR-107
+E015B ; [.0000.0000.0000] # VARIATION SELECTOR-108
+E015C ; [.0000.0000.0000] # VARIATION SELECTOR-109
+E015D ; [.0000.0000.0000] # VARIATION SELECTOR-110
+E015E ; [.0000.0000.0000] # VARIATION SELECTOR-111
+E015F ; [.0000.0000.0000] # VARIATION SELECTOR-112
+E0160 ; [.0000.0000.0000] # VARIATION SELECTOR-113
+E0161 ; [.0000.0000.0000] # VARIATION SELECTOR-114
+E0162 ; [.0000.0000.0000] # VARIATION SELECTOR-115
+E0163 ; [.0000.0000.0000] # VARIATION SELECTOR-116
+E0164 ; [.0000.0000.0000] # VARIATION SELECTOR-117
+E0165 ; [.0000.0000.0000] # VARIATION SELECTOR-118
+E0166 ; [.0000.0000.0000] # VARIATION SELECTOR-119
+E0167 ; [.0000.0000.0000] # VARIATION SELECTOR-120
+E0168 ; [.0000.0000.0000] # VARIATION SELECTOR-121
+E0169 ; [.0000.0000.0000] # VARIATION SELECTOR-122
+E016A ; [.0000.0000.0000] # VARIATION SELECTOR-123
+E016B ; [.0000.0000.0000] # VARIATION SELECTOR-124
+E016C ; [.0000.0000.0000] # VARIATION SELECTOR-125
+E016D ; [.0000.0000.0000] # VARIATION SELECTOR-126
+E016E ; [.0000.0000.0000] # VARIATION SELECTOR-127
+E016F ; [.0000.0000.0000] # VARIATION SELECTOR-128
+E0170 ; [.0000.0000.0000] # VARIATION SELECTOR-129
+E0171 ; [.0000.0000.0000] # VARIATION SELECTOR-130
+E0172 ; [.0000.0000.0000] # VARIATION SELECTOR-131
+E0173 ; [.0000.0000.0000] # VARIATION SELECTOR-132
+E0174 ; [.0000.0000.0000] # VARIATION SELECTOR-133
+E0175 ; [.0000.0000.0000] # VARIATION SELECTOR-134
+E0176 ; [.0000.0000.0000] # VARIATION SELECTOR-135
+E0177 ; [.0000.0000.0000] # VARIATION SELECTOR-136
+E0178 ; [.0000.0000.0000] # VARIATION SELECTOR-137
+E0179 ; [.0000.0000.0000] # VARIATION SELECTOR-138
+E017A ; [.0000.0000.0000] # VARIATION SELECTOR-139
+E017B ; [.0000.0000.0000] # VARIATION SELECTOR-140
+E017C ; [.0000.0000.0000] # VARIATION SELECTOR-141
+E017D ; [.0000.0000.0000] # VARIATION SELECTOR-142
+E017E ; [.0000.0000.0000] # VARIATION SELECTOR-143
+E017F ; [.0000.0000.0000] # VARIATION SELECTOR-144
+E0180 ; [.0000.0000.0000] # VARIATION SELECTOR-145
+E0181 ; [.0000.0000.0000] # VARIATION SELECTOR-146
+E0182 ; [.0000.0000.0000] # VARIATION SELECTOR-147
+E0183 ; [.0000.0000.0000] # VARIATION SELECTOR-148
+E0184 ; [.0000.0000.0000] # VARIATION SELECTOR-149
+E0185 ; [.0000.0000.0000] # VARIATION SELECTOR-150
+E0186 ; [.0000.0000.0000] # VARIATION SELECTOR-151
+E0187 ; [.0000.0000.0000] # VARIATION SELECTOR-152
+E0188 ; [.0000.0000.0000] # VARIATION SELECTOR-153
+E0189 ; [.0000.0000.0000] # VARIATION SELECTOR-154
+E018A ; [.0000.0000.0000] # VARIATION SELECTOR-155
+E018B ; [.0000.0000.0000] # VARIATION SELECTOR-156
+E018C ; [.0000.0000.0000] # VARIATION SELECTOR-157
+E018D ; [.0000.0000.0000] # VARIATION SELECTOR-158
+E018E ; [.0000.0000.0000] # VARIATION SELECTOR-159
+E018F ; [.0000.0000.0000] # VARIATION SELECTOR-160
+E0190 ; [.0000.0000.0000] # VARIATION SELECTOR-161
+E0191 ; [.0000.0000.0000] # VARIATION SELECTOR-162
+E0192 ; [.0000.0000.0000] # VARIATION SELECTOR-163
+E0193 ; [.0000.0000.0000] # VARIATION SELECTOR-164
+E0194 ; [.0000.0000.0000] # VARIATION SELECTOR-165
+E0195 ; [.0000.0000.0000] # VARIATION SELECTOR-166
+E0196 ; [.0000.0000.0000] # VARIATION SELECTOR-167
+E0197 ; [.0000.0000.0000] # VARIATION SELECTOR-168
+E0198 ; [.0000.0000.0000] # VARIATION SELECTOR-169
+E0199 ; [.0000.0000.0000] # VARIATION SELECTOR-170
+E019A ; [.0000.0000.0000] # VARIATION SELECTOR-171
+E019B ; [.0000.0000.0000] # VARIATION SELECTOR-172
+E019C ; [.0000.0000.0000] # VARIATION SELECTOR-173
+E019D ; [.0000.0000.0000] # VARIATION SELECTOR-174
+E019E ; [.0000.0000.0000] # VARIATION SELECTOR-175
+E019F ; [.0000.0000.0000] # VARIATION SELECTOR-176
+E01A0 ; [.0000.0000.0000] # VARIATION SELECTOR-177
+E01A1 ; [.0000.0000.0000] # VARIATION SELECTOR-178
+E01A2 ; [.0000.0000.0000] # VARIATION SELECTOR-179
+E01A3 ; [.0000.0000.0000] # VARIATION SELECTOR-180
+E01A4 ; [.0000.0000.0000] # VARIATION SELECTOR-181
+E01A5 ; [.0000.0000.0000] # VARIATION SELECTOR-182
+E01A6 ; [.0000.0000.0000] # VARIATION SELECTOR-183
+E01A7 ; [.0000.0000.0000] # VARIATION SELECTOR-184
+E01A8 ; [.0000.0000.0000] # VARIATION SELECTOR-185
+E01A9 ; [.0000.0000.0000] # VARIATION SELECTOR-186
+E01AA ; [.0000.0000.0000] # VARIATION SELECTOR-187
+E01AB ; [.0000.0000.0000] # VARIATION SELECTOR-188
+E01AC ; [.0000.0000.0000] # VARIATION SELECTOR-189
+E01AD ; [.0000.0000.0000] # VARIATION SELECTOR-190
+E01AE ; [.0000.0000.0000] # VARIATION SELECTOR-191
+E01AF ; [.0000.0000.0000] # VARIATION SELECTOR-192
+E01B0 ; [.0000.0000.0000] # VARIATION SELECTOR-193
+E01B1 ; [.0000.0000.0000] # VARIATION SELECTOR-194
+E01B2 ; [.0000.0000.0000] # VARIATION SELECTOR-195
+E01B3 ; [.0000.0000.0000] # VARIATION SELECTOR-196
+E01B4 ; [.0000.0000.0000] # VARIATION SELECTOR-197
+E01B5 ; [.0000.0000.0000] # VARIATION SELECTOR-198
+E01B6 ; [.0000.0000.0000] # VARIATION SELECTOR-199
+E01B7 ; [.0000.0000.0000] # VARIATION SELECTOR-200
+E01B8 ; [.0000.0000.0000] # VARIATION SELECTOR-201
+E01B9 ; [.0000.0000.0000] # VARIATION SELECTOR-202
+E01BA ; [.0000.0000.0000] # VARIATION SELECTOR-203
+E01BB ; [.0000.0000.0000] # VARIATION SELECTOR-204
+E01BC ; [.0000.0000.0000] # VARIATION SELECTOR-205
+E01BD ; [.0000.0000.0000] # VARIATION SELECTOR-206
+E01BE ; [.0000.0000.0000] # VARIATION SELECTOR-207
+E01BF ; [.0000.0000.0000] # VARIATION SELECTOR-208
+E01C0 ; [.0000.0000.0000] # VARIATION SELECTOR-209
+E01C1 ; [.0000.0000.0000] # VARIATION SELECTOR-210
+E01C2 ; [.0000.0000.0000] # VARIATION SELECTOR-211
+E01C3 ; [.0000.0000.0000] # VARIATION SELECTOR-212
+E01C4 ; [.0000.0000.0000] # VARIATION SELECTOR-213
+E01C5 ; [.0000.0000.0000] # VARIATION SELECTOR-214
+E01C6 ; [.0000.0000.0000] # VARIATION SELECTOR-215
+E01C7 ; [.0000.0000.0000] # VARIATION SELECTOR-216
+E01C8 ; [.0000.0000.0000] # VARIATION SELECTOR-217
+E01C9 ; [.0000.0000.0000] # VARIATION SELECTOR-218
+E01CA ; [.0000.0000.0000] # VARIATION SELECTOR-219
+E01CB ; [.0000.0000.0000] # VARIATION SELECTOR-220
+E01CC ; [.0000.0000.0000] # VARIATION SELECTOR-221
+E01CD ; [.0000.0000.0000] # VARIATION SELECTOR-222
+E01CE ; [.0000.0000.0000] # VARIATION SELECTOR-223
+E01CF ; [.0000.0000.0000] # VARIATION SELECTOR-224
+E01D0 ; [.0000.0000.0000] # VARIATION SELECTOR-225
+E01D1 ; [.0000.0000.0000] # VARIATION SELECTOR-226
+E01D2 ; [.0000.0000.0000] # VARIATION SELECTOR-227
+E01D3 ; [.0000.0000.0000] # VARIATION SELECTOR-228
+E01D4 ; [.0000.0000.0000] # VARIATION SELECTOR-229
+E01D5 ; [.0000.0000.0000] # VARIATION SELECTOR-230
+E01D6 ; [.0000.0000.0000] # VARIATION SELECTOR-231
+E01D7 ; [.0000.0000.0000] # VARIATION SELECTOR-232
+E01D8 ; [.0000.0000.0000] # VARIATION SELECTOR-233
+E01D9 ; [.0000.0000.0000] # VARIATION SELECTOR-234
+E01DA ; [.0000.0000.0000] # VARIATION SELECTOR-235
+E01DB ; [.0000.0000.0000] # VARIATION SELECTOR-236
+E01DC ; [.0000.0000.0000] # VARIATION SELECTOR-237
+E01DD ; [.0000.0000.0000] # VARIATION SELECTOR-238
+E01DE ; [.0000.0000.0000] # VARIATION SELECTOR-239
+E01DF ; [.0000.0000.0000] # VARIATION SELECTOR-240
+E01E0 ; [.0000.0000.0000] # VARIATION SELECTOR-241
+E01E1 ; [.0000.0000.0000] # VARIATION SELECTOR-242
+E01E2 ; [.0000.0000.0000] # VARIATION SELECTOR-243
+E01E3 ; [.0000.0000.0000] # VARIATION SELECTOR-244
+E01E4 ; [.0000.0000.0000] # VARIATION SELECTOR-245
+E01E5 ; [.0000.0000.0000] # VARIATION SELECTOR-246
+E01E6 ; [.0000.0000.0000] # VARIATION SELECTOR-247
+E01E7 ; [.0000.0000.0000] # VARIATION SELECTOR-248
+E01E8 ; [.0000.0000.0000] # VARIATION SELECTOR-249
+E01E9 ; [.0000.0000.0000] # VARIATION SELECTOR-250
+E01EA ; [.0000.0000.0000] # VARIATION SELECTOR-251
+E01EB ; [.0000.0000.0000] # VARIATION SELECTOR-252
+E01EC ; [.0000.0000.0000] # VARIATION SELECTOR-253
+E01ED ; [.0000.0000.0000] # VARIATION SELECTOR-254
+E01EE ; [.0000.0000.0000] # VARIATION SELECTOR-255
+E01EF ; [.0000.0000.0000] # VARIATION SELECTOR-256
+0009 ; [*0201.0020.0002] # HORIZONTAL TABULATION (in ISO 6429)
+000A ; [*0202.0020.0002] # LINE FEED (in ISO 6429)
+000B ; [*0203.0020.0002] # VERTICAL TABULATION (in ISO 6429)
+000C ; [*0204.0020.0002] # FORM FEED (in ISO 6429)
+000D ; [*0205.0020.0002] # CARRIAGE RETURN (in ISO 6429)
+0020 ; [*0209.0020.0002] # SPACE
+0021 ; [*0268.0020.0002] # EXCLAMATION MARK
+0022 ; [*0329.0020.0002] # QUOTATION MARK
+0023 ; [*03C0.0020.0002] # NUMBER SIGN
+0025 ; [*03C1.0020.0002] # PERCENT SIGN
+0026 ; [*03BD.0020.0002] # AMPERSAND
+0027 ; [*0322.0020.0002] # APOSTROPHE
+0028 ; [*0334.0020.0002] # LEFT PARENTHESIS
+0029 ; [*0335.0020.0002] # RIGHT PARENTHESIS
+002A ; [*03B5.0020.0002] # ASTERISK
+002B ; [*069D.0020.0002] # PLUS SIGN
+002C ; [*0224.0020.0002] # COMMA
+002D ; [*020D.0020.0002] # HYPHEN-MINUS
+002E ; [*0281.0020.0002] # FULL STOP
+002F ; [*03BA.0020.0002] # SOLIDUS
+003A ; [*0241.0020.0002] # COLON
+003B ; [*023B.0020.0002] # SEMICOLON
+003C ; [*06A1.0020.0002] # LESS-THAN SIGN
+003D ; [*06A2.0020.0002] # EQUALS SIGN
+003E ; [*06A3.0020.0002] # GREATER-THAN SIGN
+003F ; [*026F.0020.0002] # QUESTION MARK
+0040 ; [*03B4.0020.0002] # COMMERCIAL AT
+005B ; [*0336.0020.0002] # LEFT SQUARE BRACKET
+005C ; [*03BB.0020.0002] # REVERSE SOLIDUS
+005D ; [*0337.0020.0002] # RIGHT SQUARE BRACKET
+005E ; [*04CC.0020.0002] # CIRCUMFLEX ACCENT
+005F ; [*020B.0020.0002] # LOW LINE
+0060 ; [*04C9.0020.0002] # GRAVE ACCENT
+007B ; [*0338.0020.0002] # LEFT CURLY BRACKET
+007C ; [*06A5.0020.0002] # VERTICAL LINE
+007D ; [*0339.0020.0002] # RIGHT CURLY BRACKET
+007E ; [*06A7.0020.0002] # TILDE
+0085 ; [*0206.0020.0002] # NEXT LINE (in ISO 6429)
+00A0 ; [*0209.0020.001B] # NO-BREAK SPACE
+00A1 ; [*0269.0020.0002] # INVERTED EXCLAMATION MARK
+00A6 ; [*06A6.0020.0002] # BROKEN BAR
+00A7 ; [*03AE.0020.0002] # SECTION SIGN
+00A8 ; [*04D0.0020.0002] # DIAERESIS
+00A9 ; [*0609.0020.0002] # COPYRIGHT SIGN
+00AB ; [*0332.0020.0002] # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+00AC ; [*06A4.0020.0002] # NOT SIGN
+00AE ; [*060B.0020.0002] # REGISTERED SIGN
+00AF ; [*04CD.0020.0002] # MACRON
+00B0 ; [*054C.0020.0002] # DEGREE SIGN
+00B1 ; [*069E.0020.0002] # PLUS-MINUS SIGN
+00B4 ; [*04CA.0020.0002] # ACUTE ACCENT
+00B6 ; [*03B0.0020.0002] # PILCROW SIGN
+00B7 ; [*0296.0020.0002] # MIDDLE DOT
+00B8 ; [*04D3.0020.0002] # CEDILLA
+00BB ; [*0333.0020.0002] # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+00BF ; [*0270.0020.0002] # INVERTED QUESTION MARK
+00D7 ; [*06A0.0020.0002] # MULTIPLICATION SIGN
+00F7 ; [*069F.0020.0002] # DIVISION SIGN
+02B9 ; [*04DA.0020.0002] # MODIFIER LETTER PRIME
+02BA ; [*04DC.0020.0002] # MODIFIER LETTER DOUBLE PRIME
+02C2 ; [*04DD.0020.0002] # MODIFIER LETTER LEFT ARROWHEAD
+02C3 ; [*04DE.0020.0002] # MODIFIER LETTER RIGHT ARROWHEAD
+02C4 ; [*04DF.0020.0002] # MODIFIER LETTER UP ARROWHEAD
+02C5 ; [*04E0.0020.0002] # MODIFIER LETTER DOWN ARROWHEAD
+02C6 ; [*04E1.0020.0002] # MODIFIER LETTER CIRCUMFLEX ACCENT
+02C7 ; [*04E2.0020.0002] # CARON
+02C8 ; [*04E3.0020.0002] # MODIFIER LETTER VERTICAL LINE
+02C9 ; [*04E4.0020.0002] # MODIFIER LETTER MACRON
+02CA ; [*04E5.0020.0002] # MODIFIER LETTER ACUTE ACCENT
+02CB ; [*04E6.0020.0002] # MODIFIER LETTER GRAVE ACCENT
+02CC ; [*04E7.0020.0002] # MODIFIER LETTER LOW VERTICAL LINE
+02CD ; [*04E8.0020.0002] # MODIFIER LETTER LOW MACRON
+02CE ; [*04E9.0020.0002] # MODIFIER LETTER LOW GRAVE ACCENT
+02CF ; [*04EA.0020.0002] # MODIFIER LETTER LOW ACUTE ACCENT
+02D2 ; [*04EB.0020.0002] # MODIFIER LETTER CENTRED RIGHT HALF RING
+02D3 ; [*04EC.0020.0002] # MODIFIER LETTER CENTRED LEFT HALF RING
+02D4 ; [*04ED.0020.0002] # MODIFIER LETTER UP TACK
+02D5 ; [*04EE.0020.0002] # MODIFIER LETTER DOWN TACK
+02D6 ; [*04F1.0020.0002] # MODIFIER LETTER PLUS SIGN
+02D7 ; [*04F2.0020.0002] # MODIFIER LETTER MINUS SIGN
+02D8 ; [*04CE.0020.0002] # BREVE
+02D9 ; [*04CF.0020.0002] # DOT ABOVE
+02DA ; [*04D1.0020.0002] # RING ABOVE
+02DB ; [*04D4.0020.0002] # OGONEK
+02DC ; [*04CB.0020.0002] # SMALL TILDE
+02DD ; [*04D2.0020.0002] # DOUBLE ACUTE ACCENT
+02DE ; [*04F3.0020.0002] # MODIFIER LETTER RHOTIC HOOK
+02DF ; [*04F4.0020.0002] # MODIFIER LETTER CROSS ACCENT
+02E5 ; [*04F5.0020.0002] # MODIFIER LETTER EXTRA-HIGH TONE BAR
+02E6 ; [*04F6.0020.0002] # MODIFIER LETTER HIGH TONE BAR
+02E7 ; [*04F7.0020.0002] # MODIFIER LETTER MID TONE BAR
+02E8 ; [*04F8.0020.0002] # MODIFIER LETTER LOW TONE BAR
+02E9 ; [*04F9.0020.0002] # MODIFIER LETTER EXTRA-LOW TONE BAR
+02EA ; [*04FA.0020.0002] # MODIFIER LETTER YIN DEPARTING TONE MARK
+02EB ; [*04FB.0020.0002] # MODIFIER LETTER YANG DEPARTING TONE MARK
+02EC ; [*04FC.0020.0002] # MODIFIER LETTER VOICING
+02ED ; [*04FD.0020.0002] # MODIFIER LETTER UNASPIRATED
+02EF ; [*04FE.0020.0002] # MODIFIER LETTER LOW DOWN ARROWHEAD
+02F0 ; [*04FF.0020.0002] # MODIFIER LETTER LOW UP ARROWHEAD
+02F1 ; [*0500.0020.0002] # MODIFIER LETTER LOW LEFT ARROWHEAD
+02F2 ; [*0501.0020.0002] # MODIFIER LETTER LOW RIGHT ARROWHEAD
+02F3 ; [*0502.0020.0002] # MODIFIER LETTER LOW RING
+02F4 ; [*0503.0020.0002] # MODIFIER LETTER MIDDLE GRAVE ACCENT
+02F5 ; [*0504.0020.0002] # MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
+02F6 ; [*0505.0020.0002] # MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT
+02F7 ; [*0506.0020.0002] # MODIFIER LETTER LOW TILDE
+02F8 ; [*0507.0020.0002] # MODIFIER LETTER RAISED COLON
+02F9 ; [*0508.0020.0002] # MODIFIER LETTER BEGIN HIGH TONE
+02FA ; [*0509.0020.0002] # MODIFIER LETTER END HIGH TONE
+02FB ; [*050A.0020.0002] # MODIFIER LETTER BEGIN LOW TONE
+02FC ; [*050B.0020.0002] # MODIFIER LETTER END LOW TONE
+02FD ; [*050C.0020.0002] # MODIFIER LETTER SHELF
+02FE ; [*050D.0020.0002] # MODIFIER LETTER OPEN SHELF
+02FF ; [*050E.0020.0002] # MODIFIER LETTER LOW LEFT ARROW
+034F ; [.0000.0000.0000] # COMBINING GRAPHEME JOINER
+0374 ; [*04DA.0020.0002] # GREEK NUMERAL SIGN
+0375 ; [*04DB.0020.0002] # GREEK LOWER NUMERAL SIGN
+037E ; [*023B.0020.0002] # GREEK QUESTION MARK
+0384 ; [*04CA.0020.0002] # GREEK TONOS
+0385 ; [*04D0.0020.0002][.0000.0024.0002] # GREEK DIALYTIKA TONOS
+0387 ; [*0296.0020.0002] # GREEK ANO TELEIA
+03F6 ; [*0698.0020.0002] # GREEK REVERSED LUNATE EPSILON SYMBOL
+0482 ; [*054D.0020.0002] # CYRILLIC THOUSANDS SIGN
+0488 ; [.0000.0000.0000] # COMBINING CYRILLIC HUNDRED THOUSANDS SIGN
+0489 ; [.0000.0000.0000] # COMBINING CYRILLIC MILLIONS SIGN
+055A ; [*03F8.0020.0002] # ARMENIAN APOSTROPHE
+055B ; [*03F9.0020.0002] # ARMENIAN EMPHASIS MARK
+055C ; [*026B.0020.0002] # ARMENIAN EXCLAMATION MARK
+055D ; [*022B.0020.0002] # ARMENIAN COMMA
+055E ; [*0273.0020.0002] # ARMENIAN QUESTION MARK
+055F ; [*03FA.0020.0002] # ARMENIAN ABBREVIATION MARK
+0589 ; [*0242.0020.0002] # ARMENIAN FULL STOP
+058A ; [*020E.0020.0002] # ARMENIAN HYPHEN
+058D ; [*054E.0020.0002] # RIGHT-FACING ARMENIAN ETERNITY SIGN
+058E ; [*054F.0020.0002] # LEFT-FACING ARMENIAN ETERNITY SIGN
+0591 ; [.0000.0000.0000] # HEBREW ACCENT ETNAHTA
+0592 ; [.0000.0000.0000] # HEBREW ACCENT SEGOL
+0593 ; [.0000.0000.0000] # HEBREW ACCENT SHALSHELET
+0594 ; [.0000.0000.0000] # HEBREW ACCENT ZAQEF QATAN
+0595 ; [.0000.0000.0000] # HEBREW ACCENT ZAQEF GADOL
+0596 ; [.0000.0000.0000] # HEBREW ACCENT TIPEHA
+0597 ; [.0000.0000.0000] # HEBREW ACCENT REVIA
+0598 ; [.0000.0000.0000] # HEBREW ACCENT ZARQA
+0599 ; [.0000.0000.0000] # HEBREW ACCENT PASHTA
+059A ; [.0000.0000.0000] # HEBREW ACCENT YETIV
+059B ; [.0000.0000.0000] # HEBREW ACCENT TEVIR
+059C ; [.0000.0000.0000] # HEBREW ACCENT GERESH
+059D ; [.0000.0000.0000] # HEBREW ACCENT GERESH MUQDAM
+059E ; [.0000.0000.0000] # HEBREW ACCENT GERSHAYIM
+059F ; [.0000.0000.0000] # HEBREW ACCENT QARNEY PARA
+05A0 ; [.0000.0000.0000] # HEBREW ACCENT TELISHA GEDOLA
+05A1 ; [.0000.0000.0000] # HEBREW ACCENT PAZER
+05A2 ; [.0000.0000.0000] # HEBREW ACCENT ATNAH HAFUKH
+05A3 ; [.0000.0000.0000] # HEBREW ACCENT MUNAH
+05A4 ; [.0000.0000.0000] # HEBREW ACCENT MAHAPAKH
+05A5 ; [.0000.0000.0000] # HEBREW ACCENT MERKHA
+05A6 ; [.0000.0000.0000] # HEBREW ACCENT MERKHA KEFULA
+05A7 ; [.0000.0000.0000] # HEBREW ACCENT DARGA
+05A8 ; [.0000.0000.0000] # HEBREW ACCENT QADMA
+05A9 ; [.0000.0000.0000] # HEBREW ACCENT TELISHA QETANA
+05AA ; [.0000.0000.0000] # HEBREW ACCENT YERAH BEN YOMO
+05AB ; [.0000.0000.0000] # HEBREW ACCENT OLE
+05AC ; [.0000.0000.0000] # HEBREW ACCENT ILUY
+05AD ; [.0000.0000.0000] # HEBREW ACCENT DEHI
+05AE ; [.0000.0000.0000] # HEBREW ACCENT ZINOR
+05AF ; [.0000.0000.0000] # HEBREW MARK MASORA CIRCLE
+05BD ; [.0000.0000.0000] # HEBREW POINT METEG
+05BE ; [*03FB.0020.0002] # HEBREW PUNCTUATION MAQAF
+05C0 ; [*03FC.0020.0002] # HEBREW PUNCTUATION PASEQ
+05C3 ; [*03FD.0020.0002] # HEBREW PUNCTUATION SOF PASUQ
+05C4 ; [.0000.0000.0000] # HEBREW MARK UPPER DOT
+05C5 ; [.0000.0000.0000] # HEBREW MARK LOWER DOT
+05C6 ; [*03FE.0020.0002] # HEBREW PUNCTUATION NUN HAFUKHA
+05F3 ; [*03FF.0020.0002] # HEBREW PUNCTUATION GERESH
+05F4 ; [*0400.0020.0002] # HEBREW PUNCTUATION GERSHAYIM
+0600 ; [.0000.0000.0000] # ARABIC NUMBER SIGN
+0601 ; [.0000.0000.0000] # ARABIC SIGN SANAH
+0602 ; [.0000.0000.0000] # ARABIC FOOTNOTE MARKER
+0603 ; [.0000.0000.0000] # ARABIC SIGN SAFHA
+0604 ; [.0000.0000.0000] # ARABIC SIGN SAMVAT
+0605 ; [.0000.0000.0000] # ARABIC NUMBER MARK ABOVE
+0606 ; [*06B4.0020.0002] # ARABIC-INDIC CUBE ROOT
+0607 ; [*06B6.0020.0002] # ARABIC-INDIC FOURTH ROOT
+0608 ; [*0550.0020.0002] # ARABIC RAY
+0609 ; [*03C4.0020.0002] # ARABIC-INDIC PER MILLE SIGN
+060A ; [*03C6.0020.0002] # ARABIC-INDIC PER TEN THOUSAND SIGN
+060C ; [*022C.0020.0002] # ARABIC COMMA
+060D ; [*022D.0020.0002] # ARABIC DATE SEPARATOR
+060E ; [*0553.0020.0002] # ARABIC POETIC VERSE SIGN
+060F ; [*0554.0020.0002] # ARABIC SIGN MISRA
+0610 ; [.0000.0000.0000] # ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM
+0611 ; [.0000.0000.0000] # ARABIC SIGN ALAYHE ASSALLAM
+0612 ; [.0000.0000.0000] # ARABIC SIGN RAHMATULLAH ALAYHE
+0613 ; [.0000.0000.0000] # ARABIC SIGN RADI ALLAHOU ANHU
+0614 ; [.0000.0000.0000] # ARABIC SIGN TAKHALLUS
+0615 ; [.0000.0000.0000] # ARABIC SMALL HIGH TAH
+0616 ; [.0000.0000.0000] # ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH
+0617 ; [.0000.0000.0000] # ARABIC SMALL HIGH ZAIN
+0618 ; [.0000.0000.0000] # ARABIC SMALL FATHA
+0619 ; [.0000.0000.0000] # ARABIC SMALL DAMMA
+061A ; [.0000.0000.0000] # ARABIC SMALL KASRA
+061B ; [*023C.0020.0002] # ARABIC SEMICOLON
+061D ; [*02D0.0020.0002] # ARABIC END OF TEXT MARK
+061E ; [*0243.0020.0002] # ARABIC TRIPLE DOT PUNCTUATION MARK
+061F ; [*0274.0020.0002] # ARABIC QUESTION MARK
+0640 ; [.0000.0000.0000] # ARABIC TATWEEL
+066A ; [*03C2.0020.0002] # ARABIC PERCENT SIGN
+066B ; [*022E.0020.0002] # ARABIC DECIMAL SEPARATOR
+066C ; [*022F.0020.0002] # ARABIC THOUSANDS SEPARATOR
+066D ; [*03B8.0020.0002] # ARABIC FIVE POINTED STAR
+06D4 ; [*0283.0020.0002] # ARABIC FULL STOP
+06D6 ; [.0000.0000.0000] # ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA
+06D7 ; [.0000.0000.0000] # ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA
+06D8 ; [.0000.0000.0000] # ARABIC SMALL HIGH MEEM INITIAL FORM
+06D9 ; [.0000.0000.0000] # ARABIC SMALL HIGH LAM ALEF
+06DA ; [.0000.0000.0000] # ARABIC SMALL HIGH JEEM
+06DB ; [.0000.0000.0000] # ARABIC SMALL HIGH THREE DOTS
+06DC ; [.0000.0000.0000] # ARABIC SMALL HIGH SEEN
+06DD ; [.0000.0000.0000] # ARABIC END OF AYAH
+06DE ; [*0555.0020.0002] # ARABIC START OF RUB EL HIZB
+06DF ; [.0000.0000.0000] # ARABIC SMALL HIGH ROUNDED ZERO
+06E0 ; [.0000.0000.0000] # ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO
+06E1 ; [.0000.0000.0000] # ARABIC SMALL HIGH DOTLESS HEAD OF KHAH
+06E2 ; [.0000.0000.0000] # ARABIC SMALL HIGH MEEM ISOLATED FORM
+06E3 ; [.0000.0000.0000] # ARABIC SMALL LOW SEEN
+06E4 ; [.0000.0000.0000] # ARABIC SMALL HIGH MADDA
+06E7 ; [.0000.0000.0000] # ARABIC SMALL HIGH YEH
+06E8 ; [.0000.0000.0000] # ARABIC SMALL HIGH NOON
+06E9 ; [*0556.0020.0002] # ARABIC PLACE OF SAJDAH
+06EA ; [.0000.0000.0000] # ARABIC EMPTY CENTRE LOW STOP
+06EB ; [.0000.0000.0000] # ARABIC EMPTY CENTRE HIGH STOP
+06EC ; [.0000.0000.0000] # ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE
+06ED ; [.0000.0000.0000] # ARABIC SMALL LOW MEEM
+0700 ; [*02D1.0020.0002] # SYRIAC END OF PARAGRAPH
+0701 ; [*0284.0020.0002] # SYRIAC SUPRALINEAR FULL STOP
+0702 ; [*0285.0020.0002] # SYRIAC SUBLINEAR FULL STOP
+0703 ; [*0244.0020.0002] # SYRIAC SUPRALINEAR COLON
+0704 ; [*0245.0020.0002] # SYRIAC SUBLINEAR COLON
+0705 ; [*0246.0020.0002] # SYRIAC HORIZONTAL COLON
+0706 ; [*0247.0020.0002] # SYRIAC COLON SKEWED LEFT
+0707 ; [*0248.0020.0002] # SYRIAC COLON SKEWED RIGHT
+0708 ; [*0249.0020.0002] # SYRIAC SUPRALINEAR COLON SKEWED LEFT
+0709 ; [*0275.0020.0002] # SYRIAC SUBLINEAR COLON SKEWED RIGHT
+070A ; [*0401.0020.0002] # SYRIAC CONTRACTION
+070B ; [*0402.0020.0002] # SYRIAC HARKLEAN OBELUS
+070C ; [*0403.0020.0002] # SYRIAC HARKLEAN METOBELUS
+070D ; [*0404.0020.0002] # SYRIAC HARKLEAN ASTERISCUS
+070F ; [.0000.0000.0000] # SYRIAC ABBREVIATION MARK
+0740 ; [.0000.0000.0000] # SYRIAC FEMININE DOT
+0743 ; [.0000.0000.0000] # SYRIAC TWO VERTICAL DOTS ABOVE
+0744 ; [.0000.0000.0000] # SYRIAC TWO VERTICAL DOTS BELOW
+0747 ; [.0000.0000.0000] # SYRIAC OBLIQUE LINE ABOVE
+0748 ; [.0000.0000.0000] # SYRIAC OBLIQUE LINE BELOW
+0749 ; [.0000.0000.0000] # SYRIAC MUSIC
+074A ; [.0000.0000.0000] # SYRIAC BARREKH
+07F6 ; [*057D.0020.0002] # NKO SYMBOL OO DENNEN
+07F7 ; [*02D2.0020.0002] # NKO SYMBOL GBAKURUNEN
+07F8 ; [*0230.0020.0002] # NKO COMMA
+07F9 ; [*026C.0020.0002] # NKO EXCLAMATION MARK
+07FA ; [.0000.0000.0000] # NKO LAJANYALAN
+0830 ; [*024A.0020.0002] # SAMARITAN PUNCTUATION NEQUDAA
+0831 ; [*024B.0020.0002] # SAMARITAN PUNCTUATION AFSAAQ
+0832 ; [*024C.0020.0002] # SAMARITAN PUNCTUATION ANGED
+0833 ; [*024D.0020.0002] # SAMARITAN PUNCTUATION BAU
+0834 ; [*024E.0020.0002] # SAMARITAN PUNCTUATION ATMAAU
+0835 ; [*024F.0020.0002] # SAMARITAN PUNCTUATION SHIYYAALAA
+0836 ; [*0250.0020.0002] # SAMARITAN ABBREVIATION MARK
+0837 ; [*0251.0020.0002] # SAMARITAN PUNCTUATION MELODIC QITSA
+0838 ; [*0252.0020.0002] # SAMARITAN PUNCTUATION ZIQAA
+0839 ; [*0253.0020.0002] # SAMARITAN PUNCTUATION QITSA
+083A ; [*0254.0020.0002] # SAMARITAN PUNCTUATION ZAEF
+083B ; [*0255.0020.0002] # SAMARITAN PUNCTUATION TURU
+083C ; [*0256.0020.0002] # SAMARITAN PUNCTUATION ARKAANU
+083D ; [*0257.0020.0002] # SAMARITAN PUNCTUATION SOF MASHFAAT
+083E ; [*0258.0020.0002] # SAMARITAN PUNCTUATION ANNAAU
+085E ; [*0405.0020.0002] # MANDAIC PUNCTUATION
+0888 ; [*056B.0020.0002] # ARABIC RAISED ROUND DOT
+0890 ; [.0000.0000.0000] # ARABIC POUND MARK ABOVE
+0891 ; [.0000.0000.0000] # ARABIC PIASTRE MARK ABOVE
+0898 ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD AL-JUZ
+0899 ; [.0000.0000.0000] # ARABIC SMALL LOW WORD ISHMAAM
+089A ; [.0000.0000.0000] # ARABIC SMALL LOW WORD IMAALA
+089B ; [.0000.0000.0000] # ARABIC SMALL LOW WORD TASHEEL
+089C ; [.0000.0000.0000] # ARABIC MADDA WAAJIB
+089D ; [.0000.0000.0000] # ARABIC SUPERSCRIPT ALEF MOKHASSAS
+08CA ; [.0000.0000.0000] # ARABIC SMALL HIGH FARSI YEH
+08CB ; [.0000.0000.0000] # ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW
+08CC ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD SAH
+08CD ; [.0000.0000.0000] # ARABIC SMALL HIGH ZAH
+08CE ; [.0000.0000.0000] # ARABIC LARGE ROUND DOT ABOVE
+08CF ; [.0000.0000.0000] # ARABIC LARGE ROUND DOT BELOW
+08D0 ; [.0000.0000.0000] # ARABIC SUKUN BELOW
+08D1 ; [.0000.0000.0000] # ARABIC LARGE CIRCLE BELOW
+08D2 ; [.0000.0000.0000] # ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW
+08D3 ; [.0000.0000.0000] # ARABIC SMALL LOW WAW
+08D4 ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD AR-RUB
+08D5 ; [.0000.0000.0000] # ARABIC SMALL HIGH SAD
+08D6 ; [.0000.0000.0000] # ARABIC SMALL HIGH AIN
+08D7 ; [.0000.0000.0000] # ARABIC SMALL HIGH QAF
+08D8 ; [.0000.0000.0000] # ARABIC SMALL HIGH NOON WITH KASRA
+08D9 ; [.0000.0000.0000] # ARABIC SMALL LOW NOON WITH KASRA
+08DA ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD ATH-THALATHA
+08DB ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD AS-SAJDA
+08DC ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD AN-NISF
+08DD ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD SAKTA
+08DE ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD QIF
+08DF ; [.0000.0000.0000] # ARABIC SMALL HIGH WORD WAQFA
+08E0 ; [.0000.0000.0000] # ARABIC SMALL HIGH FOOTNOTE MARKER
+08E1 ; [.0000.0000.0000] # ARABIC SMALL HIGH SIGN SAFHA
+08E2 ; [.0000.0000.0000] # ARABIC DISPUTED END OF AYAH
+08EA ; [.0000.0000.0000] # ARABIC TONE ONE DOT ABOVE
+08EB ; [.0000.0000.0000] # ARABIC TONE TWO DOTS ABOVE
+08EC ; [.0000.0000.0000] # ARABIC TONE LOOP ABOVE
+08ED ; [.0000.0000.0000] # ARABIC TONE ONE DOT BELOW
+08EE ; [.0000.0000.0000] # ARABIC TONE TWO DOTS BELOW
+08EF ; [.0000.0000.0000] # ARABIC TONE LOOP BELOW
+08F3 ; [.0000.0000.0000] # ARABIC SMALL HIGH WAW
+0951 ; [.0000.0000.0000] # DEVANAGARI STRESS SIGN UDATTA
+0952 ; [.0000.0000.0000] # DEVANAGARI STRESS SIGN ANUDATTA
+0964 ; [*0299.0020.0002] # DEVANAGARI DANDA
+0965 ; [*029A.0020.0002] # DEVANAGARI DOUBLE DANDA
+0970 ; [*0414.0020.0002] # DEVANAGARI ABBREVIATION SIGN
+09F4 ; [*1E28.0020.0002] # BENGALI CURRENCY NUMERATOR ONE
+09F5 ; [*1E29.0020.0002] # BENGALI CURRENCY NUMERATOR TWO
+09F6 ; [*1E2A.0020.0002] # BENGALI CURRENCY NUMERATOR THREE
+09F7 ; [*1E2B.0020.0002] # BENGALI CURRENCY NUMERATOR FOUR
+09F8 ; [*1E2C.0020.0002] # BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR
+09F9 ; [*1E2D.0020.0002] # BENGALI CURRENCY DENOMINATOR SIXTEEN
+09FA ; [*057E.0020.0002] # BENGALI ISSHAR
+09FD ; [*0419.0020.0002] # BENGALI ABBREVIATION SIGN
+0A76 ; [*041A.0020.0002] # GURMUKHI ABBREVIATION SIGN
+0AF0 ; [*041B.0020.0002] # GUJARATI ABBREVIATION SIGN
+0B70 ; [*057F.0020.0002] # ORIYA ISSHAR
+0B72 ; [*1E2E.0020.0002] # ORIYA FRACTION ONE QUARTER
+0B73 ; [*1E2F.0020.0002] # ORIYA FRACTION ONE HALF
+0B74 ; [*1E30.0020.0002] # ORIYA FRACTION THREE QUARTERS
+0B75 ; [*1E31.0020.0002] # ORIYA FRACTION ONE SIXTEENTH
+0B76 ; [*1E32.0020.0002] # ORIYA FRACTION ONE EIGHTH
+0B77 ; [*1E33.0020.0002] # ORIYA FRACTION THREE SIXTEENTHS
+0BF0 ; [*1E3A.0020.0002] # TAMIL NUMBER TEN
+0BF1 ; [*1E3B.0020.0002] # TAMIL NUMBER ONE HUNDRED
+0BF2 ; [*1E3C.0020.0002] # TAMIL NUMBER ONE THOUSAND
+0BF3 ; [*0580.0020.0002] # TAMIL DAY SIGN
+0BF4 ; [*0581.0020.0002] # TAMIL MONTH SIGN
+0BF5 ; [*0582.0020.0002] # TAMIL YEAR SIGN
+0BF6 ; [*0583.0020.0002] # TAMIL DEBIT SIGN
+0BF7 ; [*0584.0020.0002] # TAMIL CREDIT SIGN
+0BF8 ; [*0585.0020.0002] # TAMIL AS ABOVE SIGN
+0BFA ; [*0586.0020.0002] # TAMIL NUMBER SIGN
+0C77 ; [*041C.0020.0002] # TELUGU SIGN SIDDHAM
+0C7F ; [*05A0.0020.0002] # TELUGU SIGN TUUMU
+0C84 ; [*041D.0020.0002] # KANNADA SIGN SIDDHAM
+0D4F ; [*05A1.0020.0002] # MALAYALAM SIGN PARA
+0D58 ; [*1E52.0020.0002] # MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH
+0D59 ; [*1E53.0020.0002] # MALAYALAM FRACTION ONE FORTIETH
+0D5A ; [*1E54.0020.0002] # MALAYALAM FRACTION THREE EIGHTIETHS
+0D5B ; [*1E55.0020.0002] # MALAYALAM FRACTION ONE TWENTIETH
+0D5C ; [*1E56.0020.0002] # MALAYALAM FRACTION ONE TENTH
+0D5D ; [*1E57.0020.0002] # MALAYALAM FRACTION THREE TWENTIETHS
+0D5E ; [*1E58.0020.0002] # MALAYALAM FRACTION ONE FIFTH
+0D70 ; [*1E59.0020.0002] # MALAYALAM NUMBER TEN
+0D71 ; [*1E5A.0020.0002] # MALAYALAM NUMBER ONE HUNDRED
+0D72 ; [*1E5B.0020.0002] # MALAYALAM NUMBER ONE THOUSAND
+0D73 ; [*1E5C.0020.0002] # MALAYALAM FRACTION ONE QUARTER
+0D74 ; [*1E5D.0020.0002] # MALAYALAM FRACTION ONE HALF
+0D75 ; [*1E5E.0020.0002] # MALAYALAM FRACTION THREE QUARTERS
+0D76 ; [*1E5F.0020.0002] # MALAYALAM FRACTION ONE SIXTEENTH
+0D77 ; [*1E60.0020.0002] # MALAYALAM FRACTION ONE EIGHTH
+0D78 ; [*1E61.0020.0002] # MALAYALAM FRACTION THREE SIXTEENTHS
+0D79 ; [*05A2.0020.0002] # MALAYALAM DATE MARK
+0DF4 ; [*041E.0020.0002] # SINHALA PUNCTUATION KUNDDALIYA
+0E4F ; [*041F.0020.0002] # THAI CHARACTER FONGMAN
+0E5A ; [*0420.0020.0002] # THAI CHARACTER ANGKHANKHU
+0E5B ; [*0421.0020.0002] # THAI CHARACTER KHOMUT
+0F01 ; [*05AA.0020.0002] # TIBETAN MARK GTER YIG MGO TRUNCATED A
+0F02 ; [*05AB.0020.0002] # TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA
+0F03 ; [*05AC.0020.0002] # TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+0F04 ; [*0424.0020.0002] # TIBETAN MARK INITIAL YIG MGO MDUN MA
+0F05 ; [*0425.0020.0002] # TIBETAN MARK CLOSING YIG MGO SGAB MA
+0F06 ; [*0426.0020.0002] # TIBETAN MARK CARET YIG MGO PHUR SHAD MA
+0F07 ; [*0427.0020.0002] # TIBETAN MARK YIG MGO TSHEG SHAD MA
+0F08 ; [*0428.0020.0002] # TIBETAN MARK SBRUL SHAD
+0F09 ; [*0429.0020.0002] # TIBETAN MARK BSKUR YIG MGO
+0F0A ; [*042A.0020.0002] # TIBETAN MARK BKA- SHOG YIG MGO
+0F0B ; [*042D.0020.0002] # TIBETAN MARK INTERSYLLABIC TSHEG
+0F0C ; [*042D.0020.001B] # TIBETAN MARK DELIMITER TSHEG BSTAR
+0F0D ; [*042E.0020.0002] # TIBETAN MARK SHAD
+0F0E ; [*042F.0020.0002] # TIBETAN MARK NYIS SHAD
+0F0F ; [*0430.0020.0002] # TIBETAN MARK TSHEG SHAD
+0F10 ; [*0431.0020.0002] # TIBETAN MARK NYIS TSHEG SHAD
+0F11 ; [*0432.0020.0002] # TIBETAN MARK RIN CHEN SPUNGS SHAD
+0F12 ; [*0433.0020.0002] # TIBETAN MARK RGYA GRAM SHAD
+0F13 ; [*05AD.0020.0002] # TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
+0F14 ; [*0260.0020.0002] # TIBETAN MARK GTER TSHEG
+0F15 ; [*05AE.0020.0002] # TIBETAN LOGOTYPE SIGN CHAD RTAGS
+0F16 ; [*05AF.0020.0002] # TIBETAN LOGOTYPE SIGN LHAG RTAGS
+0F17 ; [*05B0.0020.0002] # TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+0F18 ; [.0000.0000.0000] # TIBETAN ASTROLOGICAL SIGN -KHYUD PA
+0F19 ; [.0000.0000.0000] # TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+0F1A ; [*05B1.0020.0002] # TIBETAN SIGN RDEL DKAR GCIG
+0F1B ; [*05B2.0020.0002] # TIBETAN SIGN RDEL DKAR GNYIS
+0F1C ; [*05B3.0020.0002] # TIBETAN SIGN RDEL DKAR GSUM
+0F1D ; [*05B4.0020.0002] # TIBETAN SIGN RDEL NAG GCIG
+0F1E ; [*05B5.0020.0002] # TIBETAN SIGN RDEL NAG GNYIS
+0F1F ; [*05B6.0020.0002] # TIBETAN SIGN RDEL DKAR RDEL NAG
+0F34 ; [*05B7.0020.0002] # TIBETAN MARK BSDUS RTAGS
+0F35 ; [.0000.0000.0000] # TIBETAN MARK NGAS BZUNG NYI ZLA
+0F36 ; [*05B8.0020.0002] # TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+0F37 ; [.0000.0000.0000] # TIBETAN MARK NGAS BZUNG SGOR RTAGS
+0F38 ; [*05B9.0020.0002] # TIBETAN MARK CHE MGO
+0F3A ; [*033A.0020.0002] # TIBETAN MARK GUG RTAGS GYON
+0F3B ; [*033B.0020.0002] # TIBETAN MARK GUG RTAGS GYAS
+0F3C ; [*033C.0020.0002] # TIBETAN MARK ANG KHANG GYON
+0F3D ; [*033D.0020.0002] # TIBETAN MARK ANG KHANG GYAS
+0F3E ; [.0000.0000.0000] # TIBETAN SIGN YAR TSHES
+0F3F ; [.0000.0000.0000] # TIBETAN SIGN MAR TSHES
+0F82 ; [.0000.0000.0000] # TIBETAN SIGN NYI ZLA NAA DA
+0F83 ; [.0000.0000.0000] # TIBETAN SIGN SNA LDAN
+0F85 ; [*0434.0020.0002] # TIBETAN MARK PALUTA
+0F86 ; [.0000.0000.0000] # TIBETAN SIGN LCI RTAGS
+0F87 ; [.0000.0000.0000] # TIBETAN SIGN YANG RTAGS
+0FBE ; [*05BA.0020.0002] # TIBETAN KU RU KHA
+0FBF ; [*05BB.0020.0002] # TIBETAN KU RU KHA BZHI MIG CAN
+0FC0 ; [*05BC.0020.0002] # TIBETAN CANTILLATION SIGN HEAVY BEAT
+0FC1 ; [*05BD.0020.0002] # TIBETAN CANTILLATION SIGN LIGHT BEAT
+0FC2 ; [*05BE.0020.0002] # TIBETAN CANTILLATION SIGN CANG TE-U
+0FC3 ; [*05BF.0020.0002] # TIBETAN CANTILLATION SIGN SBUB -CHAL
+0FC4 ; [*05C0.0020.0002] # TIBETAN SYMBOL DRIL BU
+0FC5 ; [*05C1.0020.0002] # TIBETAN SYMBOL RDO RJE
+0FC6 ; [.0000.0000.0000] # TIBETAN SYMBOL PADMA GDAN
+0FC7 ; [*05C2.0020.0002] # TIBETAN SYMBOL RDO RJE RGYA GRAM
+0FC8 ; [*05C3.0020.0002] # TIBETAN SYMBOL PHUR PA
+0FC9 ; [*05C4.0020.0002] # TIBETAN SYMBOL NOR BU
+0FCA ; [*05C5.0020.0002] # TIBETAN SYMBOL NOR BU NYIS -KHYIL
+0FCB ; [*05C6.0020.0002] # TIBETAN SYMBOL NOR BU GSUM -KHYIL
+0FCC ; [*05C7.0020.0002] # TIBETAN SYMBOL NOR BU BZHI -KHYIL
+0FCE ; [*05C8.0020.0002] # TIBETAN SIGN RDEL NAG RDEL DKAR
+0FCF ; [*05C9.0020.0002] # TIBETAN SIGN RDEL NAG GSUM
+0FD0 ; [*042B.0020.0002] # TIBETAN MARK BSKA- SHOG GI MGO RGYAN
+0FD1 ; [*042C.0020.0002] # TIBETAN MARK MNYAM YIG GI MGO RGYAN
+0FD2 ; [*0435.0020.0002] # TIBETAN MARK NYIS TSHEG
+0FD3 ; [*0436.0020.0002] # TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA
+0FD4 ; [*0437.0020.0002] # TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA
+0FD5 ; [*05CA.0020.0002] # RIGHT-FACING SVASTI SIGN
+0FD6 ; [*05CB.0020.0002] # LEFT-FACING SVASTI SIGN
+0FD7 ; [*05CC.0020.0002] # RIGHT-FACING SVASTI SIGN WITH DOTS
+0FD8 ; [*05CD.0020.0002] # LEFT-FACING SVASTI SIGN WITH DOTS
+0FD9 ; [*0438.0020.0002] # TIBETAN MARK LEADING MCHAN RTAGS
+0FDA ; [*0439.0020.0002] # TIBETAN MARK TRAILING MCHAN RTAGS
+104A ; [*02A4.0020.0002] # MYANMAR SIGN LITTLE SECTION
+104B ; [*02A5.0020.0002] # MYANMAR SIGN SECTION
+104C ; [*044F.0020.0002] # MYANMAR SYMBOL LOCATIVE
+104D ; [*0450.0020.0002] # MYANMAR SYMBOL COMPLETED
+104E ; [*0451.0020.0002] # MYANMAR SYMBOL AFOREMENTIONED
+104F ; [*0452.0020.0002] # MYANMAR SYMBOL GENITIVE
+109E ; [*05D0.0020.0002] # MYANMAR SYMBOL SHAN ONE
+109F ; [*05D1.0020.0002] # MYANMAR SYMBOL SHAN EXCLAMATION
+10FB ; [*02D3.0020.0002] # GEORGIAN PARAGRAPH SEPARATOR
+1360 ; [*02D4.0020.0002] # ETHIOPIC SECTION MARK
+1361 ; [*0259.0020.0002] # ETHIOPIC WORDSPACE
+1362 ; [*0286.0020.0002] # ETHIOPIC FULL STOP
+1363 ; [*025A.0020.0002] # ETHIOPIC COMMA
+1364 ; [*025B.0020.0002] # ETHIOPIC SEMICOLON
+1365 ; [*025C.0020.0002] # ETHIOPIC COLON
+1366 ; [*025D.0020.0002] # ETHIOPIC PREFACE COLON
+1367 ; [*0276.0020.0002] # ETHIOPIC QUESTION MARK
+1368 ; [*02D5.0020.0002] # ETHIOPIC PARAGRAPH SEPARATOR
+1372 ; [*1E62.0020.0002] # ETHIOPIC NUMBER TEN
+1373 ; [*1E63.0020.0002] # ETHIOPIC NUMBER TWENTY
+1374 ; [*1E64.0020.0002] # ETHIOPIC NUMBER THIRTY
+1375 ; [*1E65.0020.0002] # ETHIOPIC NUMBER FORTY
+1376 ; [*1E66.0020.0002] # ETHIOPIC NUMBER FIFTY
+1377 ; [*1E67.0020.0002] # ETHIOPIC NUMBER SIXTY
+1378 ; [*1E68.0020.0002] # ETHIOPIC NUMBER SEVENTY
+1379 ; [*1E69.0020.0002] # ETHIOPIC NUMBER EIGHTY
+137A ; [*1E6A.0020.0002] # ETHIOPIC NUMBER NINETY
+137B ; [*1E6B.0020.0002] # ETHIOPIC NUMBER HUNDRED
+137C ; [*1E6C.0020.0002] # ETHIOPIC NUMBER TEN THOUSAND
+1390 ; [*050F.0020.0002] # ETHIOPIC TONAL MARK YIZET
+1391 ; [*0510.0020.0002] # ETHIOPIC TONAL MARK DERET
+1392 ; [*0511.0020.0002] # ETHIOPIC TONAL MARK RIKRIK
+1393 ; [*0512.0020.0002] # ETHIOPIC TONAL MARK SHORT RIKRIK
+1394 ; [*0513.0020.0002] # ETHIOPIC TONAL MARK DIFAT
+1395 ; [*0514.0020.0002] # ETHIOPIC TONAL MARK KENAT
+1396 ; [*0515.0020.0002] # ETHIOPIC TONAL MARK CHIRET
+1397 ; [*0516.0020.0002] # ETHIOPIC TONAL MARK HIDET
+1398 ; [*0517.0020.0002] # ETHIOPIC TONAL MARK DERET-HIDET
+1399 ; [*0518.0020.0002] # ETHIOPIC TONAL MARK KURT
+1400 ; [*020F.0020.0002] # CANADIAN SYLLABICS HYPHEN
+166D ; [*05CE.0020.0002] # CANADIAN SYLLABICS CHI SIGN
+166E ; [*0289.0020.0002] # CANADIAN SYLLABICS FULL STOP
+1680 ; [*0209.0020.0004] # OGHAM SPACE MARK
+169B ; [*033E.0020.0002] # OGHAM FEATHER MARK
+169C ; [*033F.0020.0002] # OGHAM REVERSED FEATHER MARK
+16EB ; [*0264.0020.0002] # RUNIC SINGLE PUNCTUATION
+16EC ; [*0265.0020.0002] # RUNIC MULTIPLE PUNCTUATION
+16ED ; [*0266.0020.0002] # RUNIC CROSS PUNCTUATION
+1735 ; [*02A1.0020.0002] # PHILIPPINE SINGLE PUNCTUATION
+1736 ; [*02A2.0020.0002] # PHILIPPINE DOUBLE PUNCTUATION
+17B4 ; [.0000.0000.0000] # KHMER VOWEL INHERENT AQ
+17B5 ; [.0000.0000.0000] # KHMER VOWEL INHERENT AA
+17D3 ; [.0000.0000.0000] # KHMER SIGN BATHAMASAT
+17D4 ; [*02A6.0020.0002] # KHMER SIGN KHAN
+17D5 ; [*02A7.0020.0002] # KHMER SIGN BARIYOOSAN
+17D6 ; [*0261.0020.0002] # KHMER SIGN CAMNUC PII KUUH
+17D8 ; [*0453.0020.0002] # KHMER SIGN BEYYAL
+17D9 ; [*0454.0020.0002] # KHMER SIGN PHNAEK MUAN
+17DA ; [*0455.0020.0002] # KHMER SIGN KOOMUUT
+1800 ; [*0406.0020.0002] # MONGOLIAN BIRGA
+1801 ; [*0282.0020.0002] # MONGOLIAN ELLIPSIS
+1802 ; [*0231.0020.0002] # MONGOLIAN COMMA
+1803 ; [*0287.0020.0002] # MONGOLIAN FULL STOP
+1804 ; [*025E.0020.0002] # MONGOLIAN COLON
+1805 ; [*025F.0020.0002] # MONGOLIAN FOUR DOTS
+1806 ; [*0211.0020.0002] # MONGOLIAN TODO SOFT HYPHEN
+1807 ; [*0212.0020.0002] # MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER
+1808 ; [*0232.0020.0002] # MONGOLIAN MANCHU COMMA
+1809 ; [*0288.0020.0002] # MONGOLIAN MANCHU FULL STOP
+180A ; [.0000.0000.0000] # MONGOLIAN NIRUGU
+1940 ; [*05CF.0020.0002] # LIMBU SIGN LOO
+1944 ; [*026D.0020.0002] # LIMBU EXCLAMATION MARK
+1945 ; [*0277.0020.0002] # LIMBU QUESTION MARK
+19E0 ; [*05D6.0020.0002] # KHMER SYMBOL PATHAMASAT
+19E1 ; [*05D7.0020.0002] # KHMER SYMBOL MUOY KOET
+19E2 ; [*05D8.0020.0002] # KHMER SYMBOL PII KOET
+19E3 ; [*05D9.0020.0002] # KHMER SYMBOL BEI KOET
+19E4 ; [*05DA.0020.0002] # KHMER SYMBOL BUON KOET
+19E5 ; [*05DB.0020.0002] # KHMER SYMBOL PRAM KOET
+19E6 ; [*05DC.0020.0002] # KHMER SYMBOL PRAM-MUOY KOET
+19E7 ; [*05DD.0020.0002] # KHMER SYMBOL PRAM-PII KOET
+19E8 ; [*05DE.0020.0002] # KHMER SYMBOL PRAM-BEI KOET
+19E9 ; [*05DF.0020.0002] # KHMER SYMBOL PRAM-BUON KOET
+19EA ; [*05E0.0020.0002] # KHMER SYMBOL DAP KOET
+19EB ; [*05E1.0020.0002] # KHMER SYMBOL DAP-MUOY KOET
+19EC ; [*05E2.0020.0002] # KHMER SYMBOL DAP-PII KOET
+19ED ; [*05E3.0020.0002] # KHMER SYMBOL DAP-BEI KOET
+19EE ; [*05E4.0020.0002] # KHMER SYMBOL DAP-BUON KOET
+19EF ; [*05E5.0020.0002] # KHMER SYMBOL DAP-PRAM KOET
+19F0 ; [*05E6.0020.0002] # KHMER SYMBOL TUTEYASAT
+19F1 ; [*05E7.0020.0002] # KHMER SYMBOL MUOY ROC
+19F2 ; [*05E8.0020.0002] # KHMER SYMBOL PII ROC
+19F3 ; [*05E9.0020.0002] # KHMER SYMBOL BEI ROC
+19F4 ; [*05EA.0020.0002] # KHMER SYMBOL BUON ROC
+19F5 ; [*05EB.0020.0002] # KHMER SYMBOL PRAM ROC
+19F6 ; [*05EC.0020.0002] # KHMER SYMBOL PRAM-MUOY ROC
+19F7 ; [*05ED.0020.0002] # KHMER SYMBOL PRAM-PII ROC
+19F8 ; [*05EE.0020.0002] # KHMER SYMBOL PRAM-BEI ROC
+19F9 ; [*05EF.0020.0002] # KHMER SYMBOL PRAM-BUON ROC
+19FA ; [*05F0.0020.0002] # KHMER SYMBOL DAP ROC
+19FB ; [*05F1.0020.0002] # KHMER SYMBOL DAP-MUOY ROC
+19FC ; [*05F2.0020.0002] # KHMER SYMBOL DAP-PII ROC
+19FD ; [*05F3.0020.0002] # KHMER SYMBOL DAP-BEI ROC
+19FE ; [*05F4.0020.0002] # KHMER SYMBOL DAP-BUON ROC
+19FF ; [*05F5.0020.0002] # KHMER SYMBOL DAP-PRAM ROC
+1A1E ; [*02D6.0020.0002] # BUGINESE PALLAWA
+1A1F ; [*02D7.0020.0002] # BUGINESE END OF SECTION
+1A7F ; [.0000.0000.0000] # TAI THAM COMBINING CRYPTOGRAMMIC DOT
+1AA0 ; [*0456.0020.0002] # TAI THAM SIGN WIANG
+1AA1 ; [*0457.0020.0002] # TAI THAM SIGN WIANGWAAK
+1AA2 ; [*0458.0020.0002] # TAI THAM SIGN SAWAN
+1AA3 ; [*0459.0020.0002] # TAI THAM SIGN KEOW
+1AA4 ; [*045A.0020.0002] # TAI THAM SIGN HOY
+1AA5 ; [*045B.0020.0002] # TAI THAM SIGN DOKMAI
+1AA6 ; [*045C.0020.0002] # TAI THAM SIGN REVERSED ROTATED RANA
+1AA8 ; [*02A8.0020.0002] # TAI THAM SIGN KAAN
+1AA9 ; [*02A9.0020.0002] # TAI THAM SIGN KAANKUU
+1AAA ; [*02AA.0020.0002] # TAI THAM SIGN SATKAAN
+1AAB ; [*02AB.0020.0002] # TAI THAM SIGN SATKAANKUU
+1AAC ; [*045D.0020.0002] # TAI THAM SIGN HANG
+1AAD ; [*045E.0020.0002] # TAI THAM SIGN CAANG
+1B5A ; [*02D8.0020.0002] # BALINESE PANTI
+1B5B ; [*02D9.0020.0002] # BALINESE PAMADA
+1B5C ; [*028A.0020.0002] # BALINESE WINDU
+1B5D ; [*0262.0020.0002] # BALINESE CARIK PAMUNGKAH
+1B5E ; [*02AC.0020.0002] # BALINESE CARIK SIKI
+1B5F ; [*02AD.0020.0002] # BALINESE CARIK PAREREN
+1B60 ; [*0210.0020.0002] # BALINESE PAMENENG
+1B61 ; [*05F6.0020.0002] # BALINESE MUSICAL SYMBOL DONG
+1B62 ; [*05F7.0020.0002] # BALINESE MUSICAL SYMBOL DENG
+1B63 ; [*05F8.0020.0002] # BALINESE MUSICAL SYMBOL DUNG
+1B64 ; [*05F9.0020.0002] # BALINESE MUSICAL SYMBOL DANG
+1B65 ; [*05FA.0020.0002] # BALINESE MUSICAL SYMBOL DANG SURANG
+1B66 ; [*05FB.0020.0002] # BALINESE MUSICAL SYMBOL DING
+1B67 ; [*05FC.0020.0002] # BALINESE MUSICAL SYMBOL DAENG
+1B68 ; [*05FD.0020.0002] # BALINESE MUSICAL SYMBOL DEUNG
+1B69 ; [*05FE.0020.0002] # BALINESE MUSICAL SYMBOL DAING
+1B6A ; [*05FF.0020.0002] # BALINESE MUSICAL SYMBOL DANG GEDE
+1B6B ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING TEGEH
+1B6C ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING ENDEP
+1B6D ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING KEMPUL
+1B6E ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING KEMPLI
+1B6F ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING JEGOGAN
+1B70 ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN
+1B71 ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN
+1B72 ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING BENDE
+1B73 ; [.0000.0000.0000] # BALINESE MUSICAL SYMBOL COMBINING GONG
+1B74 ; [*0600.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG
+1B75 ; [*0601.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG
+1B76 ; [*0602.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK
+1B77 ; [*0603.0020.0002] # BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK
+1B78 ; [*0604.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG
+1B79 ; [*0605.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG
+1B7A ; [*0606.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK
+1B7B ; [*0607.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK
+1B7C ; [*0608.0020.0002] # BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+1B7D ; [*02DA.0020.0002] # BALINESE PANTI LANTANG
+1B7E ; [*02DB.0020.0002] # BALINESE PAMADA LANTANG
+1BFC ; [*046A.0020.0002] # BATAK SYMBOL BINDU NA METEK
+1BFD ; [*046B.0020.0002] # BATAK SYMBOL BINDU PINARBORAS
+1BFE ; [*046C.0020.0002] # BATAK SYMBOL BINDU JUDUL
+1BFF ; [*046D.0020.0002] # BATAK SYMBOL BINDU PANGOLAT
+1C3B ; [*029D.0020.0002] # LEPCHA PUNCTUATION TA-ROL
+1C3C ; [*029E.0020.0002] # LEPCHA PUNCTUATION NYET THYOOM TA-ROL
+1C3D ; [*044C.0020.0002] # LEPCHA PUNCTUATION CER-WA
+1C3E ; [*044D.0020.0002] # LEPCHA PUNCTUATION TSHOOK CER-WA
+1C3F ; [*044E.0020.0002] # LEPCHA PUNCTUATION TSHOOK
+1C7E ; [*02CE.0020.0002] # OL CHIKI PUNCTUATION MUCAAD
+1C7F ; [*02CF.0020.0002] # OL CHIKI PUNCTUATION DOUBLE MUCAAD
+1CC0 ; [*045F.0020.0002] # SUNDANESE PUNCTUATION BINDU SURYA
+1CC1 ; [*0460.0020.0002] # SUNDANESE PUNCTUATION BINDU PANGLONG
+1CC2 ; [*0461.0020.0002] # SUNDANESE PUNCTUATION BINDU PURNAMA
+1CC3 ; [*0462.0020.0002] # SUNDANESE PUNCTUATION BINDU CAKRA
+1CC4 ; [*0463.0020.0002] # SUNDANESE PUNCTUATION BINDU LEU SATANGA
+1CC5 ; [*0464.0020.0002] # SUNDANESE PUNCTUATION BINDU KA SATANGA
+1CC6 ; [*0465.0020.0002] # SUNDANESE PUNCTUATION BINDU DA SATANGA
+1CC7 ; [*0466.0020.0002] # SUNDANESE PUNCTUATION BINDU BA SATANGA
+1CD0 ; [.0000.0000.0000] # VEDIC TONE KARSHANA
+1CD1 ; [.0000.0000.0000] # VEDIC TONE SHARA
+1CD2 ; [.0000.0000.0000] # VEDIC TONE PRENKHA
+1CD3 ; [.0000.0000.0000] # VEDIC SIGN NIHSHVASA
+1CD4 ; [.0000.0000.0000] # VEDIC SIGN YAJURVEDIC MIDLINE SVARITA
+1CD5 ; [.0000.0000.0000] # VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA
+1CD6 ; [.0000.0000.0000] # VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA
+1CD7 ; [.0000.0000.0000] # VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA
+1CD8 ; [.0000.0000.0000] # VEDIC TONE CANDRA BELOW
+1CD9 ; [.0000.0000.0000] # VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER
+1CDA ; [.0000.0000.0000] # VEDIC TONE DOUBLE SVARITA
+1CDB ; [.0000.0000.0000] # VEDIC TONE TRIPLE SVARITA
+1CDC ; [.0000.0000.0000] # VEDIC TONE KATHAKA ANUDATTA
+1CDD ; [.0000.0000.0000] # VEDIC TONE DOT BELOW
+1CDE ; [.0000.0000.0000] # VEDIC TONE TWO DOTS BELOW
+1CDF ; [.0000.0000.0000] # VEDIC TONE THREE DOTS BELOW
+1CE0 ; [.0000.0000.0000] # VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+1CE1 ; [.0000.0000.0000] # VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
+1CE2 ; [.0000.0000.0000] # VEDIC SIGN VISARGA SVARITA
+1CE3 ; [.0000.0000.0000] # VEDIC SIGN VISARGA UDATTA
+1CE4 ; [.0000.0000.0000] # VEDIC SIGN REVERSED VISARGA UDATTA
+1CE5 ; [.0000.0000.0000] # VEDIC SIGN VISARGA ANUDATTA
+1CE6 ; [.0000.0000.0000] # VEDIC SIGN REVERSED VISARGA ANUDATTA
+1CE7 ; [.0000.0000.0000] # VEDIC SIGN VISARGA UDATTA WITH TAIL
+1CE8 ; [.0000.0000.0000] # VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+1CF4 ; [.0000.0000.0000] # VEDIC TONE CANDRA ABOVE
+1CF7 ; [.0000.0000.0000] # VEDIC SIGN ATIKRAMA
+1CF8 ; [.0000.0000.0000] # VEDIC TONE RING ABOVE
+1CF9 ; [.0000.0000.0000] # VEDIC TONE DOUBLE RING ABOVE
+1FBD ; [*04D5.0020.0002] # GREEK KORONIS
+1FBF ; [*04D5.0020.0002] # GREEK PSILI
+1FC0 ; [*04D7.0020.0002] # GREEK PERISPOMENI
+1FC1 ; [*04D0.0020.0002][.0000.002A.0002] # GREEK DIALYTIKA AND PERISPOMENI
+1FCD ; [*04D5.0020.0002][.0000.0025.0002] # GREEK PSILI AND VARIA
+1FCE ; [*04D5.0020.0002][.0000.0024.0002] # GREEK PSILI AND OXIA
+1FCF ; [*04D5.0020.0002][.0000.002A.0002] # GREEK PSILI AND PERISPOMENI
+1FDD ; [*04D6.0020.0002][.0000.0025.0002] # GREEK DASIA AND VARIA
+1FDE ; [*04D6.0020.0002][.0000.0024.0002] # GREEK DASIA AND OXIA
+1FDF ; [*04D6.0020.0002][.0000.002A.0002] # GREEK DASIA AND PERISPOMENI
+1FED ; [*04D0.0020.0002][.0000.0025.0002] # GREEK DIALYTIKA AND VARIA
+1FEE ; [*04D0.0020.0002][.0000.0024.0002] # GREEK DIALYTIKA AND OXIA
+1FEF ; [*04C9.0020.0002] # GREEK VARIA
+1FFD ; [*04CA.0020.0002] # GREEK OXIA
+1FFE ; [*04D6.0020.0002] # GREEK DASIA
+2000 ; [*0209.0020.0004] # EN QUAD
+2001 ; [*0209.0020.0004] # EM QUAD
+2002 ; [*0209.0020.0004] # EN SPACE
+2003 ; [*0209.0020.0004] # EM SPACE
+2004 ; [*0209.0020.0004] # THREE-PER-EM SPACE
+2005 ; [*0209.0020.0004] # FOUR-PER-EM SPACE
+2006 ; [*0209.0020.0004] # SIX-PER-EM SPACE
+2007 ; [*0209.0020.001B] # FIGURE SPACE
+2008 ; [*0209.0020.0004] # PUNCTUATION SPACE
+2009 ; [*0209.0020.0004] # THIN SPACE
+200A ; [*0209.0020.0004] # HAIR SPACE
+2010 ; [*0213.0020.0002] # HYPHEN
+2011 ; [*0213.0020.001B] # NON-BREAKING HYPHEN
+2012 ; [*0214.0020.0002] # FIGURE DASH
+2013 ; [*0215.0020.0002] # EN DASH
+2014 ; [*0216.0020.0002] # EM DASH
+2015 ; [*0217.0020.0002] # HORIZONTAL BAR
+2016 ; [*03A8.0020.0002] # DOUBLE VERTICAL LINE
+2017 ; [*020C.0020.0002] # DOUBLE LOW LINE
+2018 ; [*0323.0020.0002] # LEFT SINGLE QUOTATION MARK
+2019 ; [*0324.0020.0002] # RIGHT SINGLE QUOTATION MARK
+201A ; [*0325.0020.0002] # SINGLE LOW-9 QUOTATION MARK
+201B ; [*0326.0020.0002] # SINGLE HIGH-REVERSED-9 QUOTATION MARK
+201C ; [*032A.0020.0002] # LEFT DOUBLE QUOTATION MARK
+201D ; [*032B.0020.0002] # RIGHT DOUBLE QUOTATION MARK
+201E ; [*032C.0020.0002] # DOUBLE LOW-9 QUOTATION MARK
+201F ; [*032D.0020.0002] # DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+2020 ; [*03C7.0020.0002] # DAGGER
+2021 ; [*03C8.0020.0002] # DOUBLE DAGGER
+2022 ; [*03CD.0020.0002] # BULLET
+2023 ; [*03CE.0020.0002] # TRIANGULAR BULLET
+2024 ; [*0281.0020.0004] # ONE DOT LEADER
+2025 ; [*0281.0020.0004][*0281.0020.0004] # TWO DOT LEADER
+2026 ; [*0281.0020.0004][*0281.0020.0004][*0281.0020.0004] # HORIZONTAL ELLIPSIS
+2027 ; [*03CF.0020.0002] # HYPHENATION POINT
+2028 ; [*0207.0020.0002] # LINE SEPARATOR
+2029 ; [*0208.0020.0002] # PARAGRAPH SEPARATOR
+202F ; [*0209.0020.001B] # NARROW NO-BREAK SPACE
+2030 ; [*03C3.0020.0002] # PER MILLE SIGN
+2031 ; [*03C5.0020.0002] # PER TEN THOUSAND SIGN
+2032 ; [*03D3.0020.0002] # PRIME
+2033 ; [*03D3.0020.0004][*03D3.0020.0004] # DOUBLE PRIME
+2034 ; [*03D3.0020.0004][*03D3.0020.0004][*03D3.0020.0004] # TRIPLE PRIME
+2035 ; [*03D4.0020.0002] # REVERSED PRIME
+2036 ; [*03D4.0020.0004][*03D4.0020.0004] # REVERSED DOUBLE PRIME
+2037 ; [*03D4.0020.0004][*03D4.0020.0004][*03D4.0020.0004] # REVERSED TRIPLE PRIME
+2038 ; [*03D7.0020.0002] # CARET
+2039 ; [*0327.0020.0002] # SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+203A ; [*0328.0020.0002] # SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+203B ; [*03D8.0020.0002] # REFERENCE MARK
+203C ; [*0268.0020.0004][*0268.0020.0004] # DOUBLE EXCLAMATION MARK
+203D ; [*027F.0020.0002] # INTERROBANG
+203E ; [*020A.0020.0002] # OVERLINE
+203F ; [*03D9.0020.0002] # UNDERTIE
+2040 ; [*03DB.0020.0002] # CHARACTER TIE
+2041 ; [*03DD.0020.0002] # CARET INSERTION POINT
+2042 ; [*03DE.0020.0002] # ASTERISM
+2043 ; [*03D0.0020.0002] # HYPHEN BULLET
+2044 ; [*06AD.0020.0002] # FRACTION SLASH
+2045 ; [*0340.0020.0002] # LEFT SQUARE BRACKET WITH QUILL
+2046 ; [*0341.0020.0002] # RIGHT SQUARE BRACKET WITH QUILL
+2047 ; [*026F.0020.0004][*026F.0020.0004] # DOUBLE QUESTION MARK
+2048 ; [*026F.0020.0004][*0268.0020.0004] # QUESTION EXCLAMATION MARK
+2049 ; [*0268.0020.0004][*026F.0020.0004] # EXCLAMATION QUESTION MARK
+204A ; [*03BE.0020.0002] # TIRONIAN SIGN ET
+204B ; [*03B1.0020.0002] # REVERSED PILCROW SIGN
+204C ; [*03D1.0020.0002] # BLACK LEFTWARDS BULLET
+204D ; [*03D2.0020.0002] # BLACK RIGHTWARDS BULLET
+204E ; [*03B6.0020.0002] # LOW ASTERISK
+204F ; [*023D.0020.0002] # REVERSED SEMICOLON
+2050 ; [*03DC.0020.0002] # CLOSE UP
+2051 ; [*03B7.0020.0002] # TWO ASTERISKS ALIGNED VERTICALLY
+2052 ; [*06A9.0020.0002] # COMMERCIAL MINUS SIGN
+2053 ; [*021A.0020.0002] # SWUNG DASH
+2054 ; [*03DA.0020.0002] # INVERTED UNDERTIE
+2055 ; [*0303.0020.0002] # FLOWER PUNCTUATION MARK
+2056 ; [*0304.0020.0002] # THREE DOT PUNCTUATION
+2057 ; [*03D3.0020.0004][*03D3.0020.0004][*03D3.0020.0004][*03D3.0020.0004] # QUADRUPLE PRIME
+2058 ; [*0305.0020.0002] # FOUR DOT PUNCTUATION
+2059 ; [*0306.0020.0002] # FIVE DOT PUNCTUATION
+205A ; [*0307.0020.0002] # TWO DOT PUNCTUATION
+205B ; [*0308.0020.0002] # FOUR DOT MARK
+205C ; [*0309.0020.0002] # DOTTED CROSS
+205D ; [*030A.0020.0002] # TRICOLON
+205E ; [*030B.0020.0002] # VERTICAL FOUR DOTS
+205F ; [*0209.0020.0004] # MEDIUM MATHEMATICAL SPACE
+2061 ; [.0000.0000.0000] # FUNCTION APPLICATION
+2062 ; [.0000.0000.0000] # INVISIBLE TIMES
+2063 ; [.0000.0000.0000] # INVISIBLE SEPARATOR
+2064 ; [.0000.0000.0000] # INVISIBLE PLUS
+207A ; [*069D.0020.0014] # SUPERSCRIPT PLUS SIGN
+207B ; [*06A8.0020.0014] # SUPERSCRIPT MINUS
+207C ; [*06A2.0020.0014] # SUPERSCRIPT EQUALS SIGN
+207D ; [*0334.0020.0014] # SUPERSCRIPT LEFT PARENTHESIS
+207E ; [*0335.0020.0014] # SUPERSCRIPT RIGHT PARENTHESIS
+208A ; [*069D.0020.0015] # SUBSCRIPT PLUS SIGN
+208B ; [*06A8.0020.0015] # SUBSCRIPT MINUS
+208C ; [*06A2.0020.0015] # SUBSCRIPT EQUALS SIGN
+208D ; [*0334.0020.0015] # SUBSCRIPT LEFT PARENTHESIS
+208E ; [*0335.0020.0015] # SUBSCRIPT RIGHT PARENTHESIS
+2104 ; [*060D.0020.0002] # CENTRE LINE SYMBOL
+2108 ; [*060E.0020.0002] # SCRUPLE
+2114 ; [*060F.0020.0002] # L B BAR SYMBOL
+2117 ; [*0610.0020.0002] # SOUND RECORDING COPYRIGHT
+2118 ; [*0611.0020.0002] # SCRIPT CAPITAL P
+211E ; [*0612.0020.0002] # PRESCRIPTION TAKE
+211F ; [*0613.0020.0002] # RESPONSE
+2123 ; [*0614.0020.0002] # VERSICLE
+2125 ; [*0615.0020.0002] # OUNCE SIGN
+2127 ; [*0616.0020.0002] # INVERTED OHM SIGN
+2129 ; [*0617.0020.0002] # TURNED GREEK SMALL LETTER IOTA
+212E ; [*0618.0020.0002] # ESTIMATED SYMBOL
+213A ; [*0619.0020.0002] # ROTATED CAPITAL Q
+2140 ; [*069C.0020.0005] # DOUBLE-STRUCK N-ARY SUMMATION
+2141 ; [*061A.0020.0002] # TURNED SANS-SERIF CAPITAL G
+2142 ; [*061B.0020.0002] # TURNED SANS-SERIF CAPITAL L
+2143 ; [*061C.0020.0002] # REVERSED SANS-SERIF CAPITAL L
+2144 ; [*061D.0020.0002] # TURNED SANS-SERIF CAPITAL Y
+214A ; [*061E.0020.0002] # PROPERTY LINE
+214B ; [*0738.0020.0002] # TURNED AMPERSAND
+214C ; [*061F.0020.0002] # PER SIGN
+214F ; [*0620.0020.0002] # SYMBOL FOR SAMARITAN SOURCE
+2180 ; [*1E6D.0020.0002] # ROMAN NUMERAL ONE THOUSAND C D
+2181 ; [*1E6E.0020.0002] # ROMAN NUMERAL FIVE THOUSAND
+2182 ; [*1E6F.0020.0002] # ROMAN NUMERAL TEN THOUSAND
+2186 ; [*1E70.0020.0002] # ROMAN NUMERAL FIFTY EARLY FORM
+2187 ; [*1E71.0020.0002] # ROMAN NUMERAL FIFTY THOUSAND
+2188 ; [*1E72.0020.0002] # ROMAN NUMERAL ONE HUNDRED THOUSAND
+218A ; [*0621.0020.0002] # TURNED DIGIT TWO
+218B ; [*0622.0020.0002] # TURNED DIGIT THREE
+2190 ; [*0623.0020.0002] # LEFTWARDS ARROW
+2191 ; [*0625.0020.0002] # UPWARDS ARROW
+2192 ; [*0624.0020.0002] # RIGHTWARDS ARROW
+2193 ; [*0626.0020.0002] # DOWNWARDS ARROW
+2194 ; [*0627.0020.0002] # LEFT RIGHT ARROW
+2195 ; [*0628.0020.0002] # UP DOWN ARROW
+2196 ; [*0629.0020.0002] # NORTH WEST ARROW
+2197 ; [*062A.0020.0002] # NORTH EAST ARROW
+2198 ; [*062B.0020.0002] # SOUTH EAST ARROW
+2199 ; [*062C.0020.0002] # SOUTH WEST ARROW
+219A ; [*0623.0020.0002][.0000.002F.0002] # LEFTWARDS ARROW WITH STROKE
+219B ; [*0624.0020.0002][.0000.002F.0002] # RIGHTWARDS ARROW WITH STROKE
+219C ; [*062D.0020.0002] # LEFTWARDS WAVE ARROW
+219D ; [*062E.0020.0002] # RIGHTWARDS WAVE ARROW
+219E ; [*062F.0020.0002] # LEFTWARDS TWO HEADED ARROW
+219F ; [*0630.0020.0002] # UPWARDS TWO HEADED ARROW
+21A0 ; [*0631.0020.0002] # RIGHTWARDS TWO HEADED ARROW
+21A1 ; [*0632.0020.0002] # DOWNWARDS TWO HEADED ARROW
+21A2 ; [*0633.0020.0002] # LEFTWARDS ARROW WITH TAIL
+21A3 ; [*0634.0020.0002] # RIGHTWARDS ARROW WITH TAIL
+21A4 ; [*0635.0020.0002] # LEFTWARDS ARROW FROM BAR
+21A5 ; [*0636.0020.0002] # UPWARDS ARROW FROM BAR
+21A6 ; [*0637.0020.0002] # RIGHTWARDS ARROW FROM BAR
+21A7 ; [*0638.0020.0002] # DOWNWARDS ARROW FROM BAR
+21A8 ; [*0639.0020.0002] # UP DOWN ARROW WITH BASE
+21A9 ; [*063A.0020.0002] # LEFTWARDS ARROW WITH HOOK
+21AA ; [*063B.0020.0002] # RIGHTWARDS ARROW WITH HOOK
+21AB ; [*063C.0020.0002] # LEFTWARDS ARROW WITH LOOP
+21AC ; [*063D.0020.0002] # RIGHTWARDS ARROW WITH LOOP
+21AD ; [*063E.0020.0002] # LEFT RIGHT WAVE ARROW
+21AE ; [*0627.0020.0002][.0000.002F.0002] # LEFT RIGHT ARROW WITH STROKE
+21AF ; [*063F.0020.0002] # DOWNWARDS ZIGZAG ARROW
+21B0 ; [*0640.0020.0002] # UPWARDS ARROW WITH TIP LEFTWARDS
+21B1 ; [*0641.0020.0002] # UPWARDS ARROW WITH TIP RIGHTWARDS
+21B2 ; [*0642.0020.0002] # DOWNWARDS ARROW WITH TIP LEFTWARDS
+21B3 ; [*0643.0020.0002] # DOWNWARDS ARROW WITH TIP RIGHTWARDS
+21B4 ; [*0644.0020.0002] # RIGHTWARDS ARROW WITH CORNER DOWNWARDS
+21B5 ; [*0645.0020.0002] # DOWNWARDS ARROW WITH CORNER LEFTWARDS
+21B6 ; [*0646.0020.0002] # ANTICLOCKWISE TOP SEMICIRCLE ARROW
+21B7 ; [*0647.0020.0002] # CLOCKWISE TOP SEMICIRCLE ARROW
+21B8 ; [*0648.0020.0002] # NORTH WEST ARROW TO LONG BAR
+21B9 ; [*0649.0020.0002] # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
+21BA ; [*064A.0020.0002] # ANTICLOCKWISE OPEN CIRCLE ARROW
+21BB ; [*064B.0020.0002] # CLOCKWISE OPEN CIRCLE ARROW
+21BC ; [*064C.0020.0002] # LEFTWARDS HARPOON WITH BARB UPWARDS
+21BD ; [*064D.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWNWARDS
+21BE ; [*064E.0020.0002] # UPWARDS HARPOON WITH BARB RIGHTWARDS
+21BF ; [*064F.0020.0002] # UPWARDS HARPOON WITH BARB LEFTWARDS
+21C0 ; [*0650.0020.0002] # RIGHTWARDS HARPOON WITH BARB UPWARDS
+21C1 ; [*0651.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+21C2 ; [*0652.0020.0002] # DOWNWARDS HARPOON WITH BARB RIGHTWARDS
+21C3 ; [*0653.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFTWARDS
+21C4 ; [*0654.0020.0002] # RIGHTWARDS ARROW OVER LEFTWARDS ARROW
+21C5 ; [*0655.0020.0002] # UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW
+21C6 ; [*0656.0020.0002] # LEFTWARDS ARROW OVER RIGHTWARDS ARROW
+21C7 ; [*0657.0020.0002] # LEFTWARDS PAIRED ARROWS
+21C8 ; [*0658.0020.0002] # UPWARDS PAIRED ARROWS
+21C9 ; [*0659.0020.0002] # RIGHTWARDS PAIRED ARROWS
+21CA ; [*065A.0020.0002] # DOWNWARDS PAIRED ARROWS
+21CB ; [*065B.0020.0002] # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
+21CC ; [*065C.0020.0002] # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON
+21CD ; [*065D.0020.0002][.0000.002F.0002] # LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE ; [*0661.0020.0002][.0000.002F.0002] # LEFT RIGHT DOUBLE ARROW WITH STROKE
+21CF ; [*065F.0020.0002][.0000.002F.0002] # RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D0 ; [*065D.0020.0002] # LEFTWARDS DOUBLE ARROW
+21D1 ; [*065E.0020.0002] # UPWARDS DOUBLE ARROW
+21D2 ; [*065F.0020.0002] # RIGHTWARDS DOUBLE ARROW
+21D3 ; [*0660.0020.0002] # DOWNWARDS DOUBLE ARROW
+21D4 ; [*0661.0020.0002] # LEFT RIGHT DOUBLE ARROW
+21D5 ; [*0662.0020.0002] # UP DOWN DOUBLE ARROW
+21D6 ; [*0663.0020.0002] # NORTH WEST DOUBLE ARROW
+21D7 ; [*0664.0020.0002] # NORTH EAST DOUBLE ARROW
+21D8 ; [*0665.0020.0002] # SOUTH EAST DOUBLE ARROW
+21D9 ; [*0666.0020.0002] # SOUTH WEST DOUBLE ARROW
+21DA ; [*0667.0020.0002] # LEFTWARDS TRIPLE ARROW
+21DB ; [*0668.0020.0002] # RIGHTWARDS TRIPLE ARROW
+21DC ; [*0669.0020.0002] # LEFTWARDS SQUIGGLE ARROW
+21DD ; [*066A.0020.0002] # RIGHTWARDS SQUIGGLE ARROW
+21DE ; [*066B.0020.0002] # UPWARDS ARROW WITH DOUBLE STROKE
+21DF ; [*066C.0020.0002] # DOWNWARDS ARROW WITH DOUBLE STROKE
+21E0 ; [*066D.0020.0002] # LEFTWARDS DASHED ARROW
+21E1 ; [*066E.0020.0002] # UPWARDS DASHED ARROW
+21E2 ; [*066F.0020.0002] # RIGHTWARDS DASHED ARROW
+21E3 ; [*0670.0020.0002] # DOWNWARDS DASHED ARROW
+21E4 ; [*0671.0020.0002] # LEFTWARDS ARROW TO BAR
+21E5 ; [*0672.0020.0002] # RIGHTWARDS ARROW TO BAR
+21E6 ; [*0673.0020.0002] # LEFTWARDS WHITE ARROW
+21E7 ; [*0674.0020.0002] # UPWARDS WHITE ARROW
+21E8 ; [*0675.0020.0002] # RIGHTWARDS WHITE ARROW
+21E9 ; [*0676.0020.0002] # DOWNWARDS WHITE ARROW
+21EA ; [*0677.0020.0002] # UPWARDS WHITE ARROW FROM BAR
+21EB ; [*0678.0020.0002] # UPWARDS WHITE ARROW ON PEDESTAL
+21EC ; [*0679.0020.0002] # UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR
+21ED ; [*067A.0020.0002] # UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR
+21EE ; [*067B.0020.0002] # UPWARDS WHITE DOUBLE ARROW
+21EF ; [*067C.0020.0002] # UPWARDS WHITE DOUBLE ARROW ON PEDESTAL
+21F0 ; [*067D.0020.0002] # RIGHTWARDS WHITE ARROW FROM WALL
+21F1 ; [*067E.0020.0002] # NORTH WEST ARROW TO CORNER
+21F2 ; [*067F.0020.0002] # SOUTH EAST ARROW TO CORNER
+21F3 ; [*0680.0020.0002] # UP DOWN WHITE ARROW
+21F4 ; [*0681.0020.0002] # RIGHT ARROW WITH SMALL CIRCLE
+21F5 ; [*0682.0020.0002] # DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW
+21F6 ; [*0683.0020.0002] # THREE RIGHTWARDS ARROWS
+21F7 ; [*0684.0020.0002] # LEFTWARDS ARROW WITH VERTICAL STROKE
+21F8 ; [*0685.0020.0002] # RIGHTWARDS ARROW WITH VERTICAL STROKE
+21F9 ; [*0686.0020.0002] # LEFT RIGHT ARROW WITH VERTICAL STROKE
+21FA ; [*0687.0020.0002] # LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+21FB ; [*0688.0020.0002] # RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE
+21FC ; [*0689.0020.0002] # LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE
+21FD ; [*068A.0020.0002] # LEFTWARDS OPEN-HEADED ARROW
+21FE ; [*068B.0020.0002] # RIGHTWARDS OPEN-HEADED ARROW
+21FF ; [*068C.0020.0002] # LEFT RIGHT OPEN-HEADED ARROW
+2200 ; [*068D.0020.0002] # FOR ALL
+2201 ; [*068E.0020.0002] # COMPLEMENT
+2202 ; [*068F.0020.0002] # PARTIAL DIFFERENTIAL
+2203 ; [*0690.0020.0002] # THERE EXISTS
+2204 ; [*0690.0020.0002][.0000.002F.0002] # THERE DOES NOT EXIST
+2205 ; [*0691.0020.0002] # EMPTY SET
+2206 ; [*0692.0020.0002] # INCREMENT
+2207 ; [*0693.0020.0002] # NABLA
+2208 ; [*0694.0020.0002] # ELEMENT OF
+2209 ; [*0694.0020.0002][.0000.002F.0002] # NOT AN ELEMENT OF
+220A ; [*0695.0020.0002] # SMALL ELEMENT OF
+220B ; [*0696.0020.0002] # CONTAINS AS MEMBER
+220C ; [*0696.0020.0002][.0000.002F.0002] # DOES NOT CONTAIN AS MEMBER
+220D ; [*0697.0020.0002] # SMALL CONTAINS AS MEMBER
+220E ; [*0699.0020.0002] # END OF PROOF
+220F ; [*069A.0020.0002] # N-ARY PRODUCT
+2210 ; [*069B.0020.0002] # N-ARY COPRODUCT
+2211 ; [*069C.0020.0002] # N-ARY SUMMATION
+2212 ; [*06A8.0020.0002] # MINUS SIGN
+2213 ; [*06AA.0020.0002] # MINUS-OR-PLUS SIGN
+2214 ; [*06AB.0020.0002] # DOT PLUS
+2215 ; [*06AC.0020.0002] # DIVISION SLASH
+2216 ; [*06AE.0020.0002] # SET MINUS
+2217 ; [*06AF.0020.0002] # ASTERISK OPERATOR
+2218 ; [*06B0.0020.0002] # RING OPERATOR
+2219 ; [*06B1.0020.0002] # BULLET OPERATOR
+221A ; [*06B2.0020.0002] # SQUARE ROOT
+221B ; [*06B3.0020.0002] # CUBE ROOT
+221C ; [*06B5.0020.0002] # FOURTH ROOT
+221D ; [*06B7.0020.0002] # PROPORTIONAL TO
+221E ; [*06B8.0020.0002] # INFINITY
+221F ; [*06B9.0020.0002] # RIGHT ANGLE
+2220 ; [*06BA.0020.0002] # ANGLE
+2221 ; [*06BB.0020.0002] # MEASURED ANGLE
+2222 ; [*06BC.0020.0002] # SPHERICAL ANGLE
+2223 ; [*06BD.0020.0002] # DIVIDES
+2224 ; [*06BD.0020.0002][.0000.002F.0002] # DOES NOT DIVIDE
+2225 ; [*06BE.0020.0002] # PARALLEL TO
+2226 ; [*06BE.0020.0002][.0000.002F.0002] # NOT PARALLEL TO
+2227 ; [*06BF.0020.0002] # LOGICAL AND
+2228 ; [*06C0.0020.0002] # LOGICAL OR
+2229 ; [*06C1.0020.0002] # INTERSECTION
+222A ; [*06C2.0020.0002] # UNION
+222B ; [*06C3.0020.0002] # INTEGRAL
+222C ; [*06C3.0020.0004][*06C3.0020.0004] # DOUBLE INTEGRAL
+222D ; [*06C3.0020.0004][*06C3.0020.0004][*06C3.0020.0004] # TRIPLE INTEGRAL
+222E ; [*06C4.0020.0002] # CONTOUR INTEGRAL
+222F ; [*06C4.0020.0004][*06C4.0020.0004] # SURFACE INTEGRAL
+2230 ; [*06C4.0020.0004][*06C4.0020.0004][*06C4.0020.0004] # VOLUME INTEGRAL
+2231 ; [*06C5.0020.0002] # CLOCKWISE INTEGRAL
+2232 ; [*06C6.0020.0002] # CLOCKWISE CONTOUR INTEGRAL
+2233 ; [*06C7.0020.0002] # ANTICLOCKWISE CONTOUR INTEGRAL
+2234 ; [*06C8.0020.0002] # THEREFORE
+2235 ; [*06C9.0020.0002] # BECAUSE
+2236 ; [*06CA.0020.0002] # RATIO
+2237 ; [*06CB.0020.0002] # PROPORTION
+2238 ; [*06CC.0020.0002] # DOT MINUS
+2239 ; [*06CD.0020.0002] # EXCESS
+223A ; [*06CE.0020.0002] # GEOMETRIC PROPORTION
+223B ; [*06CF.0020.0002] # HOMOTHETIC
+223C ; [*06D0.0020.0002] # TILDE OPERATOR
+223D ; [*06D1.0020.0002] # REVERSED TILDE
+223E ; [*06D2.0020.0002] # INVERTED LAZY S
+223F ; [*06D3.0020.0002] # SINE WAVE
+2240 ; [*06D4.0020.0002] # WREATH PRODUCT
+2241 ; [*06D0.0020.0002][.0000.002F.0002] # NOT TILDE
+2242 ; [*06D5.0020.0002] # MINUS TILDE
+2243 ; [*06D6.0020.0002] # ASYMPTOTICALLY EQUAL TO
+2244 ; [*06D6.0020.0002][.0000.002F.0002] # NOT ASYMPTOTICALLY EQUAL TO
+2245 ; [*06D7.0020.0002] # APPROXIMATELY EQUAL TO
+2246 ; [*06D8.0020.0002] # APPROXIMATELY BUT NOT ACTUALLY EQUAL TO
+2247 ; [*06D7.0020.0002][.0000.002F.0002] # NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2248 ; [*06D9.0020.0002] # ALMOST EQUAL TO
+2249 ; [*06D9.0020.0002][.0000.002F.0002] # NOT ALMOST EQUAL TO
+224A ; [*06DA.0020.0002] # ALMOST EQUAL OR EQUAL TO
+224B ; [*06DB.0020.0002] # TRIPLE TILDE
+224C ; [*06DC.0020.0002] # ALL EQUAL TO
+224D ; [*06DD.0020.0002] # EQUIVALENT TO
+224E ; [*06DE.0020.0002] # GEOMETRICALLY EQUIVALENT TO
+224F ; [*06DF.0020.0002] # DIFFERENCE BETWEEN
+2250 ; [*06E0.0020.0002] # APPROACHES THE LIMIT
+2251 ; [*06E1.0020.0002] # GEOMETRICALLY EQUAL TO
+2252 ; [*06E2.0020.0002] # APPROXIMATELY EQUAL TO OR THE IMAGE OF
+2253 ; [*06E3.0020.0002] # IMAGE OF OR APPROXIMATELY EQUAL TO
+2254 ; [*06E4.0020.0002] # COLON EQUALS
+2255 ; [*06E5.0020.0002] # EQUALS COLON
+2256 ; [*06E6.0020.0002] # RING IN EQUAL TO
+2257 ; [*06E7.0020.0002] # RING EQUAL TO
+2258 ; [*06E8.0020.0002] # CORRESPONDS TO
+2259 ; [*06E9.0020.0002] # ESTIMATES
+225A ; [*06EA.0020.0002] # EQUIANGULAR TO
+225B ; [*06EB.0020.0002] # STAR EQUALS
+225C ; [*06EC.0020.0002] # DELTA EQUAL TO
+225D ; [*06ED.0020.0002] # EQUAL TO BY DEFINITION
+225E ; [*06EE.0020.0002] # MEASURED BY
+225F ; [*06EF.0020.0002] # QUESTIONED EQUAL TO
+2260 ; [*06A2.0020.0002][.0000.002F.0002] # NOT EQUAL TO
+2261 ; [*06F0.0020.0002] # IDENTICAL TO
+2262 ; [*06F0.0020.0002][.0000.002F.0002] # NOT IDENTICAL TO
+2263 ; [*06F1.0020.0002] # STRICTLY EQUIVALENT TO
+2264 ; [*06F2.0020.0002] # LESS-THAN OR EQUAL TO
+2265 ; [*06F3.0020.0002] # GREATER-THAN OR EQUAL TO
+2266 ; [*06F4.0020.0002] # LESS-THAN OVER EQUAL TO
+2267 ; [*06F5.0020.0002] # GREATER-THAN OVER EQUAL TO
+2268 ; [*06F6.0020.0002] # LESS-THAN BUT NOT EQUAL TO
+2269 ; [*06F7.0020.0002] # GREATER-THAN BUT NOT EQUAL TO
+226A ; [*06F8.0020.0002] # MUCH LESS-THAN
+226B ; [*06F9.0020.0002] # MUCH GREATER-THAN
+226C ; [*06FA.0020.0002] # BETWEEN
+226D ; [*06DD.0020.0002][.0000.002F.0002] # NOT EQUIVALENT TO
+226E ; [*06A1.0020.0002][.0000.002F.0002] # NOT LESS-THAN
+226F ; [*06A3.0020.0002][.0000.002F.0002] # NOT GREATER-THAN
+2270 ; [*06F2.0020.0002][.0000.002F.0002] # NEITHER LESS-THAN NOR EQUAL TO
+2271 ; [*06F3.0020.0002][.0000.002F.0002] # NEITHER GREATER-THAN NOR EQUAL TO
+2272 ; [*06FB.0020.0002] # LESS-THAN OR EQUIVALENT TO
+2273 ; [*06FC.0020.0002] # GREATER-THAN OR EQUIVALENT TO
+2274 ; [*06FB.0020.0002][.0000.002F.0002] # NEITHER LESS-THAN NOR EQUIVALENT TO
+2275 ; [*06FC.0020.0002][.0000.002F.0002] # NEITHER GREATER-THAN NOR EQUIVALENT TO
+2276 ; [*06FD.0020.0002] # LESS-THAN OR GREATER-THAN
+2277 ; [*06FE.0020.0002] # GREATER-THAN OR LESS-THAN
+2278 ; [*06FD.0020.0002][.0000.002F.0002] # NEITHER LESS-THAN NOR GREATER-THAN
+2279 ; [*06FE.0020.0002][.0000.002F.0002] # NEITHER GREATER-THAN NOR LESS-THAN
+227A ; [*06FF.0020.0002] # PRECEDES
+227B ; [*0700.0020.0002] # SUCCEEDS
+227C ; [*0701.0020.0002] # PRECEDES OR EQUAL TO
+227D ; [*0702.0020.0002] # SUCCEEDS OR EQUAL TO
+227E ; [*0703.0020.0002] # PRECEDES OR EQUIVALENT TO
+227F ; [*0704.0020.0002] # SUCCEEDS OR EQUIVALENT TO
+2280 ; [*06FF.0020.0002][.0000.002F.0002] # DOES NOT PRECEDE
+2281 ; [*0700.0020.0002][.0000.002F.0002] # DOES NOT SUCCEED
+2282 ; [*0705.0020.0002] # SUBSET OF
+2283 ; [*0706.0020.0002] # SUPERSET OF
+2284 ; [*0705.0020.0002][.0000.002F.0002] # NOT A SUBSET OF
+2285 ; [*0706.0020.0002][.0000.002F.0002] # NOT A SUPERSET OF
+2286 ; [*0707.0020.0002] # SUBSET OF OR EQUAL TO
+2287 ; [*0708.0020.0002] # SUPERSET OF OR EQUAL TO
+2288 ; [*0707.0020.0002][.0000.002F.0002] # NEITHER A SUBSET OF NOR EQUAL TO
+2289 ; [*0708.0020.0002][.0000.002F.0002] # NEITHER A SUPERSET OF NOR EQUAL TO
+228A ; [*0709.0020.0002] # SUBSET OF WITH NOT EQUAL TO
+228B ; [*070A.0020.0002] # SUPERSET OF WITH NOT EQUAL TO
+228C ; [*070B.0020.0002] # MULTISET
+228D ; [*070C.0020.0002] # MULTISET MULTIPLICATION
+228E ; [*070D.0020.0002] # MULTISET UNION
+228F ; [*070E.0020.0002] # SQUARE IMAGE OF
+2290 ; [*070F.0020.0002] # SQUARE ORIGINAL OF
+2291 ; [*0710.0020.0002] # SQUARE IMAGE OF OR EQUAL TO
+2292 ; [*0711.0020.0002] # SQUARE ORIGINAL OF OR EQUAL TO
+2293 ; [*0712.0020.0002] # SQUARE CAP
+2294 ; [*0713.0020.0002] # SQUARE CUP
+2295 ; [*0714.0020.0002] # CIRCLED PLUS
+2296 ; [*0715.0020.0002] # CIRCLED MINUS
+2297 ; [*0716.0020.0002] # CIRCLED TIMES
+2298 ; [*0717.0020.0002] # CIRCLED DIVISION SLASH
+2299 ; [*0718.0020.0002] # CIRCLED DOT OPERATOR
+229A ; [*0719.0020.0002] # CIRCLED RING OPERATOR
+229B ; [*071A.0020.0002] # CIRCLED ASTERISK OPERATOR
+229C ; [*071B.0020.0002] # CIRCLED EQUALS
+229D ; [*071C.0020.0002] # CIRCLED DASH
+229E ; [*071D.0020.0002] # SQUARED PLUS
+229F ; [*071E.0020.0002] # SQUARED MINUS
+22A0 ; [*071F.0020.0002] # SQUARED TIMES
+22A1 ; [*0720.0020.0002] # SQUARED DOT OPERATOR
+22A2 ; [*0721.0020.0002] # RIGHT TACK
+22A3 ; [*0722.0020.0002] # LEFT TACK
+22A4 ; [*0723.0020.0002] # DOWN TACK
+22A5 ; [*0724.0020.0002] # UP TACK
+22A6 ; [*0725.0020.0002] # ASSERTION
+22A7 ; [*0726.0020.0002] # MODELS
+22A8 ; [*0727.0020.0002] # TRUE
+22A9 ; [*0728.0020.0002] # FORCES
+22AA ; [*0729.0020.0002] # TRIPLE VERTICAL BAR RIGHT TURNSTILE
+22AB ; [*072A.0020.0002] # DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22AC ; [*0721.0020.0002][.0000.002F.0002] # DOES NOT PROVE
+22AD ; [*0727.0020.0002][.0000.002F.0002] # NOT TRUE
+22AE ; [*0728.0020.0002][.0000.002F.0002] # DOES NOT FORCE
+22AF ; [*072A.0020.0002][.0000.002F.0002] # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22B0 ; [*072B.0020.0002] # PRECEDES UNDER RELATION
+22B1 ; [*072C.0020.0002] # SUCCEEDS UNDER RELATION
+22B2 ; [*072D.0020.0002] # NORMAL SUBGROUP OF
+22B3 ; [*072E.0020.0002] # CONTAINS AS NORMAL SUBGROUP
+22B4 ; [*072F.0020.0002] # NORMAL SUBGROUP OF OR EQUAL TO
+22B5 ; [*0730.0020.0002] # CONTAINS AS NORMAL SUBGROUP OR EQUAL TO
+22B6 ; [*0731.0020.0002] # ORIGINAL OF
+22B7 ; [*0732.0020.0002] # IMAGE OF
+22B8 ; [*0733.0020.0002] # MULTIMAP
+22B9 ; [*0734.0020.0002] # HERMITIAN CONJUGATE MATRIX
+22BA ; [*0735.0020.0002] # INTERCALATE
+22BB ; [*0736.0020.0002] # XOR
+22BC ; [*0737.0020.0002] # NAND
+22BD ; [*0739.0020.0002] # NOR
+22BE ; [*073A.0020.0002] # RIGHT ANGLE WITH ARC
+22BF ; [*073B.0020.0002] # RIGHT TRIANGLE
+22C0 ; [*073C.0020.0002] # N-ARY LOGICAL AND
+22C1 ; [*073D.0020.0002] # N-ARY LOGICAL OR
+22C2 ; [*073E.0020.0002] # N-ARY INTERSECTION
+22C3 ; [*073F.0020.0002] # N-ARY UNION
+22C4 ; [*0740.0020.0002] # DIAMOND OPERATOR
+22C5 ; [*0741.0020.0002] # DOT OPERATOR
+22C6 ; [*0742.0020.0002] # STAR OPERATOR
+22C7 ; [*0743.0020.0002] # DIVISION TIMES
+22C8 ; [*0744.0020.0002] # BOWTIE
+22C9 ; [*0745.0020.0002] # LEFT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CA ; [*0746.0020.0002] # RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT
+22CB ; [*0747.0020.0002] # LEFT SEMIDIRECT PRODUCT
+22CC ; [*0748.0020.0002] # RIGHT SEMIDIRECT PRODUCT
+22CD ; [*0749.0020.0002] # REVERSED TILDE EQUALS
+22CE ; [*074A.0020.0002] # CURLY LOGICAL OR
+22CF ; [*074B.0020.0002] # CURLY LOGICAL AND
+22D0 ; [*074C.0020.0002] # DOUBLE SUBSET
+22D1 ; [*074D.0020.0002] # DOUBLE SUPERSET
+22D2 ; [*074E.0020.0002] # DOUBLE INTERSECTION
+22D3 ; [*074F.0020.0002] # DOUBLE UNION
+22D4 ; [*0750.0020.0002] # PITCHFORK
+22D5 ; [*0751.0020.0002] # EQUAL AND PARALLEL TO
+22D6 ; [*0752.0020.0002] # LESS-THAN WITH DOT
+22D7 ; [*0753.0020.0002] # GREATER-THAN WITH DOT
+22D8 ; [*0754.0020.0002] # VERY MUCH LESS-THAN
+22D9 ; [*0755.0020.0002] # VERY MUCH GREATER-THAN
+22DA ; [*0756.0020.0002] # LESS-THAN EQUAL TO OR GREATER-THAN
+22DB ; [*0757.0020.0002] # GREATER-THAN EQUAL TO OR LESS-THAN
+22DC ; [*0758.0020.0002] # EQUAL TO OR LESS-THAN
+22DD ; [*0759.0020.0002] # EQUAL TO OR GREATER-THAN
+22DE ; [*075A.0020.0002] # EQUAL TO OR PRECEDES
+22DF ; [*075B.0020.0002] # EQUAL TO OR SUCCEEDS
+22E0 ; [*0701.0020.0002][.0000.002F.0002] # DOES NOT PRECEDE OR EQUAL
+22E1 ; [*0702.0020.0002][.0000.002F.0002] # DOES NOT SUCCEED OR EQUAL
+22E2 ; [*0710.0020.0002][.0000.002F.0002] # NOT SQUARE IMAGE OF OR EQUAL TO
+22E3 ; [*0711.0020.0002][.0000.002F.0002] # NOT SQUARE ORIGINAL OF OR EQUAL TO
+22E4 ; [*075C.0020.0002] # SQUARE IMAGE OF OR NOT EQUAL TO
+22E5 ; [*075D.0020.0002] # SQUARE ORIGINAL OF OR NOT EQUAL TO
+22E6 ; [*075E.0020.0002] # LESS-THAN BUT NOT EQUIVALENT TO
+22E7 ; [*075F.0020.0002] # GREATER-THAN BUT NOT EQUIVALENT TO
+22E8 ; [*0760.0020.0002] # PRECEDES BUT NOT EQUIVALENT TO
+22E9 ; [*0761.0020.0002] # SUCCEEDS BUT NOT EQUIVALENT TO
+22EA ; [*072D.0020.0002][.0000.002F.0002] # NOT NORMAL SUBGROUP OF
+22EB ; [*072E.0020.0002][.0000.002F.0002] # DOES NOT CONTAIN AS NORMAL SUBGROUP
+22EC ; [*072F.0020.0002][.0000.002F.0002] # NOT NORMAL SUBGROUP OF OR EQUAL TO
+22ED ; [*0730.0020.0002][.0000.002F.0002] # DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+22EE ; [*0762.0020.0002] # VERTICAL ELLIPSIS
+22EF ; [*0763.0020.0002] # MIDLINE HORIZONTAL ELLIPSIS
+22F0 ; [*0764.0020.0002] # UP RIGHT DIAGONAL ELLIPSIS
+22F1 ; [*0765.0020.0002] # DOWN RIGHT DIAGONAL ELLIPSIS
+22F2 ; [*0766.0020.0002] # ELEMENT OF WITH LONG HORIZONTAL STROKE
+22F3 ; [*0767.0020.0002] # ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22F4 ; [*0768.0020.0002] # SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22F5 ; [*0769.0020.0002] # ELEMENT OF WITH DOT ABOVE
+22F6 ; [*076A.0020.0002] # ELEMENT OF WITH OVERBAR
+22F7 ; [*076B.0020.0002] # SMALL ELEMENT OF WITH OVERBAR
+22F8 ; [*076C.0020.0002] # ELEMENT OF WITH UNDERBAR
+22F9 ; [*076D.0020.0002] # ELEMENT OF WITH TWO HORIZONTAL STROKES
+22FA ; [*076E.0020.0002] # CONTAINS WITH LONG HORIZONTAL STROKE
+22FB ; [*076F.0020.0002] # CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22FC ; [*0770.0020.0002] # SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE
+22FD ; [*0771.0020.0002] # CONTAINS WITH OVERBAR
+22FE ; [*0772.0020.0002] # SMALL CONTAINS WITH OVERBAR
+22FF ; [*0773.0020.0002] # Z NOTATION BAG MEMBERSHIP
+2300 ; [*0774.0020.0002] # DIAMETER SIGN
+2301 ; [*0775.0020.0002] # ELECTRIC ARROW
+2302 ; [*0776.0020.0002] # HOUSE
+2303 ; [*0777.0020.0002] # UP ARROWHEAD
+2304 ; [*0778.0020.0002] # DOWN ARROWHEAD
+2305 ; [*0779.0020.0002] # PROJECTIVE
+2306 ; [*077A.0020.0002] # PERSPECTIVE
+2307 ; [*077B.0020.0002] # WAVY LINE
+2308 ; [*0342.0020.0002] # LEFT CEILING
+2309 ; [*0343.0020.0002] # RIGHT CEILING
+230A ; [*0344.0020.0002] # LEFT FLOOR
+230B ; [*0345.0020.0002] # RIGHT FLOOR
+230C ; [*077C.0020.0002] # BOTTOM RIGHT CROP
+230D ; [*077D.0020.0002] # BOTTOM LEFT CROP
+230E ; [*077E.0020.0002] # TOP RIGHT CROP
+230F ; [*077F.0020.0002] # TOP LEFT CROP
+2310 ; [*0780.0020.0002] # REVERSED NOT SIGN
+2311 ; [*0781.0020.0002] # SQUARE LOZENGE
+2312 ; [*0782.0020.0002] # ARC
+2313 ; [*0783.0020.0002] # SEGMENT
+2314 ; [*0784.0020.0002] # SECTOR
+2315 ; [*0785.0020.0002] # TELEPHONE RECORDER
+2316 ; [*0786.0020.0002] # POSITION INDICATOR
+2317 ; [*0787.0020.0002] # VIEWDATA SQUARE
+2318 ; [*0788.0020.0002] # PLACE OF INTEREST SIGN
+2319 ; [*0789.0020.0002] # TURNED NOT SIGN
+231A ; [*078A.0020.0002] # WATCH
+231B ; [*078B.0020.0002] # HOURGLASS
+231C ; [*078C.0020.0002] # TOP LEFT CORNER
+231D ; [*078D.0020.0002] # TOP RIGHT CORNER
+231E ; [*078E.0020.0002] # BOTTOM LEFT CORNER
+231F ; [*078F.0020.0002] # BOTTOM RIGHT CORNER
+2320 ; [*0790.0020.0002] # TOP HALF INTEGRAL
+2321 ; [*0791.0020.0002] # BOTTOM HALF INTEGRAL
+2322 ; [*0792.0020.0002] # FROWN
+2323 ; [*0793.0020.0002] # SMILE
+2324 ; [*0794.0020.0002] # UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS
+2325 ; [*0795.0020.0002] # OPTION KEY
+2326 ; [*0796.0020.0002] # ERASE TO THE RIGHT
+2327 ; [*0797.0020.0002] # X IN A RECTANGLE BOX
+2328 ; [*0798.0020.0002] # KEYBOARD
+2329 ; [*0394.0020.0002] # LEFT-POINTING ANGLE BRACKET
+232A ; [*0395.0020.0002] # RIGHT-POINTING ANGLE BRACKET
+232B ; [*0799.0020.0002] # ERASE TO THE LEFT
+232C ; [*079A.0020.0002] # BENZENE RING
+232D ; [*079B.0020.0002] # CYLINDRICITY
+232E ; [*079C.0020.0002] # ALL AROUND-PROFILE
+232F ; [*079D.0020.0002] # SYMMETRY
+2330 ; [*079E.0020.0002] # TOTAL RUNOUT
+2331 ; [*079F.0020.0002] # DIMENSION ORIGIN
+2332 ; [*07A0.0020.0002] # CONICAL TAPER
+2333 ; [*07A1.0020.0002] # SLOPE
+2334 ; [*07A2.0020.0002] # COUNTERBORE
+2335 ; [*07A3.0020.0002] # COUNTERSINK
+2336 ; [*07A4.0020.0002] # APL FUNCTIONAL SYMBOL I-BEAM
+2337 ; [*07A5.0020.0002] # APL FUNCTIONAL SYMBOL SQUISH QUAD
+2338 ; [*07A6.0020.0002] # APL FUNCTIONAL SYMBOL QUAD EQUAL
+2339 ; [*07A7.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DIVIDE
+233A ; [*07A8.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DIAMOND
+233B ; [*07A9.0020.0002] # APL FUNCTIONAL SYMBOL QUAD JOT
+233C ; [*07AA.0020.0002] # APL FUNCTIONAL SYMBOL QUAD CIRCLE
+233D ; [*07AB.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE STILE
+233E ; [*07AC.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE JOT
+233F ; [*07AD.0020.0002] # APL FUNCTIONAL SYMBOL SLASH BAR
+2340 ; [*07AE.0020.0002] # APL FUNCTIONAL SYMBOL BACKSLASH BAR
+2341 ; [*07AF.0020.0002] # APL FUNCTIONAL SYMBOL QUAD SLASH
+2342 ; [*07B0.0020.0002] # APL FUNCTIONAL SYMBOL QUAD BACKSLASH
+2343 ; [*07B1.0020.0002] # APL FUNCTIONAL SYMBOL QUAD LESS-THAN
+2344 ; [*07B2.0020.0002] # APL FUNCTIONAL SYMBOL QUAD GREATER-THAN
+2345 ; [*07B3.0020.0002] # APL FUNCTIONAL SYMBOL LEFTWARDS VANE
+2346 ; [*07B4.0020.0002] # APL FUNCTIONAL SYMBOL RIGHTWARDS VANE
+2347 ; [*07B5.0020.0002] # APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW
+2348 ; [*07B6.0020.0002] # APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW
+2349 ; [*07B7.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
+234A ; [*07B8.0020.0002] # APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR
+234B ; [*07B9.0020.0002] # APL FUNCTIONAL SYMBOL DELTA STILE
+234C ; [*07BA.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DOWN CARET
+234D ; [*07BB.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DELTA
+234E ; [*07BC.0020.0002] # APL FUNCTIONAL SYMBOL DOWN TACK JOT
+234F ; [*07BD.0020.0002] # APL FUNCTIONAL SYMBOL UPWARDS VANE
+2350 ; [*07BE.0020.0002] # APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW
+2351 ; [*07BF.0020.0002] # APL FUNCTIONAL SYMBOL UP TACK OVERBAR
+2352 ; [*07C0.0020.0002] # APL FUNCTIONAL SYMBOL DEL STILE
+2353 ; [*07C1.0020.0002] # APL FUNCTIONAL SYMBOL QUAD UP CARET
+2354 ; [*07C2.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DEL
+2355 ; [*07C3.0020.0002] # APL FUNCTIONAL SYMBOL UP TACK JOT
+2356 ; [*07C4.0020.0002] # APL FUNCTIONAL SYMBOL DOWNWARDS VANE
+2357 ; [*07C5.0020.0002] # APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW
+2358 ; [*07C6.0020.0002] # APL FUNCTIONAL SYMBOL QUOTE UNDERBAR
+2359 ; [*07C7.0020.0002] # APL FUNCTIONAL SYMBOL DELTA UNDERBAR
+235A ; [*07C8.0020.0002] # APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR
+235B ; [*07C9.0020.0002] # APL FUNCTIONAL SYMBOL JOT UNDERBAR
+235C ; [*07CA.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR
+235D ; [*07CB.0020.0002] # APL FUNCTIONAL SYMBOL UP SHOE JOT
+235E ; [*07CC.0020.0002] # APL FUNCTIONAL SYMBOL QUOTE QUAD
+235F ; [*07CD.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE STAR
+2360 ; [*07CE.0020.0002] # APL FUNCTIONAL SYMBOL QUAD COLON
+2361 ; [*07CF.0020.0002] # APL FUNCTIONAL SYMBOL UP TACK DIAERESIS
+2362 ; [*07D0.0020.0002] # APL FUNCTIONAL SYMBOL DEL DIAERESIS
+2363 ; [*07D1.0020.0002] # APL FUNCTIONAL SYMBOL STAR DIAERESIS
+2364 ; [*07D2.0020.0002] # APL FUNCTIONAL SYMBOL JOT DIAERESIS
+2365 ; [*07D3.0020.0002] # APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS
+2366 ; [*07D4.0020.0002] # APL FUNCTIONAL SYMBOL DOWN SHOE STILE
+2367 ; [*07D5.0020.0002] # APL FUNCTIONAL SYMBOL LEFT SHOE STILE
+2368 ; [*07D6.0020.0002] # APL FUNCTIONAL SYMBOL TILDE DIAERESIS
+2369 ; [*07D7.0020.0002] # APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS
+236A ; [*07D8.0020.0002] # APL FUNCTIONAL SYMBOL COMMA BAR
+236B ; [*07D9.0020.0002] # APL FUNCTIONAL SYMBOL DEL TILDE
+236C ; [*07DA.0020.0002] # APL FUNCTIONAL SYMBOL ZILDE
+236D ; [*07DB.0020.0002] # APL FUNCTIONAL SYMBOL STILE TILDE
+236E ; [*07DC.0020.0002] # APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR
+236F ; [*07DD.0020.0002] # APL FUNCTIONAL SYMBOL QUAD NOT EQUAL
+2370 ; [*07DE.0020.0002] # APL FUNCTIONAL SYMBOL QUAD QUESTION
+2371 ; [*07DF.0020.0002] # APL FUNCTIONAL SYMBOL DOWN CARET TILDE
+2372 ; [*07E0.0020.0002] # APL FUNCTIONAL SYMBOL UP CARET TILDE
+2373 ; [*07E1.0020.0002] # APL FUNCTIONAL SYMBOL IOTA
+2374 ; [*07E2.0020.0002] # APL FUNCTIONAL SYMBOL RHO
+2375 ; [*07E3.0020.0002] # APL FUNCTIONAL SYMBOL OMEGA
+2376 ; [*07E4.0020.0002] # APL FUNCTIONAL SYMBOL ALPHA UNDERBAR
+2377 ; [*07E5.0020.0002] # APL FUNCTIONAL SYMBOL EPSILON UNDERBAR
+2378 ; [*07E6.0020.0002] # APL FUNCTIONAL SYMBOL IOTA UNDERBAR
+2379 ; [*07E7.0020.0002] # APL FUNCTIONAL SYMBOL OMEGA UNDERBAR
+237A ; [*07E8.0020.0002] # APL FUNCTIONAL SYMBOL ALPHA
+237B ; [*07E9.0020.0002] # NOT CHECK MARK
+237C ; [*07EA.0020.0002] # RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+237D ; [*07EB.0020.0002] # SHOULDERED OPEN BOX
+237E ; [*07EC.0020.0002] # BELL SYMBOL
+237F ; [*07ED.0020.0002] # VERTICAL LINE WITH MIDDLE DOT
+2380 ; [*07EE.0020.0002] # INSERTION SYMBOL
+2381 ; [*07EF.0020.0002] # CONTINUOUS UNDERLINE SYMBOL
+2382 ; [*07F0.0020.0002] # DISCONTINUOUS UNDERLINE SYMBOL
+2383 ; [*07F1.0020.0002] # EMPHASIS SYMBOL
+2384 ; [*07F2.0020.0002] # COMPOSITION SYMBOL
+2385 ; [*07F3.0020.0002] # WHITE SQUARE WITH CENTRE VERTICAL LINE
+2386 ; [*07F4.0020.0002] # ENTER SYMBOL
+2387 ; [*07F5.0020.0002] # ALTERNATIVE KEY SYMBOL
+2388 ; [*07F6.0020.0002] # HELM SYMBOL
+2389 ; [*07F7.0020.0002] # CIRCLED HORIZONTAL BAR WITH NOTCH
+238A ; [*07F8.0020.0002] # CIRCLED TRIANGLE DOWN
+238B ; [*07F9.0020.0002] # BROKEN CIRCLE WITH NORTHWEST ARROW
+238C ; [*07FA.0020.0002] # UNDO SYMBOL
+238D ; [*07FB.0020.0002] # MONOSTABLE SYMBOL
+238E ; [*07FC.0020.0002] # HYSTERESIS SYMBOL
+238F ; [*07FD.0020.0002] # OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL
+2390 ; [*07FE.0020.0002] # OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL
+2391 ; [*07FF.0020.0002] # PASSIVE-PULL-DOWN-OUTPUT SYMBOL
+2392 ; [*0800.0020.0002] # PASSIVE-PULL-UP-OUTPUT SYMBOL
+2393 ; [*0801.0020.0002] # DIRECT CURRENT SYMBOL FORM TWO
+2394 ; [*0802.0020.0002] # SOFTWARE-FUNCTION SYMBOL
+2395 ; [*0803.0020.0002] # APL FUNCTIONAL SYMBOL QUAD
+2396 ; [*0804.0020.0002] # DECIMAL SEPARATOR KEY SYMBOL
+2397 ; [*0805.0020.0002] # PREVIOUS PAGE
+2398 ; [*0806.0020.0002] # NEXT PAGE
+2399 ; [*0807.0020.0002] # PRINT SCREEN SYMBOL
+239A ; [*0808.0020.0002] # CLEAR SCREEN SYMBOL
+239B ; [*0809.0020.0002] # LEFT PARENTHESIS UPPER HOOK
+239C ; [*080A.0020.0002] # LEFT PARENTHESIS EXTENSION
+239D ; [*080B.0020.0002] # LEFT PARENTHESIS LOWER HOOK
+239E ; [*080C.0020.0002] # RIGHT PARENTHESIS UPPER HOOK
+239F ; [*080D.0020.0002] # RIGHT PARENTHESIS EXTENSION
+23A0 ; [*080E.0020.0002] # RIGHT PARENTHESIS LOWER HOOK
+23A1 ; [*080F.0020.0002] # LEFT SQUARE BRACKET UPPER CORNER
+23A2 ; [*0810.0020.0002] # LEFT SQUARE BRACKET EXTENSION
+23A3 ; [*0811.0020.0002] # LEFT SQUARE BRACKET LOWER CORNER
+23A4 ; [*0812.0020.0002] # RIGHT SQUARE BRACKET UPPER CORNER
+23A5 ; [*0813.0020.0002] # RIGHT SQUARE BRACKET EXTENSION
+23A6 ; [*0814.0020.0002] # RIGHT SQUARE BRACKET LOWER CORNER
+23A7 ; [*0815.0020.0002] # LEFT CURLY BRACKET UPPER HOOK
+23A8 ; [*0816.0020.0002] # LEFT CURLY BRACKET MIDDLE PIECE
+23A9 ; [*0817.0020.0002] # LEFT CURLY BRACKET LOWER HOOK
+23AA ; [*0818.0020.0002] # CURLY BRACKET EXTENSION
+23AB ; [*0819.0020.0002] # RIGHT CURLY BRACKET UPPER HOOK
+23AC ; [*081A.0020.0002] # RIGHT CURLY BRACKET MIDDLE PIECE
+23AD ; [*081B.0020.0002] # RIGHT CURLY BRACKET LOWER HOOK
+23AE ; [*081C.0020.0002] # INTEGRAL EXTENSION
+23AF ; [*081D.0020.0002] # HORIZONTAL LINE EXTENSION
+23B0 ; [*081E.0020.0002] # UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION
+23B1 ; [*081F.0020.0002] # UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION
+23B2 ; [*0820.0020.0002] # SUMMATION TOP
+23B3 ; [*0821.0020.0002] # SUMMATION BOTTOM
+23B4 ; [*0822.0020.0002] # TOP SQUARE BRACKET
+23B5 ; [*0823.0020.0002] # BOTTOM SQUARE BRACKET
+23B6 ; [*0824.0020.0002] # BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET
+23B7 ; [*0825.0020.0002] # RADICAL SYMBOL BOTTOM
+23B8 ; [*0826.0020.0002] # LEFT VERTICAL BOX LINE
+23B9 ; [*0827.0020.0002] # RIGHT VERTICAL BOX LINE
+23BA ; [*0828.0020.0002] # HORIZONTAL SCAN LINE-1
+23BB ; [*0829.0020.0002] # HORIZONTAL SCAN LINE-3
+23BC ; [*082A.0020.0002] # HORIZONTAL SCAN LINE-7
+23BD ; [*082B.0020.0002] # HORIZONTAL SCAN LINE-9
+23BE ; [*082C.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT
+23BF ; [*082D.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT
+23C0 ; [*082E.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE
+23C1 ; [*082F.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE
+23C2 ; [*0830.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE
+23C3 ; [*0831.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE
+23C4 ; [*0832.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE
+23C5 ; [*0833.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE
+23C6 ; [*0834.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE
+23C7 ; [*0835.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE
+23C8 ; [*0836.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE
+23C9 ; [*0837.0020.0002] # DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL
+23CA ; [*0838.0020.0002] # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL
+23CB ; [*0839.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT
+23CC ; [*083A.0020.0002] # DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT
+23CD ; [*083B.0020.0002] # SQUARE FOOT
+23CE ; [*083C.0020.0002] # RETURN SYMBOL
+23CF ; [*083D.0020.0002] # EJECT SYMBOL
+23D0 ; [*083E.0020.0002] # VERTICAL LINE EXTENSION
+23D1 ; [*083F.0020.0002] # METRICAL BREVE
+23D2 ; [*0840.0020.0002] # METRICAL LONG OVER SHORT
+23D3 ; [*0841.0020.0002] # METRICAL SHORT OVER LONG
+23D4 ; [*0842.0020.0002] # METRICAL LONG OVER TWO SHORTS
+23D5 ; [*0843.0020.0002] # METRICAL TWO SHORTS OVER LONG
+23D6 ; [*0844.0020.0002] # METRICAL TWO SHORTS JOINED
+23D7 ; [*0845.0020.0002] # METRICAL TRISEME
+23D8 ; [*0846.0020.0002] # METRICAL TETRASEME
+23D9 ; [*0847.0020.0002] # METRICAL PENTASEME
+23DA ; [*0848.0020.0002] # EARTH GROUND
+23DB ; [*0849.0020.0002] # FUSE
+23DC ; [*084A.0020.0002] # TOP PARENTHESIS
+23DD ; [*084B.0020.0002] # BOTTOM PARENTHESIS
+23DE ; [*084C.0020.0002] # TOP CURLY BRACKET
+23DF ; [*084D.0020.0002] # BOTTOM CURLY BRACKET
+23E0 ; [*084E.0020.0002] # TOP TORTOISE SHELL BRACKET
+23E1 ; [*084F.0020.0002] # BOTTOM TORTOISE SHELL BRACKET
+23E2 ; [*0850.0020.0002] # WHITE TRAPEZIUM
+23E3 ; [*0851.0020.0002] # BENZENE RING WITH CIRCLE
+23E4 ; [*0852.0020.0002] # STRAIGHTNESS
+23E5 ; [*0853.0020.0002] # FLATNESS
+23E6 ; [*0854.0020.0002] # AC CURRENT
+23E7 ; [*0855.0020.0002] # ELECTRICAL INTERSECTION
+23E8 ; [*0856.0020.0002] # DECIMAL EXPONENT SYMBOL
+23E9 ; [*0857.0020.0002] # BLACK RIGHT-POINTING DOUBLE TRIANGLE
+23EA ; [*0858.0020.0002] # BLACK LEFT-POINTING DOUBLE TRIANGLE
+23EB ; [*0859.0020.0002] # BLACK UP-POINTING DOUBLE TRIANGLE
+23EC ; [*085A.0020.0002] # BLACK DOWN-POINTING DOUBLE TRIANGLE
+23ED ; [*085B.0020.0002] # BLACK RIGHT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
+23EE ; [*085C.0020.0002] # BLACK LEFT-POINTING DOUBLE TRIANGLE WITH VERTICAL BAR
+23EF ; [*085D.0020.0002] # BLACK RIGHT-POINTING TRIANGLE WITH DOUBLE VERTICAL BAR
+23F0 ; [*085E.0020.0002] # ALARM CLOCK
+23F1 ; [*085F.0020.0002] # STOPWATCH
+23F2 ; [*0860.0020.0002] # TIMER CLOCK
+23F3 ; [*0861.0020.0002] # HOURGLASS WITH FLOWING SAND
+23F4 ; [*0862.0020.0002] # BLACK MEDIUM LEFT-POINTING TRIANGLE
+23F5 ; [*0863.0020.0002] # BLACK MEDIUM RIGHT-POINTING TRIANGLE
+23F6 ; [*0864.0020.0002] # BLACK MEDIUM UP-POINTING TRIANGLE
+23F7 ; [*0865.0020.0002] # BLACK MEDIUM DOWN-POINTING TRIANGLE
+23F8 ; [*0866.0020.0002] # DOUBLE VERTICAL BAR
+23F9 ; [*0867.0020.0002] # BLACK SQUARE FOR STOP
+23FA ; [*0868.0020.0002] # BLACK CIRCLE FOR RECORD
+23FB ; [*0869.0020.0002] # POWER SYMBOL
+23FC ; [*086A.0020.0002] # POWER ON-OFF SYMBOL
+23FD ; [*086B.0020.0002] # POWER ON SYMBOL
+23FE ; [*086C.0020.0002] # POWER SLEEP SYMBOL
+23FF ; [*086D.0020.0002] # OBSERVER EYE SYMBOL
+2400 ; [*086E.0020.0002] # SYMBOL FOR NULL
+2401 ; [*086F.0020.0002] # SYMBOL FOR START OF HEADING
+2402 ; [*0870.0020.0002] # SYMBOL FOR START OF TEXT
+2403 ; [*0871.0020.0002] # SYMBOL FOR END OF TEXT
+2404 ; [*0872.0020.0002] # SYMBOL FOR END OF TRANSMISSION
+2405 ; [*0873.0020.0002] # SYMBOL FOR ENQUIRY
+2406 ; [*0874.0020.0002] # SYMBOL FOR ACKNOWLEDGE
+2407 ; [*0875.0020.0002] # SYMBOL FOR BELL
+2408 ; [*0876.0020.0002] # SYMBOL FOR BACKSPACE
+2409 ; [*0877.0020.0002] # SYMBOL FOR HORIZONTAL TABULATION
+240A ; [*0878.0020.0002] # SYMBOL FOR LINE FEED
+240B ; [*0879.0020.0002] # SYMBOL FOR VERTICAL TABULATION
+240C ; [*087A.0020.0002] # SYMBOL FOR FORM FEED
+240D ; [*087B.0020.0002] # SYMBOL FOR CARRIAGE RETURN
+240E ; [*087C.0020.0002] # SYMBOL FOR SHIFT OUT
+240F ; [*087D.0020.0002] # SYMBOL FOR SHIFT IN
+2410 ; [*087E.0020.0002] # SYMBOL FOR DATA LINK ESCAPE
+2411 ; [*087F.0020.0002] # SYMBOL FOR DEVICE CONTROL ONE
+2412 ; [*0880.0020.0002] # SYMBOL FOR DEVICE CONTROL TWO
+2413 ; [*0881.0020.0002] # SYMBOL FOR DEVICE CONTROL THREE
+2414 ; [*0882.0020.0002] # SYMBOL FOR DEVICE CONTROL FOUR
+2415 ; [*0883.0020.0002] # SYMBOL FOR NEGATIVE ACKNOWLEDGE
+2416 ; [*0884.0020.0002] # SYMBOL FOR SYNCHRONOUS IDLE
+2417 ; [*0885.0020.0002] # SYMBOL FOR END OF TRANSMISSION BLOCK
+2418 ; [*0886.0020.0002] # SYMBOL FOR CANCEL
+2419 ; [*0887.0020.0002] # SYMBOL FOR END OF MEDIUM
+241A ; [*0888.0020.0002] # SYMBOL FOR SUBSTITUTE
+241B ; [*0889.0020.0002] # SYMBOL FOR ESCAPE
+241C ; [*088A.0020.0002] # SYMBOL FOR FILE SEPARATOR
+241D ; [*088B.0020.0002] # SYMBOL FOR GROUP SEPARATOR
+241E ; [*088C.0020.0002] # SYMBOL FOR RECORD SEPARATOR
+241F ; [*088D.0020.0002] # SYMBOL FOR UNIT SEPARATOR
+2420 ; [*088E.0020.0002] # SYMBOL FOR SPACE
+2421 ; [*088F.0020.0002] # SYMBOL FOR DELETE
+2422 ; [*0890.0020.0002] # BLANK SYMBOL
+2423 ; [*0891.0020.0002] # OPEN BOX
+2424 ; [*0892.0020.0002] # SYMBOL FOR NEWLINE
+2425 ; [*0893.0020.0002] # SYMBOL FOR DELETE FORM TWO
+2426 ; [*0894.0020.0002] # SYMBOL FOR SUBSTITUTE FORM TWO
+2440 ; [*0895.0020.0002] # OCR HOOK
+2441 ; [*0896.0020.0002] # OCR CHAIR
+2442 ; [*0897.0020.0002] # OCR FORK
+2443 ; [*0898.0020.0002] # OCR INVERTED FORK
+2444 ; [*0899.0020.0002] # OCR BELT BUCKLE
+2445 ; [*089A.0020.0002] # OCR BOW TIE
+2446 ; [*089B.0020.0002] # OCR BRANCH BANK IDENTIFICATION
+2447 ; [*089C.0020.0002] # OCR AMOUNT OF CHECK
+2448 ; [*089D.0020.0002] # OCR DASH
+2449 ; [*089E.0020.0002] # OCR CUSTOMER ACCOUNT NUMBER
+244A ; [*089F.0020.0002] # OCR DOUBLE BACKSLASH
+2500 ; [*08A0.0020.0002] # BOX DRAWINGS LIGHT HORIZONTAL
+2501 ; [*08A1.0020.0002] # BOX DRAWINGS HEAVY HORIZONTAL
+2502 ; [*08A2.0020.0002] # BOX DRAWINGS LIGHT VERTICAL
+2503 ; [*08A3.0020.0002] # BOX DRAWINGS HEAVY VERTICAL
+2504 ; [*08A4.0020.0002] # BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL
+2505 ; [*08A5.0020.0002] # BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL
+2506 ; [*08A6.0020.0002] # BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL
+2507 ; [*08A7.0020.0002] # BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL
+2508 ; [*08A8.0020.0002] # BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL
+2509 ; [*08A9.0020.0002] # BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL
+250A ; [*08AA.0020.0002] # BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL
+250B ; [*08AB.0020.0002] # BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL
+250C ; [*08AC.0020.0002] # BOX DRAWINGS LIGHT DOWN AND RIGHT
+250D ; [*08AD.0020.0002] # BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY
+250E ; [*08AE.0020.0002] # BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT
+250F ; [*08AF.0020.0002] # BOX DRAWINGS HEAVY DOWN AND RIGHT
+2510 ; [*08B0.0020.0002] # BOX DRAWINGS LIGHT DOWN AND LEFT
+2511 ; [*08B1.0020.0002] # BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY
+2512 ; [*08B2.0020.0002] # BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT
+2513 ; [*08B3.0020.0002] # BOX DRAWINGS HEAVY DOWN AND LEFT
+2514 ; [*08B4.0020.0002] # BOX DRAWINGS LIGHT UP AND RIGHT
+2515 ; [*08B5.0020.0002] # BOX DRAWINGS UP LIGHT AND RIGHT HEAVY
+2516 ; [*08B6.0020.0002] # BOX DRAWINGS UP HEAVY AND RIGHT LIGHT
+2517 ; [*08B7.0020.0002] # BOX DRAWINGS HEAVY UP AND RIGHT
+2518 ; [*08B8.0020.0002] # BOX DRAWINGS LIGHT UP AND LEFT
+2519 ; [*08B9.0020.0002] # BOX DRAWINGS UP LIGHT AND LEFT HEAVY
+251A ; [*08BA.0020.0002] # BOX DRAWINGS UP HEAVY AND LEFT LIGHT
+251B ; [*08BB.0020.0002] # BOX DRAWINGS HEAVY UP AND LEFT
+251C ; [*08BC.0020.0002] # BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+251D ; [*08BD.0020.0002] # BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY
+251E ; [*08BE.0020.0002] # BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT
+251F ; [*08BF.0020.0002] # BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT
+2520 ; [*08C0.0020.0002] # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
+2521 ; [*08C1.0020.0002] # BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY
+2522 ; [*08C2.0020.0002] # BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY
+2523 ; [*08C3.0020.0002] # BOX DRAWINGS HEAVY VERTICAL AND RIGHT
+2524 ; [*08C4.0020.0002] # BOX DRAWINGS LIGHT VERTICAL AND LEFT
+2525 ; [*08C5.0020.0002] # BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY
+2526 ; [*08C6.0020.0002] # BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT
+2527 ; [*08C7.0020.0002] # BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT
+2528 ; [*08C8.0020.0002] # BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT
+2529 ; [*08C9.0020.0002] # BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY
+252A ; [*08CA.0020.0002] # BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY
+252B ; [*08CB.0020.0002] # BOX DRAWINGS HEAVY VERTICAL AND LEFT
+252C ; [*08CC.0020.0002] # BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+252D ; [*08CD.0020.0002] # BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT
+252E ; [*08CE.0020.0002] # BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT
+252F ; [*08CF.0020.0002] # BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY
+2530 ; [*08D0.0020.0002] # BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT
+2531 ; [*08D1.0020.0002] # BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY
+2532 ; [*08D2.0020.0002] # BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY
+2533 ; [*08D3.0020.0002] # BOX DRAWINGS HEAVY DOWN AND HORIZONTAL
+2534 ; [*08D4.0020.0002] # BOX DRAWINGS LIGHT UP AND HORIZONTAL
+2535 ; [*08D5.0020.0002] # BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT
+2536 ; [*08D6.0020.0002] # BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT
+2537 ; [*08D7.0020.0002] # BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY
+2538 ; [*08D8.0020.0002] # BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT
+2539 ; [*08D9.0020.0002] # BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY
+253A ; [*08DA.0020.0002] # BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY
+253B ; [*08DB.0020.0002] # BOX DRAWINGS HEAVY UP AND HORIZONTAL
+253C ; [*08DC.0020.0002] # BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+253D ; [*08DD.0020.0002] # BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT
+253E ; [*08DE.0020.0002] # BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT
+253F ; [*08DF.0020.0002] # BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY
+2540 ; [*08E0.0020.0002] # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
+2541 ; [*08E1.0020.0002] # BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT
+2542 ; [*08E2.0020.0002] # BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT
+2543 ; [*08E3.0020.0002] # BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT
+2544 ; [*08E4.0020.0002] # BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT
+2545 ; [*08E5.0020.0002] # BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT
+2546 ; [*08E6.0020.0002] # BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT
+2547 ; [*08E7.0020.0002] # BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY
+2548 ; [*08E8.0020.0002] # BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY
+2549 ; [*08E9.0020.0002] # BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY
+254A ; [*08EA.0020.0002] # BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY
+254B ; [*08EB.0020.0002] # BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL
+254C ; [*08EC.0020.0002] # BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
+254D ; [*08ED.0020.0002] # BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL
+254E ; [*08EE.0020.0002] # BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
+254F ; [*08EF.0020.0002] # BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL
+2550 ; [*08F0.0020.0002] # BOX DRAWINGS DOUBLE HORIZONTAL
+2551 ; [*08F1.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL
+2552 ; [*08F2.0020.0002] # BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+2553 ; [*08F3.0020.0002] # BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+2554 ; [*08F4.0020.0002] # BOX DRAWINGS DOUBLE DOWN AND RIGHT
+2555 ; [*08F5.0020.0002] # BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+2556 ; [*08F6.0020.0002] # BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+2557 ; [*08F7.0020.0002] # BOX DRAWINGS DOUBLE DOWN AND LEFT
+2558 ; [*08F8.0020.0002] # BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+2559 ; [*08F9.0020.0002] # BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+255A ; [*08FA.0020.0002] # BOX DRAWINGS DOUBLE UP AND RIGHT
+255B ; [*08FB.0020.0002] # BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+255C ; [*08FC.0020.0002] # BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+255D ; [*08FD.0020.0002] # BOX DRAWINGS DOUBLE UP AND LEFT
+255E ; [*08FE.0020.0002] # BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+255F ; [*08FF.0020.0002] # BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+2560 ; [*0900.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+2561 ; [*0901.0020.0002] # BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+2562 ; [*0902.0020.0002] # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+2563 ; [*0903.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+2564 ; [*0904.0020.0002] # BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+2565 ; [*0905.0020.0002] # BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+2566 ; [*0906.0020.0002] # BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+2567 ; [*0907.0020.0002] # BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+2568 ; [*0908.0020.0002] # BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+2569 ; [*0909.0020.0002] # BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+256A ; [*090A.0020.0002] # BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+256B ; [*090B.0020.0002] # BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+256C ; [*090C.0020.0002] # BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+256D ; [*090D.0020.0002] # BOX DRAWINGS LIGHT ARC DOWN AND RIGHT
+256E ; [*090E.0020.0002] # BOX DRAWINGS LIGHT ARC DOWN AND LEFT
+256F ; [*090F.0020.0002] # BOX DRAWINGS LIGHT ARC UP AND LEFT
+2570 ; [*0910.0020.0002] # BOX DRAWINGS LIGHT ARC UP AND RIGHT
+2571 ; [*0911.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT
+2572 ; [*0912.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT
+2573 ; [*0913.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL CROSS
+2574 ; [*0914.0020.0002] # BOX DRAWINGS LIGHT LEFT
+2575 ; [*0915.0020.0002] # BOX DRAWINGS LIGHT UP
+2576 ; [*0916.0020.0002] # BOX DRAWINGS LIGHT RIGHT
+2577 ; [*0917.0020.0002] # BOX DRAWINGS LIGHT DOWN
+2578 ; [*0918.0020.0002] # BOX DRAWINGS HEAVY LEFT
+2579 ; [*0919.0020.0002] # BOX DRAWINGS HEAVY UP
+257A ; [*091A.0020.0002] # BOX DRAWINGS HEAVY RIGHT
+257B ; [*091B.0020.0002] # BOX DRAWINGS HEAVY DOWN
+257C ; [*091C.0020.0002] # BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT
+257D ; [*091D.0020.0002] # BOX DRAWINGS LIGHT UP AND HEAVY DOWN
+257E ; [*091E.0020.0002] # BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT
+257F ; [*091F.0020.0002] # BOX DRAWINGS HEAVY UP AND LIGHT DOWN
+2580 ; [*0920.0020.0002] # UPPER HALF BLOCK
+2581 ; [*0921.0020.0002] # LOWER ONE EIGHTH BLOCK
+2582 ; [*0922.0020.0002] # LOWER ONE QUARTER BLOCK
+2583 ; [*0923.0020.0002] # LOWER THREE EIGHTHS BLOCK
+2584 ; [*0924.0020.0002] # LOWER HALF BLOCK
+2585 ; [*0925.0020.0002] # LOWER FIVE EIGHTHS BLOCK
+2586 ; [*0926.0020.0002] # LOWER THREE QUARTERS BLOCK
+2587 ; [*0927.0020.0002] # LOWER SEVEN EIGHTHS BLOCK
+2588 ; [*0928.0020.0002] # FULL BLOCK
+2589 ; [*0929.0020.0002] # LEFT SEVEN EIGHTHS BLOCK
+258A ; [*092A.0020.0002] # LEFT THREE QUARTERS BLOCK
+258B ; [*092B.0020.0002] # LEFT FIVE EIGHTHS BLOCK
+258C ; [*092C.0020.0002] # LEFT HALF BLOCK
+258D ; [*092D.0020.0002] # LEFT THREE EIGHTHS BLOCK
+258E ; [*092E.0020.0002] # LEFT ONE QUARTER BLOCK
+258F ; [*092F.0020.0002] # LEFT ONE EIGHTH BLOCK
+2590 ; [*0930.0020.0002] # RIGHT HALF BLOCK
+2591 ; [*0931.0020.0002] # LIGHT SHADE
+2592 ; [*0932.0020.0002] # MEDIUM SHADE
+2593 ; [*0933.0020.0002] # DARK SHADE
+2594 ; [*0934.0020.0002] # UPPER ONE EIGHTH BLOCK
+2595 ; [*0935.0020.0002] # RIGHT ONE EIGHTH BLOCK
+2596 ; [*0936.0020.0002] # QUADRANT LOWER LEFT
+2597 ; [*0937.0020.0002] # QUADRANT LOWER RIGHT
+2598 ; [*0938.0020.0002] # QUADRANT UPPER LEFT
+2599 ; [*0939.0020.0002] # QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT
+259A ; [*093A.0020.0002] # QUADRANT UPPER LEFT AND LOWER RIGHT
+259B ; [*093B.0020.0002] # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
+259C ; [*093C.0020.0002] # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT
+259D ; [*093D.0020.0002] # QUADRANT UPPER RIGHT
+259E ; [*093E.0020.0002] # QUADRANT UPPER RIGHT AND LOWER LEFT
+259F ; [*093F.0020.0002] # QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
+25A0 ; [*0940.0020.0002] # BLACK SQUARE
+25A1 ; [*0941.0020.0002] # WHITE SQUARE
+25A2 ; [*0942.0020.0002] # WHITE SQUARE WITH ROUNDED CORNERS
+25A3 ; [*0943.0020.0002] # WHITE SQUARE CONTAINING BLACK SMALL SQUARE
+25A4 ; [*0944.0020.0002] # SQUARE WITH HORIZONTAL FILL
+25A5 ; [*0945.0020.0002] # SQUARE WITH VERTICAL FILL
+25A6 ; [*0946.0020.0002] # SQUARE WITH ORTHOGONAL CROSSHATCH FILL
+25A7 ; [*0947.0020.0002] # SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL
+25A8 ; [*0948.0020.0002] # SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL
+25A9 ; [*0949.0020.0002] # SQUARE WITH DIAGONAL CROSSHATCH FILL
+25AA ; [*094A.0020.0002] # BLACK SMALL SQUARE
+25AB ; [*094B.0020.0002] # WHITE SMALL SQUARE
+25AC ; [*094C.0020.0002] # BLACK RECTANGLE
+25AD ; [*094D.0020.0002] # WHITE RECTANGLE
+25AE ; [*094E.0020.0002] # BLACK VERTICAL RECTANGLE
+25AF ; [*094F.0020.0002] # WHITE VERTICAL RECTANGLE
+25B0 ; [*0950.0020.0002] # BLACK PARALLELOGRAM
+25B1 ; [*0951.0020.0002] # WHITE PARALLELOGRAM
+25B2 ; [*0952.0020.0002] # BLACK UP-POINTING TRIANGLE
+25B3 ; [*0953.0020.0002] # WHITE UP-POINTING TRIANGLE
+25B4 ; [*0954.0020.0002] # BLACK UP-POINTING SMALL TRIANGLE
+25B5 ; [*0955.0020.0002] # WHITE UP-POINTING SMALL TRIANGLE
+25B6 ; [*0956.0020.0002] # BLACK RIGHT-POINTING TRIANGLE
+25B7 ; [*0957.0020.0002] # WHITE RIGHT-POINTING TRIANGLE
+25B8 ; [*0958.0020.0002] # BLACK RIGHT-POINTING SMALL TRIANGLE
+25B9 ; [*0959.0020.0002] # WHITE RIGHT-POINTING SMALL TRIANGLE
+25BA ; [*095A.0020.0002] # BLACK RIGHT-POINTING POINTER
+25BB ; [*095B.0020.0002] # WHITE RIGHT-POINTING POINTER
+25BC ; [*095C.0020.0002] # BLACK DOWN-POINTING TRIANGLE
+25BD ; [*095D.0020.0002] # WHITE DOWN-POINTING TRIANGLE
+25BE ; [*095E.0020.0002] # BLACK DOWN-POINTING SMALL TRIANGLE
+25BF ; [*095F.0020.0002] # WHITE DOWN-POINTING SMALL TRIANGLE
+25C0 ; [*0960.0020.0002] # BLACK LEFT-POINTING TRIANGLE
+25C1 ; [*0961.0020.0002] # WHITE LEFT-POINTING TRIANGLE
+25C2 ; [*0962.0020.0002] # BLACK LEFT-POINTING SMALL TRIANGLE
+25C3 ; [*0963.0020.0002] # WHITE LEFT-POINTING SMALL TRIANGLE
+25C4 ; [*0964.0020.0002] # BLACK LEFT-POINTING POINTER
+25C5 ; [*0965.0020.0002] # WHITE LEFT-POINTING POINTER
+25C6 ; [*0966.0020.0002] # BLACK DIAMOND
+25C7 ; [*0967.0020.0002] # WHITE DIAMOND
+25C8 ; [*0968.0020.0002] # WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
+25C9 ; [*0969.0020.0002] # FISHEYE
+25CA ; [*096A.0020.0002] # LOZENGE
+25CB ; [*096B.0020.0002] # WHITE CIRCLE
+25CC ; [*096C.0020.0002] # DOTTED CIRCLE
+25CD ; [*096D.0020.0002] # CIRCLE WITH VERTICAL FILL
+25CE ; [*096E.0020.0002] # BULLSEYE
+25CF ; [*096F.0020.0002] # BLACK CIRCLE
+25D0 ; [*0970.0020.0002] # CIRCLE WITH LEFT HALF BLACK
+25D1 ; [*0971.0020.0002] # CIRCLE WITH RIGHT HALF BLACK
+25D2 ; [*0972.0020.0002] # CIRCLE WITH LOWER HALF BLACK
+25D3 ; [*0973.0020.0002] # CIRCLE WITH UPPER HALF BLACK
+25D4 ; [*0974.0020.0002] # CIRCLE WITH UPPER RIGHT QUADRANT BLACK
+25D5 ; [*0975.0020.0002] # CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK
+25D6 ; [*0976.0020.0002] # LEFT HALF BLACK CIRCLE
+25D7 ; [*0977.0020.0002] # RIGHT HALF BLACK CIRCLE
+25D8 ; [*0978.0020.0002] # INVERSE BULLET
+25D9 ; [*0979.0020.0002] # INVERSE WHITE CIRCLE
+25DA ; [*097A.0020.0002] # UPPER HALF INVERSE WHITE CIRCLE
+25DB ; [*097B.0020.0002] # LOWER HALF INVERSE WHITE CIRCLE
+25DC ; [*097C.0020.0002] # UPPER LEFT QUADRANT CIRCULAR ARC
+25DD ; [*097D.0020.0002] # UPPER RIGHT QUADRANT CIRCULAR ARC
+25DE ; [*097E.0020.0002] # LOWER RIGHT QUADRANT CIRCULAR ARC
+25DF ; [*097F.0020.0002] # LOWER LEFT QUADRANT CIRCULAR ARC
+25E0 ; [*0980.0020.0002] # UPPER HALF CIRCLE
+25E1 ; [*0981.0020.0002] # LOWER HALF CIRCLE
+25E2 ; [*0982.0020.0002] # BLACK LOWER RIGHT TRIANGLE
+25E3 ; [*0983.0020.0002] # BLACK LOWER LEFT TRIANGLE
+25E4 ; [*0984.0020.0002] # BLACK UPPER LEFT TRIANGLE
+25E5 ; [*0985.0020.0002] # BLACK UPPER RIGHT TRIANGLE
+25E6 ; [*0986.0020.0002] # WHITE BULLET
+25E7 ; [*0987.0020.0002] # SQUARE WITH LEFT HALF BLACK
+25E8 ; [*0988.0020.0002] # SQUARE WITH RIGHT HALF BLACK
+25E9 ; [*0989.0020.0002] # SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK
+25EA ; [*098A.0020.0002] # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
+25EB ; [*098B.0020.0002] # WHITE SQUARE WITH VERTICAL BISECTING LINE
+25EC ; [*098C.0020.0002] # WHITE UP-POINTING TRIANGLE WITH DOT
+25ED ; [*098D.0020.0002] # UP-POINTING TRIANGLE WITH LEFT HALF BLACK
+25EE ; [*098E.0020.0002] # UP-POINTING TRIANGLE WITH RIGHT HALF BLACK
+25EF ; [*098F.0020.0002] # LARGE CIRCLE
+25F0 ; [*0990.0020.0002] # WHITE SQUARE WITH UPPER LEFT QUADRANT
+25F1 ; [*0991.0020.0002] # WHITE SQUARE WITH LOWER LEFT QUADRANT
+25F2 ; [*0992.0020.0002] # WHITE SQUARE WITH LOWER RIGHT QUADRANT
+25F3 ; [*0993.0020.0002] # WHITE SQUARE WITH UPPER RIGHT QUADRANT
+25F4 ; [*0994.0020.0002] # WHITE CIRCLE WITH UPPER LEFT QUADRANT
+25F5 ; [*0995.0020.0002] # WHITE CIRCLE WITH LOWER LEFT QUADRANT
+25F6 ; [*0996.0020.0002] # WHITE CIRCLE WITH LOWER RIGHT QUADRANT
+25F7 ; [*0997.0020.0002] # WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+25F8 ; [*0998.0020.0002] # UPPER LEFT TRIANGLE
+25F9 ; [*0999.0020.0002] # UPPER RIGHT TRIANGLE
+25FA ; [*099A.0020.0002] # LOWER LEFT TRIANGLE
+25FB ; [*099B.0020.0002] # WHITE MEDIUM SQUARE
+25FC ; [*099C.0020.0002] # BLACK MEDIUM SQUARE
+25FD ; [*099D.0020.0002] # WHITE MEDIUM SMALL SQUARE
+25FE ; [*099E.0020.0002] # BLACK MEDIUM SMALL SQUARE
+25FF ; [*099F.0020.0002] # LOWER RIGHT TRIANGLE
+2600 ; [*0A6A.0020.0002] # BLACK SUN WITH RAYS
+2601 ; [*0A6B.0020.0002] # CLOUD
+2602 ; [*0A6C.0020.0002] # UMBRELLA
+2603 ; [*0A6D.0020.0002] # SNOWMAN
+2604 ; [*0A6E.0020.0002] # COMET
+2605 ; [*0A6F.0020.0002] # BLACK STAR
+2606 ; [*0A70.0020.0002] # WHITE STAR
+2607 ; [*0A71.0020.0002] # LIGHTNING
+2608 ; [*0A72.0020.0002] # THUNDERSTORM
+2609 ; [*0A73.0020.0002] # SUN
+260A ; [*0A74.0020.0002] # ASCENDING NODE
+260B ; [*0A75.0020.0002] # DESCENDING NODE
+260C ; [*0A76.0020.0002] # CONJUNCTION
+260D ; [*0A77.0020.0002] # OPPOSITION
+260E ; [*0A78.0020.0002] # BLACK TELEPHONE
+260F ; [*0A79.0020.0002] # WHITE TELEPHONE
+2610 ; [*0A7A.0020.0002] # BALLOT BOX
+2611 ; [*0A7B.0020.0002] # BALLOT BOX WITH CHECK
+2612 ; [*0A7C.0020.0002] # BALLOT BOX WITH X
+2613 ; [*0A7D.0020.0002] # SALTIRE
+2614 ; [*0A7E.0020.0002] # UMBRELLA WITH RAIN DROPS
+2615 ; [*0A7F.0020.0002] # HOT BEVERAGE
+2616 ; [*0A80.0020.0002] # WHITE SHOGI PIECE
+2617 ; [*0A81.0020.0002] # BLACK SHOGI PIECE
+2618 ; [*0A82.0020.0002] # SHAMROCK
+2619 ; [*0A83.0020.0002] # REVERSED ROTATED FLORAL HEART BULLET
+261A ; [*0A84.0020.0002] # BLACK LEFT POINTING INDEX
+261B ; [*0A85.0020.0002] # BLACK RIGHT POINTING INDEX
+261C ; [*0A86.0020.0002] # WHITE LEFT POINTING INDEX
+261D ; [*0A87.0020.0002] # WHITE UP POINTING INDEX
+261E ; [*0A88.0020.0002] # WHITE RIGHT POINTING INDEX
+261F ; [*0A89.0020.0002] # WHITE DOWN POINTING INDEX
+2620 ; [*0A8A.0020.0002] # SKULL AND CROSSBONES
+2621 ; [*0A8B.0020.0002] # CAUTION SIGN
+2622 ; [*0A8C.0020.0002] # RADIOACTIVE SIGN
+2623 ; [*0A8D.0020.0002] # BIOHAZARD SIGN
+2624 ; [*0A8E.0020.0002] # CADUCEUS
+2625 ; [*0A8F.0020.0002] # ANKH
+2626 ; [*0A90.0020.0002] # ORTHODOX CROSS
+2627 ; [*0A91.0020.0002] # CHI RHO
+2628 ; [*0A92.0020.0002] # CROSS OF LORRAINE
+2629 ; [*0A93.0020.0002] # CROSS OF JERUSALEM
+262A ; [*0A94.0020.0002] # STAR AND CRESCENT
+262B ; [*0A95.0020.0002] # FARSI SYMBOL
+262C ; [*0A96.0020.0002] # ADI SHAKTI
+262D ; [*0A97.0020.0002] # HAMMER AND SICKLE
+262E ; [*0A98.0020.0002] # PEACE SYMBOL
+262F ; [*0A99.0020.0002] # YIN YANG
+2630 ; [*1025.0020.0002] # TRIGRAM FOR HEAVEN
+2631 ; [*1026.0020.0002] # TRIGRAM FOR LAKE
+2632 ; [*1027.0020.0002] # TRIGRAM FOR FIRE
+2633 ; [*1028.0020.0002] # TRIGRAM FOR THUNDER
+2634 ; [*1029.0020.0002] # TRIGRAM FOR WIND
+2635 ; [*102A.0020.0002] # TRIGRAM FOR WATER
+2636 ; [*102B.0020.0002] # TRIGRAM FOR MOUNTAIN
+2637 ; [*102C.0020.0002] # TRIGRAM FOR EARTH
+2638 ; [*0A9A.0020.0002] # WHEEL OF DHARMA
+2639 ; [*0A9B.0020.0002] # WHITE FROWNING FACE
+263A ; [*0A9C.0020.0002] # WHITE SMILING FACE
+263B ; [*0A9D.0020.0002] # BLACK SMILING FACE
+263C ; [*0A9E.0020.0002] # WHITE SUN WITH RAYS
+263D ; [*0A9F.0020.0002] # FIRST QUARTER MOON
+263E ; [*0AA0.0020.0002] # LAST QUARTER MOON
+263F ; [*0AA1.0020.0002] # MERCURY
+2640 ; [*0AA2.0020.0002] # FEMALE SIGN
+2641 ; [*0AA3.0020.0002] # EARTH
+2642 ; [*0AA4.0020.0002] # MALE SIGN
+2643 ; [*0AA5.0020.0002] # JUPITER
+2644 ; [*0AA6.0020.0002] # SATURN
+2645 ; [*0AA7.0020.0002] # URANUS
+2646 ; [*0AA8.0020.0002] # NEPTUNE
+2647 ; [*0AA9.0020.0002] # PLUTO
+2648 ; [*0AAA.0020.0002] # ARIES
+2649 ; [*0AAB.0020.0002] # TAURUS
+264A ; [*0AAC.0020.0002] # GEMINI
+264B ; [*0AAD.0020.0002] # CANCER
+264C ; [*0AAE.0020.0002] # LEO
+264D ; [*0AAF.0020.0002] # VIRGO
+264E ; [*0AB0.0020.0002] # LIBRA
+264F ; [*0AB1.0020.0002] # SCORPIUS
+2650 ; [*0AB2.0020.0002] # SAGITTARIUS
+2651 ; [*0AB3.0020.0002] # CAPRICORN
+2652 ; [*0AB4.0020.0002] # AQUARIUS
+2653 ; [*0AB5.0020.0002] # PISCES
+2654 ; [*0AB6.0020.0002] # WHITE CHESS KING
+2655 ; [*0AB7.0020.0002] # WHITE CHESS QUEEN
+2656 ; [*0AB8.0020.0002] # WHITE CHESS ROOK
+2657 ; [*0AB9.0020.0002] # WHITE CHESS BISHOP
+2658 ; [*0ABA.0020.0002] # WHITE CHESS KNIGHT
+2659 ; [*0ABB.0020.0002] # WHITE CHESS PAWN
+265A ; [*0ABC.0020.0002] # BLACK CHESS KING
+265B ; [*0ABD.0020.0002] # BLACK CHESS QUEEN
+265C ; [*0ABE.0020.0002] # BLACK CHESS ROOK
+265D ; [*0ABF.0020.0002] # BLACK CHESS BISHOP
+265E ; [*0AC0.0020.0002] # BLACK CHESS KNIGHT
+265F ; [*0AC1.0020.0002] # BLACK CHESS PAWN
+2660 ; [*0AC2.0020.0002] # BLACK SPADE SUIT
+2661 ; [*0AC3.0020.0002] # WHITE HEART SUIT
+2662 ; [*0AC4.0020.0002] # WHITE DIAMOND SUIT
+2663 ; [*0AC5.0020.0002] # BLACK CLUB SUIT
+2664 ; [*0AC6.0020.0002] # WHITE SPADE SUIT
+2665 ; [*0AC7.0020.0002] # BLACK HEART SUIT
+2666 ; [*0AC8.0020.0002] # BLACK DIAMOND SUIT
+2667 ; [*0AC9.0020.0002] # WHITE CLUB SUIT
+2668 ; [*0ACA.0020.0002] # HOT SPRINGS
+2669 ; [*0ACB.0020.0002] # QUARTER NOTE
+266A ; [*0ACC.0020.0002] # EIGHTH NOTE
+266B ; [*0ACD.0020.0002] # BEAMED EIGHTH NOTES
+266C ; [*0ACE.0020.0002] # BEAMED SIXTEENTH NOTES
+266D ; [*12EC.0020.0002] # MUSIC FLAT SIGN
+266E ; [*12ED.0020.0002] # MUSIC NATURAL SIGN
+266F ; [*12EE.0020.0002] # MUSIC SHARP SIGN
+2670 ; [*0ACF.0020.0002] # WEST SYRIAC CROSS
+2671 ; [*0AD0.0020.0002] # EAST SYRIAC CROSS
+2672 ; [*0AD1.0020.0002] # UNIVERSAL RECYCLING SYMBOL
+2673 ; [*0AD2.0020.0002] # RECYCLING SYMBOL FOR TYPE-1 PLASTICS
+2674 ; [*0AD3.0020.0002] # RECYCLING SYMBOL FOR TYPE-2 PLASTICS
+2675 ; [*0AD4.0020.0002] # RECYCLING SYMBOL FOR TYPE-3 PLASTICS
+2676 ; [*0AD5.0020.0002] # RECYCLING SYMBOL FOR TYPE-4 PLASTICS
+2677 ; [*0AD6.0020.0002] # RECYCLING SYMBOL FOR TYPE-5 PLASTICS
+2678 ; [*0AD7.0020.0002] # RECYCLING SYMBOL FOR TYPE-6 PLASTICS
+2679 ; [*0AD8.0020.0002] # RECYCLING SYMBOL FOR TYPE-7 PLASTICS
+267A ; [*0AD9.0020.0002] # RECYCLING SYMBOL FOR GENERIC MATERIALS
+267B ; [*0ADA.0020.0002] # BLACK UNIVERSAL RECYCLING SYMBOL
+267C ; [*0ADB.0020.0002] # RECYCLED PAPER SYMBOL
+267D ; [*0ADC.0020.0002] # PARTIALLY-RECYCLED PAPER SYMBOL
+267E ; [*0ADD.0020.0002] # PERMANENT PAPER SIGN
+267F ; [*0ADE.0020.0002] # WHEELCHAIR SYMBOL
+2680 ; [*0ADF.0020.0002] # DIE FACE-1
+2681 ; [*0AE0.0020.0002] # DIE FACE-2
+2682 ; [*0AE1.0020.0002] # DIE FACE-3
+2683 ; [*0AE2.0020.0002] # DIE FACE-4
+2684 ; [*0AE3.0020.0002] # DIE FACE-5
+2685 ; [*0AE4.0020.0002] # DIE FACE-6
+2686 ; [*0AE5.0020.0002] # WHITE CIRCLE WITH DOT RIGHT
+2687 ; [*0AE6.0020.0002] # WHITE CIRCLE WITH TWO DOTS
+2688 ; [*0AE7.0020.0002] # BLACK CIRCLE WITH WHITE DOT RIGHT
+2689 ; [*0AE8.0020.0002] # BLACK CIRCLE WITH TWO WHITE DOTS
+268A ; [*101F.0020.0002] # MONOGRAM FOR YANG
+268B ; [*1020.0020.0002] # MONOGRAM FOR YIN
+268C ; [*1021.0020.0002] # DIGRAM FOR GREATER YANG
+268D ; [*1022.0020.0002] # DIGRAM FOR LESSER YIN
+268E ; [*1023.0020.0002] # DIGRAM FOR LESSER YANG
+268F ; [*1024.0020.0002] # DIGRAM FOR GREATER YIN
+2690 ; [*0AE9.0020.0002] # WHITE FLAG
+2691 ; [*0AEA.0020.0002] # BLACK FLAG
+2692 ; [*0AEB.0020.0002] # HAMMER AND PICK
+2693 ; [*0AEC.0020.0002] # ANCHOR
+2694 ; [*0AED.0020.0002] # CROSSED SWORDS
+2695 ; [*0AEE.0020.0002] # STAFF OF AESCULAPIUS
+2696 ; [*0AEF.0020.0002] # SCALES
+2697 ; [*0AF0.0020.0002] # ALEMBIC
+2698 ; [*0AF1.0020.0002] # FLOWER
+2699 ; [*0AF2.0020.0002] # GEAR
+269A ; [*0AF3.0020.0002] # STAFF OF HERMES
+269B ; [*0AF4.0020.0002] # ATOM SYMBOL
+269C ; [*0AF5.0020.0002] # FLEUR-DE-LIS
+269D ; [*0AF6.0020.0002] # OUTLINED WHITE STAR
+269E ; [*0AF7.0020.0002] # THREE LINES CONVERGING RIGHT
+269F ; [*0AF8.0020.0002] # THREE LINES CONVERGING LEFT
+26A0 ; [*0AF9.0020.0002] # WARNING SIGN
+26A1 ; [*0AFA.0020.0002] # HIGH VOLTAGE SIGN
+26A2 ; [*0AFB.0020.0002] # DOUBLED FEMALE SIGN
+26A3 ; [*0AFC.0020.0002] # DOUBLED MALE SIGN
+26A4 ; [*0AFD.0020.0002] # INTERLOCKED FEMALE AND MALE SIGN
+26A5 ; [*0AFE.0020.0002] # MALE AND FEMALE SIGN
+26A6 ; [*0AFF.0020.0002] # MALE WITH STROKE SIGN
+26A7 ; [*0B00.0020.0002] # MALE WITH STROKE AND MALE AND FEMALE SIGN
+26A8 ; [*0B01.0020.0002] # VERTICAL MALE WITH STROKE SIGN
+26A9 ; [*0B02.0020.0002] # HORIZONTAL MALE WITH STROKE SIGN
+26AA ; [*0B03.0020.0002] # MEDIUM WHITE CIRCLE
+26AB ; [*0B04.0020.0002] # MEDIUM BLACK CIRCLE
+26AC ; [*0B05.0020.0002] # MEDIUM SMALL WHITE CIRCLE
+26AD ; [*0B06.0020.0002] # MARRIAGE SYMBOL
+26AE ; [*0B07.0020.0002] # DIVORCE SYMBOL
+26AF ; [*0B08.0020.0002] # UNMARRIED PARTNERSHIP SYMBOL
+26B0 ; [*0B09.0020.0002] # COFFIN
+26B1 ; [*0B0A.0020.0002] # FUNERAL URN
+26B2 ; [*0B0B.0020.0002] # NEUTER
+26B3 ; [*0B0C.0020.0002] # CERES
+26B4 ; [*0B0D.0020.0002] # PALLAS
+26B5 ; [*0B0E.0020.0002] # JUNO
+26B6 ; [*0B0F.0020.0002] # VESTA
+26B7 ; [*0B10.0020.0002] # CHIRON
+26B8 ; [*0B11.0020.0002] # BLACK MOON LILITH
+26B9 ; [*0B12.0020.0002] # SEXTILE
+26BA ; [*0B13.0020.0002] # SEMISEXTILE
+26BB ; [*0B14.0020.0002] # QUINCUNX
+26BC ; [*0B15.0020.0002] # SESQUIQUADRATE
+26BD ; [*0B16.0020.0002] # SOCCER BALL
+26BE ; [*0B17.0020.0002] # BASEBALL
+26BF ; [*0B18.0020.0002] # SQUARED KEY
+26C0 ; [*0B19.0020.0002] # WHITE DRAUGHTS MAN
+26C1 ; [*0B1A.0020.0002] # WHITE DRAUGHTS KING
+26C2 ; [*0B1B.0020.0002] # BLACK DRAUGHTS MAN
+26C3 ; [*0B1C.0020.0002] # BLACK DRAUGHTS KING
+26C4 ; [*0B1D.0020.0002] # SNOWMAN WITHOUT SNOW
+26C5 ; [*0B1E.0020.0002] # SUN BEHIND CLOUD
+26C6 ; [*0B1F.0020.0002] # RAIN
+26C7 ; [*0B20.0020.0002] # BLACK SNOWMAN
+26C8 ; [*0B21.0020.0002] # THUNDER CLOUD AND RAIN
+26C9 ; [*0B22.0020.0002] # TURNED WHITE SHOGI PIECE
+26CA ; [*0B23.0020.0002] # TURNED BLACK SHOGI PIECE
+26CB ; [*0B24.0020.0002] # WHITE DIAMOND IN SQUARE
+26CC ; [*0B25.0020.0002] # CROSSING LANES
+26CD ; [*0B26.0020.0002] # DISABLED CAR
+26CE ; [*0B27.0020.0002] # OPHIUCHUS
+26CF ; [*0B28.0020.0002] # PICK
+26D0 ; [*0B29.0020.0002] # CAR SLIDING
+26D1 ; [*0B2A.0020.0002] # HELMET WITH WHITE CROSS
+26D2 ; [*0B2B.0020.0002] # CIRCLED CROSSING LANES
+26D3 ; [*0B2C.0020.0002] # CHAINS
+26D4 ; [*0B2D.0020.0002] # NO ENTRY
+26D5 ; [*0B2E.0020.0002] # ALTERNATE ONE-WAY LEFT WAY TRAFFIC
+26D6 ; [*0B2F.0020.0002] # BLACK TWO-WAY LEFT WAY TRAFFIC
+26D7 ; [*0B30.0020.0002] # WHITE TWO-WAY LEFT WAY TRAFFIC
+26D8 ; [*0B31.0020.0002] # BLACK LEFT LANE MERGE
+26D9 ; [*0B32.0020.0002] # WHITE LEFT LANE MERGE
+26DA ; [*0B33.0020.0002] # DRIVE SLOW SIGN
+26DB ; [*0B34.0020.0002] # HEAVY WHITE DOWN-POINTING TRIANGLE
+26DC ; [*0B35.0020.0002] # LEFT CLOSED ENTRY
+26DD ; [*0B36.0020.0002] # SQUARED SALTIRE
+26DE ; [*0B37.0020.0002] # FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE
+26DF ; [*0B38.0020.0002] # BLACK TRUCK
+26E0 ; [*0B39.0020.0002] # RESTRICTED LEFT ENTRY-1
+26E1 ; [*0B3A.0020.0002] # RESTRICTED LEFT ENTRY-2
+26E2 ; [*0B3B.0020.0002] # ASTRONOMICAL SYMBOL FOR URANUS
+26E3 ; [*0B3C.0020.0002] # HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE
+26E4 ; [*0B3D.0020.0002] # PENTAGRAM
+26E5 ; [*0B3E.0020.0002] # RIGHT-HANDED INTERLACED PENTAGRAM
+26E6 ; [*0B3F.0020.0002] # LEFT-HANDED INTERLACED PENTAGRAM
+26E7 ; [*0B40.0020.0002] # INVERTED PENTAGRAM
+26E8 ; [*0B41.0020.0002] # BLACK CROSS ON SHIELD
+26E9 ; [*0B42.0020.0002] # SHINTO SHRINE
+26EA ; [*0B43.0020.0002] # CHURCH
+26EB ; [*0B44.0020.0002] # CASTLE
+26EC ; [*0B45.0020.0002] # HISTORIC SITE
+26ED ; [*0B46.0020.0002] # GEAR WITHOUT HUB
+26EE ; [*0B47.0020.0002] # GEAR WITH HANDLES
+26EF ; [*0B48.0020.0002] # MAP SYMBOL FOR LIGHTHOUSE
+26F0 ; [*0B49.0020.0002] # MOUNTAIN
+26F1 ; [*0B4A.0020.0002] # UMBRELLA ON GROUND
+26F2 ; [*0B4B.0020.0002] # FOUNTAIN
+26F3 ; [*0B4C.0020.0002] # FLAG IN HOLE
+26F4 ; [*0B4D.0020.0002] # FERRY
+26F5 ; [*0B4E.0020.0002] # SAILBOAT
+26F6 ; [*0B4F.0020.0002] # SQUARE FOUR CORNERS
+26F7 ; [*0B50.0020.0002] # SKIER
+26F8 ; [*0B51.0020.0002] # ICE SKATE
+26F9 ; [*0B52.0020.0002] # PERSON WITH BALL
+26FA ; [*0B53.0020.0002] # TENT
+26FB ; [*0B54.0020.0002] # JAPANESE BANK SYMBOL
+26FC ; [*0B55.0020.0002] # HEADSTONE GRAVEYARD SYMBOL
+26FD ; [*0B56.0020.0002] # FUEL PUMP
+26FE ; [*0B57.0020.0002] # CUP ON BLACK SQUARE
+26FF ; [*0B58.0020.0002] # WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
+2700 ; [*0B73.0020.0002] # BLACK SAFETY SCISSORS
+2701 ; [*0B74.0020.0002] # UPPER BLADE SCISSORS
+2702 ; [*0B75.0020.0002] # BLACK SCISSORS
+2703 ; [*0B76.0020.0002] # LOWER BLADE SCISSORS
+2704 ; [*0B77.0020.0002] # WHITE SCISSORS
+2705 ; [*0B78.0020.0002] # WHITE HEAVY CHECK MARK
+2706 ; [*0B79.0020.0002] # TELEPHONE LOCATION SIGN
+2707 ; [*0B7A.0020.0002] # TAPE DRIVE
+2708 ; [*0B7B.0020.0002] # AIRPLANE
+2709 ; [*0B7C.0020.0002] # ENVELOPE
+270A ; [*0B7D.0020.0002] # RAISED FIST
+270B ; [*0B7E.0020.0002] # RAISED HAND
+270C ; [*0B7F.0020.0002] # VICTORY HAND
+270D ; [*0B80.0020.0002] # WRITING HAND
+270E ; [*0B81.0020.0002] # LOWER RIGHT PENCIL
+270F ; [*0B82.0020.0002] # PENCIL
+2710 ; [*0B83.0020.0002] # UPPER RIGHT PENCIL
+2711 ; [*0B84.0020.0002] # WHITE NIB
+2712 ; [*0B85.0020.0002] # BLACK NIB
+2713 ; [*0B86.0020.0002] # CHECK MARK
+2714 ; [*0B87.0020.0002] # HEAVY CHECK MARK
+2715 ; [*0B88.0020.0002] # MULTIPLICATION X
+2716 ; [*0B89.0020.0002] # HEAVY MULTIPLICATION X
+2717 ; [*0B8A.0020.0002] # BALLOT X
+2718 ; [*0B8B.0020.0002] # HEAVY BALLOT X
+2719 ; [*0B8C.0020.0002] # OUTLINED GREEK CROSS
+271A ; [*0B8D.0020.0002] # HEAVY GREEK CROSS
+271B ; [*0B8E.0020.0002] # OPEN CENTRE CROSS
+271C ; [*0B8F.0020.0002] # HEAVY OPEN CENTRE CROSS
+271D ; [*0B90.0020.0002] # LATIN CROSS
+271E ; [*0B91.0020.0002] # SHADOWED WHITE LATIN CROSS
+271F ; [*0B92.0020.0002] # OUTLINED LATIN CROSS
+2720 ; [*0B93.0020.0002] # MALTESE CROSS
+2721 ; [*0B96.0020.0002] # STAR OF DAVID
+2722 ; [*0B97.0020.0002] # FOUR TEARDROP-SPOKED ASTERISK
+2723 ; [*0B98.0020.0002] # FOUR BALLOON-SPOKED ASTERISK
+2724 ; [*0B99.0020.0002] # HEAVY FOUR BALLOON-SPOKED ASTERISK
+2725 ; [*0B9A.0020.0002] # FOUR CLUB-SPOKED ASTERISK
+2726 ; [*0B9B.0020.0002] # BLACK FOUR POINTED STAR
+2727 ; [*0B9C.0020.0002] # WHITE FOUR POINTED STAR
+2728 ; [*0B9D.0020.0002] # SPARKLES
+2729 ; [*0B9E.0020.0002] # STRESS OUTLINED WHITE STAR
+272A ; [*0B9F.0020.0002] # CIRCLED WHITE STAR
+272B ; [*0BA0.0020.0002] # OPEN CENTRE BLACK STAR
+272C ; [*0BA1.0020.0002] # BLACK CENTRE WHITE STAR
+272D ; [*0BA2.0020.0002] # OUTLINED BLACK STAR
+272E ; [*0BA3.0020.0002] # HEAVY OUTLINED BLACK STAR
+272F ; [*0BA4.0020.0002] # PINWHEEL STAR
+2730 ; [*0BA5.0020.0002] # SHADOWED WHITE STAR
+2731 ; [*0BA6.0020.0002] # HEAVY ASTERISK
+2732 ; [*0BA7.0020.0002] # OPEN CENTRE ASTERISK
+2733 ; [*0BA8.0020.0002] # EIGHT SPOKED ASTERISK
+2734 ; [*0BA9.0020.0002] # EIGHT POINTED BLACK STAR
+2735 ; [*0BAA.0020.0002] # EIGHT POINTED PINWHEEL STAR
+2736 ; [*0BAB.0020.0002] # SIX POINTED BLACK STAR
+2737 ; [*0BAC.0020.0002] # EIGHT POINTED RECTILINEAR BLACK STAR
+2738 ; [*0BAD.0020.0002] # HEAVY EIGHT POINTED RECTILINEAR BLACK STAR
+2739 ; [*0BAE.0020.0002] # TWELVE POINTED BLACK STAR
+273A ; [*0BAF.0020.0002] # SIXTEEN POINTED ASTERISK
+273B ; [*0BB0.0020.0002] # TEARDROP-SPOKED ASTERISK
+273C ; [*0BB1.0020.0002] # OPEN CENTRE TEARDROP-SPOKED ASTERISK
+273D ; [*0BB2.0020.0002] # HEAVY TEARDROP-SPOKED ASTERISK
+273E ; [*0BB3.0020.0002] # SIX PETALLED BLACK AND WHITE FLORETTE
+273F ; [*0BB4.0020.0002] # BLACK FLORETTE
+2740 ; [*0BB5.0020.0002] # WHITE FLORETTE
+2741 ; [*0BB6.0020.0002] # EIGHT PETALLED OUTLINED BLACK FLORETTE
+2742 ; [*0BB7.0020.0002] # CIRCLED OPEN CENTRE EIGHT POINTED STAR
+2743 ; [*0BB8.0020.0002] # HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK
+2744 ; [*0BB9.0020.0002] # SNOWFLAKE
+2745 ; [*0BBA.0020.0002] # TIGHT TRIFOLIATE SNOWFLAKE
+2746 ; [*0BBB.0020.0002] # HEAVY CHEVRON SNOWFLAKE
+2747 ; [*0BBC.0020.0002] # SPARKLE
+2748 ; [*0BBD.0020.0002] # HEAVY SPARKLE
+2749 ; [*0BBE.0020.0002] # BALLOON-SPOKED ASTERISK
+274A ; [*0BBF.0020.0002] # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274B ; [*0BC0.0020.0002] # HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
+274C ; [*0BC1.0020.0002] # CROSS MARK
+274D ; [*0BC2.0020.0002] # SHADOWED WHITE CIRCLE
+274E ; [*0BC3.0020.0002] # NEGATIVE SQUARED CROSS MARK
+274F ; [*0BC4.0020.0002] # LOWER RIGHT DROP-SHADOWED WHITE SQUARE
+2750 ; [*0BC5.0020.0002] # UPPER RIGHT DROP-SHADOWED WHITE SQUARE
+2751 ; [*0BC6.0020.0002] # LOWER RIGHT SHADOWED WHITE SQUARE
+2752 ; [*0BC7.0020.0002] # UPPER RIGHT SHADOWED WHITE SQUARE
+2753 ; [*0BC8.0020.0002] # BLACK QUESTION MARK ORNAMENT
+2754 ; [*0BC9.0020.0002] # WHITE QUESTION MARK ORNAMENT
+2755 ; [*0BCA.0020.0002] # WHITE EXCLAMATION MARK ORNAMENT
+2756 ; [*0BCB.0020.0002] # BLACK DIAMOND MINUS WHITE X
+2757 ; [*0BCC.0020.0002] # HEAVY EXCLAMATION MARK SYMBOL
+2758 ; [*0BCD.0020.0002] # LIGHT VERTICAL BAR
+2759 ; [*0BCE.0020.0002] # MEDIUM VERTICAL BAR
+275A ; [*0BCF.0020.0002] # HEAVY VERTICAL BAR
+275B ; [*0BD0.0020.0002] # HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT
+275C ; [*0BD1.0020.0002] # HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT
+275D ; [*0BD2.0020.0002] # HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+275E ; [*0BD3.0020.0002] # HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+275F ; [*0BD4.0020.0002] # HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT
+2760 ; [*0BD5.0020.0002] # HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
+2761 ; [*0BD6.0020.0002] # CURVED STEM PARAGRAPH SIGN ORNAMENT
+2762 ; [*0BD7.0020.0002] # HEAVY EXCLAMATION MARK ORNAMENT
+2763 ; [*0BD8.0020.0002] # HEAVY HEART EXCLAMATION MARK ORNAMENT
+2764 ; [*0BD9.0020.0002] # HEAVY BLACK HEART
+2765 ; [*0BDA.0020.0002] # ROTATED HEAVY BLACK HEART BULLET
+2766 ; [*0BDB.0020.0002] # FLORAL HEART
+2767 ; [*0BDC.0020.0002] # ROTATED FLORAL HEART BULLET
+2768 ; [*036A.0020.0002] # MEDIUM LEFT PARENTHESIS ORNAMENT
+2769 ; [*036B.0020.0002] # MEDIUM RIGHT PARENTHESIS ORNAMENT
+276A ; [*036C.0020.0002] # MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+276B ; [*036D.0020.0002] # MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+276C ; [*036E.0020.0002] # MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+276D ; [*036F.0020.0002] # MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+276E ; [*0370.0020.0002] # HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+276F ; [*0371.0020.0002] # HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+2770 ; [*0372.0020.0002] # HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+2771 ; [*0373.0020.0002] # HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+2772 ; [*0374.0020.0002] # LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
+2773 ; [*0375.0020.0002] # LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
+2774 ; [*0376.0020.0002] # MEDIUM LEFT CURLY BRACKET ORNAMENT
+2775 ; [*0377.0020.0002] # MEDIUM RIGHT CURLY BRACKET ORNAMENT
+2794 ; [*0BDD.0020.0002] # HEAVY WIDE-HEADED RIGHTWARDS ARROW
+2795 ; [*0BDE.0020.0002] # HEAVY PLUS SIGN
+2796 ; [*0BDF.0020.0002] # HEAVY MINUS SIGN
+2797 ; [*0BE0.0020.0002] # HEAVY DIVISION SIGN
+2798 ; [*0BE1.0020.0002] # HEAVY SOUTH EAST ARROW
+2799 ; [*0BE2.0020.0002] # HEAVY RIGHTWARDS ARROW
+279A ; [*0BE3.0020.0002] # HEAVY NORTH EAST ARROW
+279B ; [*0BE4.0020.0002] # DRAFTING POINT RIGHTWARDS ARROW
+279C ; [*0BE5.0020.0002] # HEAVY ROUND-TIPPED RIGHTWARDS ARROW
+279D ; [*0BE6.0020.0002] # TRIANGLE-HEADED RIGHTWARDS ARROW
+279E ; [*0BE7.0020.0002] # HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW
+279F ; [*0BE8.0020.0002] # DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A0 ; [*0BE9.0020.0002] # HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW
+27A1 ; [*0BEA.0020.0002] # BLACK RIGHTWARDS ARROW
+27A2 ; [*0BEB.0020.0002] # THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD
+27A3 ; [*0BEC.0020.0002] # THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD
+27A4 ; [*0BED.0020.0002] # BLACK RIGHTWARDS ARROWHEAD
+27A5 ; [*0BEE.0020.0002] # HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+27A6 ; [*0BEF.0020.0002] # HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+27A7 ; [*0BF0.0020.0002] # SQUAT BLACK RIGHTWARDS ARROW
+27A8 ; [*0BF1.0020.0002] # HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW
+27A9 ; [*0BF2.0020.0002] # RIGHT-SHADED WHITE RIGHTWARDS ARROW
+27AA ; [*0BF3.0020.0002] # LEFT-SHADED WHITE RIGHTWARDS ARROW
+27AB ; [*0BF4.0020.0002] # BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AC ; [*0BF5.0020.0002] # FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW
+27AD ; [*0BF6.0020.0002] # HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AE ; [*0BF7.0020.0002] # HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27AF ; [*0BF8.0020.0002] # NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B0 ; [*0BF9.0020.0002] # CURLY LOOP
+27B1 ; [*0BFA.0020.0002] # NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
+27B2 ; [*0BFB.0020.0002] # CIRCLED HEAVY WHITE RIGHTWARDS ARROW
+27B3 ; [*0BFC.0020.0002] # WHITE-FEATHERED RIGHTWARDS ARROW
+27B4 ; [*0BFD.0020.0002] # BLACK-FEATHERED SOUTH EAST ARROW
+27B5 ; [*0BFE.0020.0002] # BLACK-FEATHERED RIGHTWARDS ARROW
+27B6 ; [*0BFF.0020.0002] # BLACK-FEATHERED NORTH EAST ARROW
+27B7 ; [*0C00.0020.0002] # HEAVY BLACK-FEATHERED SOUTH EAST ARROW
+27B8 ; [*0C01.0020.0002] # HEAVY BLACK-FEATHERED RIGHTWARDS ARROW
+27B9 ; [*0C02.0020.0002] # HEAVY BLACK-FEATHERED NORTH EAST ARROW
+27BA ; [*0C03.0020.0002] # TEARDROP-BARBED RIGHTWARDS ARROW
+27BB ; [*0C04.0020.0002] # HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW
+27BC ; [*0C05.0020.0002] # WEDGE-TAILED RIGHTWARDS ARROW
+27BD ; [*0C06.0020.0002] # HEAVY WEDGE-TAILED RIGHTWARDS ARROW
+27BE ; [*0C07.0020.0002] # OPEN-OUTLINED RIGHTWARDS ARROW
+27BF ; [*0C08.0020.0002] # DOUBLE CURLY LOOP
+27C0 ; [*0C09.0020.0002] # THREE DIMENSIONAL ANGLE
+27C1 ; [*0C0A.0020.0002] # WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE
+27C2 ; [*0C0B.0020.0002] # PERPENDICULAR
+27C3 ; [*0C0C.0020.0002] # OPEN SUBSET
+27C4 ; [*0C0D.0020.0002] # OPEN SUPERSET
+27C5 ; [*035E.0020.0002] # LEFT S-SHAPED BAG DELIMITER
+27C6 ; [*035F.0020.0002] # RIGHT S-SHAPED BAG DELIMITER
+27C7 ; [*0C0E.0020.0002] # OR WITH DOT INSIDE
+27C8 ; [*0C0F.0020.0002] # REVERSE SOLIDUS PRECEDING SUBSET
+27C9 ; [*0C10.0020.0002] # SUPERSET PRECEDING SOLIDUS
+27CA ; [*0C11.0020.0002] # VERTICAL BAR WITH HORIZONTAL STROKE
+27CB ; [*0C12.0020.0002] # MATHEMATICAL RISING DIAGONAL
+27CC ; [*0C13.0020.0002] # LONG DIVISION
+27CD ; [*0C14.0020.0002] # MATHEMATICAL FALLING DIAGONAL
+27CE ; [*0C15.0020.0002] # SQUARED LOGICAL AND
+27CF ; [*0C16.0020.0002] # SQUARED LOGICAL OR
+27D0 ; [*0C17.0020.0002] # WHITE DIAMOND WITH CENTRED DOT
+27D1 ; [*0C18.0020.0002] # AND WITH DOT
+27D2 ; [*0C19.0020.0002] # ELEMENT OF OPENING UPWARDS
+27D3 ; [*0C1A.0020.0002] # LOWER RIGHT CORNER WITH DOT
+27D4 ; [*0C1B.0020.0002] # UPPER LEFT CORNER WITH DOT
+27D5 ; [*0C1C.0020.0002] # LEFT OUTER JOIN
+27D6 ; [*0C1D.0020.0002] # RIGHT OUTER JOIN
+27D7 ; [*0C1E.0020.0002] # FULL OUTER JOIN
+27D8 ; [*0C1F.0020.0002] # LARGE UP TACK
+27D9 ; [*0C20.0020.0002] # LARGE DOWN TACK
+27DA ; [*0C21.0020.0002] # LEFT AND RIGHT DOUBLE TURNSTILE
+27DB ; [*0C22.0020.0002] # LEFT AND RIGHT TACK
+27DC ; [*0C23.0020.0002] # LEFT MULTIMAP
+27DD ; [*0C24.0020.0002] # LONG RIGHT TACK
+27DE ; [*0C25.0020.0002] # LONG LEFT TACK
+27DF ; [*0C26.0020.0002] # UP TACK WITH CIRCLE ABOVE
+27E0 ; [*0C27.0020.0002] # LOZENGE DIVIDED BY HORIZONTAL RULE
+27E1 ; [*0C28.0020.0002] # WHITE CONCAVE-SIDED DIAMOND
+27E2 ; [*0C29.0020.0002] # WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK
+27E3 ; [*0C2A.0020.0002] # WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK
+27E4 ; [*0C2B.0020.0002] # WHITE SQUARE WITH LEFTWARDS TICK
+27E5 ; [*0C2C.0020.0002] # WHITE SQUARE WITH RIGHTWARDS TICK
+27E6 ; [*0360.0020.0002] # MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E7 ; [*0361.0020.0002] # MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E8 ; [*0362.0020.0002] # MATHEMATICAL LEFT ANGLE BRACKET
+27E9 ; [*0363.0020.0002] # MATHEMATICAL RIGHT ANGLE BRACKET
+27EA ; [*0364.0020.0002] # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EB ; [*0365.0020.0002] # MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+27EC ; [*0366.0020.0002] # MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
+27ED ; [*0367.0020.0002] # MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
+27EE ; [*0368.0020.0002] # MATHEMATICAL LEFT FLATTENED PARENTHESIS
+27EF ; [*0369.0020.0002] # MATHEMATICAL RIGHT FLATTENED PARENTHESIS
+27F0 ; [*0C2D.0020.0002] # UPWARDS QUADRUPLE ARROW
+27F1 ; [*0C2E.0020.0002] # DOWNWARDS QUADRUPLE ARROW
+27F2 ; [*0C2F.0020.0002] # ANTICLOCKWISE GAPPED CIRCLE ARROW
+27F3 ; [*0C30.0020.0002] # CLOCKWISE GAPPED CIRCLE ARROW
+27F4 ; [*0C31.0020.0002] # RIGHT ARROW WITH CIRCLED PLUS
+27F5 ; [*0C32.0020.0002] # LONG LEFTWARDS ARROW
+27F6 ; [*0C33.0020.0002] # LONG RIGHTWARDS ARROW
+27F7 ; [*0C34.0020.0002] # LONG LEFT RIGHT ARROW
+27F8 ; [*0C35.0020.0002] # LONG LEFTWARDS DOUBLE ARROW
+27F9 ; [*0C36.0020.0002] # LONG RIGHTWARDS DOUBLE ARROW
+27FA ; [*0C37.0020.0002] # LONG LEFT RIGHT DOUBLE ARROW
+27FB ; [*0C38.0020.0002] # LONG LEFTWARDS ARROW FROM BAR
+27FC ; [*0C39.0020.0002] # LONG RIGHTWARDS ARROW FROM BAR
+27FD ; [*0C3A.0020.0002] # LONG LEFTWARDS DOUBLE ARROW FROM BAR
+27FE ; [*0C3B.0020.0002] # LONG RIGHTWARDS DOUBLE ARROW FROM BAR
+27FF ; [*0C3C.0020.0002] # LONG RIGHTWARDS SQUIGGLE ARROW
+2800 ; [*0F1F.0020.0002] # BRAILLE PATTERN BLANK
+2801 ; [*0F20.0020.0002] # BRAILLE PATTERN DOTS-1
+2802 ; [*0F21.0020.0002] # BRAILLE PATTERN DOTS-2
+2803 ; [*0F22.0020.0002] # BRAILLE PATTERN DOTS-12
+2804 ; [*0F23.0020.0002] # BRAILLE PATTERN DOTS-3
+2805 ; [*0F24.0020.0002] # BRAILLE PATTERN DOTS-13
+2806 ; [*0F25.0020.0002] # BRAILLE PATTERN DOTS-23
+2807 ; [*0F26.0020.0002] # BRAILLE PATTERN DOTS-123
+2808 ; [*0F27.0020.0002] # BRAILLE PATTERN DOTS-4
+2809 ; [*0F28.0020.0002] # BRAILLE PATTERN DOTS-14
+280A ; [*0F29.0020.0002] # BRAILLE PATTERN DOTS-24
+280B ; [*0F2A.0020.0002] # BRAILLE PATTERN DOTS-124
+280C ; [*0F2B.0020.0002] # BRAILLE PATTERN DOTS-34
+280D ; [*0F2C.0020.0002] # BRAILLE PATTERN DOTS-134
+280E ; [*0F2D.0020.0002] # BRAILLE PATTERN DOTS-234
+280F ; [*0F2E.0020.0002] # BRAILLE PATTERN DOTS-1234
+2810 ; [*0F2F.0020.0002] # BRAILLE PATTERN DOTS-5
+2811 ; [*0F30.0020.0002] # BRAILLE PATTERN DOTS-15
+2812 ; [*0F31.0020.0002] # BRAILLE PATTERN DOTS-25
+2813 ; [*0F32.0020.0002] # BRAILLE PATTERN DOTS-125
+2814 ; [*0F33.0020.0002] # BRAILLE PATTERN DOTS-35
+2815 ; [*0F34.0020.0002] # BRAILLE PATTERN DOTS-135
+2816 ; [*0F35.0020.0002] # BRAILLE PATTERN DOTS-235
+2817 ; [*0F36.0020.0002] # BRAILLE PATTERN DOTS-1235
+2818 ; [*0F37.0020.0002] # BRAILLE PATTERN DOTS-45
+2819 ; [*0F38.0020.0002] # BRAILLE PATTERN DOTS-145
+281A ; [*0F39.0020.0002] # BRAILLE PATTERN DOTS-245
+281B ; [*0F3A.0020.0002] # BRAILLE PATTERN DOTS-1245
+281C ; [*0F3B.0020.0002] # BRAILLE PATTERN DOTS-345
+281D ; [*0F3C.0020.0002] # BRAILLE PATTERN DOTS-1345
+281E ; [*0F3D.0020.0002] # BRAILLE PATTERN DOTS-2345
+281F ; [*0F3E.0020.0002] # BRAILLE PATTERN DOTS-12345
+2820 ; [*0F3F.0020.0002] # BRAILLE PATTERN DOTS-6
+2821 ; [*0F40.0020.0002] # BRAILLE PATTERN DOTS-16
+2822 ; [*0F41.0020.0002] # BRAILLE PATTERN DOTS-26
+2823 ; [*0F42.0020.0002] # BRAILLE PATTERN DOTS-126
+2824 ; [*0F43.0020.0002] # BRAILLE PATTERN DOTS-36
+2825 ; [*0F44.0020.0002] # BRAILLE PATTERN DOTS-136
+2826 ; [*0F45.0020.0002] # BRAILLE PATTERN DOTS-236
+2827 ; [*0F46.0020.0002] # BRAILLE PATTERN DOTS-1236
+2828 ; [*0F47.0020.0002] # BRAILLE PATTERN DOTS-46
+2829 ; [*0F48.0020.0002] # BRAILLE PATTERN DOTS-146
+282A ; [*0F49.0020.0002] # BRAILLE PATTERN DOTS-246
+282B ; [*0F4A.0020.0002] # BRAILLE PATTERN DOTS-1246
+282C ; [*0F4B.0020.0002] # BRAILLE PATTERN DOTS-346
+282D ; [*0F4C.0020.0002] # BRAILLE PATTERN DOTS-1346
+282E ; [*0F4D.0020.0002] # BRAILLE PATTERN DOTS-2346
+282F ; [*0F4E.0020.0002] # BRAILLE PATTERN DOTS-12346
+2830 ; [*0F4F.0020.0002] # BRAILLE PATTERN DOTS-56
+2831 ; [*0F50.0020.0002] # BRAILLE PATTERN DOTS-156
+2832 ; [*0F51.0020.0002] # BRAILLE PATTERN DOTS-256
+2833 ; [*0F52.0020.0002] # BRAILLE PATTERN DOTS-1256
+2834 ; [*0F53.0020.0002] # BRAILLE PATTERN DOTS-356
+2835 ; [*0F54.0020.0002] # BRAILLE PATTERN DOTS-1356
+2836 ; [*0F55.0020.0002] # BRAILLE PATTERN DOTS-2356
+2837 ; [*0F56.0020.0002] # BRAILLE PATTERN DOTS-12356
+2838 ; [*0F57.0020.0002] # BRAILLE PATTERN DOTS-456
+2839 ; [*0F58.0020.0002] # BRAILLE PATTERN DOTS-1456
+283A ; [*0F59.0020.0002] # BRAILLE PATTERN DOTS-2456
+283B ; [*0F5A.0020.0002] # BRAILLE PATTERN DOTS-12456
+283C ; [*0F5B.0020.0002] # BRAILLE PATTERN DOTS-3456
+283D ; [*0F5C.0020.0002] # BRAILLE PATTERN DOTS-13456
+283E ; [*0F5D.0020.0002] # BRAILLE PATTERN DOTS-23456
+283F ; [*0F5E.0020.0002] # BRAILLE PATTERN DOTS-123456
+2840 ; [*0F5F.0020.0002] # BRAILLE PATTERN DOTS-7
+2841 ; [*0F60.0020.0002] # BRAILLE PATTERN DOTS-17
+2842 ; [*0F61.0020.0002] # BRAILLE PATTERN DOTS-27
+2843 ; [*0F62.0020.0002] # BRAILLE PATTERN DOTS-127
+2844 ; [*0F63.0020.0002] # BRAILLE PATTERN DOTS-37
+2845 ; [*0F64.0020.0002] # BRAILLE PATTERN DOTS-137
+2846 ; [*0F65.0020.0002] # BRAILLE PATTERN DOTS-237
+2847 ; [*0F66.0020.0002] # BRAILLE PATTERN DOTS-1237
+2848 ; [*0F67.0020.0002] # BRAILLE PATTERN DOTS-47
+2849 ; [*0F68.0020.0002] # BRAILLE PATTERN DOTS-147
+284A ; [*0F69.0020.0002] # BRAILLE PATTERN DOTS-247
+284B ; [*0F6A.0020.0002] # BRAILLE PATTERN DOTS-1247
+284C ; [*0F6B.0020.0002] # BRAILLE PATTERN DOTS-347
+284D ; [*0F6C.0020.0002] # BRAILLE PATTERN DOTS-1347
+284E ; [*0F6D.0020.0002] # BRAILLE PATTERN DOTS-2347
+284F ; [*0F6E.0020.0002] # BRAILLE PATTERN DOTS-12347
+2850 ; [*0F6F.0020.0002] # BRAILLE PATTERN DOTS-57
+2851 ; [*0F70.0020.0002] # BRAILLE PATTERN DOTS-157
+2852 ; [*0F71.0020.0002] # BRAILLE PATTERN DOTS-257
+2853 ; [*0F72.0020.0002] # BRAILLE PATTERN DOTS-1257
+2854 ; [*0F73.0020.0002] # BRAILLE PATTERN DOTS-357
+2855 ; [*0F74.0020.0002] # BRAILLE PATTERN DOTS-1357
+2856 ; [*0F75.0020.0002] # BRAILLE PATTERN DOTS-2357
+2857 ; [*0F76.0020.0002] # BRAILLE PATTERN DOTS-12357
+2858 ; [*0F77.0020.0002] # BRAILLE PATTERN DOTS-457
+2859 ; [*0F78.0020.0002] # BRAILLE PATTERN DOTS-1457
+285A ; [*0F79.0020.0002] # BRAILLE PATTERN DOTS-2457
+285B ; [*0F7A.0020.0002] # BRAILLE PATTERN DOTS-12457
+285C ; [*0F7B.0020.0002] # BRAILLE PATTERN DOTS-3457
+285D ; [*0F7C.0020.0002] # BRAILLE PATTERN DOTS-13457
+285E ; [*0F7D.0020.0002] # BRAILLE PATTERN DOTS-23457
+285F ; [*0F7E.0020.0002] # BRAILLE PATTERN DOTS-123457
+2860 ; [*0F7F.0020.0002] # BRAILLE PATTERN DOTS-67
+2861 ; [*0F80.0020.0002] # BRAILLE PATTERN DOTS-167
+2862 ; [*0F81.0020.0002] # BRAILLE PATTERN DOTS-267
+2863 ; [*0F82.0020.0002] # BRAILLE PATTERN DOTS-1267
+2864 ; [*0F83.0020.0002] # BRAILLE PATTERN DOTS-367
+2865 ; [*0F84.0020.0002] # BRAILLE PATTERN DOTS-1367
+2866 ; [*0F85.0020.0002] # BRAILLE PATTERN DOTS-2367
+2867 ; [*0F86.0020.0002] # BRAILLE PATTERN DOTS-12367
+2868 ; [*0F87.0020.0002] # BRAILLE PATTERN DOTS-467
+2869 ; [*0F88.0020.0002] # BRAILLE PATTERN DOTS-1467
+286A ; [*0F89.0020.0002] # BRAILLE PATTERN DOTS-2467
+286B ; [*0F8A.0020.0002] # BRAILLE PATTERN DOTS-12467
+286C ; [*0F8B.0020.0002] # BRAILLE PATTERN DOTS-3467
+286D ; [*0F8C.0020.0002] # BRAILLE PATTERN DOTS-13467
+286E ; [*0F8D.0020.0002] # BRAILLE PATTERN DOTS-23467
+286F ; [*0F8E.0020.0002] # BRAILLE PATTERN DOTS-123467
+2870 ; [*0F8F.0020.0002] # BRAILLE PATTERN DOTS-567
+2871 ; [*0F90.0020.0002] # BRAILLE PATTERN DOTS-1567
+2872 ; [*0F91.0020.0002] # BRAILLE PATTERN DOTS-2567
+2873 ; [*0F92.0020.0002] # BRAILLE PATTERN DOTS-12567
+2874 ; [*0F93.0020.0002] # BRAILLE PATTERN DOTS-3567
+2875 ; [*0F94.0020.0002] # BRAILLE PATTERN DOTS-13567
+2876 ; [*0F95.0020.0002] # BRAILLE PATTERN DOTS-23567
+2877 ; [*0F96.0020.0002] # BRAILLE PATTERN DOTS-123567
+2878 ; [*0F97.0020.0002] # BRAILLE PATTERN DOTS-4567
+2879 ; [*0F98.0020.0002] # BRAILLE PATTERN DOTS-14567
+287A ; [*0F99.0020.0002] # BRAILLE PATTERN DOTS-24567
+287B ; [*0F9A.0020.0002] # BRAILLE PATTERN DOTS-124567
+287C ; [*0F9B.0020.0002] # BRAILLE PATTERN DOTS-34567
+287D ; [*0F9C.0020.0002] # BRAILLE PATTERN DOTS-134567
+287E ; [*0F9D.0020.0002] # BRAILLE PATTERN DOTS-234567
+287F ; [*0F9E.0020.0002] # BRAILLE PATTERN DOTS-1234567
+2880 ; [*0F9F.0020.0002] # BRAILLE PATTERN DOTS-8
+2881 ; [*0FA0.0020.0002] # BRAILLE PATTERN DOTS-18
+2882 ; [*0FA1.0020.0002] # BRAILLE PATTERN DOTS-28
+2883 ; [*0FA2.0020.0002] # BRAILLE PATTERN DOTS-128
+2884 ; [*0FA3.0020.0002] # BRAILLE PATTERN DOTS-38
+2885 ; [*0FA4.0020.0002] # BRAILLE PATTERN DOTS-138
+2886 ; [*0FA5.0020.0002] # BRAILLE PATTERN DOTS-238
+2887 ; [*0FA6.0020.0002] # BRAILLE PATTERN DOTS-1238
+2888 ; [*0FA7.0020.0002] # BRAILLE PATTERN DOTS-48
+2889 ; [*0FA8.0020.0002] # BRAILLE PATTERN DOTS-148
+288A ; [*0FA9.0020.0002] # BRAILLE PATTERN DOTS-248
+288B ; [*0FAA.0020.0002] # BRAILLE PATTERN DOTS-1248
+288C ; [*0FAB.0020.0002] # BRAILLE PATTERN DOTS-348
+288D ; [*0FAC.0020.0002] # BRAILLE PATTERN DOTS-1348
+288E ; [*0FAD.0020.0002] # BRAILLE PATTERN DOTS-2348
+288F ; [*0FAE.0020.0002] # BRAILLE PATTERN DOTS-12348
+2890 ; [*0FAF.0020.0002] # BRAILLE PATTERN DOTS-58
+2891 ; [*0FB0.0020.0002] # BRAILLE PATTERN DOTS-158
+2892 ; [*0FB1.0020.0002] # BRAILLE PATTERN DOTS-258
+2893 ; [*0FB2.0020.0002] # BRAILLE PATTERN DOTS-1258
+2894 ; [*0FB3.0020.0002] # BRAILLE PATTERN DOTS-358
+2895 ; [*0FB4.0020.0002] # BRAILLE PATTERN DOTS-1358
+2896 ; [*0FB5.0020.0002] # BRAILLE PATTERN DOTS-2358
+2897 ; [*0FB6.0020.0002] # BRAILLE PATTERN DOTS-12358
+2898 ; [*0FB7.0020.0002] # BRAILLE PATTERN DOTS-458
+2899 ; [*0FB8.0020.0002] # BRAILLE PATTERN DOTS-1458
+289A ; [*0FB9.0020.0002] # BRAILLE PATTERN DOTS-2458
+289B ; [*0FBA.0020.0002] # BRAILLE PATTERN DOTS-12458
+289C ; [*0FBB.0020.0002] # BRAILLE PATTERN DOTS-3458
+289D ; [*0FBC.0020.0002] # BRAILLE PATTERN DOTS-13458
+289E ; [*0FBD.0020.0002] # BRAILLE PATTERN DOTS-23458
+289F ; [*0FBE.0020.0002] # BRAILLE PATTERN DOTS-123458
+28A0 ; [*0FBF.0020.0002] # BRAILLE PATTERN DOTS-68
+28A1 ; [*0FC0.0020.0002] # BRAILLE PATTERN DOTS-168
+28A2 ; [*0FC1.0020.0002] # BRAILLE PATTERN DOTS-268
+28A3 ; [*0FC2.0020.0002] # BRAILLE PATTERN DOTS-1268
+28A4 ; [*0FC3.0020.0002] # BRAILLE PATTERN DOTS-368
+28A5 ; [*0FC4.0020.0002] # BRAILLE PATTERN DOTS-1368
+28A6 ; [*0FC5.0020.0002] # BRAILLE PATTERN DOTS-2368
+28A7 ; [*0FC6.0020.0002] # BRAILLE PATTERN DOTS-12368
+28A8 ; [*0FC7.0020.0002] # BRAILLE PATTERN DOTS-468
+28A9 ; [*0FC8.0020.0002] # BRAILLE PATTERN DOTS-1468
+28AA ; [*0FC9.0020.0002] # BRAILLE PATTERN DOTS-2468
+28AB ; [*0FCA.0020.0002] # BRAILLE PATTERN DOTS-12468
+28AC ; [*0FCB.0020.0002] # BRAILLE PATTERN DOTS-3468
+28AD ; [*0FCC.0020.0002] # BRAILLE PATTERN DOTS-13468
+28AE ; [*0FCD.0020.0002] # BRAILLE PATTERN DOTS-23468
+28AF ; [*0FCE.0020.0002] # BRAILLE PATTERN DOTS-123468
+28B0 ; [*0FCF.0020.0002] # BRAILLE PATTERN DOTS-568
+28B1 ; [*0FD0.0020.0002] # BRAILLE PATTERN DOTS-1568
+28B2 ; [*0FD1.0020.0002] # BRAILLE PATTERN DOTS-2568
+28B3 ; [*0FD2.0020.0002] # BRAILLE PATTERN DOTS-12568
+28B4 ; [*0FD3.0020.0002] # BRAILLE PATTERN DOTS-3568
+28B5 ; [*0FD4.0020.0002] # BRAILLE PATTERN DOTS-13568
+28B6 ; [*0FD5.0020.0002] # BRAILLE PATTERN DOTS-23568
+28B7 ; [*0FD6.0020.0002] # BRAILLE PATTERN DOTS-123568
+28B8 ; [*0FD7.0020.0002] # BRAILLE PATTERN DOTS-4568
+28B9 ; [*0FD8.0020.0002] # BRAILLE PATTERN DOTS-14568
+28BA ; [*0FD9.0020.0002] # BRAILLE PATTERN DOTS-24568
+28BB ; [*0FDA.0020.0002] # BRAILLE PATTERN DOTS-124568
+28BC ; [*0FDB.0020.0002] # BRAILLE PATTERN DOTS-34568
+28BD ; [*0FDC.0020.0002] # BRAILLE PATTERN DOTS-134568
+28BE ; [*0FDD.0020.0002] # BRAILLE PATTERN DOTS-234568
+28BF ; [*0FDE.0020.0002] # BRAILLE PATTERN DOTS-1234568
+28C0 ; [*0FDF.0020.0002] # BRAILLE PATTERN DOTS-78
+28C1 ; [*0FE0.0020.0002] # BRAILLE PATTERN DOTS-178
+28C2 ; [*0FE1.0020.0002] # BRAILLE PATTERN DOTS-278
+28C3 ; [*0FE2.0020.0002] # BRAILLE PATTERN DOTS-1278
+28C4 ; [*0FE3.0020.0002] # BRAILLE PATTERN DOTS-378
+28C5 ; [*0FE4.0020.0002] # BRAILLE PATTERN DOTS-1378
+28C6 ; [*0FE5.0020.0002] # BRAILLE PATTERN DOTS-2378
+28C7 ; [*0FE6.0020.0002] # BRAILLE PATTERN DOTS-12378
+28C8 ; [*0FE7.0020.0002] # BRAILLE PATTERN DOTS-478
+28C9 ; [*0FE8.0020.0002] # BRAILLE PATTERN DOTS-1478
+28CA ; [*0FE9.0020.0002] # BRAILLE PATTERN DOTS-2478
+28CB ; [*0FEA.0020.0002] # BRAILLE PATTERN DOTS-12478
+28CC ; [*0FEB.0020.0002] # BRAILLE PATTERN DOTS-3478
+28CD ; [*0FEC.0020.0002] # BRAILLE PATTERN DOTS-13478
+28CE ; [*0FED.0020.0002] # BRAILLE PATTERN DOTS-23478
+28CF ; [*0FEE.0020.0002] # BRAILLE PATTERN DOTS-123478
+28D0 ; [*0FEF.0020.0002] # BRAILLE PATTERN DOTS-578
+28D1 ; [*0FF0.0020.0002] # BRAILLE PATTERN DOTS-1578
+28D2 ; [*0FF1.0020.0002] # BRAILLE PATTERN DOTS-2578
+28D3 ; [*0FF2.0020.0002] # BRAILLE PATTERN DOTS-12578
+28D4 ; [*0FF3.0020.0002] # BRAILLE PATTERN DOTS-3578
+28D5 ; [*0FF4.0020.0002] # BRAILLE PATTERN DOTS-13578
+28D6 ; [*0FF5.0020.0002] # BRAILLE PATTERN DOTS-23578
+28D7 ; [*0FF6.0020.0002] # BRAILLE PATTERN DOTS-123578
+28D8 ; [*0FF7.0020.0002] # BRAILLE PATTERN DOTS-4578
+28D9 ; [*0FF8.0020.0002] # BRAILLE PATTERN DOTS-14578
+28DA ; [*0FF9.0020.0002] # BRAILLE PATTERN DOTS-24578
+28DB ; [*0FFA.0020.0002] # BRAILLE PATTERN DOTS-124578
+28DC ; [*0FFB.0020.0002] # BRAILLE PATTERN DOTS-34578
+28DD ; [*0FFC.0020.0002] # BRAILLE PATTERN DOTS-134578
+28DE ; [*0FFD.0020.0002] # BRAILLE PATTERN DOTS-234578
+28DF ; [*0FFE.0020.0002] # BRAILLE PATTERN DOTS-1234578
+28E0 ; [*0FFF.0020.0002] # BRAILLE PATTERN DOTS-678
+28E1 ; [*1000.0020.0002] # BRAILLE PATTERN DOTS-1678
+28E2 ; [*1001.0020.0002] # BRAILLE PATTERN DOTS-2678
+28E3 ; [*1002.0020.0002] # BRAILLE PATTERN DOTS-12678
+28E4 ; [*1003.0020.0002] # BRAILLE PATTERN DOTS-3678
+28E5 ; [*1004.0020.0002] # BRAILLE PATTERN DOTS-13678
+28E6 ; [*1005.0020.0002] # BRAILLE PATTERN DOTS-23678
+28E7 ; [*1006.0020.0002] # BRAILLE PATTERN DOTS-123678
+28E8 ; [*1007.0020.0002] # BRAILLE PATTERN DOTS-4678
+28E9 ; [*1008.0020.0002] # BRAILLE PATTERN DOTS-14678
+28EA ; [*1009.0020.0002] # BRAILLE PATTERN DOTS-24678
+28EB ; [*100A.0020.0002] # BRAILLE PATTERN DOTS-124678
+28EC ; [*100B.0020.0002] # BRAILLE PATTERN DOTS-34678
+28ED ; [*100C.0020.0002] # BRAILLE PATTERN DOTS-134678
+28EE ; [*100D.0020.0002] # BRAILLE PATTERN DOTS-234678
+28EF ; [*100E.0020.0002] # BRAILLE PATTERN DOTS-1234678
+28F0 ; [*100F.0020.0002] # BRAILLE PATTERN DOTS-5678
+28F1 ; [*1010.0020.0002] # BRAILLE PATTERN DOTS-15678
+28F2 ; [*1011.0020.0002] # BRAILLE PATTERN DOTS-25678
+28F3 ; [*1012.0020.0002] # BRAILLE PATTERN DOTS-125678
+28F4 ; [*1013.0020.0002] # BRAILLE PATTERN DOTS-35678
+28F5 ; [*1014.0020.0002] # BRAILLE PATTERN DOTS-135678
+28F6 ; [*1015.0020.0002] # BRAILLE PATTERN DOTS-235678
+28F7 ; [*1016.0020.0002] # BRAILLE PATTERN DOTS-1235678
+28F8 ; [*1017.0020.0002] # BRAILLE PATTERN DOTS-45678
+28F9 ; [*1018.0020.0002] # BRAILLE PATTERN DOTS-145678
+28FA ; [*1019.0020.0002] # BRAILLE PATTERN DOTS-245678
+28FB ; [*101A.0020.0002] # BRAILLE PATTERN DOTS-1245678
+28FC ; [*101B.0020.0002] # BRAILLE PATTERN DOTS-345678
+28FD ; [*101C.0020.0002] # BRAILLE PATTERN DOTS-1345678
+28FE ; [*101D.0020.0002] # BRAILLE PATTERN DOTS-2345678
+28FF ; [*101E.0020.0002] # BRAILLE PATTERN DOTS-12345678
+2900 ; [*0C3D.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+2901 ; [*0C3E.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+2902 ; [*0C3F.0020.0002] # LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+2903 ; [*0C40.0020.0002] # RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE
+2904 ; [*0C41.0020.0002] # LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE
+2905 ; [*0C42.0020.0002] # RIGHTWARDS TWO-HEADED ARROW FROM BAR
+2906 ; [*0C43.0020.0002] # LEFTWARDS DOUBLE ARROW FROM BAR
+2907 ; [*0C44.0020.0002] # RIGHTWARDS DOUBLE ARROW FROM BAR
+2908 ; [*0C45.0020.0002] # DOWNWARDS ARROW WITH HORIZONTAL STROKE
+2909 ; [*0C46.0020.0002] # UPWARDS ARROW WITH HORIZONTAL STROKE
+290A ; [*0C47.0020.0002] # UPWARDS TRIPLE ARROW
+290B ; [*0C48.0020.0002] # DOWNWARDS TRIPLE ARROW
+290C ; [*0C49.0020.0002] # LEFTWARDS DOUBLE DASH ARROW
+290D ; [*0C4A.0020.0002] # RIGHTWARDS DOUBLE DASH ARROW
+290E ; [*0C4B.0020.0002] # LEFTWARDS TRIPLE DASH ARROW
+290F ; [*0C4C.0020.0002] # RIGHTWARDS TRIPLE DASH ARROW
+2910 ; [*0C4D.0020.0002] # RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW
+2911 ; [*0C4E.0020.0002] # RIGHTWARDS ARROW WITH DOTTED STEM
+2912 ; [*0C4F.0020.0002] # UPWARDS ARROW TO BAR
+2913 ; [*0C50.0020.0002] # DOWNWARDS ARROW TO BAR
+2914 ; [*0C51.0020.0002] # RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
+2915 ; [*0C52.0020.0002] # RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2916 ; [*0C53.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL
+2917 ; [*0C54.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
+2918 ; [*0C55.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2919 ; [*0C56.0020.0002] # LEFTWARDS ARROW-TAIL
+291A ; [*0C57.0020.0002] # RIGHTWARDS ARROW-TAIL
+291B ; [*0C58.0020.0002] # LEFTWARDS DOUBLE ARROW-TAIL
+291C ; [*0C59.0020.0002] # RIGHTWARDS DOUBLE ARROW-TAIL
+291D ; [*0C5A.0020.0002] # LEFTWARDS ARROW TO BLACK DIAMOND
+291E ; [*0C5B.0020.0002] # RIGHTWARDS ARROW TO BLACK DIAMOND
+291F ; [*0C5C.0020.0002] # LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
+2920 ; [*0C5D.0020.0002] # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
+2921 ; [*0C5E.0020.0002] # NORTH WEST AND SOUTH EAST ARROW
+2922 ; [*0C5F.0020.0002] # NORTH EAST AND SOUTH WEST ARROW
+2923 ; [*0C60.0020.0002] # NORTH WEST ARROW WITH HOOK
+2924 ; [*0C61.0020.0002] # NORTH EAST ARROW WITH HOOK
+2925 ; [*0C62.0020.0002] # SOUTH EAST ARROW WITH HOOK
+2926 ; [*0C63.0020.0002] # SOUTH WEST ARROW WITH HOOK
+2927 ; [*0C64.0020.0002] # NORTH WEST ARROW AND NORTH EAST ARROW
+2928 ; [*0C65.0020.0002] # NORTH EAST ARROW AND SOUTH EAST ARROW
+2929 ; [*0C66.0020.0002] # SOUTH EAST ARROW AND SOUTH WEST ARROW
+292A ; [*0C67.0020.0002] # SOUTH WEST ARROW AND NORTH WEST ARROW
+292B ; [*0C68.0020.0002] # RISING DIAGONAL CROSSING FALLING DIAGONAL
+292C ; [*0C69.0020.0002] # FALLING DIAGONAL CROSSING RISING DIAGONAL
+292D ; [*0C6A.0020.0002] # SOUTH EAST ARROW CROSSING NORTH EAST ARROW
+292E ; [*0C6B.0020.0002] # NORTH EAST ARROW CROSSING SOUTH EAST ARROW
+292F ; [*0C6C.0020.0002] # FALLING DIAGONAL CROSSING NORTH EAST ARROW
+2930 ; [*0C6D.0020.0002] # RISING DIAGONAL CROSSING SOUTH EAST ARROW
+2931 ; [*0C6E.0020.0002] # NORTH EAST ARROW CROSSING NORTH WEST ARROW
+2932 ; [*0C6F.0020.0002] # NORTH WEST ARROW CROSSING NORTH EAST ARROW
+2933 ; [*0C70.0020.0002] # WAVE ARROW POINTING DIRECTLY RIGHT
+2934 ; [*0C71.0020.0002] # ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS
+2935 ; [*0C72.0020.0002] # ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS
+2936 ; [*0C73.0020.0002] # ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS
+2937 ; [*0C74.0020.0002] # ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS
+2938 ; [*0C75.0020.0002] # RIGHT-SIDE ARC CLOCKWISE ARROW
+2939 ; [*0C76.0020.0002] # LEFT-SIDE ARC ANTICLOCKWISE ARROW
+293A ; [*0C77.0020.0002] # TOP ARC ANTICLOCKWISE ARROW
+293B ; [*0C78.0020.0002] # BOTTOM ARC ANTICLOCKWISE ARROW
+293C ; [*0C79.0020.0002] # TOP ARC CLOCKWISE ARROW WITH MINUS
+293D ; [*0C7A.0020.0002] # TOP ARC ANTICLOCKWISE ARROW WITH PLUS
+293E ; [*0C7B.0020.0002] # LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW
+293F ; [*0C7C.0020.0002] # LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW
+2940 ; [*0C7D.0020.0002] # ANTICLOCKWISE CLOSED CIRCLE ARROW
+2941 ; [*0C7E.0020.0002] # CLOCKWISE CLOSED CIRCLE ARROW
+2942 ; [*0C7F.0020.0002] # RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW
+2943 ; [*0C80.0020.0002] # LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW
+2944 ; [*0C81.0020.0002] # SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW
+2945 ; [*0C82.0020.0002] # RIGHTWARDS ARROW WITH PLUS BELOW
+2946 ; [*0C83.0020.0002] # LEFTWARDS ARROW WITH PLUS BELOW
+2947 ; [*0C84.0020.0002] # RIGHTWARDS ARROW THROUGH X
+2948 ; [*0C85.0020.0002] # LEFT RIGHT ARROW THROUGH SMALL CIRCLE
+2949 ; [*0C86.0020.0002] # UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE
+294A ; [*0C87.0020.0002] # LEFT BARB UP RIGHT BARB DOWN HARPOON
+294B ; [*0C88.0020.0002] # LEFT BARB DOWN RIGHT BARB UP HARPOON
+294C ; [*0C89.0020.0002] # UP BARB RIGHT DOWN BARB LEFT HARPOON
+294D ; [*0C8A.0020.0002] # UP BARB LEFT DOWN BARB RIGHT HARPOON
+294E ; [*0C8B.0020.0002] # LEFT BARB UP RIGHT BARB UP HARPOON
+294F ; [*0C8C.0020.0002] # UP BARB RIGHT DOWN BARB RIGHT HARPOON
+2950 ; [*0C8D.0020.0002] # LEFT BARB DOWN RIGHT BARB DOWN HARPOON
+2951 ; [*0C8E.0020.0002] # UP BARB LEFT DOWN BARB LEFT HARPOON
+2952 ; [*0C8F.0020.0002] # LEFTWARDS HARPOON WITH BARB UP TO BAR
+2953 ; [*0C90.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP TO BAR
+2954 ; [*0C91.0020.0002] # UPWARDS HARPOON WITH BARB RIGHT TO BAR
+2955 ; [*0C92.0020.0002] # DOWNWARDS HARPOON WITH BARB RIGHT TO BAR
+2956 ; [*0C93.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN TO BAR
+2957 ; [*0C94.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN TO BAR
+2958 ; [*0C95.0020.0002] # UPWARDS HARPOON WITH BARB LEFT TO BAR
+2959 ; [*0C96.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT TO BAR
+295A ; [*0C97.0020.0002] # LEFTWARDS HARPOON WITH BARB UP FROM BAR
+295B ; [*0C98.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP FROM BAR
+295C ; [*0C99.0020.0002] # UPWARDS HARPOON WITH BARB RIGHT FROM BAR
+295D ; [*0C9A.0020.0002] # DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR
+295E ; [*0C9B.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
+295F ; [*0C9C.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR
+2960 ; [*0C9D.0020.0002] # UPWARDS HARPOON WITH BARB LEFT FROM BAR
+2961 ; [*0C9E.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT FROM BAR
+2962 ; [*0C9F.0020.0002] # LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+2963 ; [*0CA0.0020.0002] # UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+2964 ; [*0CA1.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+2965 ; [*0CA2.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+2966 ; [*0CA3.0020.0002] # LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP
+2967 ; [*0CA4.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN
+2968 ; [*0CA5.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP
+2969 ; [*0CA6.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN
+296A ; [*0CA7.0020.0002] # LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+296B ; [*0CA8.0020.0002] # LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+296C ; [*0CA9.0020.0002] # RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH
+296D ; [*0CAA.0020.0002] # RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH
+296E ; [*0CAB.0020.0002] # UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT
+296F ; [*0CAC.0020.0002] # DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT
+2970 ; [*0CAD.0020.0002] # RIGHT DOUBLE ARROW WITH ROUNDED HEAD
+2971 ; [*0CAE.0020.0002] # EQUALS SIGN ABOVE RIGHTWARDS ARROW
+2972 ; [*0CAF.0020.0002] # TILDE OPERATOR ABOVE RIGHTWARDS ARROW
+2973 ; [*0CB0.0020.0002] # LEFTWARDS ARROW ABOVE TILDE OPERATOR
+2974 ; [*0CB1.0020.0002] # RIGHTWARDS ARROW ABOVE TILDE OPERATOR
+2975 ; [*0CB2.0020.0002] # RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO
+2976 ; [*0CB3.0020.0002] # LESS-THAN ABOVE LEFTWARDS ARROW
+2977 ; [*0CB4.0020.0002] # LEFTWARDS ARROW THROUGH LESS-THAN
+2978 ; [*0CB5.0020.0002] # GREATER-THAN ABOVE RIGHTWARDS ARROW
+2979 ; [*0CB6.0020.0002] # SUBSET ABOVE RIGHTWARDS ARROW
+297A ; [*0CB7.0020.0002] # LEFTWARDS ARROW THROUGH SUBSET
+297B ; [*0CB8.0020.0002] # SUPERSET ABOVE LEFTWARDS ARROW
+297C ; [*0CB9.0020.0002] # LEFT FISH TAIL
+297D ; [*0CBA.0020.0002] # RIGHT FISH TAIL
+297E ; [*0CBB.0020.0002] # UP FISH TAIL
+297F ; [*0CBC.0020.0002] # DOWN FISH TAIL
+2980 ; [*0CBD.0020.0002] # TRIPLE VERTICAL BAR DELIMITER
+2981 ; [*0CBE.0020.0002] # Z NOTATION SPOT
+2982 ; [*0CBF.0020.0002] # Z NOTATION TYPE COLON
+2983 ; [*0348.0020.0002] # LEFT WHITE CURLY BRACKET
+2984 ; [*0349.0020.0002] # RIGHT WHITE CURLY BRACKET
+2985 ; [*034A.0020.0002] # LEFT WHITE PARENTHESIS
+2986 ; [*034B.0020.0002] # RIGHT WHITE PARENTHESIS
+2987 ; [*034C.0020.0002] # Z NOTATION LEFT IMAGE BRACKET
+2988 ; [*034D.0020.0002] # Z NOTATION RIGHT IMAGE BRACKET
+2989 ; [*034E.0020.0002] # Z NOTATION LEFT BINDING BRACKET
+298A ; [*034F.0020.0002] # Z NOTATION RIGHT BINDING BRACKET
+298B ; [*0350.0020.0002] # LEFT SQUARE BRACKET WITH UNDERBAR
+298C ; [*0351.0020.0002] # RIGHT SQUARE BRACKET WITH UNDERBAR
+298D ; [*0352.0020.0002] # LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298E ; [*0353.0020.0002] # RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+298F ; [*0354.0020.0002] # LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990 ; [*0355.0020.0002] # RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2991 ; [*0356.0020.0002] # LEFT ANGLE BRACKET WITH DOT
+2992 ; [*0357.0020.0002] # RIGHT ANGLE BRACKET WITH DOT
+2993 ; [*0358.0020.0002] # LEFT ARC LESS-THAN BRACKET
+2994 ; [*0359.0020.0002] # RIGHT ARC GREATER-THAN BRACKET
+2995 ; [*035A.0020.0002] # DOUBLE LEFT ARC GREATER-THAN BRACKET
+2996 ; [*035B.0020.0002] # DOUBLE RIGHT ARC LESS-THAN BRACKET
+2997 ; [*035C.0020.0002] # LEFT BLACK TORTOISE SHELL BRACKET
+2998 ; [*035D.0020.0002] # RIGHT BLACK TORTOISE SHELL BRACKET
+2999 ; [*0CC0.0020.0002] # DOTTED FENCE
+299A ; [*0CC1.0020.0002] # VERTICAL ZIGZAG LINE
+299B ; [*0CC2.0020.0002] # MEASURED ANGLE OPENING LEFT
+299C ; [*0CC3.0020.0002] # RIGHT ANGLE VARIANT WITH SQUARE
+299D ; [*0CC4.0020.0002] # MEASURED RIGHT ANGLE WITH DOT
+299E ; [*0CC5.0020.0002] # ANGLE WITH S INSIDE
+299F ; [*0CC6.0020.0002] # ACUTE ANGLE
+29A0 ; [*0CC7.0020.0002] # SPHERICAL ANGLE OPENING LEFT
+29A1 ; [*0CC8.0020.0002] # SPHERICAL ANGLE OPENING UP
+29A2 ; [*0CC9.0020.0002] # TURNED ANGLE
+29A3 ; [*0CCA.0020.0002] # REVERSED ANGLE
+29A4 ; [*0CCB.0020.0002] # ANGLE WITH UNDERBAR
+29A5 ; [*0CCC.0020.0002] # REVERSED ANGLE WITH UNDERBAR
+29A6 ; [*0CCD.0020.0002] # OBLIQUE ANGLE OPENING UP
+29A7 ; [*0CCE.0020.0002] # OBLIQUE ANGLE OPENING DOWN
+29A8 ; [*0CCF.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT
+29A9 ; [*0CD0.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT
+29AA ; [*0CD1.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT
+29AB ; [*0CD2.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT
+29AC ; [*0CD3.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP
+29AD ; [*0CD4.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP
+29AE ; [*0CD5.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN
+29AF ; [*0CD6.0020.0002] # MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN
+29B0 ; [*0CD7.0020.0002] # REVERSED EMPTY SET
+29B1 ; [*0CD8.0020.0002] # EMPTY SET WITH OVERBAR
+29B2 ; [*0CD9.0020.0002] # EMPTY SET WITH SMALL CIRCLE ABOVE
+29B3 ; [*0CDA.0020.0002] # EMPTY SET WITH RIGHT ARROW ABOVE
+29B4 ; [*0CDB.0020.0002] # EMPTY SET WITH LEFT ARROW ABOVE
+29B5 ; [*0CDC.0020.0002] # CIRCLE WITH HORIZONTAL BAR
+29B6 ; [*0CDD.0020.0002] # CIRCLED VERTICAL BAR
+29B7 ; [*0CDE.0020.0002] # CIRCLED PARALLEL
+29B8 ; [*0CDF.0020.0002] # CIRCLED REVERSE SOLIDUS
+29B9 ; [*0CE0.0020.0002] # CIRCLED PERPENDICULAR
+29BA ; [*0CE1.0020.0002] # CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR
+29BB ; [*0CE2.0020.0002] # CIRCLE WITH SUPERIMPOSED X
+29BC ; [*0CE3.0020.0002] # CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN
+29BD ; [*0CE4.0020.0002] # UP ARROW THROUGH CIRCLE
+29BE ; [*0CE5.0020.0002] # CIRCLED WHITE BULLET
+29BF ; [*0CE6.0020.0002] # CIRCLED BULLET
+29C0 ; [*0CE7.0020.0002] # CIRCLED LESS-THAN
+29C1 ; [*0CE8.0020.0002] # CIRCLED GREATER-THAN
+29C2 ; [*0CE9.0020.0002] # CIRCLE WITH SMALL CIRCLE TO THE RIGHT
+29C3 ; [*0CEA.0020.0002] # CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT
+29C4 ; [*0CEB.0020.0002] # SQUARED RISING DIAGONAL SLASH
+29C5 ; [*0CEC.0020.0002] # SQUARED FALLING DIAGONAL SLASH
+29C6 ; [*0CED.0020.0002] # SQUARED ASTERISK
+29C7 ; [*0CEE.0020.0002] # SQUARED SMALL CIRCLE
+29C8 ; [*0CEF.0020.0002] # SQUARED SQUARE
+29C9 ; [*0CF0.0020.0002] # TWO JOINED SQUARES
+29CA ; [*0CF1.0020.0002] # TRIANGLE WITH DOT ABOVE
+29CB ; [*0CF2.0020.0002] # TRIANGLE WITH UNDERBAR
+29CC ; [*0CF3.0020.0002] # S IN TRIANGLE
+29CD ; [*0CF4.0020.0002] # TRIANGLE WITH SERIFS AT BOTTOM
+29CE ; [*0CF5.0020.0002] # RIGHT TRIANGLE ABOVE LEFT TRIANGLE
+29CF ; [*0CF6.0020.0002] # LEFT TRIANGLE BESIDE VERTICAL BAR
+29D0 ; [*0CF7.0020.0002] # VERTICAL BAR BESIDE RIGHT TRIANGLE
+29D1 ; [*0CF8.0020.0002] # BOWTIE WITH LEFT HALF BLACK
+29D2 ; [*0CF9.0020.0002] # BOWTIE WITH RIGHT HALF BLACK
+29D3 ; [*0CFA.0020.0002] # BLACK BOWTIE
+29D4 ; [*0CFB.0020.0002] # TIMES WITH LEFT HALF BLACK
+29D5 ; [*0CFC.0020.0002] # TIMES WITH RIGHT HALF BLACK
+29D6 ; [*0CFD.0020.0002] # WHITE HOURGLASS
+29D7 ; [*0CFE.0020.0002] # BLACK HOURGLASS
+29D8 ; [*03AA.0020.0002] # LEFT WIGGLY FENCE
+29D9 ; [*03AB.0020.0002] # RIGHT WIGGLY FENCE
+29DA ; [*03AC.0020.0002] # LEFT DOUBLE WIGGLY FENCE
+29DB ; [*03AD.0020.0002] # RIGHT DOUBLE WIGGLY FENCE
+29DC ; [*0CFF.0020.0002] # INCOMPLETE INFINITY
+29DD ; [*0D00.0020.0002] # TIE OVER INFINITY
+29DE ; [*0D01.0020.0002] # INFINITY NEGATED WITH VERTICAL BAR
+29DF ; [*0D02.0020.0002] # DOUBLE-ENDED MULTIMAP
+29E0 ; [*0D03.0020.0002] # SQUARE WITH CONTOURED OUTLINE
+29E1 ; [*0D04.0020.0002] # INCREASES AS
+29E2 ; [*0D05.0020.0002] # SHUFFLE PRODUCT
+29E3 ; [*0D06.0020.0002] # EQUALS SIGN AND SLANTED PARALLEL
+29E4 ; [*0D07.0020.0002] # EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE
+29E5 ; [*0D08.0020.0002] # IDENTICAL TO AND SLANTED PARALLEL
+29E6 ; [*0D09.0020.0002] # GLEICH STARK
+29E7 ; [*0D0A.0020.0002] # THERMODYNAMIC
+29E8 ; [*0D0B.0020.0002] # DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK
+29E9 ; [*0D0C.0020.0002] # DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK
+29EA ; [*0D0D.0020.0002] # BLACK DIAMOND WITH DOWN ARROW
+29EB ; [*0D0E.0020.0002] # BLACK LOZENGE
+29EC ; [*0D0F.0020.0002] # WHITE CIRCLE WITH DOWN ARROW
+29ED ; [*0D10.0020.0002] # BLACK CIRCLE WITH DOWN ARROW
+29EE ; [*0D11.0020.0002] # ERROR-BARRED WHITE SQUARE
+29EF ; [*0D12.0020.0002] # ERROR-BARRED BLACK SQUARE
+29F0 ; [*0D13.0020.0002] # ERROR-BARRED WHITE DIAMOND
+29F1 ; [*0D14.0020.0002] # ERROR-BARRED BLACK DIAMOND
+29F2 ; [*0D15.0020.0002] # ERROR-BARRED WHITE CIRCLE
+29F3 ; [*0D16.0020.0002] # ERROR-BARRED BLACK CIRCLE
+29F4 ; [*0D17.0020.0002] # RULE-DELAYED
+29F5 ; [*0D18.0020.0002] # REVERSE SOLIDUS OPERATOR
+29F6 ; [*0D19.0020.0002] # SOLIDUS WITH OVERBAR
+29F7 ; [*0D1A.0020.0002] # REVERSE SOLIDUS WITH HORIZONTAL STROKE
+29F8 ; [*0D1B.0020.0002] # BIG SOLIDUS
+29F9 ; [*0D1C.0020.0002] # BIG REVERSE SOLIDUS
+29FA ; [*0D1D.0020.0002] # DOUBLE PLUS
+29FB ; [*0D1E.0020.0002] # TRIPLE PLUS
+29FC ; [*0346.0020.0002] # LEFT-POINTING CURVED ANGLE BRACKET
+29FD ; [*0347.0020.0002] # RIGHT-POINTING CURVED ANGLE BRACKET
+29FE ; [*0D1F.0020.0002] # TINY
+29FF ; [*0D20.0020.0002] # MINY
+2A00 ; [*0D21.0020.0002] # N-ARY CIRCLED DOT OPERATOR
+2A01 ; [*0D22.0020.0002] # N-ARY CIRCLED PLUS OPERATOR
+2A02 ; [*0D23.0020.0002] # N-ARY CIRCLED TIMES OPERATOR
+2A03 ; [*0D24.0020.0002] # N-ARY UNION OPERATOR WITH DOT
+2A04 ; [*0D25.0020.0002] # N-ARY UNION OPERATOR WITH PLUS
+2A05 ; [*0D26.0020.0002] # N-ARY SQUARE INTERSECTION OPERATOR
+2A06 ; [*0D27.0020.0002] # N-ARY SQUARE UNION OPERATOR
+2A07 ; [*0D28.0020.0002] # TWO LOGICAL AND OPERATOR
+2A08 ; [*0D29.0020.0002] # TWO LOGICAL OR OPERATOR
+2A09 ; [*0D2A.0020.0002] # N-ARY TIMES OPERATOR
+2A0A ; [*0D2B.0020.0002] # MODULO TWO SUM
+2A0B ; [*0D2C.0020.0002] # SUMMATION WITH INTEGRAL
+2A0C ; [*06C3.0020.0004][*06C3.0020.0004][*06C3.0020.0004][*06C3.0020.0004] # QUADRUPLE INTEGRAL OPERATOR
+2A0D ; [*0D2D.0020.0002] # FINITE PART INTEGRAL
+2A0E ; [*0D2E.0020.0002] # INTEGRAL WITH DOUBLE STROKE
+2A0F ; [*0D2F.0020.0002] # INTEGRAL AVERAGE WITH SLASH
+2A10 ; [*0D30.0020.0002] # CIRCULATION FUNCTION
+2A11 ; [*0D31.0020.0002] # ANTICLOCKWISE INTEGRATION
+2A12 ; [*0D32.0020.0002] # LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE
+2A13 ; [*0D33.0020.0002] # LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE
+2A14 ; [*0D34.0020.0002] # LINE INTEGRATION NOT INCLUDING THE POLE
+2A15 ; [*0D35.0020.0002] # INTEGRAL AROUND A POINT OPERATOR
+2A16 ; [*0D36.0020.0002] # QUATERNION INTEGRAL OPERATOR
+2A17 ; [*0D37.0020.0002] # INTEGRAL WITH LEFTWARDS ARROW WITH HOOK
+2A18 ; [*0D38.0020.0002] # INTEGRAL WITH TIMES SIGN
+2A19 ; [*0D39.0020.0002] # INTEGRAL WITH INTERSECTION
+2A1A ; [*0D3A.0020.0002] # INTEGRAL WITH UNION
+2A1B ; [*0D3B.0020.0002] # INTEGRAL WITH OVERBAR
+2A1C ; [*0D3C.0020.0002] # INTEGRAL WITH UNDERBAR
+2A1D ; [*0D3D.0020.0002] # JOIN
+2A1E ; [*0D3E.0020.0002] # LARGE LEFT TRIANGLE OPERATOR
+2A1F ; [*0D3F.0020.0002] # Z NOTATION SCHEMA COMPOSITION
+2A20 ; [*0D40.0020.0002] # Z NOTATION SCHEMA PIPING
+2A21 ; [*0D41.0020.0002] # Z NOTATION SCHEMA PROJECTION
+2A22 ; [*0D42.0020.0002] # PLUS SIGN WITH SMALL CIRCLE ABOVE
+2A23 ; [*0D43.0020.0002] # PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE
+2A24 ; [*0D44.0020.0002] # PLUS SIGN WITH TILDE ABOVE
+2A25 ; [*0D45.0020.0002] # PLUS SIGN WITH DOT BELOW
+2A26 ; [*0D46.0020.0002] # PLUS SIGN WITH TILDE BELOW
+2A27 ; [*0D47.0020.0002] # PLUS SIGN WITH SUBSCRIPT TWO
+2A28 ; [*0D48.0020.0002] # PLUS SIGN WITH BLACK TRIANGLE
+2A29 ; [*0D49.0020.0002] # MINUS SIGN WITH COMMA ABOVE
+2A2A ; [*0D4A.0020.0002] # MINUS SIGN WITH DOT BELOW
+2A2B ; [*0D4B.0020.0002] # MINUS SIGN WITH FALLING DOTS
+2A2C ; [*0D4C.0020.0002] # MINUS SIGN WITH RISING DOTS
+2A2D ; [*0D4D.0020.0002] # PLUS SIGN IN LEFT HALF CIRCLE
+2A2E ; [*0D4E.0020.0002] # PLUS SIGN IN RIGHT HALF CIRCLE
+2A2F ; [*0D4F.0020.0002] # VECTOR OR CROSS PRODUCT
+2A30 ; [*0D50.0020.0002] # MULTIPLICATION SIGN WITH DOT ABOVE
+2A31 ; [*0D51.0020.0002] # MULTIPLICATION SIGN WITH UNDERBAR
+2A32 ; [*0D52.0020.0002] # SEMIDIRECT PRODUCT WITH BOTTOM CLOSED
+2A33 ; [*0D53.0020.0002] # SMASH PRODUCT
+2A34 ; [*0D54.0020.0002] # MULTIPLICATION SIGN IN LEFT HALF CIRCLE
+2A35 ; [*0D55.0020.0002] # MULTIPLICATION SIGN IN RIGHT HALF CIRCLE
+2A36 ; [*0D56.0020.0002] # CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT
+2A37 ; [*0D57.0020.0002] # MULTIPLICATION SIGN IN DOUBLE CIRCLE
+2A38 ; [*0D58.0020.0002] # CIRCLED DIVISION SIGN
+2A39 ; [*0D59.0020.0002] # PLUS SIGN IN TRIANGLE
+2A3A ; [*0D5A.0020.0002] # MINUS SIGN IN TRIANGLE
+2A3B ; [*0D5B.0020.0002] # MULTIPLICATION SIGN IN TRIANGLE
+2A3C ; [*0D5C.0020.0002] # INTERIOR PRODUCT
+2A3D ; [*0D5D.0020.0002] # RIGHTHAND INTERIOR PRODUCT
+2A3E ; [*0D5E.0020.0002] # Z NOTATION RELATIONAL COMPOSITION
+2A3F ; [*0D5F.0020.0002] # AMALGAMATION OR COPRODUCT
+2A40 ; [*0D60.0020.0002] # INTERSECTION WITH DOT
+2A41 ; [*0D61.0020.0002] # UNION WITH MINUS SIGN
+2A42 ; [*0D62.0020.0002] # UNION WITH OVERBAR
+2A43 ; [*0D63.0020.0002] # INTERSECTION WITH OVERBAR
+2A44 ; [*0D64.0020.0002] # INTERSECTION WITH LOGICAL AND
+2A45 ; [*0D65.0020.0002] # UNION WITH LOGICAL OR
+2A46 ; [*0D66.0020.0002] # UNION ABOVE INTERSECTION
+2A47 ; [*0D67.0020.0002] # INTERSECTION ABOVE UNION
+2A48 ; [*0D68.0020.0002] # UNION ABOVE BAR ABOVE INTERSECTION
+2A49 ; [*0D69.0020.0002] # INTERSECTION ABOVE BAR ABOVE UNION
+2A4A ; [*0D6A.0020.0002] # UNION BESIDE AND JOINED WITH UNION
+2A4B ; [*0D6B.0020.0002] # INTERSECTION BESIDE AND JOINED WITH INTERSECTION
+2A4C ; [*0D6C.0020.0002] # CLOSED UNION WITH SERIFS
+2A4D ; [*0D6D.0020.0002] # CLOSED INTERSECTION WITH SERIFS
+2A4E ; [*0D6E.0020.0002] # DOUBLE SQUARE INTERSECTION
+2A4F ; [*0D6F.0020.0002] # DOUBLE SQUARE UNION
+2A50 ; [*0D70.0020.0002] # CLOSED UNION WITH SERIFS AND SMASH PRODUCT
+2A51 ; [*0D71.0020.0002] # LOGICAL AND WITH DOT ABOVE
+2A52 ; [*0D72.0020.0002] # LOGICAL OR WITH DOT ABOVE
+2A53 ; [*0D73.0020.0002] # DOUBLE LOGICAL AND
+2A54 ; [*0D74.0020.0002] # DOUBLE LOGICAL OR
+2A55 ; [*0D75.0020.0002] # TWO INTERSECTING LOGICAL AND
+2A56 ; [*0D76.0020.0002] # TWO INTERSECTING LOGICAL OR
+2A57 ; [*0D77.0020.0002] # SLOPING LARGE OR
+2A58 ; [*0D78.0020.0002] # SLOPING LARGE AND
+2A59 ; [*0D79.0020.0002] # LOGICAL OR OVERLAPPING LOGICAL AND
+2A5A ; [*0D7A.0020.0002] # LOGICAL AND WITH MIDDLE STEM
+2A5B ; [*0D7B.0020.0002] # LOGICAL OR WITH MIDDLE STEM
+2A5C ; [*0D7C.0020.0002] # LOGICAL AND WITH HORIZONTAL DASH
+2A5D ; [*0D7D.0020.0002] # LOGICAL OR WITH HORIZONTAL DASH
+2A5E ; [*0D7E.0020.0002] # LOGICAL AND WITH DOUBLE OVERBAR
+2A5F ; [*0D7F.0020.0002] # LOGICAL AND WITH UNDERBAR
+2A60 ; [*0D80.0020.0002] # LOGICAL AND WITH DOUBLE UNDERBAR
+2A61 ; [*0D81.0020.0002] # SMALL VEE WITH UNDERBAR
+2A62 ; [*0D82.0020.0002] # LOGICAL OR WITH DOUBLE OVERBAR
+2A63 ; [*0D83.0020.0002] # LOGICAL OR WITH DOUBLE UNDERBAR
+2A64 ; [*0D84.0020.0002] # Z NOTATION DOMAIN ANTIRESTRICTION
+2A65 ; [*0D85.0020.0002] # Z NOTATION RANGE ANTIRESTRICTION
+2A66 ; [*0D86.0020.0002] # EQUALS SIGN WITH DOT BELOW
+2A67 ; [*0D87.0020.0002] # IDENTICAL WITH DOT ABOVE
+2A68 ; [*0D88.0020.0002] # TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE
+2A69 ; [*0D89.0020.0002] # TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE
+2A6A ; [*0D8A.0020.0002] # TILDE OPERATOR WITH DOT ABOVE
+2A6B ; [*0D8B.0020.0002] # TILDE OPERATOR WITH RISING DOTS
+2A6C ; [*0D8C.0020.0002] # SIMILAR MINUS SIMILAR
+2A6D ; [*0D8D.0020.0002] # CONGRUENT WITH DOT ABOVE
+2A6E ; [*0D8E.0020.0002] # EQUALS WITH ASTERISK
+2A6F ; [*0D8F.0020.0002] # ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT
+2A70 ; [*0D90.0020.0002] # APPROXIMATELY EQUAL OR EQUAL TO
+2A71 ; [*0D91.0020.0002] # EQUALS SIGN ABOVE PLUS SIGN
+2A72 ; [*0D92.0020.0002] # PLUS SIGN ABOVE EQUALS SIGN
+2A73 ; [*0D93.0020.0002] # EQUALS SIGN ABOVE TILDE OPERATOR
+2A74 ; [*0241.0020.0004][*0241.0020.0004][*06A2.0020.0004] # DOUBLE COLON EQUAL
+2A75 ; [*06A2.0020.0004][*06A2.0020.0004] # TWO CONSECUTIVE EQUALS SIGNS
+2A76 ; [*06A2.0020.0004][*06A2.0020.0004][*06A2.0020.0004] # THREE CONSECUTIVE EQUALS SIGNS
+2A77 ; [*0D94.0020.0002] # EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW
+2A78 ; [*0D95.0020.0002] # EQUIVALENT WITH FOUR DOTS ABOVE
+2A79 ; [*0D96.0020.0002] # LESS-THAN WITH CIRCLE INSIDE
+2A7A ; [*0D97.0020.0002] # GREATER-THAN WITH CIRCLE INSIDE
+2A7B ; [*0D98.0020.0002] # LESS-THAN WITH QUESTION MARK ABOVE
+2A7C ; [*0D99.0020.0002] # GREATER-THAN WITH QUESTION MARK ABOVE
+2A7D ; [*0D9A.0020.0002] # LESS-THAN OR SLANTED EQUAL TO
+2A7E ; [*0D9B.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO
+2A7F ; [*0D9C.0020.0002] # LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A80 ; [*0D9D.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
+2A81 ; [*0D9E.0020.0002] # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A82 ; [*0D9F.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE
+2A83 ; [*0DA0.0020.0002] # LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT
+2A84 ; [*0DA1.0020.0002] # GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT
+2A85 ; [*0DA2.0020.0002] # LESS-THAN OR APPROXIMATE
+2A86 ; [*0DA3.0020.0002] # GREATER-THAN OR APPROXIMATE
+2A87 ; [*0DA4.0020.0002] # LESS-THAN AND SINGLE-LINE NOT EQUAL TO
+2A88 ; [*0DA5.0020.0002] # GREATER-THAN AND SINGLE-LINE NOT EQUAL TO
+2A89 ; [*0DA6.0020.0002] # LESS-THAN AND NOT APPROXIMATE
+2A8A ; [*0DA7.0020.0002] # GREATER-THAN AND NOT APPROXIMATE
+2A8B ; [*0DA8.0020.0002] # LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN
+2A8C ; [*0DA9.0020.0002] # GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN
+2A8D ; [*0DAA.0020.0002] # LESS-THAN ABOVE SIMILAR OR EQUAL
+2A8E ; [*0DAB.0020.0002] # GREATER-THAN ABOVE SIMILAR OR EQUAL
+2A8F ; [*0DAC.0020.0002] # LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN
+2A90 ; [*0DAD.0020.0002] # GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN
+2A91 ; [*0DAE.0020.0002] # LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL
+2A92 ; [*0DAF.0020.0002] # GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL
+2A93 ; [*0DB0.0020.0002] # LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL
+2A94 ; [*0DB1.0020.0002] # GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL
+2A95 ; [*0DB2.0020.0002] # SLANTED EQUAL TO OR LESS-THAN
+2A96 ; [*0DB3.0020.0002] # SLANTED EQUAL TO OR GREATER-THAN
+2A97 ; [*0DB4.0020.0002] # SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE
+2A98 ; [*0DB5.0020.0002] # SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE
+2A99 ; [*0DB6.0020.0002] # DOUBLE-LINE EQUAL TO OR LESS-THAN
+2A9A ; [*0DB7.0020.0002] # DOUBLE-LINE EQUAL TO OR GREATER-THAN
+2A9B ; [*0DB8.0020.0002] # DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN
+2A9C ; [*0DB9.0020.0002] # DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN
+2A9D ; [*0DBA.0020.0002] # SIMILAR OR LESS-THAN
+2A9E ; [*0DBB.0020.0002] # SIMILAR OR GREATER-THAN
+2A9F ; [*0DBC.0020.0002] # SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN
+2AA0 ; [*0DBD.0020.0002] # SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN
+2AA1 ; [*0DBE.0020.0002] # DOUBLE NESTED LESS-THAN
+2AA2 ; [*0DBF.0020.0002] # DOUBLE NESTED GREATER-THAN
+2AA3 ; [*0DC0.0020.0002] # DOUBLE NESTED LESS-THAN WITH UNDERBAR
+2AA4 ; [*0DC1.0020.0002] # GREATER-THAN OVERLAPPING LESS-THAN
+2AA5 ; [*0DC2.0020.0002] # GREATER-THAN BESIDE LESS-THAN
+2AA6 ; [*0DC3.0020.0002] # LESS-THAN CLOSED BY CURVE
+2AA7 ; [*0DC4.0020.0002] # GREATER-THAN CLOSED BY CURVE
+2AA8 ; [*0DC5.0020.0002] # LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AA9 ; [*0DC6.0020.0002] # GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL
+2AAA ; [*0DC7.0020.0002] # SMALLER THAN
+2AAB ; [*0DC8.0020.0002] # LARGER THAN
+2AAC ; [*0DC9.0020.0002] # SMALLER THAN OR EQUAL TO
+2AAD ; [*0DCA.0020.0002] # LARGER THAN OR EQUAL TO
+2AAE ; [*0DCB.0020.0002] # EQUALS SIGN WITH BUMPY ABOVE
+2AAF ; [*0DCC.0020.0002] # PRECEDES ABOVE SINGLE-LINE EQUALS SIGN
+2AB0 ; [*0DCD.0020.0002] # SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+2AB1 ; [*0DCE.0020.0002] # PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO
+2AB2 ; [*0DCF.0020.0002] # SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
+2AB3 ; [*0DD0.0020.0002] # PRECEDES ABOVE EQUALS SIGN
+2AB4 ; [*0DD1.0020.0002] # SUCCEEDS ABOVE EQUALS SIGN
+2AB5 ; [*0DD2.0020.0002] # PRECEDES ABOVE NOT EQUAL TO
+2AB6 ; [*0DD3.0020.0002] # SUCCEEDS ABOVE NOT EQUAL TO
+2AB7 ; [*0DD4.0020.0002] # PRECEDES ABOVE ALMOST EQUAL TO
+2AB8 ; [*0DD5.0020.0002] # SUCCEEDS ABOVE ALMOST EQUAL TO
+2AB9 ; [*0DD6.0020.0002] # PRECEDES ABOVE NOT ALMOST EQUAL TO
+2ABA ; [*0DD7.0020.0002] # SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+2ABB ; [*0DD8.0020.0002] # DOUBLE PRECEDES
+2ABC ; [*0DD9.0020.0002] # DOUBLE SUCCEEDS
+2ABD ; [*0DDA.0020.0002] # SUBSET WITH DOT
+2ABE ; [*0DDB.0020.0002] # SUPERSET WITH DOT
+2ABF ; [*0DDC.0020.0002] # SUBSET WITH PLUS SIGN BELOW
+2AC0 ; [*0DDD.0020.0002] # SUPERSET WITH PLUS SIGN BELOW
+2AC1 ; [*0DDE.0020.0002] # SUBSET WITH MULTIPLICATION SIGN BELOW
+2AC2 ; [*0DDF.0020.0002] # SUPERSET WITH MULTIPLICATION SIGN BELOW
+2AC3 ; [*0DE0.0020.0002] # SUBSET OF OR EQUAL TO WITH DOT ABOVE
+2AC4 ; [*0DE1.0020.0002] # SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+2AC5 ; [*0DE2.0020.0002] # SUBSET OF ABOVE EQUALS SIGN
+2AC6 ; [*0DE3.0020.0002] # SUPERSET OF ABOVE EQUALS SIGN
+2AC7 ; [*0DE4.0020.0002] # SUBSET OF ABOVE TILDE OPERATOR
+2AC8 ; [*0DE5.0020.0002] # SUPERSET OF ABOVE TILDE OPERATOR
+2AC9 ; [*0DE6.0020.0002] # SUBSET OF ABOVE ALMOST EQUAL TO
+2ACA ; [*0DE7.0020.0002] # SUPERSET OF ABOVE ALMOST EQUAL TO
+2ACB ; [*0DE8.0020.0002] # SUBSET OF ABOVE NOT EQUAL TO
+2ACC ; [*0DE9.0020.0002] # SUPERSET OF ABOVE NOT EQUAL TO
+2ACD ; [*0DEA.0020.0002] # SQUARE LEFT OPEN BOX OPERATOR
+2ACE ; [*0DEB.0020.0002] # SQUARE RIGHT OPEN BOX OPERATOR
+2ACF ; [*0DEC.0020.0002] # CLOSED SUBSET
+2AD0 ; [*0DED.0020.0002] # CLOSED SUPERSET
+2AD1 ; [*0DEE.0020.0002] # CLOSED SUBSET OR EQUAL TO
+2AD2 ; [*0DEF.0020.0002] # CLOSED SUPERSET OR EQUAL TO
+2AD3 ; [*0DF0.0020.0002] # SUBSET ABOVE SUPERSET
+2AD4 ; [*0DF1.0020.0002] # SUPERSET ABOVE SUBSET
+2AD5 ; [*0DF2.0020.0002] # SUBSET ABOVE SUBSET
+2AD6 ; [*0DF3.0020.0002] # SUPERSET ABOVE SUPERSET
+2AD7 ; [*0DF4.0020.0002] # SUPERSET BESIDE SUBSET
+2AD8 ; [*0DF5.0020.0002] # SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET
+2AD9 ; [*0DF6.0020.0002] # ELEMENT OF OPENING DOWNWARDS
+2ADA ; [*0DF7.0020.0002] # PITCHFORK WITH TEE TOP
+2ADB ; [*0DF8.0020.0002] # TRANSVERSAL INTERSECTION
+2ADC ; [*0DF9.0020.0002][.0000.002F.0002] # FORKING
+2ADD ; [*0DF9.0020.0002] # NONFORKING
+2ADE ; [*0DFA.0020.0002] # SHORT LEFT TACK
+2ADF ; [*0DFB.0020.0002] # SHORT DOWN TACK
+2AE0 ; [*0DFC.0020.0002] # SHORT UP TACK
+2AE1 ; [*0DFD.0020.0002] # PERPENDICULAR WITH S
+2AE2 ; [*0DFE.0020.0002] # VERTICAL BAR TRIPLE RIGHT TURNSTILE
+2AE3 ; [*0DFF.0020.0002] # DOUBLE VERTICAL BAR LEFT TURNSTILE
+2AE4 ; [*0E00.0020.0002] # VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AE5 ; [*0E01.0020.0002] # DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE
+2AE6 ; [*0E02.0020.0002] # LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL
+2AE7 ; [*0E03.0020.0002] # SHORT DOWN TACK WITH OVERBAR
+2AE8 ; [*0E04.0020.0002] # SHORT UP TACK WITH UNDERBAR
+2AE9 ; [*0E05.0020.0002] # SHORT UP TACK ABOVE SHORT DOWN TACK
+2AEA ; [*0E06.0020.0002] # DOUBLE DOWN TACK
+2AEB ; [*0E07.0020.0002] # DOUBLE UP TACK
+2AEC ; [*0E08.0020.0002] # DOUBLE STROKE NOT SIGN
+2AED ; [*0E09.0020.0002] # REVERSED DOUBLE STROKE NOT SIGN
+2AEE ; [*0E0A.0020.0002] # DOES NOT DIVIDE WITH REVERSED NEGATION SLASH
+2AEF ; [*0E0B.0020.0002] # VERTICAL LINE WITH CIRCLE ABOVE
+2AF0 ; [*0E0C.0020.0002] # VERTICAL LINE WITH CIRCLE BELOW
+2AF1 ; [*0E0D.0020.0002] # DOWN TACK WITH CIRCLE BELOW
+2AF2 ; [*0E0E.0020.0002] # PARALLEL WITH HORIZONTAL STROKE
+2AF3 ; [*0E0F.0020.0002] # PARALLEL WITH TILDE OPERATOR
+2AF4 ; [*0E10.0020.0002] # TRIPLE VERTICAL BAR BINARY RELATION
+2AF5 ; [*0E11.0020.0002] # TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE
+2AF6 ; [*0E12.0020.0002] # TRIPLE COLON OPERATOR
+2AF7 ; [*0E13.0020.0002] # TRIPLE NESTED LESS-THAN
+2AF8 ; [*0E14.0020.0002] # TRIPLE NESTED GREATER-THAN
+2AF9 ; [*0E15.0020.0002] # DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO
+2AFA ; [*0E16.0020.0002] # DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO
+2AFB ; [*0E17.0020.0002] # TRIPLE SOLIDUS BINARY RELATION
+2AFC ; [*0E18.0020.0002] # LARGE TRIPLE VERTICAL BAR OPERATOR
+2AFD ; [*0E19.0020.0002] # DOUBLE SOLIDUS OPERATOR
+2AFE ; [*0E1A.0020.0002] # WHITE VERTICAL BAR
+2AFF ; [*0E1B.0020.0002] # N-ARY WHITE VERTICAL BAR
+2B00 ; [*0E1C.0020.0002] # NORTH EAST WHITE ARROW
+2B01 ; [*0E1D.0020.0002] # NORTH WEST WHITE ARROW
+2B02 ; [*0E1E.0020.0002] # SOUTH EAST WHITE ARROW
+2B03 ; [*0E1F.0020.0002] # SOUTH WEST WHITE ARROW
+2B04 ; [*0E20.0020.0002] # LEFT RIGHT WHITE ARROW
+2B05 ; [*0E21.0020.0002] # LEFTWARDS BLACK ARROW
+2B06 ; [*0E22.0020.0002] # UPWARDS BLACK ARROW
+2B07 ; [*0E23.0020.0002] # DOWNWARDS BLACK ARROW
+2B08 ; [*0E24.0020.0002] # NORTH EAST BLACK ARROW
+2B09 ; [*0E25.0020.0002] # NORTH WEST BLACK ARROW
+2B0A ; [*0E26.0020.0002] # SOUTH EAST BLACK ARROW
+2B0B ; [*0E27.0020.0002] # SOUTH WEST BLACK ARROW
+2B0C ; [*0E28.0020.0002] # LEFT RIGHT BLACK ARROW
+2B0D ; [*0E29.0020.0002] # UP DOWN BLACK ARROW
+2B0E ; [*0E2A.0020.0002] # RIGHTWARDS ARROW WITH TIP DOWNWARDS
+2B0F ; [*0E2B.0020.0002] # RIGHTWARDS ARROW WITH TIP UPWARDS
+2B10 ; [*0E2C.0020.0002] # LEFTWARDS ARROW WITH TIP DOWNWARDS
+2B11 ; [*0E2D.0020.0002] # LEFTWARDS ARROW WITH TIP UPWARDS
+2B12 ; [*0E2E.0020.0002] # SQUARE WITH TOP HALF BLACK
+2B13 ; [*0E2F.0020.0002] # SQUARE WITH BOTTOM HALF BLACK
+2B14 ; [*0E30.0020.0002] # SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK
+2B15 ; [*0E31.0020.0002] # SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK
+2B16 ; [*0E32.0020.0002] # DIAMOND WITH LEFT HALF BLACK
+2B17 ; [*0E33.0020.0002] # DIAMOND WITH RIGHT HALF BLACK
+2B18 ; [*0E34.0020.0002] # DIAMOND WITH TOP HALF BLACK
+2B19 ; [*0E35.0020.0002] # DIAMOND WITH BOTTOM HALF BLACK
+2B1A ; [*0E36.0020.0002] # DOTTED SQUARE
+2B1B ; [*0E37.0020.0002] # BLACK LARGE SQUARE
+2B1C ; [*0E38.0020.0002] # WHITE LARGE SQUARE
+2B1D ; [*0E39.0020.0002] # BLACK VERY SMALL SQUARE
+2B1E ; [*0E3A.0020.0002] # WHITE VERY SMALL SQUARE
+2B1F ; [*0E3B.0020.0002] # BLACK PENTAGON
+2B20 ; [*0E3C.0020.0002] # WHITE PENTAGON
+2B21 ; [*0E3D.0020.0002] # WHITE HEXAGON
+2B22 ; [*0E3E.0020.0002] # BLACK HEXAGON
+2B23 ; [*0E3F.0020.0002] # HORIZONTAL BLACK HEXAGON
+2B24 ; [*0E40.0020.0002] # BLACK LARGE CIRCLE
+2B25 ; [*0E41.0020.0002] # BLACK MEDIUM DIAMOND
+2B26 ; [*0E42.0020.0002] # WHITE MEDIUM DIAMOND
+2B27 ; [*0E43.0020.0002] # BLACK MEDIUM LOZENGE
+2B28 ; [*0E44.0020.0002] # WHITE MEDIUM LOZENGE
+2B29 ; [*0E45.0020.0002] # BLACK SMALL DIAMOND
+2B2A ; [*0E46.0020.0002] # BLACK SMALL LOZENGE
+2B2B ; [*0E47.0020.0002] # WHITE SMALL LOZENGE
+2B2C ; [*0E48.0020.0002] # BLACK HORIZONTAL ELLIPSE
+2B2D ; [*0E49.0020.0002] # WHITE HORIZONTAL ELLIPSE
+2B2E ; [*0E4A.0020.0002] # BLACK VERTICAL ELLIPSE
+2B2F ; [*0E4B.0020.0002] # WHITE VERTICAL ELLIPSE
+2B30 ; [*0E4C.0020.0002] # LEFT ARROW WITH SMALL CIRCLE
+2B31 ; [*0E4D.0020.0002] # THREE LEFTWARDS ARROWS
+2B32 ; [*0E4E.0020.0002] # LEFT ARROW WITH CIRCLED PLUS
+2B33 ; [*0E4F.0020.0002] # LONG LEFTWARDS SQUIGGLE ARROW
+2B34 ; [*0E50.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
+2B35 ; [*0E51.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE
+2B36 ; [*0E52.0020.0002] # LEFTWARDS TWO-HEADED ARROW FROM BAR
+2B37 ; [*0E53.0020.0002] # LEFTWARDS TWO-HEADED TRIPLE DASH ARROW
+2B38 ; [*0E54.0020.0002] # LEFTWARDS ARROW WITH DOTTED STEM
+2B39 ; [*0E55.0020.0002] # LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE
+2B3A ; [*0E56.0020.0002] # LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2B3B ; [*0E57.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TAIL
+2B3C ; [*0E58.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE
+2B3D ; [*0E59.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE
+2B3E ; [*0E5A.0020.0002] # LEFTWARDS ARROW THROUGH X
+2B3F ; [*0E5B.0020.0002] # WAVE ARROW POINTING DIRECTLY LEFT
+2B40 ; [*0E5C.0020.0002] # EQUALS SIGN ABOVE LEFTWARDS ARROW
+2B41 ; [*0E5D.0020.0002] # REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW
+2B42 ; [*0E5E.0020.0002] # LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
+2B43 ; [*0E5F.0020.0002] # RIGHTWARDS ARROW THROUGH GREATER-THAN
+2B44 ; [*0E60.0020.0002] # RIGHTWARDS ARROW THROUGH SUPERSET
+2B45 ; [*0E61.0020.0002] # LEFTWARDS QUADRUPLE ARROW
+2B46 ; [*0E62.0020.0002] # RIGHTWARDS QUADRUPLE ARROW
+2B47 ; [*0E63.0020.0002] # REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW
+2B48 ; [*0E64.0020.0002] # RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
+2B49 ; [*0E65.0020.0002] # TILDE OPERATOR ABOVE LEFTWARDS ARROW
+2B4A ; [*0E66.0020.0002] # LEFTWARDS ARROW ABOVE ALMOST EQUAL TO
+2B4B ; [*0E67.0020.0002] # LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+2B4C ; [*0E68.0020.0002] # RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+2B4D ; [*0E69.0020.0002] # DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW
+2B4E ; [*0E6A.0020.0002] # SHORT SLANTED NORTH ARROW
+2B4F ; [*0E6B.0020.0002] # SHORT BACKSLANTED SOUTH ARROW
+2B50 ; [*0E6C.0020.0002] # WHITE MEDIUM STAR
+2B51 ; [*0E6D.0020.0002] # BLACK SMALL STAR
+2B52 ; [*0E6E.0020.0002] # WHITE SMALL STAR
+2B53 ; [*0E6F.0020.0002] # BLACK RIGHT-POINTING PENTAGON
+2B54 ; [*0E70.0020.0002] # WHITE RIGHT-POINTING PENTAGON
+2B55 ; [*0E71.0020.0002] # HEAVY LARGE CIRCLE
+2B56 ; [*0E72.0020.0002] # HEAVY OVAL WITH OVAL INSIDE
+2B57 ; [*0E73.0020.0002] # HEAVY CIRCLE WITH CIRCLE INSIDE
+2B58 ; [*0E74.0020.0002] # HEAVY CIRCLE
+2B59 ; [*0E75.0020.0002] # HEAVY CIRCLED SALTIRE
+2B5A ; [*0E76.0020.0002] # SLANTED NORTH ARROW WITH HOOKED HEAD
+2B5B ; [*0E77.0020.0002] # BACKSLANTED SOUTH ARROW WITH HOOKED TAIL
+2B5C ; [*0E78.0020.0002] # SLANTED NORTH ARROW WITH HORIZONTAL TAIL
+2B5D ; [*0E79.0020.0002] # BACKSLANTED SOUTH ARROW WITH HORIZONTAL TAIL
+2B5E ; [*0E7A.0020.0002] # BENT ARROW POINTING DOWNWARDS THEN NORTH EAST
+2B5F ; [*0E7B.0020.0002] # SHORT BENT ARROW POINTING DOWNWARDS THEN NORTH EAST
+2B60 ; [*0E7C.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW
+2B61 ; [*0E7D.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW
+2B62 ; [*0E7E.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW
+2B63 ; [*0E7F.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW
+2B64 ; [*0E80.0020.0002] # LEFT RIGHT TRIANGLE-HEADED ARROW
+2B65 ; [*0E81.0020.0002] # UP DOWN TRIANGLE-HEADED ARROW
+2B66 ; [*0E82.0020.0002] # NORTH WEST TRIANGLE-HEADED ARROW
+2B67 ; [*0E83.0020.0002] # NORTH EAST TRIANGLE-HEADED ARROW
+2B68 ; [*0E84.0020.0002] # SOUTH EAST TRIANGLE-HEADED ARROW
+2B69 ; [*0E85.0020.0002] # SOUTH WEST TRIANGLE-HEADED ARROW
+2B6A ; [*0E86.0020.0002] # LEFTWARDS TRIANGLE-HEADED DASHED ARROW
+2B6B ; [*0E87.0020.0002] # UPWARDS TRIANGLE-HEADED DASHED ARROW
+2B6C ; [*0E88.0020.0002] # RIGHTWARDS TRIANGLE-HEADED DASHED ARROW
+2B6D ; [*0E89.0020.0002] # DOWNWARDS TRIANGLE-HEADED DASHED ARROW
+2B6E ; [*0E8A.0020.0002] # CLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROW
+2B6F ; [*0E8B.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED OPEN CIRCLE ARROW
+2B70 ; [*0E8C.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW TO BAR
+2B71 ; [*0E8D.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW TO BAR
+2B72 ; [*0E8E.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW TO BAR
+2B73 ; [*0E8F.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
+2B76 ; [*0E90.0020.0002] # NORTH WEST TRIANGLE-HEADED ARROW TO BAR
+2B77 ; [*0E91.0020.0002] # NORTH EAST TRIANGLE-HEADED ARROW TO BAR
+2B78 ; [*0E92.0020.0002] # SOUTH EAST TRIANGLE-HEADED ARROW TO BAR
+2B79 ; [*0E93.0020.0002] # SOUTH WEST TRIANGLE-HEADED ARROW TO BAR
+2B7A ; [*0E94.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE
+2B7B ; [*0E95.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE
+2B7C ; [*0E96.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE
+2B7D ; [*0E97.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH DOUBLE HORIZONTAL STROKE
+2B7E ; [*0E98.0020.0002] # HORIZONTAL TAB KEY
+2B7F ; [*0E99.0020.0002] # VERTICAL TAB KEY
+2B80 ; [*0E9A.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW OVER RIGHTWARDS TRIANGLE-HEADED ARROW
+2B81 ; [*0E9B.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW LEFTWARDS OF DOWNWARDS TRIANGLE-HEADED ARROW
+2B82 ; [*0E9C.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW OVER LEFTWARDS TRIANGLE-HEADED ARROW
+2B83 ; [*0E9D.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW LEFTWARDS OF UPWARDS TRIANGLE-HEADED ARROW
+2B84 ; [*0E9E.0020.0002] # LEFTWARDS TRIANGLE-HEADED PAIRED ARROWS
+2B85 ; [*0E9F.0020.0002] # UPWARDS TRIANGLE-HEADED PAIRED ARROWS
+2B86 ; [*0EA0.0020.0002] # RIGHTWARDS TRIANGLE-HEADED PAIRED ARROWS
+2B87 ; [*0EA1.0020.0002] # DOWNWARDS TRIANGLE-HEADED PAIRED ARROWS
+2B88 ; [*0EA2.0020.0002] # LEFTWARDS BLACK CIRCLED WHITE ARROW
+2B89 ; [*0EA3.0020.0002] # UPWARDS BLACK CIRCLED WHITE ARROW
+2B8A ; [*0EA4.0020.0002] # RIGHTWARDS BLACK CIRCLED WHITE ARROW
+2B8B ; [*0EA5.0020.0002] # DOWNWARDS BLACK CIRCLED WHITE ARROW
+2B8C ; [*0EA6.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED RIGHT U-SHAPED ARROW
+2B8D ; [*0EA7.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED BOTTOM U-SHAPED ARROW
+2B8E ; [*0EA8.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED LEFT U-SHAPED ARROW
+2B8F ; [*0EA9.0020.0002] # ANTICLOCKWISE TRIANGLE-HEADED TOP U-SHAPED ARROW
+2B90 ; [*0EAA.0020.0002] # RETURN LEFT
+2B91 ; [*0EAB.0020.0002] # RETURN RIGHT
+2B92 ; [*0EAC.0020.0002] # NEWLINE LEFT
+2B93 ; [*0EAD.0020.0002] # NEWLINE RIGHT
+2B94 ; [*0EAE.0020.0002] # FOUR CORNER ARROWS CIRCLING ANTICLOCKWISE
+2B95 ; [*0EAF.0020.0002] # RIGHTWARDS BLACK ARROW
+2B97 ; [*0EB0.0020.0002] # SYMBOL FOR TYPE A ELECTRONICS
+2B98 ; [*0EB1.0020.0002] # THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD
+2B99 ; [*0EB2.0020.0002] # THREE-D RIGHT-LIGHTED UPWARDS EQUILATERAL ARROWHEAD
+2B9A ; [*0EB3.0020.0002] # THREE-D TOP-LIGHTED RIGHTWARDS EQUILATERAL ARROWHEAD
+2B9B ; [*0EB4.0020.0002] # THREE-D LEFT-LIGHTED DOWNWARDS EQUILATERAL ARROWHEAD
+2B9C ; [*0EB5.0020.0002] # BLACK LEFTWARDS EQUILATERAL ARROWHEAD
+2B9D ; [*0EB6.0020.0002] # BLACK UPWARDS EQUILATERAL ARROWHEAD
+2B9E ; [*0EB7.0020.0002] # BLACK RIGHTWARDS EQUILATERAL ARROWHEAD
+2B9F ; [*0EB8.0020.0002] # BLACK DOWNWARDS EQUILATERAL ARROWHEAD
+2BA0 ; [*0EB9.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS
+2BA1 ; [*0EBA.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDS
+2BA2 ; [*0EBB.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS
+2BA3 ; [*0EBC.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP RIGHTWARDS
+2BA4 ; [*0EBD.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDS
+2BA5 ; [*0EBE.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP UPWARDS
+2BA6 ; [*0EBF.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS
+2BA7 ; [*0EC0.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS
+2BA8 ; [*0EC1.0020.0002] # BLACK CURVED DOWNWARDS AND LEFTWARDS ARROW
+2BA9 ; [*0EC2.0020.0002] # BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW
+2BAA ; [*0EC3.0020.0002] # BLACK CURVED UPWARDS AND LEFTWARDS ARROW
+2BAB ; [*0EC4.0020.0002] # BLACK CURVED UPWARDS AND RIGHTWARDS ARROW
+2BAC ; [*0EC5.0020.0002] # BLACK CURVED LEFTWARDS AND UPWARDS ARROW
+2BAD ; [*0EC6.0020.0002] # BLACK CURVED RIGHTWARDS AND UPWARDS ARROW
+2BAE ; [*0EC7.0020.0002] # BLACK CURVED LEFTWARDS AND DOWNWARDS ARROW
+2BAF ; [*0EC8.0020.0002] # BLACK CURVED RIGHTWARDS AND DOWNWARDS ARROW
+2BB0 ; [*0EC9.0020.0002] # RIBBON ARROW DOWN LEFT
+2BB1 ; [*0ECA.0020.0002] # RIBBON ARROW DOWN RIGHT
+2BB2 ; [*0ECB.0020.0002] # RIBBON ARROW UP LEFT
+2BB3 ; [*0ECC.0020.0002] # RIBBON ARROW UP RIGHT
+2BB4 ; [*0ECD.0020.0002] # RIBBON ARROW LEFT UP
+2BB5 ; [*0ECE.0020.0002] # RIBBON ARROW RIGHT UP
+2BB6 ; [*0ECF.0020.0002] # RIBBON ARROW LEFT DOWN
+2BB7 ; [*0ED0.0020.0002] # RIBBON ARROW RIGHT DOWN
+2BB8 ; [*0ED1.0020.0002] # UPWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BAR
+2BB9 ; [*0ED2.0020.0002] # UP ARROWHEAD IN A RECTANGLE BOX
+2BBA ; [*0ED3.0020.0002] # OVERLAPPING WHITE SQUARES
+2BBB ; [*0ED4.0020.0002] # OVERLAPPING WHITE AND BLACK SQUARES
+2BBC ; [*0ED5.0020.0002] # OVERLAPPING BLACK SQUARES
+2BBD ; [*0ED6.0020.0002] # BALLOT BOX WITH LIGHT X
+2BBE ; [*0ED7.0020.0002] # CIRCLED X
+2BBF ; [*0ED8.0020.0002] # CIRCLED BOLD X
+2BC0 ; [*0ED9.0020.0002] # BLACK SQUARE CENTRED
+2BC1 ; [*0EDA.0020.0002] # BLACK DIAMOND CENTRED
+2BC2 ; [*0EDB.0020.0002] # TURNED BLACK PENTAGON
+2BC3 ; [*0EDC.0020.0002] # HORIZONTAL BLACK OCTAGON
+2BC4 ; [*0EDD.0020.0002] # BLACK OCTAGON
+2BC5 ; [*0EDE.0020.0002] # BLACK MEDIUM UP-POINTING TRIANGLE CENTRED
+2BC6 ; [*0EDF.0020.0002] # BLACK MEDIUM DOWN-POINTING TRIANGLE CENTRED
+2BC7 ; [*0EE0.0020.0002] # BLACK MEDIUM LEFT-POINTING TRIANGLE CENTRED
+2BC8 ; [*0EE1.0020.0002] # BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
+2BC9 ; [*0EE2.0020.0002] # NEPTUNE FORM TWO
+2BCA ; [*0EE3.0020.0002] # TOP HALF BLACK CIRCLE
+2BCB ; [*0EE4.0020.0002] # BOTTOM HALF BLACK CIRCLE
+2BCC ; [*0EE5.0020.0002] # LIGHT FOUR POINTED BLACK CUSP
+2BCD ; [*0EE6.0020.0002] # ROTATED LIGHT FOUR POINTED BLACK CUSP
+2BCE ; [*0EE7.0020.0002] # WHITE FOUR POINTED CUSP
+2BCF ; [*0EE8.0020.0002] # ROTATED WHITE FOUR POINTED CUSP
+2BD0 ; [*0EE9.0020.0002] # SQUARE POSITION INDICATOR
+2BD1 ; [*0EEA.0020.0002] # UNCERTAINTY SIGN
+2BD2 ; [*0EEB.0020.0002] # GROUP MARK
+2BD3 ; [*0EEC.0020.0002] # PLUTO FORM TWO
+2BD4 ; [*0EED.0020.0002] # PLUTO FORM THREE
+2BD5 ; [*0EEE.0020.0002] # PLUTO FORM FOUR
+2BD6 ; [*0EEF.0020.0002] # PLUTO FORM FIVE
+2BD7 ; [*0EF0.0020.0002] # TRANSPLUTO
+2BD8 ; [*0EF1.0020.0002] # PROSERPINA
+2BD9 ; [*0EF2.0020.0002] # ASTRAEA
+2BDA ; [*0EF3.0020.0002] # HYGIEA
+2BDB ; [*0EF4.0020.0002] # PHOLUS
+2BDC ; [*0EF5.0020.0002] # NESSUS
+2BDD ; [*0EF6.0020.0002] # WHITE MOON SELENA
+2BDE ; [*0EF7.0020.0002] # BLACK DIAMOND ON CROSS
+2BDF ; [*0EF8.0020.0002] # TRUE LIGHT MOON ARTA
+2BE0 ; [*0EF9.0020.0002] # CUPIDO
+2BE1 ; [*0EFA.0020.0002] # HADES
+2BE2 ; [*0EFB.0020.0002] # ZEUS
+2BE3 ; [*0EFC.0020.0002] # KRONOS
+2BE4 ; [*0EFD.0020.0002] # APOLLON
+2BE5 ; [*0EFE.0020.0002] # ADMETOS
+2BE6 ; [*0EFF.0020.0002] # VULCANUS
+2BE7 ; [*0F00.0020.0002] # POSEIDON
+2BE8 ; [*0F01.0020.0002] # LEFT HALF BLACK STAR
+2BE9 ; [*0F02.0020.0002] # RIGHT HALF BLACK STAR
+2BEA ; [*0F03.0020.0002] # STAR WITH LEFT HALF BLACK
+2BEB ; [*0F04.0020.0002] # STAR WITH RIGHT HALF BLACK
+2BEC ; [*0F05.0020.0002] # LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
+2BED ; [*0F06.0020.0002] # UPWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
+2BEE ; [*0F07.0020.0002] # RIGHTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
+2BEF ; [*0F08.0020.0002] # DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
+2BF0 ; [*0F09.0020.0002] # ERIS FORM ONE
+2BF1 ; [*0F0A.0020.0002] # ERIS FORM TWO
+2BF2 ; [*0F0B.0020.0002] # SEDNA
+2BF3 ; [*0F0C.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL VIGINTILE
+2BF4 ; [*0F0D.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL NOVILE
+2BF5 ; [*0F0E.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL QUINTILE
+2BF6 ; [*0F0F.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL BINOVILE
+2BF7 ; [*0F10.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL SENTAGON
+2BF8 ; [*0F11.0020.0002] # RUSSIAN ASTROLOGICAL SYMBOL TREDECILE
+2BF9 ; [*0F12.0020.0002] # EQUALS SIGN WITH INFINITY BELOW
+2BFA ; [*0F13.0020.0002] # UNITED SYMBOL
+2BFB ; [*0F14.0020.0002] # SEPARATED SYMBOL
+2BFC ; [*0F15.0020.0002] # DOUBLED SYMBOL
+2BFD ; [*0F16.0020.0002] # PASSED SYMBOL
+2BFE ; [*0F17.0020.0002] # REVERSED RIGHT ANGLE
+2BFF ; [*0F18.0020.0002] # HELLSCHREIBER PAUSE SYMBOL
+2CE5 ; [*0F19.0020.0002] # COPTIC SYMBOL MI RO
+2CE6 ; [*0F1A.0020.0002] # COPTIC SYMBOL PI RO
+2CE7 ; [*0F1B.0020.0002] # COPTIC SYMBOL STAUROS
+2CE8 ; [*0F1C.0020.0002] # COPTIC SYMBOL TAU RO
+2CE9 ; [*0F1D.0020.0002] # COPTIC SYMBOL KHI RO
+2CEA ; [*0F1E.0020.0002] # COPTIC SYMBOL SHIMA SIMA
+2CF9 ; [*028B.0020.0002] # COPTIC OLD NUBIAN FULL STOP
+2CFA ; [*0278.0020.0002] # COPTIC OLD NUBIAN DIRECT QUESTION MARK
+2CFB ; [*0279.0020.0002] # COPTIC OLD NUBIAN INDIRECT QUESTION MARK
+2CFC ; [*0311.0020.0002] # COPTIC OLD NUBIAN VERSE DIVIDER
+2CFD ; [*1E89.0020.0002] # COPTIC FRACTION ONE HALF
+2CFE ; [*028C.0020.0002] # COPTIC FULL STOP
+2CFF ; [*0312.0020.0002] # COPTIC MORPHOLOGICAL DIVIDER
+2D70 ; [*0467.0020.0002] # TIFINAGH SEPARATOR MARK
+2D7F ; [.0000.0000.0000] # TIFINAGH CONSONANT JOINER
+2E00 ; [*03DF.0020.0002] # RIGHT ANGLE SUBSTITUTION MARKER
+2E01 ; [*03E0.0020.0002] # RIGHT ANGLE DOTTED SUBSTITUTION MARKER
+2E02 ; [*0378.0020.0002] # LEFT SUBSTITUTION BRACKET
+2E03 ; [*0379.0020.0002] # RIGHT SUBSTITUTION BRACKET
+2E04 ; [*037A.0020.0002] # LEFT DOTTED SUBSTITUTION BRACKET
+2E05 ; [*037B.0020.0002] # RIGHT DOTTED SUBSTITUTION BRACKET
+2E06 ; [*03E1.0020.0002] # RAISED INTERPOLATION MARKER
+2E07 ; [*03E2.0020.0002] # RAISED DOTTED INTERPOLATION MARKER
+2E08 ; [*03E3.0020.0002] # DOTTED TRANSPOSITION MARKER
+2E09 ; [*037C.0020.0002] # LEFT TRANSPOSITION BRACKET
+2E0A ; [*037D.0020.0002] # RIGHT TRANSPOSITION BRACKET
+2E0B ; [*03E4.0020.0002] # RAISED SQUARE
+2E0C ; [*037E.0020.0002] # LEFT RAISED OMISSION BRACKET
+2E0D ; [*037F.0020.0002] # RIGHT RAISED OMISSION BRACKET
+2E0E ; [*03E5.0020.0002] # EDITORIAL CORONIS
+2E0F ; [*03E6.0020.0002] # PARAGRAPHOS
+2E10 ; [*03E7.0020.0002] # FORKED PARAGRAPHOS
+2E11 ; [*03E8.0020.0002] # REVERSED FORKED PARAGRAPHOS
+2E12 ; [*03E9.0020.0002] # HYPODIASTOLE
+2E13 ; [*03EA.0020.0002] # DOTTED OBELOS
+2E14 ; [*03EB.0020.0002] # DOWNWARDS ANCORA
+2E15 ; [*03EC.0020.0002] # UPWARDS ANCORA
+2E16 ; [*03ED.0020.0002] # DOTTED RIGHT-POINTING ANGLE
+2E17 ; [*021C.0020.0002] # DOUBLE OBLIQUE HYPHEN
+2E18 ; [*0280.0020.0002] # INVERTED INTERROBANG
+2E19 ; [*0313.0020.0002] # PALM BRANCH
+2E1A ; [*03EE.0020.0002] # HYPHEN WITH DIAERESIS
+2E1B ; [*03EF.0020.0002] # TILDE WITH RING ABOVE
+2E1C ; [*0380.0020.0002] # LEFT LOW PARAPHRASE BRACKET
+2E1D ; [*0381.0020.0002] # RIGHT LOW PARAPHRASE BRACKET
+2E1E ; [*03F0.0020.0002] # TILDE WITH DOT ABOVE
+2E1F ; [*03F1.0020.0002] # TILDE WITH DOT BELOW
+2E20 ; [*0382.0020.0002] # LEFT VERTICAL BAR WITH QUILL
+2E21 ; [*0383.0020.0002] # RIGHT VERTICAL BAR WITH QUILL
+2E22 ; [*0384.0020.0002] # TOP LEFT HALF BRACKET
+2E23 ; [*0385.0020.0002] # TOP RIGHT HALF BRACKET
+2E24 ; [*0386.0020.0002] # BOTTOM LEFT HALF BRACKET
+2E25 ; [*0387.0020.0002] # BOTTOM RIGHT HALF BRACKET
+2E26 ; [*0388.0020.0002] # LEFT SIDEWAYS U BRACKET
+2E27 ; [*0389.0020.0002] # RIGHT SIDEWAYS U BRACKET
+2E28 ; [*038A.0020.0002] # LEFT DOUBLE PARENTHESIS
+2E29 ; [*038B.0020.0002] # RIGHT DOUBLE PARENTHESIS
+2E2A ; [*030C.0020.0002] # TWO DOTS OVER ONE DOT PUNCTUATION
+2E2B ; [*030D.0020.0002] # ONE DOT OVER TWO DOTS PUNCTUATION
+2E2C ; [*030E.0020.0002] # SQUARED FOUR DOT PUNCTUATION
+2E2D ; [*030F.0020.0002] # FIVE DOT MARK
+2E2E ; [*0271.0020.0002] # REVERSED QUESTION MARK
+2E30 ; [*028D.0020.0002] # RING POINT
+2E31 ; [*0297.0020.0002] # WORD SEPARATOR MIDDLE DOT
+2E32 ; [*0226.0020.0002] # TURNED COMMA
+2E33 ; [*0298.0020.0002] # RAISED DOT
+2E34 ; [*0225.0020.0002] # RAISED COMMA
+2E35 ; [*023E.0020.0002] # TURNED SEMICOLON
+2E36 ; [*03C9.0020.0002] # DAGGER WITH LEFT GUARD
+2E37 ; [*03CA.0020.0002] # DAGGER WITH RIGHT GUARD
+2E38 ; [*03CB.0020.0002] # TURNED DAGGER
+2E39 ; [*03AF.0020.0002] # TOP HALF SECTION SIGN
+2E3A ; [*0218.0020.0002] # TWO-EM DASH
+2E3B ; [*0219.0020.0002] # THREE-EM DASH
+2E3C ; [*028E.0020.0002] # STENOGRAPHIC FULL STOP
+2E3D ; [*0310.0020.0002] # VERTICAL SIX DOTS
+2E3E ; [*03A9.0020.0002] # WIGGLY VERTICAL LINE
+2E3F ; [*03B3.0020.0002] # CAPITULUM
+2E40 ; [*021D.0020.0002] # DOUBLE HYPHEN
+2E41 ; [*0227.0020.0002] # REVERSED COMMA
+2E42 ; [*032E.0020.0002] # DOUBLE LOW-REVERSED-9 QUOTATION MARK
+2E43 ; [*021B.0020.0002] # DASH WITH LEFT UPTURN
+2E44 ; [*03F2.0020.0002] # DOUBLE SUSPENSION MARK
+2E45 ; [*03F3.0020.0002] # INVERTED LOW KAVYKA
+2E46 ; [*03F4.0020.0002] # INVERTED LOW KAVYKA WITH KAVYKA ABOVE
+2E47 ; [*03F5.0020.0002] # LOW KAVYKA
+2E48 ; [*03F6.0020.0002] # LOW KAVYKA WITH DOT
+2E49 ; [*0240.0020.0002] # DOUBLE STACKED COMMA
+2E4A ; [*03BC.0020.0002] # DOTTED SOLIDUS
+2E4B ; [*03CC.0020.0002] # TRIPLE DAGGER
+2E4C ; [*0228.0020.0002] # MEDIEVAL COMMA
+2E4D ; [*03B2.0020.0002] # PARAGRAPHUS MARK
+2E4E ; [*0229.0020.0002] # PUNCTUS ELEVATUS MARK
+2E4F ; [*022A.0020.0002] # CORNISH VERSE DIVIDER
+2E50 ; [*0B94.0020.0002] # CROSS PATTY WITH RIGHT CROSSBAR
+2E51 ; [*0B95.0020.0002] # CROSS PATTY WITH LEFT CROSSBAR
+2E52 ; [*03BF.0020.0002] # TIRONIAN SIGN CAPITAL ET
+2E53 ; [*026A.0020.0002] # MEDIEVAL EXCLAMATION MARK
+2E54 ; [*0272.0020.0002] # MEDIEVAL QUESTION MARK
+2E55 ; [*038C.0020.0002] # LEFT SQUARE BRACKET WITH STROKE
+2E56 ; [*038D.0020.0002] # RIGHT SQUARE BRACKET WITH STROKE
+2E57 ; [*038E.0020.0002] # LEFT SQUARE BRACKET WITH DOUBLE STROKE
+2E58 ; [*038F.0020.0002] # RIGHT SQUARE BRACKET WITH DOUBLE STROKE
+2E59 ; [*0390.0020.0002] # TOP HALF LEFT PARENTHESIS
+2E5A ; [*0391.0020.0002] # TOP HALF RIGHT PARENTHESIS
+2E5B ; [*0392.0020.0002] # BOTTOM HALF LEFT PARENTHESIS
+2E5C ; [*0393.0020.0002] # BOTTOM HALF RIGHT PARENTHESIS
+2E5D ; [*021E.0020.0002] # OBLIQUE HYPHEN
+2FF0 ; [*1DED.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
+2FF1 ; [*1DEE.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW
+2FF2 ; [*1DEF.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT
+2FF3 ; [*1DF0.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW
+2FF4 ; [*1DF1.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
+2FF5 ; [*1DF2.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE
+2FF6 ; [*1DF3.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
+2FF7 ; [*1DF4.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT
+2FF8 ; [*1DF5.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
+2FF9 ; [*1DF6.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT
+2FFA ; [*1DF7.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT
+2FFB ; [*1DF8.0020.0002] # IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+3000 ; [*0209.0020.0003] # IDEOGRAPHIC SPACE
+3001 ; [*0237.0020.0002] # IDEOGRAPHIC COMMA
+3002 ; [*0295.0020.0002] # IDEOGRAPHIC FULL STOP
+3003 ; [*03D5.0020.0002] # DITTO MARK
+3004 ; [*1E1D.0020.0002] # JAPANESE INDUSTRIAL STANDARD SYMBOL
+3008 ; [*0394.0020.0002] # LEFT ANGLE BRACKET
+3009 ; [*0395.0020.0002] # RIGHT ANGLE BRACKET
+300A ; [*0396.0020.0002] # LEFT DOUBLE ANGLE BRACKET
+300B ; [*0397.0020.0002] # RIGHT DOUBLE ANGLE BRACKET
+300C ; [*0398.0020.0002] # LEFT CORNER BRACKET
+300D ; [*0399.0020.0002] # RIGHT CORNER BRACKET
+300E ; [*039A.0020.0002] # LEFT WHITE CORNER BRACKET
+300F ; [*039B.0020.0002] # RIGHT WHITE CORNER BRACKET
+3010 ; [*039C.0020.0002] # LEFT BLACK LENTICULAR BRACKET
+3011 ; [*039D.0020.0002] # RIGHT BLACK LENTICULAR BRACKET
+3012 ; [*1E1E.0020.0002] # POSTAL MARK
+3013 ; [*1E1F.0020.0002] # GETA MARK
+3014 ; [*039E.0020.0002] # LEFT TORTOISE SHELL BRACKET
+3015 ; [*039F.0020.0002] # RIGHT TORTOISE SHELL BRACKET
+3016 ; [*03A0.0020.0002] # LEFT WHITE LENTICULAR BRACKET
+3017 ; [*03A1.0020.0002] # RIGHT WHITE LENTICULAR BRACKET
+3018 ; [*03A2.0020.0002] # LEFT WHITE TORTOISE SHELL BRACKET
+3019 ; [*03A3.0020.0002] # RIGHT WHITE TORTOISE SHELL BRACKET
+301A ; [*03A4.0020.0002] # LEFT WHITE SQUARE BRACKET
+301B ; [*03A5.0020.0002] # RIGHT WHITE SQUARE BRACKET
+301C ; [*021F.0020.0002] # WAVE DASH
+301D ; [*032F.0020.0002] # REVERSED DOUBLE PRIME QUOTATION MARK
+301E ; [*0330.0020.0002] # DOUBLE PRIME QUOTATION MARK
+301F ; [*0331.0020.0002] # LOW DOUBLE PRIME QUOTATION MARK
+3020 ; [*1E20.0020.0002] # POSTAL MARK FACE
+3030 ; [*0220.0020.0002] # WAVY DASH
+3036 ; [*1E1E.0020.0004] # CIRCLED POSTAL MARK
+3037 ; [*1E21.0020.0002] # IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+303D ; [*03D6.0020.0002] # PART ALTERNATION MARK
+303E ; [*1E22.0020.0002] # IDEOGRAPHIC VARIATION INDICATOR
+303F ; [*1E23.0020.0002] # IDEOGRAPHIC HALF FILL SPACE
+309B ; [*04D8.0020.0002] # KATAKANA-HIRAGANA VOICED SOUND MARK
+309C ; [*04D9.0020.0002] # KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+30A0 ; [*0221.0020.0002] # KATAKANA-HIRAGANA DOUBLE HYPHEN
+30FB ; [*0222.0020.0002] # KATAKANA MIDDLE DOT
+3190 ; [*1E24.0020.0002] # IDEOGRAPHIC ANNOTATION LINKING MARK
+3191 ; [*1E25.0020.0002] # IDEOGRAPHIC ANNOTATION REVERSE MARK
+31C0 ; [*1DF9.0020.0002] # CJK STROKE T
+31C1 ; [*1DFA.0020.0002] # CJK STROKE WG
+31C2 ; [*1DFB.0020.0002] # CJK STROKE XG
+31C3 ; [*1DFC.0020.0002] # CJK STROKE BXG
+31C4 ; [*1DFD.0020.0002] # CJK STROKE SW
+31C5 ; [*1DFE.0020.0002] # CJK STROKE HZZ
+31C6 ; [*1DFF.0020.0002] # CJK STROKE HZG
+31C7 ; [*1E00.0020.0002] # CJK STROKE HP
+31C8 ; [*1E01.0020.0002] # CJK STROKE HZWG
+31C9 ; [*1E02.0020.0002] # CJK STROKE SZWG
+31CA ; [*1E03.0020.0002] # CJK STROKE HZT
+31CB ; [*1E04.0020.0002] # CJK STROKE HZZP
+31CC ; [*1E05.0020.0002] # CJK STROKE HPWG
+31CD ; [*1E06.0020.0002] # CJK STROKE HZW
+31CE ; [*1E07.0020.0002] # CJK STROKE HZZZ
+31CF ; [*1E08.0020.0002] # CJK STROKE N
+31D0 ; [*1E09.0020.0002] # CJK STROKE H
+31D1 ; [*1E0A.0020.0002] # CJK STROKE S
+31D2 ; [*1E0B.0020.0002] # CJK STROKE P
+31D3 ; [*1E0C.0020.0002] # CJK STROKE SP
+31D4 ; [*1E0D.0020.0002] # CJK STROKE D
+31D5 ; [*1E0E.0020.0002] # CJK STROKE HZ
+31D6 ; [*1E0F.0020.0002] # CJK STROKE HG
+31D7 ; [*1E10.0020.0002] # CJK STROKE SZ
+31D8 ; [*1E11.0020.0002] # CJK STROKE SWZ
+31D9 ; [*1E12.0020.0002] # CJK STROKE ST
+31DA ; [*1E13.0020.0002] # CJK STROKE SG
+31DB ; [*1E14.0020.0002] # CJK STROKE PD
+31DC ; [*1E15.0020.0002] # CJK STROKE PZ
+31DD ; [*1E16.0020.0002] # CJK STROKE TN
+31DE ; [*1E17.0020.0002] # CJK STROKE SZZ
+31DF ; [*1E18.0020.0002] # CJK STROKE SWG
+31E0 ; [*1E19.0020.0002] # CJK STROKE HXWG
+31E1 ; [*1E1A.0020.0002] # CJK STROKE HZZZG
+31E2 ; [*1E1B.0020.0002] # CJK STROKE PG
+31E3 ; [*1E1C.0020.0002] # CJK STROKE Q
+327F ; [*1E26.0020.0002] # KOREAN STANDARD SYMBOL
+4DC0 ; [*102D.0020.0002] # HEXAGRAM FOR THE CREATIVE HEAVEN
+4DC1 ; [*102E.0020.0002] # HEXAGRAM FOR THE RECEPTIVE EARTH
+4DC2 ; [*102F.0020.0002] # HEXAGRAM FOR DIFFICULTY AT THE BEGINNING
+4DC3 ; [*1030.0020.0002] # HEXAGRAM FOR YOUTHFUL FOLLY
+4DC4 ; [*1031.0020.0002] # HEXAGRAM FOR WAITING
+4DC5 ; [*1032.0020.0002] # HEXAGRAM FOR CONFLICT
+4DC6 ; [*1033.0020.0002] # HEXAGRAM FOR THE ARMY
+4DC7 ; [*1034.0020.0002] # HEXAGRAM FOR HOLDING TOGETHER
+4DC8 ; [*1035.0020.0002] # HEXAGRAM FOR SMALL TAMING
+4DC9 ; [*1036.0020.0002] # HEXAGRAM FOR TREADING
+4DCA ; [*1037.0020.0002] # HEXAGRAM FOR PEACE
+4DCB ; [*1038.0020.0002] # HEXAGRAM FOR STANDSTILL
+4DCC ; [*1039.0020.0002] # HEXAGRAM FOR FELLOWSHIP
+4DCD ; [*103A.0020.0002] # HEXAGRAM FOR GREAT POSSESSION
+4DCE ; [*103B.0020.0002] # HEXAGRAM FOR MODESTY
+4DCF ; [*103C.0020.0002] # HEXAGRAM FOR ENTHUSIASM
+4DD0 ; [*103D.0020.0002] # HEXAGRAM FOR FOLLOWING
+4DD1 ; [*103E.0020.0002] # HEXAGRAM FOR WORK ON THE DECAYED
+4DD2 ; [*103F.0020.0002] # HEXAGRAM FOR APPROACH
+4DD3 ; [*1040.0020.0002] # HEXAGRAM FOR CONTEMPLATION
+4DD4 ; [*1041.0020.0002] # HEXAGRAM FOR BITING THROUGH
+4DD5 ; [*1042.0020.0002] # HEXAGRAM FOR GRACE
+4DD6 ; [*1043.0020.0002] # HEXAGRAM FOR SPLITTING APART
+4DD7 ; [*1044.0020.0002] # HEXAGRAM FOR RETURN
+4DD8 ; [*1045.0020.0002] # HEXAGRAM FOR INNOCENCE
+4DD9 ; [*1046.0020.0002] # HEXAGRAM FOR GREAT TAMING
+4DDA ; [*1047.0020.0002] # HEXAGRAM FOR MOUTH CORNERS
+4DDB ; [*1048.0020.0002] # HEXAGRAM FOR GREAT PREPONDERANCE
+4DDC ; [*1049.0020.0002] # HEXAGRAM FOR THE ABYSMAL WATER
+4DDD ; [*104A.0020.0002] # HEXAGRAM FOR THE CLINGING FIRE
+4DDE ; [*104B.0020.0002] # HEXAGRAM FOR INFLUENCE
+4DDF ; [*104C.0020.0002] # HEXAGRAM FOR DURATION
+4DE0 ; [*104D.0020.0002] # HEXAGRAM FOR RETREAT
+4DE1 ; [*104E.0020.0002] # HEXAGRAM FOR GREAT POWER
+4DE2 ; [*104F.0020.0002] # HEXAGRAM FOR PROGRESS
+4DE3 ; [*1050.0020.0002] # HEXAGRAM FOR DARKENING OF THE LIGHT
+4DE4 ; [*1051.0020.0002] # HEXAGRAM FOR THE FAMILY
+4DE5 ; [*1052.0020.0002] # HEXAGRAM FOR OPPOSITION
+4DE6 ; [*1053.0020.0002] # HEXAGRAM FOR OBSTRUCTION
+4DE7 ; [*1054.0020.0002] # HEXAGRAM FOR DELIVERANCE
+4DE8 ; [*1055.0020.0002] # HEXAGRAM FOR DECREASE
+4DE9 ; [*1056.0020.0002] # HEXAGRAM FOR INCREASE
+4DEA ; [*1057.0020.0002] # HEXAGRAM FOR BREAKTHROUGH
+4DEB ; [*1058.0020.0002] # HEXAGRAM FOR COMING TO MEET
+4DEC ; [*1059.0020.0002] # HEXAGRAM FOR GATHERING TOGETHER
+4DED ; [*105A.0020.0002] # HEXAGRAM FOR PUSHING UPWARD
+4DEE ; [*105B.0020.0002] # HEXAGRAM FOR OPPRESSION
+4DEF ; [*105C.0020.0002] # HEXAGRAM FOR THE WELL
+4DF0 ; [*105D.0020.0002] # HEXAGRAM FOR REVOLUTION
+4DF1 ; [*105E.0020.0002] # HEXAGRAM FOR THE CAULDRON
+4DF2 ; [*105F.0020.0002] # HEXAGRAM FOR THE AROUSING THUNDER
+4DF3 ; [*1060.0020.0002] # HEXAGRAM FOR THE KEEPING STILL MOUNTAIN
+4DF4 ; [*1061.0020.0002] # HEXAGRAM FOR DEVELOPMENT
+4DF5 ; [*1062.0020.0002] # HEXAGRAM FOR THE MARRYING MAIDEN
+4DF6 ; [*1063.0020.0002] # HEXAGRAM FOR ABUNDANCE
+4DF7 ; [*1064.0020.0002] # HEXAGRAM FOR THE WANDERER
+4DF8 ; [*1065.0020.0002] # HEXAGRAM FOR THE GENTLE WIND
+4DF9 ; [*1066.0020.0002] # HEXAGRAM FOR THE JOYOUS LAKE
+4DFA ; [*1067.0020.0002] # HEXAGRAM FOR DISPERSION
+4DFB ; [*1068.0020.0002] # HEXAGRAM FOR LIMITATION
+4DFC ; [*1069.0020.0002] # HEXAGRAM FOR INNER TRUTH
+4DFD ; [*106A.0020.0002] # HEXAGRAM FOR SMALL PREPONDERANCE
+4DFE ; [*106B.0020.0002] # HEXAGRAM FOR AFTER COMPLETION
+4DFF ; [*106C.0020.0002] # HEXAGRAM FOR BEFORE COMPLETION
+A490 ; [*10C4.0020.0002] # YI RADICAL QOT
+A491 ; [*10C5.0020.0002] # YI RADICAL LI
+A492 ; [*10C6.0020.0002] # YI RADICAL KIT
+A493 ; [*10C7.0020.0002] # YI RADICAL NYIP
+A494 ; [*10C8.0020.0002] # YI RADICAL CYP
+A495 ; [*10C9.0020.0002] # YI RADICAL SSI
+A496 ; [*10CA.0020.0002] # YI RADICAL GGOP
+A497 ; [*10CB.0020.0002] # YI RADICAL GEP
+A498 ; [*10CC.0020.0002] # YI RADICAL MI
+A499 ; [*10CD.0020.0002] # YI RADICAL HXIT
+A49A ; [*10CE.0020.0002] # YI RADICAL LYR
+A49B ; [*10CF.0020.0002] # YI RADICAL BBUT
+A49C ; [*10D0.0020.0002] # YI RADICAL MOP
+A49D ; [*10D1.0020.0002] # YI RADICAL YO
+A49E ; [*10D2.0020.0002] # YI RADICAL PUT
+A49F ; [*10D3.0020.0002] # YI RADICAL HXUO
+A4A0 ; [*10D4.0020.0002] # YI RADICAL TAT
+A4A1 ; [*10D5.0020.0002] # YI RADICAL GA
+A4A2 ; [*10D6.0020.0002] # YI RADICAL ZUP
+A4A3 ; [*10D7.0020.0002] # YI RADICAL CYT
+A4A4 ; [*10D8.0020.0002] # YI RADICAL DDUR
+A4A5 ; [*10D9.0020.0002] # YI RADICAL BUR
+A4A6 ; [*10DA.0020.0002] # YI RADICAL GGUO
+A4A7 ; [*10DB.0020.0002] # YI RADICAL NYOP
+A4A8 ; [*10DC.0020.0002] # YI RADICAL TU
+A4A9 ; [*10DD.0020.0002] # YI RADICAL OP
+A4AA ; [*10DE.0020.0002] # YI RADICAL JJUT
+A4AB ; [*10DF.0020.0002] # YI RADICAL ZOT
+A4AC ; [*10E0.0020.0002] # YI RADICAL PYT
+A4AD ; [*10E1.0020.0002] # YI RADICAL HMO
+A4AE ; [*10E2.0020.0002] # YI RADICAL YIT
+A4AF ; [*10E3.0020.0002] # YI RADICAL VUR
+A4B0 ; [*10E4.0020.0002] # YI RADICAL SHY
+A4B1 ; [*10E5.0020.0002] # YI RADICAL VEP
+A4B2 ; [*10E6.0020.0002] # YI RADICAL ZA
+A4B3 ; [*10E7.0020.0002] # YI RADICAL JO
+A4B4 ; [*10E8.0020.0002] # YI RADICAL NZUP
+A4B5 ; [*10E9.0020.0002] # YI RADICAL JJY
+A4B6 ; [*10EA.0020.0002] # YI RADICAL GOT
+A4B7 ; [*10EB.0020.0002] # YI RADICAL JJIE
+A4B8 ; [*10EC.0020.0002] # YI RADICAL WO
+A4B9 ; [*10ED.0020.0002] # YI RADICAL DU
+A4BA ; [*10EE.0020.0002] # YI RADICAL SHUR
+A4BB ; [*10EF.0020.0002] # YI RADICAL LIE
+A4BC ; [*10F0.0020.0002] # YI RADICAL CY
+A4BD ; [*10F1.0020.0002] # YI RADICAL CUOP
+A4BE ; [*10F2.0020.0002] # YI RADICAL CIP
+A4BF ; [*10F3.0020.0002] # YI RADICAL HXOP
+A4C0 ; [*10F4.0020.0002] # YI RADICAL SHAT
+A4C1 ; [*10F5.0020.0002] # YI RADICAL ZUR
+A4C2 ; [*10F6.0020.0002] # YI RADICAL SHOP
+A4C3 ; [*10F7.0020.0002] # YI RADICAL CHE
+A4C4 ; [*10F8.0020.0002] # YI RADICAL ZZIET
+A4C5 ; [*10F9.0020.0002] # YI RADICAL NBIE
+A4C6 ; [*10FA.0020.0002] # YI RADICAL KE
+A4FE ; [*0233.0020.0002] # LISU PUNCTUATION COMMA
+A4FF ; [*028F.0020.0002] # LISU PUNCTUATION FULL STOP
+A60D ; [*0234.0020.0002] # VAI COMMA
+A60E ; [*0290.0020.0002] # VAI FULL STOP
+A60F ; [*027A.0020.0002] # VAI QUESTION MARK
+A670 ; [.0000.0000.0000] # COMBINING CYRILLIC TEN MILLIONS SIGN
+A671 ; [.0000.0000.0000] # COMBINING CYRILLIC HUNDRED MILLIONS SIGN
+A672 ; [.0000.0000.0000] # COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+A673 ; [*03B9.0020.0002] # SLAVONIC ASTERISK
+A67E ; [*03F7.0020.0002] # CYRILLIC KAVYKA
+A6F2 ; [*02E6.0020.0002] # BAMUM NJAEMLI
+A6F3 ; [*0291.0020.0002] # BAMUM FULL STOP
+A6F4 ; [*0267.0020.0002] # BAMUM COLON
+A6F5 ; [*0235.0020.0002] # BAMUM COMMA
+A6F6 ; [*023F.0020.0002] # BAMUM SEMICOLON
+A6F7 ; [*027B.0020.0002] # BAMUM QUESTION MARK
+A700 ; [*0519.0020.0002] # MODIFIER LETTER CHINESE TONE YIN PING
+A701 ; [*051A.0020.0002] # MODIFIER LETTER CHINESE TONE YANG PING
+A702 ; [*051B.0020.0002] # MODIFIER LETTER CHINESE TONE YIN SHANG
+A703 ; [*051C.0020.0002] # MODIFIER LETTER CHINESE TONE YANG SHANG
+A704 ; [*051D.0020.0002] # MODIFIER LETTER CHINESE TONE YIN QU
+A705 ; [*051E.0020.0002] # MODIFIER LETTER CHINESE TONE YANG QU
+A706 ; [*051F.0020.0002] # MODIFIER LETTER CHINESE TONE YIN RU
+A707 ; [*0520.0020.0002] # MODIFIER LETTER CHINESE TONE YANG RU
+A708 ; [*0521.0020.0002] # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR
+A709 ; [*0522.0020.0002] # MODIFIER LETTER HIGH DOTTED TONE BAR
+A70A ; [*0523.0020.0002] # MODIFIER LETTER MID DOTTED TONE BAR
+A70B ; [*0524.0020.0002] # MODIFIER LETTER LOW DOTTED TONE BAR
+A70C ; [*0525.0020.0002] # MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR
+A70D ; [*0526.0020.0002] # MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR
+A70E ; [*0527.0020.0002] # MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR
+A70F ; [*0528.0020.0002] # MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR
+A710 ; [*0529.0020.0002] # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR
+A711 ; [*052A.0020.0002] # MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR
+A712 ; [*052B.0020.0002] # MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR
+A713 ; [*052C.0020.0002] # MODIFIER LETTER HIGH LEFT-STEM TONE BAR
+A714 ; [*052D.0020.0002] # MODIFIER LETTER MID LEFT-STEM TONE BAR
+A715 ; [*052E.0020.0002] # MODIFIER LETTER LOW LEFT-STEM TONE BAR
+A716 ; [*052F.0020.0002] # MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+A717 ; [*0530.0020.0002] # MODIFIER LETTER DOT VERTICAL BAR
+A718 ; [*0531.0020.0002] # MODIFIER LETTER DOT SLASH
+A719 ; [*0532.0020.0002] # MODIFIER LETTER DOT HORIZONTAL BAR
+A71A ; [*0533.0020.0002] # MODIFIER LETTER LOWER RIGHT CORNER ANGLE
+A71B ; [*0534.0020.0002] # MODIFIER LETTER RAISED UP ARROW
+A71C ; [*0535.0020.0002] # MODIFIER LETTER RAISED DOWN ARROW
+A71D ; [*0536.0020.0002] # MODIFIER LETTER RAISED EXCLAMATION MARK
+A71E ; [*0537.0020.0002] # MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK
+A71F ; [*0538.0020.0002] # MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+A720 ; [*0539.0020.0002] # MODIFIER LETTER STRESS AND HIGH TONE
+A721 ; [*053A.0020.0002] # MODIFIER LETTER STRESS AND LOW TONE
+A788 ; [*053B.0020.0002] # MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+A789 ; [*053C.0020.0002] # MODIFIER LETTER COLON
+A78A ; [*053D.0020.0002] # MODIFIER LETTER SHORT EQUALS SIGN
+A828 ; [*05A3.0020.0002] # SYLOTI NAGRI POETRY MARK-1
+A829 ; [*05A4.0020.0002] # SYLOTI NAGRI POETRY MARK-2
+A82A ; [*05A5.0020.0002] # SYLOTI NAGRI POETRY MARK-3
+A82B ; [*05A6.0020.0002] # SYLOTI NAGRI POETRY MARK-4
+A830 ; [*1E34.0020.0002] # NORTH INDIC FRACTION ONE QUARTER
+A831 ; [*1E35.0020.0002] # NORTH INDIC FRACTION ONE HALF
+A832 ; [*1E36.0020.0002] # NORTH INDIC FRACTION THREE QUARTERS
+A833 ; [*1E37.0020.0002] # NORTH INDIC FRACTION ONE SIXTEENTH
+A834 ; [*1E38.0020.0002] # NORTH INDIC FRACTION ONE EIGHTH
+A835 ; [*1E39.0020.0002] # NORTH INDIC FRACTION THREE SIXTEENTHS
+A836 ; [*05A7.0020.0002] # NORTH INDIC QUARTER MARK
+A837 ; [*05A8.0020.0002] # NORTH INDIC PLACEHOLDER MARK
+A839 ; [*05A9.0020.0002] # NORTH INDIC QUANTITY MARK
+A874 ; [*0468.0020.0002] # PHAGS-PA SINGLE HEAD MARK
+A875 ; [*0469.0020.0002] # PHAGS-PA DOUBLE HEAD MARK
+A876 ; [*029F.0020.0002] # PHAGS-PA MARK SHAD
+A877 ; [*02A0.0020.0002] # PHAGS-PA MARK DOUBLE SHAD
+A8CE ; [*029B.0020.0002] # SAURASHTRA DANDA
+A8CF ; [*029C.0020.0002] # SAURASHTRA DOUBLE DANDA
+A8E0 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT ZERO
+A8E1 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT ONE
+A8E2 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT TWO
+A8E3 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT THREE
+A8E4 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT FOUR
+A8E5 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT FIVE
+A8E6 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT SIX
+A8E7 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT SEVEN
+A8E8 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT EIGHT
+A8E9 ; [.0000.0000.0000] # COMBINING DEVANAGARI DIGIT NINE
+A8EA ; [.0000.0000.0000] # COMBINING DEVANAGARI LETTER A
+A8EB ; [.0000.0000.0000] # COMBINING DEVANAGARI LETTER U
+A8EC ; [.0000.0000.0000] # COMBINING DEVANAGARI LETTER KA
+A8ED ; [.0000.0000.0000] # COMBINING DEVANAGARI LETTER NA
+A8EE ; [.0000.0000.0000] # COMBINING DEVANAGARI LETTER PA
+A8EF ; [.0000.0000.0000] # COMBINING DEVANAGARI LETTER RA
+A8F0 ; [.0000.0000.0000] # COMBINING DEVANAGARI LETTER VI
+A8F1 ; [.0000.0000.0000] # COMBINING DEVANAGARI SIGN AVAGRAHA
+A8F8 ; [*0415.0020.0002] # DEVANAGARI SIGN PUSHPIKA
+A8F9 ; [*0416.0020.0002] # DEVANAGARI GAP FILLER
+A8FA ; [*0417.0020.0002] # DEVANAGARI CARET
+A8FC ; [*0418.0020.0002] # DEVANAGARI SIGN SIDDHAM
+A92E ; [*046E.0020.0002] # KAYAH LI SIGN CWI
+A92F ; [*02A3.0020.0002] # KAYAH LI SIGN SHYA
+A95F ; [*02E7.0020.0002] # REJANG SECTION MARK
+A9C1 ; [*02DC.0020.0002] # JAVANESE LEFT RERENGGAN
+A9C2 ; [*02DD.0020.0002] # JAVANESE RIGHT RERENGGAN
+A9C3 ; [*02DE.0020.0002] # JAVANESE PADA ANDAP
+A9C4 ; [*02DF.0020.0002] # JAVANESE PADA MADYA
+A9C5 ; [*02E0.0020.0002] # JAVANESE PADA LUHUR
+A9C6 ; [*02E1.0020.0002] # JAVANESE PADA WINDU
+A9C7 ; [*0263.0020.0002] # JAVANESE PADA PANGKAT
+A9C8 ; [*02AE.0020.0002] # JAVANESE PADA LINGSA
+A9C9 ; [*02AF.0020.0002] # JAVANESE PADA LUNGSI
+A9CA ; [*02E2.0020.0002] # JAVANESE PADA ADEG
+A9CB ; [*02E3.0020.0002] # JAVANESE PADA ADEG ADEG
+A9CC ; [*02E4.0020.0002] # JAVANESE PADA PISELEH
+A9CD ; [*02E5.0020.0002] # JAVANESE TURNED PADA PISELEH
+A9DE ; [*046F.0020.0002] # JAVANESE PADA TIRTA TUMETES
+A9DF ; [*0470.0020.0002] # JAVANESE PADA ISEN-ISEN
+AA5C ; [*0471.0020.0002] # CHAM PUNCTUATION SPIRAL
+AA5D ; [*02B0.0020.0002] # CHAM PUNCTUATION DANDA
+AA5E ; [*02B1.0020.0002] # CHAM PUNCTUATION DOUBLE DANDA
+AA5F ; [*02B2.0020.0002] # CHAM PUNCTUATION TRIPLE DANDA
+AA77 ; [*05D2.0020.0002] # MYANMAR SYMBOL AITON EXCLAMATION
+AA78 ; [*05D3.0020.0002] # MYANMAR SYMBOL AITON ONE
+AA79 ; [*05D4.0020.0002] # MYANMAR SYMBOL AITON TWO
+AADE ; [*0422.0020.0002] # TAI VIET SYMBOL HO HOI
+AADF ; [*0423.0020.0002] # TAI VIET SYMBOL KOI KOI
+AAF0 ; [*02B3.0020.0002] # MEETEI MAYEK CHEIKHAN
+AAF1 ; [*027C.0020.0002] # MEETEI MAYEK AHANG KHUDAM
+AB5B ; [*053E.0020.0002] # MODIFIER BREVE WITH INVERTED BREVE
+AB6A ; [*04EF.0020.0002] # MODIFIER LETTER LEFT TACK
+AB6B ; [*04F0.0020.0002] # MODIFIER LETTER RIGHT TACK
+ABEB ; [*02B4.0020.0002] # MEETEI MAYEK CHEIKHEI
+FB29 ; [*069D.0020.0005] # HEBREW LETTER ALTERNATIVE PLUS SIGN
+FBB2 ; [*056C.0020.0002] # ARABIC SYMBOL DOT ABOVE
+FBB3 ; [*056D.0020.0002] # ARABIC SYMBOL DOT BELOW
+FBB4 ; [*056E.0020.0002] # ARABIC SYMBOL TWO DOTS ABOVE
+FBB5 ; [*056F.0020.0002] # ARABIC SYMBOL TWO DOTS BELOW
+FBB6 ; [*0570.0020.0002] # ARABIC SYMBOL THREE DOTS ABOVE
+FBB7 ; [*0571.0020.0002] # ARABIC SYMBOL THREE DOTS BELOW
+FBB8 ; [*0572.0020.0002] # ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS ABOVE
+FBB9 ; [*0573.0020.0002] # ARABIC SYMBOL THREE DOTS POINTING DOWNWARDS BELOW
+FBBA ; [*0574.0020.0002] # ARABIC SYMBOL FOUR DOTS ABOVE
+FBBB ; [*0575.0020.0002] # ARABIC SYMBOL FOUR DOTS BELOW
+FBBC ; [*0576.0020.0002] # ARABIC SYMBOL DOUBLE VERTICAL BAR BELOW
+FBBD ; [*0577.0020.0002] # ARABIC SYMBOL TWO DOTS VERTICALLY ABOVE
+FBBE ; [*0578.0020.0002] # ARABIC SYMBOL TWO DOTS VERTICALLY BELOW
+FBBF ; [*0579.0020.0002] # ARABIC SYMBOL RING
+FBC0 ; [*057A.0020.0002] # ARABIC SYMBOL SMALL TAH ABOVE
+FBC1 ; [*057B.0020.0002] # ARABIC SYMBOL SMALL TAH BELOW
+FBC2 ; [*057C.0020.0002] # ARABIC SYMBOL WASLA ABOVE
+FD3E ; [*03A6.0020.0002] # ORNATE LEFT PARENTHESIS
+FD3F ; [*03A7.0020.0002] # ORNATE RIGHT PARENTHESIS
+FD40 ; [*0557.0020.0002] # ARABIC LIGATURE RAHIMAHU ALLAAH
+FD41 ; [*0558.0020.0002] # ARABIC LIGATURE RADI ALLAAHU ANH
+FD42 ; [*0559.0020.0002] # ARABIC LIGATURE RADI ALLAAHU ANHAA
+FD43 ; [*055A.0020.0002] # ARABIC LIGATURE RADI ALLAAHU ANHUM
+FD44 ; [*055B.0020.0002] # ARABIC LIGATURE RADI ALLAAHU ANHUMAA
+FD45 ; [*055C.0020.0002] # ARABIC LIGATURE RADI ALLAAHU ANHUNNA
+FD46 ; [*055D.0020.0002] # ARABIC LIGATURE SALLALLAAHU ALAYHI WA-AALIH
+FD47 ; [*055E.0020.0002] # ARABIC LIGATURE ALAYHI AS-SALAAM
+FD48 ; [*055F.0020.0002] # ARABIC LIGATURE ALAYHIM AS-SALAAM
+FD49 ; [*0560.0020.0002] # ARABIC LIGATURE ALAYHIMAA AS-SALAAM
+FD4A ; [*0561.0020.0002] # ARABIC LIGATURE ALAYHI AS-SALAATU WAS-SALAAM
+FD4B ; [*0562.0020.0002] # ARABIC LIGATURE QUDDISA SIRRAH
+FD4C ; [*0563.0020.0002] # ARABIC LIGATURE SALLALLAHU ALAYHI WAAALIHEE WA-SALLAM
+FD4D ; [*0564.0020.0002] # ARABIC LIGATURE ALAYHAA AS-SALAAM
+FD4E ; [*0565.0020.0002] # ARABIC LIGATURE TABAARAKA WA-TAAALAA
+FD4F ; [*0566.0020.0002] # ARABIC LIGATURE RAHIMAHUM ALLAAH
+FDCF ; [*0567.0020.0002] # ARABIC LIGATURE SALAAMUHU ALAYNAA
+FDFD ; [*0568.0020.0002] # ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+FDFE ; [*0569.0020.0002] # ARABIC LIGATURE SUBHAANAHU WA TAAALAA
+FDFF ; [*056A.0020.0002] # ARABIC LIGATURE AZZA WA JALL
+FE10 ; [*0224.0020.0016] # PRESENTATION FORM FOR VERTICAL COMMA
+FE11 ; [*0237.0020.0016] # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
+FE12 ; [*0295.0020.0016] # PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
+FE13 ; [*0241.0020.0016] # PRESENTATION FORM FOR VERTICAL COLON
+FE14 ; [*023B.0020.0016] # PRESENTATION FORM FOR VERTICAL SEMICOLON
+FE15 ; [*0268.0020.0016] # PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
+FE16 ; [*026F.0020.0016] # PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17 ; [*03A0.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; [*03A1.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19 ; [*0281.0020.0016][*0281.0020.0016][*0281.0020.0016] # PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE21 ; [.0000.0000.0000] # COMBINING LIGATURE RIGHT HALF
+FE23 ; [.0000.0000.0000] # COMBINING DOUBLE TILDE RIGHT HALF
+FE24 ; [.0000.0000.0000] # COMBINING MACRON LEFT HALF
+FE25 ; [.0000.0000.0000] # COMBINING MACRON RIGHT HALF
+FE26 ; [.0000.0000.0000] # COMBINING CONJOINING MACRON
+FE28 ; [.0000.0000.0000] # COMBINING LIGATURE RIGHT HALF BELOW
+FE2A ; [.0000.0000.0000] # COMBINING TILDE RIGHT HALF BELOW
+FE2B ; [.0000.0000.0000] # COMBINING MACRON LEFT HALF BELOW
+FE2C ; [.0000.0000.0000] # COMBINING MACRON RIGHT HALF BELOW
+FE2D ; [.0000.0000.0000] # COMBINING CONJOINING MACRON BELOW
+FE2F ; [.0000.0000.0000] # COMBINING CYRILLIC TITLO RIGHT HALF
+FE30 ; [*0281.0020.0016][*0281.0020.0016] # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31 ; [*0216.0020.0016] # PRESENTATION FORM FOR VERTICAL EM DASH
+FE32 ; [*0215.0020.0016] # PRESENTATION FORM FOR VERTICAL EN DASH
+FE33 ; [*020B.0020.0016] # PRESENTATION FORM FOR VERTICAL LOW LINE
+FE34 ; [*020B.0020.0016] # PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35 ; [*0334.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; [*0335.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; [*0338.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; [*0339.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; [*039E.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; [*039F.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; [*039C.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; [*039D.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; [*0396.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; [*0397.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; [*0394.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; [*0395.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; [*0398.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; [*0399.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; [*039A.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; [*039B.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE45 ; [*0238.0020.0002] # SESAME DOT
+FE46 ; [*0239.0020.0002] # WHITE SESAME DOT
+FE47 ; [*0336.0020.0016] # PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; [*0337.0020.0016] # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49 ; [*020A.0020.0004] # DASHED OVERLINE
+FE4A ; [*020A.0020.0004] # CENTRELINE OVERLINE
+FE4B ; [*020A.0020.0004] # WAVY OVERLINE
+FE4C ; [*020A.0020.0004] # DOUBLE WAVY OVERLINE
+FE4D ; [*020B.0020.0004] # DASHED LOW LINE
+FE4E ; [*020B.0020.0004] # CENTRELINE LOW LINE
+FE4F ; [*020B.0020.0004] # WAVY LOW LINE
+FE50 ; [*0224.0020.000F] # SMALL COMMA
+FE51 ; [*0237.0020.000F] # SMALL IDEOGRAPHIC COMMA
+FE52 ; [*0281.0020.000F] # SMALL FULL STOP
+FE54 ; [*023B.0020.000F] # SMALL SEMICOLON
+FE55 ; [*0241.0020.000F] # SMALL COLON
+FE56 ; [*026F.0020.000F] # SMALL QUESTION MARK
+FE57 ; [*0268.0020.000F] # SMALL EXCLAMATION MARK
+FE58 ; [*0216.0020.000F] # SMALL EM DASH
+FE59 ; [*0334.0020.000F] # SMALL LEFT PARENTHESIS
+FE5A ; [*0335.0020.000F] # SMALL RIGHT PARENTHESIS
+FE5B ; [*0338.0020.000F] # SMALL LEFT CURLY BRACKET
+FE5C ; [*0339.0020.000F] # SMALL RIGHT CURLY BRACKET
+FE5D ; [*039E.0020.000F] # SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; [*039F.0020.000F] # SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F ; [*03C0.0020.000F] # SMALL NUMBER SIGN
+FE60 ; [*03BD.0020.000F] # SMALL AMPERSAND
+FE61 ; [*03B5.0020.000F] # SMALL ASTERISK
+FE62 ; [*069D.0020.000F] # SMALL PLUS SIGN
+FE63 ; [*020D.0020.000F] # SMALL HYPHEN-MINUS
+FE64 ; [*06A1.0020.000F] # SMALL LESS-THAN SIGN
+FE65 ; [*06A3.0020.000F] # SMALL GREATER-THAN SIGN
+FE66 ; [*06A2.0020.000F] # SMALL EQUALS SIGN
+FE68 ; [*03BB.0020.000F] # SMALL REVERSE SOLIDUS
+FE6A ; [*03C1.0020.000F] # SMALL PERCENT SIGN
+FE6B ; [*03B4.0020.000F] # SMALL COMMERCIAL AT
+FE73 ; [.0000.0000.0000] # ARABIC TAIL FRAGMENT
+FF01 ; [*0268.0020.0003] # FULLWIDTH EXCLAMATION MARK
+FF02 ; [*0329.0020.0003] # FULLWIDTH QUOTATION MARK
+FF03 ; [*03C0.0020.0003] # FULLWIDTH NUMBER SIGN
+FF05 ; [*03C1.0020.0003] # FULLWIDTH PERCENT SIGN
+FF06 ; [*03BD.0020.0003] # FULLWIDTH AMPERSAND
+FF07 ; [*0322.0020.0003] # FULLWIDTH APOSTROPHE
+FF08 ; [*0334.0020.0003] # FULLWIDTH LEFT PARENTHESIS
+FF09 ; [*0335.0020.0003] # FULLWIDTH RIGHT PARENTHESIS
+FF0A ; [*03B5.0020.0003] # FULLWIDTH ASTERISK
+FF0B ; [*069D.0020.0003] # FULLWIDTH PLUS SIGN
+FF0C ; [*0224.0020.0003] # FULLWIDTH COMMA
+FF0D ; [*020D.0020.0003] # FULLWIDTH HYPHEN-MINUS
+FF0E ; [*0281.0020.0003] # FULLWIDTH FULL STOP
+FF0F ; [*03BA.0020.0003] # FULLWIDTH SOLIDUS
+FF1A ; [*0241.0020.0003] # FULLWIDTH COLON
+FF1B ; [*023B.0020.0003] # FULLWIDTH SEMICOLON
+FF1C ; [*06A1.0020.0003] # FULLWIDTH LESS-THAN SIGN
+FF1D ; [*06A2.0020.0003] # FULLWIDTH EQUALS SIGN
+FF1E ; [*06A3.0020.0003] # FULLWIDTH GREATER-THAN SIGN
+FF1F ; [*026F.0020.0003] # FULLWIDTH QUESTION MARK
+FF20 ; [*03B4.0020.0003] # FULLWIDTH COMMERCIAL AT
+FF3B ; [*0336.0020.0003] # FULLWIDTH LEFT SQUARE BRACKET
+FF3C ; [*03BB.0020.0003] # FULLWIDTH REVERSE SOLIDUS
+FF3D ; [*0337.0020.0003] # FULLWIDTH RIGHT SQUARE BRACKET
+FF3E ; [*04CC.0020.0003] # FULLWIDTH CIRCUMFLEX ACCENT
+FF3F ; [*020B.0020.0003] # FULLWIDTH LOW LINE
+FF40 ; [*04C9.0020.0003] # FULLWIDTH GRAVE ACCENT
+FF5B ; [*0338.0020.0003] # FULLWIDTH LEFT CURLY BRACKET
+FF5C ; [*06A5.0020.0003] # FULLWIDTH VERTICAL LINE
+FF5D ; [*0339.0020.0003] # FULLWIDTH RIGHT CURLY BRACKET
+FF5E ; [*06A7.0020.0003] # FULLWIDTH TILDE
+FF5F ; [*034A.0020.0003] # FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; [*034B.0020.0003] # FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61 ; [*0295.0020.0012] # HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; [*0398.0020.0012] # HALFWIDTH LEFT CORNER BRACKET
+FF63 ; [*0399.0020.0012] # HALFWIDTH RIGHT CORNER BRACKET
+FF64 ; [*0237.0020.0012] # HALFWIDTH IDEOGRAPHIC COMMA
+FF65 ; [*0222.0020.0012] # HALFWIDTH KATAKANA MIDDLE DOT
+FFE2 ; [*06A4.0020.0003] # FULLWIDTH NOT SIGN
+FFE3 ; [*04CD.0020.0003] # FULLWIDTH MACRON
+FFE4 ; [*06A6.0020.0003] # FULLWIDTH BROKEN BAR
+FFE8 ; [*08A2.0020.0012] # HALFWIDTH FORMS LIGHT VERTICAL
+FFE9 ; [*0623.0020.0012] # HALFWIDTH LEFTWARDS ARROW
+FFEA ; [*0625.0020.0012] # HALFWIDTH UPWARDS ARROW
+FFEB ; [*0624.0020.0012] # HALFWIDTH RIGHTWARDS ARROW
+FFEC ; [*0626.0020.0012] # HALFWIDTH DOWNWARDS ARROW
+FFED ; [*0940.0020.0012] # HALFWIDTH BLACK SQUARE
+FFEE ; [*096B.0020.0012] # HALFWIDTH WHITE CIRCLE
+FFFC ; [*1E27.0020.0002] # OBJECT REPLACEMENT CHARACTER
+10100 ; [*0315.0020.0002] # AEGEAN WORD SEPARATOR LINE
+10101 ; [*0316.0020.0002] # AEGEAN WORD SEPARATOR DOT
+10102 ; [*0317.0020.0002] # AEGEAN CHECK MARK
+10110 ; [*1E90.0020.0002] # AEGEAN NUMBER TEN
+10111 ; [*1E91.0020.0002] # AEGEAN NUMBER TWENTY
+10112 ; [*1E92.0020.0002] # AEGEAN NUMBER THIRTY
+10113 ; [*1E93.0020.0002] # AEGEAN NUMBER FORTY
+10114 ; [*1E94.0020.0002] # AEGEAN NUMBER FIFTY
+10115 ; [*1E95.0020.0002] # AEGEAN NUMBER SIXTY
+10116 ; [*1E96.0020.0002] # AEGEAN NUMBER SEVENTY
+10117 ; [*1E97.0020.0002] # AEGEAN NUMBER EIGHTY
+10118 ; [*1E98.0020.0002] # AEGEAN NUMBER NINETY
+10119 ; [*1E99.0020.0002] # AEGEAN NUMBER ONE HUNDRED
+1011A ; [*1E9A.0020.0002] # AEGEAN NUMBER TWO HUNDRED
+1011B ; [*1E9B.0020.0002] # AEGEAN NUMBER THREE HUNDRED
+1011C ; [*1E9C.0020.0002] # AEGEAN NUMBER FOUR HUNDRED
+1011D ; [*1E9D.0020.0002] # AEGEAN NUMBER FIVE HUNDRED
+1011E ; [*1E9E.0020.0002] # AEGEAN NUMBER SIX HUNDRED
+1011F ; [*1E9F.0020.0002] # AEGEAN NUMBER SEVEN HUNDRED
+10120 ; [*1EA0.0020.0002] # AEGEAN NUMBER EIGHT HUNDRED
+10121 ; [*1EA1.0020.0002] # AEGEAN NUMBER NINE HUNDRED
+10122 ; [*1EA2.0020.0002] # AEGEAN NUMBER ONE THOUSAND
+10123 ; [*1EA3.0020.0002] # AEGEAN NUMBER TWO THOUSAND
+10124 ; [*1EA4.0020.0002] # AEGEAN NUMBER THREE THOUSAND
+10125 ; [*1EA5.0020.0002] # AEGEAN NUMBER FOUR THOUSAND
+10126 ; [*1EA6.0020.0002] # AEGEAN NUMBER FIVE THOUSAND
+10127 ; [*1EA7.0020.0002] # AEGEAN NUMBER SIX THOUSAND
+10128 ; [*1EA8.0020.0002] # AEGEAN NUMBER SEVEN THOUSAND
+10129 ; [*1EA9.0020.0002] # AEGEAN NUMBER EIGHT THOUSAND
+1012A ; [*1EAA.0020.0002] # AEGEAN NUMBER NINE THOUSAND
+1012B ; [*1EAB.0020.0002] # AEGEAN NUMBER TEN THOUSAND
+1012C ; [*1EAC.0020.0002] # AEGEAN NUMBER TWENTY THOUSAND
+1012D ; [*1EAD.0020.0002] # AEGEAN NUMBER THIRTY THOUSAND
+1012E ; [*1EAE.0020.0002] # AEGEAN NUMBER FORTY THOUSAND
+1012F ; [*1EAF.0020.0002] # AEGEAN NUMBER FIFTY THOUSAND
+10130 ; [*1EB0.0020.0002] # AEGEAN NUMBER SIXTY THOUSAND
+10131 ; [*1EB1.0020.0002] # AEGEAN NUMBER SEVENTY THOUSAND
+10132 ; [*1EB2.0020.0002] # AEGEAN NUMBER EIGHTY THOUSAND
+10133 ; [*1EB3.0020.0002] # AEGEAN NUMBER NINETY THOUSAND
+10137 ; [*10FB.0020.0002] # AEGEAN WEIGHT BASE UNIT
+10138 ; [*10FC.0020.0002] # AEGEAN WEIGHT FIRST SUBUNIT
+10139 ; [*10FD.0020.0002] # AEGEAN WEIGHT SECOND SUBUNIT
+1013A ; [*10FE.0020.0002] # AEGEAN WEIGHT THIRD SUBUNIT
+1013B ; [*10FF.0020.0002] # AEGEAN WEIGHT FOURTH SUBUNIT
+1013C ; [*1100.0020.0002] # AEGEAN DRY MEASURE FIRST SUBUNIT
+1013D ; [*1101.0020.0002] # AEGEAN LIQUID MEASURE FIRST SUBUNIT
+1013E ; [*1102.0020.0002] # AEGEAN MEASURE SECOND SUBUNIT
+1013F ; [*1103.0020.0002] # AEGEAN MEASURE THIRD SUBUNIT
+10140 ; [*1EB4.0020.0002] # GREEK ACROPHONIC ATTIC ONE QUARTER
+10141 ; [*1EB5.0020.0002] # GREEK ACROPHONIC ATTIC ONE HALF
+10144 ; [*1EB6.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY
+10145 ; [*1EB7.0020.0002] # GREEK ACROPHONIC ATTIC FIVE HUNDRED
+10146 ; [*1EB8.0020.0002] # GREEK ACROPHONIC ATTIC FIVE THOUSAND
+10147 ; [*1EB9.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY THOUSAND
+10149 ; [*1EBA.0020.0002] # GREEK ACROPHONIC ATTIC TEN TALENTS
+1014A ; [*1EBB.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY TALENTS
+1014B ; [*1EBC.0020.0002] # GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS
+1014C ; [*1EBD.0020.0002] # GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS
+1014D ; [*1EBE.0020.0002] # GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS
+1014E ; [*1EBF.0020.0002] # GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS
+10150 ; [*1EC0.0020.0002] # GREEK ACROPHONIC ATTIC TEN STATERS
+10151 ; [*1EC1.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY STATERS
+10152 ; [*1EC2.0020.0002] # GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS
+10153 ; [*1EC3.0020.0002] # GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS
+10154 ; [*1EC4.0020.0002] # GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS
+10155 ; [*1EC5.0020.0002] # GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS
+10156 ; [*1EC6.0020.0002] # GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS
+10157 ; [*1EC7.0020.0002] # GREEK ACROPHONIC ATTIC TEN MNAS
+10160 ; [*1EC8.0020.0002] # GREEK ACROPHONIC TROEZENIAN TEN
+10161 ; [*1EC9.0020.0002] # GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM
+10162 ; [*1ECA.0020.0002] # GREEK ACROPHONIC HERMIONIAN TEN
+10163 ; [*1ECB.0020.0002] # GREEK ACROPHONIC MESSENIAN TEN
+10164 ; [*1ECC.0020.0002] # GREEK ACROPHONIC THESPIAN TEN
+10165 ; [*1ECD.0020.0002] # GREEK ACROPHONIC THESPIAN THIRTY
+10166 ; [*1ECE.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIFTY
+10167 ; [*1ECF.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
+10168 ; [*1ED0.0020.0002] # GREEK ACROPHONIC HERMIONIAN FIFTY
+10169 ; [*1ED1.0020.0002] # GREEK ACROPHONIC THESPIAN FIFTY
+1016A ; [*1ED2.0020.0002] # GREEK ACROPHONIC THESPIAN ONE HUNDRED
+1016B ; [*1ED3.0020.0002] # GREEK ACROPHONIC THESPIAN THREE HUNDRED
+1016C ; [*1ED4.0020.0002] # GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED
+1016D ; [*1ED5.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED
+1016E ; [*1ED6.0020.0002] # GREEK ACROPHONIC THESPIAN FIVE HUNDRED
+1016F ; [*1ED7.0020.0002] # GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED
+10170 ; [*1ED8.0020.0002] # GREEK ACROPHONIC NAXIAN FIVE HUNDRED
+10171 ; [*1ED9.0020.0002] # GREEK ACROPHONIC THESPIAN ONE THOUSAND
+10172 ; [*1EDA.0020.0002] # GREEK ACROPHONIC THESPIAN FIVE THOUSAND
+10174 ; [*1EDB.0020.0002] # GREEK ACROPHONIC STRATIAN FIFTY MNAS
+10175 ; [*1EDC.0020.0002] # GREEK ONE HALF SIGN
+10176 ; [*1EDD.0020.0002] # GREEK ONE HALF SIGN ALTERNATE FORM
+10177 ; [*1EDE.0020.0002] # GREEK TWO THIRDS SIGN
+10178 ; [*1EDF.0020.0002] # GREEK THREE QUARTERS SIGN
+10179 ; [*1104.0020.0002] # GREEK YEAR SIGN
+1017A ; [*1105.0020.0002] # GREEK TALENT SIGN
+1017B ; [*1106.0020.0002] # GREEK DRACHMA SIGN
+1017C ; [*1107.0020.0002] # GREEK OBOL SIGN
+1017D ; [*1108.0020.0002] # GREEK TWO OBOLS SIGN
+1017E ; [*1109.0020.0002] # GREEK THREE OBOLS SIGN
+1017F ; [*110A.0020.0002] # GREEK FOUR OBOLS SIGN
+10180 ; [*110B.0020.0002] # GREEK FIVE OBOLS SIGN
+10181 ; [*110C.0020.0002] # GREEK METRETES SIGN
+10182 ; [*110D.0020.0002] # GREEK KYATHOS BASE SIGN
+10183 ; [*110E.0020.0002] # GREEK LITRA SIGN
+10184 ; [*110F.0020.0002] # GREEK OUNKIA SIGN
+10185 ; [*1110.0020.0002] # GREEK XESTES SIGN
+10186 ; [*1111.0020.0002] # GREEK ARTABE SIGN
+10187 ; [*1112.0020.0002] # GREEK AROURA SIGN
+10188 ; [*1113.0020.0002] # GREEK GRAMMA SIGN
+10189 ; [*1114.0020.0002] # GREEK TRYBLION BASE SIGN
+1018B ; [*1EE0.0020.0002] # GREEK ONE QUARTER SIGN
+1018C ; [*1115.0020.0002] # GREEK SINUSOID SIGN
+1018D ; [*1116.0020.0002] # GREEK INDICTION SIGN
+1018E ; [*1117.0020.0002] # NOMISMA SIGN
+10190 ; [*1118.0020.0002] # ROMAN SEXTANS SIGN
+10191 ; [*1119.0020.0002] # ROMAN UNCIA SIGN
+10192 ; [*111A.0020.0002] # ROMAN SEMUNCIA SIGN
+10193 ; [*111B.0020.0002] # ROMAN SEXTULA SIGN
+10194 ; [*111C.0020.0002] # ROMAN DIMIDIA SEXTULA SIGN
+10195 ; [*111D.0020.0002] # ROMAN SILIQUA SIGN
+10196 ; [*111E.0020.0002] # ROMAN DENARIUS SIGN
+10197 ; [*111F.0020.0002] # ROMAN QUINARIUS SIGN
+10198 ; [*1120.0020.0002] # ROMAN SESTERTIUS SIGN
+10199 ; [*1121.0020.0002] # ROMAN DUPONDIUS SIGN
+1019A ; [*1122.0020.0002] # ROMAN AS SIGN
+1019B ; [*1123.0020.0002] # ROMAN CENTURIAL SIGN
+1019C ; [*1124.0020.0002] # ASCIA SYMBOL
+101A0 ; [*1125.0020.0002] # GREEK SYMBOL TAU RHO
+101D0 ; [*1126.0020.0002] # PHAISTOS DISC SIGN PEDESTRIAN
+101D1 ; [*1127.0020.0002] # PHAISTOS DISC SIGN PLUMED HEAD
+101D2 ; [*1128.0020.0002] # PHAISTOS DISC SIGN TATTOOED HEAD
+101D3 ; [*1129.0020.0002] # PHAISTOS DISC SIGN CAPTIVE
+101D4 ; [*112A.0020.0002] # PHAISTOS DISC SIGN CHILD
+101D5 ; [*112B.0020.0002] # PHAISTOS DISC SIGN WOMAN
+101D6 ; [*112C.0020.0002] # PHAISTOS DISC SIGN HELMET
+101D7 ; [*112D.0020.0002] # PHAISTOS DISC SIGN GAUNTLET
+101D8 ; [*112E.0020.0002] # PHAISTOS DISC SIGN TIARA
+101D9 ; [*112F.0020.0002] # PHAISTOS DISC SIGN ARROW
+101DA ; [*1130.0020.0002] # PHAISTOS DISC SIGN BOW
+101DB ; [*1131.0020.0002] # PHAISTOS DISC SIGN SHIELD
+101DC ; [*1132.0020.0002] # PHAISTOS DISC SIGN CLUB
+101DD ; [*1133.0020.0002] # PHAISTOS DISC SIGN MANACLES
+101DE ; [*1134.0020.0002] # PHAISTOS DISC SIGN MATTOCK
+101DF ; [*1135.0020.0002] # PHAISTOS DISC SIGN SAW
+101E0 ; [*1136.0020.0002] # PHAISTOS DISC SIGN LID
+101E1 ; [*1137.0020.0002] # PHAISTOS DISC SIGN BOOMERANG
+101E2 ; [*1138.0020.0002] # PHAISTOS DISC SIGN CARPENTRY PLANE
+101E3 ; [*1139.0020.0002] # PHAISTOS DISC SIGN DOLIUM
+101E4 ; [*113A.0020.0002] # PHAISTOS DISC SIGN COMB
+101E5 ; [*113B.0020.0002] # PHAISTOS DISC SIGN SLING
+101E6 ; [*113C.0020.0002] # PHAISTOS DISC SIGN COLUMN
+101E7 ; [*113D.0020.0002] # PHAISTOS DISC SIGN BEEHIVE
+101E8 ; [*113E.0020.0002] # PHAISTOS DISC SIGN SHIP
+101E9 ; [*113F.0020.0002] # PHAISTOS DISC SIGN HORN
+101EA ; [*1140.0020.0002] # PHAISTOS DISC SIGN HIDE
+101EB ; [*1141.0020.0002] # PHAISTOS DISC SIGN BULLS LEG
+101EC ; [*1142.0020.0002] # PHAISTOS DISC SIGN CAT
+101ED ; [*1143.0020.0002] # PHAISTOS DISC SIGN RAM
+101EE ; [*1144.0020.0002] # PHAISTOS DISC SIGN EAGLE
+101EF ; [*1145.0020.0002] # PHAISTOS DISC SIGN DOVE
+101F0 ; [*1146.0020.0002] # PHAISTOS DISC SIGN TUNNY
+101F1 ; [*1147.0020.0002] # PHAISTOS DISC SIGN BEE
+101F2 ; [*1148.0020.0002] # PHAISTOS DISC SIGN PLANE TREE
+101F3 ; [*1149.0020.0002] # PHAISTOS DISC SIGN VINE
+101F4 ; [*114A.0020.0002] # PHAISTOS DISC SIGN PAPYRUS
+101F5 ; [*114B.0020.0002] # PHAISTOS DISC SIGN ROSETTE
+101F6 ; [*114C.0020.0002] # PHAISTOS DISC SIGN LILY
+101F7 ; [*114D.0020.0002] # PHAISTOS DISC SIGN OX BACK
+101F8 ; [*114E.0020.0002] # PHAISTOS DISC SIGN FLUTE
+101F9 ; [*114F.0020.0002] # PHAISTOS DISC SIGN GRATER
+101FA ; [*1150.0020.0002] # PHAISTOS DISC SIGN STRAINER
+101FB ; [*1151.0020.0002] # PHAISTOS DISC SIGN SMALL AXE
+101FC ; [*1152.0020.0002] # PHAISTOS DISC SIGN WAVY BAND
+102E0 ; [.0000.0000.0000] # COPTIC EPACT THOUSANDS MARK
+102EA ; [*1EE1.0020.0002] # COPTIC EPACT NUMBER TEN
+102EB ; [*1EE2.0020.0002] # COPTIC EPACT NUMBER TWENTY
+102EC ; [*1EE3.0020.0002] # COPTIC EPACT NUMBER THIRTY
+102ED ; [*1EE4.0020.0002] # COPTIC EPACT NUMBER FORTY
+102EE ; [*1EE5.0020.0002] # COPTIC EPACT NUMBER FIFTY
+102EF ; [*1EE6.0020.0002] # COPTIC EPACT NUMBER SIXTY
+102F0 ; [*1EE7.0020.0002] # COPTIC EPACT NUMBER SEVENTY
+102F1 ; [*1EE8.0020.0002] # COPTIC EPACT NUMBER EIGHTY
+102F2 ; [*1EE9.0020.0002] # COPTIC EPACT NUMBER NINETY
+102F3 ; [*1EEA.0020.0002] # COPTIC EPACT NUMBER ONE HUNDRED
+102F4 ; [*1EEB.0020.0002] # COPTIC EPACT NUMBER TWO HUNDRED
+102F5 ; [*1EEC.0020.0002] # COPTIC EPACT NUMBER THREE HUNDRED
+102F6 ; [*1EED.0020.0002] # COPTIC EPACT NUMBER FOUR HUNDRED
+102F7 ; [*1EEE.0020.0002] # COPTIC EPACT NUMBER FIVE HUNDRED
+102F8 ; [*1EEF.0020.0002] # COPTIC EPACT NUMBER SIX HUNDRED
+102F9 ; [*1EF0.0020.0002] # COPTIC EPACT NUMBER SEVEN HUNDRED
+102FA ; [*1EF1.0020.0002] # COPTIC EPACT NUMBER EIGHT HUNDRED
+102FB ; [*1EF2.0020.0002] # COPTIC EPACT NUMBER NINE HUNDRED
+10322 ; [*1E8A.0020.0002] # OLD ITALIC NUMERAL TEN
+10323 ; [*1E8B.0020.0002] # OLD ITALIC NUMERAL FIFTY
+1039F ; [*0318.0020.0002] # UGARITIC WORD DIVIDER
+103D0 ; [*0319.0020.0002] # OLD PERSIAN WORD DIVIDER
+103D3 ; [*1EF3.0020.0002] # OLD PERSIAN NUMBER TEN
+103D4 ; [*1EF4.0020.0002] # OLD PERSIAN NUMBER TWENTY
+103D5 ; [*1EF5.0020.0002] # OLD PERSIAN NUMBER HUNDRED
+1056F ; [*0472.0020.0002] # CAUCASIAN ALBANIAN CITATION MARK
+10857 ; [*02E8.0020.0002] # IMPERIAL ARAMAIC SECTION SIGN
+1085B ; [*1F05.0020.0002] # IMPERIAL ARAMAIC NUMBER TEN
+1085C ; [*1F06.0020.0002] # IMPERIAL ARAMAIC NUMBER TWENTY
+1085D ; [*1F07.0020.0002] # IMPERIAL ARAMAIC NUMBER ONE HUNDRED
+1085E ; [*1F08.0020.0002] # IMPERIAL ARAMAIC NUMBER ONE THOUSAND
+1085F ; [*1F09.0020.0002] # IMPERIAL ARAMAIC NUMBER TEN THOUSAND
+10877 ; [*1153.0020.0002] # PALMYRENE LEFT-POINTING FLEURON
+10878 ; [*1154.0020.0002] # PALMYRENE RIGHT-POINTING FLEURON
+1087E ; [*1EF6.0020.0002] # PALMYRENE NUMBER TEN
+1087F ; [*1EF7.0020.0002] # PALMYRENE NUMBER TWENTY
+108AD ; [*1EF8.0020.0002] # NABATAEAN NUMBER TEN
+108AE ; [*1EF9.0020.0002] # NABATAEAN NUMBER TWENTY
+108AF ; [*1EFA.0020.0002] # NABATAEAN NUMBER ONE HUNDRED
+108FD ; [*1EFB.0020.0002] # HATRAN NUMBER TEN
+108FE ; [*1EFC.0020.0002] # HATRAN NUMBER TWENTY
+108FF ; [*1EFD.0020.0002] # HATRAN NUMBER ONE HUNDRED
+10917 ; [*1F02.0020.0002] # PHOENICIAN NUMBER TEN
+10918 ; [*1F03.0020.0002] # PHOENICIAN NUMBER TWENTY
+10919 ; [*1F04.0020.0002] # PHOENICIAN NUMBER ONE HUNDRED
+1091F ; [*031A.0020.0002] # PHOENICIAN WORD SEPARATOR
+1093F ; [*0314.0020.0002] # LYDIAN TRIANGULAR MARK
+109BC ; [*1FFD.0020.0002] # MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS
+109BD ; [*1FF2.0020.0002] # MEROITIC CURSIVE FRACTION ONE HALF
+109C9 ; [*1FC7.0020.0002] # MEROITIC CURSIVE NUMBER TEN
+109CA ; [*1FC8.0020.0002] # MEROITIC CURSIVE NUMBER TWENTY
+109CB ; [*1FC9.0020.0002] # MEROITIC CURSIVE NUMBER THIRTY
+109CC ; [*1FCA.0020.0002] # MEROITIC CURSIVE NUMBER FORTY
+109CD ; [*1FCB.0020.0002] # MEROITIC CURSIVE NUMBER FIFTY
+109CE ; [*1FCC.0020.0002] # MEROITIC CURSIVE NUMBER SIXTY
+109CF ; [*1FCD.0020.0002] # MEROITIC CURSIVE NUMBER SEVENTY
+109D2 ; [*1FCE.0020.0002] # MEROITIC CURSIVE NUMBER ONE HUNDRED
+109D3 ; [*1FCF.0020.0002] # MEROITIC CURSIVE NUMBER TWO HUNDRED
+109D4 ; [*1FD0.0020.0002] # MEROITIC CURSIVE NUMBER THREE HUNDRED
+109D5 ; [*1FD1.0020.0002] # MEROITIC CURSIVE NUMBER FOUR HUNDRED
+109D6 ; [*1FD2.0020.0002] # MEROITIC CURSIVE NUMBER FIVE HUNDRED
+109D7 ; [*1FD3.0020.0002] # MEROITIC CURSIVE NUMBER SIX HUNDRED
+109D8 ; [*1FD4.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN HUNDRED
+109D9 ; [*1FD5.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT HUNDRED
+109DA ; [*1FD6.0020.0002] # MEROITIC CURSIVE NUMBER NINE HUNDRED
+109DB ; [*1FD7.0020.0002] # MEROITIC CURSIVE NUMBER ONE THOUSAND
+109DC ; [*1FD8.0020.0002] # MEROITIC CURSIVE NUMBER TWO THOUSAND
+109DD ; [*1FD9.0020.0002] # MEROITIC CURSIVE NUMBER THREE THOUSAND
+109DE ; [*1FDA.0020.0002] # MEROITIC CURSIVE NUMBER FOUR THOUSAND
+109DF ; [*1FDB.0020.0002] # MEROITIC CURSIVE NUMBER FIVE THOUSAND
+109E0 ; [*1FDC.0020.0002] # MEROITIC CURSIVE NUMBER SIX THOUSAND
+109E1 ; [*1FDD.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN THOUSAND
+109E2 ; [*1FDE.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT THOUSAND
+109E3 ; [*1FDF.0020.0002] # MEROITIC CURSIVE NUMBER NINE THOUSAND
+109E4 ; [*1FE0.0020.0002] # MEROITIC CURSIVE NUMBER TEN THOUSAND
+109E5 ; [*1FE1.0020.0002] # MEROITIC CURSIVE NUMBER TWENTY THOUSAND
+109E6 ; [*1FE2.0020.0002] # MEROITIC CURSIVE NUMBER THIRTY THOUSAND
+109E7 ; [*1FE3.0020.0002] # MEROITIC CURSIVE NUMBER FORTY THOUSAND
+109E8 ; [*1FE4.0020.0002] # MEROITIC CURSIVE NUMBER FIFTY THOUSAND
+109E9 ; [*1FE5.0020.0002] # MEROITIC CURSIVE NUMBER SIXTY THOUSAND
+109EA ; [*1FE6.0020.0002] # MEROITIC CURSIVE NUMBER SEVENTY THOUSAND
+109EB ; [*1FE7.0020.0002] # MEROITIC CURSIVE NUMBER EIGHTY THOUSAND
+109EC ; [*1FE8.0020.0002] # MEROITIC CURSIVE NUMBER NINETY THOUSAND
+109ED ; [*1FE9.0020.0002] # MEROITIC CURSIVE NUMBER ONE HUNDRED THOUSAND
+109EE ; [*1FEA.0020.0002] # MEROITIC CURSIVE NUMBER TWO HUNDRED THOUSAND
+109EF ; [*1FEB.0020.0002] # MEROITIC CURSIVE NUMBER THREE HUNDRED THOUSAND
+109F0 ; [*1FEC.0020.0002] # MEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSAND
+109F1 ; [*1FED.0020.0002] # MEROITIC CURSIVE NUMBER FIVE HUNDRED THOUSAND
+109F2 ; [*1FEE.0020.0002] # MEROITIC CURSIVE NUMBER SIX HUNDRED THOUSAND
+109F3 ; [*1FEF.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSAND
+109F4 ; [*1FF0.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT HUNDRED THOUSAND
+109F5 ; [*1FF1.0020.0002] # MEROITIC CURSIVE NUMBER NINE HUNDRED THOUSAND
+109F6 ; [*1FF3.0020.0002] # MEROITIC CURSIVE FRACTION ONE TWELFTH
+109F7 ; [*1FF4.0020.0002] # MEROITIC CURSIVE FRACTION TWO TWELFTHS
+109F8 ; [*1FF5.0020.0002] # MEROITIC CURSIVE FRACTION THREE TWELFTHS
+109F9 ; [*1FF6.0020.0002] # MEROITIC CURSIVE FRACTION FOUR TWELFTHS
+109FA ; [*1FF7.0020.0002] # MEROITIC CURSIVE FRACTION FIVE TWELFTHS
+109FB ; [*1FF8.0020.0002] # MEROITIC CURSIVE FRACTION SIX TWELFTHS
+109FC ; [*1FF9.0020.0002] # MEROITIC CURSIVE FRACTION SEVEN TWELFTHS
+109FD ; [*1FFA.0020.0002] # MEROITIC CURSIVE FRACTION EIGHT TWELFTHS
+109FE ; [*1FFB.0020.0002] # MEROITIC CURSIVE FRACTION NINE TWELFTHS
+109FF ; [*1FFC.0020.0002] # MEROITIC CURSIVE FRACTION TEN TWELFTHS
+10A44 ; [*1F30.0020.0002] # KHAROSHTHI NUMBER TEN
+10A45 ; [*1F31.0020.0002] # KHAROSHTHI NUMBER TWENTY
+10A46 ; [*1F32.0020.0002] # KHAROSHTHI NUMBER ONE HUNDRED
+10A47 ; [*1F33.0020.0002] # KHAROSHTHI NUMBER ONE THOUSAND
+10A48 ; [*1F34.0020.0002] # KHAROSHTHI FRACTION ONE HALF
+10A50 ; [*0478.0020.0002] # KHAROSHTHI PUNCTUATION DOT
+10A51 ; [*0479.0020.0002] # KHAROSHTHI PUNCTUATION SMALL CIRCLE
+10A52 ; [*047A.0020.0002] # KHAROSHTHI PUNCTUATION CIRCLE
+10A53 ; [*047B.0020.0002] # KHAROSHTHI PUNCTUATION CRESCENT BAR
+10A54 ; [*047C.0020.0002] # KHAROSHTHI PUNCTUATION MANGALAM
+10A55 ; [*047D.0020.0002] # KHAROSHTHI PUNCTUATION LOTUS
+10A56 ; [*02B5.0020.0002] # KHAROSHTHI PUNCTUATION DANDA
+10A57 ; [*02B6.0020.0002] # KHAROSHTHI PUNCTUATION DOUBLE DANDA
+10A58 ; [*047E.0020.0002] # KHAROSHTHI PUNCTUATION LINES
+10A7E ; [*1EFE.0020.0002] # OLD SOUTH ARABIAN NUMBER FIFTY
+10A7F ; [*1EFF.0020.0002] # OLD SOUTH ARABIAN NUMERIC INDICATOR
+10A9E ; [*1F00.0020.0002] # OLD NORTH ARABIAN NUMBER TEN
+10A9F ; [*1F01.0020.0002] # OLD NORTH ARABIAN NUMBER TWENTY
+10AED ; [*1F0A.0020.0002] # MANICHAEAN NUMBER TEN
+10AEE ; [*1F0B.0020.0002] # MANICHAEAN NUMBER TWENTY
+10AEF ; [*1F0C.0020.0002] # MANICHAEAN NUMBER ONE HUNDRED
+10AF0 ; [*0483.0020.0002] # MANICHAEAN PUNCTUATION STAR
+10AF1 ; [*0484.0020.0002] # MANICHAEAN PUNCTUATION FLEURON
+10AF2 ; [*0485.0020.0002] # MANICHAEAN PUNCTUATION DOUBLE DOT WITHIN DOT
+10AF3 ; [*0486.0020.0002] # MANICHAEAN PUNCTUATION DOT WITHIN DOT
+10AF4 ; [*0487.0020.0002] # MANICHAEAN PUNCTUATION DOT
+10AF5 ; [*0488.0020.0002] # MANICHAEAN PUNCTUATION TWO DOTS
+10AF6 ; [*0489.0020.0002] # MANICHAEAN PUNCTUATION LINE FILLER
+10B39 ; [*0482.0020.0002] # AVESTAN ABBREVIATION MARK
+10B3A ; [*02E9.0020.0002] # TINY TWO DOTS OVER ONE DOT PUNCTUATION
+10B3B ; [*02EA.0020.0002] # SMALL TWO DOTS OVER ONE DOT PUNCTUATION
+10B3C ; [*02EB.0020.0002] # LARGE TWO DOTS OVER ONE DOT PUNCTUATION
+10B3D ; [*02EC.0020.0002] # LARGE ONE DOT OVER TWO DOTS PUNCTUATION
+10B3E ; [*02ED.0020.0002] # LARGE TWO RINGS OVER ONE RING PUNCTUATION
+10B3F ; [*02EE.0020.0002] # LARGE ONE RING OVER TWO RINGS PUNCTUATION
+10B5C ; [*1F0D.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER TEN
+10B5D ; [*1F0E.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER TWENTY
+10B5E ; [*1F0F.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED
+10B5F ; [*1F10.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND
+10B7C ; [*1F11.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER TEN
+10B7D ; [*1F12.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER TWENTY
+10B7E ; [*1F13.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED
+10B7F ; [*1F14.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
+10B99 ; [*048A.0020.0002] # PSALTER PAHLAVI SECTION MARK
+10B9A ; [*048B.0020.0002] # PSALTER PAHLAVI TURNED SECTION MARK
+10B9B ; [*048C.0020.0002] # PSALTER PAHLAVI FOUR DOTS WITH CROSS
+10B9C ; [*048D.0020.0002] # PSALTER PAHLAVI FOUR DOTS WITH DOT
+10BAD ; [*1F15.0020.0002] # PSALTER PAHLAVI NUMBER TEN
+10BAE ; [*1F16.0020.0002] # PSALTER PAHLAVI NUMBER TWENTY
+10BAF ; [*1F17.0020.0002] # PSALTER PAHLAVI NUMBER ONE HUNDRED
+10CFC ; [*1E8C.0020.0002] # OLD HUNGARIAN NUMBER TEN
+10CFD ; [*1E8D.0020.0002] # OLD HUNGARIAN NUMBER FIFTY
+10CFE ; [*1E8E.0020.0002] # OLD HUNGARIAN NUMBER ONE HUNDRED
+10CFF ; [*1E8F.0020.0002] # OLD HUNGARIAN NUMBER ONE THOUSAND
+10E69 ; [*1E73.0020.0002] # RUMI NUMBER TEN
+10E6A ; [*1E74.0020.0002] # RUMI NUMBER TWENTY
+10E6B ; [*1E75.0020.0002] # RUMI NUMBER THIRTY
+10E6C ; [*1E76.0020.0002] # RUMI NUMBER FORTY
+10E6D ; [*1E77.0020.0002] # RUMI NUMBER FIFTY
+10E6E ; [*1E78.0020.0002] # RUMI NUMBER SIXTY
+10E6F ; [*1E79.0020.0002] # RUMI NUMBER SEVENTY
+10E70 ; [*1E7A.0020.0002] # RUMI NUMBER EIGHTY
+10E71 ; [*1E7B.0020.0002] # RUMI NUMBER NINETY
+10E72 ; [*1E7C.0020.0002] # RUMI NUMBER ONE HUNDRED
+10E73 ; [*1E7D.0020.0002] # RUMI NUMBER TWO HUNDRED
+10E74 ; [*1E7E.0020.0002] # RUMI NUMBER THREE HUNDRED
+10E75 ; [*1E7F.0020.0002] # RUMI NUMBER FOUR HUNDRED
+10E76 ; [*1E80.0020.0002] # RUMI NUMBER FIVE HUNDRED
+10E77 ; [*1E81.0020.0002] # RUMI NUMBER SIX HUNDRED
+10E78 ; [*1E82.0020.0002] # RUMI NUMBER SEVEN HUNDRED
+10E79 ; [*1E83.0020.0002] # RUMI NUMBER EIGHT HUNDRED
+10E7A ; [*1E84.0020.0002] # RUMI NUMBER NINE HUNDRED
+10E7B ; [*1E85.0020.0002] # RUMI FRACTION ONE HALF
+10E7C ; [*1E86.0020.0002] # RUMI FRACTION ONE QUARTER
+10E7D ; [*1E87.0020.0002] # RUMI FRACTION ONE THIRD
+10E7E ; [*1E88.0020.0002] # RUMI FRACTION TWO THIRDS
+10EAD ; [*0223.0020.0002] # YEZIDI HYPHENATION MARK
+10F22 ; [*1F18.0020.0002] # OLD SOGDIAN NUMBER TEN
+10F23 ; [*1F19.0020.0002] # OLD SOGDIAN NUMBER TWENTY
+10F24 ; [*1F1A.0020.0002] # OLD SOGDIAN NUMBER THIRTY
+10F25 ; [*1F1B.0020.0002] # OLD SOGDIAN NUMBER ONE HUNDRED
+10F26 ; [*1F1C.0020.0002] # OLD SOGDIAN FRACTION ONE HALF
+10F52 ; [*1F1D.0020.0002] # SOGDIAN NUMBER TEN
+10F53 ; [*1F1E.0020.0002] # SOGDIAN NUMBER TWENTY
+10F54 ; [*1F1F.0020.0002] # SOGDIAN NUMBER ONE HUNDRED
+10F55 ; [*02EF.0020.0002] # SOGDIAN PUNCTUATION TWO VERTICAL BARS
+10F56 ; [*02F0.0020.0002] # SOGDIAN PUNCTUATION TWO VERTICAL BARS WITH DOTS
+10F57 ; [*02F1.0020.0002] # SOGDIAN PUNCTUATION CIRCLE WITH DOT
+10F58 ; [*02F2.0020.0002] # SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS
+10F59 ; [*02F3.0020.0002] # SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
+10F86 ; [*02F4.0020.0002] # OLD UYGHUR PUNCTUATION BAR
+10F87 ; [*02F5.0020.0002] # OLD UYGHUR PUNCTUATION TWO BARS
+10F88 ; [*02F6.0020.0002] # OLD UYGHUR PUNCTUATION TWO DOTS
+10F89 ; [*02F7.0020.0002] # OLD UYGHUR PUNCTUATION FOUR DOTS
+10FC9 ; [*1F20.0020.0002] # CHORASMIAN NUMBER TEN
+10FCA ; [*1F21.0020.0002] # CHORASMIAN NUMBER TWENTY
+10FCB ; [*1F22.0020.0002] # CHORASMIAN NUMBER ONE HUNDRED
+11047 ; [*02B7.0020.0002] # BRAHMI DANDA
+11048 ; [*02B8.0020.0002] # BRAHMI DOUBLE DANDA
+11049 ; [*0473.0020.0002] # BRAHMI PUNCTUATION DOT
+1104A ; [*0474.0020.0002] # BRAHMI PUNCTUATION DOUBLE DOT
+1104B ; [*0475.0020.0002] # BRAHMI PUNCTUATION LINE
+1104C ; [*0476.0020.0002] # BRAHMI PUNCTUATION CRESCENT BAR
+1104D ; [*0477.0020.0002] # BRAHMI PUNCTUATION LOTUS
+1105B ; [*1F25.0020.0002] # BRAHMI NUMBER TEN
+1105C ; [*1F26.0020.0002] # BRAHMI NUMBER TWENTY
+1105D ; [*1F27.0020.0002] # BRAHMI NUMBER THIRTY
+1105E ; [*1F28.0020.0002] # BRAHMI NUMBER FORTY
+1105F ; [*1F29.0020.0002] # BRAHMI NUMBER FIFTY
+11060 ; [*1F2A.0020.0002] # BRAHMI NUMBER SIXTY
+11061 ; [*1F2B.0020.0002] # BRAHMI NUMBER SEVENTY
+11062 ; [*1F2C.0020.0002] # BRAHMI NUMBER EIGHTY
+11063 ; [*1F2D.0020.0002] # BRAHMI NUMBER NINETY
+11064 ; [*1F2E.0020.0002] # BRAHMI NUMBER ONE HUNDRED
+11065 ; [*1F2F.0020.0002] # BRAHMI NUMBER ONE THOUSAND
+110BB ; [*048E.0020.0002] # KAITHI ABBREVIATION SIGN
+110BC ; [*048F.0020.0002] # KAITHI ENUMERATION SIGN
+110BD ; [.0000.0000.0000] # KAITHI NUMBER SIGN
+110BE ; [*02F8.0020.0002] # KAITHI SECTION MARK
+110BF ; [*02F9.0020.0002] # KAITHI DOUBLE SECTION MARK
+110C0 ; [*02B9.0020.0002] # KAITHI DANDA
+110C1 ; [*02BA.0020.0002] # KAITHI DOUBLE DANDA
+110CD ; [.0000.0000.0000] # KAITHI NUMBER SIGN ABOVE
+11140 ; [*02FA.0020.0002] # CHAKMA SECTION MARK
+11141 ; [*02BB.0020.0002] # CHAKMA DANDA
+11142 ; [*02BC.0020.0002] # CHAKMA DOUBLE DANDA
+11143 ; [*027D.0020.0002] # CHAKMA QUESTION MARK
+11174 ; [*0490.0020.0002] # MAHAJANI ABBREVIATION SIGN
+11175 ; [*0491.0020.0002] # MAHAJANI SECTION MARK
+111C5 ; [*02BD.0020.0002] # SHARADA DANDA
+111C6 ; [*02BE.0020.0002] # SHARADA DOUBLE DANDA
+111C7 ; [*0493.0020.0002] # SHARADA ABBREVIATION SIGN
+111C8 ; [*02FB.0020.0002] # SHARADA SEPARATOR
+111CD ; [*0492.0020.0002] # SHARADA SUTRA MARK
+111DB ; [*0494.0020.0002] # SHARADA SIGN SIDDHAM
+111DD ; [*0495.0020.0002] # SHARADA CONTINUATION SIGN
+111DE ; [*02FC.0020.0002] # SHARADA SECTION MARK-1
+111DF ; [*02FD.0020.0002] # SHARADA SECTION MARK-2
+111EA ; [*1F3F.0020.0002] # SINHALA ARCHAIC NUMBER TEN
+111EB ; [*1F40.0020.0002] # SINHALA ARCHAIC NUMBER TWENTY
+111EC ; [*1F41.0020.0002] # SINHALA ARCHAIC NUMBER THIRTY
+111ED ; [*1F42.0020.0002] # SINHALA ARCHAIC NUMBER FORTY
+111EE ; [*1F43.0020.0002] # SINHALA ARCHAIC NUMBER FIFTY
+111EF ; [*1F44.0020.0002] # SINHALA ARCHAIC NUMBER SIXTY
+111F0 ; [*1F45.0020.0002] # SINHALA ARCHAIC NUMBER SEVENTY
+111F1 ; [*1F46.0020.0002] # SINHALA ARCHAIC NUMBER EIGHTY
+111F2 ; [*1F47.0020.0002] # SINHALA ARCHAIC NUMBER NINETY
+111F3 ; [*1F48.0020.0002] # SINHALA ARCHAIC NUMBER ONE HUNDRED
+111F4 ; [*1F49.0020.0002] # SINHALA ARCHAIC NUMBER ONE THOUSAND
+11238 ; [*02BF.0020.0002] # KHOJKI DANDA
+11239 ; [*02C0.0020.0002] # KHOJKI DOUBLE DANDA
+1123A ; [*0496.0020.0002] # KHOJKI WORD SEPARATOR
+1123B ; [*0497.0020.0002] # KHOJKI SECTION MARK
+1123C ; [*0498.0020.0002] # KHOJKI DOUBLE SECTION MARK
+1123D ; [*0499.0020.0002] # KHOJKI ABBREVIATION SIGN
+112A9 ; [*02FE.0020.0002] # MULTANI SECTION MARK
+11366 ; [.0000.0000.0000] # COMBINING GRANTHA DIGIT ZERO
+11367 ; [.0000.0000.0000] # COMBINING GRANTHA DIGIT ONE
+11368 ; [.0000.0000.0000] # COMBINING GRANTHA DIGIT TWO
+11369 ; [.0000.0000.0000] # COMBINING GRANTHA DIGIT THREE
+1136A ; [.0000.0000.0000] # COMBINING GRANTHA DIGIT FOUR
+1136B ; [.0000.0000.0000] # COMBINING GRANTHA DIGIT FIVE
+1136C ; [.0000.0000.0000] # COMBINING GRANTHA DIGIT SIX
+11370 ; [.0000.0000.0000] # COMBINING GRANTHA LETTER A
+11371 ; [.0000.0000.0000] # COMBINING GRANTHA LETTER KA
+11372 ; [.0000.0000.0000] # COMBINING GRANTHA LETTER NA
+11373 ; [.0000.0000.0000] # COMBINING GRANTHA LETTER VI
+11374 ; [.0000.0000.0000] # COMBINING GRANTHA LETTER PA
+1144B ; [*02C1.0020.0002] # NEWA DANDA
+1144C ; [*02C2.0020.0002] # NEWA DOUBLE DANDA
+1144D ; [*049A.0020.0002] # NEWA COMMA
+1144E ; [*049C.0020.0002] # NEWA GAP FILLER
+1144F ; [*049D.0020.0002] # NEWA ABBREVIATION SIGN
+1145A ; [*049B.0020.0002] # NEWA DOUBLE COMMA
+1145B ; [*049E.0020.0002] # NEWA PLACEHOLDER MARK
+1145D ; [*049F.0020.0002] # NEWA INSERTION SIGN
+114C6 ; [*04A0.0020.0002] # TIRHUTA ABBREVIATION SIGN
+115C1 ; [*04A1.0020.0002] # SIDDHAM SIGN SIDDHAM
+115C2 ; [*02C3.0020.0002] # SIDDHAM DANDA
+115C3 ; [*02C4.0020.0002] # SIDDHAM DOUBLE DANDA
+115C4 ; [*04A2.0020.0002] # SIDDHAM SEPARATOR DOT
+115C5 ; [*04A3.0020.0002] # SIDDHAM SEPARATOR BAR
+115C6 ; [*04A4.0020.0002] # SIDDHAM REPETITION MARK-1
+115C7 ; [*04A5.0020.0002] # SIDDHAM REPETITION MARK-2
+115C8 ; [*04A6.0020.0002] # SIDDHAM REPETITION MARK-3
+115C9 ; [*04A7.0020.0002] # SIDDHAM END OF TEXT MARK
+115CA ; [*04A8.0020.0002] # SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS
+115CB ; [*04A9.0020.0002] # SIDDHAM SECTION MARK WITH TRIDENT AND DOTTED CRESCENTS
+115CC ; [*04AA.0020.0002] # SIDDHAM SECTION MARK WITH RAYS AND DOTTED CRESCENTS
+115CD ; [*04AB.0020.0002] # SIDDHAM SECTION MARK WITH RAYS AND DOTTED DOUBLE CRESCENTS
+115CE ; [*04AC.0020.0002] # SIDDHAM SECTION MARK WITH RAYS AND DOTTED TRIPLE CRESCENTS
+115CF ; [*04AD.0020.0002] # SIDDHAM SECTION MARK DOUBLE RING
+115D0 ; [*04AE.0020.0002] # SIDDHAM SECTION MARK DOUBLE RING WITH RAYS
+115D1 ; [*04AF.0020.0002] # SIDDHAM SECTION MARK WITH DOUBLE CRESCENTS
+115D2 ; [*04B0.0020.0002] # SIDDHAM SECTION MARK WITH TRIPLE CRESCENTS
+115D3 ; [*04B1.0020.0002] # SIDDHAM SECTION MARK WITH QUADRUPLE CRESCENTS
+115D4 ; [*04B2.0020.0002] # SIDDHAM SECTION MARK WITH SEPTUPLE CRESCENTS
+115D5 ; [*04B3.0020.0002] # SIDDHAM SECTION MARK WITH CIRCLES AND RAYS
+115D6 ; [*04B4.0020.0002] # SIDDHAM SECTION MARK WITH CIRCLES AND TWO ENCLOSURES
+115D7 ; [*04B5.0020.0002] # SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
+11641 ; [*02C5.0020.0002] # MODI DANDA
+11642 ; [*02C6.0020.0002] # MODI DOUBLE DANDA
+11643 ; [*04B6.0020.0002] # MODI ABBREVIATION SIGN
+11660 ; [*0407.0020.0002] # MONGOLIAN BIRGA WITH ORNAMENT
+11661 ; [*0408.0020.0002] # MONGOLIAN ROTATED BIRGA
+11662 ; [*0409.0020.0002] # MONGOLIAN DOUBLE BIRGA WITH ORNAMENT
+11663 ; [*040A.0020.0002] # MONGOLIAN TRIPLE BIRGA WITH ORNAMENT
+11664 ; [*040B.0020.0002] # MONGOLIAN BIRGA WITH DOUBLE ORNAMENT
+11665 ; [*040C.0020.0002] # MONGOLIAN ROTATED BIRGA WITH ORNAMENT
+11666 ; [*040D.0020.0002] # MONGOLIAN ROTATED BIRGA WITH DOUBLE ORNAMENT
+11667 ; [*040E.0020.0002] # MONGOLIAN INVERTED BIRGA
+11668 ; [*040F.0020.0002] # MONGOLIAN INVERTED BIRGA WITH DOUBLE ORNAMENT
+11669 ; [*0410.0020.0002] # MONGOLIAN SWIRL BIRGA
+1166A ; [*0411.0020.0002] # MONGOLIAN SWIRL BIRGA WITH ORNAMENT
+1166B ; [*0412.0020.0002] # MONGOLIAN SWIRL BIRGA WITH DOUBLE ORNAMENT
+1166C ; [*0413.0020.0002] # MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
+116B9 ; [*04B7.0020.0002] # TAKRI ABBREVIATION SIGN
+1173A ; [*1F23.0020.0002] # AHOM NUMBER TEN
+1173B ; [*1F24.0020.0002] # AHOM NUMBER TWENTY
+1173C ; [*02C7.0020.0002] # AHOM SIGN SMALL SECTION
+1173D ; [*02C8.0020.0002] # AHOM SIGN SECTION
+1173E ; [*02FF.0020.0002] # AHOM SIGN RULAI
+1173F ; [*05D5.0020.0002] # AHOM SYMBOL VI
+1183B ; [*04B8.0020.0002] # DOGRA ABBREVIATION SIGN
+118EA ; [*1F4A.0020.0002] # WARANG CITI NUMBER TEN
+118EB ; [*1F4B.0020.0002] # WARANG CITI NUMBER TWENTY
+118EC ; [*1F4C.0020.0002] # WARANG CITI NUMBER THIRTY
+118ED ; [*1F4D.0020.0002] # WARANG CITI NUMBER FORTY
+118EE ; [*1F4E.0020.0002] # WARANG CITI NUMBER FIFTY
+118EF ; [*1F4F.0020.0002] # WARANG CITI NUMBER SIXTY
+118F0 ; [*1F50.0020.0002] # WARANG CITI NUMBER SEVENTY
+118F1 ; [*1F51.0020.0002] # WARANG CITI NUMBER EIGHTY
+118F2 ; [*1F52.0020.0002] # WARANG CITI NUMBER NINETY
+11944 ; [*02C9.0020.0002] # DIVES AKURU DOUBLE DANDA
+11945 ; [*04B9.0020.0002] # DIVES AKURU GAP FILLER
+11946 ; [*0300.0020.0002] # DIVES AKURU END OF TEXT MARK
+119E2 ; [*04BA.0020.0002] # NANDINAGARI SIGN SIDDHAM
+11A3F ; [*043A.0020.0002] # ZANABAZAR SQUARE INITIAL HEAD MARK
+11A40 ; [*043B.0020.0002] # ZANABAZAR SQUARE CLOSING HEAD MARK
+11A41 ; [*043C.0020.0002] # ZANABAZAR SQUARE MARK TSHEG
+11A42 ; [*043D.0020.0002] # ZANABAZAR SQUARE MARK SHAD
+11A43 ; [*043E.0020.0002] # ZANABAZAR SQUARE MARK DOUBLE SHAD
+11A44 ; [*043F.0020.0002] # ZANABAZAR SQUARE MARK LONG TSHEG
+11A45 ; [*0440.0020.0002] # ZANABAZAR SQUARE INITIAL DOUBLE-LINED HEAD MARK
+11A46 ; [*0441.0020.0002] # ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK
+11A9A ; [*0442.0020.0002] # SOYOMBO MARK TSHEG
+11A9B ; [*0443.0020.0002] # SOYOMBO MARK SHAD
+11A9C ; [*0444.0020.0002] # SOYOMBO MARK DOUBLE SHAD
+11A9E ; [*0445.0020.0002] # SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME
+11A9F ; [*0446.0020.0002] # SOYOMBO HEAD MARK WITH MOON AND SUN AND FLAME
+11AA0 ; [*0447.0020.0002] # SOYOMBO HEAD MARK WITH MOON AND SUN
+11AA1 ; [*0448.0020.0002] # SOYOMBO TERMINAL MARK-1
+11AA2 ; [*0449.0020.0002] # SOYOMBO TERMINAL MARK-2
+11C41 ; [*02CA.0020.0002] # BHAIKSUKI DANDA
+11C42 ; [*02CB.0020.0002] # BHAIKSUKI DOUBLE DANDA
+11C43 ; [*047F.0020.0002] # BHAIKSUKI WORD SEPARATOR
+11C44 ; [*0480.0020.0002] # BHAIKSUKI GAP FILLER-1
+11C45 ; [*0481.0020.0002] # BHAIKSUKI GAP FILLER-2
+11C63 ; [*1F35.0020.0002] # BHAIKSUKI NUMBER TEN
+11C64 ; [*1F36.0020.0002] # BHAIKSUKI NUMBER TWENTY
+11C65 ; [*1F37.0020.0002] # BHAIKSUKI NUMBER THIRTY
+11C66 ; [*1F38.0020.0002] # BHAIKSUKI NUMBER FORTY
+11C67 ; [*1F39.0020.0002] # BHAIKSUKI NUMBER FIFTY
+11C68 ; [*1F3A.0020.0002] # BHAIKSUKI NUMBER SIXTY
+11C69 ; [*1F3B.0020.0002] # BHAIKSUKI NUMBER SEVENTY
+11C6A ; [*1F3C.0020.0002] # BHAIKSUKI NUMBER EIGHTY
+11C6B ; [*1F3D.0020.0002] # BHAIKSUKI NUMBER NINETY
+11C6C ; [*1F3E.0020.0002] # BHAIKSUKI HUNDREDS UNIT MARK
+11C70 ; [*044A.0020.0002] # MARCHEN HEAD MARK
+11C71 ; [*044B.0020.0002] # MARCHEN MARK SHAD
+11EF7 ; [*0301.0020.0002] # MAKASAR PASSIMBANG
+11EF8 ; [*0302.0020.0002] # MAKASAR END OF SECTION
+11FC0 ; [*1E3D.0020.0002] # TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH
+11FC1 ; [*1E3E.0020.0002] # TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH
+11FC2 ; [*1E3F.0020.0002] # TAMIL FRACTION ONE EIGHTIETH
+11FC3 ; [*1E40.0020.0002] # TAMIL FRACTION ONE SIXTY-FOURTH
+11FC4 ; [*1E41.0020.0002] # TAMIL FRACTION ONE FORTIETH
+11FC5 ; [*1E42.0020.0002] # TAMIL FRACTION ONE THIRTY-SECOND
+11FC6 ; [*1E43.0020.0002] # TAMIL FRACTION THREE EIGHTIETHS
+11FC7 ; [*1E44.0020.0002] # TAMIL FRACTION THREE SIXTY-FOURTHS
+11FC8 ; [*1E45.0020.0002] # TAMIL FRACTION ONE TWENTIETH
+11FC9 ; [*1E46.0020.0002] # TAMIL FRACTION ONE SIXTEENTH-1
+11FCA ; [*1E47.0020.0002] # TAMIL FRACTION ONE SIXTEENTH-2
+11FCB ; [*1E48.0020.0002] # TAMIL FRACTION ONE TENTH
+11FCC ; [*1E49.0020.0002] # TAMIL FRACTION ONE EIGHTH
+11FCD ; [*1E4A.0020.0002] # TAMIL FRACTION THREE TWENTIETHS
+11FCE ; [*1E4B.0020.0002] # TAMIL FRACTION THREE SIXTEENTHS
+11FCF ; [*1E4C.0020.0002] # TAMIL FRACTION ONE FIFTH
+11FD0 ; [*1E4D.0020.0002] # TAMIL FRACTION ONE QUARTER
+11FD1 ; [*1E4E.0020.0002] # TAMIL FRACTION ONE HALF-1
+11FD2 ; [*1E4F.0020.0002] # TAMIL FRACTION ONE HALF-2
+11FD3 ; [*1E50.0020.0002] # TAMIL FRACTION THREE QUARTERS
+11FD4 ; [*1E51.0020.0002] # TAMIL FRACTION DOWNSCALING FACTOR KIIZH
+11FD5 ; [*0587.0020.0002] # TAMIL SIGN NEL
+11FD6 ; [*0588.0020.0002] # TAMIL SIGN CEVITU
+11FD7 ; [*0589.0020.0002] # TAMIL SIGN AAZHAAKKU
+11FD8 ; [*058A.0020.0002] # TAMIL SIGN UZHAKKU
+11FD9 ; [*058B.0020.0002] # TAMIL SIGN MUUVUZHAKKU
+11FDA ; [*058C.0020.0002] # TAMIL SIGN KURUNI
+11FDB ; [*058D.0020.0002] # TAMIL SIGN PATHAKKU
+11FDC ; [*058E.0020.0002] # TAMIL SIGN MUKKURUNI
+11FE1 ; [*058F.0020.0002] # TAMIL SIGN PAARAM
+11FE2 ; [*0590.0020.0002] # TAMIL SIGN KUZHI
+11FE3 ; [*0591.0020.0002] # TAMIL SIGN VELI
+11FE4 ; [*0592.0020.0002] # TAMIL WET CULTIVATION SIGN
+11FE5 ; [*0593.0020.0002] # TAMIL DRY CULTIVATION SIGN
+11FE6 ; [*0594.0020.0002] # TAMIL LAND SIGN
+11FE7 ; [*0595.0020.0002] # TAMIL SALT PAN SIGN
+11FE8 ; [*0596.0020.0002] # TAMIL TRADITIONAL CREDIT SIGN
+11FE9 ; [*0597.0020.0002] # TAMIL TRADITIONAL NUMBER SIGN
+11FEA ; [*0598.0020.0002] # TAMIL CURRENT SIGN
+11FEB ; [*0599.0020.0002] # TAMIL AND ODD SIGN
+11FEC ; [*059A.0020.0002] # TAMIL SPENT SIGN
+11FED ; [*059B.0020.0002] # TAMIL TOTAL SIGN
+11FEE ; [*059C.0020.0002] # TAMIL IN POSSESSION SIGN
+11FEF ; [*059D.0020.0002] # TAMIL STARTING FROM SIGN
+11FF0 ; [*059E.0020.0002] # TAMIL SIGN MUTHALIYA
+11FF1 ; [*059F.0020.0002] # TAMIL SIGN VAKAIYARAA
+11FFF ; [*04BB.0020.0002] # TAMIL PUNCTUATION END OF TEXT
+12432 ; [*1FFE.0020.0002] # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH
+12433 ; [*1FFF.0020.0002] # CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN
+1245A ; [*2000.0020.0002] # CUNEIFORM NUMERIC SIGN ONE THIRD DISH
+1245B ; [*2001.0020.0002] # CUNEIFORM NUMERIC SIGN TWO THIRDS DISH
+1245C ; [*2002.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH
+1245D ; [*2003.0020.0002] # CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A
+1245E ; [*2004.0020.0002] # CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A
+1245F ; [*2005.0020.0002] # CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH
+12460 ; [*2006.0020.0002] # CUNEIFORM NUMERIC SIGN ONE QUARTER ASH
+12461 ; [*2007.0020.0002] # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH
+12462 ; [*2008.0020.0002] # CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
+12463 ; [*2009.0020.0002] # CUNEIFORM NUMERIC SIGN ONE QUARTER GUR
+12464 ; [*200A.0020.0002] # CUNEIFORM NUMERIC SIGN ONE HALF GUR
+12465 ; [*200B.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE ONE THIRD
+12466 ; [*200C.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE TWO THIRDS
+12467 ; [*200D.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE FORTY
+12468 ; [*200E.0020.0002] # CUNEIFORM NUMERIC SIGN ELAMITE FIFTY
+12470 ; [*031B.0020.0002] # CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER
+12471 ; [*031C.0020.0002] # CUNEIFORM PUNCTUATION SIGN VERTICAL COLON
+12472 ; [*031D.0020.0002] # CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON
+12473 ; [*031E.0020.0002] # CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
+12474 ; [*031F.0020.0002] # CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
+12FF1 ; [*0320.0020.0002] # CYPRO-MINOAN SIGN CM301
+12FF2 ; [*0321.0020.0002] # CYPRO-MINOAN SIGN CM302
+16A6E ; [*02CC.0020.0002] # MRO DANDA
+16A6F ; [*02CD.0020.0002] # MRO DOUBLE DANDA
+16AF5 ; [*0292.0020.0002] # BASSA VAH FULL STOP
+16B37 ; [*04BC.0020.0002] # PAHAWH HMONG SIGN VOS THOM
+16B38 ; [*04BD.0020.0002] # PAHAWH HMONG SIGN VOS TSHAB CEEB
+16B39 ; [*04BE.0020.0002] # PAHAWH HMONG SIGN CIM CHEEM
+16B3A ; [*04BF.0020.0002] # PAHAWH HMONG SIGN VOS THIAB
+16B3B ; [*04C0.0020.0002] # PAHAWH HMONG SIGN VOS FEEM
+16B3C ; [*1155.0020.0002] # PAHAWH HMONG SIGN XYEEM NTXIV
+16B3D ; [*1156.0020.0002] # PAHAWH HMONG SIGN XYEEM RHO
+16B3E ; [*1157.0020.0002] # PAHAWH HMONG SIGN XYEEM TOV
+16B3F ; [*1158.0020.0002] # PAHAWH HMONG SIGN XYEEM FAIB
+16B44 ; [*04C1.0020.0002] # PAHAWH HMONG SIGN XAUS
+16B45 ; [*1159.0020.0002] # PAHAWH HMONG SIGN CIM TSOV ROG
+16B5B ; [*1F53.0020.0002] # PAHAWH HMONG NUMBER TENS
+16B5C ; [*1F54.0020.0002] # PAHAWH HMONG NUMBER HUNDREDS
+16B5D ; [*1F55.0020.0002] # PAHAWH HMONG NUMBER TEN THOUSANDS
+16B5E ; [*1F56.0020.0002] # PAHAWH HMONG NUMBER MILLIONS
+16B5F ; [*1F57.0020.0002] # PAHAWH HMONG NUMBER HUNDRED MILLIONS
+16B60 ; [*1F58.0020.0002] # PAHAWH HMONG NUMBER TEN BILLIONS
+16B61 ; [*1F59.0020.0002] # PAHAWH HMONG NUMBER TRILLIONS
+16E8A ; [*1F5A.0020.0002] # MEDEFAIDRIN NUMBER TEN
+16E8B ; [*1F5B.0020.0002] # MEDEFAIDRIN NUMBER ELEVEN
+16E8C ; [*1F5C.0020.0002] # MEDEFAIDRIN NUMBER TWELVE
+16E8D ; [*1F5D.0020.0002] # MEDEFAIDRIN NUMBER THIRTEEN
+16E8E ; [*1F5E.0020.0002] # MEDEFAIDRIN NUMBER FOURTEEN
+16E8F ; [*1F5F.0020.0002] # MEDEFAIDRIN NUMBER FIFTEEN
+16E90 ; [*1F60.0020.0002] # MEDEFAIDRIN NUMBER SIXTEEN
+16E91 ; [*1F61.0020.0002] # MEDEFAIDRIN NUMBER SEVENTEEN
+16E92 ; [*1F62.0020.0002] # MEDEFAIDRIN NUMBER EIGHTEEN
+16E93 ; [*1F63.0020.0002] # MEDEFAIDRIN NUMBER NINETEEN
+16E97 ; [*0236.0020.0002] # MEDEFAIDRIN COMMA
+16E98 ; [*0293.0020.0002] # MEDEFAIDRIN FULL STOP
+16E99 ; [*04C2.0020.0002] # MEDEFAIDRIN SYMBOL AIVA
+16E9A ; [*04C3.0020.0002] # MEDEFAIDRIN EXCLAMATION OH
+16FE2 ; [*023A.0020.0002] # OLD CHINESE HOOK MARK
+16FE4 ; [.0000.0000.0000] # KHITAN SMALL SCRIPT FILLER
+1AFF0 ; [*053F.0020.0002] # KATAKANA LETTER MINNAN TONE-2
+1AFF1 ; [*0540.0020.0002] # KATAKANA LETTER MINNAN TONE-3
+1AFF2 ; [*0541.0020.0002] # KATAKANA LETTER MINNAN TONE-4
+1AFF3 ; [*0542.0020.0002] # KATAKANA LETTER MINNAN TONE-5
+1AFF5 ; [*0543.0020.0002] # KATAKANA LETTER MINNAN TONE-7
+1AFF6 ; [*0544.0020.0002] # KATAKANA LETTER MINNAN TONE-8
+1AFF7 ; [*0545.0020.0002] # KATAKANA LETTER MINNAN NASALIZED TONE-1
+1AFF8 ; [*0546.0020.0002] # KATAKANA LETTER MINNAN NASALIZED TONE-2
+1AFF9 ; [*0547.0020.0002] # KATAKANA LETTER MINNAN NASALIZED TONE-3
+1AFFA ; [*0548.0020.0002] # KATAKANA LETTER MINNAN NASALIZED TONE-4
+1AFFB ; [*0549.0020.0002] # KATAKANA LETTER MINNAN NASALIZED TONE-5
+1AFFD ; [*054A.0020.0002] # KATAKANA LETTER MINNAN NASALIZED TONE-7
+1AFFE ; [*054B.0020.0002] # KATAKANA LETTER MINNAN NASALIZED TONE-8
+1BC9C ; [*13C1.0020.0002] # DUPLOYAN SIGN O WITH CROSS
+1BC9F ; [*0294.0020.0002] # DUPLOYAN PUNCTUATION CHINOOK FULL STOP
+1CF00 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT
+1CF01 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT
+1CF02 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK TSATA ON LEFT
+1CF03 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK GORAZDO NIZKO ON LEFT
+1CF04 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK NIZKO ON LEFT
+1CF05 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK SREDNE ON LEFT
+1CF06 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK MALO POVYSHE ON LEFT
+1CF07 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK POVYSHE ON LEFT
+1CF08 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK VYSOKO ON LEFT
+1CF09 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON LEFT
+1CF0A ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON LEFT
+1CF0B ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON LEFT
+1CF0C ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON RIGHT
+1CF0D ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON RIGHT
+1CF0E ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK TSATA ON RIGHT
+1CF0F ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK GORAZDO NIZKO ON RIGHT
+1CF10 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK NIZKO ON RIGHT
+1CF11 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK SREDNE ON RIGHT
+1CF12 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK MALO POVYSHE ON RIGHT
+1CF13 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK POVYSHE ON RIGHT
+1CF14 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK VYSOKO ON RIGHT
+1CF15 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON RIGHT
+1CF16 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON RIGHT
+1CF17 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON RIGHT
+1CF18 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK TSATA S KRYZHEM
+1CF19 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK MALO POVYSHE S KRYZHEM
+1CF1A ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK STRANNO MALO POVYSHE
+1CF1B ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK POVYSHE S KRYZHEM
+1CF1C ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK POVYSHE STRANNO
+1CF1D ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK VYSOKO S KRYZHEM
+1CF1E ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK MALO POVYSHE STRANNO
+1CF1F ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK GORAZDO VYSOKO
+1CF20 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK ZELO
+1CF21 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK ON
+1CF22 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK RAVNO
+1CF23 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK TIKHAYA
+1CF24 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK BORZAYA
+1CF25 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK UDARKA
+1CF26 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK PODVERTKA
+1CF27 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK LOMKA
+1CF28 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK KUPNAYA
+1CF29 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK KACHKA
+1CF2A ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK ZEVOK
+1CF2B ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK SKOBA
+1CF2C ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK RAZSEKA
+1CF2D ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK KRYZH ON LEFT
+1CF30 ; [.0000.0000.0000] # ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO
+1CF31 ; [.0000.0000.0000] # ZNAMENNY COMBINING TONAL RANGE MARK SVETLO
+1CF32 ; [.0000.0000.0000] # ZNAMENNY COMBINING TONAL RANGE MARK TRESVETLO
+1CF33 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK ZADERZHKA
+1CF34 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK DEMESTVENNY ZADERZHKA
+1CF35 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK OTSECHKA
+1CF36 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK PODCHASHIE
+1CF37 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK PODCHASHIE WITH VERTICAL STROKE
+1CF38 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK CHASHKA
+1CF39 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK CHASHKA POLNAYA
+1CF3A ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK OBLACHKO
+1CF3B ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK SOROCHYA NOZHKA
+1CF3C ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK TOCHKA
+1CF3D ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK DVOETOCHIE
+1CF3E ; [.0000.0000.0000] # ZNAMENNY COMBINING ATTACHING VERTICAL OMET
+1CF3F ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK CURVED OMET
+1CF40 ; [.0000.0000.0000] # ZNAMENNY COMBINING MARK KRYZH
+1CF41 ; [.0000.0000.0000] # ZNAMENNY COMBINING LOWER TONAL RANGE INDICATOR
+1CF42 ; [.0000.0000.0000] # ZNAMENNY PRIZNAK MODIFIER LEVEL-2
+1CF43 ; [.0000.0000.0000] # ZNAMENNY PRIZNAK MODIFIER LEVEL-3
+1CF44 ; [.0000.0000.0000] # ZNAMENNY PRIZNAK MODIFIER DIRECTION FLIP
+1CF45 ; [.0000.0000.0000] # ZNAMENNY PRIZNAK MODIFIER KRYZH
+1CF46 ; [.0000.0000.0000] # ZNAMENNY PRIZNAK MODIFIER ROG
+1CF50 ; [*115B.0020.0002] # ZNAMENNY NEUME KRYUK
+1CF51 ; [*115C.0020.0002] # ZNAMENNY NEUME KRYUK TIKHY
+1CF52 ; [*115D.0020.0002] # ZNAMENNY NEUME PARAKLIT
+1CF53 ; [*115E.0020.0002] # ZNAMENNY NEUME DVA V CHELNU
+1CF54 ; [*115F.0020.0002] # ZNAMENNY NEUME KLYUCH
+1CF55 ; [*1160.0020.0002] # ZNAMENNY NEUME ZANOZHEK
+1CF56 ; [*1161.0020.0002] # ZNAMENNY NEUME STOPITSA
+1CF57 ; [*1162.0020.0002] # ZNAMENNY NEUME STOPITSA S OCHKOM
+1CF58 ; [*1163.0020.0002] # ZNAMENNY NEUME PEREVODKA
+1CF59 ; [*1164.0020.0002] # ZNAMENNY NEUME PEREVODKA NEPOSTOYANNAYA
+1CF5A ; [*1165.0020.0002] # ZNAMENNY NEUME STOPITSA WITH SOROCHYA NOZHKA
+1CF5B ; [*1166.0020.0002] # ZNAMENNY NEUME CHELYUSTKA
+1CF5C ; [*1167.0020.0002] # ZNAMENNY NEUME PALKA
+1CF5D ; [*1168.0020.0002] # ZNAMENNY NEUME ZAPYATAYA
+1CF5E ; [*1169.0020.0002] # ZNAMENNY NEUME GOLUBCHIK BORZY
+1CF5F ; [*116A.0020.0002] # ZNAMENNY NEUME GOLUBCHIK TIKHY
+1CF60 ; [*116B.0020.0002] # ZNAMENNY NEUME GOLUBCHIK MRACHNY
+1CF61 ; [*116C.0020.0002] # ZNAMENNY NEUME GOLUBCHIK SVETLY
+1CF62 ; [*116D.0020.0002] # ZNAMENNY NEUME GOLUBCHIK TRESVETLY
+1CF63 ; [*116E.0020.0002] # ZNAMENNY NEUME VRAKHIYA PROSTAYA
+1CF64 ; [*116F.0020.0002] # ZNAMENNY NEUME VRAKHIYA MRACHNAYA
+1CF65 ; [*1170.0020.0002] # ZNAMENNY NEUME VRAKHIYA SVETLAYA
+1CF66 ; [*1171.0020.0002] # ZNAMENNY NEUME VRAKHIYA TRESVETLAYA
+1CF67 ; [*1172.0020.0002] # ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA PROSTAYA
+1CF68 ; [*1173.0020.0002] # ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA MRACHNAYA
+1CF69 ; [*1174.0020.0002] # ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA SVETLAYA
+1CF6A ; [*1175.0020.0002] # ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA TRESVETLAYA
+1CF6B ; [*1176.0020.0002] # ZNAMENNY NEUME DOUBLE ZAPYATAYA
+1CF6C ; [*1177.0020.0002] # ZNAMENNY NEUME REVERSED CHELYUSTKA
+1CF6D ; [*1178.0020.0002] # ZNAMENNY NEUME DERBITSA
+1CF6E ; [*1179.0020.0002] # ZNAMENNY NEUME KHAMILO
+1CF6F ; [*117A.0020.0002] # ZNAMENNY NEUME CHASHKA
+1CF70 ; [*117B.0020.0002] # ZNAMENNY NEUME PODCHASHIE
+1CF71 ; [*117C.0020.0002] # ZNAMENNY NEUME SKAMEYTSA MRACHNAYA
+1CF72 ; [*117D.0020.0002] # ZNAMENNY NEUME SKAMEYTSA SVETLAYA
+1CF73 ; [*117E.0020.0002] # ZNAMENNY NEUME SKAMEYTSA TRESVETLAYA
+1CF74 ; [*117F.0020.0002] # ZNAMENNY NEUME SKAMEYTSA TIKHAYA
+1CF75 ; [*1180.0020.0002] # ZNAMENNY NEUME DEMESTVENNY KLYUCH
+1CF76 ; [*1181.0020.0002] # ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA SVETLAYA
+1CF77 ; [*1182.0020.0002] # ZNAMENNY NEUME SKAMEYTSA KLYUCHENEPOSTOYANNAYA
+1CF78 ; [*1183.0020.0002] # ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA TIKHAYA
+1CF79 ; [*1184.0020.0002] # ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA PROSTAYA
+1CF7A ; [*1185.0020.0002] # ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA SVETLAYA
+1CF7B ; [*1186.0020.0002] # ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA NEPOSTOYANNAYA
+1CF7C ; [*1187.0020.0002] # ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA KLYUCHEVAYA
+1CF7D ; [*1188.0020.0002] # ZNAMENNY NEUME SLOZHITIE
+1CF7E ; [*1189.0020.0002] # ZNAMENNY NEUME SLOZHITIE S ZAPYATOY
+1CF7F ; [*118A.0020.0002] # ZNAMENNY NEUME SLOZHITIE ZAKRYTOE
+1CF80 ; [*118B.0020.0002] # ZNAMENNY NEUME SLOZHITIE S KRYZHEM
+1CF81 ; [*118C.0020.0002] # ZNAMENNY NEUME KRYZH
+1CF82 ; [*118D.0020.0002] # ZNAMENNY NEUME ROG
+1CF83 ; [*118E.0020.0002] # ZNAMENNY NEUME FITA
+1CF84 ; [*118F.0020.0002] # ZNAMENNY NEUME KOBYLA
+1CF85 ; [*1190.0020.0002] # ZNAMENNY NEUME ZMEYTSA
+1CF86 ; [*1191.0020.0002] # ZNAMENNY NEUME STATYA
+1CF87 ; [*1192.0020.0002] # ZNAMENNY NEUME STATYA S ZAPYATOY
+1CF88 ; [*1193.0020.0002] # ZNAMENNY NEUME STATYA S KRYZHEM
+1CF89 ; [*1194.0020.0002] # ZNAMENNY NEUME STATYA S ZAPYATOY I KRYZHEM
+1CF8A ; [*1195.0020.0002] # ZNAMENNY NEUME STATYA S KRYZHEM I ZAPYATOY
+1CF8B ; [*1196.0020.0002] # ZNAMENNY NEUME STATYA ZAKRYTAYA
+1CF8C ; [*1197.0020.0002] # ZNAMENNY NEUME STATYA ZAKRYTAYA S ZAPYATOY
+1CF8D ; [*1198.0020.0002] # ZNAMENNY NEUME STATYA S ROGOM
+1CF8E ; [*1199.0020.0002] # ZNAMENNY NEUME STATYA S DVUMYA ZAPYATYMI
+1CF8F ; [*119A.0020.0002] # ZNAMENNY NEUME STATYA S ZAPYATOY I PODCHASHIEM
+1CF90 ; [*119B.0020.0002] # ZNAMENNY NEUME POLKULIZMY
+1CF91 ; [*119C.0020.0002] # ZNAMENNY NEUME STATYA NEPOSTOYANNAYA
+1CF92 ; [*119D.0020.0002] # ZNAMENNY NEUME STRELA PROSTAYA
+1CF93 ; [*119E.0020.0002] # ZNAMENNY NEUME STRELA MRACHNOTIKHAYA
+1CF94 ; [*119F.0020.0002] # ZNAMENNY NEUME STRELA KRYZHEVAYA
+1CF95 ; [*11A0.0020.0002] # ZNAMENNY NEUME STRELA POLUPOVODNAYA
+1CF96 ; [*11A1.0020.0002] # ZNAMENNY NEUME STRELA POVODNAYA
+1CF97 ; [*11A2.0020.0002] # ZNAMENNY NEUME STRELA NEPOSTOYANNAYA
+1CF98 ; [*11A3.0020.0002] # ZNAMENNY NEUME STRELA KLYUCHEPOVODNAYA
+1CF99 ; [*11A4.0020.0002] # ZNAMENNY NEUME STRELA KLYUCHENEPOSTOYANNAYA
+1CF9A ; [*11A5.0020.0002] # ZNAMENNY NEUME STRELA TIKHAYA PUTNAYA
+1CF9B ; [*11A6.0020.0002] # ZNAMENNY NEUME STRELA DVOECHELNAYA
+1CF9C ; [*11A7.0020.0002] # ZNAMENNY NEUME STRELA DVOECHELNOKRYZHEVAYA
+1CF9D ; [*11A8.0020.0002] # ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA
+1CF9E ; [*11A9.0020.0002] # ZNAMENNY NEUME STRELA DVOECHELNAYA KLYUCHEVAYA
+1CF9F ; [*11AA.0020.0002] # ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA KLYUCHEVAYA
+1CFA0 ; [*11AB.0020.0002] # ZNAMENNY NEUME STRELA GROMNAYA WITH SINGLE ZAPYATAYA
+1CFA1 ; [*11AC.0020.0002] # ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA
+1CFA2 ; [*11AD.0020.0002] # ZNAMENNY NEUME STRELA GROMNAYA
+1CFA3 ; [*11AE.0020.0002] # ZNAMENNY NEUME STRELA GROMOPOVODNAYA
+1CFA4 ; [*11AF.0020.0002] # ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA
+1CFA5 ; [*11B0.0020.0002] # ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA
+1CFA6 ; [*11B1.0020.0002] # ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA POVODNAYA
+1CFA7 ; [*11B2.0020.0002] # ZNAMENNY NEUME MECHIK
+1CFA8 ; [*11B3.0020.0002] # ZNAMENNY NEUME MECHIK POVODNY
+1CFA9 ; [*11B4.0020.0002] # ZNAMENNY NEUME MECHIK KLYUCHEVOY
+1CFAA ; [*11B5.0020.0002] # ZNAMENNY NEUME MECHIK KLYUCHEPOVODNY
+1CFAB ; [*11B6.0020.0002] # ZNAMENNY NEUME MECHIK KLYUCHENEPOSTOYANNY
+1CFAC ; [*11B7.0020.0002] # ZNAMENNY NEUME STRELA TRYASOGLASNAYA
+1CFAD ; [*11B8.0020.0002] # ZNAMENNY NEUME STRELA TRYASOPOVODNAYA
+1CFAE ; [*11B9.0020.0002] # ZNAMENNY NEUME STRELA TRYASOSTRELNAYA
+1CFAF ; [*11BA.0020.0002] # ZNAMENNY NEUME OSOKA
+1CFB0 ; [*11BB.0020.0002] # ZNAMENNY NEUME OSOKA SVETLAYA
+1CFB1 ; [*11BC.0020.0002] # ZNAMENNY NEUME OSOKA TRESVETLAYA
+1CFB2 ; [*11BD.0020.0002] # ZNAMENNY NEUME OSOKA KRYUKOVAYA SVETLAYA
+1CFB3 ; [*11BE.0020.0002] # ZNAMENNY NEUME OSOKA KLYUCHEVAYA SVETLAYA
+1CFB4 ; [*11BF.0020.0002] # ZNAMENNY NEUME OSOKA KLYUCHEVAYA NEPOSTOYANNAYA
+1CFB5 ; [*11C0.0020.0002] # ZNAMENNY NEUME STRELA KRYUKOVAYA
+1CFB6 ; [*11C1.0020.0002] # ZNAMENNY NEUME STRELA KRYUKOVAYA POVODNAYA
+1CFB7 ; [*11C2.0020.0002] # ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA WITH SINGLE ZAPYATAYA
+1CFB8 ; [*11C3.0020.0002] # ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA
+1CFB9 ; [*11C4.0020.0002] # ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA
+1CFBA ; [*11C5.0020.0002] # ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA
+1CFBB ; [*11C6.0020.0002] # ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA
+1CFBC ; [*11C7.0020.0002] # ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA
+1CFBD ; [*11C8.0020.0002] # ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA POVODNAYA
+1CFBE ; [*11C9.0020.0002] # ZNAMENNY NEUME STRELA KRYUKOVAYA TRYASKA
+1CFBF ; [*11CA.0020.0002] # ZNAMENNY NEUME KUFISMA
+1CFC0 ; [*11CB.0020.0002] # ZNAMENNY NEUME OBLAKO
+1CFC1 ; [*11CC.0020.0002] # ZNAMENNY NEUME DUDA
+1CFC2 ; [*11CD.0020.0002] # ZNAMENNY NEUME NEMKA
+1CFC3 ; [*11CE.0020.0002] # ZNAMENNY NEUME PAUK
+1D000 ; [*11CF.0020.0002] # BYZANTINE MUSICAL SYMBOL PSILI
+1D001 ; [*11D0.0020.0002] # BYZANTINE MUSICAL SYMBOL DASEIA
+1D002 ; [*11D1.0020.0002] # BYZANTINE MUSICAL SYMBOL PERISPOMENI
+1D003 ; [*11D2.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON
+1D004 ; [*11D3.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIA DIPLI
+1D005 ; [*11D4.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON
+1D006 ; [*11D5.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIA DIPLI
+1D007 ; [*11D6.0020.0002] # BYZANTINE MUSICAL SYMBOL KATHISTI
+1D008 ; [*11D7.0020.0002] # BYZANTINE MUSICAL SYMBOL SYRMATIKI
+1D009 ; [*11D8.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI
+1D00A ; [*11D9.0020.0002] # BYZANTINE MUSICAL SYMBOL YPOKRISIS
+1D00B ; [*11DA.0020.0002] # BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI
+1D00C ; [*11DB.0020.0002] # BYZANTINE MUSICAL SYMBOL KREMASTI
+1D00D ; [*11DC.0020.0002] # BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON
+1D00E ; [*11DD.0020.0002] # BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON
+1D00F ; [*11DE.0020.0002] # BYZANTINE MUSICAL SYMBOL TELEIA
+1D010 ; [*11DF.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA
+1D011 ; [*11E0.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOS
+1D012 ; [*11E1.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI
+1D013 ; [*11E2.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNEVMA
+1D014 ; [*11E3.0020.0002] # BYZANTINE MUSICAL SYMBOL THITA
+1D015 ; [*11E4.0020.0002] # BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION
+1D016 ; [*11E5.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON ARCHAION
+1D017 ; [*11E6.0020.0002] # BYZANTINE MUSICAL SYMBOL PSILON
+1D018 ; [*11E7.0020.0002] # BYZANTINE MUSICAL SYMBOL CHAMILON
+1D019 ; [*11E8.0020.0002] # BYZANTINE MUSICAL SYMBOL VATHY
+1D01A ; [*11E9.0020.0002] # BYZANTINE MUSICAL SYMBOL ISON ARCHAION
+1D01B ; [*11EA.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION
+1D01C ; [*11EB.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION
+1D01D ; [*11EC.0020.0002] # BYZANTINE MUSICAL SYMBOL SAXIMATA
+1D01E ; [*11ED.0020.0002] # BYZANTINE MUSICAL SYMBOL PARICHON
+1D01F ; [*11EE.0020.0002] # BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA
+1D020 ; [*11EF.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION
+1D021 ; [*11F0.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION
+1D022 ; [*11F1.0020.0002] # BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION
+1D023 ; [*11F2.0020.0002] # BYZANTINE MUSICAL SYMBOL APOTHEMA
+1D024 ; [*11F3.0020.0002] # BYZANTINE MUSICAL SYMBOL KLASMA
+1D025 ; [*11F4.0020.0002] # BYZANTINE MUSICAL SYMBOL REVMA
+1D026 ; [*11F5.0020.0002] # BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION
+1D027 ; [*11F6.0020.0002] # BYZANTINE MUSICAL SYMBOL TINAGMA
+1D028 ; [*11F7.0020.0002] # BYZANTINE MUSICAL SYMBOL ANATRICHISMA
+1D029 ; [*11F8.0020.0002] # BYZANTINE MUSICAL SYMBOL SEISMA
+1D02A ; [*11F9.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION
+1D02B ; [*11FA.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU
+1D02C ; [*11FB.0020.0002] # BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION
+1D02D ; [*11FC.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMA
+1D02E ; [*11FD.0020.0002] # BYZANTINE MUSICAL SYMBOL LEMOI
+1D02F ; [*11FE.0020.0002] # BYZANTINE MUSICAL SYMBOL DYO
+1D030 ; [*11FF.0020.0002] # BYZANTINE MUSICAL SYMBOL TRIA
+1D031 ; [*1200.0020.0002] # BYZANTINE MUSICAL SYMBOL TESSERA
+1D032 ; [*1201.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMATA
+1D033 ; [*1202.0020.0002] # BYZANTINE MUSICAL SYMBOL APESO EXO NEO
+1D034 ; [*1203.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION
+1D035 ; [*1204.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIFTHORA
+1D036 ; [*1205.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION
+1D037 ; [*1206.0020.0002] # BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON
+1D038 ; [*1207.0020.0002] # BYZANTINE MUSICAL SYMBOL PELASTON
+1D039 ; [*1208.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTON
+1D03A ; [*1209.0020.0002] # BYZANTINE MUSICAL SYMBOL KONTEVMA
+1D03B ; [*120A.0020.0002] # BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION
+1D03C ; [*120B.0020.0002] # BYZANTINE MUSICAL SYMBOL RAPISMA
+1D03D ; [*120C.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION
+1D03E ; [*120D.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION
+1D03F ; [*120E.0020.0002] # BYZANTINE MUSICAL SYMBOL ICHADIN
+1D040 ; [*120F.0020.0002] # BYZANTINE MUSICAL SYMBOL NANA
+1D041 ; [*1210.0020.0002] # BYZANTINE MUSICAL SYMBOL PETASMA
+1D042 ; [*1211.0020.0002] # BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO
+1D043 ; [*1212.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKON ALLO
+1D044 ; [*1213.0020.0002] # BYZANTINE MUSICAL SYMBOL STRAGGISMATA
+1D045 ; [*1214.0020.0002] # BYZANTINE MUSICAL SYMBOL GRONTHISMATA
+1D046 ; [*1215.0020.0002] # BYZANTINE MUSICAL SYMBOL ISON NEO
+1D047 ; [*1216.0020.0002] # BYZANTINE MUSICAL SYMBOL OLIGON NEO
+1D048 ; [*1217.0020.0002] # BYZANTINE MUSICAL SYMBOL OXEIA NEO
+1D049 ; [*1218.0020.0002] # BYZANTINE MUSICAL SYMBOL PETASTI
+1D04A ; [*1219.0020.0002] # BYZANTINE MUSICAL SYMBOL KOUFISMA
+1D04B ; [*121A.0020.0002] # BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA
+1D04C ; [*121B.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA
+1D04D ; [*121C.0020.0002] # BYZANTINE MUSICAL SYMBOL PELASTON NEO
+1D04E ; [*121D.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO
+1D04F ; [*121E.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO
+1D050 ; [*121F.0020.0002] # BYZANTINE MUSICAL SYMBOL YPSILI
+1D051 ; [*1220.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO
+1D052 ; [*1221.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO
+1D053 ; [*1222.0020.0002] # BYZANTINE MUSICAL SYMBOL YPORROI
+1D054 ; [*1223.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON
+1D055 ; [*1224.0020.0002] # BYZANTINE MUSICAL SYMBOL ELAFRON
+1D056 ; [*1225.0020.0002] # BYZANTINE MUSICAL SYMBOL CHAMILI
+1D057 ; [*1226.0020.0002] # BYZANTINE MUSICAL SYMBOL MIKRON ISON
+1D058 ; [*1227.0020.0002] # BYZANTINE MUSICAL SYMBOL VAREIA NEO
+1D059 ; [*1228.0020.0002] # BYZANTINE MUSICAL SYMBOL PIASMA NEO
+1D05A ; [*1229.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTON NEO
+1D05B ; [*122A.0020.0002] # BYZANTINE MUSICAL SYMBOL OMALON
+1D05C ; [*122B.0020.0002] # BYZANTINE MUSICAL SYMBOL ANTIKENOMA
+1D05D ; [*122C.0020.0002] # BYZANTINE MUSICAL SYMBOL LYGISMA
+1D05E ; [*122D.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO
+1D05F ; [*122E.0020.0002] # BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO
+1D060 ; [*122F.0020.0002] # BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA
+1D061 ; [*1230.0020.0002] # BYZANTINE MUSICAL SYMBOL KYLISMA
+1D062 ; [*1231.0020.0002] # BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA
+1D063 ; [*1232.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKON NEO
+1D064 ; [*1233.0020.0002] # BYZANTINE MUSICAL SYMBOL EKSTREPTON
+1D065 ; [*1234.0020.0002] # BYZANTINE MUSICAL SYMBOL SYNAGMA NEO
+1D066 ; [*1235.0020.0002] # BYZANTINE MUSICAL SYMBOL SYRMA
+1D067 ; [*1236.0020.0002] # BYZANTINE MUSICAL SYMBOL CHOREVMA NEO
+1D068 ; [*1237.0020.0002] # BYZANTINE MUSICAL SYMBOL EPEGERMA
+1D069 ; [*1238.0020.0002] # BYZANTINE MUSICAL SYMBOL SEISMA NEO
+1D06A ; [*1239.0020.0002] # BYZANTINE MUSICAL SYMBOL XIRON KLASMA
+1D06B ; [*123A.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON
+1D06C ; [*123B.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA
+1D06D ; [*123C.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA
+1D06E ; [*123D.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA
+1D06F ; [*123E.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA
+1D070 ; [*123F.0020.0002] # BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA
+1D071 ; [*1240.0020.0002] # BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA
+1D072 ; [*1241.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON
+1D073 ; [*1242.0020.0002] # BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON
+1D074 ; [*1243.0020.0002] # BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON
+1D075 ; [*1244.0020.0002] # BYZANTINE MUSICAL SYMBOL OYRANISMA NEO
+1D076 ; [*1245.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO
+1D077 ; [*1246.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO
+1D078 ; [*1247.0020.0002] # BYZANTINE MUSICAL SYMBOL THEMA APLOUN
+1D079 ; [*1248.0020.0002] # BYZANTINE MUSICAL SYMBOL THES KAI APOTHES
+1D07A ; [*1249.0020.0002] # BYZANTINE MUSICAL SYMBOL KATAVASMA
+1D07B ; [*124A.0020.0002] # BYZANTINE MUSICAL SYMBOL ENDOFONON
+1D07C ; [*124B.0020.0002] # BYZANTINE MUSICAL SYMBOL YFEN KATO
+1D07D ; [*124C.0020.0002] # BYZANTINE MUSICAL SYMBOL YFEN ANO
+1D07E ; [*124D.0020.0002] # BYZANTINE MUSICAL SYMBOL STAVROS
+1D07F ; [*124E.0020.0002] # BYZANTINE MUSICAL SYMBOL KLASMA ANO
+1D080 ; [*124F.0020.0002] # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
+1D081 ; [*1250.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
+1D082 ; [*1251.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMA ALLO
+1D083 ; [*1252.0020.0002] # BYZANTINE MUSICAL SYMBOL KRATIMA NEO
+1D084 ; [*1253.0020.0002] # BYZANTINE MUSICAL SYMBOL APODERMA NEO
+1D085 ; [*1254.0020.0002] # BYZANTINE MUSICAL SYMBOL APLI
+1D086 ; [*1255.0020.0002] # BYZANTINE MUSICAL SYMBOL DIPLI
+1D087 ; [*1256.0020.0002] # BYZANTINE MUSICAL SYMBOL TRIPLI
+1D088 ; [*1257.0020.0002] # BYZANTINE MUSICAL SYMBOL TETRAPLI
+1D089 ; [*1258.0020.0002] # BYZANTINE MUSICAL SYMBOL KORONIS
+1D08A ; [*1259.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU
+1D08B ; [*125A.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON
+1D08C ; [*125B.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON
+1D08D ; [*125C.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON
+1D08E ; [*125D.0020.0002] # BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU
+1D08F ; [*125E.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON NEO ANO
+1D090 ; [*125F.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA
+1D091 ; [*1260.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA
+1D092 ; [*1261.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON
+1D093 ; [*1262.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO
+1D094 ; [*1263.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO
+1D095 ; [*1264.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA
+1D096 ; [*1265.0020.0002] # BYZANTINE MUSICAL SYMBOL TRIGORGON
+1D097 ; [*1266.0020.0002] # BYZANTINE MUSICAL SYMBOL ARGON
+1D098 ; [*1267.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIDIARGON
+1D099 ; [*1268.0020.0002] # BYZANTINE MUSICAL SYMBOL DIARGON
+1D09A ; [*1269.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI
+1D09B ; [*126A.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI
+1D09C ; [*126B.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI ARGI
+1D09D ; [*126C.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI METRIA
+1D09E ; [*126D.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI MESI
+1D09F ; [*126E.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI GORGI
+1D0A0 ; [*126F.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI
+1D0A1 ; [*1270.0020.0002] # BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI
+1D0A2 ; [*1271.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS
+1D0A3 ; [*1272.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS
+1D0A4 ; [*1273.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS
+1D0A5 ; [*1274.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS
+1D0A6 ; [*1275.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS
+1D0A7 ; [*1276.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS
+1D0A8 ; [*1277.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS
+1D0A9 ; [*1278.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS
+1D0AA ; [*1279.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS
+1D0AB ; [*127A.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS
+1D0AC ; [*127B.0020.0002] # BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS
+1D0AD ; [*127C.0020.0002] # BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS
+1D0AE ; [*127D.0020.0002] # BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS
+1D0AF ; [*127E.0020.0002] # BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS
+1D0B0 ; [*127F.0020.0002] # BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS
+1D0B1 ; [*1280.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS
+1D0B2 ; [*1281.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS
+1D0B3 ; [*1282.0020.0002] # BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS
+1D0B4 ; [*1283.0020.0002] # BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN
+1D0B5 ; [*1284.0020.0002] # BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN
+1D0B6 ; [*1285.0020.0002] # BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU
+1D0B7 ; [*1286.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIFONON
+1D0B8 ; [*1287.0020.0002] # BYZANTINE MUSICAL SYMBOL IMIFTHORON
+1D0B9 ; [*1288.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU
+1D0BA ; [*1289.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA
+1D0BB ; [*128A.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA
+1D0BC ; [*128B.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS
+1D0BD ; [*128C.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI
+1D0BE ; [*128D.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI
+1D0BF ; [*128E.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE
+1D0C0 ; [*128F.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
+1D0C1 ; [*1290.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO
+1D0C2 ; [*1291.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO
+1D0C3 ; [*1292.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS
+1D0C4 ; [*1293.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS
+1D0C5 ; [*1294.0020.0002] # BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS
+1D0C6 ; [*1295.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI
+1D0C7 ; [*1296.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA NENANO
+1D0C8 ; [*1297.0020.0002] # BYZANTINE MUSICAL SYMBOL CHROA ZYGOS
+1D0C9 ; [*1298.0020.0002] # BYZANTINE MUSICAL SYMBOL CHROA KLITON
+1D0CA ; [*1299.0020.0002] # BYZANTINE MUSICAL SYMBOL CHROA SPATHI
+1D0CB ; [*129A.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION
+1D0CC ; [*129B.0020.0002] # BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA
+1D0CD ; [*129C.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION
+1D0CE ; [*129D.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION
+1D0CF ; [*129E.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION
+1D0D0 ; [*129F.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA
+1D0D1 ; [*12A0.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA
+1D0D2 ; [*12A1.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA
+1D0D3 ; [*12A2.0020.0002] # BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA
+1D0D4 ; [*12A3.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA
+1D0D5 ; [*12A4.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA
+1D0D6 ; [*12A5.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA
+1D0D7 ; [*12A6.0020.0002] # BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA
+1D0D8 ; [*12A7.0020.0002] # BYZANTINE MUSICAL SYMBOL GENIKI DIESIS
+1D0D9 ; [*12A8.0020.0002] # BYZANTINE MUSICAL SYMBOL GENIKI YFESIS
+1D0DA ; [*12A9.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI
+1D0DB ; [*12AA.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI
+1D0DC ; [*12AB.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI
+1D0DD ; [*12AC.0020.0002] # BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS
+1D0DE ; [*12AD.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS
+1D0DF ; [*12AE.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU
+1D0E0 ; [*12AF.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU
+1D0E1 ; [*12B0.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU
+1D0E2 ; [*12B1.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS
+1D0E3 ; [*12B2.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU
+1D0E4 ; [*12B3.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU
+1D0E5 ; [*12B4.0020.0002] # BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU
+1D0E6 ; [*12B5.0020.0002] # BYZANTINE MUSICAL SYMBOL DIGRAMMA GG
+1D0E7 ; [*12B6.0020.0002] # BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU
+1D0E8 ; [*12B7.0020.0002] # BYZANTINE MUSICAL SYMBOL STIGMA
+1D0E9 ; [*12B8.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO PA
+1D0EA ; [*12B9.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO VOU
+1D0EB ; [*12BA.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO GA
+1D0EC ; [*12BB.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO DI
+1D0ED ; [*12BC.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO KE
+1D0EE ; [*12BD.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO ZO
+1D0EF ; [*12BE.0020.0002] # BYZANTINE MUSICAL SYMBOL ARKTIKO NI
+1D0F0 ; [*12BF.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO
+1D0F1 ; [*12C0.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO
+1D0F2 ; [*12C1.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO
+1D0F3 ; [*12C2.0020.0002] # BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO
+1D0F4 ; [*12C3.0020.0002] # BYZANTINE MUSICAL SYMBOL KLASMA KATO
+1D0F5 ; [*12C4.0020.0002] # BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+1D100 ; [*12C5.0020.0002] # MUSICAL SYMBOL SINGLE BARLINE
+1D101 ; [*12C6.0020.0002] # MUSICAL SYMBOL DOUBLE BARLINE
+1D102 ; [*12C7.0020.0002] # MUSICAL SYMBOL FINAL BARLINE
+1D103 ; [*12C8.0020.0002] # MUSICAL SYMBOL REVERSE FINAL BARLINE
+1D104 ; [*12C9.0020.0002] # MUSICAL SYMBOL DASHED BARLINE
+1D105 ; [*12CA.0020.0002] # MUSICAL SYMBOL SHORT BARLINE
+1D106 ; [*12CB.0020.0002] # MUSICAL SYMBOL LEFT REPEAT SIGN
+1D107 ; [*12CC.0020.0002] # MUSICAL SYMBOL RIGHT REPEAT SIGN
+1D108 ; [*12CD.0020.0002] # MUSICAL SYMBOL REPEAT DOTS
+1D109 ; [*12CE.0020.0002] # MUSICAL SYMBOL DAL SEGNO
+1D10A ; [*12CF.0020.0002] # MUSICAL SYMBOL DA CAPO
+1D10B ; [*12D0.0020.0002] # MUSICAL SYMBOL SEGNO
+1D10C ; [*12D1.0020.0002] # MUSICAL SYMBOL CODA
+1D10D ; [*12D2.0020.0002] # MUSICAL SYMBOL REPEATED FIGURE-1
+1D10E ; [*12D3.0020.0002] # MUSICAL SYMBOL REPEATED FIGURE-2
+1D10F ; [*12D4.0020.0002] # MUSICAL SYMBOL REPEATED FIGURE-3
+1D110 ; [*12D5.0020.0002] # MUSICAL SYMBOL FERMATA
+1D111 ; [*12D6.0020.0002] # MUSICAL SYMBOL FERMATA BELOW
+1D112 ; [*12D7.0020.0002] # MUSICAL SYMBOL BREATH MARK
+1D113 ; [*12D8.0020.0002] # MUSICAL SYMBOL CAESURA
+1D114 ; [*12D9.0020.0002] # MUSICAL SYMBOL BRACE
+1D115 ; [*12DA.0020.0002] # MUSICAL SYMBOL BRACKET
+1D116 ; [*12DB.0020.0002] # MUSICAL SYMBOL ONE-LINE STAFF
+1D117 ; [*12DC.0020.0002] # MUSICAL SYMBOL TWO-LINE STAFF
+1D118 ; [*12DD.0020.0002] # MUSICAL SYMBOL THREE-LINE STAFF
+1D119 ; [*12DE.0020.0002] # MUSICAL SYMBOL FOUR-LINE STAFF
+1D11A ; [*12DF.0020.0002] # MUSICAL SYMBOL FIVE-LINE STAFF
+1D11B ; [*12E0.0020.0002] # MUSICAL SYMBOL SIX-LINE STAFF
+1D11C ; [*12E1.0020.0002] # MUSICAL SYMBOL SIX-STRING FRETBOARD
+1D11D ; [*12E2.0020.0002] # MUSICAL SYMBOL FOUR-STRING FRETBOARD
+1D11E ; [*12E3.0020.0002] # MUSICAL SYMBOL G CLEF
+1D11F ; [*12E4.0020.0002] # MUSICAL SYMBOL G CLEF OTTAVA ALTA
+1D120 ; [*12E5.0020.0002] # MUSICAL SYMBOL G CLEF OTTAVA BASSA
+1D121 ; [*12E6.0020.0002] # MUSICAL SYMBOL C CLEF
+1D122 ; [*12E7.0020.0002] # MUSICAL SYMBOL F CLEF
+1D123 ; [*12E8.0020.0002] # MUSICAL SYMBOL F CLEF OTTAVA ALTA
+1D124 ; [*12E9.0020.0002] # MUSICAL SYMBOL F CLEF OTTAVA BASSA
+1D125 ; [*12EA.0020.0002] # MUSICAL SYMBOL DRUM CLEF-1
+1D126 ; [*12EB.0020.0002] # MUSICAL SYMBOL DRUM CLEF-2
+1D129 ; [*12FF.0020.0002] # MUSICAL SYMBOL MULTIPLE MEASURE REST
+1D12A ; [*12EF.0020.0002] # MUSICAL SYMBOL DOUBLE SHARP
+1D12B ; [*12F0.0020.0002] # MUSICAL SYMBOL DOUBLE FLAT
+1D12C ; [*12F1.0020.0002] # MUSICAL SYMBOL FLAT UP
+1D12D ; [*12F2.0020.0002] # MUSICAL SYMBOL FLAT DOWN
+1D12E ; [*12F3.0020.0002] # MUSICAL SYMBOL NATURAL UP
+1D12F ; [*12F4.0020.0002] # MUSICAL SYMBOL NATURAL DOWN
+1D130 ; [*12F5.0020.0002] # MUSICAL SYMBOL SHARP UP
+1D131 ; [*12F6.0020.0002] # MUSICAL SYMBOL SHARP DOWN
+1D132 ; [*12F7.0020.0002] # MUSICAL SYMBOL QUARTER TONE SHARP
+1D133 ; [*12F8.0020.0002] # MUSICAL SYMBOL QUARTER TONE FLAT
+1D134 ; [*12F9.0020.0002] # MUSICAL SYMBOL COMMON TIME
+1D135 ; [*12FA.0020.0002] # MUSICAL SYMBOL CUT TIME
+1D136 ; [*12FB.0020.0002] # MUSICAL SYMBOL OTTAVA ALTA
+1D137 ; [*12FC.0020.0002] # MUSICAL SYMBOL OTTAVA BASSA
+1D138 ; [*12FD.0020.0002] # MUSICAL SYMBOL QUINDICESIMA ALTA
+1D139 ; [*12FE.0020.0002] # MUSICAL SYMBOL QUINDICESIMA BASSA
+1D13A ; [*1300.0020.0002] # MUSICAL SYMBOL MULTI REST
+1D13B ; [*1301.0020.0002] # MUSICAL SYMBOL WHOLE REST
+1D13C ; [*1302.0020.0002] # MUSICAL SYMBOL HALF REST
+1D13D ; [*1303.0020.0002] # MUSICAL SYMBOL QUARTER REST
+1D13E ; [*1304.0020.0002] # MUSICAL SYMBOL EIGHTH REST
+1D13F ; [*1305.0020.0002] # MUSICAL SYMBOL SIXTEENTH REST
+1D140 ; [*1306.0020.0002] # MUSICAL SYMBOL THIRTY-SECOND REST
+1D141 ; [*1307.0020.0002] # MUSICAL SYMBOL SIXTY-FOURTH REST
+1D142 ; [*1308.0020.0002] # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST
+1D143 ; [*1309.0020.0002] # MUSICAL SYMBOL X NOTEHEAD
+1D144 ; [*130A.0020.0002] # MUSICAL SYMBOL PLUS NOTEHEAD
+1D145 ; [*130B.0020.0002] # MUSICAL SYMBOL CIRCLE X NOTEHEAD
+1D146 ; [*130C.0020.0002] # MUSICAL SYMBOL SQUARE NOTEHEAD WHITE
+1D147 ; [*130D.0020.0002] # MUSICAL SYMBOL SQUARE NOTEHEAD BLACK
+1D148 ; [*130E.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE
+1D149 ; [*130F.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK
+1D14A ; [*1310.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE
+1D14B ; [*1311.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK
+1D14C ; [*1312.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE
+1D14D ; [*1313.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK
+1D14E ; [*1314.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE
+1D14F ; [*1315.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK
+1D150 ; [*1316.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE
+1D151 ; [*1317.0020.0002] # MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK
+1D152 ; [*1318.0020.0002] # MUSICAL SYMBOL MOON NOTEHEAD WHITE
+1D153 ; [*1319.0020.0002] # MUSICAL SYMBOL MOON NOTEHEAD BLACK
+1D154 ; [*131A.0020.0002] # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE
+1D155 ; [*131B.0020.0002] # MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK
+1D156 ; [*131C.0020.0002] # MUSICAL SYMBOL PARENTHESIS NOTEHEAD
+1D157 ; [*131D.0020.0002] # MUSICAL SYMBOL VOID NOTEHEAD
+1D158 ; [*131E.0020.0002] # MUSICAL SYMBOL NOTEHEAD BLACK
+1D159 ; [*131F.0020.0002] # MUSICAL SYMBOL NULL NOTEHEAD
+1D15A ; [*1320.0020.0002] # MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE
+1D15B ; [*1321.0020.0002] # MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK
+1D15C ; [*1322.0020.0002] # MUSICAL SYMBOL BREVE
+1D15D ; [*1323.0020.0002] # MUSICAL SYMBOL WHOLE NOTE
+1D15E ; [*131D.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL HALF NOTE
+1D15F ; [*131E.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL QUARTER NOTE
+1D160 ; [*131E.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL EIGHTH NOTE
+1D161 ; [*131E.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SIXTEENTH NOTE
+1D162 ; [*131E.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163 ; [*131E.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164 ; [*131E.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D165 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING STEM
+1D166 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+1D167 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING TREMOLO-1
+1D168 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING TREMOLO-2
+1D169 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING TREMOLO-3
+1D16A ; [*1324.0020.0002] # MUSICAL SYMBOL FINGERED TREMOLO-1
+1D16B ; [*1325.0020.0002] # MUSICAL SYMBOL FINGERED TREMOLO-2
+1D16C ; [*1326.0020.0002] # MUSICAL SYMBOL FINGERED TREMOLO-3
+1D16D ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING AUGMENTATION DOT
+1D16E ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-1
+1D16F ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-2
+1D170 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-3
+1D171 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-4
+1D172 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLAG-5
+1D17B ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING ACCENT
+1D17C ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING STACCATO
+1D17D ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING TENUTO
+1D17E ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING STACCATISSIMO
+1D17F ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING MARCATO
+1D180 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING MARCATO-STACCATO
+1D181 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING ACCENT-STACCATO
+1D182 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING LOURE
+1D183 ; [*1327.0020.0002] # MUSICAL SYMBOL ARPEGGIATO UP
+1D184 ; [*1328.0020.0002] # MUSICAL SYMBOL ARPEGGIATO DOWN
+1D185 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING DOIT
+1D186 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING RIP
+1D187 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING FLIP
+1D188 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING SMEAR
+1D189 ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING BEND
+1D18A ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING DOUBLE TONGUE
+1D18B ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+1D18C ; [*1329.0020.0002] # MUSICAL SYMBOL RINFORZANDO
+1D18D ; [*132A.0020.0002] # MUSICAL SYMBOL SUBITO
+1D18E ; [*132B.0020.0002] # MUSICAL SYMBOL Z
+1D18F ; [*132C.0020.0002] # MUSICAL SYMBOL PIANO
+1D190 ; [*132D.0020.0002] # MUSICAL SYMBOL MEZZO
+1D191 ; [*132E.0020.0002] # MUSICAL SYMBOL FORTE
+1D192 ; [*132F.0020.0002] # MUSICAL SYMBOL CRESCENDO
+1D193 ; [*1330.0020.0002] # MUSICAL SYMBOL DECRESCENDO
+1D194 ; [*1331.0020.0002] # MUSICAL SYMBOL GRACE NOTE SLASH
+1D195 ; [*1332.0020.0002] # MUSICAL SYMBOL GRACE NOTE NO SLASH
+1D196 ; [*1333.0020.0002] # MUSICAL SYMBOL TR
+1D197 ; [*1334.0020.0002] # MUSICAL SYMBOL TURN
+1D198 ; [*1335.0020.0002] # MUSICAL SYMBOL INVERTED TURN
+1D199 ; [*1336.0020.0002] # MUSICAL SYMBOL TURN SLASH
+1D19A ; [*1337.0020.0002] # MUSICAL SYMBOL TURN UP
+1D19B ; [*1338.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-1
+1D19C ; [*1339.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-2
+1D19D ; [*133A.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-3
+1D19E ; [*133B.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-4
+1D19F ; [*133C.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-5
+1D1A0 ; [*133D.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-6
+1D1A1 ; [*133E.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-7
+1D1A2 ; [*133F.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-8
+1D1A3 ; [*1340.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-9
+1D1A4 ; [*1341.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-10
+1D1A5 ; [*1342.0020.0002] # MUSICAL SYMBOL ORNAMENT STROKE-11
+1D1A6 ; [*1343.0020.0002] # MUSICAL SYMBOL HAUPTSTIMME
+1D1A7 ; [*1344.0020.0002] # MUSICAL SYMBOL NEBENSTIMME
+1D1A8 ; [*1345.0020.0002] # MUSICAL SYMBOL END OF STIMME
+1D1A9 ; [*1346.0020.0002] # MUSICAL SYMBOL DEGREE SLASH
+1D1AA ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING DOWN BOW
+1D1AB ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING UP BOW
+1D1AC ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING HARMONIC
+1D1AD ; [.0000.0000.0000] # MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+1D1AE ; [*1347.0020.0002] # MUSICAL SYMBOL PEDAL MARK
+1D1AF ; [*1348.0020.0002] # MUSICAL SYMBOL PEDAL UP MARK
+1D1B0 ; [*1349.0020.0002] # MUSICAL SYMBOL HALF PEDAL MARK
+1D1B1 ; [*134A.0020.0002] # MUSICAL SYMBOL GLISSANDO UP
+1D1B2 ; [*134B.0020.0002] # MUSICAL SYMBOL GLISSANDO DOWN
+1D1B3 ; [*134C.0020.0002] # MUSICAL SYMBOL WITH FINGERNAILS
+1D1B4 ; [*134D.0020.0002] # MUSICAL SYMBOL DAMP
+1D1B5 ; [*134E.0020.0002] # MUSICAL SYMBOL DAMP ALL
+1D1B6 ; [*134F.0020.0002] # MUSICAL SYMBOL MAXIMA
+1D1B7 ; [*1350.0020.0002] # MUSICAL SYMBOL LONGA
+1D1B8 ; [*1351.0020.0002] # MUSICAL SYMBOL BREVIS
+1D1B9 ; [*1352.0020.0002] # MUSICAL SYMBOL SEMIBREVIS WHITE
+1D1BA ; [*1353.0020.0002] # MUSICAL SYMBOL SEMIBREVIS BLACK
+1D1BB ; [*1352.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL MINIMA
+1D1BC ; [*1353.0020.0002][.0000.0000.0000] # MUSICAL SYMBOL MINIMA BLACK
+1D1BD ; [*1352.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE ; [*1353.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF ; [*1352.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL FUSA WHITE
+1D1C0 ; [*1353.0020.0002][.0000.0000.0000][.0000.0000.0000] # MUSICAL SYMBOL FUSA BLACK
+1D1C1 ; [*1354.0020.0002] # MUSICAL SYMBOL LONGA PERFECTA REST
+1D1C2 ; [*1355.0020.0002] # MUSICAL SYMBOL LONGA IMPERFECTA REST
+1D1C3 ; [*1356.0020.0002] # MUSICAL SYMBOL BREVIS REST
+1D1C4 ; [*1357.0020.0002] # MUSICAL SYMBOL SEMIBREVIS REST
+1D1C5 ; [*1358.0020.0002] # MUSICAL SYMBOL MINIMA REST
+1D1C6 ; [*1359.0020.0002] # MUSICAL SYMBOL SEMIMINIMA REST
+1D1C7 ; [*135A.0020.0002] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA
+1D1C8 ; [*135B.0020.0002] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA
+1D1C9 ; [*135C.0020.0002] # MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1
+1D1CA ; [*135D.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA
+1D1CB ; [*135E.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA
+1D1CC ; [*135F.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1
+1D1CD ; [*1360.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2
+1D1CE ; [*1361.0020.0002] # MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3
+1D1CF ; [*1362.0020.0002] # MUSICAL SYMBOL CROIX
+1D1D0 ; [*1363.0020.0002] # MUSICAL SYMBOL GREGORIAN C CLEF
+1D1D1 ; [*1364.0020.0002] # MUSICAL SYMBOL GREGORIAN F CLEF
+1D1D2 ; [*1365.0020.0002] # MUSICAL SYMBOL SQUARE B
+1D1D3 ; [*1366.0020.0002] # MUSICAL SYMBOL VIRGA
+1D1D4 ; [*1367.0020.0002] # MUSICAL SYMBOL PODATUS
+1D1D5 ; [*1368.0020.0002] # MUSICAL SYMBOL CLIVIS
+1D1D6 ; [*1369.0020.0002] # MUSICAL SYMBOL SCANDICUS
+1D1D7 ; [*136A.0020.0002] # MUSICAL SYMBOL CLIMACUS
+1D1D8 ; [*136B.0020.0002] # MUSICAL SYMBOL TORCULUS
+1D1D9 ; [*136C.0020.0002] # MUSICAL SYMBOL PORRECTUS
+1D1DA ; [*136D.0020.0002] # MUSICAL SYMBOL PORRECTUS FLEXUS
+1D1DB ; [*136E.0020.0002] # MUSICAL SYMBOL SCANDICUS FLEXUS
+1D1DC ; [*136F.0020.0002] # MUSICAL SYMBOL TORCULUS RESUPINUS
+1D1DD ; [*1370.0020.0002] # MUSICAL SYMBOL PES SUBPUNCTIS
+1D1DE ; [*1371.0020.0002] # MUSICAL SYMBOL KIEVAN C CLEF
+1D1DF ; [*1372.0020.0002] # MUSICAL SYMBOL KIEVAN END OF PIECE
+1D1E0 ; [*1373.0020.0002] # MUSICAL SYMBOL KIEVAN FINAL NOTE
+1D1E1 ; [*1374.0020.0002] # MUSICAL SYMBOL KIEVAN RECITATIVE MARK
+1D1E2 ; [*1375.0020.0002] # MUSICAL SYMBOL KIEVAN WHOLE NOTE
+1D1E3 ; [*1376.0020.0002] # MUSICAL SYMBOL KIEVAN HALF NOTE
+1D1E4 ; [*1377.0020.0002] # MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM DOWN
+1D1E5 ; [*1378.0020.0002] # MUSICAL SYMBOL KIEVAN QUARTER NOTE STEM UP
+1D1E6 ; [*1379.0020.0002] # MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN
+1D1E7 ; [*137A.0020.0002] # MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP
+1D1E8 ; [*137B.0020.0002] # MUSICAL SYMBOL KIEVAN FLAT SIGN
+1D1E9 ; [*137C.0020.0002] # MUSICAL SYMBOL SORI
+1D1EA ; [*137D.0020.0002] # MUSICAL SYMBOL KORON
+1D200 ; [*137E.0020.0002] # GREEK VOCAL NOTATION SYMBOL-1
+1D201 ; [*137F.0020.0002] # GREEK VOCAL NOTATION SYMBOL-2
+1D202 ; [*1380.0020.0002] # GREEK VOCAL NOTATION SYMBOL-3
+1D203 ; [*1381.0020.0002] # GREEK VOCAL NOTATION SYMBOL-4
+1D204 ; [*1382.0020.0002] # GREEK VOCAL NOTATION SYMBOL-5
+1D205 ; [*1383.0020.0002] # GREEK VOCAL NOTATION SYMBOL-6
+1D206 ; [*1384.0020.0002] # GREEK VOCAL NOTATION SYMBOL-7
+1D207 ; [*1385.0020.0002] # GREEK VOCAL NOTATION SYMBOL-8
+1D208 ; [*1386.0020.0002] # GREEK VOCAL NOTATION SYMBOL-9
+1D209 ; [*1387.0020.0002] # GREEK VOCAL NOTATION SYMBOL-10
+1D20A ; [*1388.0020.0002] # GREEK VOCAL NOTATION SYMBOL-11
+1D20B ; [*1389.0020.0002] # GREEK VOCAL NOTATION SYMBOL-12
+1D20C ; [*138A.0020.0002] # GREEK VOCAL NOTATION SYMBOL-13
+1D20D ; [*138B.0020.0002] # GREEK VOCAL NOTATION SYMBOL-14
+1D20E ; [*138C.0020.0002] # GREEK VOCAL NOTATION SYMBOL-15
+1D20F ; [*138D.0020.0002] # GREEK VOCAL NOTATION SYMBOL-16
+1D210 ; [*138E.0020.0002] # GREEK VOCAL NOTATION SYMBOL-17
+1D211 ; [*138F.0020.0002] # GREEK VOCAL NOTATION SYMBOL-18
+1D212 ; [*1390.0020.0002] # GREEK VOCAL NOTATION SYMBOL-19
+1D213 ; [*1391.0020.0002] # GREEK VOCAL NOTATION SYMBOL-20
+1D214 ; [*1392.0020.0002] # GREEK VOCAL NOTATION SYMBOL-21
+1D215 ; [*1393.0020.0002] # GREEK VOCAL NOTATION SYMBOL-22
+1D216 ; [*1394.0020.0002] # GREEK VOCAL NOTATION SYMBOL-23
+1D217 ; [*1395.0020.0002] # GREEK VOCAL NOTATION SYMBOL-24
+1D218 ; [*1396.0020.0002] # GREEK VOCAL NOTATION SYMBOL-50
+1D219 ; [*1397.0020.0002] # GREEK VOCAL NOTATION SYMBOL-51
+1D21A ; [*1398.0020.0002] # GREEK VOCAL NOTATION SYMBOL-52
+1D21B ; [*1399.0020.0002] # GREEK VOCAL NOTATION SYMBOL-53
+1D21C ; [*139A.0020.0002] # GREEK VOCAL NOTATION SYMBOL-54
+1D21D ; [*139B.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-1
+1D21E ; [*139C.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-2
+1D21F ; [*139D.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-4
+1D220 ; [*139E.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-5
+1D221 ; [*139F.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-7
+1D222 ; [*13A0.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-8
+1D223 ; [*13A1.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-11
+1D224 ; [*13A2.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-12
+1D225 ; [*13A3.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-13
+1D226 ; [*13A4.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-14
+1D227 ; [*13A5.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-17
+1D228 ; [*13A6.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-18
+1D229 ; [*13A7.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-19
+1D22A ; [*13A8.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-23
+1D22B ; [*13A9.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-24
+1D22C ; [*13AA.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-25
+1D22D ; [*13AB.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-26
+1D22E ; [*13AC.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-27
+1D22F ; [*13AD.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-29
+1D230 ; [*13AE.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-30
+1D231 ; [*13AF.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-32
+1D232 ; [*13B0.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-36
+1D233 ; [*13B1.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-37
+1D234 ; [*13B2.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-38
+1D235 ; [*13B3.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-39
+1D236 ; [*13B4.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-40
+1D237 ; [*13B5.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-42
+1D238 ; [*13B6.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-43
+1D239 ; [*13B7.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-45
+1D23A ; [*13B8.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-47
+1D23B ; [*13B9.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-48
+1D23C ; [*13BA.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-49
+1D23D ; [*13BB.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-50
+1D23E ; [*13BC.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-51
+1D23F ; [*13BD.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-52
+1D240 ; [*13BE.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-53
+1D241 ; [*13BF.0020.0002] # GREEK INSTRUMENTAL NOTATION SYMBOL-54
+1D242 ; [.0000.0000.0000] # COMBINING GREEK MUSICAL TRISEME
+1D243 ; [.0000.0000.0000] # COMBINING GREEK MUSICAL TETRASEME
+1D244 ; [.0000.0000.0000] # COMBINING GREEK MUSICAL PENTASEME
+1D245 ; [*13C0.0020.0002] # GREEK MUSICAL LEIMMA
+1D2EA ; [*1F64.0020.0002] # MAYAN NUMERAL TEN
+1D2EB ; [*1F65.0020.0002] # MAYAN NUMERAL ELEVEN
+1D2EC ; [*1F66.0020.0002] # MAYAN NUMERAL TWELVE
+1D2ED ; [*1F67.0020.0002] # MAYAN NUMERAL THIRTEEN
+1D2EE ; [*1F68.0020.0002] # MAYAN NUMERAL FOURTEEN
+1D2EF ; [*1F69.0020.0002] # MAYAN NUMERAL FIFTEEN
+1D2F0 ; [*1F6A.0020.0002] # MAYAN NUMERAL SIXTEEN
+1D2F1 ; [*1F6B.0020.0002] # MAYAN NUMERAL SEVENTEEN
+1D2F2 ; [*1F6C.0020.0002] # MAYAN NUMERAL EIGHTEEN
+1D2F3 ; [*1F6D.0020.0002] # MAYAN NUMERAL NINETEEN
+1D300 ; [*106D.0020.0002] # MONOGRAM FOR EARTH
+1D301 ; [*106E.0020.0002] # DIGRAM FOR HEAVENLY EARTH
+1D302 ; [*106F.0020.0002] # DIGRAM FOR HUMAN EARTH
+1D303 ; [*1070.0020.0002] # DIGRAM FOR EARTHLY HEAVEN
+1D304 ; [*1071.0020.0002] # DIGRAM FOR EARTHLY HUMAN
+1D305 ; [*1072.0020.0002] # DIGRAM FOR EARTH
+1D306 ; [*1073.0020.0002] # TETRAGRAM FOR CENTRE
+1D307 ; [*1074.0020.0002] # TETRAGRAM FOR FULL CIRCLE
+1D308 ; [*1075.0020.0002] # TETRAGRAM FOR MIRED
+1D309 ; [*1076.0020.0002] # TETRAGRAM FOR BARRIER
+1D30A ; [*1077.0020.0002] # TETRAGRAM FOR KEEPING SMALL
+1D30B ; [*1078.0020.0002] # TETRAGRAM FOR CONTRARIETY
+1D30C ; [*1079.0020.0002] # TETRAGRAM FOR ASCENT
+1D30D ; [*107A.0020.0002] # TETRAGRAM FOR OPPOSITION
+1D30E ; [*107B.0020.0002] # TETRAGRAM FOR BRANCHING OUT
+1D30F ; [*107C.0020.0002] # TETRAGRAM FOR DEFECTIVENESS OR DISTORTION
+1D310 ; [*107D.0020.0002] # TETRAGRAM FOR DIVERGENCE
+1D311 ; [*107E.0020.0002] # TETRAGRAM FOR YOUTHFULNESS
+1D312 ; [*107F.0020.0002] # TETRAGRAM FOR INCREASE
+1D313 ; [*1080.0020.0002] # TETRAGRAM FOR PENETRATION
+1D314 ; [*1081.0020.0002] # TETRAGRAM FOR REACH
+1D315 ; [*1082.0020.0002] # TETRAGRAM FOR CONTACT
+1D316 ; [*1083.0020.0002] # TETRAGRAM FOR HOLDING BACK
+1D317 ; [*1084.0020.0002] # TETRAGRAM FOR WAITING
+1D318 ; [*1085.0020.0002] # TETRAGRAM FOR FOLLOWING
+1D319 ; [*1086.0020.0002] # TETRAGRAM FOR ADVANCE
+1D31A ; [*1087.0020.0002] # TETRAGRAM FOR RELEASE
+1D31B ; [*1088.0020.0002] # TETRAGRAM FOR RESISTANCE
+1D31C ; [*1089.0020.0002] # TETRAGRAM FOR EASE
+1D31D ; [*108A.0020.0002] # TETRAGRAM FOR JOY
+1D31E ; [*108B.0020.0002] # TETRAGRAM FOR CONTENTION
+1D31F ; [*108C.0020.0002] # TETRAGRAM FOR ENDEAVOUR
+1D320 ; [*108D.0020.0002] # TETRAGRAM FOR DUTIES
+1D321 ; [*108E.0020.0002] # TETRAGRAM FOR CHANGE
+1D322 ; [*108F.0020.0002] # TETRAGRAM FOR DECISIVENESS
+1D323 ; [*1090.0020.0002] # TETRAGRAM FOR BOLD RESOLUTION
+1D324 ; [*1091.0020.0002] # TETRAGRAM FOR PACKING
+1D325 ; [*1092.0020.0002] # TETRAGRAM FOR LEGION
+1D326 ; [*1093.0020.0002] # TETRAGRAM FOR CLOSENESS
+1D327 ; [*1094.0020.0002] # TETRAGRAM FOR KINSHIP
+1D328 ; [*1095.0020.0002] # TETRAGRAM FOR GATHERING
+1D329 ; [*1096.0020.0002] # TETRAGRAM FOR STRENGTH
+1D32A ; [*1097.0020.0002] # TETRAGRAM FOR PURITY
+1D32B ; [*1098.0020.0002] # TETRAGRAM FOR FULLNESS
+1D32C ; [*1099.0020.0002] # TETRAGRAM FOR RESIDENCE
+1D32D ; [*109A.0020.0002] # TETRAGRAM FOR LAW OR MODEL
+1D32E ; [*109B.0020.0002] # TETRAGRAM FOR RESPONSE
+1D32F ; [*109C.0020.0002] # TETRAGRAM FOR GOING TO MEET
+1D330 ; [*109D.0020.0002] # TETRAGRAM FOR ENCOUNTERS
+1D331 ; [*109E.0020.0002] # TETRAGRAM FOR STOVE
+1D332 ; [*109F.0020.0002] # TETRAGRAM FOR GREATNESS
+1D333 ; [*10A0.0020.0002] # TETRAGRAM FOR ENLARGEMENT
+1D334 ; [*10A1.0020.0002] # TETRAGRAM FOR PATTERN
+1D335 ; [*10A2.0020.0002] # TETRAGRAM FOR RITUAL
+1D336 ; [*10A3.0020.0002] # TETRAGRAM FOR FLIGHT
+1D337 ; [*10A4.0020.0002] # TETRAGRAM FOR VASTNESS OR WASTING
+1D338 ; [*10A5.0020.0002] # TETRAGRAM FOR CONSTANCY
+1D339 ; [*10A6.0020.0002] # TETRAGRAM FOR MEASURE
+1D33A ; [*10A7.0020.0002] # TETRAGRAM FOR ETERNITY
+1D33B ; [*10A8.0020.0002] # TETRAGRAM FOR UNITY
+1D33C ; [*10A9.0020.0002] # TETRAGRAM FOR DIMINISHMENT
+1D33D ; [*10AA.0020.0002] # TETRAGRAM FOR CLOSED MOUTH
+1D33E ; [*10AB.0020.0002] # TETRAGRAM FOR GUARDEDNESS
+1D33F ; [*10AC.0020.0002] # TETRAGRAM FOR GATHERING IN
+1D340 ; [*10AD.0020.0002] # TETRAGRAM FOR MASSING
+1D341 ; [*10AE.0020.0002] # TETRAGRAM FOR ACCUMULATION
+1D342 ; [*10AF.0020.0002] # TETRAGRAM FOR EMBELLISHMENT
+1D343 ; [*10B0.0020.0002] # TETRAGRAM FOR DOUBT
+1D344 ; [*10B1.0020.0002] # TETRAGRAM FOR WATCH
+1D345 ; [*10B2.0020.0002] # TETRAGRAM FOR SINKING
+1D346 ; [*10B3.0020.0002] # TETRAGRAM FOR INNER
+1D347 ; [*10B4.0020.0002] # TETRAGRAM FOR DEPARTURE
+1D348 ; [*10B5.0020.0002] # TETRAGRAM FOR DARKENING
+1D349 ; [*10B6.0020.0002] # TETRAGRAM FOR DIMMING
+1D34A ; [*10B7.0020.0002] # TETRAGRAM FOR EXHAUSTION
+1D34B ; [*10B8.0020.0002] # TETRAGRAM FOR SEVERANCE
+1D34C ; [*10B9.0020.0002] # TETRAGRAM FOR STOPPAGE
+1D34D ; [*10BA.0020.0002] # TETRAGRAM FOR HARDNESS
+1D34E ; [*10BB.0020.0002] # TETRAGRAM FOR COMPLETION
+1D34F ; [*10BC.0020.0002] # TETRAGRAM FOR CLOSURE
+1D350 ; [*10BD.0020.0002] # TETRAGRAM FOR FAILURE
+1D351 ; [*10BE.0020.0002] # TETRAGRAM FOR AGGRAVATION
+1D352 ; [*10BF.0020.0002] # TETRAGRAM FOR COMPLIANCE
+1D353 ; [*10C0.0020.0002] # TETRAGRAM FOR ON THE VERGE
+1D354 ; [*10C1.0020.0002] # TETRAGRAM FOR DIFFICULTIES
+1D355 ; [*10C2.0020.0002] # TETRAGRAM FOR LABOURING
+1D356 ; [*10C3.0020.0002] # TETRAGRAM FOR FOSTERING
+1D369 ; [*200F.0020.0002] # COUNTING ROD TENS DIGIT ONE
+1D36A ; [*2010.0020.0002] # COUNTING ROD TENS DIGIT TWO
+1D36B ; [*2011.0020.0002] # COUNTING ROD TENS DIGIT THREE
+1D36C ; [*2012.0020.0002] # COUNTING ROD TENS DIGIT FOUR
+1D36D ; [*2013.0020.0002] # COUNTING ROD TENS DIGIT FIVE
+1D36E ; [*2014.0020.0002] # COUNTING ROD TENS DIGIT SIX
+1D36F ; [*2015.0020.0002] # COUNTING ROD TENS DIGIT SEVEN
+1D370 ; [*2016.0020.0002] # COUNTING ROD TENS DIGIT EIGHT
+1D371 ; [*2017.0020.0002] # COUNTING ROD TENS DIGIT NINE
+1D6C1 ; [*0693.0020.0005] # MATHEMATICAL BOLD NABLA
+1D6DB ; [*068F.0020.0005] # MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6FB ; [*0693.0020.0005] # MATHEMATICAL ITALIC NABLA
+1D715 ; [*068F.0020.0005] # MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D735 ; [*0693.0020.0005] # MATHEMATICAL BOLD ITALIC NABLA
+1D74F ; [*068F.0020.0005] # MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D76F ; [*0693.0020.0005] # MATHEMATICAL SANS-SERIF BOLD NABLA
+1D789 ; [*068F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D7A9 ; [*0693.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7C3 ; [*068F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D800 ; [*1BD1.0020.0002] # SIGNWRITING HAND-FIST INDEX
+1D801 ; [*1BD2.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX
+1D802 ; [*1BD3.0020.0002] # SIGNWRITING HAND-CUP INDEX
+1D803 ; [*1BD4.0020.0002] # SIGNWRITING HAND-OVAL INDEX
+1D804 ; [*1BD5.0020.0002] # SIGNWRITING HAND-HINGE INDEX
+1D805 ; [*1BD6.0020.0002] # SIGNWRITING HAND-ANGLE INDEX
+1D806 ; [*1BD7.0020.0002] # SIGNWRITING HAND-FIST INDEX BENT
+1D807 ; [*1BD8.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX BENT
+1D808 ; [*1BD9.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER INDEX BENT
+1D809 ; [*1BDA.0020.0002] # SIGNWRITING HAND-FIST INDEX RAISED KNUCKLE
+1D80A ; [*1BDB.0020.0002] # SIGNWRITING HAND-FIST INDEX CUPPED
+1D80B ; [*1BDC.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED
+1D80C ; [*1BDD.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED LOW
+1D80D ; [*1BDE.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX HINGE
+1D80E ; [*1BDF.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE
+1D80F ; [*1BE0.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE
+1D810 ; [*1BE1.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE BENT
+1D811 ; [*1BE2.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RAISED KNUCKLES
+1D812 ; [*1BE3.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE HINGED
+1D813 ; [*1BE4.0020.0002] # SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED
+1D814 ; [*1BE5.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP
+1D815 ; [*1BE6.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED
+1D816 ; [*1BE7.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED INDEX BENT
+1D817 ; [*1BE8.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED MIDDLE BENT
+1D818 ; [*1BE9.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED
+1D819 ; [*1BEA.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED
+1D81A ; [*1BEB.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED
+1D81B ; [*1BEC.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSSED
+1D81C ; [*1BED.0020.0002] # SIGNWRITING HAND-FIST MIDDLE BENT OVER INDEX
+1D81D ; [*1BEE.0020.0002] # SIGNWRITING HAND-FIST INDEX BENT OVER MIDDLE
+1D81E ; [*1BEF.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB
+1D81F ; [*1BF0.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE THUMB
+1D820 ; [*1BF1.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE STRAIGHT THUMB BENT
+1D821 ; [*1BF2.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE BENT THUMB STRAIGHT
+1D822 ; [*1BF3.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB BENT
+1D823 ; [*1BF4.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE HINGED SPREAD THUMB SIDE
+1D824 ; [*1BF5.0020.0002] # SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB SIDE
+1D825 ; [*1BF6.0020.0002] # SIGNWRITING HAND-FIST INDEX UP MIDDLE HINGED THUMB CONJOINED
+1D826 ; [*1BF7.0020.0002] # SIGNWRITING HAND-FIST INDEX HINGED MIDDLE UP THUMB SIDE
+1D827 ; [*1BF8.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE UP SPREAD THUMB FORWARD
+1D828 ; [*1BF9.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CUPPED
+1D829 ; [*1BFA.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CIRCLED
+1D82A ; [*1BFB.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HOOKED
+1D82B ; [*1BFC.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB HINGED
+1D82C ; [*1BFD.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE STRAIGHT
+1D82D ; [*1BFE.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE
+1D82E ; [*1BFF.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE CONJOINED
+1D82F ; [*1C00.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB SIDE BENT
+1D830 ; [*1C01.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB HOOKED INDEX UP
+1D831 ; [*1C02.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE UP
+1D832 ; [*1C03.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED HINGED THUMB SIDE
+1D833 ; [*1C04.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CROSSED THUMB SIDE
+1D834 ; [*1C05.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED THUMB FORWARD
+1D835 ; [*1C06.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CONJOINED CUPPED THUMB FORWARD
+1D836 ; [*1C07.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB CUPPED INDEX UP
+1D837 ; [*1C08.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CUPPED MIDDLE UP
+1D838 ; [*1C09.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX UP
+1D839 ; [*1C0A.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB CIRCLED INDEX HINGED
+1D83A ; [*1C0B.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB ANGLED OUT MIDDLE UP
+1D83B ; [*1C0C.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB ANGLED IN MIDDLE UP
+1D83C ; [*1C0D.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CIRCLED MIDDLE UP
+1D83D ; [*1C0E.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB CONJOINED HINGED
+1D83E ; [*1C0F.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED OUT
+1D83F ; [*1C10.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE THUMB ANGLED
+1D840 ; [*1C11.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX UP
+1D841 ; [*1C12.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED OUT INDEX CROSSED
+1D842 ; [*1C13.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB ANGLED INDEX UP
+1D843 ; [*1C14.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB HOOKED MIDDLE HINGED
+1D844 ; [*1C15.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS
+1D845 ; [*1C16.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS BENT
+1D846 ; [*1C17.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS HINGED
+1D847 ; [*1C18.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED
+1D848 ; [*1C19.0020.0002] # SIGNWRITING HAND-FLAT FOUR FINGERS CONJOINED SPLIT
+1D849 ; [*1C1A.0020.0002] # SIGNWRITING HAND-CLAW FOUR FINGERS CONJOINED
+1D84A ; [*1C1B.0020.0002] # SIGNWRITING HAND-FIST FOUR FINGERS CONJOINED BENT
+1D84B ; [*1C1C.0020.0002] # SIGNWRITING HAND-HINGE FOUR FINGERS CONJOINED
+1D84C ; [*1C1D.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD
+1D84D ; [*1C1E.0020.0002] # SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD
+1D84E ; [*1C1F.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD FOUR BENT
+1D84F ; [*1C20.0020.0002] # SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD FOUR BENT
+1D850 ; [*1C21.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD BENT
+1D851 ; [*1C22.0020.0002] # SIGNWRITING HAND-FLAT HEEL FIVE FINGERS SPREAD BENT
+1D852 ; [*1C23.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD THUMB FORWARD
+1D853 ; [*1C24.0020.0002] # SIGNWRITING HAND-CUP FIVE FINGERS SPREAD
+1D854 ; [*1C25.0020.0002] # SIGNWRITING HAND-CUP FIVE FINGERS SPREAD OPEN
+1D855 ; [*1C26.0020.0002] # SIGNWRITING HAND-HINGE FIVE FINGERS SPREAD OPEN
+1D856 ; [*1C27.0020.0002] # SIGNWRITING HAND-OVAL FIVE FINGERS SPREAD
+1D857 ; [*1C28.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED
+1D858 ; [*1C29.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED THUMB SIDE
+1D859 ; [*1C2A.0020.0002] # SIGNWRITING HAND-FLAT FIVE FINGERS SPREAD HINGED NO THUMB
+1D85A ; [*1C2B.0020.0002] # SIGNWRITING HAND-FLAT
+1D85B ; [*1C2C.0020.0002] # SIGNWRITING HAND-FLAT BETWEEN PALM FACINGS
+1D85C ; [*1C2D.0020.0002] # SIGNWRITING HAND-FLAT HEEL
+1D85D ; [*1C2E.0020.0002] # SIGNWRITING HAND-FLAT THUMB SIDE
+1D85E ; [*1C2F.0020.0002] # SIGNWRITING HAND-FLAT HEEL THUMB SIDE
+1D85F ; [*1C30.0020.0002] # SIGNWRITING HAND-FLAT THUMB BENT
+1D860 ; [*1C31.0020.0002] # SIGNWRITING HAND-FLAT THUMB FORWARD
+1D861 ; [*1C32.0020.0002] # SIGNWRITING HAND-FLAT SPLIT INDEX THUMB SIDE
+1D862 ; [*1C33.0020.0002] # SIGNWRITING HAND-FLAT SPLIT CENTRE
+1D863 ; [*1C34.0020.0002] # SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE
+1D864 ; [*1C35.0020.0002] # SIGNWRITING HAND-FLAT SPLIT CENTRE THUMB SIDE BENT
+1D865 ; [*1C36.0020.0002] # SIGNWRITING HAND-FLAT SPLIT LITTLE
+1D866 ; [*1C37.0020.0002] # SIGNWRITING HAND-CLAW
+1D867 ; [*1C38.0020.0002] # SIGNWRITING HAND-CLAW THUMB SIDE
+1D868 ; [*1C39.0020.0002] # SIGNWRITING HAND-CLAW NO THUMB
+1D869 ; [*1C3A.0020.0002] # SIGNWRITING HAND-CLAW THUMB FORWARD
+1D86A ; [*1C3B.0020.0002] # SIGNWRITING HAND-HOOK CURLICUE
+1D86B ; [*1C3C.0020.0002] # SIGNWRITING HAND-HOOK
+1D86C ; [*1C3D.0020.0002] # SIGNWRITING HAND-CUP OPEN
+1D86D ; [*1C3E.0020.0002] # SIGNWRITING HAND-CUP
+1D86E ; [*1C3F.0020.0002] # SIGNWRITING HAND-CUP OPEN THUMB SIDE
+1D86F ; [*1C40.0020.0002] # SIGNWRITING HAND-CUP THUMB SIDE
+1D870 ; [*1C41.0020.0002] # SIGNWRITING HAND-CUP OPEN NO THUMB
+1D871 ; [*1C42.0020.0002] # SIGNWRITING HAND-CUP NO THUMB
+1D872 ; [*1C43.0020.0002] # SIGNWRITING HAND-CUP OPEN THUMB FORWARD
+1D873 ; [*1C44.0020.0002] # SIGNWRITING HAND-CUP THUMB FORWARD
+1D874 ; [*1C45.0020.0002] # SIGNWRITING HAND-CURLICUE OPEN
+1D875 ; [*1C46.0020.0002] # SIGNWRITING HAND-CURLICUE
+1D876 ; [*1C47.0020.0002] # SIGNWRITING HAND-CIRCLE
+1D877 ; [*1C48.0020.0002] # SIGNWRITING HAND-OVAL
+1D878 ; [*1C49.0020.0002] # SIGNWRITING HAND-OVAL THUMB SIDE
+1D879 ; [*1C4A.0020.0002] # SIGNWRITING HAND-OVAL NO THUMB
+1D87A ; [*1C4B.0020.0002] # SIGNWRITING HAND-OVAL THUMB FORWARD
+1D87B ; [*1C4C.0020.0002] # SIGNWRITING HAND-HINGE OPEN
+1D87C ; [*1C4D.0020.0002] # SIGNWRITING HAND-HINGE OPEN THUMB FORWARD
+1D87D ; [*1C4E.0020.0002] # SIGNWRITING HAND-HINGE
+1D87E ; [*1C4F.0020.0002] # SIGNWRITING HAND-HINGE SMALL
+1D87F ; [*1C50.0020.0002] # SIGNWRITING HAND-HINGE OPEN THUMB SIDE
+1D880 ; [*1C51.0020.0002] # SIGNWRITING HAND-HINGE THUMB SIDE
+1D881 ; [*1C52.0020.0002] # SIGNWRITING HAND-HINGE OPEN NO THUMB
+1D882 ; [*1C53.0020.0002] # SIGNWRITING HAND-HINGE NO THUMB
+1D883 ; [*1C54.0020.0002] # SIGNWRITING HAND-HINGE THUMB SIDE TOUCHING INDEX
+1D884 ; [*1C55.0020.0002] # SIGNWRITING HAND-HINGE THUMB BETWEEN MIDDLE RING
+1D885 ; [*1C56.0020.0002] # SIGNWRITING HAND-ANGLE
+1D886 ; [*1C57.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RING
+1D887 ; [*1C58.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE RING
+1D888 ; [*1C59.0020.0002] # SIGNWRITING HAND-HINGE INDEX MIDDLE RING
+1D889 ; [*1C5A.0020.0002] # SIGNWRITING HAND-ANGLE INDEX MIDDLE RING
+1D88A ; [*1C5B.0020.0002] # SIGNWRITING HAND-HINGE LITTLE
+1D88B ; [*1C5C.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RING BENT
+1D88C ; [*1C5D.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE RING CONJOINED
+1D88D ; [*1C5E.0020.0002] # SIGNWRITING HAND-HINGE INDEX MIDDLE RING CONJOINED
+1D88E ; [*1C5F.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN
+1D88F ; [*1C60.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE STRAIGHT
+1D890 ; [*1C61.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN RIPPLE CURVED
+1D891 ; [*1C62.0020.0002] # SIGNWRITING HAND-FIST LITTLE DOWN OTHERS CIRCLED
+1D892 ; [*1C63.0020.0002] # SIGNWRITING HAND-FIST LITTLE UP
+1D893 ; [*1C64.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER LITTLE UP
+1D894 ; [*1C65.0020.0002] # SIGNWRITING HAND-CIRCLE LITTLE UP
+1D895 ; [*1C66.0020.0002] # SIGNWRITING HAND-OVAL LITTLE UP
+1D896 ; [*1C67.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE UP
+1D897 ; [*1C68.0020.0002] # SIGNWRITING HAND-FIST LITTLE RAISED KNUCKLE
+1D898 ; [*1C69.0020.0002] # SIGNWRITING HAND-FIST LITTLE BENT
+1D899 ; [*1C6A.0020.0002] # SIGNWRITING HAND-FIST LITTLE TOUCHES THUMB
+1D89A ; [*1C6B.0020.0002] # SIGNWRITING HAND-FIST LITTLE THUMB
+1D89B ; [*1C6C.0020.0002] # SIGNWRITING HAND-HINGE LITTLE THUMB
+1D89C ; [*1C6D.0020.0002] # SIGNWRITING HAND-FIST LITTLE INDEX THUMB
+1D89D ; [*1C6E.0020.0002] # SIGNWRITING HAND-HINGE LITTLE INDEX THUMB
+1D89E ; [*1C6F.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB OUT
+1D89F ; [*1C70.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE INDEX THUMB INDEX THUMB
+1D8A0 ; [*1C71.0020.0002] # SIGNWRITING HAND-FIST LITTLE INDEX
+1D8A1 ; [*1C72.0020.0002] # SIGNWRITING HAND-CIRCLE LITTLE INDEX
+1D8A2 ; [*1C73.0020.0002] # SIGNWRITING HAND-HINGE LITTLE INDEX
+1D8A3 ; [*1C74.0020.0002] # SIGNWRITING HAND-ANGLE LITTLE INDEX
+1D8A4 ; [*1C75.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE LITTLE
+1D8A5 ; [*1C76.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE LITTLE
+1D8A6 ; [*1C77.0020.0002] # SIGNWRITING HAND-HINGE INDEX MIDDLE LITTLE
+1D8A7 ; [*1C78.0020.0002] # SIGNWRITING HAND-HINGE RING
+1D8A8 ; [*1C79.0020.0002] # SIGNWRITING HAND-ANGLE INDEX MIDDLE LITTLE
+1D8A9 ; [*1C7A.0020.0002] # SIGNWRITING HAND-FIST INDEX MIDDLE CROSS LITTLE
+1D8AA ; [*1C7B.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX MIDDLE CROSS LITTLE
+1D8AB ; [*1C7C.0020.0002] # SIGNWRITING HAND-FIST RING DOWN
+1D8AC ; [*1C7D.0020.0002] # SIGNWRITING HAND-HINGE RING DOWN INDEX THUMB HOOK MIDDLE
+1D8AD ; [*1C7E.0020.0002] # SIGNWRITING HAND-ANGLE RING DOWN MIDDLE THUMB INDEX CROSS
+1D8AE ; [*1C7F.0020.0002] # SIGNWRITING HAND-FIST RING UP
+1D8AF ; [*1C80.0020.0002] # SIGNWRITING HAND-FIST RING RAISED KNUCKLE
+1D8B0 ; [*1C81.0020.0002] # SIGNWRITING HAND-FIST RING LITTLE
+1D8B1 ; [*1C82.0020.0002] # SIGNWRITING HAND-CIRCLE RING LITTLE
+1D8B2 ; [*1C83.0020.0002] # SIGNWRITING HAND-OVAL RING LITTLE
+1D8B3 ; [*1C84.0020.0002] # SIGNWRITING HAND-ANGLE RING LITTLE
+1D8B4 ; [*1C85.0020.0002] # SIGNWRITING HAND-FIST RING MIDDLE
+1D8B5 ; [*1C86.0020.0002] # SIGNWRITING HAND-FIST RING MIDDLE CONJOINED
+1D8B6 ; [*1C87.0020.0002] # SIGNWRITING HAND-FIST RING MIDDLE RAISED KNUCKLES
+1D8B7 ; [*1C88.0020.0002] # SIGNWRITING HAND-FIST RING INDEX
+1D8B8 ; [*1C89.0020.0002] # SIGNWRITING HAND-FIST RING THUMB
+1D8B9 ; [*1C8A.0020.0002] # SIGNWRITING HAND-HOOK RING THUMB
+1D8BA ; [*1C8B.0020.0002] # SIGNWRITING HAND-FIST INDEX RING LITTLE
+1D8BB ; [*1C8C.0020.0002] # SIGNWRITING HAND-CIRCLE INDEX RING LITTLE
+1D8BC ; [*1C8D.0020.0002] # SIGNWRITING HAND-CURLICUE INDEX RING LITTLE ON
+1D8BD ; [*1C8E.0020.0002] # SIGNWRITING HAND-HOOK INDEX RING LITTLE OUT
+1D8BE ; [*1C8F.0020.0002] # SIGNWRITING HAND-HOOK INDEX RING LITTLE IN
+1D8BF ; [*1C90.0020.0002] # SIGNWRITING HAND-HOOK INDEX RING LITTLE UNDER
+1D8C0 ; [*1C91.0020.0002] # SIGNWRITING HAND-CUP INDEX RING LITTLE
+1D8C1 ; [*1C92.0020.0002] # SIGNWRITING HAND-HINGE INDEX RING LITTLE
+1D8C2 ; [*1C93.0020.0002] # SIGNWRITING HAND-ANGLE INDEX RING LITTLE OUT
+1D8C3 ; [*1C94.0020.0002] # SIGNWRITING HAND-ANGLE INDEX RING LITTLE
+1D8C4 ; [*1C95.0020.0002] # SIGNWRITING HAND-FIST MIDDLE DOWN
+1D8C5 ; [*1C96.0020.0002] # SIGNWRITING HAND-HINGE MIDDLE
+1D8C6 ; [*1C97.0020.0002] # SIGNWRITING HAND-FIST MIDDLE UP
+1D8C7 ; [*1C98.0020.0002] # SIGNWRITING HAND-CIRCLE MIDDLE UP
+1D8C8 ; [*1C99.0020.0002] # SIGNWRITING HAND-FIST MIDDLE RAISED KNUCKLE
+1D8C9 ; [*1C9A.0020.0002] # SIGNWRITING HAND-FIST MIDDLE UP THUMB SIDE
+1D8CA ; [*1C9B.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE THUMB
+1D8CB ; [*1C9C.0020.0002] # SIGNWRITING HAND-FIST MIDDLE THUMB LITTLE
+1D8CC ; [*1C9D.0020.0002] # SIGNWRITING HAND-FIST MIDDLE LITTLE
+1D8CD ; [*1C9E.0020.0002] # SIGNWRITING HAND-FIST MIDDLE RING LITTLE
+1D8CE ; [*1C9F.0020.0002] # SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE
+1D8CF ; [*1CA0.0020.0002] # SIGNWRITING HAND-CURLICUE MIDDLE RING LITTLE ON
+1D8D0 ; [*1CA1.0020.0002] # SIGNWRITING HAND-CUP MIDDLE RING LITTLE
+1D8D1 ; [*1CA2.0020.0002] # SIGNWRITING HAND-HINGE MIDDLE RING LITTLE
+1D8D2 ; [*1CA3.0020.0002] # SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE OUT
+1D8D3 ; [*1CA4.0020.0002] # SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE IN
+1D8D4 ; [*1CA5.0020.0002] # SIGNWRITING HAND-ANGLE MIDDLE RING LITTLE
+1D8D5 ; [*1CA6.0020.0002] # SIGNWRITING HAND-CIRCLE MIDDLE RING LITTLE BENT
+1D8D6 ; [*1CA7.0020.0002] # SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED
+1D8D7 ; [*1CA8.0020.0002] # SIGNWRITING HAND-CLAW MIDDLE RING LITTLE CONJOINED SIDE
+1D8D8 ; [*1CA9.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED OUT
+1D8D9 ; [*1CAA.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED IN
+1D8DA ; [*1CAB.0020.0002] # SIGNWRITING HAND-HOOK MIDDLE RING LITTLE CONJOINED
+1D8DB ; [*1CAC.0020.0002] # SIGNWRITING HAND-HINGE INDEX HINGED
+1D8DC ; [*1CAD.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE
+1D8DD ; [*1CAE.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB SIDE
+1D8DE ; [*1CAF.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB DIAGONAL
+1D8DF ; [*1CB0.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB CONJOINED
+1D8E0 ; [*1CB1.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE THUMB BENT
+1D8E1 ; [*1CB2.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX BENT
+1D8E2 ; [*1CB3.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE BOTH BENT
+1D8E3 ; [*1CB4.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB SIDE INDEX HINGE
+1D8E4 ; [*1CB5.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX STRAIGHT
+1D8E5 ; [*1CB6.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB FORWARD INDEX BENT
+1D8E6 ; [*1CB7.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB HOOK
+1D8E7 ; [*1CB8.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CURLICUE
+1D8E8 ; [*1CB9.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB INSIDE
+1D8E9 ; [*1CBA.0020.0002] # SIGNWRITING HAND-CLAW INDEX THUMB CURVE THUMB INSIDE
+1D8EA ; [*1CBB.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CURVE THUMB UNDER
+1D8EB ; [*1CBC.0020.0002] # SIGNWRITING HAND-FIST INDEX THUMB CIRCLE
+1D8EC ; [*1CBD.0020.0002] # SIGNWRITING HAND-CUP INDEX THUMB
+1D8ED ; [*1CBE.0020.0002] # SIGNWRITING HAND-CUP INDEX THUMB OPEN
+1D8EE ; [*1CBF.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB OPEN
+1D8EF ; [*1CC0.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB LARGE
+1D8F0 ; [*1CC1.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB
+1D8F1 ; [*1CC2.0020.0002] # SIGNWRITING HAND-HINGE INDEX THUMB SMALL
+1D8F2 ; [*1CC3.0020.0002] # SIGNWRITING HAND-ANGLE INDEX THUMB OUT
+1D8F3 ; [*1CC4.0020.0002] # SIGNWRITING HAND-ANGLE INDEX THUMB IN
+1D8F4 ; [*1CC5.0020.0002] # SIGNWRITING HAND-ANGLE INDEX THUMB
+1D8F5 ; [*1CC6.0020.0002] # SIGNWRITING HAND-FIST THUMB
+1D8F6 ; [*1CC7.0020.0002] # SIGNWRITING HAND-FIST THUMB HEEL
+1D8F7 ; [*1CC8.0020.0002] # SIGNWRITING HAND-FIST THUMB SIDE DIAGONAL
+1D8F8 ; [*1CC9.0020.0002] # SIGNWRITING HAND-FIST THUMB SIDE CONJOINED
+1D8F9 ; [*1CCA.0020.0002] # SIGNWRITING HAND-FIST THUMB SIDE BENT
+1D8FA ; [*1CCB.0020.0002] # SIGNWRITING HAND-FIST THUMB FORWARD
+1D8FB ; [*1CCC.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN INDEX MIDDLE
+1D8FC ; [*1CCD.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN MIDDLE RING
+1D8FD ; [*1CCE.0020.0002] # SIGNWRITING HAND-FIST THUMB BETWEEN RING LITTLE
+1D8FE ; [*1CCF.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER TWO FINGERS
+1D8FF ; [*1CD0.0020.0002] # SIGNWRITING HAND-FIST THUMB OVER TWO FINGERS
+1D900 ; [*1CD1.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER THREE FINGERS
+1D901 ; [*1CD2.0020.0002] # SIGNWRITING HAND-FIST THUMB UNDER FOUR FINGERS
+1D902 ; [*1CD3.0020.0002] # SIGNWRITING HAND-FIST THUMB OVER FOUR RAISED KNUCKLES
+1D903 ; [*1CD4.0020.0002] # SIGNWRITING HAND-FIST
+1D904 ; [*1CD5.0020.0002] # SIGNWRITING HAND-FIST HEEL
+1D905 ; [*1CD6.0020.0002] # SIGNWRITING TOUCH SINGLE
+1D906 ; [*1CD7.0020.0002] # SIGNWRITING TOUCH MULTIPLE
+1D907 ; [*1CD8.0020.0002] # SIGNWRITING TOUCH BETWEEN
+1D908 ; [*1CD9.0020.0002] # SIGNWRITING GRASP SINGLE
+1D909 ; [*1CDA.0020.0002] # SIGNWRITING GRASP MULTIPLE
+1D90A ; [*1CDB.0020.0002] # SIGNWRITING GRASP BETWEEN
+1D90B ; [*1CDC.0020.0002] # SIGNWRITING STRIKE SINGLE
+1D90C ; [*1CDD.0020.0002] # SIGNWRITING STRIKE MULTIPLE
+1D90D ; [*1CDE.0020.0002] # SIGNWRITING STRIKE BETWEEN
+1D90E ; [*1CDF.0020.0002] # SIGNWRITING BRUSH SINGLE
+1D90F ; [*1CE0.0020.0002] # SIGNWRITING BRUSH MULTIPLE
+1D910 ; [*1CE1.0020.0002] # SIGNWRITING BRUSH BETWEEN
+1D911 ; [*1CE2.0020.0002] # SIGNWRITING RUB SINGLE
+1D912 ; [*1CE3.0020.0002] # SIGNWRITING RUB MULTIPLE
+1D913 ; [*1CE4.0020.0002] # SIGNWRITING RUB BETWEEN
+1D914 ; [*1CE5.0020.0002] # SIGNWRITING SURFACE SYMBOLS
+1D915 ; [*1CE6.0020.0002] # SIGNWRITING SURFACE BETWEEN
+1D916 ; [*1CE7.0020.0002] # SIGNWRITING SQUEEZE LARGE SINGLE
+1D917 ; [*1CE8.0020.0002] # SIGNWRITING SQUEEZE SMALL SINGLE
+1D918 ; [*1CE9.0020.0002] # SIGNWRITING SQUEEZE LARGE MULTIPLE
+1D919 ; [*1CEA.0020.0002] # SIGNWRITING SQUEEZE SMALL MULTIPLE
+1D91A ; [*1CEB.0020.0002] # SIGNWRITING SQUEEZE SEQUENTIAL
+1D91B ; [*1CEC.0020.0002] # SIGNWRITING FLICK LARGE SINGLE
+1D91C ; [*1CED.0020.0002] # SIGNWRITING FLICK SMALL SINGLE
+1D91D ; [*1CEE.0020.0002] # SIGNWRITING FLICK LARGE MULTIPLE
+1D91E ; [*1CEF.0020.0002] # SIGNWRITING FLICK SMALL MULTIPLE
+1D91F ; [*1CF0.0020.0002] # SIGNWRITING FLICK SEQUENTIAL
+1D920 ; [*1CF1.0020.0002] # SIGNWRITING SQUEEZE FLICK ALTERNATING
+1D921 ; [*1CF2.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN LARGE
+1D922 ; [*1CF3.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN SMALL
+1D923 ; [*1CF4.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP SEQUENTIAL
+1D924 ; [*1CF5.0020.0002] # SIGNWRITING MOVEMENT-HINGE DOWN SEQUENTIAL
+1D925 ; [*1CF6.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING LARGE
+1D926 ; [*1CF7.0020.0002] # SIGNWRITING MOVEMENT-HINGE UP DOWN ALTERNATING SMALL
+1D927 ; [*1CF8.0020.0002] # SIGNWRITING MOVEMENT-HINGE SIDE TO SIDE SCISSORS
+1D928 ; [*1CF9.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE FINGER CONTACT
+1D929 ; [*1CFA.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE FINGER CONTACT
+1D92A ; [*1CFB.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT SMALL
+1D92B ; [*1CFC.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT MEDIUM
+1D92C ; [*1CFD.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGE
+1D92D ; [*1CFE.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE STRAIGHT LARGEST
+1D92E ; [*1CFF.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SINGLE WRIST FLEX
+1D92F ; [*1D00.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE STRAIGHT
+1D930 ; [*1D01.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE WRIST FLEX
+1D931 ; [*1D02.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING
+1D932 ; [*1D03.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE DOUBLE ALTERNATING WRIST FLEX
+1D933 ; [*1D04.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CROSS
+1D934 ; [*1D05.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE STRAIGHT MOVEMENT
+1D935 ; [*1D06.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE WRIST FLEX
+1D936 ; [*1D07.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING
+1D937 ; [*1D08.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE TRIPLE ALTERNATING WRIST FLEX
+1D938 ; [*1D09.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BEND SMALL
+1D939 ; [*1D0A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BEND MEDIUM
+1D93A ; [*1D0B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BEND LARGE
+1D93B ; [*1D0C.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER SMALL
+1D93C ; [*1D0D.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER MEDIUM
+1D93D ; [*1D0E.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER LARGE
+1D93E ; [*1D0F.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CORNER ROTATION
+1D93F ; [*1D10.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CHECK SMALL
+1D940 ; [*1D11.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CHECK MEDIUM
+1D941 ; [*1D12.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CHECK LARGE
+1D942 ; [*1D13.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BOX SMALL
+1D943 ; [*1D14.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BOX MEDIUM
+1D944 ; [*1D15.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE BOX LARGE
+1D945 ; [*1D16.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG SMALL
+1D946 ; [*1D17.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG MEDIUM
+1D947 ; [*1D18.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ZIGZAG LARGE
+1D948 ; [*1D19.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE PEAKS SMALL
+1D949 ; [*1D1A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE PEAKS MEDIUM
+1D94A ; [*1D1B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE PEAKS LARGE
+1D94B ; [*1D1C.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE SINGLE
+1D94C ; [*1D1D.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE DOUBLE
+1D94D ; [*1D1E.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-WALLPLANE ALTERNATING
+1D94E ; [*1D1F.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE SINGLE
+1D94F ; [*1D20.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE DOUBLE
+1D950 ; [*1D21.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ROTATION-FLOORPLANE ALTERNATING
+1D951 ; [*1D22.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE SHAKING
+1D952 ; [*1D23.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL SINGLE
+1D953 ; [*1D24.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL DOUBLE
+1D954 ; [*1D25.0020.0002] # SIGNWRITING TRAVEL-WALLPLANE ARM SPIRAL TRIPLE
+1D955 ; [*1D26.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY SMALL
+1D956 ; [*1D27.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY MEDIUM
+1D957 ; [*1D28.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGE
+1D958 ; [*1D29.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL AWAY LARGEST
+1D959 ; [*1D2A.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS SMALL
+1D95A ; [*1D2B.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS MEDIUM
+1D95B ; [*1D2C.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGE
+1D95C ; [*1D2D.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL TOWARDS LARGEST
+1D95D ; [*1D2E.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY SMALL
+1D95E ; [*1D2F.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY MEDIUM
+1D95F ; [*1D30.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGE
+1D960 ; [*1D31.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN AWAY LARGEST
+1D961 ; [*1D32.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS SMALL
+1D962 ; [*1D33.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS MEDIUM
+1D963 ; [*1D34.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGE
+1D964 ; [*1D35.0020.0002] # SIGNWRITING MOVEMENT-DIAGONAL BETWEEN TOWARDS LARGEST
+1D965 ; [*1D36.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT SMALL
+1D966 ; [*1D37.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT MEDIUM
+1D967 ; [*1D38.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGE
+1D968 ; [*1D39.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE STRAIGHT LARGEST
+1D969 ; [*1D3A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SINGLE WRIST FLEX
+1D96A ; [*1D3B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE STRAIGHT
+1D96B ; [*1D3C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE WRIST FLEX
+1D96C ; [*1D3D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING
+1D96D ; [*1D3E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE DOUBLE ALTERNATING WRIST FLEX
+1D96E ; [*1D3F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CROSS
+1D96F ; [*1D40.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE STRAIGHT MOVEMENT
+1D970 ; [*1D41.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE WRIST FLEX
+1D971 ; [*1D42.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING MOVEMENT
+1D972 ; [*1D43.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE TRIPLE ALTERNATING WRIST FLEX
+1D973 ; [*1D44.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BEND
+1D974 ; [*1D45.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CORNER SMALL
+1D975 ; [*1D46.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CORNER MEDIUM
+1D976 ; [*1D47.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CORNER LARGE
+1D977 ; [*1D48.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CHECK
+1D978 ; [*1D49.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BOX SMALL
+1D979 ; [*1D4A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BOX MEDIUM
+1D97A ; [*1D4B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE BOX LARGE
+1D97B ; [*1D4C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG SMALL
+1D97C ; [*1D4D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG MEDIUM
+1D97D ; [*1D4E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ZIGZAG LARGE
+1D97E ; [*1D4F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE PEAKS SMALL
+1D97F ; [*1D50.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE PEAKS MEDIUM
+1D980 ; [*1D51.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE PEAKS LARGE
+1D981 ; [*1D52.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE SINGLE
+1D982 ; [*1D53.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE DOUBLE
+1D983 ; [*1D54.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-FLOORPLANE ALTERNATING
+1D984 ; [*1D55.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE SINGLE
+1D985 ; [*1D56.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE DOUBLE
+1D986 ; [*1D57.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE ROTATION-WALLPLANE ALTERNATING
+1D987 ; [*1D58.0020.0002] # SIGNWRITING TRAVEL-FLOORPLANE SHAKING
+1D988 ; [*1D59.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER SMALL
+1D989 ; [*1D5A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER MEDIUM
+1D98A ; [*1D5B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGE
+1D98B ; [*1D5C.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE QUARTER LARGEST
+1D98C ; [*1D5D.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE SMALL
+1D98D ; [*1D5E.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE MEDIUM
+1D98E ; [*1D5F.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGE
+1D98F ; [*1D60.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HALF-CIRCLE LARGEST
+1D990 ; [*1D61.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE SMALL
+1D991 ; [*1D62.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE THREE-QUARTER CIRCLE MEDIUM
+1D992 ; [*1D63.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP SMALL
+1D993 ; [*1D64.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP MEDIUM
+1D994 ; [*1D65.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP LARGE
+1D995 ; [*1D66.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL
+1D996 ; [*1D67.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP MEDIUM
+1D997 ; [*1D68.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP LARGE
+1D998 ; [*1D69.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP SMALL DOUBLE
+1D999 ; [*1D6A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE SMALL
+1D99A ; [*1D6B.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE MEDIUM
+1D99B ; [*1D6C.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE DOUBLE LARGE
+1D99C ; [*1D6D.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE SMALL
+1D99D ; [*1D6E.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE MEDIUM
+1D99E ; [*1D6F.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE CURVE TRIPLE LARGE
+1D99F ; [*1D70.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE THEN STRAIGHT
+1D9A0 ; [*1D71.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS SMALL
+1D9A1 ; [*1D72.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVED CROSS MEDIUM
+1D9A2 ; [*1D73.0020.0002] # SIGNWRITING ROTATION-WALLPLANE SINGLE
+1D9A3 ; [*1D74.0020.0002] # SIGNWRITING ROTATION-WALLPLANE DOUBLE
+1D9A4 ; [*1D75.0020.0002] # SIGNWRITING ROTATION-WALLPLANE ALTERNATE
+1D9A5 ; [*1D76.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE SHAKING
+1D9A6 ; [*1D77.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING FRONT WALL
+1D9A7 ; [*1D78.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING FRONT WALL
+1D9A8 ; [*1D79.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING FRONT WALL
+1D9A9 ; [*1D7A.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING FRONT WALL
+1D9AA ; [*1D7B.0020.0002] # SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING FRONT WALL
+1D9AB ; [*1D7C.0020.0002] # SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING FRONT WALL
+1D9AC ; [*1D7D.0020.0002] # SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING FRONT WALL
+1D9AD ; [*1D7E.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE CURVE HITTING CHEST
+1D9AE ; [*1D7F.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE HUMP HITTING CHEST
+1D9AF ; [*1D80.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE LOOP HITTING CHEST
+1D9B0 ; [*1D81.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE HITTING CHEST
+1D9B1 ; [*1D82.0020.0002] # SIGNWRITING ROTATION-WALLPLANE SINGLE HITTING CHEST
+1D9B2 ; [*1D83.0020.0002] # SIGNWRITING ROTATION-WALLPLANE DOUBLE HITTING CHEST
+1D9B3 ; [*1D84.0020.0002] # SIGNWRITING ROTATION-WALLPLANE ALTERNATING HITTING CHEST
+1D9B4 ; [*1D85.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH SMALL
+1D9B5 ; [*1D86.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH MEDIUM
+1D9B6 ; [*1D87.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WAVE DIAGONAL PATH LARGE
+1D9B7 ; [*1D88.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING SMALL
+1D9B8 ; [*1D89.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING CEILING LARGE
+1D9B9 ; [*1D8A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL DOUBLE
+1D9BA ; [*1D8B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE DOUBLE
+1D9BB ; [*1D8C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING SMALL TRIPLE
+1D9BC ; [*1D8D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING CEILING LARGE TRIPLE
+1D9BD ; [*1D8E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL SINGLE
+1D9BE ; [*1D8F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE SINGLE
+1D9BF ; [*1D90.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING SMALL DOUBLE
+1D9C0 ; [*1D91.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING CEILING LARGE DOUBLE
+1D9C1 ; [*1D92.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING SMALL
+1D9C2 ; [*1D93.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING CEILING LARGE
+1D9C3 ; [*1D94.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING CEILING
+1D9C4 ; [*1D95.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING CEILING
+1D9C5 ; [*1D96.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING CEILING
+1D9C6 ; [*1D97.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR SMALL
+1D9C7 ; [*1D98.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE HITTING FLOOR LARGE
+1D9C8 ; [*1D99.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR SMALL DOUBLE
+1D9C9 ; [*1D9A.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR LARGE DOUBLE
+1D9CA ; [*1D9B.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE SMALL TRIPLE
+1D9CB ; [*1D9C.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP HITTING FLOOR TRIPLE LARGE TRIPLE
+1D9CC ; [*1D9D.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL SINGLE
+1D9CD ; [*1D9E.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE SINGLE
+1D9CE ; [*1D9F.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR SMALL DOUBLE
+1D9CF ; [*1DA0.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP HITTING FLOOR LARGE DOUBLE
+1D9D0 ; [*1DA1.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR SMALL
+1D9D1 ; [*1DA2.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE HITTING FLOOR LARGE
+1D9D2 ; [*1DA3.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE SINGLE HITTING FLOOR
+1D9D3 ; [*1DA4.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE DOUBLE HITTING FLOOR
+1D9D4 ; [*1DA5.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE ALTERNATING HITTING FLOOR
+1D9D5 ; [*1DA6.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE SMALL
+1D9D6 ; [*1DA7.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE MEDIUM
+1D9D7 ; [*1DA8.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGE
+1D9D8 ; [*1DA9.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE LARGEST
+1D9D9 ; [*1DAA.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE CURVE COMBINED
+1D9DA ; [*1DAB.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE HUMP SMALL
+1D9DB ; [*1DAC.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE LOOP SMALL
+1D9DC ; [*1DAD.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE SNAKE
+1D9DD ; [*1DAE.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE SMALL
+1D9DE ; [*1DAF.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WAVE LARGE
+1D9DF ; [*1DB0.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE SINGLE
+1D9E0 ; [*1DB1.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE DOUBLE
+1D9E1 ; [*1DB2.0020.0002] # SIGNWRITING ROTATION-FLOORPLANE ALTERNATING
+1D9E2 ; [*1DB3.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE SHAKING PARALLEL
+1D9E3 ; [*1DB4.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL SINGLE
+1D9E4 ; [*1DB5.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM SINGLE
+1D9E5 ; [*1DB6.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE SMALL DOUBLE
+1D9E6 ; [*1DB7.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE ARM CIRCLE MEDIUM DOUBLE
+1D9E7 ; [*1DB8.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL SINGLE
+1D9E8 ; [*1DB9.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM SINGLE
+1D9E9 ; [*1DBA.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE SINGLE
+1D9EA ; [*1DBB.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL SMALL DOUBLE
+1D9EB ; [*1DBC.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL MEDIUM DOUBLE
+1D9EC ; [*1DBD.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE ARM CIRCLE HITTING WALL LARGE DOUBLE
+1D9ED ; [*1DBE.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT SINGLE
+1D9EE ; [*1DBF.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE WRIST CIRCLE FRONT DOUBLE
+1D9EF ; [*1DC0.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL SINGLE
+1D9F0 ; [*1DC1.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE WRIST CIRCLE HITTING WALL DOUBLE
+1D9F1 ; [*1DC2.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES SINGLE
+1D9F2 ; [*1DC3.0020.0002] # SIGNWRITING MOVEMENT-WALLPLANE FINGER CIRCLES DOUBLE
+1D9F3 ; [*1DC4.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL SINGLE
+1D9F4 ; [*1DC5.0020.0002] # SIGNWRITING MOVEMENT-FLOORPLANE FINGER CIRCLES HITTING WALL DOUBLE
+1D9F5 ; [*1DC6.0020.0002] # SIGNWRITING DYNAMIC ARROWHEAD SMALL
+1D9F6 ; [*1DC7.0020.0002] # SIGNWRITING DYNAMIC ARROWHEAD LARGE
+1D9F7 ; [*1DC8.0020.0002] # SIGNWRITING DYNAMIC FAST
+1D9F8 ; [*1DC9.0020.0002] # SIGNWRITING DYNAMIC SLOW
+1D9F9 ; [*1DCA.0020.0002] # SIGNWRITING DYNAMIC TENSE
+1D9FA ; [*1DCB.0020.0002] # SIGNWRITING DYNAMIC RELAXED
+1D9FB ; [*1DCC.0020.0002] # SIGNWRITING DYNAMIC SIMULTANEOUS
+1D9FC ; [*1DCD.0020.0002] # SIGNWRITING DYNAMIC SIMULTANEOUS ALTERNATING
+1D9FD ; [*1DCE.0020.0002] # SIGNWRITING DYNAMIC EVERY OTHER TIME
+1D9FE ; [*1DCF.0020.0002] # SIGNWRITING DYNAMIC GRADUAL
+1D9FF ; [*1DD0.0020.0002] # SIGNWRITING HEAD
+1DA00 ; [.0000.0000.0000] # SIGNWRITING HEAD RIM
+1DA01 ; [.0000.0000.0000] # SIGNWRITING HEAD MOVEMENT-WALLPLANE STRAIGHT
+1DA02 ; [.0000.0000.0000] # SIGNWRITING HEAD MOVEMENT-WALLPLANE TILT
+1DA03 ; [.0000.0000.0000] # SIGNWRITING HEAD MOVEMENT-FLOORPLANE STRAIGHT
+1DA04 ; [.0000.0000.0000] # SIGNWRITING HEAD MOVEMENT-WALLPLANE CURVE
+1DA05 ; [.0000.0000.0000] # SIGNWRITING HEAD MOVEMENT-FLOORPLANE CURVE
+1DA06 ; [.0000.0000.0000] # SIGNWRITING HEAD MOVEMENT CIRCLE
+1DA07 ; [.0000.0000.0000] # SIGNWRITING FACE DIRECTION POSITION NOSE FORWARD TILTING
+1DA08 ; [.0000.0000.0000] # SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN
+1DA09 ; [.0000.0000.0000] # SIGNWRITING FACE DIRECTION POSITION NOSE UP OR DOWN TILTING
+1DA0A ; [.0000.0000.0000] # SIGNWRITING EYEBROWS STRAIGHT UP
+1DA0B ; [.0000.0000.0000] # SIGNWRITING EYEBROWS STRAIGHT NEUTRAL
+1DA0C ; [.0000.0000.0000] # SIGNWRITING EYEBROWS STRAIGHT DOWN
+1DA0D ; [.0000.0000.0000] # SIGNWRITING DREAMY EYEBROWS NEUTRAL DOWN
+1DA0E ; [.0000.0000.0000] # SIGNWRITING DREAMY EYEBROWS DOWN NEUTRAL
+1DA0F ; [.0000.0000.0000] # SIGNWRITING DREAMY EYEBROWS UP NEUTRAL
+1DA10 ; [.0000.0000.0000] # SIGNWRITING DREAMY EYEBROWS NEUTRAL UP
+1DA11 ; [.0000.0000.0000] # SIGNWRITING FOREHEAD NEUTRAL
+1DA12 ; [.0000.0000.0000] # SIGNWRITING FOREHEAD CONTACT
+1DA13 ; [.0000.0000.0000] # SIGNWRITING FOREHEAD WRINKLED
+1DA14 ; [.0000.0000.0000] # SIGNWRITING EYES OPEN
+1DA15 ; [.0000.0000.0000] # SIGNWRITING EYES SQUEEZED
+1DA16 ; [.0000.0000.0000] # SIGNWRITING EYES CLOSED
+1DA17 ; [.0000.0000.0000] # SIGNWRITING EYE BLINK SINGLE
+1DA18 ; [.0000.0000.0000] # SIGNWRITING EYE BLINK MULTIPLE
+1DA19 ; [.0000.0000.0000] # SIGNWRITING EYES HALF OPEN
+1DA1A ; [.0000.0000.0000] # SIGNWRITING EYES WIDE OPEN
+1DA1B ; [.0000.0000.0000] # SIGNWRITING EYES HALF CLOSED
+1DA1C ; [.0000.0000.0000] # SIGNWRITING EYES WIDENING MOVEMENT
+1DA1D ; [.0000.0000.0000] # SIGNWRITING EYE WINK
+1DA1E ; [.0000.0000.0000] # SIGNWRITING EYELASHES UP
+1DA1F ; [.0000.0000.0000] # SIGNWRITING EYELASHES DOWN
+1DA20 ; [.0000.0000.0000] # SIGNWRITING EYELASHES FLUTTERING
+1DA21 ; [.0000.0000.0000] # SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT
+1DA22 ; [.0000.0000.0000] # SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT DOUBLE
+1DA23 ; [.0000.0000.0000] # SIGNWRITING EYEGAZE-WALLPLANE STRAIGHT ALTERNATING
+1DA24 ; [.0000.0000.0000] # SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT
+1DA25 ; [.0000.0000.0000] # SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT DOUBLE
+1DA26 ; [.0000.0000.0000] # SIGNWRITING EYEGAZE-FLOORPLANE STRAIGHT ALTERNATING
+1DA27 ; [.0000.0000.0000] # SIGNWRITING EYEGAZE-WALLPLANE CURVED
+1DA28 ; [.0000.0000.0000] # SIGNWRITING EYEGAZE-FLOORPLANE CURVED
+1DA29 ; [.0000.0000.0000] # SIGNWRITING EYEGAZE-WALLPLANE CIRCLING
+1DA2A ; [.0000.0000.0000] # SIGNWRITING CHEEKS PUFFED
+1DA2B ; [.0000.0000.0000] # SIGNWRITING CHEEKS NEUTRAL
+1DA2C ; [.0000.0000.0000] # SIGNWRITING CHEEKS SUCKED
+1DA2D ; [.0000.0000.0000] # SIGNWRITING TENSE CHEEKS HIGH
+1DA2E ; [.0000.0000.0000] # SIGNWRITING TENSE CHEEKS MIDDLE
+1DA2F ; [.0000.0000.0000] # SIGNWRITING TENSE CHEEKS LOW
+1DA30 ; [.0000.0000.0000] # SIGNWRITING EARS
+1DA31 ; [.0000.0000.0000] # SIGNWRITING NOSE NEUTRAL
+1DA32 ; [.0000.0000.0000] # SIGNWRITING NOSE CONTACT
+1DA33 ; [.0000.0000.0000] # SIGNWRITING NOSE WRINKLES
+1DA34 ; [.0000.0000.0000] # SIGNWRITING NOSE WIGGLES
+1DA35 ; [.0000.0000.0000] # SIGNWRITING AIR BLOWING OUT
+1DA36 ; [.0000.0000.0000] # SIGNWRITING AIR SUCKING IN
+1DA37 ; [*1DD1.0020.0002] # SIGNWRITING AIR BLOW SMALL ROTATIONS
+1DA38 ; [*1DD2.0020.0002] # SIGNWRITING AIR SUCK SMALL ROTATIONS
+1DA39 ; [*1DD3.0020.0002] # SIGNWRITING BREATH INHALE
+1DA3A ; [*1DD4.0020.0002] # SIGNWRITING BREATH EXHALE
+1DA3B ; [.0000.0000.0000] # SIGNWRITING MOUTH CLOSED NEUTRAL
+1DA3C ; [.0000.0000.0000] # SIGNWRITING MOUTH CLOSED FORWARD
+1DA3D ; [.0000.0000.0000] # SIGNWRITING MOUTH CLOSED CONTACT
+1DA3E ; [.0000.0000.0000] # SIGNWRITING MOUTH SMILE
+1DA3F ; [.0000.0000.0000] # SIGNWRITING MOUTH SMILE WRINKLED
+1DA40 ; [.0000.0000.0000] # SIGNWRITING MOUTH SMILE OPEN
+1DA41 ; [.0000.0000.0000] # SIGNWRITING MOUTH FROWN
+1DA42 ; [.0000.0000.0000] # SIGNWRITING MOUTH FROWN WRINKLED
+1DA43 ; [.0000.0000.0000] # SIGNWRITING MOUTH FROWN OPEN
+1DA44 ; [.0000.0000.0000] # SIGNWRITING MOUTH OPEN CIRCLE
+1DA45 ; [.0000.0000.0000] # SIGNWRITING MOUTH OPEN FORWARD
+1DA46 ; [.0000.0000.0000] # SIGNWRITING MOUTH OPEN WRINKLED
+1DA47 ; [.0000.0000.0000] # SIGNWRITING MOUTH OPEN OVAL
+1DA48 ; [.0000.0000.0000] # SIGNWRITING MOUTH OPEN OVAL WRINKLED
+1DA49 ; [.0000.0000.0000] # SIGNWRITING MOUTH OPEN OVAL YAWN
+1DA4A ; [.0000.0000.0000] # SIGNWRITING MOUTH OPEN RECTANGLE
+1DA4B ; [.0000.0000.0000] # SIGNWRITING MOUTH OPEN RECTANGLE WRINKLED
+1DA4C ; [.0000.0000.0000] # SIGNWRITING MOUTH OPEN RECTANGLE YAWN
+1DA4D ; [.0000.0000.0000] # SIGNWRITING MOUTH KISS
+1DA4E ; [.0000.0000.0000] # SIGNWRITING MOUTH KISS FORWARD
+1DA4F ; [.0000.0000.0000] # SIGNWRITING MOUTH KISS WRINKLED
+1DA50 ; [.0000.0000.0000] # SIGNWRITING MOUTH TENSE
+1DA51 ; [.0000.0000.0000] # SIGNWRITING MOUTH TENSE FORWARD
+1DA52 ; [.0000.0000.0000] # SIGNWRITING MOUTH TENSE SUCKED
+1DA53 ; [.0000.0000.0000] # SIGNWRITING LIPS PRESSED TOGETHER
+1DA54 ; [.0000.0000.0000] # SIGNWRITING LIP LOWER OVER UPPER
+1DA55 ; [.0000.0000.0000] # SIGNWRITING LIP UPPER OVER LOWER
+1DA56 ; [.0000.0000.0000] # SIGNWRITING MOUTH CORNERS
+1DA57 ; [.0000.0000.0000] # SIGNWRITING MOUTH WRINKLES SINGLE
+1DA58 ; [.0000.0000.0000] # SIGNWRITING MOUTH WRINKLES DOUBLE
+1DA59 ; [.0000.0000.0000] # SIGNWRITING TONGUE STICKING OUT FAR
+1DA5A ; [.0000.0000.0000] # SIGNWRITING TONGUE LICKING LIPS
+1DA5B ; [.0000.0000.0000] # SIGNWRITING TONGUE TIP BETWEEN LIPS
+1DA5C ; [.0000.0000.0000] # SIGNWRITING TONGUE TIP TOUCHING INSIDE MOUTH
+1DA5D ; [.0000.0000.0000] # SIGNWRITING TONGUE INSIDE MOUTH RELAXED
+1DA5E ; [.0000.0000.0000] # SIGNWRITING TONGUE MOVES AGAINST CHEEK
+1DA5F ; [.0000.0000.0000] # SIGNWRITING TONGUE CENTRE STICKING OUT
+1DA60 ; [.0000.0000.0000] # SIGNWRITING TONGUE CENTRE INSIDE MOUTH
+1DA61 ; [.0000.0000.0000] # SIGNWRITING TEETH
+1DA62 ; [.0000.0000.0000] # SIGNWRITING TEETH MOVEMENT
+1DA63 ; [.0000.0000.0000] # SIGNWRITING TEETH ON TONGUE
+1DA64 ; [.0000.0000.0000] # SIGNWRITING TEETH ON TONGUE MOVEMENT
+1DA65 ; [.0000.0000.0000] # SIGNWRITING TEETH ON LIPS
+1DA66 ; [.0000.0000.0000] # SIGNWRITING TEETH ON LIPS MOVEMENT
+1DA67 ; [.0000.0000.0000] # SIGNWRITING TEETH BITE LIPS
+1DA68 ; [.0000.0000.0000] # SIGNWRITING MOVEMENT-WALLPLANE JAW
+1DA69 ; [.0000.0000.0000] # SIGNWRITING MOVEMENT-FLOORPLANE JAW
+1DA6A ; [.0000.0000.0000] # SIGNWRITING NECK
+1DA6B ; [.0000.0000.0000] # SIGNWRITING HAIR
+1DA6C ; [.0000.0000.0000] # SIGNWRITING EXCITEMENT
+1DA6D ; [*1DD5.0020.0002] # SIGNWRITING SHOULDER HIP SPINE
+1DA6E ; [*1DD6.0020.0002] # SIGNWRITING SHOULDER HIP POSITIONS
+1DA6F ; [*1DD7.0020.0002] # SIGNWRITING WALLPLANE SHOULDER HIP MOVE
+1DA70 ; [*1DD8.0020.0002] # SIGNWRITING FLOORPLANE SHOULDER HIP MOVE
+1DA71 ; [*1DD9.0020.0002] # SIGNWRITING SHOULDER TILTING FROM WAIST
+1DA72 ; [*1DDA.0020.0002] # SIGNWRITING TORSO-WALLPLANE STRAIGHT STRETCH
+1DA73 ; [*1DDB.0020.0002] # SIGNWRITING TORSO-WALLPLANE CURVED BEND
+1DA74 ; [*1DDC.0020.0002] # SIGNWRITING TORSO-FLOORPLANE TWISTING
+1DA75 ; [.0000.0000.0000] # SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
+1DA76 ; [*1DDD.0020.0002] # SIGNWRITING LIMB COMBINATION
+1DA77 ; [*1DDE.0020.0002] # SIGNWRITING LIMB LENGTH-1
+1DA78 ; [*1DDF.0020.0002] # SIGNWRITING LIMB LENGTH-2
+1DA79 ; [*1DE0.0020.0002] # SIGNWRITING LIMB LENGTH-3
+1DA7A ; [*1DE1.0020.0002] # SIGNWRITING LIMB LENGTH-4
+1DA7B ; [*1DE2.0020.0002] # SIGNWRITING LIMB LENGTH-5
+1DA7C ; [*1DE3.0020.0002] # SIGNWRITING LIMB LENGTH-6
+1DA7D ; [*1DE4.0020.0002] # SIGNWRITING LIMB LENGTH-7
+1DA7E ; [*1DE5.0020.0002] # SIGNWRITING FINGER
+1DA7F ; [*1DE6.0020.0002] # SIGNWRITING LOCATION-WALLPLANE SPACE
+1DA80 ; [*1DE7.0020.0002] # SIGNWRITING LOCATION-FLOORPLANE SPACE
+1DA81 ; [*1DE8.0020.0002] # SIGNWRITING LOCATION HEIGHT
+1DA82 ; [*1DE9.0020.0002] # SIGNWRITING LOCATION WIDTH
+1DA83 ; [*1DEA.0020.0002] # SIGNWRITING LOCATION DEPTH
+1DA84 ; [.0000.0000.0000] # SIGNWRITING LOCATION HEAD NECK
+1DA85 ; [*1DEB.0020.0002] # SIGNWRITING LOCATION TORSO
+1DA86 ; [*1DEC.0020.0002] # SIGNWRITING LOCATION LIMBS DIGITS
+1DA87 ; [*04C4.0020.0002] # SIGNWRITING COMMA
+1DA88 ; [*04C5.0020.0002] # SIGNWRITING FULL STOP
+1DA89 ; [*04C6.0020.0002] # SIGNWRITING SEMICOLON
+1DA8A ; [*04C7.0020.0002] # SIGNWRITING COLON
+1DA8B ; [*04C8.0020.0002] # SIGNWRITING PARENTHESIS
+1DA9B ; [.0000.0000.0000] # SIGNWRITING FILL MODIFIER-2
+1DA9C ; [.0000.0000.0000] # SIGNWRITING FILL MODIFIER-3
+1DA9D ; [.0000.0000.0000] # SIGNWRITING FILL MODIFIER-4
+1DA9E ; [.0000.0000.0000] # SIGNWRITING FILL MODIFIER-5
+1DA9F ; [.0000.0000.0000] # SIGNWRITING FILL MODIFIER-6
+1DAA1 ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-2
+1DAA2 ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-3
+1DAA3 ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-4
+1DAA4 ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-5
+1DAA5 ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-6
+1DAA6 ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-7
+1DAA7 ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-8
+1DAA8 ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-9
+1DAA9 ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-10
+1DAAA ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-11
+1DAAB ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-12
+1DAAC ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-13
+1DAAD ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-14
+1DAAE ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-15
+1DAAF ; [.0000.0000.0000] # SIGNWRITING ROTATION MODIFIER-16
+1E14F ; [*115A.0020.0002] # NYIAKENG PUACHUE HMONG CIRCLED CA
+1E8D0 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER TEENS
+1E8D1 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER TENS
+1E8D2 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER HUNDREDS
+1E8D3 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER THOUSANDS
+1E8D4 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER TEN THOUSANDS
+1E8D5 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER HUNDRED THOUSANDS
+1E8D6 ; [.0000.0000.0000] # MENDE KIKAKUI COMBINING NUMBER MILLIONS
+1E95E ; [*026E.0020.0002] # ADLAM INITIAL EXCLAMATION MARK
+1E95F ; [*027E.0020.0002] # ADLAM INITIAL QUESTION MARK
+1EC7A ; [*1F6E.0020.0002] # INDIC SIYAQ NUMBER TEN
+1EC7B ; [*1F6F.0020.0002] # INDIC SIYAQ NUMBER TWENTY
+1EC7C ; [*1F70.0020.0002] # INDIC SIYAQ NUMBER THIRTY
+1EC7D ; [*1F71.0020.0002] # INDIC SIYAQ NUMBER FORTY
+1EC7E ; [*1F72.0020.0002] # INDIC SIYAQ NUMBER FIFTY
+1EC7F ; [*1F73.0020.0002] # INDIC SIYAQ NUMBER SIXTY
+1EC80 ; [*1F74.0020.0002] # INDIC SIYAQ NUMBER SEVENTY
+1EC81 ; [*1F75.0020.0002] # INDIC SIYAQ NUMBER EIGHTY
+1EC82 ; [*1F76.0020.0002] # INDIC SIYAQ NUMBER NINETY
+1EC83 ; [*1F77.0020.0002] # INDIC SIYAQ NUMBER ONE HUNDRED
+1EC84 ; [*1F78.0020.0002] # INDIC SIYAQ NUMBER TWO HUNDRED
+1EC85 ; [*1F79.0020.0002] # INDIC SIYAQ NUMBER THREE HUNDRED
+1EC86 ; [*1F7A.0020.0002] # INDIC SIYAQ NUMBER FOUR HUNDRED
+1EC87 ; [*1F7B.0020.0002] # INDIC SIYAQ NUMBER FIVE HUNDRED
+1EC88 ; [*1F7C.0020.0002] # INDIC SIYAQ NUMBER SIX HUNDRED
+1EC89 ; [*1F7D.0020.0002] # INDIC SIYAQ NUMBER SEVEN HUNDRED
+1EC8A ; [*1F7E.0020.0002] # INDIC SIYAQ NUMBER EIGHT HUNDRED
+1EC8B ; [*1F7F.0020.0002] # INDIC SIYAQ NUMBER NINE HUNDRED
+1EC8C ; [*1F80.0020.0002] # INDIC SIYAQ NUMBER ONE THOUSAND
+1EC8D ; [*1F81.0020.0002] # INDIC SIYAQ NUMBER TWO THOUSAND
+1EC8E ; [*1F82.0020.0002] # INDIC SIYAQ NUMBER THREE THOUSAND
+1EC8F ; [*1F83.0020.0002] # INDIC SIYAQ NUMBER FOUR THOUSAND
+1EC90 ; [*1F84.0020.0002] # INDIC SIYAQ NUMBER FIVE THOUSAND
+1EC91 ; [*1F85.0020.0002] # INDIC SIYAQ NUMBER SIX THOUSAND
+1EC92 ; [*1F86.0020.0002] # INDIC SIYAQ NUMBER SEVEN THOUSAND
+1EC93 ; [*1F87.0020.0002] # INDIC SIYAQ NUMBER EIGHT THOUSAND
+1EC94 ; [*1F88.0020.0002] # INDIC SIYAQ NUMBER NINE THOUSAND
+1EC95 ; [*1F89.0020.0002] # INDIC SIYAQ NUMBER TEN THOUSAND
+1EC96 ; [*1F8A.0020.0002] # INDIC SIYAQ NUMBER TWENTY THOUSAND
+1EC97 ; [*1F8B.0020.0002] # INDIC SIYAQ NUMBER THIRTY THOUSAND
+1EC98 ; [*1F8C.0020.0002] # INDIC SIYAQ NUMBER FORTY THOUSAND
+1EC99 ; [*1F8D.0020.0002] # INDIC SIYAQ NUMBER FIFTY THOUSAND
+1EC9A ; [*1F8E.0020.0002] # INDIC SIYAQ NUMBER SIXTY THOUSAND
+1EC9B ; [*1F8F.0020.0002] # INDIC SIYAQ NUMBER SEVENTY THOUSAND
+1EC9C ; [*1F90.0020.0002] # INDIC SIYAQ NUMBER EIGHTY THOUSAND
+1EC9D ; [*1F91.0020.0002] # INDIC SIYAQ NUMBER NINETY THOUSAND
+1EC9E ; [*1F92.0020.0002] # INDIC SIYAQ NUMBER LAKH
+1EC9F ; [*1F93.0020.0002] # INDIC SIYAQ NUMBER LAKHAN
+1ECA0 ; [*1F94.0020.0002] # INDIC SIYAQ LAKH MARK
+1ECA1 ; [*1F95.0020.0002] # INDIC SIYAQ NUMBER KAROR
+1ECA2 ; [*1F96.0020.0002] # INDIC SIYAQ NUMBER KARORAN
+1ECAC ; [*13C2.0020.0002] # INDIC SIYAQ PLACEHOLDER
+1ECAD ; [*1F97.0020.0002] # INDIC SIYAQ FRACTION ONE QUARTER
+1ECAE ; [*1F98.0020.0002] # INDIC SIYAQ FRACTION ONE HALF
+1ECAF ; [*1F99.0020.0002] # INDIC SIYAQ FRACTION THREE QUARTERS
+1ECB3 ; [*1F9A.0020.0002] # INDIC SIYAQ NUMBER ALTERNATE TEN THOUSAND
+1ECB4 ; [*1F9B.0020.0002] # INDIC SIYAQ ALTERNATE LAKH MARK
+1ED0A ; [*1F9C.0020.0002] # OTTOMAN SIYAQ NUMBER TEN
+1ED0B ; [*1F9D.0020.0002] # OTTOMAN SIYAQ NUMBER TWENTY
+1ED0C ; [*1F9E.0020.0002] # OTTOMAN SIYAQ NUMBER THIRTY
+1ED0D ; [*1F9F.0020.0002] # OTTOMAN SIYAQ NUMBER FORTY
+1ED0E ; [*1FA0.0020.0002] # OTTOMAN SIYAQ NUMBER FIFTY
+1ED0F ; [*1FA1.0020.0002] # OTTOMAN SIYAQ NUMBER SIXTY
+1ED10 ; [*1FA2.0020.0002] # OTTOMAN SIYAQ NUMBER SEVENTY
+1ED11 ; [*1FA3.0020.0002] # OTTOMAN SIYAQ NUMBER EIGHTY
+1ED12 ; [*1FA4.0020.0002] # OTTOMAN SIYAQ NUMBER NINETY
+1ED13 ; [*1FA5.0020.0002] # OTTOMAN SIYAQ NUMBER ONE HUNDRED
+1ED14 ; [*1FA6.0020.0002] # OTTOMAN SIYAQ NUMBER TWO HUNDRED
+1ED15 ; [*1FA7.0020.0002] # OTTOMAN SIYAQ NUMBER THREE HUNDRED
+1ED16 ; [*1FA8.0020.0002] # OTTOMAN SIYAQ NUMBER FOUR HUNDRED
+1ED17 ; [*1FA9.0020.0002] # OTTOMAN SIYAQ NUMBER FIVE HUNDRED
+1ED18 ; [*1FAA.0020.0002] # OTTOMAN SIYAQ NUMBER SIX HUNDRED
+1ED19 ; [*1FAB.0020.0002] # OTTOMAN SIYAQ NUMBER SEVEN HUNDRED
+1ED1A ; [*1FAC.0020.0002] # OTTOMAN SIYAQ NUMBER EIGHT HUNDRED
+1ED1B ; [*1FAD.0020.0002] # OTTOMAN SIYAQ NUMBER NINE HUNDRED
+1ED1C ; [*1FAE.0020.0002] # OTTOMAN SIYAQ NUMBER ONE THOUSAND
+1ED1D ; [*1FAF.0020.0002] # OTTOMAN SIYAQ NUMBER TWO THOUSAND
+1ED1E ; [*1FB0.0020.0002] # OTTOMAN SIYAQ NUMBER THREE THOUSAND
+1ED1F ; [*1FB1.0020.0002] # OTTOMAN SIYAQ NUMBER FOUR THOUSAND
+1ED20 ; [*1FB2.0020.0002] # OTTOMAN SIYAQ NUMBER FIVE THOUSAND
+1ED21 ; [*1FB3.0020.0002] # OTTOMAN SIYAQ NUMBER SIX THOUSAND
+1ED22 ; [*1FB4.0020.0002] # OTTOMAN SIYAQ NUMBER SEVEN THOUSAND
+1ED23 ; [*1FB5.0020.0002] # OTTOMAN SIYAQ NUMBER EIGHT THOUSAND
+1ED24 ; [*1FB6.0020.0002] # OTTOMAN SIYAQ NUMBER NINE THOUSAND
+1ED25 ; [*1FB7.0020.0002] # OTTOMAN SIYAQ NUMBER TEN THOUSAND
+1ED26 ; [*1FB8.0020.0002] # OTTOMAN SIYAQ NUMBER TWENTY THOUSAND
+1ED27 ; [*1FB9.0020.0002] # OTTOMAN SIYAQ NUMBER THIRTY THOUSAND
+1ED28 ; [*1FBA.0020.0002] # OTTOMAN SIYAQ NUMBER FORTY THOUSAND
+1ED29 ; [*1FBB.0020.0002] # OTTOMAN SIYAQ NUMBER FIFTY THOUSAND
+1ED2A ; [*1FBC.0020.0002] # OTTOMAN SIYAQ NUMBER SIXTY THOUSAND
+1ED2B ; [*1FBD.0020.0002] # OTTOMAN SIYAQ NUMBER SEVENTY THOUSAND
+1ED2C ; [*1FBE.0020.0002] # OTTOMAN SIYAQ NUMBER EIGHTY THOUSAND
+1ED2D ; [*1FBF.0020.0002] # OTTOMAN SIYAQ NUMBER NINETY THOUSAND
+1ED2E ; [*13C3.0020.0002] # OTTOMAN SIYAQ MARRATAN
+1ED37 ; [*1FC0.0020.0002] # OTTOMAN SIYAQ ALTERNATE NUMBER TEN
+1ED38 ; [*1FC1.0020.0002] # OTTOMAN SIYAQ ALTERNATE NUMBER FOUR HUNDRED
+1ED39 ; [*1FC2.0020.0002] # OTTOMAN SIYAQ ALTERNATE NUMBER SIX HUNDRED
+1ED3A ; [*1FC3.0020.0002] # OTTOMAN SIYAQ ALTERNATE NUMBER TWO THOUSAND
+1ED3B ; [*1FC4.0020.0002] # OTTOMAN SIYAQ ALTERNATE NUMBER TEN THOUSAND
+1ED3C ; [*1FC5.0020.0002] # OTTOMAN SIYAQ FRACTION ONE HALF
+1ED3D ; [*1FC6.0020.0002] # OTTOMAN SIYAQ FRACTION ONE SIXTH
+1EEF0 ; [*0551.0020.0002] # ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL
+1EEF1 ; [*0552.0020.0002] # ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
+1F000 ; [*13C4.0020.0002] # MAHJONG TILE EAST WIND
+1F001 ; [*13C5.0020.0002] # MAHJONG TILE SOUTH WIND
+1F002 ; [*13C6.0020.0002] # MAHJONG TILE WEST WIND
+1F003 ; [*13C7.0020.0002] # MAHJONG TILE NORTH WIND
+1F004 ; [*13C8.0020.0002] # MAHJONG TILE RED DRAGON
+1F005 ; [*13C9.0020.0002] # MAHJONG TILE GREEN DRAGON
+1F006 ; [*13CA.0020.0002] # MAHJONG TILE WHITE DRAGON
+1F007 ; [*13CB.0020.0002] # MAHJONG TILE ONE OF CHARACTERS
+1F008 ; [*13CC.0020.0002] # MAHJONG TILE TWO OF CHARACTERS
+1F009 ; [*13CD.0020.0002] # MAHJONG TILE THREE OF CHARACTERS
+1F00A ; [*13CE.0020.0002] # MAHJONG TILE FOUR OF CHARACTERS
+1F00B ; [*13CF.0020.0002] # MAHJONG TILE FIVE OF CHARACTERS
+1F00C ; [*13D0.0020.0002] # MAHJONG TILE SIX OF CHARACTERS
+1F00D ; [*13D1.0020.0002] # MAHJONG TILE SEVEN OF CHARACTERS
+1F00E ; [*13D2.0020.0002] # MAHJONG TILE EIGHT OF CHARACTERS
+1F00F ; [*13D3.0020.0002] # MAHJONG TILE NINE OF CHARACTERS
+1F010 ; [*13D4.0020.0002] # MAHJONG TILE ONE OF BAMBOOS
+1F011 ; [*13D5.0020.0002] # MAHJONG TILE TWO OF BAMBOOS
+1F012 ; [*13D6.0020.0002] # MAHJONG TILE THREE OF BAMBOOS
+1F013 ; [*13D7.0020.0002] # MAHJONG TILE FOUR OF BAMBOOS
+1F014 ; [*13D8.0020.0002] # MAHJONG TILE FIVE OF BAMBOOS
+1F015 ; [*13D9.0020.0002] # MAHJONG TILE SIX OF BAMBOOS
+1F016 ; [*13DA.0020.0002] # MAHJONG TILE SEVEN OF BAMBOOS
+1F017 ; [*13DB.0020.0002] # MAHJONG TILE EIGHT OF BAMBOOS
+1F018 ; [*13DC.0020.0002] # MAHJONG TILE NINE OF BAMBOOS
+1F019 ; [*13DD.0020.0002] # MAHJONG TILE ONE OF CIRCLES
+1F01A ; [*13DE.0020.0002] # MAHJONG TILE TWO OF CIRCLES
+1F01B ; [*13DF.0020.0002] # MAHJONG TILE THREE OF CIRCLES
+1F01C ; [*13E0.0020.0002] # MAHJONG TILE FOUR OF CIRCLES
+1F01D ; [*13E1.0020.0002] # MAHJONG TILE FIVE OF CIRCLES
+1F01E ; [*13E2.0020.0002] # MAHJONG TILE SIX OF CIRCLES
+1F01F ; [*13E3.0020.0002] # MAHJONG TILE SEVEN OF CIRCLES
+1F020 ; [*13E4.0020.0002] # MAHJONG TILE EIGHT OF CIRCLES
+1F021 ; [*13E5.0020.0002] # MAHJONG TILE NINE OF CIRCLES
+1F022 ; [*13E6.0020.0002] # MAHJONG TILE PLUM
+1F023 ; [*13E7.0020.0002] # MAHJONG TILE ORCHID
+1F024 ; [*13E8.0020.0002] # MAHJONG TILE BAMBOO
+1F025 ; [*13E9.0020.0002] # MAHJONG TILE CHRYSANTHEMUM
+1F026 ; [*13EA.0020.0002] # MAHJONG TILE SPRING
+1F027 ; [*13EB.0020.0002] # MAHJONG TILE SUMMER
+1F028 ; [*13EC.0020.0002] # MAHJONG TILE AUTUMN
+1F029 ; [*13ED.0020.0002] # MAHJONG TILE WINTER
+1F02A ; [*13EE.0020.0002] # MAHJONG TILE JOKER
+1F02B ; [*13EF.0020.0002] # MAHJONG TILE BACK
+1F030 ; [*13F0.0020.0002] # DOMINO TILE HORIZONTAL BACK
+1F031 ; [*13F1.0020.0002] # DOMINO TILE HORIZONTAL-00-00
+1F032 ; [*13F2.0020.0002] # DOMINO TILE HORIZONTAL-00-01
+1F033 ; [*13F3.0020.0002] # DOMINO TILE HORIZONTAL-00-02
+1F034 ; [*13F4.0020.0002] # DOMINO TILE HORIZONTAL-00-03
+1F035 ; [*13F5.0020.0002] # DOMINO TILE HORIZONTAL-00-04
+1F036 ; [*13F6.0020.0002] # DOMINO TILE HORIZONTAL-00-05
+1F037 ; [*13F7.0020.0002] # DOMINO TILE HORIZONTAL-00-06
+1F038 ; [*13F8.0020.0002] # DOMINO TILE HORIZONTAL-01-00
+1F039 ; [*13F9.0020.0002] # DOMINO TILE HORIZONTAL-01-01
+1F03A ; [*13FA.0020.0002] # DOMINO TILE HORIZONTAL-01-02
+1F03B ; [*13FB.0020.0002] # DOMINO TILE HORIZONTAL-01-03
+1F03C ; [*13FC.0020.0002] # DOMINO TILE HORIZONTAL-01-04
+1F03D ; [*13FD.0020.0002] # DOMINO TILE HORIZONTAL-01-05
+1F03E ; [*13FE.0020.0002] # DOMINO TILE HORIZONTAL-01-06
+1F03F ; [*13FF.0020.0002] # DOMINO TILE HORIZONTAL-02-00
+1F040 ; [*1400.0020.0002] # DOMINO TILE HORIZONTAL-02-01
+1F041 ; [*1401.0020.0002] # DOMINO TILE HORIZONTAL-02-02
+1F042 ; [*1402.0020.0002] # DOMINO TILE HORIZONTAL-02-03
+1F043 ; [*1403.0020.0002] # DOMINO TILE HORIZONTAL-02-04
+1F044 ; [*1404.0020.0002] # DOMINO TILE HORIZONTAL-02-05
+1F045 ; [*1405.0020.0002] # DOMINO TILE HORIZONTAL-02-06
+1F046 ; [*1406.0020.0002] # DOMINO TILE HORIZONTAL-03-00
+1F047 ; [*1407.0020.0002] # DOMINO TILE HORIZONTAL-03-01
+1F048 ; [*1408.0020.0002] # DOMINO TILE HORIZONTAL-03-02
+1F049 ; [*1409.0020.0002] # DOMINO TILE HORIZONTAL-03-03
+1F04A ; [*140A.0020.0002] # DOMINO TILE HORIZONTAL-03-04
+1F04B ; [*140B.0020.0002] # DOMINO TILE HORIZONTAL-03-05
+1F04C ; [*140C.0020.0002] # DOMINO TILE HORIZONTAL-03-06
+1F04D ; [*140D.0020.0002] # DOMINO TILE HORIZONTAL-04-00
+1F04E ; [*140E.0020.0002] # DOMINO TILE HORIZONTAL-04-01
+1F04F ; [*140F.0020.0002] # DOMINO TILE HORIZONTAL-04-02
+1F050 ; [*1410.0020.0002] # DOMINO TILE HORIZONTAL-04-03
+1F051 ; [*1411.0020.0002] # DOMINO TILE HORIZONTAL-04-04
+1F052 ; [*1412.0020.0002] # DOMINO TILE HORIZONTAL-04-05
+1F053 ; [*1413.0020.0002] # DOMINO TILE HORIZONTAL-04-06
+1F054 ; [*1414.0020.0002] # DOMINO TILE HORIZONTAL-05-00
+1F055 ; [*1415.0020.0002] # DOMINO TILE HORIZONTAL-05-01
+1F056 ; [*1416.0020.0002] # DOMINO TILE HORIZONTAL-05-02
+1F057 ; [*1417.0020.0002] # DOMINO TILE HORIZONTAL-05-03
+1F058 ; [*1418.0020.0002] # DOMINO TILE HORIZONTAL-05-04
+1F059 ; [*1419.0020.0002] # DOMINO TILE HORIZONTAL-05-05
+1F05A ; [*141A.0020.0002] # DOMINO TILE HORIZONTAL-05-06
+1F05B ; [*141B.0020.0002] # DOMINO TILE HORIZONTAL-06-00
+1F05C ; [*141C.0020.0002] # DOMINO TILE HORIZONTAL-06-01
+1F05D ; [*141D.0020.0002] # DOMINO TILE HORIZONTAL-06-02
+1F05E ; [*141E.0020.0002] # DOMINO TILE HORIZONTAL-06-03
+1F05F ; [*141F.0020.0002] # DOMINO TILE HORIZONTAL-06-04
+1F060 ; [*1420.0020.0002] # DOMINO TILE HORIZONTAL-06-05
+1F061 ; [*1421.0020.0002] # DOMINO TILE HORIZONTAL-06-06
+1F062 ; [*1422.0020.0002] # DOMINO TILE VERTICAL BACK
+1F063 ; [*1423.0020.0002] # DOMINO TILE VERTICAL-00-00
+1F064 ; [*1424.0020.0002] # DOMINO TILE VERTICAL-00-01
+1F065 ; [*1425.0020.0002] # DOMINO TILE VERTICAL-00-02
+1F066 ; [*1426.0020.0002] # DOMINO TILE VERTICAL-00-03
+1F067 ; [*1427.0020.0002] # DOMINO TILE VERTICAL-00-04
+1F068 ; [*1428.0020.0002] # DOMINO TILE VERTICAL-00-05
+1F069 ; [*1429.0020.0002] # DOMINO TILE VERTICAL-00-06
+1F06A ; [*142A.0020.0002] # DOMINO TILE VERTICAL-01-00
+1F06B ; [*142B.0020.0002] # DOMINO TILE VERTICAL-01-01
+1F06C ; [*142C.0020.0002] # DOMINO TILE VERTICAL-01-02
+1F06D ; [*142D.0020.0002] # DOMINO TILE VERTICAL-01-03
+1F06E ; [*142E.0020.0002] # DOMINO TILE VERTICAL-01-04
+1F06F ; [*142F.0020.0002] # DOMINO TILE VERTICAL-01-05
+1F070 ; [*1430.0020.0002] # DOMINO TILE VERTICAL-01-06
+1F071 ; [*1431.0020.0002] # DOMINO TILE VERTICAL-02-00
+1F072 ; [*1432.0020.0002] # DOMINO TILE VERTICAL-02-01
+1F073 ; [*1433.0020.0002] # DOMINO TILE VERTICAL-02-02
+1F074 ; [*1434.0020.0002] # DOMINO TILE VERTICAL-02-03
+1F075 ; [*1435.0020.0002] # DOMINO TILE VERTICAL-02-04
+1F076 ; [*1436.0020.0002] # DOMINO TILE VERTICAL-02-05
+1F077 ; [*1437.0020.0002] # DOMINO TILE VERTICAL-02-06
+1F078 ; [*1438.0020.0002] # DOMINO TILE VERTICAL-03-00
+1F079 ; [*1439.0020.0002] # DOMINO TILE VERTICAL-03-01
+1F07A ; [*143A.0020.0002] # DOMINO TILE VERTICAL-03-02
+1F07B ; [*143B.0020.0002] # DOMINO TILE VERTICAL-03-03
+1F07C ; [*143C.0020.0002] # DOMINO TILE VERTICAL-03-04
+1F07D ; [*143D.0020.0002] # DOMINO TILE VERTICAL-03-05
+1F07E ; [*143E.0020.0002] # DOMINO TILE VERTICAL-03-06
+1F07F ; [*143F.0020.0002] # DOMINO TILE VERTICAL-04-00
+1F080 ; [*1440.0020.0002] # DOMINO TILE VERTICAL-04-01
+1F081 ; [*1441.0020.0002] # DOMINO TILE VERTICAL-04-02
+1F082 ; [*1442.0020.0002] # DOMINO TILE VERTICAL-04-03
+1F083 ; [*1443.0020.0002] # DOMINO TILE VERTICAL-04-04
+1F084 ; [*1444.0020.0002] # DOMINO TILE VERTICAL-04-05
+1F085 ; [*1445.0020.0002] # DOMINO TILE VERTICAL-04-06
+1F086 ; [*1446.0020.0002] # DOMINO TILE VERTICAL-05-00
+1F087 ; [*1447.0020.0002] # DOMINO TILE VERTICAL-05-01
+1F088 ; [*1448.0020.0002] # DOMINO TILE VERTICAL-05-02
+1F089 ; [*1449.0020.0002] # DOMINO TILE VERTICAL-05-03
+1F08A ; [*144A.0020.0002] # DOMINO TILE VERTICAL-05-04
+1F08B ; [*144B.0020.0002] # DOMINO TILE VERTICAL-05-05
+1F08C ; [*144C.0020.0002] # DOMINO TILE VERTICAL-05-06
+1F08D ; [*144D.0020.0002] # DOMINO TILE VERTICAL-06-00
+1F08E ; [*144E.0020.0002] # DOMINO TILE VERTICAL-06-01
+1F08F ; [*144F.0020.0002] # DOMINO TILE VERTICAL-06-02
+1F090 ; [*1450.0020.0002] # DOMINO TILE VERTICAL-06-03
+1F091 ; [*1451.0020.0002] # DOMINO TILE VERTICAL-06-04
+1F092 ; [*1452.0020.0002] # DOMINO TILE VERTICAL-06-05
+1F093 ; [*1453.0020.0002] # DOMINO TILE VERTICAL-06-06
+1F0A0 ; [*1454.0020.0002] # PLAYING CARD BACK
+1F0A1 ; [*1455.0020.0002] # PLAYING CARD ACE OF SPADES
+1F0A2 ; [*1456.0020.0002] # PLAYING CARD TWO OF SPADES
+1F0A3 ; [*1457.0020.0002] # PLAYING CARD THREE OF SPADES
+1F0A4 ; [*1458.0020.0002] # PLAYING CARD FOUR OF SPADES
+1F0A5 ; [*1459.0020.0002] # PLAYING CARD FIVE OF SPADES
+1F0A6 ; [*145A.0020.0002] # PLAYING CARD SIX OF SPADES
+1F0A7 ; [*145B.0020.0002] # PLAYING CARD SEVEN OF SPADES
+1F0A8 ; [*145C.0020.0002] # PLAYING CARD EIGHT OF SPADES
+1F0A9 ; [*145D.0020.0002] # PLAYING CARD NINE OF SPADES
+1F0AA ; [*145E.0020.0002] # PLAYING CARD TEN OF SPADES
+1F0AB ; [*145F.0020.0002] # PLAYING CARD JACK OF SPADES
+1F0AC ; [*1460.0020.0002] # PLAYING CARD KNIGHT OF SPADES
+1F0AD ; [*1461.0020.0002] # PLAYING CARD QUEEN OF SPADES
+1F0AE ; [*1462.0020.0002] # PLAYING CARD KING OF SPADES
+1F0B1 ; [*1463.0020.0002] # PLAYING CARD ACE OF HEARTS
+1F0B2 ; [*1464.0020.0002] # PLAYING CARD TWO OF HEARTS
+1F0B3 ; [*1465.0020.0002] # PLAYING CARD THREE OF HEARTS
+1F0B4 ; [*1466.0020.0002] # PLAYING CARD FOUR OF HEARTS
+1F0B5 ; [*1467.0020.0002] # PLAYING CARD FIVE OF HEARTS
+1F0B6 ; [*1468.0020.0002] # PLAYING CARD SIX OF HEARTS
+1F0B7 ; [*1469.0020.0002] # PLAYING CARD SEVEN OF HEARTS
+1F0B8 ; [*146A.0020.0002] # PLAYING CARD EIGHT OF HEARTS
+1F0B9 ; [*146B.0020.0002] # PLAYING CARD NINE OF HEARTS
+1F0BA ; [*146C.0020.0002] # PLAYING CARD TEN OF HEARTS
+1F0BB ; [*146D.0020.0002] # PLAYING CARD JACK OF HEARTS
+1F0BC ; [*146E.0020.0002] # PLAYING CARD KNIGHT OF HEARTS
+1F0BD ; [*146F.0020.0002] # PLAYING CARD QUEEN OF HEARTS
+1F0BE ; [*1470.0020.0002] # PLAYING CARD KING OF HEARTS
+1F0BF ; [*1471.0020.0002] # PLAYING CARD RED JOKER
+1F0C1 ; [*1472.0020.0002] # PLAYING CARD ACE OF DIAMONDS
+1F0C2 ; [*1473.0020.0002] # PLAYING CARD TWO OF DIAMONDS
+1F0C3 ; [*1474.0020.0002] # PLAYING CARD THREE OF DIAMONDS
+1F0C4 ; [*1475.0020.0002] # PLAYING CARD FOUR OF DIAMONDS
+1F0C5 ; [*1476.0020.0002] # PLAYING CARD FIVE OF DIAMONDS
+1F0C6 ; [*1477.0020.0002] # PLAYING CARD SIX OF DIAMONDS
+1F0C7 ; [*1478.0020.0002] # PLAYING CARD SEVEN OF DIAMONDS
+1F0C8 ; [*1479.0020.0002] # PLAYING CARD EIGHT OF DIAMONDS
+1F0C9 ; [*147A.0020.0002] # PLAYING CARD NINE OF DIAMONDS
+1F0CA ; [*147B.0020.0002] # PLAYING CARD TEN OF DIAMONDS
+1F0CB ; [*147C.0020.0002] # PLAYING CARD JACK OF DIAMONDS
+1F0CC ; [*147D.0020.0002] # PLAYING CARD KNIGHT OF DIAMONDS
+1F0CD ; [*147E.0020.0002] # PLAYING CARD QUEEN OF DIAMONDS
+1F0CE ; [*147F.0020.0002] # PLAYING CARD KING OF DIAMONDS
+1F0CF ; [*1480.0020.0002] # PLAYING CARD BLACK JOKER
+1F0D1 ; [*1481.0020.0002] # PLAYING CARD ACE OF CLUBS
+1F0D2 ; [*1482.0020.0002] # PLAYING CARD TWO OF CLUBS
+1F0D3 ; [*1483.0020.0002] # PLAYING CARD THREE OF CLUBS
+1F0D4 ; [*1484.0020.0002] # PLAYING CARD FOUR OF CLUBS
+1F0D5 ; [*1485.0020.0002] # PLAYING CARD FIVE OF CLUBS
+1F0D6 ; [*1486.0020.0002] # PLAYING CARD SIX OF CLUBS
+1F0D7 ; [*1487.0020.0002] # PLAYING CARD SEVEN OF CLUBS
+1F0D8 ; [*1488.0020.0002] # PLAYING CARD EIGHT OF CLUBS
+1F0D9 ; [*1489.0020.0002] # PLAYING CARD NINE OF CLUBS
+1F0DA ; [*148A.0020.0002] # PLAYING CARD TEN OF CLUBS
+1F0DB ; [*148B.0020.0002] # PLAYING CARD JACK OF CLUBS
+1F0DC ; [*148C.0020.0002] # PLAYING CARD KNIGHT OF CLUBS
+1F0DD ; [*148D.0020.0002] # PLAYING CARD QUEEN OF CLUBS
+1F0DE ; [*148E.0020.0002] # PLAYING CARD KING OF CLUBS
+1F0DF ; [*148F.0020.0002] # PLAYING CARD WHITE JOKER
+1F0E0 ; [*1490.0020.0002] # PLAYING CARD FOOL
+1F0E1 ; [*1491.0020.0002] # PLAYING CARD TRUMP-1
+1F0E2 ; [*1492.0020.0002] # PLAYING CARD TRUMP-2
+1F0E3 ; [*1493.0020.0002] # PLAYING CARD TRUMP-3
+1F0E4 ; [*1494.0020.0002] # PLAYING CARD TRUMP-4
+1F0E5 ; [*1495.0020.0002] # PLAYING CARD TRUMP-5
+1F0E6 ; [*1496.0020.0002] # PLAYING CARD TRUMP-6
+1F0E7 ; [*1497.0020.0002] # PLAYING CARD TRUMP-7
+1F0E8 ; [*1498.0020.0002] # PLAYING CARD TRUMP-8
+1F0E9 ; [*1499.0020.0002] # PLAYING CARD TRUMP-9
+1F0EA ; [*149A.0020.0002] # PLAYING CARD TRUMP-10
+1F0EB ; [*149B.0020.0002] # PLAYING CARD TRUMP-11
+1F0EC ; [*149C.0020.0002] # PLAYING CARD TRUMP-12
+1F0ED ; [*149D.0020.0002] # PLAYING CARD TRUMP-13
+1F0EE ; [*149E.0020.0002] # PLAYING CARD TRUMP-14
+1F0EF ; [*149F.0020.0002] # PLAYING CARD TRUMP-15
+1F0F0 ; [*14A0.0020.0002] # PLAYING CARD TRUMP-16
+1F0F1 ; [*14A1.0020.0002] # PLAYING CARD TRUMP-17
+1F0F2 ; [*14A2.0020.0002] # PLAYING CARD TRUMP-18
+1F0F3 ; [*14A3.0020.0002] # PLAYING CARD TRUMP-19
+1F0F4 ; [*14A4.0020.0002] # PLAYING CARD TRUMP-20
+1F0F5 ; [*14A5.0020.0002] # PLAYING CARD TRUMP-21
+1F10D ; [*1508.0020.0002] # CIRCLED ZERO WITH SLASH
+1F10E ; [*1509.0020.0002] # CIRCLED ANTICLOCKWISE ARROW
+1F10F ; [*150A.0020.0002] # CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH
+1F12F ; [*060A.0020.0002] # COPYLEFT SYMBOL
+1F16D ; [*150B.0020.0002] # CIRCLED CC
+1F16E ; [*150C.0020.0002] # CIRCLED C WITH OVERLAID BACKSLASH
+1F16F ; [*150D.0020.0002] # CIRCLED HUMAN FIGURE
+1F1AD ; [*060C.0020.0002] # MASK WORK SYMBOL
+1F1E6 ; [*0B59.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER A
+1F1E7 ; [*0B5A.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER B
+1F1E8 ; [*0B5B.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER C
+1F1E9 ; [*0B5C.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER D
+1F1EA ; [*0B5D.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER E
+1F1EB ; [*0B5E.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER F
+1F1EC ; [*0B5F.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER G
+1F1ED ; [*0B60.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER H
+1F1EE ; [*0B61.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER I
+1F1EF ; [*0B62.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER J
+1F1F0 ; [*0B63.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER K
+1F1F1 ; [*0B64.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER L
+1F1F2 ; [*0B65.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER M
+1F1F3 ; [*0B66.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER N
+1F1F4 ; [*0B67.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER O
+1F1F5 ; [*0B68.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER P
+1F1F6 ; [*0B69.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER Q
+1F1F7 ; [*0B6A.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER R
+1F1F8 ; [*0B6B.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER S
+1F1F9 ; [*0B6C.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER T
+1F1FA ; [*0B6D.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER U
+1F1FB ; [*0B6E.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER V
+1F1FC ; [*0B6F.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER W
+1F1FD ; [*0B70.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER X
+1F1FE ; [*0B71.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER Y
+1F1FF ; [*0B72.0020.0002] # REGIONAL INDICATOR SYMBOL LETTER Z
+1F260 ; [*150E.0020.0002] # ROUNDED SYMBOL FOR FU
+1F261 ; [*150F.0020.0002] # ROUNDED SYMBOL FOR LU
+1F262 ; [*1510.0020.0002] # ROUNDED SYMBOL FOR SHOU
+1F263 ; [*1511.0020.0002] # ROUNDED SYMBOL FOR XI
+1F264 ; [*1512.0020.0002] # ROUNDED SYMBOL FOR SHUANGXI
+1F265 ; [*1513.0020.0002] # ROUNDED SYMBOL FOR CAI
+1F300 ; [*1514.0020.0002] # CYCLONE
+1F301 ; [*1515.0020.0002] # FOGGY
+1F302 ; [*1516.0020.0002] # CLOSED UMBRELLA
+1F303 ; [*1517.0020.0002] # NIGHT WITH STARS
+1F304 ; [*1518.0020.0002] # SUNRISE OVER MOUNTAINS
+1F305 ; [*1519.0020.0002] # SUNRISE
+1F306 ; [*151A.0020.0002] # CITYSCAPE AT DUSK
+1F307 ; [*151B.0020.0002] # SUNSET OVER BUILDINGS
+1F308 ; [*151C.0020.0002] # RAINBOW
+1F309 ; [*151D.0020.0002] # BRIDGE AT NIGHT
+1F30A ; [*151E.0020.0002] # WATER WAVE
+1F30B ; [*151F.0020.0002] # VOLCANO
+1F30C ; [*1520.0020.0002] # MILKY WAY
+1F30D ; [*1521.0020.0002] # EARTH GLOBE EUROPE-AFRICA
+1F30E ; [*1522.0020.0002] # EARTH GLOBE AMERICAS
+1F30F ; [*1523.0020.0002] # EARTH GLOBE ASIA-AUSTRALIA
+1F310 ; [*1524.0020.0002] # GLOBE WITH MERIDIANS
+1F311 ; [*1525.0020.0002] # NEW MOON SYMBOL
+1F312 ; [*1526.0020.0002] # WAXING CRESCENT MOON SYMBOL
+1F313 ; [*1527.0020.0002] # FIRST QUARTER MOON SYMBOL
+1F314 ; [*1528.0020.0002] # WAXING GIBBOUS MOON SYMBOL
+1F315 ; [*1529.0020.0002] # FULL MOON SYMBOL
+1F316 ; [*152A.0020.0002] # WANING GIBBOUS MOON SYMBOL
+1F317 ; [*152B.0020.0002] # LAST QUARTER MOON SYMBOL
+1F318 ; [*152C.0020.0002] # WANING CRESCENT MOON SYMBOL
+1F319 ; [*152D.0020.0002] # CRESCENT MOON
+1F31A ; [*152E.0020.0002] # NEW MOON WITH FACE
+1F31B ; [*152F.0020.0002] # FIRST QUARTER MOON WITH FACE
+1F31C ; [*1530.0020.0002] # LAST QUARTER MOON WITH FACE
+1F31D ; [*1531.0020.0002] # FULL MOON WITH FACE
+1F31E ; [*1532.0020.0002] # SUN WITH FACE
+1F31F ; [*1533.0020.0002] # GLOWING STAR
+1F320 ; [*1534.0020.0002] # SHOOTING STAR
+1F321 ; [*1535.0020.0002] # THERMOMETER
+1F322 ; [*1536.0020.0002] # BLACK DROPLET
+1F323 ; [*1537.0020.0002] # WHITE SUN
+1F324 ; [*1538.0020.0002] # WHITE SUN WITH SMALL CLOUD
+1F325 ; [*1539.0020.0002] # WHITE SUN BEHIND CLOUD
+1F326 ; [*153A.0020.0002] # WHITE SUN BEHIND CLOUD WITH RAIN
+1F327 ; [*153B.0020.0002] # CLOUD WITH RAIN
+1F328 ; [*153C.0020.0002] # CLOUD WITH SNOW
+1F329 ; [*153D.0020.0002] # CLOUD WITH LIGHTNING
+1F32A ; [*153E.0020.0002] # CLOUD WITH TORNADO
+1F32B ; [*153F.0020.0002] # FOG
+1F32C ; [*1540.0020.0002] # WIND BLOWING FACE
+1F32D ; [*1541.0020.0002] # HOT DOG
+1F32E ; [*1542.0020.0002] # TACO
+1F32F ; [*1543.0020.0002] # BURRITO
+1F330 ; [*1544.0020.0002] # CHESTNUT
+1F331 ; [*1545.0020.0002] # SEEDLING
+1F332 ; [*1546.0020.0002] # EVERGREEN TREE
+1F333 ; [*1547.0020.0002] # DECIDUOUS TREE
+1F334 ; [*1548.0020.0002] # PALM TREE
+1F335 ; [*1549.0020.0002] # CACTUS
+1F336 ; [*154A.0020.0002] # HOT PEPPER
+1F337 ; [*154B.0020.0002] # TULIP
+1F338 ; [*154C.0020.0002] # CHERRY BLOSSOM
+1F339 ; [*154D.0020.0002] # ROSE
+1F33A ; [*154E.0020.0002] # HIBISCUS
+1F33B ; [*154F.0020.0002] # SUNFLOWER
+1F33C ; [*1550.0020.0002] # BLOSSOM
+1F33D ; [*1551.0020.0002] # EAR OF MAIZE
+1F33E ; [*1552.0020.0002] # EAR OF RICE
+1F33F ; [*1553.0020.0002] # HERB
+1F340 ; [*1554.0020.0002] # FOUR LEAF CLOVER
+1F341 ; [*1555.0020.0002] # MAPLE LEAF
+1F342 ; [*1556.0020.0002] # FALLEN LEAF
+1F343 ; [*1557.0020.0002] # LEAF FLUTTERING IN WIND
+1F344 ; [*1558.0020.0002] # MUSHROOM
+1F345 ; [*1559.0020.0002] # TOMATO
+1F346 ; [*155A.0020.0002] # AUBERGINE
+1F347 ; [*155B.0020.0002] # GRAPES
+1F348 ; [*155C.0020.0002] # MELON
+1F349 ; [*155D.0020.0002] # WATERMELON
+1F34A ; [*155E.0020.0002] # TANGERINE
+1F34B ; [*155F.0020.0002] # LEMON
+1F34C ; [*1560.0020.0002] # BANANA
+1F34D ; [*1561.0020.0002] # PINEAPPLE
+1F34E ; [*1562.0020.0002] # RED APPLE
+1F34F ; [*1563.0020.0002] # GREEN APPLE
+1F350 ; [*1564.0020.0002] # PEAR
+1F351 ; [*1565.0020.0002] # PEACH
+1F352 ; [*1566.0020.0002] # CHERRIES
+1F353 ; [*1567.0020.0002] # STRAWBERRY
+1F354 ; [*1568.0020.0002] # HAMBURGER
+1F355 ; [*1569.0020.0002] # SLICE OF PIZZA
+1F356 ; [*156A.0020.0002] # MEAT ON BONE
+1F357 ; [*156B.0020.0002] # POULTRY LEG
+1F358 ; [*156C.0020.0002] # RICE CRACKER
+1F359 ; [*156D.0020.0002] # RICE BALL
+1F35A ; [*156E.0020.0002] # COOKED RICE
+1F35B ; [*156F.0020.0002] # CURRY AND RICE
+1F35C ; [*1570.0020.0002] # STEAMING BOWL
+1F35D ; [*1571.0020.0002] # SPAGHETTI
+1F35E ; [*1572.0020.0002] # BREAD
+1F35F ; [*1573.0020.0002] # FRENCH FRIES
+1F360 ; [*1574.0020.0002] # ROASTED SWEET POTATO
+1F361 ; [*1575.0020.0002] # DANGO
+1F362 ; [*1576.0020.0002] # ODEN
+1F363 ; [*1577.0020.0002] # SUSHI
+1F364 ; [*1578.0020.0002] # FRIED SHRIMP
+1F365 ; [*1579.0020.0002] # FISH CAKE WITH SWIRL DESIGN
+1F366 ; [*157A.0020.0002] # SOFT ICE CREAM
+1F367 ; [*157B.0020.0002] # SHAVED ICE
+1F368 ; [*157C.0020.0002] # ICE CREAM
+1F369 ; [*157D.0020.0002] # DOUGHNUT
+1F36A ; [*157E.0020.0002] # COOKIE
+1F36B ; [*157F.0020.0002] # CHOCOLATE BAR
+1F36C ; [*1580.0020.0002] # CANDY
+1F36D ; [*1581.0020.0002] # LOLLIPOP
+1F36E ; [*1582.0020.0002] # CUSTARD
+1F36F ; [*1583.0020.0002] # HONEY POT
+1F370 ; [*1584.0020.0002] # SHORTCAKE
+1F371 ; [*1585.0020.0002] # BENTO BOX
+1F372 ; [*1586.0020.0002] # POT OF FOOD
+1F373 ; [*1587.0020.0002] # COOKING
+1F374 ; [*1588.0020.0002] # FORK AND KNIFE
+1F375 ; [*1589.0020.0002] # TEACUP WITHOUT HANDLE
+1F376 ; [*158A.0020.0002] # SAKE BOTTLE AND CUP
+1F377 ; [*158B.0020.0002] # WINE GLASS
+1F378 ; [*158C.0020.0002] # COCKTAIL GLASS
+1F379 ; [*158D.0020.0002] # TROPICAL DRINK
+1F37A ; [*158E.0020.0002] # BEER MUG
+1F37B ; [*158F.0020.0002] # CLINKING BEER MUGS
+1F37C ; [*1590.0020.0002] # BABY BOTTLE
+1F37D ; [*1591.0020.0002] # FORK AND KNIFE WITH PLATE
+1F37E ; [*1592.0020.0002] # BOTTLE WITH POPPING CORK
+1F37F ; [*1593.0020.0002] # POPCORN
+1F380 ; [*1594.0020.0002] # RIBBON
+1F381 ; [*1595.0020.0002] # WRAPPED PRESENT
+1F382 ; [*1596.0020.0002] # BIRTHDAY CAKE
+1F383 ; [*1597.0020.0002] # JACK-O-LANTERN
+1F384 ; [*1598.0020.0002] # CHRISTMAS TREE
+1F385 ; [*1599.0020.0002] # FATHER CHRISTMAS
+1F386 ; [*159A.0020.0002] # FIREWORKS
+1F387 ; [*159B.0020.0002] # FIREWORK SPARKLER
+1F388 ; [*159C.0020.0002] # BALLOON
+1F389 ; [*159D.0020.0002] # PARTY POPPER
+1F38A ; [*159E.0020.0002] # CONFETTI BALL
+1F38B ; [*159F.0020.0002] # TANABATA TREE
+1F38C ; [*15A0.0020.0002] # CROSSED FLAGS
+1F38D ; [*15A1.0020.0002] # PINE DECORATION
+1F38E ; [*15A2.0020.0002] # JAPANESE DOLLS
+1F38F ; [*15A3.0020.0002] # CARP STREAMER
+1F390 ; [*15A4.0020.0002] # WIND CHIME
+1F391 ; [*15A5.0020.0002] # MOON VIEWING CEREMONY
+1F392 ; [*15A6.0020.0002] # SCHOOL SATCHEL
+1F393 ; [*15A7.0020.0002] # GRADUATION CAP
+1F394 ; [*15A8.0020.0002] # HEART WITH TIP ON THE LEFT
+1F395 ; [*15A9.0020.0002] # BOUQUET OF FLOWERS
+1F396 ; [*15AA.0020.0002] # MILITARY MEDAL
+1F397 ; [*15AB.0020.0002] # REMINDER RIBBON
+1F398 ; [*15AC.0020.0002] # MUSICAL KEYBOARD WITH JACKS
+1F399 ; [*15AD.0020.0002] # STUDIO MICROPHONE
+1F39A ; [*15AE.0020.0002] # LEVEL SLIDER
+1F39B ; [*15AF.0020.0002] # CONTROL KNOBS
+1F39C ; [*15B0.0020.0002] # BEAMED ASCENDING MUSICAL NOTES
+1F39D ; [*15B1.0020.0002] # BEAMED DESCENDING MUSICAL NOTES
+1F39E ; [*15B2.0020.0002] # FILM FRAMES
+1F39F ; [*15B3.0020.0002] # ADMISSION TICKETS
+1F3A0 ; [*15B4.0020.0002] # CAROUSEL HORSE
+1F3A1 ; [*15B5.0020.0002] # FERRIS WHEEL
+1F3A2 ; [*15B6.0020.0002] # ROLLER COASTER
+1F3A3 ; [*15B7.0020.0002] # FISHING POLE AND FISH
+1F3A4 ; [*15B8.0020.0002] # MICROPHONE
+1F3A5 ; [*15B9.0020.0002] # MOVIE CAMERA
+1F3A6 ; [*15BA.0020.0002] # CINEMA
+1F3A7 ; [*15BB.0020.0002] # HEADPHONE
+1F3A8 ; [*15BC.0020.0002] # ARTIST PALETTE
+1F3A9 ; [*15BD.0020.0002] # TOP HAT
+1F3AA ; [*15BE.0020.0002] # CIRCUS TENT
+1F3AB ; [*15BF.0020.0002] # TICKET
+1F3AC ; [*15C0.0020.0002] # CLAPPER BOARD
+1F3AD ; [*15C1.0020.0002] # PERFORMING ARTS
+1F3AE ; [*15C2.0020.0002] # VIDEO GAME
+1F3AF ; [*15C3.0020.0002] # DIRECT HIT
+1F3B0 ; [*15C4.0020.0002] # SLOT MACHINE
+1F3B1 ; [*15C5.0020.0002] # BILLIARDS
+1F3B2 ; [*15C6.0020.0002] # GAME DIE
+1F3B3 ; [*15C7.0020.0002] # BOWLING
+1F3B4 ; [*15C8.0020.0002] # FLOWER PLAYING CARDS
+1F3B5 ; [*15C9.0020.0002] # MUSICAL NOTE
+1F3B6 ; [*15CA.0020.0002] # MULTIPLE MUSICAL NOTES
+1F3B7 ; [*15CB.0020.0002] # SAXOPHONE
+1F3B8 ; [*15CC.0020.0002] # GUITAR
+1F3B9 ; [*15CD.0020.0002] # MUSICAL KEYBOARD
+1F3BA ; [*15CE.0020.0002] # TRUMPET
+1F3BB ; [*15CF.0020.0002] # VIOLIN
+1F3BC ; [*15D0.0020.0002] # MUSICAL SCORE
+1F3BD ; [*15D1.0020.0002] # RUNNING SHIRT WITH SASH
+1F3BE ; [*15D2.0020.0002] # TENNIS RACQUET AND BALL
+1F3BF ; [*15D3.0020.0002] # SKI AND SKI BOOT
+1F3C0 ; [*15D4.0020.0002] # BASKETBALL AND HOOP
+1F3C1 ; [*15D5.0020.0002] # CHEQUERED FLAG
+1F3C2 ; [*15D6.0020.0002] # SNOWBOARDER
+1F3C3 ; [*15D7.0020.0002] # RUNNER
+1F3C4 ; [*15D8.0020.0002] # SURFER
+1F3C5 ; [*15D9.0020.0002] # SPORTS MEDAL
+1F3C6 ; [*15DA.0020.0002] # TROPHY
+1F3C7 ; [*15DB.0020.0002] # HORSE RACING
+1F3C8 ; [*15DC.0020.0002] # AMERICAN FOOTBALL
+1F3C9 ; [*15DD.0020.0002] # RUGBY FOOTBALL
+1F3CA ; [*15DE.0020.0002] # SWIMMER
+1F3CB ; [*15DF.0020.0002] # WEIGHT LIFTER
+1F3CC ; [*15E0.0020.0002] # GOLFER
+1F3CD ; [*15E1.0020.0002] # RACING MOTORCYCLE
+1F3CE ; [*15E2.0020.0002] # RACING CAR
+1F3CF ; [*15E3.0020.0002] # CRICKET BAT AND BALL
+1F3D0 ; [*15E4.0020.0002] # VOLLEYBALL
+1F3D1 ; [*15E5.0020.0002] # FIELD HOCKEY STICK AND BALL
+1F3D2 ; [*15E6.0020.0002] # ICE HOCKEY STICK AND PUCK
+1F3D3 ; [*15E7.0020.0002] # TABLE TENNIS PADDLE AND BALL
+1F3D4 ; [*15E8.0020.0002] # SNOW CAPPED MOUNTAIN
+1F3D5 ; [*15E9.0020.0002] # CAMPING
+1F3D6 ; [*15EA.0020.0002] # BEACH WITH UMBRELLA
+1F3D7 ; [*15EB.0020.0002] # BUILDING CONSTRUCTION
+1F3D8 ; [*15EC.0020.0002] # HOUSE BUILDINGS
+1F3D9 ; [*15ED.0020.0002] # CITYSCAPE
+1F3DA ; [*15EE.0020.0002] # DERELICT HOUSE BUILDING
+1F3DB ; [*15EF.0020.0002] # CLASSICAL BUILDING
+1F3DC ; [*15F0.0020.0002] # DESERT
+1F3DD ; [*15F1.0020.0002] # DESERT ISLAND
+1F3DE ; [*15F2.0020.0002] # NATIONAL PARK
+1F3DF ; [*15F3.0020.0002] # STADIUM
+1F3E0 ; [*15F4.0020.0002] # HOUSE BUILDING
+1F3E1 ; [*15F5.0020.0002] # HOUSE WITH GARDEN
+1F3E2 ; [*15F6.0020.0002] # OFFICE BUILDING
+1F3E3 ; [*15F7.0020.0002] # JAPANESE POST OFFICE
+1F3E4 ; [*15F8.0020.0002] # EUROPEAN POST OFFICE
+1F3E5 ; [*15F9.0020.0002] # HOSPITAL
+1F3E6 ; [*15FA.0020.0002] # BANK
+1F3E7 ; [*15FB.0020.0002] # AUTOMATED TELLER MACHINE
+1F3E8 ; [*15FC.0020.0002] # HOTEL
+1F3E9 ; [*15FD.0020.0002] # LOVE HOTEL
+1F3EA ; [*15FE.0020.0002] # CONVENIENCE STORE
+1F3EB ; [*15FF.0020.0002] # SCHOOL
+1F3EC ; [*1600.0020.0002] # DEPARTMENT STORE
+1F3ED ; [*1601.0020.0002] # FACTORY
+1F3EE ; [*1602.0020.0002] # IZAKAYA LANTERN
+1F3EF ; [*1603.0020.0002] # JAPANESE CASTLE
+1F3F0 ; [*1604.0020.0002] # EUROPEAN CASTLE
+1F3F1 ; [*1605.0020.0002] # WHITE PENNANT
+1F3F2 ; [*1606.0020.0002] # BLACK PENNANT
+1F3F3 ; [*1607.0020.0002] # WAVING WHITE FLAG
+1F3F4 ; [*1608.0020.0002] # WAVING BLACK FLAG
+1F3F5 ; [*1609.0020.0002] # ROSETTE
+1F3F6 ; [*160A.0020.0002] # BLACK ROSETTE
+1F3F7 ; [*160B.0020.0002] # LABEL
+1F3F8 ; [*160C.0020.0002] # BADMINTON RACQUET AND SHUTTLECOCK
+1F3F9 ; [*160D.0020.0002] # BOW AND ARROW
+1F3FA ; [*160E.0020.0002] # AMPHORA
+1F3FB ; [*160F.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-1-2
+1F3FC ; [*1610.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-3
+1F3FD ; [*1611.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-4
+1F3FE ; [*1612.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-5
+1F3FF ; [*1613.0020.0002] # EMOJI MODIFIER FITZPATRICK TYPE-6
+1F400 ; [*1614.0020.0002] # RAT
+1F401 ; [*1615.0020.0002] # MOUSE
+1F402 ; [*1616.0020.0002] # OX
+1F403 ; [*1617.0020.0002] # WATER BUFFALO
+1F404 ; [*1618.0020.0002] # COW
+1F405 ; [*1619.0020.0002] # TIGER
+1F406 ; [*161A.0020.0002] # LEOPARD
+1F407 ; [*161B.0020.0002] # RABBIT
+1F408 ; [*161C.0020.0002] # CAT
+1F409 ; [*161D.0020.0002] # DRAGON
+1F40A ; [*161E.0020.0002] # CROCODILE
+1F40B ; [*161F.0020.0002] # WHALE
+1F40C ; [*1620.0020.0002] # SNAIL
+1F40D ; [*1621.0020.0002] # SNAKE
+1F40E ; [*1622.0020.0002] # HORSE
+1F40F ; [*1623.0020.0002] # RAM
+1F410 ; [*1624.0020.0002] # GOAT
+1F411 ; [*1625.0020.0002] # SHEEP
+1F412 ; [*1626.0020.0002] # MONKEY
+1F413 ; [*1627.0020.0002] # ROOSTER
+1F414 ; [*1628.0020.0002] # CHICKEN
+1F415 ; [*1629.0020.0002] # DOG
+1F416 ; [*162A.0020.0002] # PIG
+1F417 ; [*162B.0020.0002] # BOAR
+1F418 ; [*162C.0020.0002] # ELEPHANT
+1F419 ; [*162D.0020.0002] # OCTOPUS
+1F41A ; [*162E.0020.0002] # SPIRAL SHELL
+1F41B ; [*162F.0020.0002] # BUG
+1F41C ; [*1630.0020.0002] # ANT
+1F41D ; [*1631.0020.0002] # HONEYBEE
+1F41E ; [*1632.0020.0002] # LADY BEETLE
+1F41F ; [*1633.0020.0002] # FISH
+1F420 ; [*1634.0020.0002] # TROPICAL FISH
+1F421 ; [*1635.0020.0002] # BLOWFISH
+1F422 ; [*1636.0020.0002] # TURTLE
+1F423 ; [*1637.0020.0002] # HATCHING CHICK
+1F424 ; [*1638.0020.0002] # BABY CHICK
+1F425 ; [*1639.0020.0002] # FRONT-FACING BABY CHICK
+1F426 ; [*163A.0020.0002] # BIRD
+1F427 ; [*163B.0020.0002] # PENGUIN
+1F428 ; [*163C.0020.0002] # KOALA
+1F429 ; [*163D.0020.0002] # POODLE
+1F42A ; [*163E.0020.0002] # DROMEDARY CAMEL
+1F42B ; [*163F.0020.0002] # BACTRIAN CAMEL
+1F42C ; [*1640.0020.0002] # DOLPHIN
+1F42D ; [*1641.0020.0002] # MOUSE FACE
+1F42E ; [*1642.0020.0002] # COW FACE
+1F42F ; [*1643.0020.0002] # TIGER FACE
+1F430 ; [*1644.0020.0002] # RABBIT FACE
+1F431 ; [*1645.0020.0002] # CAT FACE
+1F432 ; [*1646.0020.0002] # DRAGON FACE
+1F433 ; [*1647.0020.0002] # SPOUTING WHALE
+1F434 ; [*1648.0020.0002] # HORSE FACE
+1F435 ; [*1649.0020.0002] # MONKEY FACE
+1F436 ; [*164A.0020.0002] # DOG FACE
+1F437 ; [*164B.0020.0002] # PIG FACE
+1F438 ; [*164C.0020.0002] # FROG FACE
+1F439 ; [*164D.0020.0002] # HAMSTER FACE
+1F43A ; [*164E.0020.0002] # WOLF FACE
+1F43B ; [*164F.0020.0002] # BEAR FACE
+1F43C ; [*1650.0020.0002] # PANDA FACE
+1F43D ; [*1651.0020.0002] # PIG NOSE
+1F43E ; [*1652.0020.0002] # PAW PRINTS
+1F43F ; [*1653.0020.0002] # CHIPMUNK
+1F440 ; [*1654.0020.0002] # EYES
+1F441 ; [*1655.0020.0002] # EYE
+1F442 ; [*1656.0020.0002] # EAR
+1F443 ; [*1657.0020.0002] # NOSE
+1F444 ; [*1658.0020.0002] # MOUTH
+1F445 ; [*1659.0020.0002] # TONGUE
+1F446 ; [*165A.0020.0002] # WHITE UP POINTING BACKHAND INDEX
+1F447 ; [*165B.0020.0002] # WHITE DOWN POINTING BACKHAND INDEX
+1F448 ; [*165C.0020.0002] # WHITE LEFT POINTING BACKHAND INDEX
+1F449 ; [*165D.0020.0002] # WHITE RIGHT POINTING BACKHAND INDEX
+1F44A ; [*165E.0020.0002] # FISTED HAND SIGN
+1F44B ; [*165F.0020.0002] # WAVING HAND SIGN
+1F44C ; [*1660.0020.0002] # OK HAND SIGN
+1F44D ; [*1661.0020.0002] # THUMBS UP SIGN
+1F44E ; [*1662.0020.0002] # THUMBS DOWN SIGN
+1F44F ; [*1663.0020.0002] # CLAPPING HANDS SIGN
+1F450 ; [*1664.0020.0002] # OPEN HANDS SIGN
+1F451 ; [*1665.0020.0002] # CROWN
+1F452 ; [*1666.0020.0002] # WOMANS HAT
+1F453 ; [*1667.0020.0002] # EYEGLASSES
+1F454 ; [*1668.0020.0002] # NECKTIE
+1F455 ; [*1669.0020.0002] # T-SHIRT
+1F456 ; [*166A.0020.0002] # JEANS
+1F457 ; [*166B.0020.0002] # DRESS
+1F458 ; [*166C.0020.0002] # KIMONO
+1F459 ; [*166D.0020.0002] # BIKINI
+1F45A ; [*166E.0020.0002] # WOMANS CLOTHES
+1F45B ; [*166F.0020.0002] # PURSE
+1F45C ; [*1670.0020.0002] # HANDBAG
+1F45D ; [*1671.0020.0002] # POUCH
+1F45E ; [*1672.0020.0002] # MANS SHOE
+1F45F ; [*1673.0020.0002] # ATHLETIC SHOE
+1F460 ; [*1674.0020.0002] # HIGH-HEELED SHOE
+1F461 ; [*1675.0020.0002] # WOMANS SANDAL
+1F462 ; [*1676.0020.0002] # WOMANS BOOTS
+1F463 ; [*1677.0020.0002] # FOOTPRINTS
+1F464 ; [*1678.0020.0002] # BUST IN SILHOUETTE
+1F465 ; [*1679.0020.0002] # BUSTS IN SILHOUETTE
+1F466 ; [*167A.0020.0002] # BOY
+1F467 ; [*167B.0020.0002] # GIRL
+1F468 ; [*167C.0020.0002] # MAN
+1F469 ; [*167D.0020.0002] # WOMAN
+1F46A ; [*167E.0020.0002] # FAMILY
+1F46B ; [*167F.0020.0002] # MAN AND WOMAN HOLDING HANDS
+1F46C ; [*1680.0020.0002] # TWO MEN HOLDING HANDS
+1F46D ; [*1681.0020.0002] # TWO WOMEN HOLDING HANDS
+1F46E ; [*1682.0020.0002] # POLICE OFFICER
+1F46F ; [*1683.0020.0002] # WOMAN WITH BUNNY EARS
+1F470 ; [*1684.0020.0002] # BRIDE WITH VEIL
+1F471 ; [*1685.0020.0002] # PERSON WITH BLOND HAIR
+1F472 ; [*1686.0020.0002] # MAN WITH GUA PI MAO
+1F473 ; [*1687.0020.0002] # MAN WITH TURBAN
+1F474 ; [*1688.0020.0002] # OLDER MAN
+1F475 ; [*1689.0020.0002] # OLDER WOMAN
+1F476 ; [*168A.0020.0002] # BABY
+1F477 ; [*168B.0020.0002] # CONSTRUCTION WORKER
+1F478 ; [*168C.0020.0002] # PRINCESS
+1F479 ; [*168D.0020.0002] # JAPANESE OGRE
+1F47A ; [*168E.0020.0002] # JAPANESE GOBLIN
+1F47B ; [*168F.0020.0002] # GHOST
+1F47C ; [*1690.0020.0002] # BABY ANGEL
+1F47D ; [*1691.0020.0002] # EXTRATERRESTRIAL ALIEN
+1F47E ; [*1692.0020.0002] # ALIEN MONSTER
+1F47F ; [*1693.0020.0002] # IMP
+1F480 ; [*1694.0020.0002] # SKULL
+1F481 ; [*1695.0020.0002] # INFORMATION DESK PERSON
+1F482 ; [*1696.0020.0002] # GUARDSMAN
+1F483 ; [*1697.0020.0002] # DANCER
+1F484 ; [*1698.0020.0002] # LIPSTICK
+1F485 ; [*1699.0020.0002] # NAIL POLISH
+1F486 ; [*169A.0020.0002] # FACE MASSAGE
+1F487 ; [*169B.0020.0002] # HAIRCUT
+1F488 ; [*169C.0020.0002] # BARBER POLE
+1F489 ; [*169D.0020.0002] # SYRINGE
+1F48A ; [*169E.0020.0002] # PILL
+1F48B ; [*169F.0020.0002] # KISS MARK
+1F48C ; [*16A0.0020.0002] # LOVE LETTER
+1F48D ; [*16A1.0020.0002] # RING
+1F48E ; [*16A2.0020.0002] # GEM STONE
+1F48F ; [*16A3.0020.0002] # KISS
+1F490 ; [*16A4.0020.0002] # BOUQUET
+1F491 ; [*16A5.0020.0002] # COUPLE WITH HEART
+1F492 ; [*16A6.0020.0002] # WEDDING
+1F493 ; [*16A7.0020.0002] # BEATING HEART
+1F494 ; [*16A8.0020.0002] # BROKEN HEART
+1F495 ; [*16A9.0020.0002] # TWO HEARTS
+1F496 ; [*16AA.0020.0002] # SPARKLING HEART
+1F497 ; [*16AB.0020.0002] # GROWING HEART
+1F498 ; [*16AC.0020.0002] # HEART WITH ARROW
+1F499 ; [*16AD.0020.0002] # BLUE HEART
+1F49A ; [*16AE.0020.0002] # GREEN HEART
+1F49B ; [*16AF.0020.0002] # YELLOW HEART
+1F49C ; [*16B0.0020.0002] # PURPLE HEART
+1F49D ; [*16B1.0020.0002] # HEART WITH RIBBON
+1F49E ; [*16B2.0020.0002] # REVOLVING HEARTS
+1F49F ; [*16B3.0020.0002] # HEART DECORATION
+1F4A0 ; [*16B4.0020.0002] # DIAMOND SHAPE WITH A DOT INSIDE
+1F4A1 ; [*16B5.0020.0002] # ELECTRIC LIGHT BULB
+1F4A2 ; [*16B6.0020.0002] # ANGER SYMBOL
+1F4A3 ; [*16B7.0020.0002] # BOMB
+1F4A4 ; [*16B8.0020.0002] # SLEEPING SYMBOL
+1F4A5 ; [*16B9.0020.0002] # COLLISION SYMBOL
+1F4A6 ; [*16BA.0020.0002] # SPLASHING SWEAT SYMBOL
+1F4A7 ; [*16BB.0020.0002] # DROPLET
+1F4A8 ; [*16BC.0020.0002] # DASH SYMBOL
+1F4A9 ; [*16BD.0020.0002] # PILE OF POO
+1F4AA ; [*16BE.0020.0002] # FLEXED BICEPS
+1F4AB ; [*16BF.0020.0002] # DIZZY SYMBOL
+1F4AC ; [*16C0.0020.0002] # SPEECH BALLOON
+1F4AD ; [*16C1.0020.0002] # THOUGHT BALLOON
+1F4AE ; [*16C2.0020.0002] # WHITE FLOWER
+1F4AF ; [*16C3.0020.0002] # HUNDRED POINTS SYMBOL
+1F4B0 ; [*16C4.0020.0002] # MONEY BAG
+1F4B1 ; [*16C5.0020.0002] # CURRENCY EXCHANGE
+1F4B2 ; [*16C6.0020.0002] # HEAVY DOLLAR SIGN
+1F4B3 ; [*16C7.0020.0002] # CREDIT CARD
+1F4B4 ; [*16C8.0020.0002] # BANKNOTE WITH YEN SIGN
+1F4B5 ; [*16C9.0020.0002] # BANKNOTE WITH DOLLAR SIGN
+1F4B6 ; [*16CA.0020.0002] # BANKNOTE WITH EURO SIGN
+1F4B7 ; [*16CB.0020.0002] # BANKNOTE WITH POUND SIGN
+1F4B8 ; [*16CC.0020.0002] # MONEY WITH WINGS
+1F4B9 ; [*16CD.0020.0002] # CHART WITH UPWARDS TREND AND YEN SIGN
+1F4BA ; [*16CE.0020.0002] # SEAT
+1F4BB ; [*16CF.0020.0002] # PERSONAL COMPUTER
+1F4BC ; [*16D0.0020.0002] # BRIEFCASE
+1F4BD ; [*16D1.0020.0002] # MINIDISC
+1F4BE ; [*16D2.0020.0002] # FLOPPY DISK
+1F4BF ; [*16D3.0020.0002] # OPTICAL DISC
+1F4C0 ; [*16D4.0020.0002] # DVD
+1F4C1 ; [*16D5.0020.0002] # FILE FOLDER
+1F4C2 ; [*16D6.0020.0002] # OPEN FILE FOLDER
+1F4C3 ; [*16D7.0020.0002] # PAGE WITH CURL
+1F4C4 ; [*16D8.0020.0002] # PAGE FACING UP
+1F4C5 ; [*16D9.0020.0002] # CALENDAR
+1F4C6 ; [*16DA.0020.0002] # TEAR-OFF CALENDAR
+1F4C7 ; [*16DB.0020.0002] # CARD INDEX
+1F4C8 ; [*16DC.0020.0002] # CHART WITH UPWARDS TREND
+1F4C9 ; [*16DD.0020.0002] # CHART WITH DOWNWARDS TREND
+1F4CA ; [*16DE.0020.0002] # BAR CHART
+1F4CB ; [*16DF.0020.0002] # CLIPBOARD
+1F4CC ; [*16E0.0020.0002] # PUSHPIN
+1F4CD ; [*16E1.0020.0002] # ROUND PUSHPIN
+1F4CE ; [*16E2.0020.0002] # PAPERCLIP
+1F4CF ; [*16E3.0020.0002] # STRAIGHT RULER
+1F4D0 ; [*16E4.0020.0002] # TRIANGULAR RULER
+1F4D1 ; [*16E5.0020.0002] # BOOKMARK TABS
+1F4D2 ; [*16E6.0020.0002] # LEDGER
+1F4D3 ; [*16E7.0020.0002] # NOTEBOOK
+1F4D4 ; [*16E8.0020.0002] # NOTEBOOK WITH DECORATIVE COVER
+1F4D5 ; [*16E9.0020.0002] # CLOSED BOOK
+1F4D6 ; [*16EA.0020.0002] # OPEN BOOK
+1F4D7 ; [*16EB.0020.0002] # GREEN BOOK
+1F4D8 ; [*16EC.0020.0002] # BLUE BOOK
+1F4D9 ; [*16ED.0020.0002] # ORANGE BOOK
+1F4DA ; [*16EE.0020.0002] # BOOKS
+1F4DB ; [*16EF.0020.0002] # NAME BADGE
+1F4DC ; [*16F0.0020.0002] # SCROLL
+1F4DD ; [*16F1.0020.0002] # MEMO
+1F4DE ; [*16F2.0020.0002] # TELEPHONE RECEIVER
+1F4DF ; [*16F3.0020.0002] # PAGER
+1F4E0 ; [*16F4.0020.0002] # FAX MACHINE
+1F4E1 ; [*16F5.0020.0002] # SATELLITE ANTENNA
+1F4E2 ; [*16F6.0020.0002] # PUBLIC ADDRESS LOUDSPEAKER
+1F4E3 ; [*16F7.0020.0002] # CHEERING MEGAPHONE
+1F4E4 ; [*16F8.0020.0002] # OUTBOX TRAY
+1F4E5 ; [*16F9.0020.0002] # INBOX TRAY
+1F4E6 ; [*16FA.0020.0002] # PACKAGE
+1F4E7 ; [*16FB.0020.0002] # E-MAIL SYMBOL
+1F4E8 ; [*16FC.0020.0002] # INCOMING ENVELOPE
+1F4E9 ; [*16FD.0020.0002] # ENVELOPE WITH DOWNWARDS ARROW ABOVE
+1F4EA ; [*16FE.0020.0002] # CLOSED MAILBOX WITH LOWERED FLAG
+1F4EB ; [*16FF.0020.0002] # CLOSED MAILBOX WITH RAISED FLAG
+1F4EC ; [*1700.0020.0002] # OPEN MAILBOX WITH RAISED FLAG
+1F4ED ; [*1701.0020.0002] # OPEN MAILBOX WITH LOWERED FLAG
+1F4EE ; [*1702.0020.0002] # POSTBOX
+1F4EF ; [*1703.0020.0002] # POSTAL HORN
+1F4F0 ; [*1704.0020.0002] # NEWSPAPER
+1F4F1 ; [*1705.0020.0002] # MOBILE PHONE
+1F4F2 ; [*1706.0020.0002] # MOBILE PHONE WITH RIGHTWARDS ARROW AT LEFT
+1F4F3 ; [*1707.0020.0002] # VIBRATION MODE
+1F4F4 ; [*1708.0020.0002] # MOBILE PHONE OFF
+1F4F5 ; [*1709.0020.0002] # NO MOBILE PHONES
+1F4F6 ; [*170A.0020.0002] # ANTENNA WITH BARS
+1F4F7 ; [*170B.0020.0002] # CAMERA
+1F4F8 ; [*170C.0020.0002] # CAMERA WITH FLASH
+1F4F9 ; [*170D.0020.0002] # VIDEO CAMERA
+1F4FA ; [*170E.0020.0002] # TELEVISION
+1F4FB ; [*170F.0020.0002] # RADIO
+1F4FC ; [*1710.0020.0002] # VIDEOCASSETTE
+1F4FD ; [*1711.0020.0002] # FILM PROJECTOR
+1F4FE ; [*1712.0020.0002] # PORTABLE STEREO
+1F4FF ; [*1713.0020.0002] # PRAYER BEADS
+1F500 ; [*1714.0020.0002] # TWISTED RIGHTWARDS ARROWS
+1F501 ; [*1715.0020.0002] # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS
+1F502 ; [*1716.0020.0002] # CLOCKWISE RIGHTWARDS AND LEFTWARDS OPEN CIRCLE ARROWS WITH CIRCLED ONE OVERLAY
+1F503 ; [*1717.0020.0002] # CLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
+1F504 ; [*1718.0020.0002] # ANTICLOCKWISE DOWNWARDS AND UPWARDS OPEN CIRCLE ARROWS
+1F505 ; [*1719.0020.0002] # LOW BRIGHTNESS SYMBOL
+1F506 ; [*171A.0020.0002] # HIGH BRIGHTNESS SYMBOL
+1F507 ; [*171B.0020.0002] # SPEAKER WITH CANCELLATION STROKE
+1F508 ; [*171C.0020.0002] # SPEAKER
+1F509 ; [*171D.0020.0002] # SPEAKER WITH ONE SOUND WAVE
+1F50A ; [*171E.0020.0002] # SPEAKER WITH THREE SOUND WAVES
+1F50B ; [*171F.0020.0002] # BATTERY
+1F50C ; [*1720.0020.0002] # ELECTRIC PLUG
+1F50D ; [*1721.0020.0002] # LEFT-POINTING MAGNIFYING GLASS
+1F50E ; [*1722.0020.0002] # RIGHT-POINTING MAGNIFYING GLASS
+1F50F ; [*1723.0020.0002] # LOCK WITH INK PEN
+1F510 ; [*1724.0020.0002] # CLOSED LOCK WITH KEY
+1F511 ; [*1725.0020.0002] # KEY
+1F512 ; [*1726.0020.0002] # LOCK
+1F513 ; [*1727.0020.0002] # OPEN LOCK
+1F514 ; [*1728.0020.0002] # BELL
+1F515 ; [*1729.0020.0002] # BELL WITH CANCELLATION STROKE
+1F516 ; [*172A.0020.0002] # BOOKMARK
+1F517 ; [*172B.0020.0002] # LINK SYMBOL
+1F518 ; [*172C.0020.0002] # RADIO BUTTON
+1F519 ; [*172D.0020.0002] # BACK WITH LEFTWARDS ARROW ABOVE
+1F51A ; [*172E.0020.0002] # END WITH LEFTWARDS ARROW ABOVE
+1F51B ; [*172F.0020.0002] # ON WITH EXCLAMATION MARK WITH LEFT RIGHT ARROW ABOVE
+1F51C ; [*1730.0020.0002] # SOON WITH RIGHTWARDS ARROW ABOVE
+1F51D ; [*1731.0020.0002] # TOP WITH UPWARDS ARROW ABOVE
+1F51E ; [*1732.0020.0002] # NO ONE UNDER EIGHTEEN SYMBOL
+1F51F ; [*1733.0020.0002] # KEYCAP TEN
+1F520 ; [*1734.0020.0002] # INPUT SYMBOL FOR LATIN CAPITAL LETTERS
+1F521 ; [*1735.0020.0002] # INPUT SYMBOL FOR LATIN SMALL LETTERS
+1F522 ; [*1736.0020.0002] # INPUT SYMBOL FOR NUMBERS
+1F523 ; [*1737.0020.0002] # INPUT SYMBOL FOR SYMBOLS
+1F524 ; [*1738.0020.0002] # INPUT SYMBOL FOR LATIN LETTERS
+1F525 ; [*1739.0020.0002] # FIRE
+1F526 ; [*173A.0020.0002] # ELECTRIC TORCH
+1F527 ; [*173B.0020.0002] # WRENCH
+1F528 ; [*173C.0020.0002] # HAMMER
+1F529 ; [*173D.0020.0002] # NUT AND BOLT
+1F52A ; [*173E.0020.0002] # HOCHO
+1F52B ; [*173F.0020.0002] # PISTOL
+1F52C ; [*1740.0020.0002] # MICROSCOPE
+1F52D ; [*1741.0020.0002] # TELESCOPE
+1F52E ; [*1742.0020.0002] # CRYSTAL BALL
+1F52F ; [*1743.0020.0002] # SIX POINTED STAR WITH MIDDLE DOT
+1F530 ; [*1744.0020.0002] # JAPANESE SYMBOL FOR BEGINNER
+1F531 ; [*1745.0020.0002] # TRIDENT EMBLEM
+1F532 ; [*1746.0020.0002] # BLACK SQUARE BUTTON
+1F533 ; [*1747.0020.0002] # WHITE SQUARE BUTTON
+1F534 ; [*1748.0020.0002] # LARGE RED CIRCLE
+1F535 ; [*1749.0020.0002] # LARGE BLUE CIRCLE
+1F536 ; [*174A.0020.0002] # LARGE ORANGE DIAMOND
+1F537 ; [*174B.0020.0002] # LARGE BLUE DIAMOND
+1F538 ; [*174C.0020.0002] # SMALL ORANGE DIAMOND
+1F539 ; [*174D.0020.0002] # SMALL BLUE DIAMOND
+1F53A ; [*174E.0020.0002] # UP-POINTING RED TRIANGLE
+1F53B ; [*174F.0020.0002] # DOWN-POINTING RED TRIANGLE
+1F53C ; [*1750.0020.0002] # UP-POINTING SMALL RED TRIANGLE
+1F53D ; [*1751.0020.0002] # DOWN-POINTING SMALL RED TRIANGLE
+1F53E ; [*1752.0020.0002] # LOWER RIGHT SHADOWED WHITE CIRCLE
+1F53F ; [*1753.0020.0002] # UPPER RIGHT SHADOWED WHITE CIRCLE
+1F540 ; [*1754.0020.0002] # CIRCLED CROSS POMMEE
+1F541 ; [*1755.0020.0002] # CROSS POMMEE WITH HALF-CIRCLE BELOW
+1F542 ; [*1756.0020.0002] # CROSS POMMEE
+1F543 ; [*1757.0020.0002] # NOTCHED LEFT SEMICIRCLE WITH THREE DOTS
+1F544 ; [*1758.0020.0002] # NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS
+1F545 ; [*1759.0020.0002] # SYMBOL FOR MARKS CHAPTER
+1F546 ; [*175A.0020.0002] # WHITE LATIN CROSS
+1F547 ; [*175B.0020.0002] # HEAVY LATIN CROSS
+1F548 ; [*175C.0020.0002] # CELTIC CROSS
+1F549 ; [*175D.0020.0002] # OM SYMBOL
+1F54A ; [*175E.0020.0002] # DOVE OF PEACE
+1F54B ; [*175F.0020.0002] # KAABA
+1F54C ; [*1760.0020.0002] # MOSQUE
+1F54D ; [*1761.0020.0002] # SYNAGOGUE
+1F54E ; [*1762.0020.0002] # MENORAH WITH NINE BRANCHES
+1F54F ; [*1763.0020.0002] # BOWL OF HYGIEIA
+1F550 ; [*1764.0020.0002] # CLOCK FACE ONE OCLOCK
+1F551 ; [*1765.0020.0002] # CLOCK FACE TWO OCLOCK
+1F552 ; [*1766.0020.0002] # CLOCK FACE THREE OCLOCK
+1F553 ; [*1767.0020.0002] # CLOCK FACE FOUR OCLOCK
+1F554 ; [*1768.0020.0002] # CLOCK FACE FIVE OCLOCK
+1F555 ; [*1769.0020.0002] # CLOCK FACE SIX OCLOCK
+1F556 ; [*176A.0020.0002] # CLOCK FACE SEVEN OCLOCK
+1F557 ; [*176B.0020.0002] # CLOCK FACE EIGHT OCLOCK
+1F558 ; [*176C.0020.0002] # CLOCK FACE NINE OCLOCK
+1F559 ; [*176D.0020.0002] # CLOCK FACE TEN OCLOCK
+1F55A ; [*176E.0020.0002] # CLOCK FACE ELEVEN OCLOCK
+1F55B ; [*176F.0020.0002] # CLOCK FACE TWELVE OCLOCK
+1F55C ; [*1770.0020.0002] # CLOCK FACE ONE-THIRTY
+1F55D ; [*1771.0020.0002] # CLOCK FACE TWO-THIRTY
+1F55E ; [*1772.0020.0002] # CLOCK FACE THREE-THIRTY
+1F55F ; [*1773.0020.0002] # CLOCK FACE FOUR-THIRTY
+1F560 ; [*1774.0020.0002] # CLOCK FACE FIVE-THIRTY
+1F561 ; [*1775.0020.0002] # CLOCK FACE SIX-THIRTY
+1F562 ; [*1776.0020.0002] # CLOCK FACE SEVEN-THIRTY
+1F563 ; [*1777.0020.0002] # CLOCK FACE EIGHT-THIRTY
+1F564 ; [*1778.0020.0002] # CLOCK FACE NINE-THIRTY
+1F565 ; [*1779.0020.0002] # CLOCK FACE TEN-THIRTY
+1F566 ; [*177A.0020.0002] # CLOCK FACE ELEVEN-THIRTY
+1F567 ; [*177B.0020.0002] # CLOCK FACE TWELVE-THIRTY
+1F568 ; [*177C.0020.0002] # RIGHT SPEAKER
+1F569 ; [*177D.0020.0002] # RIGHT SPEAKER WITH ONE SOUND WAVE
+1F56A ; [*177E.0020.0002] # RIGHT SPEAKER WITH THREE SOUND WAVES
+1F56B ; [*177F.0020.0002] # BULLHORN
+1F56C ; [*1780.0020.0002] # BULLHORN WITH SOUND WAVES
+1F56D ; [*1781.0020.0002] # RINGING BELL
+1F56E ; [*1782.0020.0002] # BOOK
+1F56F ; [*1783.0020.0002] # CANDLE
+1F570 ; [*1784.0020.0002] # MANTELPIECE CLOCK
+1F571 ; [*1785.0020.0002] # BLACK SKULL AND CROSSBONES
+1F572 ; [*1786.0020.0002] # NO PIRACY
+1F573 ; [*1787.0020.0002] # HOLE
+1F574 ; [*1788.0020.0002] # MAN IN BUSINESS SUIT LEVITATING
+1F575 ; [*1789.0020.0002] # SLEUTH OR SPY
+1F576 ; [*178A.0020.0002] # DARK SUNGLASSES
+1F577 ; [*178B.0020.0002] # SPIDER
+1F578 ; [*178C.0020.0002] # SPIDER WEB
+1F579 ; [*178D.0020.0002] # JOYSTICK
+1F57A ; [*178E.0020.0002] # MAN DANCING
+1F57B ; [*178F.0020.0002] # LEFT HAND TELEPHONE RECEIVER
+1F57C ; [*1790.0020.0002] # TELEPHONE RECEIVER WITH PAGE
+1F57D ; [*1791.0020.0002] # RIGHT HAND TELEPHONE RECEIVER
+1F57E ; [*1792.0020.0002] # WHITE TOUCHTONE TELEPHONE
+1F57F ; [*1793.0020.0002] # BLACK TOUCHTONE TELEPHONE
+1F580 ; [*1794.0020.0002] # TELEPHONE ON TOP OF MODEM
+1F581 ; [*1795.0020.0002] # CLAMSHELL MOBILE PHONE
+1F582 ; [*1796.0020.0002] # BACK OF ENVELOPE
+1F583 ; [*1797.0020.0002] # STAMPED ENVELOPE
+1F584 ; [*1798.0020.0002] # ENVELOPE WITH LIGHTNING
+1F585 ; [*1799.0020.0002] # FLYING ENVELOPE
+1F586 ; [*179A.0020.0002] # PEN OVER STAMPED ENVELOPE
+1F587 ; [*179B.0020.0002] # LINKED PAPERCLIPS
+1F588 ; [*179C.0020.0002] # BLACK PUSHPIN
+1F589 ; [*179D.0020.0002] # LOWER LEFT PENCIL
+1F58A ; [*179E.0020.0002] # LOWER LEFT BALLPOINT PEN
+1F58B ; [*179F.0020.0002] # LOWER LEFT FOUNTAIN PEN
+1F58C ; [*17A0.0020.0002] # LOWER LEFT PAINTBRUSH
+1F58D ; [*17A1.0020.0002] # LOWER LEFT CRAYON
+1F58E ; [*17A2.0020.0002] # LEFT WRITING HAND
+1F58F ; [*17A3.0020.0002] # TURNED OK HAND SIGN
+1F590 ; [*17A4.0020.0002] # RAISED HAND WITH FINGERS SPLAYED
+1F591 ; [*17A5.0020.0002] # REVERSED RAISED HAND WITH FINGERS SPLAYED
+1F592 ; [*17A6.0020.0002] # REVERSED THUMBS UP SIGN
+1F593 ; [*17A7.0020.0002] # REVERSED THUMBS DOWN SIGN
+1F594 ; [*17A8.0020.0002] # REVERSED VICTORY HAND
+1F595 ; [*17A9.0020.0002] # REVERSED HAND WITH MIDDLE FINGER EXTENDED
+1F596 ; [*17AA.0020.0002] # RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS
+1F597 ; [*17AB.0020.0002] # WHITE DOWN POINTING LEFT HAND INDEX
+1F598 ; [*17AC.0020.0002] # SIDEWAYS WHITE LEFT POINTING INDEX
+1F599 ; [*17AD.0020.0002] # SIDEWAYS WHITE RIGHT POINTING INDEX
+1F59A ; [*17AE.0020.0002] # SIDEWAYS BLACK LEFT POINTING INDEX
+1F59B ; [*17AF.0020.0002] # SIDEWAYS BLACK RIGHT POINTING INDEX
+1F59C ; [*17B0.0020.0002] # BLACK LEFT POINTING BACKHAND INDEX
+1F59D ; [*17B1.0020.0002] # BLACK RIGHT POINTING BACKHAND INDEX
+1F59E ; [*17B2.0020.0002] # SIDEWAYS WHITE UP POINTING INDEX
+1F59F ; [*17B3.0020.0002] # SIDEWAYS WHITE DOWN POINTING INDEX
+1F5A0 ; [*17B4.0020.0002] # SIDEWAYS BLACK UP POINTING INDEX
+1F5A1 ; [*17B5.0020.0002] # SIDEWAYS BLACK DOWN POINTING INDEX
+1F5A2 ; [*17B6.0020.0002] # BLACK UP POINTING BACKHAND INDEX
+1F5A3 ; [*17B7.0020.0002] # BLACK DOWN POINTING BACKHAND INDEX
+1F5A4 ; [*17B8.0020.0002] # BLACK HEART
+1F5A5 ; [*17B9.0020.0002] # DESKTOP COMPUTER
+1F5A6 ; [*17BA.0020.0002] # KEYBOARD AND MOUSE
+1F5A7 ; [*17BB.0020.0002] # THREE NETWORKED COMPUTERS
+1F5A8 ; [*17BC.0020.0002] # PRINTER
+1F5A9 ; [*17BD.0020.0002] # POCKET CALCULATOR
+1F5AA ; [*17BE.0020.0002] # BLACK HARD SHELL FLOPPY DISK
+1F5AB ; [*17BF.0020.0002] # WHITE HARD SHELL FLOPPY DISK
+1F5AC ; [*17C0.0020.0002] # SOFT SHELL FLOPPY DISK
+1F5AD ; [*17C1.0020.0002] # TAPE CARTRIDGE
+1F5AE ; [*17C2.0020.0002] # WIRED KEYBOARD
+1F5AF ; [*17C3.0020.0002] # ONE BUTTON MOUSE
+1F5B0 ; [*17C4.0020.0002] # TWO BUTTON MOUSE
+1F5B1 ; [*17C5.0020.0002] # THREE BUTTON MOUSE
+1F5B2 ; [*17C6.0020.0002] # TRACKBALL
+1F5B3 ; [*17C7.0020.0002] # OLD PERSONAL COMPUTER
+1F5B4 ; [*17C8.0020.0002] # HARD DISK
+1F5B5 ; [*17C9.0020.0002] # SCREEN
+1F5B6 ; [*17CA.0020.0002] # PRINTER ICON
+1F5B7 ; [*17CB.0020.0002] # FAX ICON
+1F5B8 ; [*17CC.0020.0002] # OPTICAL DISC ICON
+1F5B9 ; [*17CD.0020.0002] # DOCUMENT WITH TEXT
+1F5BA ; [*17CE.0020.0002] # DOCUMENT WITH TEXT AND PICTURE
+1F5BB ; [*17CF.0020.0002] # DOCUMENT WITH PICTURE
+1F5BC ; [*17D0.0020.0002] # FRAME WITH PICTURE
+1F5BD ; [*17D1.0020.0002] # FRAME WITH TILES
+1F5BE ; [*17D2.0020.0002] # FRAME WITH AN X
+1F5BF ; [*17D3.0020.0002] # BLACK FOLDER
+1F5C0 ; [*17D4.0020.0002] # FOLDER
+1F5C1 ; [*17D5.0020.0002] # OPEN FOLDER
+1F5C2 ; [*17D6.0020.0002] # CARD INDEX DIVIDERS
+1F5C3 ; [*17D7.0020.0002] # CARD FILE BOX
+1F5C4 ; [*17D8.0020.0002] # FILE CABINET
+1F5C5 ; [*17D9.0020.0002] # EMPTY NOTE
+1F5C6 ; [*17DA.0020.0002] # EMPTY NOTE PAGE
+1F5C7 ; [*17DB.0020.0002] # EMPTY NOTE PAD
+1F5C8 ; [*17DC.0020.0002] # NOTE
+1F5C9 ; [*17DD.0020.0002] # NOTE PAGE
+1F5CA ; [*17DE.0020.0002] # NOTE PAD
+1F5CB ; [*17DF.0020.0002] # EMPTY DOCUMENT
+1F5CC ; [*17E0.0020.0002] # EMPTY PAGE
+1F5CD ; [*17E1.0020.0002] # EMPTY PAGES
+1F5CE ; [*17E2.0020.0002] # DOCUMENT
+1F5CF ; [*17E3.0020.0002] # PAGE
+1F5D0 ; [*17E4.0020.0002] # PAGES
+1F5D1 ; [*17E5.0020.0002] # WASTEBASKET
+1F5D2 ; [*17E6.0020.0002] # SPIRAL NOTE PAD
+1F5D3 ; [*17E7.0020.0002] # SPIRAL CALENDAR PAD
+1F5D4 ; [*17E8.0020.0002] # DESKTOP WINDOW
+1F5D5 ; [*17E9.0020.0002] # MINIMIZE
+1F5D6 ; [*17EA.0020.0002] # MAXIMIZE
+1F5D7 ; [*17EB.0020.0002] # OVERLAP
+1F5D8 ; [*17EC.0020.0002] # CLOCKWISE RIGHT AND LEFT SEMICIRCLE ARROWS
+1F5D9 ; [*17ED.0020.0002] # CANCELLATION X
+1F5DA ; [*17EE.0020.0002] # INCREASE FONT SIZE SYMBOL
+1F5DB ; [*17EF.0020.0002] # DECREASE FONT SIZE SYMBOL
+1F5DC ; [*17F0.0020.0002] # COMPRESSION
+1F5DD ; [*17F1.0020.0002] # OLD KEY
+1F5DE ; [*17F2.0020.0002] # ROLLED-UP NEWSPAPER
+1F5DF ; [*17F3.0020.0002] # PAGE WITH CIRCLED TEXT
+1F5E0 ; [*17F4.0020.0002] # STOCK CHART
+1F5E1 ; [*17F5.0020.0002] # DAGGER KNIFE
+1F5E2 ; [*17F6.0020.0002] # LIPS
+1F5E3 ; [*17F7.0020.0002] # SPEAKING HEAD IN SILHOUETTE
+1F5E4 ; [*17F8.0020.0002] # THREE RAYS ABOVE
+1F5E5 ; [*17F9.0020.0002] # THREE RAYS BELOW
+1F5E6 ; [*17FA.0020.0002] # THREE RAYS LEFT
+1F5E7 ; [*17FB.0020.0002] # THREE RAYS RIGHT
+1F5E8 ; [*17FC.0020.0002] # LEFT SPEECH BUBBLE
+1F5E9 ; [*17FD.0020.0002] # RIGHT SPEECH BUBBLE
+1F5EA ; [*17FE.0020.0002] # TWO SPEECH BUBBLES
+1F5EB ; [*17FF.0020.0002] # THREE SPEECH BUBBLES
+1F5EC ; [*1800.0020.0002] # LEFT THOUGHT BUBBLE
+1F5ED ; [*1801.0020.0002] # RIGHT THOUGHT BUBBLE
+1F5EE ; [*1802.0020.0002] # LEFT ANGER BUBBLE
+1F5EF ; [*1803.0020.0002] # RIGHT ANGER BUBBLE
+1F5F0 ; [*1804.0020.0002] # MOOD BUBBLE
+1F5F1 ; [*1805.0020.0002] # LIGHTNING MOOD BUBBLE
+1F5F2 ; [*1806.0020.0002] # LIGHTNING MOOD
+1F5F3 ; [*1807.0020.0002] # BALLOT BOX WITH BALLOT
+1F5F4 ; [*1808.0020.0002] # BALLOT SCRIPT X
+1F5F5 ; [*1809.0020.0002] # BALLOT BOX WITH SCRIPT X
+1F5F6 ; [*180A.0020.0002] # BALLOT BOLD SCRIPT X
+1F5F7 ; [*180B.0020.0002] # BALLOT BOX WITH BOLD SCRIPT X
+1F5F8 ; [*180C.0020.0002] # LIGHT CHECK MARK
+1F5F9 ; [*180D.0020.0002] # BALLOT BOX WITH BOLD CHECK
+1F5FA ; [*180E.0020.0002] # WORLD MAP
+1F5FB ; [*180F.0020.0002] # MOUNT FUJI
+1F5FC ; [*1810.0020.0002] # TOKYO TOWER
+1F5FD ; [*1811.0020.0002] # STATUE OF LIBERTY
+1F5FE ; [*1812.0020.0002] # SILHOUETTE OF JAPAN
+1F5FF ; [*1813.0020.0002] # MOYAI
+1F600 ; [*196C.0020.0002] # GRINNING FACE
+1F601 ; [*196D.0020.0002] # GRINNING FACE WITH SMILING EYES
+1F602 ; [*196E.0020.0002] # FACE WITH TEARS OF JOY
+1F603 ; [*196F.0020.0002] # SMILING FACE WITH OPEN MOUTH
+1F604 ; [*1970.0020.0002] # SMILING FACE WITH OPEN MOUTH AND SMILING EYES
+1F605 ; [*1971.0020.0002] # SMILING FACE WITH OPEN MOUTH AND COLD SWEAT
+1F606 ; [*1972.0020.0002] # SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES
+1F607 ; [*1973.0020.0002] # SMILING FACE WITH HALO
+1F608 ; [*1974.0020.0002] # SMILING FACE WITH HORNS
+1F609 ; [*1975.0020.0002] # WINKING FACE
+1F60A ; [*1976.0020.0002] # SMILING FACE WITH SMILING EYES
+1F60B ; [*1977.0020.0002] # FACE SAVOURING DELICIOUS FOOD
+1F60C ; [*1978.0020.0002] # RELIEVED FACE
+1F60D ; [*1979.0020.0002] # SMILING FACE WITH HEART-SHAPED EYES
+1F60E ; [*197A.0020.0002] # SMILING FACE WITH SUNGLASSES
+1F60F ; [*197B.0020.0002] # SMIRKING FACE
+1F610 ; [*197C.0020.0002] # NEUTRAL FACE
+1F611 ; [*197D.0020.0002] # EXPRESSIONLESS FACE
+1F612 ; [*197E.0020.0002] # UNAMUSED FACE
+1F613 ; [*197F.0020.0002] # FACE WITH COLD SWEAT
+1F614 ; [*1980.0020.0002] # PENSIVE FACE
+1F615 ; [*1981.0020.0002] # CONFUSED FACE
+1F616 ; [*1982.0020.0002] # CONFOUNDED FACE
+1F617 ; [*1983.0020.0002] # KISSING FACE
+1F618 ; [*1984.0020.0002] # FACE THROWING A KISS
+1F619 ; [*1985.0020.0002] # KISSING FACE WITH SMILING EYES
+1F61A ; [*1986.0020.0002] # KISSING FACE WITH CLOSED EYES
+1F61B ; [*1987.0020.0002] # FACE WITH STUCK-OUT TONGUE
+1F61C ; [*1988.0020.0002] # FACE WITH STUCK-OUT TONGUE AND WINKING EYE
+1F61D ; [*1989.0020.0002] # FACE WITH STUCK-OUT TONGUE AND TIGHTLY-CLOSED EYES
+1F61E ; [*198A.0020.0002] # DISAPPOINTED FACE
+1F61F ; [*198B.0020.0002] # WORRIED FACE
+1F620 ; [*198C.0020.0002] # ANGRY FACE
+1F621 ; [*198D.0020.0002] # POUTING FACE
+1F622 ; [*198E.0020.0002] # CRYING FACE
+1F623 ; [*198F.0020.0002] # PERSEVERING FACE
+1F624 ; [*1990.0020.0002] # FACE WITH LOOK OF TRIUMPH
+1F625 ; [*1991.0020.0002] # DISAPPOINTED BUT RELIEVED FACE
+1F626 ; [*1992.0020.0002] # FROWNING FACE WITH OPEN MOUTH
+1F627 ; [*1993.0020.0002] # ANGUISHED FACE
+1F628 ; [*1994.0020.0002] # FEARFUL FACE
+1F629 ; [*1995.0020.0002] # WEARY FACE
+1F62A ; [*1996.0020.0002] # SLEEPY FACE
+1F62B ; [*1997.0020.0002] # TIRED FACE
+1F62C ; [*1998.0020.0002] # GRIMACING FACE
+1F62D ; [*1999.0020.0002] # LOUDLY CRYING FACE
+1F62E ; [*199A.0020.0002] # FACE WITH OPEN MOUTH
+1F62F ; [*199B.0020.0002] # HUSHED FACE
+1F630 ; [*199C.0020.0002] # FACE WITH OPEN MOUTH AND COLD SWEAT
+1F631 ; [*199D.0020.0002] # FACE SCREAMING IN FEAR
+1F632 ; [*199E.0020.0002] # ASTONISHED FACE
+1F633 ; [*199F.0020.0002] # FLUSHED FACE
+1F634 ; [*19A0.0020.0002] # SLEEPING FACE
+1F635 ; [*19A1.0020.0002] # DIZZY FACE
+1F636 ; [*19A2.0020.0002] # FACE WITHOUT MOUTH
+1F637 ; [*19A3.0020.0002] # FACE WITH MEDICAL MASK
+1F638 ; [*19A4.0020.0002] # GRINNING CAT FACE WITH SMILING EYES
+1F639 ; [*19A5.0020.0002] # CAT FACE WITH TEARS OF JOY
+1F63A ; [*19A6.0020.0002] # SMILING CAT FACE WITH OPEN MOUTH
+1F63B ; [*19A7.0020.0002] # SMILING CAT FACE WITH HEART-SHAPED EYES
+1F63C ; [*19A8.0020.0002] # CAT FACE WITH WRY SMILE
+1F63D ; [*19A9.0020.0002] # KISSING CAT FACE WITH CLOSED EYES
+1F63E ; [*19AA.0020.0002] # POUTING CAT FACE
+1F63F ; [*19AB.0020.0002] # CRYING CAT FACE
+1F640 ; [*19AC.0020.0002] # WEARY CAT FACE
+1F641 ; [*19AD.0020.0002] # SLIGHTLY FROWNING FACE
+1F642 ; [*19AE.0020.0002] # SLIGHTLY SMILING FACE
+1F643 ; [*19AF.0020.0002] # UPSIDE-DOWN FACE
+1F644 ; [*19B0.0020.0002] # FACE WITH ROLLING EYES
+1F645 ; [*19B1.0020.0002] # FACE WITH NO GOOD GESTURE
+1F646 ; [*19B2.0020.0002] # FACE WITH OK GESTURE
+1F647 ; [*19B3.0020.0002] # PERSON BOWING DEEPLY
+1F648 ; [*19B4.0020.0002] # SEE-NO-EVIL MONKEY
+1F649 ; [*19B5.0020.0002] # HEAR-NO-EVIL MONKEY
+1F64A ; [*19B6.0020.0002] # SPEAK-NO-EVIL MONKEY
+1F64B ; [*19B7.0020.0002] # HAPPY PERSON RAISING ONE HAND
+1F64C ; [*19B8.0020.0002] # PERSON RAISING BOTH HANDS IN CELEBRATION
+1F64D ; [*19B9.0020.0002] # PERSON FROWNING
+1F64E ; [*19BA.0020.0002] # PERSON WITH POUTING FACE
+1F64F ; [*19BB.0020.0002] # PERSON WITH FOLDED HANDS
+1F650 ; [*19BC.0020.0002] # NORTH WEST POINTING LEAF
+1F651 ; [*19BD.0020.0002] # SOUTH WEST POINTING LEAF
+1F652 ; [*19BE.0020.0002] # NORTH EAST POINTING LEAF
+1F653 ; [*19BF.0020.0002] # SOUTH EAST POINTING LEAF
+1F654 ; [*19C0.0020.0002] # TURNED NORTH WEST POINTING LEAF
+1F655 ; [*19C1.0020.0002] # TURNED SOUTH WEST POINTING LEAF
+1F656 ; [*19C2.0020.0002] # TURNED NORTH EAST POINTING LEAF
+1F657 ; [*19C3.0020.0002] # TURNED SOUTH EAST POINTING LEAF
+1F658 ; [*19C4.0020.0002] # NORTH WEST POINTING VINE LEAF
+1F659 ; [*19C5.0020.0002] # SOUTH WEST POINTING VINE LEAF
+1F65A ; [*19C6.0020.0002] # NORTH EAST POINTING VINE LEAF
+1F65B ; [*19C7.0020.0002] # SOUTH EAST POINTING VINE LEAF
+1F65C ; [*19C8.0020.0002] # HEAVY NORTH WEST POINTING VINE LEAF
+1F65D ; [*19C9.0020.0002] # HEAVY SOUTH WEST POINTING VINE LEAF
+1F65E ; [*19CA.0020.0002] # HEAVY NORTH EAST POINTING VINE LEAF
+1F65F ; [*19CB.0020.0002] # HEAVY SOUTH EAST POINTING VINE LEAF
+1F660 ; [*19CC.0020.0002] # NORTH WEST POINTING BUD
+1F661 ; [*19CD.0020.0002] # SOUTH WEST POINTING BUD
+1F662 ; [*19CE.0020.0002] # NORTH EAST POINTING BUD
+1F663 ; [*19CF.0020.0002] # SOUTH EAST POINTING BUD
+1F664 ; [*19D0.0020.0002] # HEAVY NORTH WEST POINTING BUD
+1F665 ; [*19D1.0020.0002] # HEAVY SOUTH WEST POINTING BUD
+1F666 ; [*19D2.0020.0002] # HEAVY NORTH EAST POINTING BUD
+1F667 ; [*19D3.0020.0002] # HEAVY SOUTH EAST POINTING BUD
+1F668 ; [*19D4.0020.0002] # HOLLOW QUILT SQUARE ORNAMENT
+1F669 ; [*19D5.0020.0002] # HOLLOW QUILT SQUARE ORNAMENT IN BLACK SQUARE
+1F66A ; [*19D6.0020.0002] # SOLID QUILT SQUARE ORNAMENT
+1F66B ; [*19D7.0020.0002] # SOLID QUILT SQUARE ORNAMENT IN BLACK SQUARE
+1F66C ; [*19D8.0020.0002] # LEFTWARDS ROCKET
+1F66D ; [*19D9.0020.0002] # UPWARDS ROCKET
+1F66E ; [*19DA.0020.0002] # RIGHTWARDS ROCKET
+1F66F ; [*19DB.0020.0002] # DOWNWARDS ROCKET
+1F670 ; [*19DC.0020.0002] # SCRIPT LIGATURE ET ORNAMENT
+1F671 ; [*19DD.0020.0002] # HEAVY SCRIPT LIGATURE ET ORNAMENT
+1F672 ; [*19DE.0020.0002] # LIGATURE OPEN ET ORNAMENT
+1F673 ; [*19DF.0020.0002] # HEAVY LIGATURE OPEN ET ORNAMENT
+1F674 ; [*19E0.0020.0002] # HEAVY AMPERSAND ORNAMENT
+1F675 ; [*19E1.0020.0002] # SWASH AMPERSAND ORNAMENT
+1F676 ; [*19E2.0020.0002] # SANS-SERIF HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT
+1F677 ; [*19E3.0020.0002] # SANS-SERIF HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
+1F678 ; [*19E4.0020.0002] # SANS-SERIF HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
+1F679 ; [*19E5.0020.0002] # HEAVY INTERROBANG ORNAMENT
+1F67A ; [*19E6.0020.0002] # SANS-SERIF INTERROBANG ORNAMENT
+1F67B ; [*19E7.0020.0002] # HEAVY SANS-SERIF INTERROBANG ORNAMENT
+1F67C ; [*19E8.0020.0002] # VERY HEAVY SOLIDUS
+1F67D ; [*19E9.0020.0002] # VERY HEAVY REVERSE SOLIDUS
+1F67E ; [*19EA.0020.0002] # CHECKER BOARD
+1F67F ; [*19EB.0020.0002] # REVERSE CHECKER BOARD
+1F680 ; [*19EC.0020.0002] # ROCKET
+1F681 ; [*19ED.0020.0002] # HELICOPTER
+1F682 ; [*19EE.0020.0002] # STEAM LOCOMOTIVE
+1F683 ; [*19EF.0020.0002] # RAILWAY CAR
+1F684 ; [*19F0.0020.0002] # HIGH-SPEED TRAIN
+1F685 ; [*19F1.0020.0002] # HIGH-SPEED TRAIN WITH BULLET NOSE
+1F686 ; [*19F2.0020.0002] # TRAIN
+1F687 ; [*19F3.0020.0002] # METRO
+1F688 ; [*19F4.0020.0002] # LIGHT RAIL
+1F689 ; [*19F5.0020.0002] # STATION
+1F68A ; [*19F6.0020.0002] # TRAM
+1F68B ; [*19F7.0020.0002] # TRAM CAR
+1F68C ; [*19F8.0020.0002] # BUS
+1F68D ; [*19F9.0020.0002] # ONCOMING BUS
+1F68E ; [*19FA.0020.0002] # TROLLEYBUS
+1F68F ; [*19FB.0020.0002] # BUS STOP
+1F690 ; [*19FC.0020.0002] # MINIBUS
+1F691 ; [*19FD.0020.0002] # AMBULANCE
+1F692 ; [*19FE.0020.0002] # FIRE ENGINE
+1F693 ; [*19FF.0020.0002] # POLICE CAR
+1F694 ; [*1A00.0020.0002] # ONCOMING POLICE CAR
+1F695 ; [*1A01.0020.0002] # TAXI
+1F696 ; [*1A02.0020.0002] # ONCOMING TAXI
+1F697 ; [*1A03.0020.0002] # AUTOMOBILE
+1F698 ; [*1A04.0020.0002] # ONCOMING AUTOMOBILE
+1F699 ; [*1A05.0020.0002] # RECREATIONAL VEHICLE
+1F69A ; [*1A06.0020.0002] # DELIVERY TRUCK
+1F69B ; [*1A07.0020.0002] # ARTICULATED LORRY
+1F69C ; [*1A08.0020.0002] # TRACTOR
+1F69D ; [*1A09.0020.0002] # MONORAIL
+1F69E ; [*1A0A.0020.0002] # MOUNTAIN RAILWAY
+1F69F ; [*1A0B.0020.0002] # SUSPENSION RAILWAY
+1F6A0 ; [*1A0C.0020.0002] # MOUNTAIN CABLEWAY
+1F6A1 ; [*1A0D.0020.0002] # AERIAL TRAMWAY
+1F6A2 ; [*1A0E.0020.0002] # SHIP
+1F6A3 ; [*1A0F.0020.0002] # ROWBOAT
+1F6A4 ; [*1A10.0020.0002] # SPEEDBOAT
+1F6A5 ; [*1A11.0020.0002] # HORIZONTAL TRAFFIC LIGHT
+1F6A6 ; [*1A12.0020.0002] # VERTICAL TRAFFIC LIGHT
+1F6A7 ; [*1A13.0020.0002] # CONSTRUCTION SIGN
+1F6A8 ; [*1A14.0020.0002] # POLICE CARS REVOLVING LIGHT
+1F6A9 ; [*1A15.0020.0002] # TRIANGULAR FLAG ON POST
+1F6AA ; [*1A16.0020.0002] # DOOR
+1F6AB ; [*1A17.0020.0002] # NO ENTRY SIGN
+1F6AC ; [*1A18.0020.0002] # SMOKING SYMBOL
+1F6AD ; [*1A19.0020.0002] # NO SMOKING SYMBOL
+1F6AE ; [*1A1A.0020.0002] # PUT LITTER IN ITS PLACE SYMBOL
+1F6AF ; [*1A1B.0020.0002] # DO NOT LITTER SYMBOL
+1F6B0 ; [*1A1C.0020.0002] # POTABLE WATER SYMBOL
+1F6B1 ; [*1A1D.0020.0002] # NON-POTABLE WATER SYMBOL
+1F6B2 ; [*1A1E.0020.0002] # BICYCLE
+1F6B3 ; [*1A1F.0020.0002] # NO BICYCLES
+1F6B4 ; [*1A20.0020.0002] # BICYCLIST
+1F6B5 ; [*1A21.0020.0002] # MOUNTAIN BICYCLIST
+1F6B6 ; [*1A22.0020.0002] # PEDESTRIAN
+1F6B7 ; [*1A23.0020.0002] # NO PEDESTRIANS
+1F6B8 ; [*1A24.0020.0002] # CHILDREN CROSSING
+1F6B9 ; [*1A25.0020.0002] # MENS SYMBOL
+1F6BA ; [*1A26.0020.0002] # WOMENS SYMBOL
+1F6BB ; [*1A27.0020.0002] # RESTROOM
+1F6BC ; [*1A28.0020.0002] # BABY SYMBOL
+1F6BD ; [*1A29.0020.0002] # TOILET
+1F6BE ; [*1A2A.0020.0002] # WATER CLOSET
+1F6BF ; [*1A2B.0020.0002] # SHOWER
+1F6C0 ; [*1A2C.0020.0002] # BATH
+1F6C1 ; [*1A2D.0020.0002] # BATHTUB
+1F6C2 ; [*1A2E.0020.0002] # PASSPORT CONTROL
+1F6C3 ; [*1A2F.0020.0002] # CUSTOMS
+1F6C4 ; [*1A30.0020.0002] # BAGGAGE CLAIM
+1F6C5 ; [*1A31.0020.0002] # LEFT LUGGAGE
+1F6C6 ; [*1A32.0020.0002] # TRIANGLE WITH ROUNDED CORNERS
+1F6C7 ; [*1A33.0020.0002] # PROHIBITED SIGN
+1F6C8 ; [*1A34.0020.0002] # CIRCLED INFORMATION SOURCE
+1F6C9 ; [*1A35.0020.0002] # BOYS SYMBOL
+1F6CA ; [*1A36.0020.0002] # GIRLS SYMBOL
+1F6CB ; [*1A37.0020.0002] # COUCH AND LAMP
+1F6CC ; [*1A38.0020.0002] # SLEEPING ACCOMMODATION
+1F6CD ; [*1A39.0020.0002] # SHOPPING BAGS
+1F6CE ; [*1A3A.0020.0002] # BELLHOP BELL
+1F6CF ; [*1A3B.0020.0002] # BED
+1F6D0 ; [*1A3C.0020.0002] # PLACE OF WORSHIP
+1F6D1 ; [*1A3D.0020.0002] # OCTAGONAL SIGN
+1F6D2 ; [*1A3E.0020.0002] # SHOPPING TROLLEY
+1F6D3 ; [*1A3F.0020.0002] # STUPA
+1F6D4 ; [*1A40.0020.0002] # PAGODA
+1F6D5 ; [*1A41.0020.0002] # HINDU TEMPLE
+1F6D6 ; [*1A42.0020.0002] # HUT
+1F6D7 ; [*1A43.0020.0002] # ELEVATOR
+1F6DD ; [*1A44.0020.0002] # PLAYGROUND SLIDE
+1F6DE ; [*1A45.0020.0002] # WHEEL
+1F6DF ; [*1A46.0020.0002] # RING BUOY
+1F6E0 ; [*1A47.0020.0002] # HAMMER AND WRENCH
+1F6E1 ; [*1A48.0020.0002] # SHIELD
+1F6E2 ; [*1A49.0020.0002] # OIL DRUM
+1F6E3 ; [*1A4A.0020.0002] # MOTORWAY
+1F6E4 ; [*1A4B.0020.0002] # RAILWAY TRACK
+1F6E5 ; [*1A4C.0020.0002] # MOTOR BOAT
+1F6E6 ; [*1A4D.0020.0002] # UP-POINTING MILITARY AIRPLANE
+1F6E7 ; [*1A4E.0020.0002] # UP-POINTING AIRPLANE
+1F6E8 ; [*1A4F.0020.0002] # UP-POINTING SMALL AIRPLANE
+1F6E9 ; [*1A50.0020.0002] # SMALL AIRPLANE
+1F6EA ; [*1A51.0020.0002] # NORTHEAST-POINTING AIRPLANE
+1F6EB ; [*1A52.0020.0002] # AIRPLANE DEPARTURE
+1F6EC ; [*1A53.0020.0002] # AIRPLANE ARRIVING
+1F6F0 ; [*1A54.0020.0002] # SATELLITE
+1F6F1 ; [*1A55.0020.0002] # ONCOMING FIRE ENGINE
+1F6F2 ; [*1A56.0020.0002] # DIESEL LOCOMOTIVE
+1F6F3 ; [*1A57.0020.0002] # PASSENGER SHIP
+1F6F4 ; [*1A58.0020.0002] # SCOOTER
+1F6F5 ; [*1A59.0020.0002] # MOTOR SCOOTER
+1F6F6 ; [*1A5A.0020.0002] # CANOE
+1F6F7 ; [*1A5B.0020.0002] # SLED
+1F6F8 ; [*1A5C.0020.0002] # FLYING SAUCER
+1F6F9 ; [*1A5D.0020.0002] # SKATEBOARD
+1F6FA ; [*1A5E.0020.0002] # AUTO RICKSHAW
+1F6FB ; [*1A5F.0020.0002] # PICKUP TRUCK
+1F6FC ; [*1A60.0020.0002] # ROLLER SKATE
+1F700 ; [*1A61.0020.0002] # ALCHEMICAL SYMBOL FOR QUINTESSENCE
+1F701 ; [*1A62.0020.0002] # ALCHEMICAL SYMBOL FOR AIR
+1F702 ; [*1A63.0020.0002] # ALCHEMICAL SYMBOL FOR FIRE
+1F703 ; [*1A64.0020.0002] # ALCHEMICAL SYMBOL FOR EARTH
+1F704 ; [*1A65.0020.0002] # ALCHEMICAL SYMBOL FOR WATER
+1F705 ; [*1A66.0020.0002] # ALCHEMICAL SYMBOL FOR AQUAFORTIS
+1F706 ; [*1A67.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA REGIA
+1F707 ; [*1A68.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA REGIA-2
+1F708 ; [*1A69.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA VITAE
+1F709 ; [*1A6A.0020.0002] # ALCHEMICAL SYMBOL FOR AQUA VITAE-2
+1F70A ; [*1A6B.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR
+1F70B ; [*1A6C.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR-2
+1F70C ; [*1A6D.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR-3
+1F70D ; [*1A6E.0020.0002] # ALCHEMICAL SYMBOL FOR SULFUR
+1F70E ; [*1A6F.0020.0002] # ALCHEMICAL SYMBOL FOR PHILOSOPHERS SULFUR
+1F70F ; [*1A70.0020.0002] # ALCHEMICAL SYMBOL FOR BLACK SULFUR
+1F710 ; [*1A71.0020.0002] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE
+1F711 ; [*1A72.0020.0002] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-2
+1F712 ; [*1A73.0020.0002] # ALCHEMICAL SYMBOL FOR MERCURY SUBLIMATE-3
+1F713 ; [*1A74.0020.0002] # ALCHEMICAL SYMBOL FOR CINNABAR
+1F714 ; [*1A75.0020.0002] # ALCHEMICAL SYMBOL FOR SALT
+1F715 ; [*1A76.0020.0002] # ALCHEMICAL SYMBOL FOR NITRE
+1F716 ; [*1A77.0020.0002] # ALCHEMICAL SYMBOL FOR VITRIOL
+1F717 ; [*1A78.0020.0002] # ALCHEMICAL SYMBOL FOR VITRIOL-2
+1F718 ; [*1A79.0020.0002] # ALCHEMICAL SYMBOL FOR ROCK SALT
+1F719 ; [*1A7A.0020.0002] # ALCHEMICAL SYMBOL FOR ROCK SALT-2
+1F71A ; [*1A7B.0020.0002] # ALCHEMICAL SYMBOL FOR GOLD
+1F71B ; [*1A7C.0020.0002] # ALCHEMICAL SYMBOL FOR SILVER
+1F71C ; [*1A7D.0020.0002] # ALCHEMICAL SYMBOL FOR IRON ORE
+1F71D ; [*1A7E.0020.0002] # ALCHEMICAL SYMBOL FOR IRON ORE-2
+1F71E ; [*1A7F.0020.0002] # ALCHEMICAL SYMBOL FOR CROCUS OF IRON
+1F71F ; [*1A80.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS OF IRON
+1F720 ; [*1A81.0020.0002] # ALCHEMICAL SYMBOL FOR COPPER ORE
+1F721 ; [*1A82.0020.0002] # ALCHEMICAL SYMBOL FOR IRON-COPPER ORE
+1F722 ; [*1A83.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF COPPER
+1F723 ; [*1A84.0020.0002] # ALCHEMICAL SYMBOL FOR CROCUS OF COPPER
+1F724 ; [*1A85.0020.0002] # ALCHEMICAL SYMBOL FOR CROCUS OF COPPER-2
+1F725 ; [*1A86.0020.0002] # ALCHEMICAL SYMBOL FOR COPPER ANTIMONIATE
+1F726 ; [*1A87.0020.0002] # ALCHEMICAL SYMBOL FOR SALT OF COPPER ANTIMONIATE
+1F727 ; [*1A88.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF COPPER
+1F728 ; [*1A89.0020.0002] # ALCHEMICAL SYMBOL FOR VERDIGRIS
+1F729 ; [*1A8A.0020.0002] # ALCHEMICAL SYMBOL FOR TIN ORE
+1F72A ; [*1A8B.0020.0002] # ALCHEMICAL SYMBOL FOR LEAD ORE
+1F72B ; [*1A8C.0020.0002] # ALCHEMICAL SYMBOL FOR ANTIMONY ORE
+1F72C ; [*1A8D.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF ANTIMONY
+1F72D ; [*1A8E.0020.0002] # ALCHEMICAL SYMBOL FOR SALT OF ANTIMONY
+1F72E ; [*1A8F.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATE OF SALT OF ANTIMONY
+1F72F ; [*1A90.0020.0002] # ALCHEMICAL SYMBOL FOR VINEGAR OF ANTIMONY
+1F730 ; [*1A91.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY
+1F731 ; [*1A92.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS OF ANTIMONY-2
+1F732 ; [*1A93.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS
+1F733 ; [*1A94.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS-2
+1F734 ; [*1A95.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS-3
+1F735 ; [*1A96.0020.0002] # ALCHEMICAL SYMBOL FOR REGULUS-4
+1F736 ; [*1A97.0020.0002] # ALCHEMICAL SYMBOL FOR ALKALI
+1F737 ; [*1A98.0020.0002] # ALCHEMICAL SYMBOL FOR ALKALI-2
+1F738 ; [*1A99.0020.0002] # ALCHEMICAL SYMBOL FOR MARCASITE
+1F739 ; [*1A9A.0020.0002] # ALCHEMICAL SYMBOL FOR SAL-AMMONIAC
+1F73A ; [*1A9B.0020.0002] # ALCHEMICAL SYMBOL FOR ARSENIC
+1F73B ; [*1A9C.0020.0002] # ALCHEMICAL SYMBOL FOR REALGAR
+1F73C ; [*1A9D.0020.0002] # ALCHEMICAL SYMBOL FOR REALGAR-2
+1F73D ; [*1A9E.0020.0002] # ALCHEMICAL SYMBOL FOR AURIPIGMENT
+1F73E ; [*1A9F.0020.0002] # ALCHEMICAL SYMBOL FOR BISMUTH ORE
+1F73F ; [*1AA0.0020.0002] # ALCHEMICAL SYMBOL FOR TARTAR
+1F740 ; [*1AA1.0020.0002] # ALCHEMICAL SYMBOL FOR TARTAR-2
+1F741 ; [*1AA2.0020.0002] # ALCHEMICAL SYMBOL FOR QUICK LIME
+1F742 ; [*1AA3.0020.0002] # ALCHEMICAL SYMBOL FOR BORAX
+1F743 ; [*1AA4.0020.0002] # ALCHEMICAL SYMBOL FOR BORAX-2
+1F744 ; [*1AA5.0020.0002] # ALCHEMICAL SYMBOL FOR BORAX-3
+1F745 ; [*1AA6.0020.0002] # ALCHEMICAL SYMBOL FOR ALUM
+1F746 ; [*1AA7.0020.0002] # ALCHEMICAL SYMBOL FOR OIL
+1F747 ; [*1AA8.0020.0002] # ALCHEMICAL SYMBOL FOR SPIRIT
+1F748 ; [*1AA9.0020.0002] # ALCHEMICAL SYMBOL FOR TINCTURE
+1F749 ; [*1AAA.0020.0002] # ALCHEMICAL SYMBOL FOR GUM
+1F74A ; [*1AAB.0020.0002] # ALCHEMICAL SYMBOL FOR WAX
+1F74B ; [*1AAC.0020.0002] # ALCHEMICAL SYMBOL FOR POWDER
+1F74C ; [*1AAD.0020.0002] # ALCHEMICAL SYMBOL FOR CALX
+1F74D ; [*1AAE.0020.0002] # ALCHEMICAL SYMBOL FOR TUTTY
+1F74E ; [*1AAF.0020.0002] # ALCHEMICAL SYMBOL FOR CAPUT MORTUUM
+1F74F ; [*1AB0.0020.0002] # ALCHEMICAL SYMBOL FOR SCEPTER OF JOVE
+1F750 ; [*1AB1.0020.0002] # ALCHEMICAL SYMBOL FOR CADUCEUS
+1F751 ; [*1AB2.0020.0002] # ALCHEMICAL SYMBOL FOR TRIDENT
+1F752 ; [*1AB3.0020.0002] # ALCHEMICAL SYMBOL FOR STARRED TRIDENT
+1F753 ; [*1AB4.0020.0002] # ALCHEMICAL SYMBOL FOR LODESTONE
+1F754 ; [*1AB5.0020.0002] # ALCHEMICAL SYMBOL FOR SOAP
+1F755 ; [*1AB6.0020.0002] # ALCHEMICAL SYMBOL FOR URINE
+1F756 ; [*1AB7.0020.0002] # ALCHEMICAL SYMBOL FOR HORSE DUNG
+1F757 ; [*1AB8.0020.0002] # ALCHEMICAL SYMBOL FOR ASHES
+1F758 ; [*1AB9.0020.0002] # ALCHEMICAL SYMBOL FOR POT ASHES
+1F759 ; [*1ABA.0020.0002] # ALCHEMICAL SYMBOL FOR BRICK
+1F75A ; [*1ABB.0020.0002] # ALCHEMICAL SYMBOL FOR POWDERED BRICK
+1F75B ; [*1ABC.0020.0002] # ALCHEMICAL SYMBOL FOR AMALGAM
+1F75C ; [*1ABD.0020.0002] # ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM
+1F75D ; [*1ABE.0020.0002] # ALCHEMICAL SYMBOL FOR STRATUM SUPER STRATUM-2
+1F75E ; [*1ABF.0020.0002] # ALCHEMICAL SYMBOL FOR SUBLIMATION
+1F75F ; [*1AC0.0020.0002] # ALCHEMICAL SYMBOL FOR PRECIPITATE
+1F760 ; [*1AC1.0020.0002] # ALCHEMICAL SYMBOL FOR DISTILL
+1F761 ; [*1AC2.0020.0002] # ALCHEMICAL SYMBOL FOR DISSOLVE
+1F762 ; [*1AC3.0020.0002] # ALCHEMICAL SYMBOL FOR DISSOLVE-2
+1F763 ; [*1AC4.0020.0002] # ALCHEMICAL SYMBOL FOR PURIFY
+1F764 ; [*1AC5.0020.0002] # ALCHEMICAL SYMBOL FOR PUTREFACTION
+1F765 ; [*1AC6.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE
+1F766 ; [*1AC7.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-2
+1F767 ; [*1AC8.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-3
+1F768 ; [*1AC9.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-4
+1F769 ; [*1ACA.0020.0002] # ALCHEMICAL SYMBOL FOR CRUCIBLE-5
+1F76A ; [*1ACB.0020.0002] # ALCHEMICAL SYMBOL FOR ALEMBIC
+1F76B ; [*1ACC.0020.0002] # ALCHEMICAL SYMBOL FOR BATH OF MARY
+1F76C ; [*1ACD.0020.0002] # ALCHEMICAL SYMBOL FOR BATH OF VAPOURS
+1F76D ; [*1ACE.0020.0002] # ALCHEMICAL SYMBOL FOR RETORT
+1F76E ; [*1ACF.0020.0002] # ALCHEMICAL SYMBOL FOR HOUR
+1F76F ; [*1AD0.0020.0002] # ALCHEMICAL SYMBOL FOR NIGHT
+1F770 ; [*1AD1.0020.0002] # ALCHEMICAL SYMBOL FOR DAY-NIGHT
+1F771 ; [*1AD2.0020.0002] # ALCHEMICAL SYMBOL FOR MONTH
+1F772 ; [*1AD3.0020.0002] # ALCHEMICAL SYMBOL FOR HALF DRAM
+1F773 ; [*1AD4.0020.0002] # ALCHEMICAL SYMBOL FOR HALF OUNCE
+1F780 ; [*1AD5.0020.0002] # BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE
+1F781 ; [*1AD6.0020.0002] # BLACK UP-POINTING ISOSCELES RIGHT TRIANGLE
+1F782 ; [*1AD7.0020.0002] # BLACK RIGHT-POINTING ISOSCELES RIGHT TRIANGLE
+1F783 ; [*1AD8.0020.0002] # BLACK DOWN-POINTING ISOSCELES RIGHT TRIANGLE
+1F784 ; [*1AD9.0020.0002] # BLACK SLIGHTLY SMALL CIRCLE
+1F785 ; [*1ADA.0020.0002] # MEDIUM BOLD WHITE CIRCLE
+1F786 ; [*1ADB.0020.0002] # BOLD WHITE CIRCLE
+1F787 ; [*1ADC.0020.0002] # HEAVY WHITE CIRCLE
+1F788 ; [*1ADD.0020.0002] # VERY HEAVY WHITE CIRCLE
+1F789 ; [*1ADE.0020.0002] # EXTREMELY HEAVY WHITE CIRCLE
+1F78A ; [*1ADF.0020.0002] # WHITE CIRCLE CONTAINING BLACK SMALL CIRCLE
+1F78B ; [*1AE0.0020.0002] # ROUND TARGET
+1F78C ; [*1AE1.0020.0002] # BLACK TINY SQUARE
+1F78D ; [*1AE2.0020.0002] # BLACK SLIGHTLY SMALL SQUARE
+1F78E ; [*1AE3.0020.0002] # LIGHT WHITE SQUARE
+1F78F ; [*1AE4.0020.0002] # MEDIUM WHITE SQUARE
+1F790 ; [*1AE5.0020.0002] # BOLD WHITE SQUARE
+1F791 ; [*1AE6.0020.0002] # HEAVY WHITE SQUARE
+1F792 ; [*1AE7.0020.0002] # VERY HEAVY WHITE SQUARE
+1F793 ; [*1AE8.0020.0002] # EXTREMELY HEAVY WHITE SQUARE
+1F794 ; [*1AE9.0020.0002] # WHITE SQUARE CONTAINING BLACK VERY SMALL SQUARE
+1F795 ; [*1AEA.0020.0002] # WHITE SQUARE CONTAINING BLACK MEDIUM SQUARE
+1F796 ; [*1AEB.0020.0002] # SQUARE TARGET
+1F797 ; [*1AEC.0020.0002] # BLACK TINY DIAMOND
+1F798 ; [*1AED.0020.0002] # BLACK VERY SMALL DIAMOND
+1F799 ; [*1AEE.0020.0002] # BLACK MEDIUM SMALL DIAMOND
+1F79A ; [*1AEF.0020.0002] # WHITE DIAMOND CONTAINING BLACK VERY SMALL DIAMOND
+1F79B ; [*1AF0.0020.0002] # WHITE DIAMOND CONTAINING BLACK MEDIUM DIAMOND
+1F79C ; [*1AF1.0020.0002] # DIAMOND TARGET
+1F79D ; [*1AF2.0020.0002] # BLACK TINY LOZENGE
+1F79E ; [*1AF3.0020.0002] # BLACK VERY SMALL LOZENGE
+1F79F ; [*1AF4.0020.0002] # BLACK MEDIUM SMALL LOZENGE
+1F7A0 ; [*1AF5.0020.0002] # WHITE LOZENGE CONTAINING BLACK SMALL LOZENGE
+1F7A1 ; [*1AF6.0020.0002] # THIN GREEK CROSS
+1F7A2 ; [*1AF7.0020.0002] # LIGHT GREEK CROSS
+1F7A3 ; [*1AF8.0020.0002] # MEDIUM GREEK CROSS
+1F7A4 ; [*1AF9.0020.0002] # BOLD GREEK CROSS
+1F7A5 ; [*1AFA.0020.0002] # VERY BOLD GREEK CROSS
+1F7A6 ; [*1AFB.0020.0002] # VERY HEAVY GREEK CROSS
+1F7A7 ; [*1AFC.0020.0002] # EXTREMELY HEAVY GREEK CROSS
+1F7A8 ; [*1AFD.0020.0002] # THIN SALTIRE
+1F7A9 ; [*1AFE.0020.0002] # LIGHT SALTIRE
+1F7AA ; [*1AFF.0020.0002] # MEDIUM SALTIRE
+1F7AB ; [*1B00.0020.0002] # BOLD SALTIRE
+1F7AC ; [*1B01.0020.0002] # HEAVY SALTIRE
+1F7AD ; [*1B02.0020.0002] # VERY HEAVY SALTIRE
+1F7AE ; [*1B03.0020.0002] # EXTREMELY HEAVY SALTIRE
+1F7AF ; [*1B04.0020.0002] # LIGHT FIVE SPOKED ASTERISK
+1F7B0 ; [*1B05.0020.0002] # MEDIUM FIVE SPOKED ASTERISK
+1F7B1 ; [*1B06.0020.0002] # BOLD FIVE SPOKED ASTERISK
+1F7B2 ; [*1B07.0020.0002] # HEAVY FIVE SPOKED ASTERISK
+1F7B3 ; [*1B08.0020.0002] # VERY HEAVY FIVE SPOKED ASTERISK
+1F7B4 ; [*1B09.0020.0002] # EXTREMELY HEAVY FIVE SPOKED ASTERISK
+1F7B5 ; [*1B0A.0020.0002] # LIGHT SIX SPOKED ASTERISK
+1F7B6 ; [*1B0B.0020.0002] # MEDIUM SIX SPOKED ASTERISK
+1F7B7 ; [*1B0C.0020.0002] # BOLD SIX SPOKED ASTERISK
+1F7B8 ; [*1B0D.0020.0002] # HEAVY SIX SPOKED ASTERISK
+1F7B9 ; [*1B0E.0020.0002] # VERY HEAVY SIX SPOKED ASTERISK
+1F7BA ; [*1B0F.0020.0002] # EXTREMELY HEAVY SIX SPOKED ASTERISK
+1F7BB ; [*1B10.0020.0002] # LIGHT EIGHT SPOKED ASTERISK
+1F7BC ; [*1B11.0020.0002] # MEDIUM EIGHT SPOKED ASTERISK
+1F7BD ; [*1B12.0020.0002] # BOLD EIGHT SPOKED ASTERISK
+1F7BE ; [*1B13.0020.0002] # HEAVY EIGHT SPOKED ASTERISK
+1F7BF ; [*1B14.0020.0002] # VERY HEAVY EIGHT SPOKED ASTERISK
+1F7C0 ; [*1B15.0020.0002] # LIGHT THREE POINTED BLACK STAR
+1F7C1 ; [*1B16.0020.0002] # MEDIUM THREE POINTED BLACK STAR
+1F7C2 ; [*1B17.0020.0002] # THREE POINTED BLACK STAR
+1F7C3 ; [*1B18.0020.0002] # MEDIUM THREE POINTED PINWHEEL STAR
+1F7C4 ; [*1B19.0020.0002] # LIGHT FOUR POINTED BLACK STAR
+1F7C5 ; [*1B1A.0020.0002] # MEDIUM FOUR POINTED BLACK STAR
+1F7C6 ; [*1B1B.0020.0002] # FOUR POINTED BLACK STAR
+1F7C7 ; [*1B1C.0020.0002] # MEDIUM FOUR POINTED PINWHEEL STAR
+1F7C8 ; [*1B1D.0020.0002] # REVERSE LIGHT FOUR POINTED PINWHEEL STAR
+1F7C9 ; [*1B1E.0020.0002] # LIGHT FIVE POINTED BLACK STAR
+1F7CA ; [*1B1F.0020.0002] # HEAVY FIVE POINTED BLACK STAR
+1F7CB ; [*1B20.0020.0002] # MEDIUM SIX POINTED BLACK STAR
+1F7CC ; [*1B21.0020.0002] # HEAVY SIX POINTED BLACK STAR
+1F7CD ; [*1B22.0020.0002] # SIX POINTED PINWHEEL STAR
+1F7CE ; [*1B23.0020.0002] # MEDIUM EIGHT POINTED BLACK STAR
+1F7CF ; [*1B24.0020.0002] # HEAVY EIGHT POINTED BLACK STAR
+1F7D0 ; [*1B25.0020.0002] # VERY HEAVY EIGHT POINTED BLACK STAR
+1F7D1 ; [*1B26.0020.0002] # HEAVY EIGHT POINTED PINWHEEL STAR
+1F7D2 ; [*1B27.0020.0002] # LIGHT TWELVE POINTED BLACK STAR
+1F7D3 ; [*1B28.0020.0002] # HEAVY TWELVE POINTED BLACK STAR
+1F7D4 ; [*1B29.0020.0002] # HEAVY TWELVE POINTED PINWHEEL STAR
+1F7D5 ; [*1B2A.0020.0002] # CIRCLED TRIANGLE
+1F7D6 ; [*1B2B.0020.0002] # NEGATIVE CIRCLED TRIANGLE
+1F7D7 ; [*1B2C.0020.0002] # CIRCLED SQUARE
+1F7D8 ; [*1B2D.0020.0002] # NEGATIVE CIRCLED SQUARE
+1F7E0 ; [*1B2E.0020.0002] # LARGE ORANGE CIRCLE
+1F7E1 ; [*1B2F.0020.0002] # LARGE YELLOW CIRCLE
+1F7E2 ; [*1B30.0020.0002] # LARGE GREEN CIRCLE
+1F7E3 ; [*1B31.0020.0002] # LARGE PURPLE CIRCLE
+1F7E4 ; [*1B32.0020.0002] # LARGE BROWN CIRCLE
+1F7E5 ; [*1B33.0020.0002] # LARGE RED SQUARE
+1F7E6 ; [*1B34.0020.0002] # LARGE BLUE SQUARE
+1F7E7 ; [*1B35.0020.0002] # LARGE ORANGE SQUARE
+1F7E8 ; [*1B36.0020.0002] # LARGE YELLOW SQUARE
+1F7E9 ; [*1B37.0020.0002] # LARGE GREEN SQUARE
+1F7EA ; [*1B38.0020.0002] # LARGE PURPLE SQUARE
+1F7EB ; [*1B39.0020.0002] # LARGE BROWN SQUARE
+1F7F0 ; [*1B3A.0020.0002] # HEAVY EQUALS SIGN
+1F800 ; [*1B3B.0020.0002] # LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD
+1F801 ; [*1B3C.0020.0002] # UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD
+1F802 ; [*1B3D.0020.0002] # RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD
+1F803 ; [*1B3E.0020.0002] # DOWNWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD
+1F804 ; [*1B3F.0020.0002] # LEFTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD
+1F805 ; [*1B40.0020.0002] # UPWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD
+1F806 ; [*1B41.0020.0002] # RIGHTWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD
+1F807 ; [*1B42.0020.0002] # DOWNWARDS ARROW WITH MEDIUM TRIANGLE ARROWHEAD
+1F808 ; [*1B43.0020.0002] # LEFTWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
+1F809 ; [*1B44.0020.0002] # UPWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
+1F80A ; [*1B45.0020.0002] # RIGHTWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
+1F80B ; [*1B46.0020.0002] # DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
+1F810 ; [*1B47.0020.0002] # LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD
+1F811 ; [*1B48.0020.0002] # UPWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD
+1F812 ; [*1B49.0020.0002] # RIGHTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD
+1F813 ; [*1B4A.0020.0002] # DOWNWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD
+1F814 ; [*1B4B.0020.0002] # LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD
+1F815 ; [*1B4C.0020.0002] # UPWARDS ARROW WITH EQUILATERAL ARROWHEAD
+1F816 ; [*1B4D.0020.0002] # RIGHTWARDS ARROW WITH EQUILATERAL ARROWHEAD
+1F817 ; [*1B4E.0020.0002] # DOWNWARDS ARROW WITH EQUILATERAL ARROWHEAD
+1F818 ; [*1B4F.0020.0002] # HEAVY LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD
+1F819 ; [*1B50.0020.0002] # HEAVY UPWARDS ARROW WITH EQUILATERAL ARROWHEAD
+1F81A ; [*1B51.0020.0002] # HEAVY RIGHTWARDS ARROW WITH EQUILATERAL ARROWHEAD
+1F81B ; [*1B52.0020.0002] # HEAVY DOWNWARDS ARROW WITH EQUILATERAL ARROWHEAD
+1F81C ; [*1B53.0020.0002] # HEAVY LEFTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD
+1F81D ; [*1B54.0020.0002] # HEAVY UPWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD
+1F81E ; [*1B55.0020.0002] # HEAVY RIGHTWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD
+1F81F ; [*1B56.0020.0002] # HEAVY DOWNWARDS ARROW WITH LARGE EQUILATERAL ARROWHEAD
+1F820 ; [*1B57.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT
+1F821 ; [*1B58.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT
+1F822 ; [*1B59.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT
+1F823 ; [*1B5A.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH NARROW SHAFT
+1F824 ; [*1B5B.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT
+1F825 ; [*1B5C.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT
+1F826 ; [*1B5D.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT
+1F827 ; [*1B5E.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH MEDIUM SHAFT
+1F828 ; [*1B5F.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT
+1F829 ; [*1B60.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT
+1F82A ; [*1B61.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT
+1F82B ; [*1B62.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH BOLD SHAFT
+1F82C ; [*1B63.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT
+1F82D ; [*1B64.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT
+1F82E ; [*1B65.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT
+1F82F ; [*1B66.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH HEAVY SHAFT
+1F830 ; [*1B67.0020.0002] # LEFTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT
+1F831 ; [*1B68.0020.0002] # UPWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT
+1F832 ; [*1B69.0020.0002] # RIGHTWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT
+1F833 ; [*1B6A.0020.0002] # DOWNWARDS TRIANGLE-HEADED ARROW WITH VERY HEAVY SHAFT
+1F834 ; [*1B6B.0020.0002] # LEFTWARDS FINGER-POST ARROW
+1F835 ; [*1B6C.0020.0002] # UPWARDS FINGER-POST ARROW
+1F836 ; [*1B6D.0020.0002] # RIGHTWARDS FINGER-POST ARROW
+1F837 ; [*1B6E.0020.0002] # DOWNWARDS FINGER-POST ARROW
+1F838 ; [*1B6F.0020.0002] # LEFTWARDS SQUARED ARROW
+1F839 ; [*1B70.0020.0002] # UPWARDS SQUARED ARROW
+1F83A ; [*1B71.0020.0002] # RIGHTWARDS SQUARED ARROW
+1F83B ; [*1B72.0020.0002] # DOWNWARDS SQUARED ARROW
+1F83C ; [*1B73.0020.0002] # LEFTWARDS COMPRESSED ARROW
+1F83D ; [*1B74.0020.0002] # UPWARDS COMPRESSED ARROW
+1F83E ; [*1B75.0020.0002] # RIGHTWARDS COMPRESSED ARROW
+1F83F ; [*1B76.0020.0002] # DOWNWARDS COMPRESSED ARROW
+1F840 ; [*1B77.0020.0002] # LEFTWARDS HEAVY COMPRESSED ARROW
+1F841 ; [*1B78.0020.0002] # UPWARDS HEAVY COMPRESSED ARROW
+1F842 ; [*1B79.0020.0002] # RIGHTWARDS HEAVY COMPRESSED ARROW
+1F843 ; [*1B7A.0020.0002] # DOWNWARDS HEAVY COMPRESSED ARROW
+1F844 ; [*1B7B.0020.0002] # LEFTWARDS HEAVY ARROW
+1F845 ; [*1B7C.0020.0002] # UPWARDS HEAVY ARROW
+1F846 ; [*1B7D.0020.0002] # RIGHTWARDS HEAVY ARROW
+1F847 ; [*1B7E.0020.0002] # DOWNWARDS HEAVY ARROW
+1F850 ; [*1B7F.0020.0002] # LEFTWARDS SANS-SERIF ARROW
+1F851 ; [*1B80.0020.0002] # UPWARDS SANS-SERIF ARROW
+1F852 ; [*1B81.0020.0002] # RIGHTWARDS SANS-SERIF ARROW
+1F853 ; [*1B82.0020.0002] # DOWNWARDS SANS-SERIF ARROW
+1F854 ; [*1B83.0020.0002] # NORTH WEST SANS-SERIF ARROW
+1F855 ; [*1B84.0020.0002] # NORTH EAST SANS-SERIF ARROW
+1F856 ; [*1B85.0020.0002] # SOUTH EAST SANS-SERIF ARROW
+1F857 ; [*1B86.0020.0002] # SOUTH WEST SANS-SERIF ARROW
+1F858 ; [*1B87.0020.0002] # LEFT RIGHT SANS-SERIF ARROW
+1F859 ; [*1B88.0020.0002] # UP DOWN SANS-SERIF ARROW
+1F860 ; [*1B89.0020.0002] # WIDE-HEADED LEFTWARDS LIGHT BARB ARROW
+1F861 ; [*1B8A.0020.0002] # WIDE-HEADED UPWARDS LIGHT BARB ARROW
+1F862 ; [*1B8B.0020.0002] # WIDE-HEADED RIGHTWARDS LIGHT BARB ARROW
+1F863 ; [*1B8C.0020.0002] # WIDE-HEADED DOWNWARDS LIGHT BARB ARROW
+1F864 ; [*1B8D.0020.0002] # WIDE-HEADED NORTH WEST LIGHT BARB ARROW
+1F865 ; [*1B8E.0020.0002] # WIDE-HEADED NORTH EAST LIGHT BARB ARROW
+1F866 ; [*1B8F.0020.0002] # WIDE-HEADED SOUTH EAST LIGHT BARB ARROW
+1F867 ; [*1B90.0020.0002] # WIDE-HEADED SOUTH WEST LIGHT BARB ARROW
+1F868 ; [*1B91.0020.0002] # WIDE-HEADED LEFTWARDS BARB ARROW
+1F869 ; [*1B92.0020.0002] # WIDE-HEADED UPWARDS BARB ARROW
+1F86A ; [*1B93.0020.0002] # WIDE-HEADED RIGHTWARDS BARB ARROW
+1F86B ; [*1B94.0020.0002] # WIDE-HEADED DOWNWARDS BARB ARROW
+1F86C ; [*1B95.0020.0002] # WIDE-HEADED NORTH WEST BARB ARROW
+1F86D ; [*1B96.0020.0002] # WIDE-HEADED NORTH EAST BARB ARROW
+1F86E ; [*1B97.0020.0002] # WIDE-HEADED SOUTH EAST BARB ARROW
+1F86F ; [*1B98.0020.0002] # WIDE-HEADED SOUTH WEST BARB ARROW
+1F870 ; [*1B99.0020.0002] # WIDE-HEADED LEFTWARDS MEDIUM BARB ARROW
+1F871 ; [*1B9A.0020.0002] # WIDE-HEADED UPWARDS MEDIUM BARB ARROW
+1F872 ; [*1B9B.0020.0002] # WIDE-HEADED RIGHTWARDS MEDIUM BARB ARROW
+1F873 ; [*1B9C.0020.0002] # WIDE-HEADED DOWNWARDS MEDIUM BARB ARROW
+1F874 ; [*1B9D.0020.0002] # WIDE-HEADED NORTH WEST MEDIUM BARB ARROW
+1F875 ; [*1B9E.0020.0002] # WIDE-HEADED NORTH EAST MEDIUM BARB ARROW
+1F876 ; [*1B9F.0020.0002] # WIDE-HEADED SOUTH EAST MEDIUM BARB ARROW
+1F877 ; [*1BA0.0020.0002] # WIDE-HEADED SOUTH WEST MEDIUM BARB ARROW
+1F878 ; [*1BA1.0020.0002] # WIDE-HEADED LEFTWARDS HEAVY BARB ARROW
+1F879 ; [*1BA2.0020.0002] # WIDE-HEADED UPWARDS HEAVY BARB ARROW
+1F87A ; [*1BA3.0020.0002] # WIDE-HEADED RIGHTWARDS HEAVY BARB ARROW
+1F87B ; [*1BA4.0020.0002] # WIDE-HEADED DOWNWARDS HEAVY BARB ARROW
+1F87C ; [*1BA5.0020.0002] # WIDE-HEADED NORTH WEST HEAVY BARB ARROW
+1F87D ; [*1BA6.0020.0002] # WIDE-HEADED NORTH EAST HEAVY BARB ARROW
+1F87E ; [*1BA7.0020.0002] # WIDE-HEADED SOUTH EAST HEAVY BARB ARROW
+1F87F ; [*1BA8.0020.0002] # WIDE-HEADED SOUTH WEST HEAVY BARB ARROW
+1F880 ; [*1BA9.0020.0002] # WIDE-HEADED LEFTWARDS VERY HEAVY BARB ARROW
+1F881 ; [*1BAA.0020.0002] # WIDE-HEADED UPWARDS VERY HEAVY BARB ARROW
+1F882 ; [*1BAB.0020.0002] # WIDE-HEADED RIGHTWARDS VERY HEAVY BARB ARROW
+1F883 ; [*1BAC.0020.0002] # WIDE-HEADED DOWNWARDS VERY HEAVY BARB ARROW
+1F884 ; [*1BAD.0020.0002] # WIDE-HEADED NORTH WEST VERY HEAVY BARB ARROW
+1F885 ; [*1BAE.0020.0002] # WIDE-HEADED NORTH EAST VERY HEAVY BARB ARROW
+1F886 ; [*1BAF.0020.0002] # WIDE-HEADED SOUTH EAST VERY HEAVY BARB ARROW
+1F887 ; [*1BB0.0020.0002] # WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
+1F890 ; [*1BB1.0020.0002] # LEFTWARDS TRIANGLE ARROWHEAD
+1F891 ; [*1BB2.0020.0002] # UPWARDS TRIANGLE ARROWHEAD
+1F892 ; [*1BB3.0020.0002] # RIGHTWARDS TRIANGLE ARROWHEAD
+1F893 ; [*1BB4.0020.0002] # DOWNWARDS TRIANGLE ARROWHEAD
+1F894 ; [*1BB5.0020.0002] # LEFTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD
+1F895 ; [*1BB6.0020.0002] # UPWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD
+1F896 ; [*1BB7.0020.0002] # RIGHTWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD
+1F897 ; [*1BB8.0020.0002] # DOWNWARDS WHITE ARROW WITHIN TRIANGLE ARROWHEAD
+1F898 ; [*1BB9.0020.0002] # LEFTWARDS ARROW WITH NOTCHED TAIL
+1F899 ; [*1BBA.0020.0002] # UPWARDS ARROW WITH NOTCHED TAIL
+1F89A ; [*1BBB.0020.0002] # RIGHTWARDS ARROW WITH NOTCHED TAIL
+1F89B ; [*1BBC.0020.0002] # DOWNWARDS ARROW WITH NOTCHED TAIL
+1F89C ; [*1BBD.0020.0002] # HEAVY ARROW SHAFT WIDTH ONE
+1F89D ; [*1BBE.0020.0002] # HEAVY ARROW SHAFT WIDTH TWO THIRDS
+1F89E ; [*1BBF.0020.0002] # HEAVY ARROW SHAFT WIDTH ONE HALF
+1F89F ; [*1BC0.0020.0002] # HEAVY ARROW SHAFT WIDTH ONE THIRD
+1F8A0 ; [*1BC1.0020.0002] # LEFTWARDS BOTTOM-SHADED WHITE ARROW
+1F8A1 ; [*1BC2.0020.0002] # RIGHTWARDS BOTTOM SHADED WHITE ARROW
+1F8A2 ; [*1BC3.0020.0002] # LEFTWARDS TOP SHADED WHITE ARROW
+1F8A3 ; [*1BC4.0020.0002] # RIGHTWARDS TOP SHADED WHITE ARROW
+1F8A4 ; [*1BC5.0020.0002] # LEFTWARDS LEFT-SHADED WHITE ARROW
+1F8A5 ; [*1BC6.0020.0002] # RIGHTWARDS RIGHT-SHADED WHITE ARROW
+1F8A6 ; [*1BC7.0020.0002] # LEFTWARDS RIGHT-SHADED WHITE ARROW
+1F8A7 ; [*1BC8.0020.0002] # RIGHTWARDS LEFT-SHADED WHITE ARROW
+1F8A8 ; [*1BC9.0020.0002] # LEFTWARDS BACK-TILTED SHADOWED WHITE ARROW
+1F8A9 ; [*1BCA.0020.0002] # RIGHTWARDS BACK-TILTED SHADOWED WHITE ARROW
+1F8AA ; [*1BCB.0020.0002] # LEFTWARDS FRONT-TILTED SHADOWED WHITE ARROW
+1F8AB ; [*1BCC.0020.0002] # RIGHTWARDS FRONT-TILTED SHADOWED WHITE ARROW
+1F8AC ; [*1BCD.0020.0002] # WHITE ARROW SHAFT WIDTH ONE
+1F8AD ; [*1BCE.0020.0002] # WHITE ARROW SHAFT WIDTH TWO THIRDS
+1F8B0 ; [*1BCF.0020.0002] # ARROW POINTING UPWARDS THEN NORTH WEST
+1F8B1 ; [*1BD0.0020.0002] # ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
+1F900 ; [*1814.0020.0002] # CIRCLED CROSS FORMEE WITH FOUR DOTS
+1F901 ; [*1815.0020.0002] # CIRCLED CROSS FORMEE WITH TWO DOTS
+1F902 ; [*1816.0020.0002] # CIRCLED CROSS FORMEE
+1F903 ; [*1817.0020.0002] # LEFT HALF CIRCLE WITH FOUR DOTS
+1F904 ; [*1818.0020.0002] # LEFT HALF CIRCLE WITH THREE DOTS
+1F905 ; [*1819.0020.0002] # LEFT HALF CIRCLE WITH TWO DOTS
+1F906 ; [*181A.0020.0002] # LEFT HALF CIRCLE WITH DOT
+1F907 ; [*181B.0020.0002] # LEFT HALF CIRCLE
+1F908 ; [*181C.0020.0002] # DOWNWARD FACING HOOK
+1F909 ; [*181D.0020.0002] # DOWNWARD FACING NOTCHED HOOK
+1F90A ; [*181E.0020.0002] # DOWNWARD FACING HOOK WITH DOT
+1F90B ; [*181F.0020.0002] # DOWNWARD FACING NOTCHED HOOK WITH DOT
+1F90C ; [*1820.0020.0002] # PINCHED FINGERS
+1F90D ; [*1821.0020.0002] # WHITE HEART
+1F90E ; [*1822.0020.0002] # BROWN HEART
+1F90F ; [*1823.0020.0002] # PINCHING HAND
+1F910 ; [*1824.0020.0002] # ZIPPER-MOUTH FACE
+1F911 ; [*1825.0020.0002] # MONEY-MOUTH FACE
+1F912 ; [*1826.0020.0002] # FACE WITH THERMOMETER
+1F913 ; [*1827.0020.0002] # NERD FACE
+1F914 ; [*1828.0020.0002] # THINKING FACE
+1F915 ; [*1829.0020.0002] # FACE WITH HEAD-BANDAGE
+1F916 ; [*182A.0020.0002] # ROBOT FACE
+1F917 ; [*182B.0020.0002] # HUGGING FACE
+1F918 ; [*182C.0020.0002] # SIGN OF THE HORNS
+1F919 ; [*182D.0020.0002] # CALL ME HAND
+1F91A ; [*182E.0020.0002] # RAISED BACK OF HAND
+1F91B ; [*182F.0020.0002] # LEFT-FACING FIST
+1F91C ; [*1830.0020.0002] # RIGHT-FACING FIST
+1F91D ; [*1831.0020.0002] # HANDSHAKE
+1F91E ; [*1832.0020.0002] # HAND WITH INDEX AND MIDDLE FINGERS CROSSED
+1F91F ; [*1833.0020.0002] # I LOVE YOU HAND SIGN
+1F920 ; [*1834.0020.0002] # FACE WITH COWBOY HAT
+1F921 ; [*1835.0020.0002] # CLOWN FACE
+1F922 ; [*1836.0020.0002] # NAUSEATED FACE
+1F923 ; [*1837.0020.0002] # ROLLING ON THE FLOOR LAUGHING
+1F924 ; [*1838.0020.0002] # DROOLING FACE
+1F925 ; [*1839.0020.0002] # LYING FACE
+1F926 ; [*183A.0020.0002] # FACE PALM
+1F927 ; [*183B.0020.0002] # SNEEZING FACE
+1F928 ; [*183C.0020.0002] # FACE WITH ONE EYEBROW RAISED
+1F929 ; [*183D.0020.0002] # GRINNING FACE WITH STAR EYES
+1F92A ; [*183E.0020.0002] # GRINNING FACE WITH ONE LARGE AND ONE SMALL EYE
+1F92B ; [*183F.0020.0002] # FACE WITH FINGER COVERING CLOSED LIPS
+1F92C ; [*1840.0020.0002] # SERIOUS FACE WITH SYMBOLS COVERING MOUTH
+1F92D ; [*1841.0020.0002] # SMILING FACE WITH SMILING EYES AND HAND COVERING MOUTH
+1F92E ; [*1842.0020.0002] # FACE WITH OPEN MOUTH VOMITING
+1F92F ; [*1843.0020.0002] # SHOCKED FACE WITH EXPLODING HEAD
+1F930 ; [*1844.0020.0002] # PREGNANT WOMAN
+1F931 ; [*1845.0020.0002] # BREAST-FEEDING
+1F932 ; [*1846.0020.0002] # PALMS UP TOGETHER
+1F933 ; [*1847.0020.0002] # SELFIE
+1F934 ; [*1848.0020.0002] # PRINCE
+1F935 ; [*1849.0020.0002] # MAN IN TUXEDO
+1F936 ; [*184A.0020.0002] # MOTHER CHRISTMAS
+1F937 ; [*184B.0020.0002] # SHRUG
+1F938 ; [*184C.0020.0002] # PERSON DOING CARTWHEEL
+1F939 ; [*184D.0020.0002] # JUGGLING
+1F93A ; [*184E.0020.0002] # FENCER
+1F93B ; [*184F.0020.0002] # MODERN PENTATHLON
+1F93C ; [*1850.0020.0002] # WRESTLERS
+1F93D ; [*1851.0020.0002] # WATER POLO
+1F93E ; [*1852.0020.0002] # HANDBALL
+1F93F ; [*1853.0020.0002] # DIVING MASK
+1F940 ; [*1854.0020.0002] # WILTED FLOWER
+1F941 ; [*1855.0020.0002] # DRUM WITH DRUMSTICKS
+1F942 ; [*1856.0020.0002] # CLINKING GLASSES
+1F943 ; [*1857.0020.0002] # TUMBLER GLASS
+1F944 ; [*1858.0020.0002] # SPOON
+1F945 ; [*1859.0020.0002] # GOAL NET
+1F946 ; [*185A.0020.0002] # RIFLE
+1F947 ; [*185B.0020.0002] # FIRST PLACE MEDAL
+1F948 ; [*185C.0020.0002] # SECOND PLACE MEDAL
+1F949 ; [*185D.0020.0002] # THIRD PLACE MEDAL
+1F94A ; [*185E.0020.0002] # BOXING GLOVE
+1F94B ; [*185F.0020.0002] # MARTIAL ARTS UNIFORM
+1F94C ; [*1860.0020.0002] # CURLING STONE
+1F94D ; [*1861.0020.0002] # LACROSSE STICK AND BALL
+1F94E ; [*1862.0020.0002] # SOFTBALL
+1F94F ; [*1863.0020.0002] # FLYING DISC
+1F950 ; [*1864.0020.0002] # CROISSANT
+1F951 ; [*1865.0020.0002] # AVOCADO
+1F952 ; [*1866.0020.0002] # CUCUMBER
+1F953 ; [*1867.0020.0002] # BACON
+1F954 ; [*1868.0020.0002] # POTATO
+1F955 ; [*1869.0020.0002] # CARROT
+1F956 ; [*186A.0020.0002] # BAGUETTE BREAD
+1F957 ; [*186B.0020.0002] # GREEN SALAD
+1F958 ; [*186C.0020.0002] # SHALLOW PAN OF FOOD
+1F959 ; [*186D.0020.0002] # STUFFED FLATBREAD
+1F95A ; [*186E.0020.0002] # EGG
+1F95B ; [*186F.0020.0002] # GLASS OF MILK
+1F95C ; [*1870.0020.0002] # PEANUTS
+1F95D ; [*1871.0020.0002] # KIWIFRUIT
+1F95E ; [*1872.0020.0002] # PANCAKES
+1F95F ; [*1873.0020.0002] # DUMPLING
+1F960 ; [*1874.0020.0002] # FORTUNE COOKIE
+1F961 ; [*1875.0020.0002] # TAKEOUT BOX
+1F962 ; [*1876.0020.0002] # CHOPSTICKS
+1F963 ; [*1877.0020.0002] # BOWL WITH SPOON
+1F964 ; [*1878.0020.0002] # CUP WITH STRAW
+1F965 ; [*1879.0020.0002] # COCONUT
+1F966 ; [*187A.0020.0002] # BROCCOLI
+1F967 ; [*187B.0020.0002] # PIE
+1F968 ; [*187C.0020.0002] # PRETZEL
+1F969 ; [*187D.0020.0002] # CUT OF MEAT
+1F96A ; [*187E.0020.0002] # SANDWICH
+1F96B ; [*187F.0020.0002] # CANNED FOOD
+1F96C ; [*1880.0020.0002] # LEAFY GREEN
+1F96D ; [*1881.0020.0002] # MANGO
+1F96E ; [*1882.0020.0002] # MOON CAKE
+1F96F ; [*1883.0020.0002] # BAGEL
+1F970 ; [*1884.0020.0002] # SMILING FACE WITH SMILING EYES AND THREE HEARTS
+1F971 ; [*1885.0020.0002] # YAWNING FACE
+1F972 ; [*1886.0020.0002] # SMILING FACE WITH TEAR
+1F973 ; [*1887.0020.0002] # FACE WITH PARTY HORN AND PARTY HAT
+1F974 ; [*1888.0020.0002] # FACE WITH UNEVEN EYES AND WAVY MOUTH
+1F975 ; [*1889.0020.0002] # OVERHEATED FACE
+1F976 ; [*188A.0020.0002] # FREEZING FACE
+1F977 ; [*188B.0020.0002] # NINJA
+1F978 ; [*188C.0020.0002] # DISGUISED FACE
+1F979 ; [*188D.0020.0002] # FACE HOLDING BACK TEARS
+1F97A ; [*188E.0020.0002] # FACE WITH PLEADING EYES
+1F97B ; [*188F.0020.0002] # SARI
+1F97C ; [*1890.0020.0002] # LAB COAT
+1F97D ; [*1891.0020.0002] # GOGGLES
+1F97E ; [*1892.0020.0002] # HIKING BOOT
+1F97F ; [*1893.0020.0002] # FLAT SHOE
+1F980 ; [*1894.0020.0002] # CRAB
+1F981 ; [*1895.0020.0002] # LION FACE
+1F982 ; [*1896.0020.0002] # SCORPION
+1F983 ; [*1897.0020.0002] # TURKEY
+1F984 ; [*1898.0020.0002] # UNICORN FACE
+1F985 ; [*1899.0020.0002] # EAGLE
+1F986 ; [*189A.0020.0002] # DUCK
+1F987 ; [*189B.0020.0002] # BAT
+1F988 ; [*189C.0020.0002] # SHARK
+1F989 ; [*189D.0020.0002] # OWL
+1F98A ; [*189E.0020.0002] # FOX FACE
+1F98B ; [*189F.0020.0002] # BUTTERFLY
+1F98C ; [*18A0.0020.0002] # DEER
+1F98D ; [*18A1.0020.0002] # GORILLA
+1F98E ; [*18A2.0020.0002] # LIZARD
+1F98F ; [*18A3.0020.0002] # RHINOCEROS
+1F990 ; [*18A4.0020.0002] # SHRIMP
+1F991 ; [*18A5.0020.0002] # SQUID
+1F992 ; [*18A6.0020.0002] # GIRAFFE FACE
+1F993 ; [*18A7.0020.0002] # ZEBRA FACE
+1F994 ; [*18A8.0020.0002] # HEDGEHOG
+1F995 ; [*18A9.0020.0002] # SAUROPOD
+1F996 ; [*18AA.0020.0002] # T-REX
+1F997 ; [*18AB.0020.0002] # CRICKET
+1F998 ; [*18AC.0020.0002] # KANGAROO
+1F999 ; [*18AD.0020.0002] # LLAMA
+1F99A ; [*18AE.0020.0002] # PEACOCK
+1F99B ; [*18AF.0020.0002] # HIPPOPOTAMUS
+1F99C ; [*18B0.0020.0002] # PARROT
+1F99D ; [*18B1.0020.0002] # RACCOON
+1F99E ; [*18B2.0020.0002] # LOBSTER
+1F99F ; [*18B3.0020.0002] # MOSQUITO
+1F9A0 ; [*18B4.0020.0002] # MICROBE
+1F9A1 ; [*18B5.0020.0002] # BADGER
+1F9A2 ; [*18B6.0020.0002] # SWAN
+1F9A3 ; [*18B7.0020.0002] # MAMMOTH
+1F9A4 ; [*18B8.0020.0002] # DODO
+1F9A5 ; [*18B9.0020.0002] # SLOTH
+1F9A6 ; [*18BA.0020.0002] # OTTER
+1F9A7 ; [*18BB.0020.0002] # ORANGUTAN
+1F9A8 ; [*18BC.0020.0002] # SKUNK
+1F9A9 ; [*18BD.0020.0002] # FLAMINGO
+1F9AA ; [*18BE.0020.0002] # OYSTER
+1F9AB ; [*18BF.0020.0002] # BEAVER
+1F9AC ; [*18C0.0020.0002] # BISON
+1F9AD ; [*18C1.0020.0002] # SEAL
+1F9AE ; [*18C2.0020.0002] # GUIDE DOG
+1F9AF ; [*18C3.0020.0002] # PROBING CANE
+1F9B0 ; [*18C4.0020.0002] # EMOJI COMPONENT RED HAIR
+1F9B1 ; [*18C5.0020.0002] # EMOJI COMPONENT CURLY HAIR
+1F9B2 ; [*18C6.0020.0002] # EMOJI COMPONENT BALD
+1F9B3 ; [*18C7.0020.0002] # EMOJI COMPONENT WHITE HAIR
+1F9B4 ; [*18C8.0020.0002] # BONE
+1F9B5 ; [*18C9.0020.0002] # LEG
+1F9B6 ; [*18CA.0020.0002] # FOOT
+1F9B7 ; [*18CB.0020.0002] # TOOTH
+1F9B8 ; [*18CC.0020.0002] # SUPERHERO
+1F9B9 ; [*18CD.0020.0002] # SUPERVILLAIN
+1F9BA ; [*18CE.0020.0002] # SAFETY VEST
+1F9BB ; [*18CF.0020.0002] # EAR WITH HEARING AID
+1F9BC ; [*18D0.0020.0002] # MOTORIZED WHEELCHAIR
+1F9BD ; [*18D1.0020.0002] # MANUAL WHEELCHAIR
+1F9BE ; [*18D2.0020.0002] # MECHANICAL ARM
+1F9BF ; [*18D3.0020.0002] # MECHANICAL LEG
+1F9C0 ; [*18D4.0020.0002] # CHEESE WEDGE
+1F9C1 ; [*18D5.0020.0002] # CUPCAKE
+1F9C2 ; [*18D6.0020.0002] # SALT SHAKER
+1F9C3 ; [*18D7.0020.0002] # BEVERAGE BOX
+1F9C4 ; [*18D8.0020.0002] # GARLIC
+1F9C5 ; [*18D9.0020.0002] # ONION
+1F9C6 ; [*18DA.0020.0002] # FALAFEL
+1F9C7 ; [*18DB.0020.0002] # WAFFLE
+1F9C8 ; [*18DC.0020.0002] # BUTTER
+1F9C9 ; [*18DD.0020.0002] # MATE DRINK
+1F9CA ; [*18DE.0020.0002] # ICE CUBE
+1F9CB ; [*18DF.0020.0002] # BUBBLE TEA
+1F9CC ; [*18E0.0020.0002] # TROLL
+1F9CD ; [*18E1.0020.0002] # STANDING PERSON
+1F9CE ; [*18E2.0020.0002] # KNEELING PERSON
+1F9CF ; [*18E3.0020.0002] # DEAF PERSON
+1F9D0 ; [*18E4.0020.0002] # FACE WITH MONOCLE
+1F9D1 ; [*18E5.0020.0002] # ADULT
+1F9D2 ; [*18E6.0020.0002] # CHILD
+1F9D3 ; [*18E7.0020.0002] # OLDER ADULT
+1F9D4 ; [*18E8.0020.0002] # BEARDED PERSON
+1F9D5 ; [*18E9.0020.0002] # PERSON WITH HEADSCARF
+1F9D6 ; [*18EA.0020.0002] # PERSON IN STEAMY ROOM
+1F9D7 ; [*18EB.0020.0002] # PERSON CLIMBING
+1F9D8 ; [*18EC.0020.0002] # PERSON IN LOTUS POSITION
+1F9D9 ; [*18ED.0020.0002] # MAGE
+1F9DA ; [*18EE.0020.0002] # FAIRY
+1F9DB ; [*18EF.0020.0002] # VAMPIRE
+1F9DC ; [*18F0.0020.0002] # MERPERSON
+1F9DD ; [*18F1.0020.0002] # ELF
+1F9DE ; [*18F2.0020.0002] # GENIE
+1F9DF ; [*18F3.0020.0002] # ZOMBIE
+1F9E0 ; [*18F4.0020.0002] # BRAIN
+1F9E1 ; [*18F5.0020.0002] # ORANGE HEART
+1F9E2 ; [*18F6.0020.0002] # BILLED CAP
+1F9E3 ; [*18F7.0020.0002] # SCARF
+1F9E4 ; [*18F8.0020.0002] # GLOVES
+1F9E5 ; [*18F9.0020.0002] # COAT
+1F9E6 ; [*18FA.0020.0002] # SOCKS
+1F9E7 ; [*18FB.0020.0002] # RED GIFT ENVELOPE
+1F9E8 ; [*18FC.0020.0002] # FIRECRACKER
+1F9E9 ; [*18FD.0020.0002] # JIGSAW PUZZLE PIECE
+1F9EA ; [*18FE.0020.0002] # TEST TUBE
+1F9EB ; [*18FF.0020.0002] # PETRI DISH
+1F9EC ; [*1900.0020.0002] # DNA DOUBLE HELIX
+1F9ED ; [*1901.0020.0002] # COMPASS
+1F9EE ; [*1902.0020.0002] # ABACUS
+1F9EF ; [*1903.0020.0002] # FIRE EXTINGUISHER
+1F9F0 ; [*1904.0020.0002] # TOOLBOX
+1F9F1 ; [*1905.0020.0002] # BRICK
+1F9F2 ; [*1906.0020.0002] # MAGNET
+1F9F3 ; [*1907.0020.0002] # LUGGAGE
+1F9F4 ; [*1908.0020.0002] # LOTION BOTTLE
+1F9F5 ; [*1909.0020.0002] # SPOOL OF THREAD
+1F9F6 ; [*190A.0020.0002] # BALL OF YARN
+1F9F7 ; [*190B.0020.0002] # SAFETY PIN
+1F9F8 ; [*190C.0020.0002] # TEDDY BEAR
+1F9F9 ; [*190D.0020.0002] # BROOM
+1F9FA ; [*190E.0020.0002] # BASKET
+1F9FB ; [*190F.0020.0002] # ROLL OF PAPER
+1F9FC ; [*1910.0020.0002] # BAR OF SOAP
+1F9FD ; [*1911.0020.0002] # SPONGE
+1F9FE ; [*1912.0020.0002] # RECEIPT
+1F9FF ; [*1913.0020.0002] # NAZAR AMULET
+1FA00 ; [*14A6.0020.0002] # NEUTRAL CHESS KING
+1FA01 ; [*14A7.0020.0002] # NEUTRAL CHESS QUEEN
+1FA02 ; [*14A8.0020.0002] # NEUTRAL CHESS ROOK
+1FA03 ; [*14A9.0020.0002] # NEUTRAL CHESS BISHOP
+1FA04 ; [*14AA.0020.0002] # NEUTRAL CHESS KNIGHT
+1FA05 ; [*14AB.0020.0002] # NEUTRAL CHESS PAWN
+1FA06 ; [*14AC.0020.0002] # WHITE CHESS KNIGHT ROTATED FORTY-FIVE DEGREES
+1FA07 ; [*14AD.0020.0002] # BLACK CHESS KNIGHT ROTATED FORTY-FIVE DEGREES
+1FA08 ; [*14AE.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED FORTY-FIVE DEGREES
+1FA09 ; [*14AF.0020.0002] # WHITE CHESS KING ROTATED NINETY DEGREES
+1FA0A ; [*14B0.0020.0002] # WHITE CHESS QUEEN ROTATED NINETY DEGREES
+1FA0B ; [*14B1.0020.0002] # WHITE CHESS ROOK ROTATED NINETY DEGREES
+1FA0C ; [*14B2.0020.0002] # WHITE CHESS BISHOP ROTATED NINETY DEGREES
+1FA0D ; [*14B3.0020.0002] # WHITE CHESS KNIGHT ROTATED NINETY DEGREES
+1FA0E ; [*14B4.0020.0002] # WHITE CHESS PAWN ROTATED NINETY DEGREES
+1FA0F ; [*14B5.0020.0002] # BLACK CHESS KING ROTATED NINETY DEGREES
+1FA10 ; [*14B6.0020.0002] # BLACK CHESS QUEEN ROTATED NINETY DEGREES
+1FA11 ; [*14B7.0020.0002] # BLACK CHESS ROOK ROTATED NINETY DEGREES
+1FA12 ; [*14B8.0020.0002] # BLACK CHESS BISHOP ROTATED NINETY DEGREES
+1FA13 ; [*14B9.0020.0002] # BLACK CHESS KNIGHT ROTATED NINETY DEGREES
+1FA14 ; [*14BA.0020.0002] # BLACK CHESS PAWN ROTATED NINETY DEGREES
+1FA15 ; [*14BB.0020.0002] # NEUTRAL CHESS KING ROTATED NINETY DEGREES
+1FA16 ; [*14BC.0020.0002] # NEUTRAL CHESS QUEEN ROTATED NINETY DEGREES
+1FA17 ; [*14BD.0020.0002] # NEUTRAL CHESS ROOK ROTATED NINETY DEGREES
+1FA18 ; [*14BE.0020.0002] # NEUTRAL CHESS BISHOP ROTATED NINETY DEGREES
+1FA19 ; [*14BF.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED NINETY DEGREES
+1FA1A ; [*14C0.0020.0002] # NEUTRAL CHESS PAWN ROTATED NINETY DEGREES
+1FA1B ; [*14C1.0020.0002] # WHITE CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES
+1FA1C ; [*14C2.0020.0002] # BLACK CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES
+1FA1D ; [*14C3.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED ONE HUNDRED THIRTY-FIVE DEGREES
+1FA1E ; [*14C4.0020.0002] # WHITE CHESS TURNED KING
+1FA1F ; [*14C5.0020.0002] # WHITE CHESS TURNED QUEEN
+1FA20 ; [*14C6.0020.0002] # WHITE CHESS TURNED ROOK
+1FA21 ; [*14C7.0020.0002] # WHITE CHESS TURNED BISHOP
+1FA22 ; [*14C8.0020.0002] # WHITE CHESS TURNED KNIGHT
+1FA23 ; [*14C9.0020.0002] # WHITE CHESS TURNED PAWN
+1FA24 ; [*14CA.0020.0002] # BLACK CHESS TURNED KING
+1FA25 ; [*14CB.0020.0002] # BLACK CHESS TURNED QUEEN
+1FA26 ; [*14CC.0020.0002] # BLACK CHESS TURNED ROOK
+1FA27 ; [*14CD.0020.0002] # BLACK CHESS TURNED BISHOP
+1FA28 ; [*14CE.0020.0002] # BLACK CHESS TURNED KNIGHT
+1FA29 ; [*14CF.0020.0002] # BLACK CHESS TURNED PAWN
+1FA2A ; [*14D0.0020.0002] # NEUTRAL CHESS TURNED KING
+1FA2B ; [*14D1.0020.0002] # NEUTRAL CHESS TURNED QUEEN
+1FA2C ; [*14D2.0020.0002] # NEUTRAL CHESS TURNED ROOK
+1FA2D ; [*14D3.0020.0002] # NEUTRAL CHESS TURNED BISHOP
+1FA2E ; [*14D4.0020.0002] # NEUTRAL CHESS TURNED KNIGHT
+1FA2F ; [*14D5.0020.0002] # NEUTRAL CHESS TURNED PAWN
+1FA30 ; [*14D6.0020.0002] # WHITE CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES
+1FA31 ; [*14D7.0020.0002] # BLACK CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES
+1FA32 ; [*14D8.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED TWO HUNDRED TWENTY-FIVE DEGREES
+1FA33 ; [*14D9.0020.0002] # WHITE CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA34 ; [*14DA.0020.0002] # WHITE CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA35 ; [*14DB.0020.0002] # WHITE CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA36 ; [*14DC.0020.0002] # WHITE CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA37 ; [*14DD.0020.0002] # WHITE CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA38 ; [*14DE.0020.0002] # WHITE CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA39 ; [*14DF.0020.0002] # BLACK CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA3A ; [*14E0.0020.0002] # BLACK CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA3B ; [*14E1.0020.0002] # BLACK CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA3C ; [*14E2.0020.0002] # BLACK CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA3D ; [*14E3.0020.0002] # BLACK CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA3E ; [*14E4.0020.0002] # BLACK CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA3F ; [*14E5.0020.0002] # NEUTRAL CHESS KING ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA40 ; [*14E6.0020.0002] # NEUTRAL CHESS QUEEN ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA41 ; [*14E7.0020.0002] # NEUTRAL CHESS ROOK ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA42 ; [*14E8.0020.0002] # NEUTRAL CHESS BISHOP ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA43 ; [*14E9.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA44 ; [*14EA.0020.0002] # NEUTRAL CHESS PAWN ROTATED TWO HUNDRED SEVENTY DEGREES
+1FA45 ; [*14EB.0020.0002] # WHITE CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES
+1FA46 ; [*14EC.0020.0002] # BLACK CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES
+1FA47 ; [*14ED.0020.0002] # NEUTRAL CHESS KNIGHT ROTATED THREE HUNDRED FIFTEEN DEGREES
+1FA48 ; [*14EE.0020.0002] # WHITE CHESS EQUIHOPPER
+1FA49 ; [*14EF.0020.0002] # BLACK CHESS EQUIHOPPER
+1FA4A ; [*14F0.0020.0002] # NEUTRAL CHESS EQUIHOPPER
+1FA4B ; [*14F1.0020.0002] # WHITE CHESS EQUIHOPPER ROTATED NINETY DEGREES
+1FA4C ; [*14F2.0020.0002] # BLACK CHESS EQUIHOPPER ROTATED NINETY DEGREES
+1FA4D ; [*14F3.0020.0002] # NEUTRAL CHESS EQUIHOPPER ROTATED NINETY DEGREES
+1FA4E ; [*14F4.0020.0002] # WHITE CHESS KNIGHT-QUEEN
+1FA4F ; [*14F5.0020.0002] # WHITE CHESS KNIGHT-ROOK
+1FA50 ; [*14F6.0020.0002] # WHITE CHESS KNIGHT-BISHOP
+1FA51 ; [*14F7.0020.0002] # BLACK CHESS KNIGHT-QUEEN
+1FA52 ; [*14F8.0020.0002] # BLACK CHESS KNIGHT-ROOK
+1FA53 ; [*14F9.0020.0002] # BLACK CHESS KNIGHT-BISHOP
+1FA60 ; [*14FA.0020.0002] # XIANGQI RED GENERAL
+1FA61 ; [*14FB.0020.0002] # XIANGQI RED MANDARIN
+1FA62 ; [*14FC.0020.0002] # XIANGQI RED ELEPHANT
+1FA63 ; [*14FD.0020.0002] # XIANGQI RED HORSE
+1FA64 ; [*14FE.0020.0002] # XIANGQI RED CHARIOT
+1FA65 ; [*14FF.0020.0002] # XIANGQI RED CANNON
+1FA66 ; [*1500.0020.0002] # XIANGQI RED SOLDIER
+1FA67 ; [*1501.0020.0002] # XIANGQI BLACK GENERAL
+1FA68 ; [*1502.0020.0002] # XIANGQI BLACK MANDARIN
+1FA69 ; [*1503.0020.0002] # XIANGQI BLACK ELEPHANT
+1FA6A ; [*1504.0020.0002] # XIANGQI BLACK HORSE
+1FA6B ; [*1505.0020.0002] # XIANGQI BLACK CHARIOT
+1FA6C ; [*1506.0020.0002] # XIANGQI BLACK CANNON
+1FA6D ; [*1507.0020.0002] # XIANGQI BLACK SOLDIER
+1FA70 ; [*1914.0020.0002] # BALLET SHOES
+1FA71 ; [*1915.0020.0002] # ONE-PIECE SWIMSUIT
+1FA72 ; [*1916.0020.0002] # BRIEFS
+1FA73 ; [*1917.0020.0002] # SHORTS
+1FA74 ; [*1918.0020.0002] # THONG SANDAL
+1FA78 ; [*1919.0020.0002] # DROP OF BLOOD
+1FA79 ; [*191A.0020.0002] # ADHESIVE BANDAGE
+1FA7A ; [*191B.0020.0002] # STETHOSCOPE
+1FA7B ; [*191C.0020.0002] # X-RAY
+1FA7C ; [*191D.0020.0002] # CRUTCH
+1FA80 ; [*191E.0020.0002] # YO-YO
+1FA81 ; [*191F.0020.0002] # KITE
+1FA82 ; [*1920.0020.0002] # PARACHUTE
+1FA83 ; [*1921.0020.0002] # BOOMERANG
+1FA84 ; [*1922.0020.0002] # MAGIC WAND
+1FA85 ; [*1923.0020.0002] # PINATA
+1FA86 ; [*1924.0020.0002] # NESTING DOLLS
+1FA90 ; [*1925.0020.0002] # RINGED PLANET
+1FA91 ; [*1926.0020.0002] # CHAIR
+1FA92 ; [*1927.0020.0002] # RAZOR
+1FA93 ; [*1928.0020.0002] # AXE
+1FA94 ; [*1929.0020.0002] # DIYA LAMP
+1FA95 ; [*192A.0020.0002] # BANJO
+1FA96 ; [*192B.0020.0002] # MILITARY HELMET
+1FA97 ; [*192C.0020.0002] # ACCORDION
+1FA98 ; [*192D.0020.0002] # LONG DRUM
+1FA99 ; [*192E.0020.0002] # COIN
+1FA9A ; [*192F.0020.0002] # CARPENTRY SAW
+1FA9B ; [*1930.0020.0002] # SCREWDRIVER
+1FA9C ; [*1931.0020.0002] # LADDER
+1FA9D ; [*1932.0020.0002] # HOOK
+1FA9E ; [*1933.0020.0002] # MIRROR
+1FA9F ; [*1934.0020.0002] # WINDOW
+1FAA0 ; [*1935.0020.0002] # PLUNGER
+1FAA1 ; [*1936.0020.0002] # SEWING NEEDLE
+1FAA2 ; [*1937.0020.0002] # KNOT
+1FAA3 ; [*1938.0020.0002] # BUCKET
+1FAA4 ; [*1939.0020.0002] # MOUSE TRAP
+1FAA5 ; [*193A.0020.0002] # TOOTHBRUSH
+1FAA6 ; [*193B.0020.0002] # HEADSTONE
+1FAA7 ; [*193C.0020.0002] # PLACARD
+1FAA8 ; [*193D.0020.0002] # ROCK
+1FAA9 ; [*193E.0020.0002] # MIRROR BALL
+1FAAA ; [*193F.0020.0002] # IDENTIFICATION CARD
+1FAAB ; [*1940.0020.0002] # LOW BATTERY
+1FAAC ; [*1941.0020.0002] # HAMSA
+1FAB0 ; [*1942.0020.0002] # FLY
+1FAB1 ; [*1943.0020.0002] # WORM
+1FAB2 ; [*1944.0020.0002] # BEETLE
+1FAB3 ; [*1945.0020.0002] # COCKROACH
+1FAB4 ; [*1946.0020.0002] # POTTED PLANT
+1FAB5 ; [*1947.0020.0002] # WOOD
+1FAB6 ; [*1948.0020.0002] # FEATHER
+1FAB7 ; [*1949.0020.0002] # LOTUS
+1FAB8 ; [*194A.0020.0002] # CORAL
+1FAB9 ; [*194B.0020.0002] # EMPTY NEST
+1FABA ; [*194C.0020.0002] # NEST WITH EGGS
+1FAC0 ; [*194D.0020.0002] # ANATOMICAL HEART
+1FAC1 ; [*194E.0020.0002] # LUNGS
+1FAC2 ; [*194F.0020.0002] # PEOPLE HUGGING
+1FAC3 ; [*1950.0020.0002] # PREGNANT MAN
+1FAC4 ; [*1951.0020.0002] # PREGNANT PERSON
+1FAC5 ; [*1952.0020.0002] # PERSON WITH CROWN
+1FAD0 ; [*1953.0020.0002] # BLUEBERRIES
+1FAD1 ; [*1954.0020.0002] # BELL PEPPER
+1FAD2 ; [*1955.0020.0002] # OLIVE
+1FAD3 ; [*1956.0020.0002] # FLATBREAD
+1FAD4 ; [*1957.0020.0002] # TAMALE
+1FAD5 ; [*1958.0020.0002] # FONDUE
+1FAD6 ; [*1959.0020.0002] # TEAPOT
+1FAD7 ; [*195A.0020.0002] # POURING LIQUID
+1FAD8 ; [*195B.0020.0002] # BEANS
+1FAD9 ; [*195C.0020.0002] # JAR
+1FAE0 ; [*195D.0020.0002] # MELTING FACE
+1FAE1 ; [*195E.0020.0002] # SALUTING FACE
+1FAE2 ; [*195F.0020.0002] # FACE WITH OPEN EYES AND HAND OVER MOUTH
+1FAE3 ; [*1960.0020.0002] # FACE WITH PEEKING EYE
+1FAE4 ; [*1961.0020.0002] # FACE WITH DIAGONAL MOUTH
+1FAE5 ; [*1962.0020.0002] # DOTTED LINE FACE
+1FAE6 ; [*1963.0020.0002] # BITING LIP
+1FAE7 ; [*1964.0020.0002] # BUBBLES
+1FAF0 ; [*1965.0020.0002] # HAND WITH INDEX FINGER AND THUMB CROSSED
+1FAF1 ; [*1966.0020.0002] # RIGHTWARDS HAND
+1FAF2 ; [*1967.0020.0002] # LEFTWARDS HAND
+1FAF3 ; [*1968.0020.0002] # PALM DOWN HAND
+1FAF4 ; [*1969.0020.0002] # PALM UP HAND
+1FAF5 ; [*196A.0020.0002] # INDEX POINTING AT THE VIEWER
+1FAF6 ; [*196B.0020.0002] # HEART HANDS
+1FB00 ; [*09A0.0020.0002] # BLOCK SEXTANT-1
+1FB01 ; [*09A1.0020.0002] # BLOCK SEXTANT-2
+1FB02 ; [*09A2.0020.0002] # BLOCK SEXTANT-12
+1FB03 ; [*09A3.0020.0002] # BLOCK SEXTANT-3
+1FB04 ; [*09A4.0020.0002] # BLOCK SEXTANT-13
+1FB05 ; [*09A5.0020.0002] # BLOCK SEXTANT-23
+1FB06 ; [*09A6.0020.0002] # BLOCK SEXTANT-123
+1FB07 ; [*09A7.0020.0002] # BLOCK SEXTANT-4
+1FB08 ; [*09A8.0020.0002] # BLOCK SEXTANT-14
+1FB09 ; [*09A9.0020.0002] # BLOCK SEXTANT-24
+1FB0A ; [*09AA.0020.0002] # BLOCK SEXTANT-124
+1FB0B ; [*09AB.0020.0002] # BLOCK SEXTANT-34
+1FB0C ; [*09AC.0020.0002] # BLOCK SEXTANT-134
+1FB0D ; [*09AD.0020.0002] # BLOCK SEXTANT-234
+1FB0E ; [*09AE.0020.0002] # BLOCK SEXTANT-1234
+1FB0F ; [*09AF.0020.0002] # BLOCK SEXTANT-5
+1FB10 ; [*09B0.0020.0002] # BLOCK SEXTANT-15
+1FB11 ; [*09B1.0020.0002] # BLOCK SEXTANT-25
+1FB12 ; [*09B2.0020.0002] # BLOCK SEXTANT-125
+1FB13 ; [*09B3.0020.0002] # BLOCK SEXTANT-35
+1FB14 ; [*09B4.0020.0002] # BLOCK SEXTANT-235
+1FB15 ; [*09B5.0020.0002] # BLOCK SEXTANT-1235
+1FB16 ; [*09B6.0020.0002] # BLOCK SEXTANT-45
+1FB17 ; [*09B7.0020.0002] # BLOCK SEXTANT-145
+1FB18 ; [*09B8.0020.0002] # BLOCK SEXTANT-245
+1FB19 ; [*09B9.0020.0002] # BLOCK SEXTANT-1245
+1FB1A ; [*09BA.0020.0002] # BLOCK SEXTANT-345
+1FB1B ; [*09BB.0020.0002] # BLOCK SEXTANT-1345
+1FB1C ; [*09BC.0020.0002] # BLOCK SEXTANT-2345
+1FB1D ; [*09BD.0020.0002] # BLOCK SEXTANT-12345
+1FB1E ; [*09BE.0020.0002] # BLOCK SEXTANT-6
+1FB1F ; [*09BF.0020.0002] # BLOCK SEXTANT-16
+1FB20 ; [*09C0.0020.0002] # BLOCK SEXTANT-26
+1FB21 ; [*09C1.0020.0002] # BLOCK SEXTANT-126
+1FB22 ; [*09C2.0020.0002] # BLOCK SEXTANT-36
+1FB23 ; [*09C3.0020.0002] # BLOCK SEXTANT-136
+1FB24 ; [*09C4.0020.0002] # BLOCK SEXTANT-236
+1FB25 ; [*09C5.0020.0002] # BLOCK SEXTANT-1236
+1FB26 ; [*09C6.0020.0002] # BLOCK SEXTANT-46
+1FB27 ; [*09C7.0020.0002] # BLOCK SEXTANT-146
+1FB28 ; [*09C8.0020.0002] # BLOCK SEXTANT-1246
+1FB29 ; [*09C9.0020.0002] # BLOCK SEXTANT-346
+1FB2A ; [*09CA.0020.0002] # BLOCK SEXTANT-1346
+1FB2B ; [*09CB.0020.0002] # BLOCK SEXTANT-2346
+1FB2C ; [*09CC.0020.0002] # BLOCK SEXTANT-12346
+1FB2D ; [*09CD.0020.0002] # BLOCK SEXTANT-56
+1FB2E ; [*09CE.0020.0002] # BLOCK SEXTANT-156
+1FB2F ; [*09CF.0020.0002] # BLOCK SEXTANT-256
+1FB30 ; [*09D0.0020.0002] # BLOCK SEXTANT-1256
+1FB31 ; [*09D1.0020.0002] # BLOCK SEXTANT-356
+1FB32 ; [*09D2.0020.0002] # BLOCK SEXTANT-1356
+1FB33 ; [*09D3.0020.0002] # BLOCK SEXTANT-2356
+1FB34 ; [*09D4.0020.0002] # BLOCK SEXTANT-12356
+1FB35 ; [*09D5.0020.0002] # BLOCK SEXTANT-456
+1FB36 ; [*09D6.0020.0002] # BLOCK SEXTANT-1456
+1FB37 ; [*09D7.0020.0002] # BLOCK SEXTANT-2456
+1FB38 ; [*09D8.0020.0002] # BLOCK SEXTANT-12456
+1FB39 ; [*09D9.0020.0002] # BLOCK SEXTANT-3456
+1FB3A ; [*09DA.0020.0002] # BLOCK SEXTANT-13456
+1FB3B ; [*09DB.0020.0002] # BLOCK SEXTANT-23456
+1FB3C ; [*09DC.0020.0002] # LOWER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER CENTRE
+1FB3D ; [*09DD.0020.0002] # LOWER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER RIGHT
+1FB3E ; [*09DE.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER CENTRE
+1FB3F ; [*09DF.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER RIGHT
+1FB40 ; [*09E0.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO LOWER CENTRE
+1FB41 ; [*09E1.0020.0002] # LOWER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER CENTRE
+1FB42 ; [*09E2.0020.0002] # LOWER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER RIGHT
+1FB43 ; [*09E3.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER CENTRE
+1FB44 ; [*09E4.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER RIGHT
+1FB45 ; [*09E5.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO UPPER CENTRE
+1FB46 ; [*09E6.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER MIDDLE RIGHT
+1FB47 ; [*09E7.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO LOWER MIDDLE RIGHT
+1FB48 ; [*09E8.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO LOWER MIDDLE RIGHT
+1FB49 ; [*09E9.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO UPPER MIDDLE RIGHT
+1FB4A ; [*09EA.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER LEFT TO UPPER MIDDLE RIGHT
+1FB4B ; [*09EB.0020.0002] # LOWER RIGHT BLOCK DIAGONAL LOWER CENTRE TO UPPER RIGHT
+1FB4C ; [*09EC.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO UPPER MIDDLE RIGHT
+1FB4D ; [*09ED.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO UPPER MIDDLE RIGHT
+1FB4E ; [*09EE.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO LOWER MIDDLE RIGHT
+1FB4F ; [*09EF.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER LEFT TO LOWER MIDDLE RIGHT
+1FB50 ; [*09F0.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER CENTRE TO LOWER RIGHT
+1FB51 ; [*09F1.0020.0002] # LOWER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER MIDDLE RIGHT
+1FB52 ; [*09F2.0020.0002] # UPPER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER CENTRE
+1FB53 ; [*09F3.0020.0002] # UPPER RIGHT BLOCK DIAGONAL LOWER MIDDLE LEFT TO LOWER RIGHT
+1FB54 ; [*09F4.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER CENTRE
+1FB55 ; [*09F5.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER RIGHT
+1FB56 ; [*09F6.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO LOWER CENTRE
+1FB57 ; [*09F7.0020.0002] # UPPER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER CENTRE
+1FB58 ; [*09F8.0020.0002] # UPPER LEFT BLOCK DIAGONAL UPPER MIDDLE LEFT TO UPPER RIGHT
+1FB59 ; [*09F9.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER CENTRE
+1FB5A ; [*09FA.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER RIGHT
+1FB5B ; [*09FB.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO UPPER CENTRE
+1FB5C ; [*09FC.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER MIDDLE LEFT TO UPPER MIDDLE RIGHT
+1FB5D ; [*09FD.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO LOWER MIDDLE RIGHT
+1FB5E ; [*09FE.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO LOWER MIDDLE RIGHT
+1FB5F ; [*09FF.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO UPPER MIDDLE RIGHT
+1FB60 ; [*0A00.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER LEFT TO UPPER MIDDLE RIGHT
+1FB61 ; [*0A01.0020.0002] # UPPER LEFT BLOCK DIAGONAL LOWER CENTRE TO UPPER RIGHT
+1FB62 ; [*0A02.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO UPPER MIDDLE RIGHT
+1FB63 ; [*0A03.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO UPPER MIDDLE RIGHT
+1FB64 ; [*0A04.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO LOWER MIDDLE RIGHT
+1FB65 ; [*0A05.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER LEFT TO LOWER MIDDLE RIGHT
+1FB66 ; [*0A06.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER CENTRE TO LOWER RIGHT
+1FB67 ; [*0A07.0020.0002] # UPPER RIGHT BLOCK DIAGONAL UPPER MIDDLE LEFT TO LOWER MIDDLE RIGHT
+1FB68 ; [*0A08.0020.0002] # UPPER AND RIGHT AND LOWER TRIANGULAR THREE QUARTERS BLOCK
+1FB69 ; [*0A09.0020.0002] # LEFT AND LOWER AND RIGHT TRIANGULAR THREE QUARTERS BLOCK
+1FB6A ; [*0A0A.0020.0002] # UPPER AND LEFT AND LOWER TRIANGULAR THREE QUARTERS BLOCK
+1FB6B ; [*0A0B.0020.0002] # LEFT AND UPPER AND RIGHT TRIANGULAR THREE QUARTERS BLOCK
+1FB6C ; [*0A0C.0020.0002] # LEFT TRIANGULAR ONE QUARTER BLOCK
+1FB6D ; [*0A0D.0020.0002] # UPPER TRIANGULAR ONE QUARTER BLOCK
+1FB6E ; [*0A0E.0020.0002] # RIGHT TRIANGULAR ONE QUARTER BLOCK
+1FB6F ; [*0A0F.0020.0002] # LOWER TRIANGULAR ONE QUARTER BLOCK
+1FB70 ; [*0A10.0020.0002] # VERTICAL ONE EIGHTH BLOCK-2
+1FB71 ; [*0A11.0020.0002] # VERTICAL ONE EIGHTH BLOCK-3
+1FB72 ; [*0A12.0020.0002] # VERTICAL ONE EIGHTH BLOCK-4
+1FB73 ; [*0A13.0020.0002] # VERTICAL ONE EIGHTH BLOCK-5
+1FB74 ; [*0A14.0020.0002] # VERTICAL ONE EIGHTH BLOCK-6
+1FB75 ; [*0A15.0020.0002] # VERTICAL ONE EIGHTH BLOCK-7
+1FB76 ; [*0A16.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-2
+1FB77 ; [*0A17.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-3
+1FB78 ; [*0A18.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-4
+1FB79 ; [*0A19.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-5
+1FB7A ; [*0A1A.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-6
+1FB7B ; [*0A1B.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-7
+1FB7C ; [*0A1C.0020.0002] # LEFT AND LOWER ONE EIGHTH BLOCK
+1FB7D ; [*0A1D.0020.0002] # LEFT AND UPPER ONE EIGHTH BLOCK
+1FB7E ; [*0A1E.0020.0002] # RIGHT AND UPPER ONE EIGHTH BLOCK
+1FB7F ; [*0A1F.0020.0002] # RIGHT AND LOWER ONE EIGHTH BLOCK
+1FB80 ; [*0A20.0020.0002] # UPPER AND LOWER ONE EIGHTH BLOCK
+1FB81 ; [*0A21.0020.0002] # HORIZONTAL ONE EIGHTH BLOCK-1358
+1FB82 ; [*0A22.0020.0002] # UPPER ONE QUARTER BLOCK
+1FB83 ; [*0A23.0020.0002] # UPPER THREE EIGHTHS BLOCK
+1FB84 ; [*0A24.0020.0002] # UPPER FIVE EIGHTHS BLOCK
+1FB85 ; [*0A25.0020.0002] # UPPER THREE QUARTERS BLOCK
+1FB86 ; [*0A26.0020.0002] # UPPER SEVEN EIGHTHS BLOCK
+1FB87 ; [*0A27.0020.0002] # RIGHT ONE QUARTER BLOCK
+1FB88 ; [*0A28.0020.0002] # RIGHT THREE EIGHTHS BLOCK
+1FB89 ; [*0A29.0020.0002] # RIGHT FIVE EIGHTHS BLOCK
+1FB8A ; [*0A2A.0020.0002] # RIGHT THREE QUARTERS BLOCK
+1FB8B ; [*0A2B.0020.0002] # RIGHT SEVEN EIGHTHS BLOCK
+1FB8C ; [*0A2C.0020.0002] # LEFT HALF MEDIUM SHADE
+1FB8D ; [*0A2D.0020.0002] # RIGHT HALF MEDIUM SHADE
+1FB8E ; [*0A2E.0020.0002] # UPPER HALF MEDIUM SHADE
+1FB8F ; [*0A2F.0020.0002] # LOWER HALF MEDIUM SHADE
+1FB90 ; [*0A30.0020.0002] # INVERSE MEDIUM SHADE
+1FB91 ; [*0A31.0020.0002] # UPPER HALF BLOCK AND LOWER HALF INVERSE MEDIUM SHADE
+1FB92 ; [*0A32.0020.0002] # UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
+1FB94 ; [*0A33.0020.0002] # LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK
+1FB95 ; [*0A34.0020.0002] # CHECKER BOARD FILL
+1FB96 ; [*0A35.0020.0002] # INVERSE CHECKER BOARD FILL
+1FB97 ; [*0A36.0020.0002] # HEAVY HORIZONTAL FILL
+1FB98 ; [*0A37.0020.0002] # UPPER LEFT TO LOWER RIGHT FILL
+1FB99 ; [*0A38.0020.0002] # UPPER RIGHT TO LOWER LEFT FILL
+1FB9A ; [*0A39.0020.0002] # UPPER AND LOWER TRIANGULAR HALF BLOCK
+1FB9B ; [*0A3A.0020.0002] # LEFT AND RIGHT TRIANGULAR HALF BLOCK
+1FB9C ; [*0A3B.0020.0002] # UPPER LEFT TRIANGULAR MEDIUM SHADE
+1FB9D ; [*0A3C.0020.0002] # UPPER RIGHT TRIANGULAR MEDIUM SHADE
+1FB9E ; [*0A3D.0020.0002] # LOWER RIGHT TRIANGULAR MEDIUM SHADE
+1FB9F ; [*0A3E.0020.0002] # LOWER LEFT TRIANGULAR MEDIUM SHADE
+1FBA0 ; [*0A3F.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT
+1FBA1 ; [*0A40.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT
+1FBA2 ; [*0A41.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER CENTRE
+1FBA3 ; [*0A42.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER CENTRE
+1FBA4 ; [*0A43.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE
+1FBA5 ; [*0A44.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE
+1FBA6 ; [*0A45.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO LOWER CENTRE TO MIDDLE RIGHT
+1FBA7 ; [*0A46.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO UPPER CENTRE TO MIDDLE RIGHT
+1FBA8 ; [*0A47.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT AND MIDDLE RIGHT TO LOWER CENTRE
+1FBA9 ; [*0A48.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT AND MIDDLE LEFT TO LOWER CENTRE
+1FBAA ; [*0A49.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE TO MIDDLE LEFT
+1FBAB ; [*0A4A.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE TO MIDDLE RIGHT
+1FBAC ; [*0A4B.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE LEFT TO UPPER CENTRE TO MIDDLE RIGHT TO LOWER CENTRE
+1FBAD ; [*0A4C.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO UPPER CENTRE TO MIDDLE LEFT TO LOWER CENTRE
+1FBAE ; [*0A4D.0020.0002] # BOX DRAWINGS LIGHT DIAGONAL DIAMOND
+1FBAF ; [*0A4E.0020.0002] # BOX DRAWINGS LIGHT HORIZONTAL WITH VERTICAL STROKE
+1FBB0 ; [*0A4F.0020.0002] # ARROWHEAD-SHAPED POINTER
+1FBB1 ; [*0A50.0020.0002] # INVERSE CHECK MARK
+1FBB2 ; [*0A51.0020.0002] # LEFT HALF RUNNING MAN
+1FBB3 ; [*0A52.0020.0002] # RIGHT HALF RUNNING MAN
+1FBB4 ; [*0A53.0020.0002] # INVERSE DOWNWARDS ARROW WITH TIP LEFTWARDS
+1FBB5 ; [*0A54.0020.0002] # LEFTWARDS ARROW AND UPPER AND LOWER ONE EIGHTH BLOCK
+1FBB6 ; [*0A55.0020.0002] # RIGHTWARDS ARROW AND UPPER AND LOWER ONE EIGHTH BLOCK
+1FBB7 ; [*0A56.0020.0002] # DOWNWARDS ARROW AND RIGHT ONE EIGHTH BLOCK
+1FBB8 ; [*0A57.0020.0002] # UPWARDS ARROW AND RIGHT ONE EIGHTH BLOCK
+1FBB9 ; [*0A58.0020.0002] # LEFT HALF FOLDER
+1FBBA ; [*0A59.0020.0002] # RIGHT HALF FOLDER
+1FBBB ; [*0A5A.0020.0002] # VOIDED GREEK CROSS
+1FBBC ; [*0A5B.0020.0002] # RIGHT OPEN SQUARED DOT
+1FBBD ; [*0A5C.0020.0002] # NEGATIVE DIAGONAL CROSS
+1FBBE ; [*0A5D.0020.0002] # NEGATIVE DIAGONAL MIDDLE RIGHT TO LOWER CENTRE
+1FBBF ; [*0A5E.0020.0002] # NEGATIVE DIAGONAL DIAMOND
+1FBC0 ; [*0A5F.0020.0002] # WHITE HEAVY SALTIRE WITH ROUNDED CORNERS
+1FBC1 ; [*0A60.0020.0002] # LEFT THIRD WHITE RIGHT POINTING INDEX
+1FBC2 ; [*0A61.0020.0002] # MIDDLE THIRD WHITE RIGHT POINTING INDEX
+1FBC3 ; [*0A62.0020.0002] # RIGHT THIRD WHITE RIGHT POINTING INDEX
+1FBC4 ; [*0A63.0020.0002] # NEGATIVE SQUARED QUESTION MARK
+1FBC5 ; [*0A64.0020.0002] # STICK FIGURE
+1FBC6 ; [*0A65.0020.0002] # STICK FIGURE WITH ARMS RAISED
+1FBC7 ; [*0A66.0020.0002] # STICK FIGURE LEANING LEFT
+1FBC8 ; [*0A67.0020.0002] # STICK FIGURE LEANING RIGHT
+1FBC9 ; [*0A68.0020.0002] # STICK FIGURE WITH DRESS
+1FBCA ; [*0A69.0020.0002] # WHITE UP-POINTING CHEVRON
+0332 ; [.0000.0021.0002] # COMBINING LOW LINE
+0313 ; [.0000.0022.0002] # COMBINING COMMA ABOVE
+0343 ; [.0000.0022.0002] # COMBINING GREEK KORONIS
+0486 ; [.0000.0022.0002] # COMBINING CYRILLIC PSILI PNEUMATA
+2CF1 ; [.0000.0022.0002] # COPTIC COMBINING SPIRITUS LENIS
+0314 ; [.0000.0023.0002] # COMBINING REVERSED COMMA ABOVE
+0485 ; [.0000.0023.0002] # COMBINING CYRILLIC DASIA PNEUMATA
+2CF0 ; [.0000.0023.0002] # COPTIC COMBINING SPIRITUS ASPER
+0301 ; [.0000.0024.0002] # COMBINING ACUTE ACCENT
+0341 ; [.0000.0024.0002] # COMBINING ACUTE TONE MARK
+0954 ; [.0000.0024.0002] # DEVANAGARI ACUTE ACCENT
+0300 ; [.0000.0025.0002] # COMBINING GRAVE ACCENT
+0340 ; [.0000.0025.0002] # COMBINING GRAVE TONE MARK
+0953 ; [.0000.0025.0002] # DEVANAGARI GRAVE ACCENT
+0306 ; [.0000.0026.0002] # COMBINING BREVE
+0302 ; [.0000.0027.0002] # COMBINING CIRCUMFLEX ACCENT
+030C ; [.0000.0028.0002] # COMBINING CARON
+030A ; [.0000.0029.0002] # COMBINING RING ABOVE
+0342 ; [.0000.002A.0002] # COMBINING GREEK PERISPOMENI
+0308 ; [.0000.002B.0002] # COMBINING DIAERESIS
+0344 ; [.0000.002B.0002][.0000.0024.0002] # COMBINING GREEK DIALYTIKA TONOS
+030B ; [.0000.002C.0002] # COMBINING DOUBLE ACUTE ACCENT
+0303 ; [.0000.002D.0002] # COMBINING TILDE
+0307 ; [.0000.002E.0002] # COMBINING DOT ABOVE
+0338 ; [.0000.002F.0002] # COMBINING LONG SOLIDUS OVERLAY
+0327 ; [.0000.0030.0002] # COMBINING CEDILLA
+0328 ; [.0000.0031.0002] # COMBINING OGONEK
+0304 ; [.0000.0032.0002] # COMBINING MACRON
+030D ; [.0000.0033.0002] # COMBINING VERTICAL LINE ABOVE
+030E ; [.0000.0033.0002] # COMBINING DOUBLE VERTICAL LINE ABOVE
+0312 ; [.0000.0033.0002] # COMBINING TURNED COMMA ABOVE
+0315 ; [.0000.0033.0002] # COMBINING COMMA ABOVE RIGHT
+031A ; [.0000.0033.0002] # COMBINING LEFT ANGLE ABOVE
+033D ; [.0000.0033.0002] # COMBINING X ABOVE
+033E ; [.0000.0033.0002] # COMBINING VERTICAL TILDE
+033F ; [.0000.0033.0002] # COMBINING DOUBLE OVERLINE
+0346 ; [.0000.0033.0002] # COMBINING BRIDGE ABOVE
+034A ; [.0000.0033.0002] # COMBINING NOT TILDE ABOVE
+034B ; [.0000.0033.0002] # COMBINING HOMOTHETIC ABOVE
+034C ; [.0000.0033.0002] # COMBINING ALMOST EQUAL TO ABOVE
+0350 ; [.0000.0033.0002] # COMBINING RIGHT ARROWHEAD ABOVE
+0351 ; [.0000.0033.0002] # COMBINING LEFT HALF RING ABOVE
+0352 ; [.0000.0033.0002] # COMBINING FERMATA
+0357 ; [.0000.0033.0002] # COMBINING RIGHT HALF RING ABOVE
+035B ; [.0000.0033.0002] # COMBINING ZIGZAG ABOVE
+035D ; [.0000.0033.0002] # COMBINING DOUBLE BREVE
+035E ; [.0000.0033.0002] # COMBINING DOUBLE MACRON
+0484 ; [.0000.0033.0002] # COMBINING CYRILLIC PALATALIZATION
+0487 ; [.0000.0033.0002] # COMBINING CYRILLIC POKRYTIE
+0741 ; [.0000.0033.0002] # SYRIAC QUSHSHAYA
+0745 ; [.0000.0033.0002] # SYRIAC THREE DOTS ABOVE
+0B55 ; [.0000.0033.0002] # ORIYA SIGN OVERLINE
+17CB ; [.0000.0033.0002] # KHMER SIGN BANTOC
+17CC ; [.0000.0033.0002] # KHMER SIGN ROBAT
+17CD ; [.0000.0033.0002] # KHMER SIGN TOANDAKHIAT
+17CE ; [.0000.0033.0002] # KHMER SIGN KAKABAT
+17CF ; [.0000.0033.0002] # KHMER SIGN AHSDA
+17D0 ; [.0000.0033.0002] # KHMER SIGN SAMYOK SANNYA
+17D1 ; [.0000.0033.0002] # KHMER SIGN VIRIAM
+17DD ; [.0000.0033.0002] # KHMER SIGN ATTHACAN
+1AB0 ; [.0000.0033.0002] # COMBINING DOUBLED CIRCUMFLEX ACCENT
+1AB1 ; [.0000.0033.0002] # COMBINING DIAERESIS-RING
+1AB2 ; [.0000.0033.0002] # COMBINING INFINITY
+1AB3 ; [.0000.0033.0002] # COMBINING DOWNWARDS ARROW
+1AB4 ; [.0000.0033.0002] # COMBINING TRIPLE DOT
+1ABB ; [.0000.0033.0002] # COMBINING PARENTHESES ABOVE
+1ABC ; [.0000.0033.0002] # COMBINING DOUBLE PARENTHESES ABOVE
+1AC1 ; [.0000.0033.0002] # COMBINING LEFT PARENTHESIS ABOVE LEFT
+1AC2 ; [.0000.0033.0002] # COMBINING RIGHT PARENTHESIS ABOVE RIGHT
+1AC5 ; [.0000.0033.0002] # COMBINING SQUARE BRACKETS ABOVE
+1AC6 ; [.0000.0033.0002] # COMBINING NUMBER SIGN ABOVE
+1AC7 ; [.0000.0033.0002] # COMBINING INVERTED DOUBLE ARCH ABOVE
+1AC8 ; [.0000.0033.0002] # COMBINING PLUS SIGN ABOVE
+1AC9 ; [.0000.0033.0002] # COMBINING DOUBLE PLUS SIGN ABOVE
+1ACB ; [.0000.0033.0002] # COMBINING TRIPLE ACUTE ACCENT
+1DC0 ; [.0000.0033.0002] # COMBINING DOTTED GRAVE ACCENT
+1DC1 ; [.0000.0033.0002] # COMBINING DOTTED ACUTE ACCENT
+1DC3 ; [.0000.0033.0002] # COMBINING SUSPENSION MARK
+1DC4 ; [.0000.0033.0002] # COMBINING MACRON-ACUTE
+1DC5 ; [.0000.0033.0002] # COMBINING GRAVE-MACRON
+1DC6 ; [.0000.0033.0002] # COMBINING MACRON-GRAVE
+1DC7 ; [.0000.0033.0002] # COMBINING ACUTE-MACRON
+1DC8 ; [.0000.0033.0002] # COMBINING GRAVE-ACUTE-GRAVE
+1DC9 ; [.0000.0033.0002] # COMBINING ACUTE-GRAVE-ACUTE
+1DCB ; [.0000.0033.0002] # COMBINING BREVE-MACRON
+1DCC ; [.0000.0033.0002] # COMBINING MACRON-BREVE
+1DCD ; [.0000.0033.0002] # COMBINING DOUBLE CIRCUMFLEX ABOVE
+1DCE ; [.0000.0033.0002] # COMBINING OGONEK ABOVE
+1DD1 ; [.0000.0033.0002] # COMBINING UR ABOVE
+1DF5 ; [.0000.0033.0002] # COMBINING UP TACK ABOVE
+1DF6 ; [.0000.0033.0002] # COMBINING KAVYKA ABOVE RIGHT
+1DF7 ; [.0000.0033.0002] # COMBINING KAVYKA ABOVE LEFT
+1DF8 ; [.0000.0033.0002] # COMBINING DOT ABOVE LEFT
+1DFB ; [.0000.0033.0002] # COMBINING DELETION MARK
+1DFE ; [.0000.0033.0002] # COMBINING LEFT ARROWHEAD ABOVE
+20F0 ; [.0000.0033.0002] # COMBINING ASTERISK ABOVE
+2CEF ; [.0000.0033.0002] # COPTIC COMBINING NI ABOVE
+A67C ; [.0000.0033.0002] # COMBINING CYRILLIC KAVYKA
+A67D ; [.0000.0033.0002] # COMBINING CYRILLIC PAYEROK
+10AE5 ; [.0000.0033.0002] # MANICHAEAN ABBREVIATION MARK ABOVE
+10D24 ; [.0000.0033.0002] # HANIFI ROHINGYA SIGN HARBAHAY
+10D25 ; [.0000.0033.0002] # HANIFI ROHINGYA SIGN TAHALA
+10D26 ; [.0000.0033.0002] # HANIFI ROHINGYA SIGN TANA
+10D27 ; [.0000.0033.0002] # HANIFI ROHINGYA SIGN TASSI
+10F48 ; [.0000.0033.0002] # SOGDIAN COMBINING DOT ABOVE
+10F49 ; [.0000.0033.0002] # SOGDIAN COMBINING TWO DOTS ABOVE
+10F4A ; [.0000.0033.0002] # SOGDIAN COMBINING CURVE ABOVE
+10F4C ; [.0000.0033.0002] # SOGDIAN COMBINING HOOK ABOVE
+10F82 ; [.0000.0033.0002] # OLD UYGHUR COMBINING DOT ABOVE
+10F84 ; [.0000.0033.0002] # OLD UYGHUR COMBINING TWO DOTS ABOVE
+1BC9D ; [.0000.0033.0002] # DUPLOYAN THICK LETTER SELECTOR
+1E2AE ; [.0000.0033.0002] # TOTO SIGN RISING TONE
+0316 ; [.0000.0034.0002] # COMBINING GRAVE ACCENT BELOW
+0317 ; [.0000.0034.0002] # COMBINING ACUTE ACCENT BELOW
+0318 ; [.0000.0034.0002] # COMBINING LEFT TACK BELOW
+0319 ; [.0000.0034.0002] # COMBINING RIGHT TACK BELOW
+031C ; [.0000.0034.0002] # COMBINING LEFT HALF RING BELOW
+031D ; [.0000.0034.0002] # COMBINING UP TACK BELOW
+031E ; [.0000.0034.0002] # COMBINING DOWN TACK BELOW
+031F ; [.0000.0034.0002] # COMBINING PLUS SIGN BELOW
+0320 ; [.0000.0034.0002] # COMBINING MINUS SIGN BELOW
+0329 ; [.0000.0034.0002] # COMBINING VERTICAL LINE BELOW
+032A ; [.0000.0034.0002] # COMBINING BRIDGE BELOW
+032B ; [.0000.0034.0002] # COMBINING INVERTED DOUBLE ARCH BELOW
+032C ; [.0000.0034.0002] # COMBINING CARON BELOW
+032F ; [.0000.0034.0002] # COMBINING INVERTED BREVE BELOW
+0333 ; [.0000.0034.0002] # COMBINING DOUBLE LOW LINE
+033A ; [.0000.0034.0002] # COMBINING INVERTED BRIDGE BELOW
+033B ; [.0000.0034.0002] # COMBINING SQUARE BELOW
+033C ; [.0000.0034.0002] # COMBINING SEAGULL BELOW
+0347 ; [.0000.0034.0002] # COMBINING EQUALS SIGN BELOW
+0348 ; [.0000.0034.0002] # COMBINING DOUBLE VERTICAL LINE BELOW
+0349 ; [.0000.0034.0002] # COMBINING LEFT ANGLE BELOW
+034D ; [.0000.0034.0002] # COMBINING LEFT RIGHT ARROW BELOW
+034E ; [.0000.0034.0002] # COMBINING UPWARDS ARROW BELOW
+0353 ; [.0000.0034.0002] # COMBINING X BELOW
+0354 ; [.0000.0034.0002] # COMBINING LEFT ARROWHEAD BELOW
+0355 ; [.0000.0034.0002] # COMBINING RIGHT ARROWHEAD BELOW
+0356 ; [.0000.0034.0002] # COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW
+0359 ; [.0000.0034.0002] # COMBINING ASTERISK BELOW
+035A ; [.0000.0034.0002] # COMBINING DOUBLE RING BELOW
+035C ; [.0000.0034.0002] # COMBINING DOUBLE BREVE BELOW
+035F ; [.0000.0034.0002] # COMBINING DOUBLE MACRON BELOW
+0362 ; [.0000.0034.0002] # COMBINING DOUBLE RIGHTWARDS ARROW BELOW
+0742 ; [.0000.0034.0002] # SYRIAC RUKKAKHA
+0746 ; [.0000.0034.0002] # SYRIAC THREE DOTS BELOW
+07FD ; [.0000.0034.0002] # NKO DANTAYALAN
+0859 ; [.0000.0034.0002] # MANDAIC AFFRICATION MARK
+085A ; [.0000.0034.0002] # MANDAIC VOCALIZATION MARK
+085B ; [.0000.0034.0002] # MANDAIC GEMINATION MARK
+1AB5 ; [.0000.0034.0002] # COMBINING X-X BELOW
+1AB6 ; [.0000.0034.0002] # COMBINING WIGGLY LINE BELOW
+1AB7 ; [.0000.0034.0002] # COMBINING OPEN MARK BELOW
+1AB8 ; [.0000.0034.0002] # COMBINING DOUBLE OPEN MARK BELOW
+1AB9 ; [.0000.0034.0002] # COMBINING LIGHT CENTRALIZATION STROKE BELOW
+1ABA ; [.0000.0034.0002] # COMBINING STRONG CENTRALIZATION STROKE BELOW
+1ABD ; [.0000.0034.0002] # COMBINING PARENTHESES BELOW
+1AC3 ; [.0000.0034.0002] # COMBINING LEFT PARENTHESIS BELOW LEFT
+1AC4 ; [.0000.0034.0002] # COMBINING RIGHT PARENTHESIS BELOW RIGHT
+1ACA ; [.0000.0034.0002] # COMBINING DOUBLE PLUS SIGN BELOW
+1DC2 ; [.0000.0034.0002] # COMBINING SNAKE BELOW
+1DCF ; [.0000.0034.0002] # COMBINING ZIGZAG BELOW
+1DD0 ; [.0000.0034.0002] # COMBINING IS BELOW
+1DF9 ; [.0000.0034.0002] # COMBINING WIDE INVERTED BRIDGE BELOW
+1DFA ; [.0000.0034.0002] # COMBINING DOT BELOW LEFT
+1DFC ; [.0000.0034.0002] # COMBINING DOUBLE INVERTED BREVE BELOW
+1DFD ; [.0000.0034.0002] # COMBINING ALMOST EQUAL TO BELOW
+1DFF ; [.0000.0034.0002] # COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+20EC ; [.0000.0034.0002] # COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS
+20ED ; [.0000.0034.0002] # COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS
+20EE ; [.0000.0034.0002] # COMBINING LEFT ARROW BELOW
+20EF ; [.0000.0034.0002] # COMBINING RIGHT ARROW BELOW
+FE27 ; [.0000.0034.0002] # COMBINING LIGATURE LEFT HALF BELOW
+10A0D ; [.0000.0034.0002] # KHAROSHTHI SIGN DOUBLE RING BELOW
+10AE6 ; [.0000.0034.0002] # MANICHAEAN ABBREVIATION MARK BELOW
+10F46 ; [.0000.0034.0002] # SOGDIAN COMBINING DOT BELOW
+10F47 ; [.0000.0034.0002] # SOGDIAN COMBINING TWO DOTS BELOW
+10F4B ; [.0000.0034.0002] # SOGDIAN COMBINING CURVE BELOW
+10F4D ; [.0000.0034.0002] # SOGDIAN COMBINING HOOK BELOW
+10F4E ; [.0000.0034.0002] # SOGDIAN COMBINING LONG HOOK BELOW
+10F4F ; [.0000.0034.0002] # SOGDIAN COMBINING RESH BELOW
+10F50 ; [.0000.0034.0002] # SOGDIAN COMBINING STROKE BELOW
+10F83 ; [.0000.0034.0002] # OLD UYGHUR COMBINING DOT BELOW
+10F85 ; [.0000.0034.0002] # OLD UYGHUR COMBINING TWO DOTS BELOW
+0336 ; [.0000.0035.0002] # COMBINING LONG STROKE OVERLAY
+0337 ; [.0000.0035.0002] # COMBINING SHORT SOLIDUS OVERLAY
+20D8 ; [.0000.0035.0002] # COMBINING RING OVERLAY
+20D9 ; [.0000.0035.0002] # COMBINING CLOCKWISE RING OVERLAY
+20DA ; [.0000.0035.0002] # COMBINING ANTICLOCKWISE RING OVERLAY
+20E5 ; [.0000.0035.0002] # COMBINING REVERSE SOLIDUS OVERLAY
+20EA ; [.0000.0035.0002] # COMBINING LEFTWARDS ARROW OVERLAY
+20EB ; [.0000.0035.0002] # COMBINING LONG DOUBLE SOLIDUS OVERLAY
+1BC9E ; [.0000.0035.0002] # DUPLOYAN DOUBLE MARK
+1ABE ; [.0000.0036.0002] # COMBINING PARENTHESES OVERLAY
+20DD ; [.0000.0036.0002] # COMBINING ENCLOSING CIRCLE
+20DE ; [.0000.0036.0002] # COMBINING ENCLOSING SQUARE
+20DF ; [.0000.0036.0002] # COMBINING ENCLOSING DIAMOND
+20E0 ; [.0000.0036.0002] # COMBINING ENCLOSING CIRCLE BACKSLASH
+20E2 ; [.0000.0036.0002] # COMBINING ENCLOSING SCREEN
+20E3 ; [.0000.0036.0002] # COMBINING ENCLOSING KEYCAP
+20E4 ; [.0000.0036.0002] # COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+3099 ; [.0000.0037.0002] # COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
+FF9E ; [.0000.0037.0012] # HALFWIDTH KATAKANA VOICED SOUND MARK
+309A ; [.0000.0038.0002] # COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+FF9F ; [.0000.0038.0012] # HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+0335 ; [.0000.0039.0002] # COMBINING SHORT STROKE OVERLAY
+0305 ; [.0000.003A.0002] # COMBINING OVERLINE
+0309 ; [.0000.003B.0002] # COMBINING HOOK ABOVE
+030F ; [.0000.003C.0002] # COMBINING DOUBLE GRAVE ACCENT
+0310 ; [.0000.003D.0002] # COMBINING CANDRABINDU
+0311 ; [.0000.003E.0002] # COMBINING INVERTED BREVE
+031B ; [.0000.003F.0002] # COMBINING HORN
+0321 ; [.0000.0040.0002] # COMBINING PALATALIZED HOOK BELOW
+0322 ; [.0000.0041.0002] # COMBINING RETROFLEX HOOK BELOW
+0323 ; [.0000.0042.0002] # COMBINING DOT BELOW
+0324 ; [.0000.0043.0002] # COMBINING DIAERESIS BELOW
+0325 ; [.0000.0044.0002] # COMBINING RING BELOW
+0326 ; [.0000.0045.0002] # COMBINING COMMA BELOW
+032D ; [.0000.0046.0002] # COMBINING CIRCUMFLEX ACCENT BELOW
+032E ; [.0000.0047.0002] # COMBINING BREVE BELOW
+0330 ; [.0000.0048.0002] # COMBINING TILDE BELOW
+0331 ; [.0000.0049.0002] # COMBINING MACRON BELOW
+0334 ; [.0000.004A.0002] # COMBINING TILDE OVERLAY
+0339 ; [.0000.004B.0002] # COMBINING RIGHT HALF RING BELOW
+0345 ; [.0000.004C.0002] # COMBINING GREEK YPOGEGRAMMENI
+0358 ; [.0000.004D.0002] # COMBINING DOT ABOVE RIGHT
+0360 ; [.0000.004E.0002] # COMBINING DOUBLE TILDE
+FE22 ; [.0000.004E.0002] # COMBINING DOUBLE TILDE LEFT HALF
+FE29 ; [.0000.004E.0002] # COMBINING TILDE LEFT HALF BELOW
+0361 ; [.0000.004F.0002] # COMBINING DOUBLE INVERTED BREVE
+FE20 ; [.0000.004F.0002] # COMBINING LIGATURE LEFT HALF
+0483 ; [.0000.0050.0002] # COMBINING CYRILLIC TITLO
+FE2E ; [.0000.0050.0002] # COMBINING CYRILLIC TITLO LEFT HALF
+A66F ; [.0000.0051.0002] # COMBINING CYRILLIC VZMET
+05B0 ; [.0000.0052.0002] # HEBREW POINT SHEVA
+05B1 ; [.0000.0053.0002] # HEBREW POINT HATAF SEGOL
+05B2 ; [.0000.0054.0002] # HEBREW POINT HATAF PATAH
+05B3 ; [.0000.0055.0002] # HEBREW POINT HATAF QAMATS
+05B4 ; [.0000.0056.0002] # HEBREW POINT HIRIQ
+05B5 ; [.0000.0057.0002] # HEBREW POINT TSERE
+05B6 ; [.0000.0058.0002] # HEBREW POINT SEGOL
+05B7 ; [.0000.0059.0002] # HEBREW POINT PATAH
+05B8 ; [.0000.005A.0002] # HEBREW POINT QAMATS
+05C7 ; [.0000.005A.0002] # HEBREW POINT QAMATS QATAN
+05B9 ; [.0000.005B.0002] # HEBREW POINT HOLAM
+05BA ; [.0000.005B.0002] # HEBREW POINT HOLAM HASER FOR VAV
+05BB ; [.0000.005C.0002] # HEBREW POINT QUBUTS
+05C2 ; [.0000.005D.0002] # HEBREW POINT SIN DOT
+05C1 ; [.0000.005E.0002] # HEBREW POINT SHIN DOT
+05BC ; [.0000.005F.0002] # HEBREW POINT DAGESH OR MAPIQ
+05BF ; [.0000.0060.0002] # HEBREW POINT RAFE
+FB1E ; [.0000.0061.0002] # HEBREW POINT JUDEO-SPANISH VARIKA
+081C ; [.0000.0062.0002] # SAMARITAN VOWEL SIGN LONG E
+081D ; [.0000.0062.0002] # SAMARITAN VOWEL SIGN E
+081E ; [.0000.0063.0002] # SAMARITAN VOWEL SIGN OVERLONG AA
+081F ; [.0000.0063.0002] # SAMARITAN VOWEL SIGN LONG AA
+0820 ; [.0000.0063.0002] # SAMARITAN VOWEL SIGN AA
+0821 ; [.0000.0064.0002] # SAMARITAN VOWEL SIGN OVERLONG A
+0822 ; [.0000.0064.0002] # SAMARITAN VOWEL SIGN LONG A
+0823 ; [.0000.0064.0002] # SAMARITAN VOWEL SIGN A
+0824 ; [.0000.0065.0002] # SAMARITAN MODIFIER LETTER SHORT A
+0825 ; [.0000.0065.0002] # SAMARITAN VOWEL SIGN SHORT A
+0826 ; [.0000.0066.0002] # SAMARITAN VOWEL SIGN LONG U
+0827 ; [.0000.0066.0002] # SAMARITAN VOWEL SIGN U
+0828 ; [.0000.0067.0002] # SAMARITAN MODIFIER LETTER I
+0829 ; [.0000.0067.0002] # SAMARITAN VOWEL SIGN LONG I
+082A ; [.0000.0067.0002] # SAMARITAN VOWEL SIGN I
+082B ; [.0000.0068.0002] # SAMARITAN VOWEL SIGN O
+082C ; [.0000.0069.0002] # SAMARITAN VOWEL SIGN SUKUN
+0818 ; [.0000.006A.0002] # SAMARITAN MARK OCCLUSION
+0819 ; [.0000.006B.0002] # SAMARITAN MARK DAGESH
+082D ; [.0000.006C.0002] # SAMARITAN MARK NEQUDAA
+064B ; [.0000.006D.0002] # ARABIC FATHATAN
+FE71 ; [.0000.006D.0018] # ARABIC TATWEEL WITH FATHATAN ABOVE
+FE70 ; [.0000.006D.001A] # ARABIC FATHATAN ISOLATED FORM
+08F0 ; [.0000.006E.0002] # ARABIC OPEN FATHATAN
+08E7 ; [.0000.006F.0002] # ARABIC CURLY FATHATAN
+064C ; [.0000.0070.0002] # ARABIC DAMMATAN
+FE72 ; [.0000.0070.001A] # ARABIC DAMMATAN ISOLATED FORM
+FC5E ; [.0000.0070.001A][.0000.0080.001A] # ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+08F1 ; [.0000.0071.0002] # ARABIC OPEN DAMMATAN
+08E8 ; [.0000.0072.0002] # ARABIC CURLY DAMMATAN
+064D ; [.0000.0073.0002] # ARABIC KASRATAN
+FE74 ; [.0000.0073.001A] # ARABIC KASRATAN ISOLATED FORM
+FC5F ; [.0000.0073.001A][.0000.0080.001A] # ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
+08F2 ; [.0000.0074.0002] # ARABIC OPEN KASRATAN
+08E9 ; [.0000.0075.0002] # ARABIC CURLY KASRATAN
+064E ; [.0000.0076.0002] # ARABIC FATHA
+FE77 ; [.0000.0076.0018] # ARABIC FATHA MEDIAL FORM
+FE76 ; [.0000.0076.001A] # ARABIC FATHA ISOLATED FORM
+FCF2 ; [.0000.0076.0018][.0000.0080.0018] # ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
+FC60 ; [.0000.0076.001A][.0000.0080.001A] # ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
+08E4 ; [.0000.0077.0002] # ARABIC CURLY FATHA
+08F4 ; [.0000.0078.0002] # ARABIC FATHA WITH RING
+08F5 ; [.0000.0079.0002] # ARABIC FATHA WITH DOT ABOVE
+064F ; [.0000.007A.0002] # ARABIC DAMMA
+FE79 ; [.0000.007A.0018] # ARABIC DAMMA MEDIAL FORM
+FE78 ; [.0000.007A.001A] # ARABIC DAMMA ISOLATED FORM
+FCF3 ; [.0000.007A.0018][.0000.0080.0018] # ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
+FC61 ; [.0000.007A.001A][.0000.0080.001A] # ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
+08E5 ; [.0000.007B.0002] # ARABIC CURLY DAMMA
+08FE ; [.0000.007C.0002] # ARABIC DAMMA WITH DOT
+0650 ; [.0000.007D.0002] # ARABIC KASRA
+FE7B ; [.0000.007D.0018] # ARABIC KASRA MEDIAL FORM
+FE7A ; [.0000.007D.001A] # ARABIC KASRA ISOLATED FORM
+FCF4 ; [.0000.007D.0018][.0000.0080.0018] # ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
+FC62 ; [.0000.007D.001A][.0000.0080.001A] # ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
+08E6 ; [.0000.007E.0002] # ARABIC CURLY KASRA
+08F6 ; [.0000.007F.0002] # ARABIC KASRA WITH DOT BELOW
+0651 ; [.0000.0080.0002] # ARABIC SHADDA
+0AFB ; [.0000.0080.0002] # GUJARATI SIGN SHADDA
+11237 ; [.0000.0080.0002] # KHOJKI SIGN SHADDA
+FE7D ; [.0000.0080.0018] # ARABIC SHADDA MEDIAL FORM
+FE7C ; [.0000.0080.001A] # ARABIC SHADDA ISOLATED FORM
+FC63 ; [.0000.0080.001A][.0000.0098.001A] # ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
+0652 ; [.0000.0081.0002] # ARABIC SUKUN
+0AFA ; [.0000.0081.0002] # GUJARATI SIGN SUKUN
+1123E ; [.0000.0081.0002] # KHOJKI SIGN SUKUN
+FE7F ; [.0000.0081.0018] # ARABIC SUKUN MEDIAL FORM
+FE7E ; [.0000.0081.001A] # ARABIC SUKUN ISOLATED FORM
+0653 ; [.0000.0082.0002] # ARABIC MADDAH ABOVE
+089E ; [.0000.0082.0002] # ARABIC DOUBLED MADDA
+089F ; [.0000.0082.0002] # ARABIC HALF MADDA OVER MADDA
+0AFC ; [.0000.0082.0002] # GUJARATI SIGN MADDAH
+10EAC ; [.0000.0082.0002] # YEZIDI COMBINING MADDA MARK
+0654 ; [.0000.0083.0002] # ARABIC HAMZA ABOVE
+10EAB ; [.0000.0083.0002] # YEZIDI COMBINING HAMZA MARK
+0655 ; [.0000.0084.0002] # ARABIC HAMZA BELOW
+065F ; [.0000.0085.0002] # ARABIC WAVY HAMZA BELOW
+0656 ; [.0000.0086.0002] # ARABIC SUBSCRIPT ALEF
+0657 ; [.0000.0087.0002] # ARABIC INVERTED DAMMA
+0658 ; [.0000.0088.0002] # ARABIC MARK NOON GHUNNA
+08FF ; [.0000.0089.0002] # ARABIC MARK SIDEWAYS NOON GHUNNA
+0659 ; [.0000.008A.0002] # ARABIC ZWARAKAY
+065A ; [.0000.008B.0002] # ARABIC VOWEL SIGN SMALL V ABOVE
+065B ; [.0000.008C.0002] # ARABIC VOWEL SIGN INVERTED SMALL V ABOVE
+065C ; [.0000.008D.0002] # ARABIC VOWEL SIGN DOT BELOW
+065D ; [.0000.008E.0002] # ARABIC REVERSED DAMMA
+065E ; [.0000.008F.0002] # ARABIC FATHA WITH TWO DOTS
+08E3 ; [.0000.0090.0002] # ARABIC TURNED DAMMA BELOW
+08F7 ; [.0000.0091.0002] # ARABIC LEFT ARROWHEAD ABOVE
+08F8 ; [.0000.0092.0002] # ARABIC RIGHT ARROWHEAD ABOVE
+08FD ; [.0000.0093.0002] # ARABIC RIGHT ARROWHEAD ABOVE WITH DOT
+08FB ; [.0000.0094.0002] # ARABIC DOUBLE RIGHT ARROWHEAD ABOVE
+08FC ; [.0000.0095.0002] # ARABIC DOUBLE RIGHT ARROWHEAD ABOVE WITH DOT
+08F9 ; [.0000.0096.0002] # ARABIC LEFT ARROWHEAD BELOW
+08FA ; [.0000.0097.0002] # ARABIC RIGHT ARROWHEAD BELOW
+0670 ; [.0000.0098.0002] # ARABIC LETTER SUPERSCRIPT ALEF
+0711 ; [.0000.0099.0002] # SYRIAC LETTER SUPERSCRIPT ALAPH
+0730 ; [.0000.009A.0002] # SYRIAC PTHAHA ABOVE
+0731 ; [.0000.009B.0002] # SYRIAC PTHAHA BELOW
+0732 ; [.0000.009C.0002] # SYRIAC PTHAHA DOTTED
+0733 ; [.0000.009D.0002] # SYRIAC ZQAPHA ABOVE
+0734 ; [.0000.009E.0002] # SYRIAC ZQAPHA BELOW
+0735 ; [.0000.009F.0002] # SYRIAC ZQAPHA DOTTED
+0736 ; [.0000.00A0.0002] # SYRIAC RBASA ABOVE
+0737 ; [.0000.00A1.0002] # SYRIAC RBASA BELOW
+0738 ; [.0000.00A2.0002] # SYRIAC DOTTED ZLAMA HORIZONTAL
+0739 ; [.0000.00A3.0002] # SYRIAC DOTTED ZLAMA ANGULAR
+073A ; [.0000.00A4.0002] # SYRIAC HBASA ABOVE
+073B ; [.0000.00A5.0002] # SYRIAC HBASA BELOW
+073C ; [.0000.00A6.0002] # SYRIAC HBASA-ESASA DOTTED
+073D ; [.0000.00A7.0002] # SYRIAC ESASA ABOVE
+073E ; [.0000.00A8.0002] # SYRIAC ESASA BELOW
+073F ; [.0000.00A9.0002] # SYRIAC RWAHA
+07EB ; [.0000.00AA.0002] # NKO COMBINING SHORT HIGH TONE
+07EC ; [.0000.00AB.0002] # NKO COMBINING SHORT LOW TONE
+07ED ; [.0000.00AC.0002] # NKO COMBINING SHORT RISING TONE
+07EE ; [.0000.00AD.0002] # NKO COMBINING LONG DESCENDING TONE
+07EF ; [.0000.00AE.0002] # NKO COMBINING LONG HIGH TONE
+07F0 ; [.0000.00AF.0002] # NKO COMBINING LONG LOW TONE
+07F1 ; [.0000.00B0.0002] # NKO COMBINING LONG RISING TONE
+07F2 ; [.0000.00B1.0002] # NKO COMBINING NASALIZATION MARK
+07F3 ; [.0000.00B2.0002] # NKO COMBINING DOUBLE DOT ABOVE
+135F ; [.0000.00B3.0002] # ETHIOPIC COMBINING GEMINATION MARK
+135E ; [.0000.00B4.0002] # ETHIOPIC COMBINING VOWEL LENGTH MARK
+135D ; [.0000.00B5.0002] # ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK
+A6F0 ; [.0000.00B6.0002] # BAMUM COMBINING MARK KOQNDON
+A6F1 ; [.0000.00B7.0002] # BAMUM COMBINING MARK TUKWENTIS
+16AF0 ; [.0000.00B8.0002] # BASSA VAH COMBINING HIGH TONE
+16AF1 ; [.0000.00B9.0002] # BASSA VAH COMBINING LOW TONE
+16AF2 ; [.0000.00BA.0002] # BASSA VAH COMBINING MID TONE
+16AF3 ; [.0000.00BB.0002] # BASSA VAH COMBINING LOW-MID TONE
+16AF4 ; [.0000.00BC.0002] # BASSA VAH COMBINING HIGH-LOW TONE
+1E944 ; [.0000.00BD.0002] # ADLAM ALIF LENGTHENER
+1E945 ; [.0000.00BD.0002] # ADLAM VOWEL LENGTHENER
+1E946 ; [.0000.00BD.0002] # ADLAM GEMINATION MARK
+1E94A ; [.0000.00BE.0002] # ADLAM NUKTA
+1E947 ; [.0000.00BF.0002] # ADLAM HAMZA
+1E948 ; [.0000.00C0.0002] # ADLAM CONSONANT MODIFIER
+1E949 ; [.0000.00C1.0002] # ADLAM GEMINATE CONSONANT MODIFIER
+093C ; [.0000.00C2.0002] # DEVANAGARI SIGN NUKTA
+09BC ; [.0000.00C2.0002] # BENGALI SIGN NUKTA
+0A3C ; [.0000.00C2.0002] # GURMUKHI SIGN NUKTA
+0ABC ; [.0000.00C2.0002] # GUJARATI SIGN NUKTA
+0AFD ; [.0000.00C2.0002] # GUJARATI SIGN THREE-DOT NUKTA ABOVE
+0AFE ; [.0000.00C2.0002] # GUJARATI SIGN CIRCLE NUKTA ABOVE
+0AFF ; [.0000.00C2.0002] # GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
+0B3C ; [.0000.00C2.0002] # ORIYA SIGN NUKTA
+0C3C ; [.0000.00C2.0002] # TELUGU SIGN NUKTA
+0CBC ; [.0000.00C2.0002] # KANNADA SIGN NUKTA
+1B34 ; [.0000.00C2.0002] # BALINESE SIGN REREKAN
+1BE6 ; [.0000.00C2.0002] # BATAK SIGN TOMPI
+1C37 ; [.0000.00C2.0002] # LEPCHA SIGN NUKTA
+A9B3 ; [.0000.00C2.0002] # JAVANESE SIGN CECAK TELU
+110BA ; [.0000.00C2.0002] # KAITHI SIGN NUKTA
+11173 ; [.0000.00C2.0002] # MAHAJANI SIGN NUKTA
+111CA ; [.0000.00C2.0002] # SHARADA SIGN NUKTA
+11236 ; [.0000.00C2.0002] # KHOJKI SIGN NUKTA
+112E9 ; [.0000.00C2.0002] # KHUDAWADI SIGN NUKTA
+1133B ; [.0000.00C2.0002] # COMBINING BINDU BELOW
+1133C ; [.0000.00C2.0002] # GRANTHA SIGN NUKTA
+11446 ; [.0000.00C2.0002] # NEWA SIGN NUKTA
+114C3 ; [.0000.00C2.0002] # TIRHUTA SIGN NUKTA
+115C0 ; [.0000.00C2.0002] # SIDDHAM SIGN NUKTA
+116B7 ; [.0000.00C2.0002] # TAKRI SIGN NUKTA
+1183A ; [.0000.00C2.0002] # DOGRA SIGN NUKTA
+11943 ; [.0000.00C2.0002] # DIVES AKURU SIGN NUKTA
+11A33 ; [.0000.00C2.0002] # ZANABAZAR SQUARE FINAL CONSONANT MARK
+11D42 ; [.0000.00C2.0002] # MASARAM GONDI SIGN NUKTA
+0900 ; [.0000.00C3.0002] # DEVANAGARI SIGN INVERTED CANDRABINDU
+0901 ; [.0000.00C3.0002] # DEVANAGARI SIGN CANDRABINDU
+0981 ; [.0000.00C3.0002] # BENGALI SIGN CANDRABINDU
+0A01 ; [.0000.00C3.0002] # GURMUKHI SIGN ADAK BINDI
+0A81 ; [.0000.00C3.0002] # GUJARATI SIGN CANDRABINDU
+0B01 ; [.0000.00C3.0002] # ORIYA SIGN CANDRABINDU
+0C00 ; [.0000.00C3.0002] # TELUGU SIGN COMBINING CANDRABINDU ABOVE
+0C01 ; [.0000.00C3.0002] # TELUGU SIGN CANDRABINDU
+0C81 ; [.0000.00C3.0002] # KANNADA SIGN CANDRABINDU
+0D01 ; [.0000.00C3.0002] # MALAYALAM SIGN CANDRABINDU
+0D81 ; [.0000.00C3.0002] # SINHALA SIGN CANDRABINDU
+1B00 ; [.0000.00C3.0002] # BALINESE SIGN ULU RICEM
+1B01 ; [.0000.00C3.0002] # BALINESE SIGN ULU CANDRA
+A8C5 ; [.0000.00C3.0002] # SAURASHTRA SIGN CANDRABINDU
+A980 ; [.0000.00C3.0002] # JAVANESE SIGN PANYANGGA
+11000 ; [.0000.00C3.0002] # BRAHMI SIGN CANDRABINDU
+11080 ; [.0000.00C3.0002] # KAITHI SIGN CANDRABINDU
+11100 ; [.0000.00C3.0002] # CHAKMA SIGN CANDRABINDU
+11180 ; [.0000.00C3.0002] # SHARADA SIGN CANDRABINDU
+111CF ; [.0000.00C3.0002] # SHARADA SIGN INVERTED CANDRABINDU
+11301 ; [.0000.00C3.0002] # GRANTHA SIGN CANDRABINDU
+11443 ; [.0000.00C3.0002] # NEWA SIGN CANDRABINDU
+114BF ; [.0000.00C3.0002] # TIRHUTA SIGN CANDRABINDU
+115BC ; [.0000.00C3.0002] # SIDDHAM SIGN CANDRABINDU
+11640 ; [.0000.00C3.0002] # MODI SIGN ARDHACANDRA
+1193C ; [.0000.00C3.0002] # DIVES AKURU SIGN CANDRABINDU
+11A35 ; [.0000.00C3.0002] # ZANABAZAR SQUARE SIGN CANDRABINDU
+11A36 ; [.0000.00C3.0002] # ZANABAZAR SQUARE SIGN CANDRABINDU WITH ORNAMENT
+11A37 ; [.0000.00C3.0002] # ZANABAZAR SQUARE SIGN CANDRA WITH ORNAMENT
+11C3C ; [.0000.00C3.0002] # BHAIKSUKI SIGN CANDRABINDU
+11CB6 ; [.0000.00C3.0002] # MARCHEN SIGN CANDRABINDU
+11D43 ; [.0000.00C3.0002] # MASARAM GONDI SIGN CANDRA
+0902 ; [.0000.00C4.0002] # DEVANAGARI SIGN ANUSVARA
+0982 ; [.0000.00C4.0002] # BENGALI SIGN ANUSVARA
+0A02 ; [.0000.00C4.0002] # GURMUKHI SIGN BINDI
+0A82 ; [.0000.00C4.0002] # GUJARATI SIGN ANUSVARA
+0B02 ; [.0000.00C4.0002] # ORIYA SIGN ANUSVARA
+0B82 ; [.0000.00C4.0002] # TAMIL SIGN ANUSVARA
+0C02 ; [.0000.00C4.0002] # TELUGU SIGN ANUSVARA
+0C04 ; [.0000.00C4.0002] # TELUGU SIGN COMBINING ANUSVARA ABOVE
+0C82 ; [.0000.00C4.0002] # KANNADA SIGN ANUSVARA
+0D00 ; [.0000.00C4.0002] # MALAYALAM SIGN COMBINING ANUSVARA ABOVE
+0D02 ; [.0000.00C4.0002] # MALAYALAM SIGN ANUSVARA
+0D82 ; [.0000.00C4.0002] # SINHALA SIGN ANUSVARAYA
+0F7E ; [.0000.00C4.0002] # TIBETAN SIGN RJES SU NGA RO
+1036 ; [.0000.00C4.0002] # MYANMAR SIGN ANUSVARA
+17C6 ; [.0000.00C4.0002] # KHMER SIGN NIKAHIT
+1A74 ; [.0000.00C4.0002] # TAI THAM SIGN MAI KANG
+1B02 ; [.0000.00C4.0002] # BALINESE SIGN CECEK
+1B80 ; [.0000.00C4.0002] # SUNDANESE SIGN PANYECEK
+1CED ; [.0000.00C4.0002] # VEDIC SIGN TIRYAK
+A80B ; [.0000.00C4.0002] # SYLOTI NAGRI SIGN ANUSVARA
+A880 ; [.0000.00C4.0002] # SAURASHTRA SIGN ANUSVARA
+A981 ; [.0000.00C4.0002] # JAVANESE SIGN CECAK
+10A0E ; [.0000.00C4.0002] # KHAROSHTHI SIGN ANUSVARA
+11001 ; [.0000.00C4.0002] # BRAHMI SIGN ANUSVARA
+11081 ; [.0000.00C4.0002] # KAITHI SIGN ANUSVARA
+11101 ; [.0000.00C4.0002] # CHAKMA SIGN ANUSVARA
+11181 ; [.0000.00C4.0002] # SHARADA SIGN ANUSVARA
+11234 ; [.0000.00C4.0002] # KHOJKI SIGN ANUSVARA
+112DF ; [.0000.00C4.0002] # KHUDAWADI SIGN ANUSVARA
+11300 ; [.0000.00C4.0002] # GRANTHA SIGN COMBINING ANUSVARA ABOVE
+11302 ; [.0000.00C4.0002] # GRANTHA SIGN ANUSVARA
+11444 ; [.0000.00C4.0002] # NEWA SIGN ANUSVARA
+114C0 ; [.0000.00C4.0002] # TIRHUTA SIGN ANUSVARA
+115BD ; [.0000.00C4.0002] # SIDDHAM SIGN ANUSVARA
+1163D ; [.0000.00C4.0002] # MODI SIGN ANUSVARA
+116AB ; [.0000.00C4.0002] # TAKRI SIGN ANUSVARA
+11837 ; [.0000.00C4.0002] # DOGRA SIGN ANUSVARA
+1193B ; [.0000.00C4.0002] # DIVES AKURU SIGN ANUSVARA
+119DE ; [.0000.00C4.0002] # NANDINAGARI SIGN ANUSVARA
+11A38 ; [.0000.00C4.0002] # ZANABAZAR SQUARE SIGN ANUSVARA
+11A96 ; [.0000.00C4.0002] # SOYOMBO SIGN ANUSVARA
+11C3D ; [.0000.00C4.0002] # BHAIKSUKI SIGN ANUSVARA
+11CB5 ; [.0000.00C4.0002] # MARCHEN SIGN ANUSVARA
+11D40 ; [.0000.00C4.0002] # MASARAM GONDI SIGN ANUSVARA
+11D95 ; [.0000.00C4.0002] # GUNJALA GONDI SIGN ANUSVARA
+0903 ; [.0000.00C5.0002] # DEVANAGARI SIGN VISARGA
+0983 ; [.0000.00C5.0002] # BENGALI SIGN VISARGA
+0A03 ; [.0000.00C5.0002] # GURMUKHI SIGN VISARGA
+0A83 ; [.0000.00C5.0002] # GUJARATI SIGN VISARGA
+0B03 ; [.0000.00C5.0002] # ORIYA SIGN VISARGA
+0C03 ; [.0000.00C5.0002] # TELUGU SIGN VISARGA
+0C83 ; [.0000.00C5.0002] # KANNADA SIGN VISARGA
+0D03 ; [.0000.00C5.0002] # MALAYALAM SIGN VISARGA
+0D83 ; [.0000.00C5.0002] # SINHALA SIGN VISARGAYA
+0F7F ; [.0000.00C5.0002] # TIBETAN SIGN RNAM BCAD
+1038 ; [.0000.00C5.0002] # MYANMAR SIGN VISARGA
+17C7 ; [.0000.00C5.0002] # KHMER SIGN REAHMUK
+1B04 ; [.0000.00C5.0002] # BALINESE SIGN BISAH
+1B82 ; [.0000.00C5.0002] # SUNDANESE SIGN PANGWISAD
+1CF2 ; [.0000.00C5.0002] # VEDIC SIGN ARDHAVISARGA
+1CF3 ; [.0000.00C5.0002] # VEDIC SIGN ROTATED ARDHAVISARGA
+A881 ; [.0000.00C5.0002] # SAURASHTRA SIGN VISARGA
+A983 ; [.0000.00C5.0002] # JAVANESE SIGN WIGNYAN
+10A0F ; [.0000.00C5.0002] # KHAROSHTHI SIGN VISARGA
+11002 ; [.0000.00C5.0002] # BRAHMI SIGN VISARGA
+11082 ; [.0000.00C5.0002] # KAITHI SIGN VISARGA
+11102 ; [.0000.00C5.0002] # CHAKMA SIGN VISARGA
+11182 ; [.0000.00C5.0002] # SHARADA SIGN VISARGA
+11303 ; [.0000.00C5.0002] # GRANTHA SIGN VISARGA
+11445 ; [.0000.00C5.0002] # NEWA SIGN VISARGA
+114C1 ; [.0000.00C5.0002] # TIRHUTA SIGN VISARGA
+115BE ; [.0000.00C5.0002] # SIDDHAM SIGN VISARGA
+1163E ; [.0000.00C5.0002] # MODI SIGN VISARGA
+116AC ; [.0000.00C5.0002] # TAKRI SIGN VISARGA
+11838 ; [.0000.00C5.0002] # DOGRA SIGN VISARGA
+119DF ; [.0000.00C5.0002] # NANDINAGARI SIGN VISARGA
+11A39 ; [.0000.00C5.0002] # ZANABAZAR SQUARE SIGN VISARGA
+11A97 ; [.0000.00C5.0002] # SOYOMBO SIGN VISARGA
+11C3E ; [.0000.00C5.0002] # BHAIKSUKI SIGN VISARGA
+11D41 ; [.0000.00C5.0002] # MASARAM GONDI SIGN VISARGA
+11D96 ; [.0000.00C5.0002] # GUNJALA GONDI SIGN VISARGA
+09FE ; [.0000.00C6.0002] # BENGALI SANDHI MARK
+111C9 ; [.0000.00C6.0002] # SHARADA SANDHI MARK
+1145E ; [.0000.00C6.0002] # NEWA SANDHI MARK
+0A70 ; [.0000.00C7.0002] # GURMUKHI TIPPI
+0A71 ; [.0000.00C8.0002] # GURMUKHI ADDAK
+1B03 ; [.0000.00C9.0002] # BALINESE SIGN SURANG
+A982 ; [.0000.00CA.0002] # JAVANESE SIGN LAYAR
+1B81 ; [.0000.00CB.0002] # SUNDANESE SIGN PANGLAYAR
+ABEC ; [.0000.00CC.0002] # MEETEI MAYEK LUM IYEK
+10A38 ; [.0000.00CD.0002] # KHAROSHTHI SIGN BAR ABOVE
+10A39 ; [.0000.00CE.0002] # KHAROSHTHI SIGN CAUDA
+10A3A ; [.0000.00CF.0002] # KHAROSHTHI SIGN DOT BELOW
+111CB ; [.0000.00D0.0002] # SHARADA VOWEL MODIFIER MARK
+111CC ; [.0000.00D1.0002] # SHARADA EXTRA SHORT VOWEL MARK
+11A98 ; [.0000.00D2.0002] # SOYOMBO GEMINATION MARK
+0E4E ; [.0000.00D3.0002] # THAI CHARACTER YAMAKKAN
+0E47 ; [.0000.00D4.0002] # THAI CHARACTER MAITAIKHU
+0E48 ; [.0000.00D5.0002] # THAI CHARACTER MAI EK
+0E49 ; [.0000.00D6.0002] # THAI CHARACTER MAI THO
+0E4A ; [.0000.00D7.0002] # THAI CHARACTER MAI TRI
+0E4B ; [.0000.00D8.0002] # THAI CHARACTER MAI CHATTAWA
+0E4C ; [.0000.00D9.0002] # THAI CHARACTER THANTHAKHAT
+0E4D ; [.0000.00DA.0002] # THAI CHARACTER NIKHAHIT
+0EC8 ; [.0000.00DB.0002] # LAO TONE MAI EK
+0EC9 ; [.0000.00DC.0002] # LAO TONE MAI THO
+0ECA ; [.0000.00DD.0002] # LAO TONE MAI TI
+0ECB ; [.0000.00DE.0002] # LAO TONE MAI CATAWA
+0ECC ; [.0000.00DF.0002] # LAO CANCELLATION MARK
+0ECD ; [.0000.00E0.0002] # LAO NIGGAHITA
+AABF ; [.0000.00E1.0002] # TAI VIET TONE MAI EK
+AAC1 ; [.0000.00E2.0002] # TAI VIET TONE MAI THO
+0F39 ; [.0000.00E3.0002] # TIBETAN MARK TSA -PHRU
+A92B ; [.0000.00E4.0002] # KAYAH LI TONE PLOPHU
+A92C ; [.0000.00E5.0002] # KAYAH LI TONE CALYA
+A92D ; [.0000.00E6.0002] # KAYAH LI TONE CALYA PLOPHU
+1037 ; [.0000.00E7.0002] # MYANMAR SIGN DOT BELOW
+17C8 ; [.0000.00E8.0002] # KHMER SIGN YUUKALEAPINTU
+17C9 ; [.0000.00E9.0002] # KHMER SIGN MUUSIKATOAN
+17CA ; [.0000.00EA.0002] # KHMER SIGN TRIISAP
+1A75 ; [.0000.00EB.0002] # TAI THAM SIGN TONE-1
+1A76 ; [.0000.00EC.0002] # TAI THAM SIGN TONE-2
+1A77 ; [.0000.00ED.0002] # TAI THAM SIGN KHUEN TONE-3
+1A78 ; [.0000.00EE.0002] # TAI THAM SIGN KHUEN TONE-4
+1A79 ; [.0000.00EF.0002] # TAI THAM SIGN KHUEN TONE-5
+1A7A ; [.0000.00F0.0002] # TAI THAM SIGN RA HAAM
+1A7B ; [.0000.00F1.0002] # TAI THAM SIGN MAI SAM
+1A7C ; [.0000.00F2.0002] # TAI THAM SIGN KHUEN-LUE KARAN
+1939 ; [.0000.00F3.0002] # LIMBU SIGN MUKPHRENG
+193A ; [.0000.00F4.0002] # LIMBU SIGN KEMPHRENG
+193B ; [.0000.00F5.0002] # LIMBU SIGN SA-I
+16B30 ; [.0000.00F6.0002] # PAHAWH HMONG MARK CIM TUB
+1E131 ; [.0000.00F6.0002] # NYIAKENG PUACHUE HMONG TONE-M
+16B31 ; [.0000.00F7.0002] # PAHAWH HMONG MARK CIM SO
+1E136 ; [.0000.00F7.0002] # NYIAKENG PUACHUE HMONG TONE-D
+16B32 ; [.0000.00F8.0002] # PAHAWH HMONG MARK CIM KES
+1E132 ; [.0000.00F8.0002] # NYIAKENG PUACHUE HMONG TONE-J
+16B33 ; [.0000.00F9.0002] # PAHAWH HMONG MARK CIM KHAV
+1E133 ; [.0000.00F9.0002] # NYIAKENG PUACHUE HMONG TONE-V
+16B34 ; [.0000.00FA.0002] # PAHAWH HMONG MARK CIM SUAM
+1E130 ; [.0000.00FA.0002] # NYIAKENG PUACHUE HMONG TONE-B
+16B35 ; [.0000.00FB.0002] # PAHAWH HMONG MARK CIM HOM
+1E134 ; [.0000.00FB.0002] # NYIAKENG PUACHUE HMONG TONE-S
+16B36 ; [.0000.00FC.0002] # PAHAWH HMONG MARK CIM TAUM
+1E135 ; [.0000.00FC.0002] # NYIAKENG PUACHUE HMONG TONE-G
+1E2EC ; [.0000.00FD.0002] # WANCHO TONE TUP
+1E2ED ; [.0000.00FE.0002] # WANCHO TONE TUPNI
+1E2EE ; [.0000.00FF.0002] # WANCHO TONE KOI
+1E2EF ; [.0000.0100.0002] # WANCHO TONE KOINI
+302A ; [.0000.0101.0002] # IDEOGRAPHIC LEVEL TONE MARK
+302B ; [.0000.0102.0002] # IDEOGRAPHIC RISING TONE MARK
+302C ; [.0000.0103.0002] # IDEOGRAPHIC DEPARTING TONE MARK
+302D ; [.0000.0104.0002] # IDEOGRAPHIC ENTERING TONE MARK
+302E ; [.0000.0105.0002] # HANGUL SINGLE DOT TONE MARK
+302F ; [.0000.0106.0002] # HANGUL DOUBLE DOT TONE MARK
+16FF0 ; [.0000.0107.0002] # VIETNAMESE ALTERNATE READING MARK CA
+16FF1 ; [.0000.0108.0002] # VIETNAMESE ALTERNATE READING MARK NHAY
+20D0 ; [.0000.0109.0002] # COMBINING LEFT HARPOON ABOVE
+20D1 ; [.0000.010A.0002] # COMBINING RIGHT HARPOON ABOVE
+20D2 ; [.0000.010B.0002] # COMBINING LONG VERTICAL LINE OVERLAY
+20D3 ; [.0000.010B.0002] # COMBINING SHORT VERTICAL LINE OVERLAY
+20D4 ; [.0000.010C.0002] # COMBINING ANTICLOCKWISE ARROW ABOVE
+20D5 ; [.0000.010D.0002] # COMBINING CLOCKWISE ARROW ABOVE
+20D6 ; [.0000.010E.0002] # COMBINING LEFT ARROW ABOVE
+20D7 ; [.0000.010F.0002] # COMBINING RIGHT ARROW ABOVE
+20DB ; [.0000.0110.0002] # COMBINING THREE DOTS ABOVE
+20DC ; [.0000.0111.0002] # COMBINING FOUR DOTS ABOVE
+20E1 ; [.0000.0112.0002] # COMBINING LEFT RIGHT ARROW ABOVE
+20E6 ; [.0000.0113.0002] # COMBINING DOUBLE VERTICAL STROKE OVERLAY
+20E7 ; [.0000.0114.0002] # COMBINING ANNUITY SYMBOL
+20E8 ; [.0000.0115.0002] # COMBINING TRIPLE UNDERDOT
+20E9 ; [.0000.0116.0002] # COMBINING WIDE BRIDGE ABOVE
+101FD ; [.0000.0117.0002] # PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+02D0 ; [.2018.0020.0002] # MODIFIER LETTER TRIANGULAR COLON
+10781 ; [.2018.0020.0014] # MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON
+02D1 ; [.2019.0020.0002] # MODIFIER LETTER HALF TRIANGULAR COLON
+10782 ; [.2019.0020.0014] # MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON
+0971 ; [.201A.0020.0002] # DEVANAGARI SIGN HIGH SPACING DOT
+0E46 ; [.201B.0020.0002] # THAI CHARACTER MAIYAMOK
+0EC6 ; [.201C.0020.0002] # LAO KO LA
+17D7 ; [.201D.0020.0002] # KHMER SIGN LEK TOO
+1AA7 ; [.201E.0020.0002] # TAI THAM SIGN MAI YAMOK
+A9CF ; [.201F.0020.0002] # JAVANESE PANGRANGKEP
+A9E6 ; [.2020.0020.0002] # MYANMAR MODIFIER LETTER SHAN REDUPLICATION
+AA70 ; [.2021.0020.0002] # MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
+AADD ; [.2022.0020.0002] # TAI VIET SYMBOL SAM
+AAF3 ; [.2023.0020.0002] # MEETEI MAYEK SYLLABLE REPETITION MARK
+AAF4 ; [.2024.0020.0002] # MEETEI MAYEK WORD REPETITION MARK
+16B42 ; [.2025.0020.0002] # PAHAWH HMONG SIGN VOS NRUA
+16B43 ; [.2026.0020.0002] # PAHAWH HMONG SIGN IB YAM
+1E13C ; [.2027.0020.0002] # NYIAKENG PUACHUE HMONG SIGN XW XW
+1E13D ; [.2028.0020.0002] # NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
+3005 ; [.2029.0020.0002] # IDEOGRAPHIC ITERATION MARK
+303B ; [.202A.0020.0002] # VERTICAL IDEOGRAPHIC ITERATION MARK
+16FE0 ; [.202B.0020.0002] # TANGUT ITERATION MARK
+16FE1 ; [.202C.0020.0002] # NUSHU ITERATION MARK
+16FE3 ; [.202D.0020.0002] # OLD CHINESE ITERATION MARK
+3031 ; [.202E.0020.0002] # VERTICAL KANA REPEAT MARK
+3032 ; [.202E.0020.0002][.0000.0037.0002] # VERTICAL KANA REPEAT WITH VOICED SOUND MARK
+3033 ; [.202F.0020.0002] # VERTICAL KANA REPEAT MARK UPPER HALF
+3034 ; [.202F.0020.0002][.0000.0037.0002] # VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF
+3035 ; [.2030.0020.0002] # VERTICAL KANA REPEAT MARK LOWER HALF
+309D ; [.2031.0020.0002] # HIRAGANA ITERATION MARK
+309E ; [.2031.0020.0002][.0000.0037.0002] # HIRAGANA VOICED ITERATION MARK
+30FC ; [.2032.0020.0002] # KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF70 ; [.2032.0020.0012] # HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+30FD ; [.2033.0020.0002] # KATAKANA ITERATION MARK
+30FE ; [.2033.0020.0002][.0000.0037.0002] # KATAKANA VOICED ITERATION MARK
+00A4 ; [.2034.0020.0002] # CURRENCY SIGN
+00A2 ; [.2035.0020.0002] # CENT SIGN
+FFE0 ; [.2035.0020.0003] # FULLWIDTH CENT SIGN
+0024 ; [.2036.0020.0002] # DOLLAR SIGN
+FF04 ; [.2036.0020.0003] # FULLWIDTH DOLLAR SIGN
+FE69 ; [.2036.0020.000F] # SMALL DOLLAR SIGN
+00A3 ; [.2037.0020.0002] # POUND SIGN
+FFE1 ; [.2037.0020.0003] # FULLWIDTH POUND SIGN
+00A5 ; [.2038.0020.0002] # YEN SIGN
+FFE5 ; [.2038.0020.0003] # FULLWIDTH YEN SIGN
+058F ; [.2039.0020.0002] # ARMENIAN DRAM SIGN
+060B ; [.203A.0020.0002] # AFGHANI SIGN
+07FE ; [.203B.0020.0002] # NKO DOROME SIGN
+07FF ; [.203C.0020.0002] # NKO TAMAN SIGN
+09F2 ; [.203D.0020.0002] # BENGALI RUPEE MARK
+09F3 ; [.203E.0020.0002] # BENGALI RUPEE SIGN
+09FB ; [.203F.0020.0002] # BENGALI GANDA MARK
+0AF1 ; [.2040.0020.0002] # GUJARATI RUPEE SIGN
+A838 ; [.2041.0020.0002] # NORTH INDIC RUPEE MARK
+0BF9 ; [.2042.0020.0002] # TAMIL RUPEE SIGN
+11FDD ; [.2043.0020.0002] # TAMIL SIGN KAACU
+11FDE ; [.2044.0020.0002] # TAMIL SIGN PANAM
+11FDF ; [.2045.0020.0002] # TAMIL SIGN PON
+11FE0 ; [.2046.0020.0002] # TAMIL SIGN VARAAKAN
+0E3F ; [.2047.0020.0002] # THAI CURRENCY SYMBOL BAHT
+17DB ; [.2048.0020.0002] # KHMER CURRENCY SYMBOL RIEL
+1E2FF ; [.2049.0020.0002] # WANCHO NGUN SIGN
+20A0 ; [.204A.0020.0002] # EURO-CURRENCY SIGN
+20A1 ; [.204B.0020.0002] # COLON SIGN
+20A2 ; [.204C.0020.0002] # CRUZEIRO SIGN
+20A3 ; [.204D.0020.0002] # FRENCH FRANC SIGN
+20A4 ; [.204E.0020.0002] # LIRA SIGN
+20A5 ; [.204F.0020.0002] # MILL SIGN
+20A6 ; [.2050.0020.0002] # NAIRA SIGN
+20A7 ; [.2051.0020.0002] # PESETA SIGN
+20A9 ; [.2052.0020.0002] # WON SIGN
+FFE6 ; [.2052.0020.0003] # FULLWIDTH WON SIGN
+20AA ; [.2053.0020.0002] # NEW SHEQEL SIGN
+20AB ; [.2054.0020.0002] # DONG SIGN
+20AC ; [.2055.0020.0002] # EURO SIGN
+20AD ; [.2056.0020.0002] # KIP SIGN
+20AE ; [.2057.0020.0002] # TUGRIK SIGN
+20AF ; [.2058.0020.0002] # DRACHMA SIGN
+20B0 ; [.2059.0020.0002] # GERMAN PENNY SIGN
+20B1 ; [.205A.0020.0002] # PESO SIGN
+20B2 ; [.205B.0020.0002] # GUARANI SIGN
+20B3 ; [.205C.0020.0002] # AUSTRAL SIGN
+20B4 ; [.205D.0020.0002] # HRYVNIA SIGN
+20B5 ; [.205E.0020.0002] # CEDI SIGN
+20B6 ; [.205F.0020.0002] # LIVRE TOURNOIS SIGN
+20B7 ; [.2060.0020.0002] # SPESMILO SIGN
+20B8 ; [.2061.0020.0002] # TENGE SIGN
+20B9 ; [.2062.0020.0002] # INDIAN RUPEE SIGN
+1ECB0 ; [.2063.0020.0002] # INDIC SIYAQ RUPEE MARK
+20BA ; [.2064.0020.0002] # TURKISH LIRA SIGN
+20BB ; [.2065.0020.0002] # NORDIC MARK SIGN
+20BC ; [.2066.0020.0002] # MANAT SIGN
+20BD ; [.2067.0020.0002] # RUBLE SIGN
+20BE ; [.2068.0020.0002] # LARI SIGN
+20BF ; [.2069.0020.0002] # BITCOIN SIGN
+20C0 ; [.206A.0020.0002] # SOM SIGN
+0030 ; [.206B.0020.0002] # DIGIT ZERO
+0660 ; [.206B.0020.0002] # ARABIC-INDIC DIGIT ZERO
+06F0 ; [.206B.0020.0002] # EXTENDED ARABIC-INDIC DIGIT ZERO
+07C0 ; [.206B.0020.0002] # NKO DIGIT ZERO
+0966 ; [.206B.0020.0002] # DEVANAGARI DIGIT ZERO
+09E6 ; [.206B.0020.0002] # BENGALI DIGIT ZERO
+0A66 ; [.206B.0020.0002] # GURMUKHI DIGIT ZERO
+0AE6 ; [.206B.0020.0002] # GUJARATI DIGIT ZERO
+0B66 ; [.206B.0020.0002] # ORIYA DIGIT ZERO
+0BE6 ; [.206B.0020.0002] # TAMIL DIGIT ZERO
+0C66 ; [.206B.0020.0002] # TELUGU DIGIT ZERO
+0C78 ; [.206B.0020.0002] # TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR
+0CE6 ; [.206B.0020.0002] # KANNADA DIGIT ZERO
+0D66 ; [.206B.0020.0002] # MALAYALAM DIGIT ZERO
+0DE6 ; [.206B.0020.0002] # SINHALA LITH DIGIT ZERO
+0E50 ; [.206B.0020.0002] # THAI DIGIT ZERO
+0ED0 ; [.206B.0020.0002] # LAO DIGIT ZERO
+0F20 ; [.206B.0020.0002] # TIBETAN DIGIT ZERO
+1040 ; [.206B.0020.0002] # MYANMAR DIGIT ZERO
+1090 ; [.206B.0020.0002] # MYANMAR SHAN DIGIT ZERO
+17E0 ; [.206B.0020.0002] # KHMER DIGIT ZERO
+17F0 ; [.206B.0020.0002] # KHMER SYMBOL LEK ATTAK SON
+1810 ; [.206B.0020.0002] # MONGOLIAN DIGIT ZERO
+1946 ; [.206B.0020.0002] # LIMBU DIGIT ZERO
+19D0 ; [.206B.0020.0002] # NEW TAI LUE DIGIT ZERO
+1A80 ; [.206B.0020.0002] # TAI THAM HORA DIGIT ZERO
+1A90 ; [.206B.0020.0002] # TAI THAM THAM DIGIT ZERO
+1B50 ; [.206B.0020.0002] # BALINESE DIGIT ZERO
+1BB0 ; [.206B.0020.0002] # SUNDANESE DIGIT ZERO
+1C40 ; [.206B.0020.0002] # LEPCHA DIGIT ZERO
+1C50 ; [.206B.0020.0002] # OL CHIKI DIGIT ZERO
+3007 ; [.206B.0020.0002] # IDEOGRAPHIC NUMBER ZERO
+A620 ; [.206B.0020.0002] # VAI DIGIT ZERO
+A8D0 ; [.206B.0020.0002] # SAURASHTRA DIGIT ZERO
+A900 ; [.206B.0020.0002] # KAYAH LI DIGIT ZERO
+A9D0 ; [.206B.0020.0002] # JAVANESE DIGIT ZERO
+A9F0 ; [.206B.0020.0002] # MYANMAR TAI LAING DIGIT ZERO
+AA50 ; [.206B.0020.0002] # CHAM DIGIT ZERO
+ABF0 ; [.206B.0020.0002] # MEETEI MAYEK DIGIT ZERO
+1018A ; [.206B.0020.0002] # GREEK ZERO SIGN
+104A0 ; [.206B.0020.0002] # OSMANYA DIGIT ZERO
+10D30 ; [.206B.0020.0002] # HANIFI ROHINGYA DIGIT ZERO
+11066 ; [.206B.0020.0002] # BRAHMI DIGIT ZERO
+110F0 ; [.206B.0020.0002] # SORA SOMPENG DIGIT ZERO
+11136 ; [.206B.0020.0002] # CHAKMA DIGIT ZERO
+111D0 ; [.206B.0020.0002] # SHARADA DIGIT ZERO
+112F0 ; [.206B.0020.0002] # KHUDAWADI DIGIT ZERO
+11450 ; [.206B.0020.0002] # NEWA DIGIT ZERO
+114D0 ; [.206B.0020.0002] # TIRHUTA DIGIT ZERO
+11650 ; [.206B.0020.0002] # MODI DIGIT ZERO
+116C0 ; [.206B.0020.0002] # TAKRI DIGIT ZERO
+11730 ; [.206B.0020.0002] # AHOM DIGIT ZERO
+118E0 ; [.206B.0020.0002] # WARANG CITI DIGIT ZERO
+11950 ; [.206B.0020.0002] # DIVES AKURU DIGIT ZERO
+11C50 ; [.206B.0020.0002] # BHAIKSUKI DIGIT ZERO
+11D50 ; [.206B.0020.0002] # MASARAM GONDI DIGIT ZERO
+11DA0 ; [.206B.0020.0002] # GUNJALA GONDI DIGIT ZERO
+16A60 ; [.206B.0020.0002] # MRO DIGIT ZERO
+16AC0 ; [.206B.0020.0002] # TANGSA DIGIT ZERO
+16B50 ; [.206B.0020.0002] # PAHAWH HMONG DIGIT ZERO
+16E80 ; [.206B.0020.0002] # MEDEFAIDRIN DIGIT ZERO
+1D2E0 ; [.206B.0020.0002] # MAYAN NUMERAL ZERO
+1E140 ; [.206B.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT ZERO
+1E2F0 ; [.206B.0020.0002] # WANCHO DIGIT ZERO
+1E950 ; [.206B.0020.0002] # ADLAM DIGIT ZERO
+FF10 ; [.206B.0020.0003] # FULLWIDTH DIGIT ZERO
+0F33 ; [.206B.0020.0004] # TIBETAN DIGIT HALF ZERO
+1F100 ; [.206B.0020.0004][*0281.0020.0004] # DIGIT ZERO FULL STOP
+1F101 ; [.206B.0020.0004][*0224.0020.0004] # DIGIT ZERO COMMA
+1D7CE ; [.206B.0020.0005] # MATHEMATICAL BOLD DIGIT ZERO
+1D7D8 ; [.206B.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
+1D7E2 ; [.206B.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT ZERO
+1D7EC ; [.206B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
+1D7F6 ; [.206B.0020.0005] # MATHEMATICAL MONOSPACE DIGIT ZERO
+1FBF0 ; [.206B.0020.0005] # SEGMENTED DIGIT ZERO
+24EA ; [.206B.0020.0006] # CIRCLED DIGIT ZERO
+24FF ; [.206B.0020.0006] # NEGATIVE CIRCLED DIGIT ZERO
+1F10B ; [.206B.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT ZERO
+1F10C ; [.206B.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
+2070 ; [.206B.0020.0014] # SUPERSCRIPT ZERO
+2080 ; [.206B.0020.0015] # SUBSCRIPT ZERO
+2189 ; [.206B.0020.001E][*06AD.0020.001E][.206E.0020.001E] # VULGAR FRACTION ZERO THIRDS
+3358 ; [.206B.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+0031 ; [.206C.0020.0002] # DIGIT ONE
+0661 ; [.206C.0020.0002] # ARABIC-INDIC DIGIT ONE
+06F1 ; [.206C.0020.0002] # EXTENDED ARABIC-INDIC DIGIT ONE
+07C1 ; [.206C.0020.0002] # NKO DIGIT ONE
+0967 ; [.206C.0020.0002] # DEVANAGARI DIGIT ONE
+09E7 ; [.206C.0020.0002] # BENGALI DIGIT ONE
+0A67 ; [.206C.0020.0002] # GURMUKHI DIGIT ONE
+0AE7 ; [.206C.0020.0002] # GUJARATI DIGIT ONE
+0B67 ; [.206C.0020.0002] # ORIYA DIGIT ONE
+0BE7 ; [.206C.0020.0002] # TAMIL DIGIT ONE
+0C67 ; [.206C.0020.0002] # TELUGU DIGIT ONE
+0C79 ; [.206C.0020.0002] # TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR
+0C7C ; [.206C.0020.0002] # TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR
+0CE7 ; [.206C.0020.0002] # KANNADA DIGIT ONE
+0D67 ; [.206C.0020.0002] # MALAYALAM DIGIT ONE
+0DE7 ; [.206C.0020.0002] # SINHALA LITH DIGIT ONE
+0E51 ; [.206C.0020.0002] # THAI DIGIT ONE
+0ED1 ; [.206C.0020.0002] # LAO DIGIT ONE
+0F21 ; [.206C.0020.0002] # TIBETAN DIGIT ONE
+1041 ; [.206C.0020.0002] # MYANMAR DIGIT ONE
+1091 ; [.206C.0020.0002] # MYANMAR SHAN DIGIT ONE
+1369 ; [.206C.0020.0002] # ETHIOPIC DIGIT ONE
+17E1 ; [.206C.0020.0002] # KHMER DIGIT ONE
+17F1 ; [.206C.0020.0002] # KHMER SYMBOL LEK ATTAK MUOY
+1811 ; [.206C.0020.0002] # MONGOLIAN DIGIT ONE
+1947 ; [.206C.0020.0002] # LIMBU DIGIT ONE
+19D1 ; [.206C.0020.0002] # NEW TAI LUE DIGIT ONE
+19DA ; [.206C.0020.0002] # NEW TAI LUE THAM DIGIT ONE
+1A81 ; [.206C.0020.0002] # TAI THAM HORA DIGIT ONE
+1A91 ; [.206C.0020.0002] # TAI THAM THAM DIGIT ONE
+1B51 ; [.206C.0020.0002] # BALINESE DIGIT ONE
+1BB1 ; [.206C.0020.0002] # SUNDANESE DIGIT ONE
+1C41 ; [.206C.0020.0002] # LEPCHA DIGIT ONE
+1C51 ; [.206C.0020.0002] # OL CHIKI DIGIT ONE
+3021 ; [.206C.0020.0002] # HANGZHOU NUMERAL ONE
+A621 ; [.206C.0020.0002] # VAI DIGIT ONE
+A8D1 ; [.206C.0020.0002] # SAURASHTRA DIGIT ONE
+A901 ; [.206C.0020.0002] # KAYAH LI DIGIT ONE
+A9D1 ; [.206C.0020.0002] # JAVANESE DIGIT ONE
+A9F1 ; [.206C.0020.0002] # MYANMAR TAI LAING DIGIT ONE
+AA51 ; [.206C.0020.0002] # CHAM DIGIT ONE
+ABF1 ; [.206C.0020.0002] # MEETEI MAYEK DIGIT ONE
+10107 ; [.206C.0020.0002] # AEGEAN NUMBER ONE
+10142 ; [.206C.0020.0002] # GREEK ACROPHONIC ATTIC ONE DRACHMA
+10158 ; [.206C.0020.0002] # GREEK ACROPHONIC HERAEUM ONE PLETHRON
+10159 ; [.206C.0020.0002] # GREEK ACROPHONIC THESPIAN ONE
+1015A ; [.206C.0020.0002] # GREEK ACROPHONIC HERMIONIAN ONE
+102E1 ; [.206C.0020.0002] # COPTIC EPACT DIGIT ONE
+10320 ; [.206C.0020.0002] # OLD ITALIC NUMERAL ONE
+103D1 ; [.206C.0020.0002] # OLD PERSIAN NUMBER ONE
+104A1 ; [.206C.0020.0002] # OSMANYA DIGIT ONE
+10858 ; [.206C.0020.0002] # IMPERIAL ARAMAIC NUMBER ONE
+10879 ; [.206C.0020.0002] # PALMYRENE NUMBER ONE
+108A7 ; [.206C.0020.0002] # NABATAEAN NUMBER ONE
+108FB ; [.206C.0020.0002] # HATRAN NUMBER ONE
+10916 ; [.206C.0020.0002] # PHOENICIAN NUMBER ONE
+109C0 ; [.206C.0020.0002] # MEROITIC CURSIVE NUMBER ONE
+10A40 ; [.206C.0020.0002] # KHAROSHTHI DIGIT ONE
+10A7D ; [.206C.0020.0002] # OLD SOUTH ARABIAN NUMBER ONE
+10A9D ; [.206C.0020.0002] # OLD NORTH ARABIAN NUMBER ONE
+10AEB ; [.206C.0020.0002] # MANICHAEAN NUMBER ONE
+10B58 ; [.206C.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER ONE
+10B78 ; [.206C.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER ONE
+10BA9 ; [.206C.0020.0002] # PSALTER PAHLAVI NUMBER ONE
+10CFA ; [.206C.0020.0002] # OLD HUNGARIAN NUMBER ONE
+10D31 ; [.206C.0020.0002] # HANIFI ROHINGYA DIGIT ONE
+10E60 ; [.206C.0020.0002] # RUMI DIGIT ONE
+10F1D ; [.206C.0020.0002] # OLD SOGDIAN NUMBER ONE
+10F51 ; [.206C.0020.0002] # SOGDIAN NUMBER ONE
+10FC5 ; [.206C.0020.0002] # CHORASMIAN NUMBER ONE
+11052 ; [.206C.0020.0002] # BRAHMI NUMBER ONE
+11067 ; [.206C.0020.0002] # BRAHMI DIGIT ONE
+110F1 ; [.206C.0020.0002] # SORA SOMPENG DIGIT ONE
+11137 ; [.206C.0020.0002] # CHAKMA DIGIT ONE
+111D1 ; [.206C.0020.0002] # SHARADA DIGIT ONE
+111E1 ; [.206C.0020.0002] # SINHALA ARCHAIC DIGIT ONE
+112F1 ; [.206C.0020.0002] # KHUDAWADI DIGIT ONE
+11451 ; [.206C.0020.0002] # NEWA DIGIT ONE
+114D1 ; [.206C.0020.0002] # TIRHUTA DIGIT ONE
+11651 ; [.206C.0020.0002] # MODI DIGIT ONE
+116C1 ; [.206C.0020.0002] # TAKRI DIGIT ONE
+11731 ; [.206C.0020.0002] # AHOM DIGIT ONE
+118E1 ; [.206C.0020.0002] # WARANG CITI DIGIT ONE
+11951 ; [.206C.0020.0002] # DIVES AKURU DIGIT ONE
+11C51 ; [.206C.0020.0002] # BHAIKSUKI DIGIT ONE
+11C5A ; [.206C.0020.0002] # BHAIKSUKI NUMBER ONE
+11D51 ; [.206C.0020.0002] # MASARAM GONDI DIGIT ONE
+11DA1 ; [.206C.0020.0002] # GUNJALA GONDI DIGIT ONE
+12415 ; [.206C.0020.0002] # CUNEIFORM NUMERIC SIGN ONE GESH2
+1241E ; [.206C.0020.0002] # CUNEIFORM NUMERIC SIGN ONE GESHU
+1242C ; [.206C.0020.0002] # CUNEIFORM NUMERIC SIGN ONE SHARU
+12434 ; [.206C.0020.0002] # CUNEIFORM NUMERIC SIGN ONE BURU
+1244F ; [.206C.0020.0002] # CUNEIFORM NUMERIC SIGN ONE BAN2
+12458 ; [.206C.0020.0002] # CUNEIFORM NUMERIC SIGN ONE ESHE3
+16A61 ; [.206C.0020.0002] # MRO DIGIT ONE
+16AC1 ; [.206C.0020.0002] # TANGSA DIGIT ONE
+16B51 ; [.206C.0020.0002] # PAHAWH HMONG DIGIT ONE
+16E81 ; [.206C.0020.0002] # MEDEFAIDRIN DIGIT ONE
+1D2E1 ; [.206C.0020.0002] # MAYAN NUMERAL ONE
+1D360 ; [.206C.0020.0002] # COUNTING ROD UNIT DIGIT ONE
+1D372 ; [.206C.0020.0002] # IDEOGRAPHIC TALLY MARK ONE
+1D377 ; [.206C.0020.0002] # TALLY MARK ONE
+1E141 ; [.206C.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT ONE
+1E2F1 ; [.206C.0020.0002] # WANCHO DIGIT ONE
+1E8C7 ; [.206C.0020.0002] # MENDE KIKAKUI DIGIT ONE
+1E951 ; [.206C.0020.0002] # ADLAM DIGIT ONE
+1EC71 ; [.206C.0020.0002] # INDIC SIYAQ NUMBER ONE
+1ECA3 ; [.206C.0020.0002] # INDIC SIYAQ NUMBER PREFIXED ONE
+1ED01 ; [.206C.0020.0002] # OTTOMAN SIYAQ NUMBER ONE
+FF11 ; [.206C.0020.0003] # FULLWIDTH DIGIT ONE
+0F2A ; [.206C.0020.0004] # TIBETAN DIGIT HALF ONE
+2474 ; [*0334.0020.0004][.206C.0020.0004][*0335.0020.0004] # PARENTHESIZED DIGIT ONE
+2488 ; [.206C.0020.0004][*0281.0020.0004] # DIGIT ONE FULL STOP
+1F102 ; [.206C.0020.0004][*0224.0020.0004] # DIGIT ONE COMMA
+1D7CF ; [.206C.0020.0005] # MATHEMATICAL BOLD DIGIT ONE
+1D7D9 ; [.206C.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
+1D7E3 ; [.206C.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT ONE
+1D7ED ; [.206C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
+1D7F7 ; [.206C.0020.0005] # MATHEMATICAL MONOSPACE DIGIT ONE
+1FBF1 ; [.206C.0020.0005] # SEGMENTED DIGIT ONE
+2460 ; [.206C.0020.0006] # CIRCLED DIGIT ONE
+24F5 ; [.206C.0020.0006] # DOUBLE CIRCLED DIGIT ONE
+2776 ; [.206C.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT ONE
+2780 ; [.206C.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT ONE
+278A ; [.206C.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE
+00B9 ; [.206C.0020.0014] # SUPERSCRIPT ONE
+2081 ; [.206C.0020.0015] # SUBSCRIPT ONE
+215F ; [.206C.0020.001E][*06AD.0020.001E] # FRACTION NUMERATOR ONE
+16E94 ; [.206C.0020.0004][.0000.0118.0004] # MEDEFAIDRIN DIGIT ONE ALTERNATE FORM
+1ECB1 ; [.206C.0020.0004][.0000.0118.0004] # INDIC SIYAQ NUMBER ALTERNATE ONE
+247D ; [*0334.0020.0004][.206C.0020.0004][.206B.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER TEN
+2491 ; [.206C.0020.0004][.206B.0020.0004][*0281.0020.0004] # NUMBER TEN FULL STOP
+2469 ; [.206C.0020.0006][.206B.0020.0006] # CIRCLED NUMBER TEN
+24FE ; [.206C.0020.0006][.206B.0020.0006] # DOUBLE CIRCLED NUMBER TEN
+277F ; [.206C.0020.0006][.206B.0020.0006] # DINGBAT NEGATIVE CIRCLED NUMBER TEN
+2789 ; [.206C.0020.0006][.206B.0020.0006] # DINGBAT CIRCLED SANS-SERIF NUMBER TEN
+2793 ; [.206C.0020.0006][.206B.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+3248 ; [.206C.0020.0006][.206B.0020.0006] # CIRCLED NUMBER TEN ON BLACK SQUARE
+33E9 ; [.206C.0020.0004][.206B.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+32C9 ; [.206C.0020.0004][.206B.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+3362 ; [.206C.0020.0004][.206B.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+247E ; [*0334.0020.0004][.206C.0020.0004][.206C.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER ELEVEN
+2492 ; [.206C.0020.0004][.206C.0020.0004][*0281.0020.0004] # NUMBER ELEVEN FULL STOP
+246A ; [.206C.0020.0006][.206C.0020.0006] # CIRCLED NUMBER ELEVEN
+24EB ; [.206C.0020.0006][.206C.0020.0006] # NEGATIVE CIRCLED NUMBER ELEVEN
+2152 ; [.206C.0020.001E][*06AD.0020.001E][.206C.0020.001E][.206B.0020.001E] # VULGAR FRACTION ONE TENTH
+33EA ; [.206C.0020.0004][.206C.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+32CA ; [.206C.0020.0004][.206C.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+3363 ; [.206C.0020.0004][.206C.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+247F ; [*0334.0020.0004][.206C.0020.0004][.206D.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER TWELVE
+2493 ; [.206C.0020.0004][.206D.0020.0004][*0281.0020.0004] # NUMBER TWELVE FULL STOP
+246B ; [.206C.0020.0006][.206D.0020.0006] # CIRCLED NUMBER TWELVE
+24EC ; [.206C.0020.0006][.206D.0020.0006] # NEGATIVE CIRCLED NUMBER TWELVE
+00BD ; [.206C.0020.001E][*06AD.0020.001E][.206D.0020.001E] # VULGAR FRACTION ONE HALF
+1F1A4 ; [.206C.0020.001C][.206D.0020.001C][.206B.0020.001C][.224D.0020.001D] # SQUARED ONE HUNDRED TWENTY P
+33EB ; [.206C.0020.0004][.206D.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+32CB ; [.206C.0020.0004][.206D.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+3364 ; [.206C.0020.0004][.206D.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+2480 ; [*0334.0020.0004][.206C.0020.0004][.206E.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER THIRTEEN
+2494 ; [.206C.0020.0004][.206E.0020.0004][*0281.0020.0004] # NUMBER THIRTEEN FULL STOP
+246C ; [.206C.0020.0006][.206E.0020.0006] # CIRCLED NUMBER THIRTEEN
+24ED ; [.206C.0020.0006][.206E.0020.0006] # NEGATIVE CIRCLED NUMBER THIRTEEN
+2153 ; [.206C.0020.001E][*06AD.0020.001E][.206E.0020.001E] # VULGAR FRACTION ONE THIRD
+33EC ; [.206C.0020.0004][.206E.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+3365 ; [.206C.0020.0004][.206E.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+2481 ; [*0334.0020.0004][.206C.0020.0004][.206F.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER FOURTEEN
+2495 ; [.206C.0020.0004][.206F.0020.0004][*0281.0020.0004] # NUMBER FOURTEEN FULL STOP
+246D ; [.206C.0020.0006][.206F.0020.0006] # CIRCLED NUMBER FOURTEEN
+24EE ; [.206C.0020.0006][.206F.0020.0006] # NEGATIVE CIRCLED NUMBER FOURTEEN
+00BC ; [.206C.0020.001E][*06AD.0020.001E][.206F.0020.001E] # VULGAR FRACTION ONE QUARTER
+33ED ; [.206C.0020.0004][.206F.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+3366 ; [.206C.0020.0004][.206F.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+2482 ; [*0334.0020.0004][.206C.0020.0004][.2070.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER FIFTEEN
+2496 ; [.206C.0020.0004][.2070.0020.0004][*0281.0020.0004] # NUMBER FIFTEEN FULL STOP
+246E ; [.206C.0020.0006][.2070.0020.0006] # CIRCLED NUMBER FIFTEEN
+24EF ; [.206C.0020.0006][.2070.0020.0006] # NEGATIVE CIRCLED NUMBER FIFTEEN
+2155 ; [.206C.0020.001E][*06AD.0020.001E][.2070.0020.001E] # VULGAR FRACTION ONE FIFTH
+33EE ; [.206C.0020.0004][.2070.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+3367 ; [.206C.0020.0004][.2070.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+2483 ; [*0334.0020.0004][.206C.0020.0004][.2071.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER SIXTEEN
+2497 ; [.206C.0020.0004][.2071.0020.0004][*0281.0020.0004] # NUMBER SIXTEEN FULL STOP
+246F ; [.206C.0020.0006][.2071.0020.0006] # CIRCLED NUMBER SIXTEEN
+24F0 ; [.206C.0020.0006][.2071.0020.0006] # NEGATIVE CIRCLED NUMBER SIXTEEN
+2159 ; [.206C.0020.001E][*06AD.0020.001E][.2071.0020.001E] # VULGAR FRACTION ONE SIXTH
+33EF ; [.206C.0020.0004][.2071.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+3368 ; [.206C.0020.0004][.2071.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+2484 ; [*0334.0020.0004][.206C.0020.0004][.2072.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER SEVENTEEN
+2498 ; [.206C.0020.0004][.2072.0020.0004][*0281.0020.0004] # NUMBER SEVENTEEN FULL STOP
+2470 ; [.206C.0020.0006][.2072.0020.0006] # CIRCLED NUMBER SEVENTEEN
+24F1 ; [.206C.0020.0006][.2072.0020.0006] # NEGATIVE CIRCLED NUMBER SEVENTEEN
+2150 ; [.206C.0020.001E][*06AD.0020.001E][.2072.0020.001E] # VULGAR FRACTION ONE SEVENTH
+33F0 ; [.206C.0020.0004][.2072.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+3369 ; [.206C.0020.0004][.2072.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+2485 ; [*0334.0020.0004][.206C.0020.0004][.2073.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER EIGHTEEN
+2499 ; [.206C.0020.0004][.2073.0020.0004][*0281.0020.0004] # NUMBER EIGHTEEN FULL STOP
+2471 ; [.206C.0020.0006][.2073.0020.0006] # CIRCLED NUMBER EIGHTEEN
+24F2 ; [.206C.0020.0006][.2073.0020.0006] # NEGATIVE CIRCLED NUMBER EIGHTEEN
+215B ; [.206C.0020.001E][*06AD.0020.001E][.2073.0020.001E] # VULGAR FRACTION ONE EIGHTH
+33F1 ; [.206C.0020.0004][.2073.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+336A ; [.206C.0020.0004][.2073.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+2486 ; [*0334.0020.0004][.206C.0020.0004][.2074.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER NINETEEN
+249A ; [.206C.0020.0004][.2074.0020.0004][*0281.0020.0004] # NUMBER NINETEEN FULL STOP
+2472 ; [.206C.0020.0006][.2074.0020.0006] # CIRCLED NUMBER NINETEEN
+24F3 ; [.206C.0020.0006][.2074.0020.0006] # NEGATIVE CIRCLED NUMBER NINETEEN
+2151 ; [.206C.0020.001E][*06AD.0020.001E][.2074.0020.001E] # VULGAR FRACTION ONE NINTH
+33F2 ; [.206C.0020.0004][.2074.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+336B ; [.206C.0020.0004][.2074.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+33E0 ; [.206C.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+32C0 ; [.206C.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+3359 ; [.206C.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+0032 ; [.206D.0020.0002] # DIGIT TWO
+0662 ; [.206D.0020.0002] # ARABIC-INDIC DIGIT TWO
+06F2 ; [.206D.0020.0002] # EXTENDED ARABIC-INDIC DIGIT TWO
+07C2 ; [.206D.0020.0002] # NKO DIGIT TWO
+0968 ; [.206D.0020.0002] # DEVANAGARI DIGIT TWO
+09E8 ; [.206D.0020.0002] # BENGALI DIGIT TWO
+0A68 ; [.206D.0020.0002] # GURMUKHI DIGIT TWO
+0AE8 ; [.206D.0020.0002] # GUJARATI DIGIT TWO
+0B68 ; [.206D.0020.0002] # ORIYA DIGIT TWO
+0BE8 ; [.206D.0020.0002] # TAMIL DIGIT TWO
+0C68 ; [.206D.0020.0002] # TELUGU DIGIT TWO
+0C7A ; [.206D.0020.0002] # TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR
+0C7D ; [.206D.0020.0002] # TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR
+0CE8 ; [.206D.0020.0002] # KANNADA DIGIT TWO
+0D68 ; [.206D.0020.0002] # MALAYALAM DIGIT TWO
+0DE8 ; [.206D.0020.0002] # SINHALA LITH DIGIT TWO
+0E52 ; [.206D.0020.0002] # THAI DIGIT TWO
+0ED2 ; [.206D.0020.0002] # LAO DIGIT TWO
+0F22 ; [.206D.0020.0002] # TIBETAN DIGIT TWO
+1042 ; [.206D.0020.0002] # MYANMAR DIGIT TWO
+1092 ; [.206D.0020.0002] # MYANMAR SHAN DIGIT TWO
+136A ; [.206D.0020.0002] # ETHIOPIC DIGIT TWO
+17E2 ; [.206D.0020.0002] # KHMER DIGIT TWO
+17F2 ; [.206D.0020.0002] # KHMER SYMBOL LEK ATTAK PII
+1812 ; [.206D.0020.0002] # MONGOLIAN DIGIT TWO
+1948 ; [.206D.0020.0002] # LIMBU DIGIT TWO
+19D2 ; [.206D.0020.0002] # NEW TAI LUE DIGIT TWO
+1A82 ; [.206D.0020.0002] # TAI THAM HORA DIGIT TWO
+1A92 ; [.206D.0020.0002] # TAI THAM THAM DIGIT TWO
+1B52 ; [.206D.0020.0002] # BALINESE DIGIT TWO
+1BB2 ; [.206D.0020.0002] # SUNDANESE DIGIT TWO
+1C42 ; [.206D.0020.0002] # LEPCHA DIGIT TWO
+1C52 ; [.206D.0020.0002] # OL CHIKI DIGIT TWO
+3022 ; [.206D.0020.0002] # HANGZHOU NUMERAL TWO
+A622 ; [.206D.0020.0002] # VAI DIGIT TWO
+A8D2 ; [.206D.0020.0002] # SAURASHTRA DIGIT TWO
+A902 ; [.206D.0020.0002] # KAYAH LI DIGIT TWO
+A9D2 ; [.206D.0020.0002] # JAVANESE DIGIT TWO
+A9F2 ; [.206D.0020.0002] # MYANMAR TAI LAING DIGIT TWO
+AA52 ; [.206D.0020.0002] # CHAM DIGIT TWO
+ABF2 ; [.206D.0020.0002] # MEETEI MAYEK DIGIT TWO
+10108 ; [.206D.0020.0002] # AEGEAN NUMBER TWO
+1015B ; [.206D.0020.0002] # GREEK ACROPHONIC EPIDAUREAN TWO
+1015C ; [.206D.0020.0002] # GREEK ACROPHONIC THESPIAN TWO
+1015D ; [.206D.0020.0002] # GREEK ACROPHONIC CYRENAIC TWO DRACHMAS
+1015E ; [.206D.0020.0002] # GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS
+102E2 ; [.206D.0020.0002] # COPTIC EPACT DIGIT TWO
+103D2 ; [.206D.0020.0002] # OLD PERSIAN NUMBER TWO
+104A2 ; [.206D.0020.0002] # OSMANYA DIGIT TWO
+10859 ; [.206D.0020.0002] # IMPERIAL ARAMAIC NUMBER TWO
+1087A ; [.206D.0020.0002] # PALMYRENE NUMBER TWO
+108A8 ; [.206D.0020.0002] # NABATAEAN NUMBER TWO
+1091A ; [.206D.0020.0002] # PHOENICIAN NUMBER TWO
+109C1 ; [.206D.0020.0002] # MEROITIC CURSIVE NUMBER TWO
+10A41 ; [.206D.0020.0002] # KHAROSHTHI DIGIT TWO
+10B59 ; [.206D.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER TWO
+10B79 ; [.206D.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER TWO
+10BAA ; [.206D.0020.0002] # PSALTER PAHLAVI NUMBER TWO
+10D32 ; [.206D.0020.0002] # HANIFI ROHINGYA DIGIT TWO
+10E61 ; [.206D.0020.0002] # RUMI DIGIT TWO
+10F1E ; [.206D.0020.0002] # OLD SOGDIAN NUMBER TWO
+10FC6 ; [.206D.0020.0002] # CHORASMIAN NUMBER TWO
+11053 ; [.206D.0020.0002] # BRAHMI NUMBER TWO
+11068 ; [.206D.0020.0002] # BRAHMI DIGIT TWO
+110F2 ; [.206D.0020.0002] # SORA SOMPENG DIGIT TWO
+11138 ; [.206D.0020.0002] # CHAKMA DIGIT TWO
+111D2 ; [.206D.0020.0002] # SHARADA DIGIT TWO
+111E2 ; [.206D.0020.0002] # SINHALA ARCHAIC DIGIT TWO
+112F2 ; [.206D.0020.0002] # KHUDAWADI DIGIT TWO
+11452 ; [.206D.0020.0002] # NEWA DIGIT TWO
+114D2 ; [.206D.0020.0002] # TIRHUTA DIGIT TWO
+11652 ; [.206D.0020.0002] # MODI DIGIT TWO
+116C2 ; [.206D.0020.0002] # TAKRI DIGIT TWO
+11732 ; [.206D.0020.0002] # AHOM DIGIT TWO
+118E2 ; [.206D.0020.0002] # WARANG CITI DIGIT TWO
+11952 ; [.206D.0020.0002] # DIVES AKURU DIGIT TWO
+11C52 ; [.206D.0020.0002] # BHAIKSUKI DIGIT TWO
+11C5B ; [.206D.0020.0002] # BHAIKSUKI NUMBER TWO
+11D52 ; [.206D.0020.0002] # MASARAM GONDI DIGIT TWO
+11DA2 ; [.206D.0020.0002] # GUNJALA GONDI DIGIT TWO
+12400 ; [.206D.0020.0002] # CUNEIFORM NUMERIC SIGN TWO ASH
+12416 ; [.206D.0020.0002] # CUNEIFORM NUMERIC SIGN TWO GESH2
+1241F ; [.206D.0020.0002] # CUNEIFORM NUMERIC SIGN TWO GESHU
+12423 ; [.206D.0020.0002] # CUNEIFORM NUMERIC SIGN TWO SHAR2
+1242D ; [.206D.0020.0002] # CUNEIFORM NUMERIC SIGN TWO SHARU
+12435 ; [.206D.0020.0002] # CUNEIFORM NUMERIC SIGN TWO BURU
+1244A ; [.206D.0020.0002] # CUNEIFORM NUMERIC SIGN TWO ASH TENU
+12450 ; [.206D.0020.0002] # CUNEIFORM NUMERIC SIGN TWO BAN2
+12456 ; [.206D.0020.0002] # CUNEIFORM NUMERIC SIGN NIGIDAMIN
+12459 ; [.206D.0020.0002] # CUNEIFORM NUMERIC SIGN TWO ESHE3
+16A62 ; [.206D.0020.0002] # MRO DIGIT TWO
+16AC2 ; [.206D.0020.0002] # TANGSA DIGIT TWO
+16B52 ; [.206D.0020.0002] # PAHAWH HMONG DIGIT TWO
+16E82 ; [.206D.0020.0002] # MEDEFAIDRIN DIGIT TWO
+1D2E2 ; [.206D.0020.0002] # MAYAN NUMERAL TWO
+1D361 ; [.206D.0020.0002] # COUNTING ROD UNIT DIGIT TWO
+1D373 ; [.206D.0020.0002] # IDEOGRAPHIC TALLY MARK TWO
+1E142 ; [.206D.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT TWO
+1E2F2 ; [.206D.0020.0002] # WANCHO DIGIT TWO
+1E8C8 ; [.206D.0020.0002] # MENDE KIKAKUI DIGIT TWO
+1E952 ; [.206D.0020.0002] # ADLAM DIGIT TWO
+1EC72 ; [.206D.0020.0002] # INDIC SIYAQ NUMBER TWO
+1ECA4 ; [.206D.0020.0002] # INDIC SIYAQ NUMBER PREFIXED TWO
+1ED02 ; [.206D.0020.0002] # OTTOMAN SIYAQ NUMBER TWO
+FF12 ; [.206D.0020.0003] # FULLWIDTH DIGIT TWO
+0F2B ; [.206D.0020.0004] # TIBETAN DIGIT HALF TWO
+2475 ; [*0334.0020.0004][.206D.0020.0004][*0335.0020.0004] # PARENTHESIZED DIGIT TWO
+2489 ; [.206D.0020.0004][*0281.0020.0004] # DIGIT TWO FULL STOP
+1F103 ; [.206D.0020.0004][*0224.0020.0004] # DIGIT TWO COMMA
+1D7D0 ; [.206D.0020.0005] # MATHEMATICAL BOLD DIGIT TWO
+1D7DA ; [.206D.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
+1D7E4 ; [.206D.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT TWO
+1D7EE ; [.206D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
+1D7F8 ; [.206D.0020.0005] # MATHEMATICAL MONOSPACE DIGIT TWO
+1FBF2 ; [.206D.0020.0005] # SEGMENTED DIGIT TWO
+2461 ; [.206D.0020.0006] # CIRCLED DIGIT TWO
+24F6 ; [.206D.0020.0006] # DOUBLE CIRCLED DIGIT TWO
+2777 ; [.206D.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT TWO
+2781 ; [.206D.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT TWO
+278B ; [.206D.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO
+00B2 ; [.206D.0020.0014] # SUPERSCRIPT TWO
+2082 ; [.206D.0020.0015] # SUBSCRIPT TWO
+16E95 ; [.206D.0020.0004][.0000.0118.0004] # MEDEFAIDRIN DIGIT TWO ALTERNATE FORM
+1ECB2 ; [.206D.0020.0004][.0000.0118.0004] # INDIC SIYAQ NUMBER ALTERNATE TWO
+1ED2F ; [.206D.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER TWO
+2487 ; [*0334.0020.0004][.206D.0020.0004][.206B.0020.0004][*0335.0020.0004] # PARENTHESIZED NUMBER TWENTY
+249B ; [.206D.0020.0004][.206B.0020.0004][*0281.0020.0004] # NUMBER TWENTY FULL STOP
+2473 ; [.206D.0020.0006][.206B.0020.0006] # CIRCLED NUMBER TWENTY
+24F4 ; [.206D.0020.0006][.206B.0020.0006] # NEGATIVE CIRCLED NUMBER TWENTY
+3249 ; [.206D.0020.0006][.206B.0020.0006] # CIRCLED NUMBER TWENTY ON BLACK SQUARE
+33F3 ; [.206D.0020.0004][.206B.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+336C ; [.206D.0020.0004][.206B.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+3251 ; [.206D.0020.0006][.206C.0020.0006] # CIRCLED NUMBER TWENTY ONE
+33F4 ; [.206D.0020.0004][.206C.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+336D ; [.206D.0020.0004][.206C.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+3252 ; [.206D.0020.0006][.206D.0020.0006] # CIRCLED NUMBER TWENTY TWO
+1F1A2 ; [.206D.0020.001C][.206D.0020.001C][*0281.0020.001C][.206D.0020.001C] # SQUARED TWENTY-TWO POINT TWO
+33F5 ; [.206D.0020.0004][.206D.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+336E ; [.206D.0020.0004][.206D.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+3253 ; [.206D.0020.0006][.206E.0020.0006] # CIRCLED NUMBER TWENTY THREE
+2154 ; [.206D.0020.001E][*06AD.0020.001E][.206E.0020.001E] # VULGAR FRACTION TWO THIRDS
+33F6 ; [.206D.0020.0004][.206E.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+336F ; [.206D.0020.0004][.206E.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+3254 ; [.206D.0020.0006][.206F.0020.0006] # CIRCLED NUMBER TWENTY FOUR
+33F7 ; [.206D.0020.0004][.206F.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+3370 ; [.206D.0020.0004][.206F.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+3255 ; [.206D.0020.0006][.2070.0020.0006] # CIRCLED NUMBER TWENTY FIVE
+2156 ; [.206D.0020.001E][*06AD.0020.001E][.2070.0020.001E] # VULGAR FRACTION TWO FIFTHS
+33F8 ; [.206D.0020.0004][.2070.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+3256 ; [.206D.0020.0006][.2071.0020.0006] # CIRCLED NUMBER TWENTY SIX
+33F9 ; [.206D.0020.0004][.2071.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+3257 ; [.206D.0020.0006][.2072.0020.0006] # CIRCLED NUMBER TWENTY SEVEN
+33FA ; [.206D.0020.0004][.2072.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+3258 ; [.206D.0020.0006][.2073.0020.0006] # CIRCLED NUMBER TWENTY EIGHT
+33FB ; [.206D.0020.0004][.2073.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+3259 ; [.206D.0020.0006][.2074.0020.0006] # CIRCLED NUMBER TWENTY NINE
+33FC ; [.206D.0020.0004][.2074.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+1F19D ; [.206D.0020.001C][.219C.0020.001D] # SQUARED TWO K
+1F19C ; [.206D.0020.001C][.21F7.0020.001C][.20BF.0020.001C][*0209.0020.001C][.22B6.0020.001D][.20A9.0020.001C][.2275.0020.001C] # SQUARED SECOND SCREEN
+33E1 ; [.206D.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+32C1 ; [.206D.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+335A ; [.206D.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+0033 ; [.206E.0020.0002] # DIGIT THREE
+0663 ; [.206E.0020.0002] # ARABIC-INDIC DIGIT THREE
+06F3 ; [.206E.0020.0002] # EXTENDED ARABIC-INDIC DIGIT THREE
+07C3 ; [.206E.0020.0002] # NKO DIGIT THREE
+0969 ; [.206E.0020.0002] # DEVANAGARI DIGIT THREE
+09E9 ; [.206E.0020.0002] # BENGALI DIGIT THREE
+0A69 ; [.206E.0020.0002] # GURMUKHI DIGIT THREE
+0AE9 ; [.206E.0020.0002] # GUJARATI DIGIT THREE
+0B69 ; [.206E.0020.0002] # ORIYA DIGIT THREE
+0BE9 ; [.206E.0020.0002] # TAMIL DIGIT THREE
+0C69 ; [.206E.0020.0002] # TELUGU DIGIT THREE
+0C7B ; [.206E.0020.0002] # TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR
+0C7E ; [.206E.0020.0002] # TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
+0CE9 ; [.206E.0020.0002] # KANNADA DIGIT THREE
+0D69 ; [.206E.0020.0002] # MALAYALAM DIGIT THREE
+0DE9 ; [.206E.0020.0002] # SINHALA LITH DIGIT THREE
+0E53 ; [.206E.0020.0002] # THAI DIGIT THREE
+0ED3 ; [.206E.0020.0002] # LAO DIGIT THREE
+0F23 ; [.206E.0020.0002] # TIBETAN DIGIT THREE
+1043 ; [.206E.0020.0002] # MYANMAR DIGIT THREE
+1093 ; [.206E.0020.0002] # MYANMAR SHAN DIGIT THREE
+136B ; [.206E.0020.0002] # ETHIOPIC DIGIT THREE
+17E3 ; [.206E.0020.0002] # KHMER DIGIT THREE
+17F3 ; [.206E.0020.0002] # KHMER SYMBOL LEK ATTAK BEI
+1813 ; [.206E.0020.0002] # MONGOLIAN DIGIT THREE
+1949 ; [.206E.0020.0002] # LIMBU DIGIT THREE
+19D3 ; [.206E.0020.0002] # NEW TAI LUE DIGIT THREE
+1A83 ; [.206E.0020.0002] # TAI THAM HORA DIGIT THREE
+1A93 ; [.206E.0020.0002] # TAI THAM THAM DIGIT THREE
+1B53 ; [.206E.0020.0002] # BALINESE DIGIT THREE
+1BB3 ; [.206E.0020.0002] # SUNDANESE DIGIT THREE
+1C43 ; [.206E.0020.0002] # LEPCHA DIGIT THREE
+1C53 ; [.206E.0020.0002] # OL CHIKI DIGIT THREE
+3023 ; [.206E.0020.0002] # HANGZHOU NUMERAL THREE
+A623 ; [.206E.0020.0002] # VAI DIGIT THREE
+A8D3 ; [.206E.0020.0002] # SAURASHTRA DIGIT THREE
+A903 ; [.206E.0020.0002] # KAYAH LI DIGIT THREE
+A9D3 ; [.206E.0020.0002] # JAVANESE DIGIT THREE
+A9F3 ; [.206E.0020.0002] # MYANMAR TAI LAING DIGIT THREE
+AA53 ; [.206E.0020.0002] # CHAM DIGIT THREE
+ABF3 ; [.206E.0020.0002] # MEETEI MAYEK DIGIT THREE
+10109 ; [.206E.0020.0002] # AEGEAN NUMBER THREE
+102E3 ; [.206E.0020.0002] # COPTIC EPACT DIGIT THREE
+104A3 ; [.206E.0020.0002] # OSMANYA DIGIT THREE
+1085A ; [.206E.0020.0002] # IMPERIAL ARAMAIC NUMBER THREE
+1087B ; [.206E.0020.0002] # PALMYRENE NUMBER THREE
+108A9 ; [.206E.0020.0002] # NABATAEAN NUMBER THREE
+1091B ; [.206E.0020.0002] # PHOENICIAN NUMBER THREE
+109C2 ; [.206E.0020.0002] # MEROITIC CURSIVE NUMBER THREE
+10A42 ; [.206E.0020.0002] # KHAROSHTHI DIGIT THREE
+10B5A ; [.206E.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER THREE
+10B7A ; [.206E.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER THREE
+10BAB ; [.206E.0020.0002] # PSALTER PAHLAVI NUMBER THREE
+10D33 ; [.206E.0020.0002] # HANIFI ROHINGYA DIGIT THREE
+10E62 ; [.206E.0020.0002] # RUMI DIGIT THREE
+10F1F ; [.206E.0020.0002] # OLD SOGDIAN NUMBER THREE
+10FC7 ; [.206E.0020.0002] # CHORASMIAN NUMBER THREE
+11054 ; [.206E.0020.0002] # BRAHMI NUMBER THREE
+11069 ; [.206E.0020.0002] # BRAHMI DIGIT THREE
+110F3 ; [.206E.0020.0002] # SORA SOMPENG DIGIT THREE
+11139 ; [.206E.0020.0002] # CHAKMA DIGIT THREE
+111D3 ; [.206E.0020.0002] # SHARADA DIGIT THREE
+111E3 ; [.206E.0020.0002] # SINHALA ARCHAIC DIGIT THREE
+112F3 ; [.206E.0020.0002] # KHUDAWADI DIGIT THREE
+11453 ; [.206E.0020.0002] # NEWA DIGIT THREE
+114D3 ; [.206E.0020.0002] # TIRHUTA DIGIT THREE
+11653 ; [.206E.0020.0002] # MODI DIGIT THREE
+116C3 ; [.206E.0020.0002] # TAKRI DIGIT THREE
+11733 ; [.206E.0020.0002] # AHOM DIGIT THREE
+118E3 ; [.206E.0020.0002] # WARANG CITI DIGIT THREE
+11953 ; [.206E.0020.0002] # DIVES AKURU DIGIT THREE
+11C53 ; [.206E.0020.0002] # BHAIKSUKI DIGIT THREE
+11C5C ; [.206E.0020.0002] # BHAIKSUKI NUMBER THREE
+11D53 ; [.206E.0020.0002] # MASARAM GONDI DIGIT THREE
+11DA3 ; [.206E.0020.0002] # GUNJALA GONDI DIGIT THREE
+12401 ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE ASH
+12408 ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE DISH
+12417 ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE GESH2
+12420 ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE GESHU
+12424 ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHAR2
+12425 ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM
+1242E ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHARU
+1242F ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM
+12436 ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE BURU
+12437 ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM
+1243A ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16
+1243B ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21
+1244B ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE ASH TENU
+12451 ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN THREE BAN2
+12457 ; [.206E.0020.0002] # CUNEIFORM NUMERIC SIGN NIGIDAESH
+16A63 ; [.206E.0020.0002] # MRO DIGIT THREE
+16AC3 ; [.206E.0020.0002] # TANGSA DIGIT THREE
+16B53 ; [.206E.0020.0002] # PAHAWH HMONG DIGIT THREE
+16E83 ; [.206E.0020.0002] # MEDEFAIDRIN DIGIT THREE
+1D2E3 ; [.206E.0020.0002] # MAYAN NUMERAL THREE
+1D362 ; [.206E.0020.0002] # COUNTING ROD UNIT DIGIT THREE
+1D374 ; [.206E.0020.0002] # IDEOGRAPHIC TALLY MARK THREE
+1E143 ; [.206E.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT THREE
+1E2F3 ; [.206E.0020.0002] # WANCHO DIGIT THREE
+1E8C9 ; [.206E.0020.0002] # MENDE KIKAKUI DIGIT THREE
+1E953 ; [.206E.0020.0002] # ADLAM DIGIT THREE
+1EC73 ; [.206E.0020.0002] # INDIC SIYAQ NUMBER THREE
+1ECA5 ; [.206E.0020.0002] # INDIC SIYAQ NUMBER PREFIXED THREE
+1ED03 ; [.206E.0020.0002] # OTTOMAN SIYAQ NUMBER THREE
+FF13 ; [.206E.0020.0003] # FULLWIDTH DIGIT THREE
+0F2C ; [.206E.0020.0004] # TIBETAN DIGIT HALF THREE
+2476 ; [*0334.0020.0004][.206E.0020.0004][*0335.0020.0004] # PARENTHESIZED DIGIT THREE
+248A ; [.206E.0020.0004][*0281.0020.0004] # DIGIT THREE FULL STOP
+1F104 ; [.206E.0020.0004][*0224.0020.0004] # DIGIT THREE COMMA
+1D7D1 ; [.206E.0020.0005] # MATHEMATICAL BOLD DIGIT THREE
+1D7DB ; [.206E.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
+1D7E5 ; [.206E.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT THREE
+1D7EF ; [.206E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
+1D7F9 ; [.206E.0020.0005] # MATHEMATICAL MONOSPACE DIGIT THREE
+1FBF3 ; [.206E.0020.0005] # SEGMENTED DIGIT THREE
+2462 ; [.206E.0020.0006] # CIRCLED DIGIT THREE
+24F7 ; [.206E.0020.0006] # DOUBLE CIRCLED DIGIT THREE
+2778 ; [.206E.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT THREE
+2782 ; [.206E.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT THREE
+278C ; [.206E.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE
+00B3 ; [.206E.0020.0014] # SUPERSCRIPT THREE
+2083 ; [.206E.0020.0015] # SUBSCRIPT THREE
+16E96 ; [.206E.0020.0002][.0000.0118.0002] # MEDEFAIDRIN DIGIT THREE ALTERNATE FORM
+1ED30 ; [.206E.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER THREE
+324A ; [.206E.0020.0006][.206B.0020.0006] # CIRCLED NUMBER THIRTY ON BLACK SQUARE
+325A ; [.206E.0020.0006][.206B.0020.0006] # CIRCLED NUMBER THIRTY
+33FD ; [.206E.0020.0004][.206B.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+325B ; [.206E.0020.0006][.206C.0020.0006] # CIRCLED NUMBER THIRTY ONE
+33FE ; [.206E.0020.0004][.206C.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+325C ; [.206E.0020.0006][.206D.0020.0006] # CIRCLED NUMBER THIRTY TWO
+325D ; [.206E.0020.0006][.206E.0020.0006] # CIRCLED NUMBER THIRTY THREE
+325E ; [.206E.0020.0006][.206F.0020.0006] # CIRCLED NUMBER THIRTY FOUR
+00BE ; [.206E.0020.001E][*06AD.0020.001E][.206F.0020.001E] # VULGAR FRACTION THREE QUARTERS
+325F ; [.206E.0020.0006][.2070.0020.0006] # CIRCLED NUMBER THIRTY FIVE
+2157 ; [.206E.0020.001E][*06AD.0020.001E][.2070.0020.001E] # VULGAR FRACTION THREE FIFTHS
+32B1 ; [.206E.0020.0006][.2071.0020.0006] # CIRCLED NUMBER THIRTY SIX
+32B2 ; [.206E.0020.0006][.2072.0020.0006] # CIRCLED NUMBER THIRTY SEVEN
+32B3 ; [.206E.0020.0006][.2073.0020.0006] # CIRCLED NUMBER THIRTY EIGHT
+215C ; [.206E.0020.001E][*06AD.0020.001E][.2073.0020.001E] # VULGAR FRACTION THREE EIGHTHS
+32B4 ; [.206E.0020.0006][.2074.0020.0006] # CIRCLED NUMBER THIRTY NINE
+1F19B ; [.206E.0020.001C][.20BF.0020.001D] # SQUARED THREE D
+33E2 ; [.206E.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+32C2 ; [.206E.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+335B ; [.206E.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+0034 ; [.206F.0020.0002] # DIGIT FOUR
+0664 ; [.206F.0020.0002] # ARABIC-INDIC DIGIT FOUR
+06F4 ; [.206F.0020.0002] # EXTENDED ARABIC-INDIC DIGIT FOUR
+07C4 ; [.206F.0020.0002] # NKO DIGIT FOUR
+096A ; [.206F.0020.0002] # DEVANAGARI DIGIT FOUR
+09EA ; [.206F.0020.0002] # BENGALI DIGIT FOUR
+0A6A ; [.206F.0020.0002] # GURMUKHI DIGIT FOUR
+0AEA ; [.206F.0020.0002] # GUJARATI DIGIT FOUR
+0B6A ; [.206F.0020.0002] # ORIYA DIGIT FOUR
+0BEA ; [.206F.0020.0002] # TAMIL DIGIT FOUR
+0C6A ; [.206F.0020.0002] # TELUGU DIGIT FOUR
+0CEA ; [.206F.0020.0002] # KANNADA DIGIT FOUR
+0D6A ; [.206F.0020.0002] # MALAYALAM DIGIT FOUR
+0DEA ; [.206F.0020.0002] # SINHALA LITH DIGIT FOUR
+0E54 ; [.206F.0020.0002] # THAI DIGIT FOUR
+0ED4 ; [.206F.0020.0002] # LAO DIGIT FOUR
+0F24 ; [.206F.0020.0002] # TIBETAN DIGIT FOUR
+1044 ; [.206F.0020.0002] # MYANMAR DIGIT FOUR
+1094 ; [.206F.0020.0002] # MYANMAR SHAN DIGIT FOUR
+136C ; [.206F.0020.0002] # ETHIOPIC DIGIT FOUR
+17E4 ; [.206F.0020.0002] # KHMER DIGIT FOUR
+17F4 ; [.206F.0020.0002] # KHMER SYMBOL LEK ATTAK BUON
+1814 ; [.206F.0020.0002] # MONGOLIAN DIGIT FOUR
+194A ; [.206F.0020.0002] # LIMBU DIGIT FOUR
+19D4 ; [.206F.0020.0002] # NEW TAI LUE DIGIT FOUR
+1A84 ; [.206F.0020.0002] # TAI THAM HORA DIGIT FOUR
+1A94 ; [.206F.0020.0002] # TAI THAM THAM DIGIT FOUR
+1B54 ; [.206F.0020.0002] # BALINESE DIGIT FOUR
+1BB4 ; [.206F.0020.0002] # SUNDANESE DIGIT FOUR
+1C44 ; [.206F.0020.0002] # LEPCHA DIGIT FOUR
+1C54 ; [.206F.0020.0002] # OL CHIKI DIGIT FOUR
+3024 ; [.206F.0020.0002] # HANGZHOU NUMERAL FOUR
+A624 ; [.206F.0020.0002] # VAI DIGIT FOUR
+A8D4 ; [.206F.0020.0002] # SAURASHTRA DIGIT FOUR
+A904 ; [.206F.0020.0002] # KAYAH LI DIGIT FOUR
+A9D4 ; [.206F.0020.0002] # JAVANESE DIGIT FOUR
+A9F4 ; [.206F.0020.0002] # MYANMAR TAI LAING DIGIT FOUR
+AA54 ; [.206F.0020.0002] # CHAM DIGIT FOUR
+ABF4 ; [.206F.0020.0002] # MEETEI MAYEK DIGIT FOUR
+1010A ; [.206F.0020.0002] # AEGEAN NUMBER FOUR
+102E4 ; [.206F.0020.0002] # COPTIC EPACT DIGIT FOUR
+104A4 ; [.206F.0020.0002] # OSMANYA DIGIT FOUR
+1087C ; [.206F.0020.0002] # PALMYRENE NUMBER FOUR
+108AA ; [.206F.0020.0002] # NABATAEAN NUMBER FOUR
+108AB ; [.206F.0020.0002] # NABATAEAN CRUCIFORM NUMBER FOUR
+109C3 ; [.206F.0020.0002] # MEROITIC CURSIVE NUMBER FOUR
+10A43 ; [.206F.0020.0002] # KHAROSHTHI DIGIT FOUR
+10B5B ; [.206F.0020.0002] # INSCRIPTIONAL PARTHIAN NUMBER FOUR
+10B7B ; [.206F.0020.0002] # INSCRIPTIONAL PAHLAVI NUMBER FOUR
+10BAC ; [.206F.0020.0002] # PSALTER PAHLAVI NUMBER FOUR
+10D34 ; [.206F.0020.0002] # HANIFI ROHINGYA DIGIT FOUR
+10E63 ; [.206F.0020.0002] # RUMI DIGIT FOUR
+10F20 ; [.206F.0020.0002] # OLD SOGDIAN NUMBER FOUR
+10FC8 ; [.206F.0020.0002] # CHORASMIAN NUMBER FOUR
+11055 ; [.206F.0020.0002] # BRAHMI NUMBER FOUR
+1106A ; [.206F.0020.0002] # BRAHMI DIGIT FOUR
+110F4 ; [.206F.0020.0002] # SORA SOMPENG DIGIT FOUR
+1113A ; [.206F.0020.0002] # CHAKMA DIGIT FOUR
+111D4 ; [.206F.0020.0002] # SHARADA DIGIT FOUR
+111E4 ; [.206F.0020.0002] # SINHALA ARCHAIC DIGIT FOUR
+112F4 ; [.206F.0020.0002] # KHUDAWADI DIGIT FOUR
+11454 ; [.206F.0020.0002] # NEWA DIGIT FOUR
+114D4 ; [.206F.0020.0002] # TIRHUTA DIGIT FOUR
+11654 ; [.206F.0020.0002] # MODI DIGIT FOUR
+116C4 ; [.206F.0020.0002] # TAKRI DIGIT FOUR
+11734 ; [.206F.0020.0002] # AHOM DIGIT FOUR
+118E4 ; [.206F.0020.0002] # WARANG CITI DIGIT FOUR
+11954 ; [.206F.0020.0002] # DIVES AKURU DIGIT FOUR
+11C54 ; [.206F.0020.0002] # BHAIKSUKI DIGIT FOUR
+11C5D ; [.206F.0020.0002] # BHAIKSUKI NUMBER FOUR
+11D54 ; [.206F.0020.0002] # MASARAM GONDI DIGIT FOUR
+11DA4 ; [.206F.0020.0002] # GUNJALA GONDI DIGIT FOUR
+12402 ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR ASH
+12409 ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR DISH
+1240F ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR U
+12418 ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR GESH2
+12421 ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR GESHU
+12426 ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR SHAR2
+12430 ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR SHARU
+12438 ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR BURU
+1243C ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU
+1243D ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4
+1243E ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A
+1243F ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B
+1244C ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR ASH TENU
+12452 ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR BAN2
+12453 ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM
+12469 ; [.206F.0020.0002] # CUNEIFORM NUMERIC SIGN FOUR U VARIANT FORM
+16A64 ; [.206F.0020.0002] # MRO DIGIT FOUR
+16AC4 ; [.206F.0020.0002] # TANGSA DIGIT FOUR
+16B54 ; [.206F.0020.0002] # PAHAWH HMONG DIGIT FOUR
+16E84 ; [.206F.0020.0002] # MEDEFAIDRIN DIGIT FOUR
+1D2E4 ; [.206F.0020.0002] # MAYAN NUMERAL FOUR
+1D363 ; [.206F.0020.0002] # COUNTING ROD UNIT DIGIT FOUR
+1D375 ; [.206F.0020.0002] # IDEOGRAPHIC TALLY MARK FOUR
+1E144 ; [.206F.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT FOUR
+1E2F4 ; [.206F.0020.0002] # WANCHO DIGIT FOUR
+1E8CA ; [.206F.0020.0002] # MENDE KIKAKUI DIGIT FOUR
+1E954 ; [.206F.0020.0002] # ADLAM DIGIT FOUR
+1EC74 ; [.206F.0020.0002] # INDIC SIYAQ NUMBER FOUR
+1ECA6 ; [.206F.0020.0002] # INDIC SIYAQ NUMBER PREFIXED FOUR
+1ED04 ; [.206F.0020.0002] # OTTOMAN SIYAQ NUMBER FOUR
+FF14 ; [.206F.0020.0003] # FULLWIDTH DIGIT FOUR
+0F2D ; [.206F.0020.0004] # TIBETAN DIGIT HALF FOUR
+2477 ; [*0334.0020.0004][.206F.0020.0004][*0335.0020.0004] # PARENTHESIZED DIGIT FOUR
+248B ; [.206F.0020.0004][*0281.0020.0004] # DIGIT FOUR FULL STOP
+1F105 ; [.206F.0020.0004][*0224.0020.0004] # DIGIT FOUR COMMA
+1D7D2 ; [.206F.0020.0005] # MATHEMATICAL BOLD DIGIT FOUR
+1D7DC ; [.206F.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
+1D7E6 ; [.206F.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT FOUR
+1D7F0 ; [.206F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
+1D7FA ; [.206F.0020.0005] # MATHEMATICAL MONOSPACE DIGIT FOUR
+1FBF4 ; [.206F.0020.0005] # SEGMENTED DIGIT FOUR
+2463 ; [.206F.0020.0006] # CIRCLED DIGIT FOUR
+24F8 ; [.206F.0020.0006] # DOUBLE CIRCLED DIGIT FOUR
+2779 ; [.206F.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT FOUR
+2783 ; [.206F.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT FOUR
+278D ; [.206F.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR
+2074 ; [.206F.0020.0014] # SUPERSCRIPT FOUR
+2084 ; [.206F.0020.0015] # SUBSCRIPT FOUR
+1ED31 ; [.206F.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER FOUR
+324B ; [.206F.0020.0006][.206B.0020.0006] # CIRCLED NUMBER FORTY ON BLACK SQUARE
+32B5 ; [.206F.0020.0006][.206B.0020.0006] # CIRCLED NUMBER FORTY
+32B6 ; [.206F.0020.0006][.206C.0020.0006] # CIRCLED NUMBER FORTY ONE
+32B7 ; [.206F.0020.0006][.206D.0020.0006] # CIRCLED NUMBER FORTY TWO
+32B8 ; [.206F.0020.0006][.206E.0020.0006] # CIRCLED NUMBER FORTY THREE
+32B9 ; [.206F.0020.0006][.206F.0020.0006] # CIRCLED NUMBER FORTY FOUR
+32BA ; [.206F.0020.0006][.2070.0020.0006] # CIRCLED NUMBER FORTY FIVE
+2158 ; [.206F.0020.001E][*06AD.0020.001E][.2070.0020.001E] # VULGAR FRACTION FOUR FIFTHS
+32BB ; [.206F.0020.0006][.2071.0020.0006] # CIRCLED NUMBER FORTY SIX
+32BC ; [.206F.0020.0006][.2072.0020.0006] # CIRCLED NUMBER FORTY SEVEN
+32BD ; [.206F.0020.0006][.2073.0020.0006] # CIRCLED NUMBER FORTY EIGHT
+32BE ; [.206F.0020.0006][.2074.0020.0006] # CIRCLED NUMBER FORTY NINE
+1F19E ; [.206F.0020.001C][.219C.0020.001D] # SQUARED FOUR K
+33E3 ; [.206F.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+32C3 ; [.206F.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+335C ; [.206F.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+0035 ; [.2070.0020.0002] # DIGIT FIVE
+0665 ; [.2070.0020.0002] # ARABIC-INDIC DIGIT FIVE
+06F5 ; [.2070.0020.0002] # EXTENDED ARABIC-INDIC DIGIT FIVE
+07C5 ; [.2070.0020.0002] # NKO DIGIT FIVE
+096B ; [.2070.0020.0002] # DEVANAGARI DIGIT FIVE
+09EB ; [.2070.0020.0002] # BENGALI DIGIT FIVE
+0A6B ; [.2070.0020.0002] # GURMUKHI DIGIT FIVE
+0AEB ; [.2070.0020.0002] # GUJARATI DIGIT FIVE
+0B6B ; [.2070.0020.0002] # ORIYA DIGIT FIVE
+0BEB ; [.2070.0020.0002] # TAMIL DIGIT FIVE
+0C6B ; [.2070.0020.0002] # TELUGU DIGIT FIVE
+0CEB ; [.2070.0020.0002] # KANNADA DIGIT FIVE
+0D6B ; [.2070.0020.0002] # MALAYALAM DIGIT FIVE
+0DEB ; [.2070.0020.0002] # SINHALA LITH DIGIT FIVE
+0E55 ; [.2070.0020.0002] # THAI DIGIT FIVE
+0ED5 ; [.2070.0020.0002] # LAO DIGIT FIVE
+0F25 ; [.2070.0020.0002] # TIBETAN DIGIT FIVE
+1045 ; [.2070.0020.0002] # MYANMAR DIGIT FIVE
+1095 ; [.2070.0020.0002] # MYANMAR SHAN DIGIT FIVE
+136D ; [.2070.0020.0002] # ETHIOPIC DIGIT FIVE
+17E5 ; [.2070.0020.0002] # KHMER DIGIT FIVE
+17F5 ; [.2070.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM
+1815 ; [.2070.0020.0002] # MONGOLIAN DIGIT FIVE
+194B ; [.2070.0020.0002] # LIMBU DIGIT FIVE
+19D5 ; [.2070.0020.0002] # NEW TAI LUE DIGIT FIVE
+1A85 ; [.2070.0020.0002] # TAI THAM HORA DIGIT FIVE
+1A95 ; [.2070.0020.0002] # TAI THAM THAM DIGIT FIVE
+1B55 ; [.2070.0020.0002] # BALINESE DIGIT FIVE
+1BB5 ; [.2070.0020.0002] # SUNDANESE DIGIT FIVE
+1C45 ; [.2070.0020.0002] # LEPCHA DIGIT FIVE
+1C55 ; [.2070.0020.0002] # OL CHIKI DIGIT FIVE
+3025 ; [.2070.0020.0002] # HANGZHOU NUMERAL FIVE
+A625 ; [.2070.0020.0002] # VAI DIGIT FIVE
+A8D5 ; [.2070.0020.0002] # SAURASHTRA DIGIT FIVE
+A905 ; [.2070.0020.0002] # KAYAH LI DIGIT FIVE
+A9D5 ; [.2070.0020.0002] # JAVANESE DIGIT FIVE
+A9F5 ; [.2070.0020.0002] # MYANMAR TAI LAING DIGIT FIVE
+AA55 ; [.2070.0020.0002] # CHAM DIGIT FIVE
+ABF5 ; [.2070.0020.0002] # MEETEI MAYEK DIGIT FIVE
+1010B ; [.2070.0020.0002] # AEGEAN NUMBER FIVE
+10143 ; [.2070.0020.0002] # GREEK ACROPHONIC ATTIC FIVE
+10148 ; [.2070.0020.0002] # GREEK ACROPHONIC ATTIC FIVE TALENTS
+1014F ; [.2070.0020.0002] # GREEK ACROPHONIC ATTIC FIVE STATERS
+1015F ; [.2070.0020.0002] # GREEK ACROPHONIC TROEZENIAN FIVE
+10173 ; [.2070.0020.0002] # GREEK ACROPHONIC DELPHIC FIVE MNAS
+102E5 ; [.2070.0020.0002] # COPTIC EPACT DIGIT FIVE
+10321 ; [.2070.0020.0002] # OLD ITALIC NUMERAL FIVE
+104A5 ; [.2070.0020.0002] # OSMANYA DIGIT FIVE
+1087D ; [.2070.0020.0002] # PALMYRENE NUMBER FIVE
+108AC ; [.2070.0020.0002] # NABATAEAN NUMBER FIVE
+108FC ; [.2070.0020.0002] # HATRAN NUMBER FIVE
+109C4 ; [.2070.0020.0002] # MEROITIC CURSIVE NUMBER FIVE
+10AEC ; [.2070.0020.0002] # MANICHAEAN NUMBER FIVE
+10CFB ; [.2070.0020.0002] # OLD HUNGARIAN NUMBER FIVE
+10D35 ; [.2070.0020.0002] # HANIFI ROHINGYA DIGIT FIVE
+10E64 ; [.2070.0020.0002] # RUMI DIGIT FIVE
+10F21 ; [.2070.0020.0002] # OLD SOGDIAN NUMBER FIVE
+11056 ; [.2070.0020.0002] # BRAHMI NUMBER FIVE
+1106B ; [.2070.0020.0002] # BRAHMI DIGIT FIVE
+110F5 ; [.2070.0020.0002] # SORA SOMPENG DIGIT FIVE
+1113B ; [.2070.0020.0002] # CHAKMA DIGIT FIVE
+111D5 ; [.2070.0020.0002] # SHARADA DIGIT FIVE
+111E5 ; [.2070.0020.0002] # SINHALA ARCHAIC DIGIT FIVE
+112F5 ; [.2070.0020.0002] # KHUDAWADI DIGIT FIVE
+11455 ; [.2070.0020.0002] # NEWA DIGIT FIVE
+114D5 ; [.2070.0020.0002] # TIRHUTA DIGIT FIVE
+11655 ; [.2070.0020.0002] # MODI DIGIT FIVE
+116C5 ; [.2070.0020.0002] # TAKRI DIGIT FIVE
+11735 ; [.2070.0020.0002] # AHOM DIGIT FIVE
+118E5 ; [.2070.0020.0002] # WARANG CITI DIGIT FIVE
+11955 ; [.2070.0020.0002] # DIVES AKURU DIGIT FIVE
+11C55 ; [.2070.0020.0002] # BHAIKSUKI DIGIT FIVE
+11C5E ; [.2070.0020.0002] # BHAIKSUKI NUMBER FIVE
+11D55 ; [.2070.0020.0002] # MASARAM GONDI DIGIT FIVE
+11DA5 ; [.2070.0020.0002] # GUNJALA GONDI DIGIT FIVE
+12403 ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE ASH
+1240A ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE DISH
+12410 ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE U
+12419 ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE GESH2
+12422 ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE GESHU
+12427 ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE SHAR2
+12431 ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE SHARU
+12439 ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE BURU
+1244D ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE ASH TENU
+12454 ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE BAN2
+12455 ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM
+1246A ; [.2070.0020.0002] # CUNEIFORM NUMERIC SIGN FIVE U VARIANT FORM
+16A65 ; [.2070.0020.0002] # MRO DIGIT FIVE
+16AC5 ; [.2070.0020.0002] # TANGSA DIGIT FIVE
+16B55 ; [.2070.0020.0002] # PAHAWH HMONG DIGIT FIVE
+16E85 ; [.2070.0020.0002] # MEDEFAIDRIN DIGIT FIVE
+1D2E5 ; [.2070.0020.0002] # MAYAN NUMERAL FIVE
+1D364 ; [.2070.0020.0002] # COUNTING ROD UNIT DIGIT FIVE
+1D376 ; [.2070.0020.0002] # IDEOGRAPHIC TALLY MARK FIVE
+1D378 ; [.2070.0020.0002] # TALLY MARK FIVE
+1E145 ; [.2070.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT FIVE
+1E2F5 ; [.2070.0020.0002] # WANCHO DIGIT FIVE
+1E8CB ; [.2070.0020.0002] # MENDE KIKAKUI DIGIT FIVE
+1E955 ; [.2070.0020.0002] # ADLAM DIGIT FIVE
+1EC75 ; [.2070.0020.0002] # INDIC SIYAQ NUMBER FIVE
+1ECA7 ; [.2070.0020.0002] # INDIC SIYAQ NUMBER PREFIXED FIVE
+1ED05 ; [.2070.0020.0002] # OTTOMAN SIYAQ NUMBER FIVE
+FF15 ; [.2070.0020.0003] # FULLWIDTH DIGIT FIVE
+0F2E ; [.2070.0020.0004] # TIBETAN DIGIT HALF FIVE
+2478 ; [*0334.0020.0004][.2070.0020.0004][*0335.0020.0004] # PARENTHESIZED DIGIT FIVE
+248C ; [.2070.0020.0004][*0281.0020.0004] # DIGIT FIVE FULL STOP
+1F106 ; [.2070.0020.0004][*0224.0020.0004] # DIGIT FIVE COMMA
+1D7D3 ; [.2070.0020.0005] # MATHEMATICAL BOLD DIGIT FIVE
+1D7DD ; [.2070.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
+1D7E7 ; [.2070.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT FIVE
+1D7F1 ; [.2070.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
+1D7FB ; [.2070.0020.0005] # MATHEMATICAL MONOSPACE DIGIT FIVE
+1FBF5 ; [.2070.0020.0005] # SEGMENTED DIGIT FIVE
+2464 ; [.2070.0020.0006] # CIRCLED DIGIT FIVE
+24F9 ; [.2070.0020.0006] # DOUBLE CIRCLED DIGIT FIVE
+277A ; [.2070.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT FIVE
+2784 ; [.2070.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT FIVE
+278E ; [.2070.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE
+2075 ; [.2070.0020.0014] # SUPERSCRIPT FIVE
+2085 ; [.2070.0020.0015] # SUBSCRIPT FIVE
+1ED32 ; [.2070.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER FIVE
+324C ; [.2070.0020.0006][.206B.0020.0006] # CIRCLED NUMBER FIFTY ON BLACK SQUARE
+32BF ; [.2070.0020.0006][.206B.0020.0006] # CIRCLED NUMBER FIFTY
+1F1A0 ; [.2070.0020.001C][*0281.0020.001C][.206C.0020.001C] # SQUARED FIVE POINT ONE
+215A ; [.2070.0020.001E][*06AD.0020.001E][.2071.0020.001E] # VULGAR FRACTION FIVE SIXTHS
+215D ; [.2070.0020.001E][*06AD.0020.001E][.2073.0020.001E] # VULGAR FRACTION FIVE EIGHTHS
+33E4 ; [.2070.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+32C4 ; [.2070.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+335D ; [.2070.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+0036 ; [.2071.0020.0002] # DIGIT SIX
+0666 ; [.2071.0020.0002] # ARABIC-INDIC DIGIT SIX
+06F6 ; [.2071.0020.0002] # EXTENDED ARABIC-INDIC DIGIT SIX
+07C6 ; [.2071.0020.0002] # NKO DIGIT SIX
+096C ; [.2071.0020.0002] # DEVANAGARI DIGIT SIX
+09EC ; [.2071.0020.0002] # BENGALI DIGIT SIX
+0A6C ; [.2071.0020.0002] # GURMUKHI DIGIT SIX
+0AEC ; [.2071.0020.0002] # GUJARATI DIGIT SIX
+0B6C ; [.2071.0020.0002] # ORIYA DIGIT SIX
+0BEC ; [.2071.0020.0002] # TAMIL DIGIT SIX
+0C6C ; [.2071.0020.0002] # TELUGU DIGIT SIX
+0CEC ; [.2071.0020.0002] # KANNADA DIGIT SIX
+0D6C ; [.2071.0020.0002] # MALAYALAM DIGIT SIX
+0DEC ; [.2071.0020.0002] # SINHALA LITH DIGIT SIX
+0E56 ; [.2071.0020.0002] # THAI DIGIT SIX
+0ED6 ; [.2071.0020.0002] # LAO DIGIT SIX
+0F26 ; [.2071.0020.0002] # TIBETAN DIGIT SIX
+1046 ; [.2071.0020.0002] # MYANMAR DIGIT SIX
+1096 ; [.2071.0020.0002] # MYANMAR SHAN DIGIT SIX
+136E ; [.2071.0020.0002] # ETHIOPIC DIGIT SIX
+17E6 ; [.2071.0020.0002] # KHMER DIGIT SIX
+17F6 ; [.2071.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-MUOY
+1816 ; [.2071.0020.0002] # MONGOLIAN DIGIT SIX
+194C ; [.2071.0020.0002] # LIMBU DIGIT SIX
+19D6 ; [.2071.0020.0002] # NEW TAI LUE DIGIT SIX
+1A86 ; [.2071.0020.0002] # TAI THAM HORA DIGIT SIX
+1A96 ; [.2071.0020.0002] # TAI THAM THAM DIGIT SIX
+1B56 ; [.2071.0020.0002] # BALINESE DIGIT SIX
+1BB6 ; [.2071.0020.0002] # SUNDANESE DIGIT SIX
+1C46 ; [.2071.0020.0002] # LEPCHA DIGIT SIX
+1C56 ; [.2071.0020.0002] # OL CHIKI DIGIT SIX
+2185 ; [.2071.0020.0002] # ROMAN NUMERAL SIX LATE FORM
+3026 ; [.2071.0020.0002] # HANGZHOU NUMERAL SIX
+A626 ; [.2071.0020.0002] # VAI DIGIT SIX
+A8D6 ; [.2071.0020.0002] # SAURASHTRA DIGIT SIX
+A906 ; [.2071.0020.0002] # KAYAH LI DIGIT SIX
+A9D6 ; [.2071.0020.0002] # JAVANESE DIGIT SIX
+A9F6 ; [.2071.0020.0002] # MYANMAR TAI LAING DIGIT SIX
+AA56 ; [.2071.0020.0002] # CHAM DIGIT SIX
+ABF6 ; [.2071.0020.0002] # MEETEI MAYEK DIGIT SIX
+1010C ; [.2071.0020.0002] # AEGEAN NUMBER SIX
+102E6 ; [.2071.0020.0002] # COPTIC EPACT DIGIT SIX
+104A6 ; [.2071.0020.0002] # OSMANYA DIGIT SIX
+109C5 ; [.2071.0020.0002] # MEROITIC CURSIVE NUMBER SIX
+10D36 ; [.2071.0020.0002] # HANIFI ROHINGYA DIGIT SIX
+10E65 ; [.2071.0020.0002] # RUMI DIGIT SIX
+11057 ; [.2071.0020.0002] # BRAHMI NUMBER SIX
+1106C ; [.2071.0020.0002] # BRAHMI DIGIT SIX
+110F6 ; [.2071.0020.0002] # SORA SOMPENG DIGIT SIX
+1113C ; [.2071.0020.0002] # CHAKMA DIGIT SIX
+111D6 ; [.2071.0020.0002] # SHARADA DIGIT SIX
+111E6 ; [.2071.0020.0002] # SINHALA ARCHAIC DIGIT SIX
+112F6 ; [.2071.0020.0002] # KHUDAWADI DIGIT SIX
+11456 ; [.2071.0020.0002] # NEWA DIGIT SIX
+114D6 ; [.2071.0020.0002] # TIRHUTA DIGIT SIX
+11656 ; [.2071.0020.0002] # MODI DIGIT SIX
+116C6 ; [.2071.0020.0002] # TAKRI DIGIT SIX
+11736 ; [.2071.0020.0002] # AHOM DIGIT SIX
+118E6 ; [.2071.0020.0002] # WARANG CITI DIGIT SIX
+11956 ; [.2071.0020.0002] # DIVES AKURU DIGIT SIX
+11C56 ; [.2071.0020.0002] # BHAIKSUKI DIGIT SIX
+11C5F ; [.2071.0020.0002] # BHAIKSUKI NUMBER SIX
+11D56 ; [.2071.0020.0002] # MASARAM GONDI DIGIT SIX
+11DA6 ; [.2071.0020.0002] # GUNJALA GONDI DIGIT SIX
+12404 ; [.2071.0020.0002] # CUNEIFORM NUMERIC SIGN SIX ASH
+1240B ; [.2071.0020.0002] # CUNEIFORM NUMERIC SIGN SIX DISH
+12411 ; [.2071.0020.0002] # CUNEIFORM NUMERIC SIGN SIX U
+1241A ; [.2071.0020.0002] # CUNEIFORM NUMERIC SIGN SIX GESH2
+12428 ; [.2071.0020.0002] # CUNEIFORM NUMERIC SIGN SIX SHAR2
+12440 ; [.2071.0020.0002] # CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9
+1244E ; [.2071.0020.0002] # CUNEIFORM NUMERIC SIGN SIX ASH TENU
+1246B ; [.2071.0020.0002] # CUNEIFORM NUMERIC SIGN SIX U VARIANT FORM
+16A66 ; [.2071.0020.0002] # MRO DIGIT SIX
+16AC6 ; [.2071.0020.0002] # TANGSA DIGIT SIX
+16B56 ; [.2071.0020.0002] # PAHAWH HMONG DIGIT SIX
+16E86 ; [.2071.0020.0002] # MEDEFAIDRIN DIGIT SIX
+1D2E6 ; [.2071.0020.0002] # MAYAN NUMERAL SIX
+1D365 ; [.2071.0020.0002] # COUNTING ROD UNIT DIGIT SIX
+1E146 ; [.2071.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT SIX
+1E2F6 ; [.2071.0020.0002] # WANCHO DIGIT SIX
+1E8CC ; [.2071.0020.0002] # MENDE KIKAKUI DIGIT SIX
+1E956 ; [.2071.0020.0002] # ADLAM DIGIT SIX
+1EC76 ; [.2071.0020.0002] # INDIC SIYAQ NUMBER SIX
+1ECA8 ; [.2071.0020.0002] # INDIC SIYAQ NUMBER PREFIXED SIX
+1ED06 ; [.2071.0020.0002] # OTTOMAN SIYAQ NUMBER SIX
+FF16 ; [.2071.0020.0003] # FULLWIDTH DIGIT SIX
+0F2F ; [.2071.0020.0004] # TIBETAN DIGIT HALF SIX
+2479 ; [*0334.0020.0004][.2071.0020.0004][*0335.0020.0004] # PARENTHESIZED DIGIT SIX
+248D ; [.2071.0020.0004][*0281.0020.0004] # DIGIT SIX FULL STOP
+1F107 ; [.2071.0020.0004][*0224.0020.0004] # DIGIT SIX COMMA
+1D7D4 ; [.2071.0020.0005] # MATHEMATICAL BOLD DIGIT SIX
+1D7DE ; [.2071.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
+1D7E8 ; [.2071.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT SIX
+1D7F2 ; [.2071.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
+1D7FC ; [.2071.0020.0005] # MATHEMATICAL MONOSPACE DIGIT SIX
+1FBF6 ; [.2071.0020.0005] # SEGMENTED DIGIT SIX
+2465 ; [.2071.0020.0006] # CIRCLED DIGIT SIX
+24FA ; [.2071.0020.0006] # DOUBLE CIRCLED DIGIT SIX
+277B ; [.2071.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT SIX
+2785 ; [.2071.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT SIX
+278F ; [.2071.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX
+2076 ; [.2071.0020.0014] # SUPERSCRIPT SIX
+2086 ; [.2071.0020.0015] # SUBSCRIPT SIX
+1ED33 ; [.2071.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER SIX
+324D ; [.2071.0020.0006][.206B.0020.0006] # CIRCLED NUMBER SIXTY ON BLACK SQUARE
+1F1A3 ; [.2071.0020.001C][.206B.0020.001C][.224D.0020.001D] # SQUARED SIXTY P
+33E5 ; [.2071.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+32C5 ; [.2071.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+335E ; [.2071.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+0037 ; [.2072.0020.0002] # DIGIT SEVEN
+0667 ; [.2072.0020.0002] # ARABIC-INDIC DIGIT SEVEN
+06F7 ; [.2072.0020.0002] # EXTENDED ARABIC-INDIC DIGIT SEVEN
+07C7 ; [.2072.0020.0002] # NKO DIGIT SEVEN
+096D ; [.2072.0020.0002] # DEVANAGARI DIGIT SEVEN
+09ED ; [.2072.0020.0002] # BENGALI DIGIT SEVEN
+0A6D ; [.2072.0020.0002] # GURMUKHI DIGIT SEVEN
+0AED ; [.2072.0020.0002] # GUJARATI DIGIT SEVEN
+0B6D ; [.2072.0020.0002] # ORIYA DIGIT SEVEN
+0BED ; [.2072.0020.0002] # TAMIL DIGIT SEVEN
+0C6D ; [.2072.0020.0002] # TELUGU DIGIT SEVEN
+0CED ; [.2072.0020.0002] # KANNADA DIGIT SEVEN
+0D6D ; [.2072.0020.0002] # MALAYALAM DIGIT SEVEN
+0DED ; [.2072.0020.0002] # SINHALA LITH DIGIT SEVEN
+0E57 ; [.2072.0020.0002] # THAI DIGIT SEVEN
+0ED7 ; [.2072.0020.0002] # LAO DIGIT SEVEN
+0F27 ; [.2072.0020.0002] # TIBETAN DIGIT SEVEN
+1047 ; [.2072.0020.0002] # MYANMAR DIGIT SEVEN
+1097 ; [.2072.0020.0002] # MYANMAR SHAN DIGIT SEVEN
+136F ; [.2072.0020.0002] # ETHIOPIC DIGIT SEVEN
+17E7 ; [.2072.0020.0002] # KHMER DIGIT SEVEN
+17F7 ; [.2072.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-PII
+1817 ; [.2072.0020.0002] # MONGOLIAN DIGIT SEVEN
+194D ; [.2072.0020.0002] # LIMBU DIGIT SEVEN
+19D7 ; [.2072.0020.0002] # NEW TAI LUE DIGIT SEVEN
+1A87 ; [.2072.0020.0002] # TAI THAM HORA DIGIT SEVEN
+1A97 ; [.2072.0020.0002] # TAI THAM THAM DIGIT SEVEN
+1B57 ; [.2072.0020.0002] # BALINESE DIGIT SEVEN
+1BB7 ; [.2072.0020.0002] # SUNDANESE DIGIT SEVEN
+1C47 ; [.2072.0020.0002] # LEPCHA DIGIT SEVEN
+1C57 ; [.2072.0020.0002] # OL CHIKI DIGIT SEVEN
+3027 ; [.2072.0020.0002] # HANGZHOU NUMERAL SEVEN
+A627 ; [.2072.0020.0002] # VAI DIGIT SEVEN
+A8D7 ; [.2072.0020.0002] # SAURASHTRA DIGIT SEVEN
+A907 ; [.2072.0020.0002] # KAYAH LI DIGIT SEVEN
+A9D7 ; [.2072.0020.0002] # JAVANESE DIGIT SEVEN
+A9F7 ; [.2072.0020.0002] # MYANMAR TAI LAING DIGIT SEVEN
+AA57 ; [.2072.0020.0002] # CHAM DIGIT SEVEN
+ABF7 ; [.2072.0020.0002] # MEETEI MAYEK DIGIT SEVEN
+1010D ; [.2072.0020.0002] # AEGEAN NUMBER SEVEN
+102E7 ; [.2072.0020.0002] # COPTIC EPACT DIGIT SEVEN
+104A7 ; [.2072.0020.0002] # OSMANYA DIGIT SEVEN
+109C6 ; [.2072.0020.0002] # MEROITIC CURSIVE NUMBER SEVEN
+10D37 ; [.2072.0020.0002] # HANIFI ROHINGYA DIGIT SEVEN
+10E66 ; [.2072.0020.0002] # RUMI DIGIT SEVEN
+11058 ; [.2072.0020.0002] # BRAHMI NUMBER SEVEN
+1106D ; [.2072.0020.0002] # BRAHMI DIGIT SEVEN
+110F7 ; [.2072.0020.0002] # SORA SOMPENG DIGIT SEVEN
+1113D ; [.2072.0020.0002] # CHAKMA DIGIT SEVEN
+111D7 ; [.2072.0020.0002] # SHARADA DIGIT SEVEN
+111E7 ; [.2072.0020.0002] # SINHALA ARCHAIC DIGIT SEVEN
+112F7 ; [.2072.0020.0002] # KHUDAWADI DIGIT SEVEN
+11457 ; [.2072.0020.0002] # NEWA DIGIT SEVEN
+114D7 ; [.2072.0020.0002] # TIRHUTA DIGIT SEVEN
+11657 ; [.2072.0020.0002] # MODI DIGIT SEVEN
+116C7 ; [.2072.0020.0002] # TAKRI DIGIT SEVEN
+11737 ; [.2072.0020.0002] # AHOM DIGIT SEVEN
+118E7 ; [.2072.0020.0002] # WARANG CITI DIGIT SEVEN
+11957 ; [.2072.0020.0002] # DIVES AKURU DIGIT SEVEN
+11C57 ; [.2072.0020.0002] # BHAIKSUKI DIGIT SEVEN
+11C60 ; [.2072.0020.0002] # BHAIKSUKI NUMBER SEVEN
+11D57 ; [.2072.0020.0002] # MASARAM GONDI DIGIT SEVEN
+11DA7 ; [.2072.0020.0002] # GUNJALA GONDI DIGIT SEVEN
+12405 ; [.2072.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN ASH
+1240C ; [.2072.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN DISH
+12412 ; [.2072.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN U
+1241B ; [.2072.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN GESH2
+12429 ; [.2072.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN SHAR2
+12441 ; [.2072.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3
+12442 ; [.2072.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A
+12443 ; [.2072.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B
+1246C ; [.2072.0020.0002] # CUNEIFORM NUMERIC SIGN SEVEN U VARIANT FORM
+16A67 ; [.2072.0020.0002] # MRO DIGIT SEVEN
+16AC7 ; [.2072.0020.0002] # TANGSA DIGIT SEVEN
+16B57 ; [.2072.0020.0002] # PAHAWH HMONG DIGIT SEVEN
+16E87 ; [.2072.0020.0002] # MEDEFAIDRIN DIGIT SEVEN
+1D2E7 ; [.2072.0020.0002] # MAYAN NUMERAL SEVEN
+1D366 ; [.2072.0020.0002] # COUNTING ROD UNIT DIGIT SEVEN
+1E147 ; [.2072.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT SEVEN
+1E2F7 ; [.2072.0020.0002] # WANCHO DIGIT SEVEN
+1E8CD ; [.2072.0020.0002] # MENDE KIKAKUI DIGIT SEVEN
+1E957 ; [.2072.0020.0002] # ADLAM DIGIT SEVEN
+1EC77 ; [.2072.0020.0002] # INDIC SIYAQ NUMBER SEVEN
+1ECA9 ; [.2072.0020.0002] # INDIC SIYAQ NUMBER PREFIXED SEVEN
+1ED07 ; [.2072.0020.0002] # OTTOMAN SIYAQ NUMBER SEVEN
+FF17 ; [.2072.0020.0003] # FULLWIDTH DIGIT SEVEN
+0F30 ; [.2072.0020.0004] # TIBETAN DIGIT HALF SEVEN
+247A ; [*0334.0020.0004][.2072.0020.0004][*0335.0020.0004] # PARENTHESIZED DIGIT SEVEN
+248E ; [.2072.0020.0004][*0281.0020.0004] # DIGIT SEVEN FULL STOP
+1F108 ; [.2072.0020.0004][*0224.0020.0004] # DIGIT SEVEN COMMA
+1D7D5 ; [.2072.0020.0005] # MATHEMATICAL BOLD DIGIT SEVEN
+1D7DF ; [.2072.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
+1D7E9 ; [.2072.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT SEVEN
+1D7F3 ; [.2072.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
+1D7FD ; [.2072.0020.0005] # MATHEMATICAL MONOSPACE DIGIT SEVEN
+1FBF7 ; [.2072.0020.0005] # SEGMENTED DIGIT SEVEN
+2466 ; [.2072.0020.0006] # CIRCLED DIGIT SEVEN
+24FB ; [.2072.0020.0006] # DOUBLE CIRCLED DIGIT SEVEN
+277C ; [.2072.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT SEVEN
+2786 ; [.2072.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN
+2790 ; [.2072.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
+2077 ; [.2072.0020.0014] # SUPERSCRIPT SEVEN
+2087 ; [.2072.0020.0015] # SUBSCRIPT SEVEN
+1ED34 ; [.2072.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER SEVEN
+324E ; [.2072.0020.0006][.206B.0020.0006] # CIRCLED NUMBER SEVENTY ON BLACK SQUARE
+1F1A1 ; [.2072.0020.001C][*0281.0020.001C][.206C.0020.001C] # SQUARED SEVEN POINT ONE
+215E ; [.2072.0020.001E][*06AD.0020.001E][.2073.0020.001E] # VULGAR FRACTION SEVEN EIGHTHS
+33E6 ; [.2072.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+32C6 ; [.2072.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+335F ; [.2072.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+0038 ; [.2073.0020.0002] # DIGIT EIGHT
+0668 ; [.2073.0020.0002] # ARABIC-INDIC DIGIT EIGHT
+06F8 ; [.2073.0020.0002] # EXTENDED ARABIC-INDIC DIGIT EIGHT
+07C8 ; [.2073.0020.0002] # NKO DIGIT EIGHT
+096E ; [.2073.0020.0002] # DEVANAGARI DIGIT EIGHT
+09EE ; [.2073.0020.0002] # BENGALI DIGIT EIGHT
+0A6E ; [.2073.0020.0002] # GURMUKHI DIGIT EIGHT
+0AEE ; [.2073.0020.0002] # GUJARATI DIGIT EIGHT
+0B6E ; [.2073.0020.0002] # ORIYA DIGIT EIGHT
+0BEE ; [.2073.0020.0002] # TAMIL DIGIT EIGHT
+0C6E ; [.2073.0020.0002] # TELUGU DIGIT EIGHT
+0CEE ; [.2073.0020.0002] # KANNADA DIGIT EIGHT
+0D6E ; [.2073.0020.0002] # MALAYALAM DIGIT EIGHT
+0DEE ; [.2073.0020.0002] # SINHALA LITH DIGIT EIGHT
+0E58 ; [.2073.0020.0002] # THAI DIGIT EIGHT
+0ED8 ; [.2073.0020.0002] # LAO DIGIT EIGHT
+0F28 ; [.2073.0020.0002] # TIBETAN DIGIT EIGHT
+1048 ; [.2073.0020.0002] # MYANMAR DIGIT EIGHT
+1098 ; [.2073.0020.0002] # MYANMAR SHAN DIGIT EIGHT
+1370 ; [.2073.0020.0002] # ETHIOPIC DIGIT EIGHT
+17E8 ; [.2073.0020.0002] # KHMER DIGIT EIGHT
+17F8 ; [.2073.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-BEI
+1818 ; [.2073.0020.0002] # MONGOLIAN DIGIT EIGHT
+194E ; [.2073.0020.0002] # LIMBU DIGIT EIGHT
+19D8 ; [.2073.0020.0002] # NEW TAI LUE DIGIT EIGHT
+1A88 ; [.2073.0020.0002] # TAI THAM HORA DIGIT EIGHT
+1A98 ; [.2073.0020.0002] # TAI THAM THAM DIGIT EIGHT
+1B58 ; [.2073.0020.0002] # BALINESE DIGIT EIGHT
+1BB8 ; [.2073.0020.0002] # SUNDANESE DIGIT EIGHT
+1C48 ; [.2073.0020.0002] # LEPCHA DIGIT EIGHT
+1C58 ; [.2073.0020.0002] # OL CHIKI DIGIT EIGHT
+3028 ; [.2073.0020.0002] # HANGZHOU NUMERAL EIGHT
+A628 ; [.2073.0020.0002] # VAI DIGIT EIGHT
+A8D8 ; [.2073.0020.0002] # SAURASHTRA DIGIT EIGHT
+A908 ; [.2073.0020.0002] # KAYAH LI DIGIT EIGHT
+A9D8 ; [.2073.0020.0002] # JAVANESE DIGIT EIGHT
+A9F8 ; [.2073.0020.0002] # MYANMAR TAI LAING DIGIT EIGHT
+AA58 ; [.2073.0020.0002] # CHAM DIGIT EIGHT
+ABF8 ; [.2073.0020.0002] # MEETEI MAYEK DIGIT EIGHT
+1010E ; [.2073.0020.0002] # AEGEAN NUMBER EIGHT
+102E8 ; [.2073.0020.0002] # COPTIC EPACT DIGIT EIGHT
+104A8 ; [.2073.0020.0002] # OSMANYA DIGIT EIGHT
+109C7 ; [.2073.0020.0002] # MEROITIC CURSIVE NUMBER EIGHT
+10D38 ; [.2073.0020.0002] # HANIFI ROHINGYA DIGIT EIGHT
+10E67 ; [.2073.0020.0002] # RUMI DIGIT EIGHT
+11059 ; [.2073.0020.0002] # BRAHMI NUMBER EIGHT
+1106E ; [.2073.0020.0002] # BRAHMI DIGIT EIGHT
+110F8 ; [.2073.0020.0002] # SORA SOMPENG DIGIT EIGHT
+1113E ; [.2073.0020.0002] # CHAKMA DIGIT EIGHT
+111D8 ; [.2073.0020.0002] # SHARADA DIGIT EIGHT
+111E8 ; [.2073.0020.0002] # SINHALA ARCHAIC DIGIT EIGHT
+112F8 ; [.2073.0020.0002] # KHUDAWADI DIGIT EIGHT
+11458 ; [.2073.0020.0002] # NEWA DIGIT EIGHT
+114D8 ; [.2073.0020.0002] # TIRHUTA DIGIT EIGHT
+11658 ; [.2073.0020.0002] # MODI DIGIT EIGHT
+116C8 ; [.2073.0020.0002] # TAKRI DIGIT EIGHT
+11738 ; [.2073.0020.0002] # AHOM DIGIT EIGHT
+118E8 ; [.2073.0020.0002] # WARANG CITI DIGIT EIGHT
+11958 ; [.2073.0020.0002] # DIVES AKURU DIGIT EIGHT
+11C58 ; [.2073.0020.0002] # BHAIKSUKI DIGIT EIGHT
+11C61 ; [.2073.0020.0002] # BHAIKSUKI NUMBER EIGHT
+11D58 ; [.2073.0020.0002] # MASARAM GONDI DIGIT EIGHT
+11DA8 ; [.2073.0020.0002] # GUNJALA GONDI DIGIT EIGHT
+12406 ; [.2073.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT ASH
+1240D ; [.2073.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT DISH
+12413 ; [.2073.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT U
+1241C ; [.2073.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT GESH2
+1242A ; [.2073.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT SHAR2
+12444 ; [.2073.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU
+12445 ; [.2073.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3
+1246D ; [.2073.0020.0002] # CUNEIFORM NUMERIC SIGN EIGHT U VARIANT FORM
+16A68 ; [.2073.0020.0002] # MRO DIGIT EIGHT
+16AC8 ; [.2073.0020.0002] # TANGSA DIGIT EIGHT
+16B58 ; [.2073.0020.0002] # PAHAWH HMONG DIGIT EIGHT
+16E88 ; [.2073.0020.0002] # MEDEFAIDRIN DIGIT EIGHT
+1D2E8 ; [.2073.0020.0002] # MAYAN NUMERAL EIGHT
+1D367 ; [.2073.0020.0002] # COUNTING ROD UNIT DIGIT EIGHT
+1E148 ; [.2073.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT EIGHT
+1E2F8 ; [.2073.0020.0002] # WANCHO DIGIT EIGHT
+1E8CE ; [.2073.0020.0002] # MENDE KIKAKUI DIGIT EIGHT
+1E958 ; [.2073.0020.0002] # ADLAM DIGIT EIGHT
+1EC78 ; [.2073.0020.0002] # INDIC SIYAQ NUMBER EIGHT
+1ECAA ; [.2073.0020.0002] # INDIC SIYAQ NUMBER PREFIXED EIGHT
+1ED08 ; [.2073.0020.0002] # OTTOMAN SIYAQ NUMBER EIGHT
+FF18 ; [.2073.0020.0003] # FULLWIDTH DIGIT EIGHT
+0F31 ; [.2073.0020.0004] # TIBETAN DIGIT HALF EIGHT
+247B ; [*0334.0020.0004][.2073.0020.0004][*0335.0020.0004] # PARENTHESIZED DIGIT EIGHT
+248F ; [.2073.0020.0004][*0281.0020.0004] # DIGIT EIGHT FULL STOP
+1F109 ; [.2073.0020.0004][*0224.0020.0004] # DIGIT EIGHT COMMA
+1D7D6 ; [.2073.0020.0005] # MATHEMATICAL BOLD DIGIT EIGHT
+1D7E0 ; [.2073.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
+1D7EA ; [.2073.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT EIGHT
+1D7F4 ; [.2073.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
+1D7FE ; [.2073.0020.0005] # MATHEMATICAL MONOSPACE DIGIT EIGHT
+1FBF8 ; [.2073.0020.0005] # SEGMENTED DIGIT EIGHT
+2467 ; [.2073.0020.0006] # CIRCLED DIGIT EIGHT
+24FC ; [.2073.0020.0006] # DOUBLE CIRCLED DIGIT EIGHT
+277D ; [.2073.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT EIGHT
+2787 ; [.2073.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT
+2791 ; [.2073.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT
+2078 ; [.2073.0020.0014] # SUPERSCRIPT EIGHT
+2088 ; [.2073.0020.0015] # SUBSCRIPT EIGHT
+1ED35 ; [.2073.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER EIGHT
+324F ; [.2073.0020.0006][.206B.0020.0006] # CIRCLED NUMBER EIGHTY ON BLACK SQUARE
+1F19F ; [.2073.0020.001C][.219C.0020.001D] # SQUARED EIGHT K
+33E7 ; [.2073.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+32C7 ; [.2073.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+3360 ; [.2073.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+0039 ; [.2074.0020.0002] # DIGIT NINE
+0669 ; [.2074.0020.0002] # ARABIC-INDIC DIGIT NINE
+06F9 ; [.2074.0020.0002] # EXTENDED ARABIC-INDIC DIGIT NINE
+07C9 ; [.2074.0020.0002] # NKO DIGIT NINE
+096F ; [.2074.0020.0002] # DEVANAGARI DIGIT NINE
+09EF ; [.2074.0020.0002] # BENGALI DIGIT NINE
+0A6F ; [.2074.0020.0002] # GURMUKHI DIGIT NINE
+0AEF ; [.2074.0020.0002] # GUJARATI DIGIT NINE
+0B6F ; [.2074.0020.0002] # ORIYA DIGIT NINE
+0BEF ; [.2074.0020.0002] # TAMIL DIGIT NINE
+0C6F ; [.2074.0020.0002] # TELUGU DIGIT NINE
+0CEF ; [.2074.0020.0002] # KANNADA DIGIT NINE
+0D6F ; [.2074.0020.0002] # MALAYALAM DIGIT NINE
+0DEF ; [.2074.0020.0002] # SINHALA LITH DIGIT NINE
+0E59 ; [.2074.0020.0002] # THAI DIGIT NINE
+0ED9 ; [.2074.0020.0002] # LAO DIGIT NINE
+0F29 ; [.2074.0020.0002] # TIBETAN DIGIT NINE
+1049 ; [.2074.0020.0002] # MYANMAR DIGIT NINE
+1099 ; [.2074.0020.0002] # MYANMAR SHAN DIGIT NINE
+1371 ; [.2074.0020.0002] # ETHIOPIC DIGIT NINE
+17E9 ; [.2074.0020.0002] # KHMER DIGIT NINE
+17F9 ; [.2074.0020.0002] # KHMER SYMBOL LEK ATTAK PRAM-BUON
+1819 ; [.2074.0020.0002] # MONGOLIAN DIGIT NINE
+194F ; [.2074.0020.0002] # LIMBU DIGIT NINE
+19D9 ; [.2074.0020.0002] # NEW TAI LUE DIGIT NINE
+1A89 ; [.2074.0020.0002] # TAI THAM HORA DIGIT NINE
+1A99 ; [.2074.0020.0002] # TAI THAM THAM DIGIT NINE
+1B59 ; [.2074.0020.0002] # BALINESE DIGIT NINE
+1BB9 ; [.2074.0020.0002] # SUNDANESE DIGIT NINE
+1C49 ; [.2074.0020.0002] # LEPCHA DIGIT NINE
+1C59 ; [.2074.0020.0002] # OL CHIKI DIGIT NINE
+3029 ; [.2074.0020.0002] # HANGZHOU NUMERAL NINE
+A629 ; [.2074.0020.0002] # VAI DIGIT NINE
+A8D9 ; [.2074.0020.0002] # SAURASHTRA DIGIT NINE
+A909 ; [.2074.0020.0002] # KAYAH LI DIGIT NINE
+A9D9 ; [.2074.0020.0002] # JAVANESE DIGIT NINE
+A9F9 ; [.2074.0020.0002] # MYANMAR TAI LAING DIGIT NINE
+AA59 ; [.2074.0020.0002] # CHAM DIGIT NINE
+ABF9 ; [.2074.0020.0002] # MEETEI MAYEK DIGIT NINE
+1010F ; [.2074.0020.0002] # AEGEAN NUMBER NINE
+102E9 ; [.2074.0020.0002] # COPTIC EPACT DIGIT NINE
+104A9 ; [.2074.0020.0002] # OSMANYA DIGIT NINE
+109C8 ; [.2074.0020.0002] # MEROITIC CURSIVE NUMBER NINE
+10D39 ; [.2074.0020.0002] # HANIFI ROHINGYA DIGIT NINE
+10E68 ; [.2074.0020.0002] # RUMI DIGIT NINE
+1105A ; [.2074.0020.0002] # BRAHMI NUMBER NINE
+1106F ; [.2074.0020.0002] # BRAHMI DIGIT NINE
+110F9 ; [.2074.0020.0002] # SORA SOMPENG DIGIT NINE
+1113F ; [.2074.0020.0002] # CHAKMA DIGIT NINE
+111D9 ; [.2074.0020.0002] # SHARADA DIGIT NINE
+111E9 ; [.2074.0020.0002] # SINHALA ARCHAIC DIGIT NINE
+112F9 ; [.2074.0020.0002] # KHUDAWADI DIGIT NINE
+11459 ; [.2074.0020.0002] # NEWA DIGIT NINE
+114D9 ; [.2074.0020.0002] # TIRHUTA DIGIT NINE
+11659 ; [.2074.0020.0002] # MODI DIGIT NINE
+116C9 ; [.2074.0020.0002] # TAKRI DIGIT NINE
+11739 ; [.2074.0020.0002] # AHOM DIGIT NINE
+118E9 ; [.2074.0020.0002] # WARANG CITI DIGIT NINE
+11959 ; [.2074.0020.0002] # DIVES AKURU DIGIT NINE
+11C59 ; [.2074.0020.0002] # BHAIKSUKI DIGIT NINE
+11C62 ; [.2074.0020.0002] # BHAIKSUKI NUMBER NINE
+11D59 ; [.2074.0020.0002] # MASARAM GONDI DIGIT NINE
+11DA9 ; [.2074.0020.0002] # GUNJALA GONDI DIGIT NINE
+12407 ; [.2074.0020.0002] # CUNEIFORM NUMERIC SIGN NINE ASH
+1240E ; [.2074.0020.0002] # CUNEIFORM NUMERIC SIGN NINE DISH
+12414 ; [.2074.0020.0002] # CUNEIFORM NUMERIC SIGN NINE U
+1241D ; [.2074.0020.0002] # CUNEIFORM NUMERIC SIGN NINE GESH2
+1242B ; [.2074.0020.0002] # CUNEIFORM NUMERIC SIGN NINE SHAR2
+12446 ; [.2074.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU
+12447 ; [.2074.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3
+12448 ; [.2074.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4
+12449 ; [.2074.0020.0002] # CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A
+1246E ; [.2074.0020.0002] # CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
+16A69 ; [.2074.0020.0002] # MRO DIGIT NINE
+16AC9 ; [.2074.0020.0002] # TANGSA DIGIT NINE
+16B59 ; [.2074.0020.0002] # PAHAWH HMONG DIGIT NINE
+16E89 ; [.2074.0020.0002] # MEDEFAIDRIN DIGIT NINE
+1D2E9 ; [.2074.0020.0002] # MAYAN NUMERAL NINE
+1D368 ; [.2074.0020.0002] # COUNTING ROD UNIT DIGIT NINE
+1E149 ; [.2074.0020.0002] # NYIAKENG PUACHUE HMONG DIGIT NINE
+1E2F9 ; [.2074.0020.0002] # WANCHO DIGIT NINE
+1E8CF ; [.2074.0020.0002] # MENDE KIKAKUI DIGIT NINE
+1E959 ; [.2074.0020.0002] # ADLAM DIGIT NINE
+1EC79 ; [.2074.0020.0002] # INDIC SIYAQ NUMBER NINE
+1ECAB ; [.2074.0020.0002] # INDIC SIYAQ NUMBER PREFIXED NINE
+1ED09 ; [.2074.0020.0002] # OTTOMAN SIYAQ NUMBER NINE
+FF19 ; [.2074.0020.0003] # FULLWIDTH DIGIT NINE
+0F32 ; [.2074.0020.0004] # TIBETAN DIGIT HALF NINE
+247C ; [*0334.0020.0004][.2074.0020.0004][*0335.0020.0004] # PARENTHESIZED DIGIT NINE
+2490 ; [.2074.0020.0004][*0281.0020.0004] # DIGIT NINE FULL STOP
+1F10A ; [.2074.0020.0004][*0224.0020.0004] # DIGIT NINE COMMA
+1D7D7 ; [.2074.0020.0005] # MATHEMATICAL BOLD DIGIT NINE
+1D7E1 ; [.2074.0020.0005] # MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
+1D7EB ; [.2074.0020.0005] # MATHEMATICAL SANS-SERIF DIGIT NINE
+1D7F5 ; [.2074.0020.0005] # MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
+1D7FF ; [.2074.0020.0005] # MATHEMATICAL MONOSPACE DIGIT NINE
+1FBF9 ; [.2074.0020.0005] # SEGMENTED DIGIT NINE
+2468 ; [.2074.0020.0006] # CIRCLED DIGIT NINE
+24FD ; [.2074.0020.0006] # DOUBLE CIRCLED DIGIT NINE
+277E ; [.2074.0020.0006] # DINGBAT NEGATIVE CIRCLED DIGIT NINE
+2788 ; [.2074.0020.0006] # DINGBAT CIRCLED SANS-SERIF DIGIT NINE
+2792 ; [.2074.0020.0006] # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE
+2079 ; [.2074.0020.0014] # SUPERSCRIPT NINE
+2089 ; [.2074.0020.0015] # SUBSCRIPT NINE
+1ED36 ; [.2074.0020.0004][.0000.0118.0004] # OTTOMAN SIYAQ ALTERNATE NUMBER NINE
+33E8 ; [.2074.0020.0004][.FB40.0020.0004][.E5E5.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+32C8 ; [.2074.0020.0004][.FB40.0020.0004][.E708.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+3361 ; [.2074.0020.0004][.FB40.0020.0004][.F0B9.0000.0000] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+0061 ; [.2075.0020.0002] # LATIN SMALL LETTER A
+FF41 ; [.2075.0020.0003] # FULLWIDTH LATIN SMALL LETTER A
+0363 ; [.2075.0020.0004] # COMBINING LATIN SMALL LETTER A
+249C ; [*0334.0020.0004][.2075.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER A
+1D41A ; [.2075.0020.0005] # MATHEMATICAL BOLD SMALL A
+1D44E ; [.2075.0020.0005] # MATHEMATICAL ITALIC SMALL A
+1D482 ; [.2075.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL A
+1D4B6 ; [.2075.0020.0005] # MATHEMATICAL SCRIPT SMALL A
+1D4EA ; [.2075.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL A
+1D51E ; [.2075.0020.0005] # MATHEMATICAL FRAKTUR SMALL A
+1D552 ; [.2075.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL A
+1D586 ; [.2075.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL A
+1D5BA ; [.2075.0020.0005] # MATHEMATICAL SANS-SERIF SMALL A
+1D5EE ; [.2075.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL A
+1D622 ; [.2075.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL A
+1D656 ; [.2075.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
+1D68A ; [.2075.0020.0005] # MATHEMATICAL MONOSPACE SMALL A
+24D0 ; [.2075.0020.0006] # CIRCLED LATIN SMALL LETTER A
+0041 ; [.2075.0020.0008] # LATIN CAPITAL LETTER A
+FF21 ; [.2075.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER A
+1F110 ; [*0334.0020.0004][.2075.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER A
+1D400 ; [.2075.0020.000B] # MATHEMATICAL BOLD CAPITAL A
+1D434 ; [.2075.0020.000B] # MATHEMATICAL ITALIC CAPITAL A
+1D468 ; [.2075.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL A
+1D49C ; [.2075.0020.000B] # MATHEMATICAL SCRIPT CAPITAL A
+1D4D0 ; [.2075.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL A
+1D504 ; [.2075.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL A
+1D538 ; [.2075.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+1D56C ; [.2075.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL A
+1D5A0 ; [.2075.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL A
+1D5D4 ; [.2075.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+1D608 ; [.2075.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+1D63C ; [.2075.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+1D670 ; [.2075.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL A
+24B6 ; [.2075.0020.000C] # CIRCLED LATIN CAPITAL LETTER A
+1F150 ; [.2075.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER A
+00AA ; [.2075.0020.0014] # FEMININE ORDINAL INDICATOR
+1D43 ; [.2075.0020.0014] # MODIFIER LETTER SMALL A
+2090 ; [.2075.0020.0015] # LATIN SUBSCRIPT SMALL LETTER A
+1D2C ; [.2075.0020.001D] # MODIFIER LETTER CAPITAL A
+1F130 ; [.2075.0020.001D] # SQUARED LATIN CAPITAL LETTER A
+1F170 ; [.2075.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER A
+00E1 ; [.2075.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.2075.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH ACUTE
+00E0 ; [.2075.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH GRAVE
+00C0 ; [.2075.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH GRAVE
+0103 ; [.2075.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER A WITH BREVE
+0102 ; [.2075.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER A WITH BREVE
+1EAF ; [.2075.0020.0002][.0000.0026.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EAE ; [.2075.0020.0008][.0000.0026.0002][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB1 ; [.2075.0020.0002][.0000.0026.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB0 ; [.2075.0020.0008][.0000.0026.0002][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EB5 ; [.2075.0020.0002][.0000.0026.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB4 ; [.2075.0020.0008][.0000.0026.0002][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB3 ; [.2075.0020.0002][.0000.0026.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB2 ; [.2075.0020.0008][.0000.0026.0002][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+00E2 ; [.2075.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+00C2 ; [.2075.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+1EA5 ; [.2075.0020.0002][.0000.0027.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA4 ; [.2075.0020.0008][.0000.0027.0002][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA7 ; [.2075.0020.0002][.0000.0027.0002][.0000.0025.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA6 ; [.2075.0020.0008][.0000.0027.0002][.0000.0025.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EAB ; [.2075.0020.0002][.0000.0027.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAA ; [.2075.0020.0008][.0000.0027.0002][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EA9 ; [.2075.0020.0002][.0000.0027.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA8 ; [.2075.0020.0008][.0000.0027.0002][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+01CE ; [.2075.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER A WITH CARON
+01CD ; [.2075.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER A WITH CARON
+00E5 ; [.2075.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.2075.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.2075.0020.0008][.0000.0029.0002] # ANGSTROM SIGN
+01FB ; [.2075.0020.0002][.0000.0029.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.2075.0020.0008][.0000.0029.0002][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00E4 ; [.2075.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER A WITH DIAERESIS
+1DF2 ; [.2075.0020.0004][.0000.002B.0004] # COMBINING LATIN SMALL LETTER A WITH DIAERESIS
+A79B ; [.2075.0020.0004][.0000.002B.0004] # LATIN SMALL LETTER VOLAPUK AE
+00C4 ; [.2075.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS
+A79A ; [.2075.0020.000A][.0000.002B.0004] # LATIN CAPITAL LETTER VOLAPUK AE
+01DF ; [.2075.0020.0002][.0000.002B.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.2075.0020.0008][.0000.002B.0002][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E3 ; [.2075.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER A WITH TILDE
+00C3 ; [.2075.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER A WITH TILDE
+0227 ; [.2075.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER A WITH DOT ABOVE
+0226 ; [.2075.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER A WITH DOT ABOVE
+01E1 ; [.2075.0020.0002][.0000.002E.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+01E0 ; [.2075.0020.0008][.0000.002E.0002][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+0105 ; [.2075.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER A WITH OGONEK
+A7C1 ; [.2075.0020.0004][.0000.0031.0004] # LATIN SMALL LETTER OLD POLISH O
+0104 ; [.2075.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER A WITH OGONEK
+A7C0 ; [.2075.0020.000A][.0000.0031.0004] # LATIN CAPITAL LETTER OLD POLISH O
+0101 ; [.2075.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER A WITH MACRON
+0100 ; [.2075.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER A WITH MACRON
+1EA3 ; [.2075.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA2 ; [.2075.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+0201 ; [.2075.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER A WITH DOUBLE GRAVE
+0200 ; [.2075.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+0203 ; [.2075.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER A WITH INVERTED BREVE
+0202 ; [.2075.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER A WITH INVERTED BREVE
+1EA1 ; [.2075.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER A WITH DOT BELOW
+1EA0 ; [.2075.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER A WITH DOT BELOW
+1EB7 ; [.2075.0020.0002][.0000.0042.0002][.0000.0026.0002] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB6 ; [.2075.0020.0008][.0000.0042.0002][.0000.0026.0002] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+1EAD ; [.2075.0020.0002][.0000.0042.0002][.0000.0027.0002] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAC ; [.2075.0020.0008][.0000.0042.0002][.0000.0027.0002] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1E01 ; [.2075.0020.0002][.0000.0044.0002] # LATIN SMALL LETTER A WITH RING BELOW
+1E00 ; [.2075.0020.0008][.0000.0044.0002] # LATIN CAPITAL LETTER A WITH RING BELOW
+1DD3 ; [.2075.0020.0004][.0000.0118.0004] # COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE
+A733 ; [.2075.0020.0004][.2075.0020.0004] # LATIN SMALL LETTER AA
+A732 ; [.2075.0020.000A][.2075.0020.000A] # LATIN CAPITAL LETTER AA
+10780 ; [.2075.0020.0014][.2075.0020.0014] # MODIFIER LETTER SMALL CAPITAL AA
+1F18E ; [.2075.0020.001D][.208F.0020.001D] # NEGATIVE SQUARED AB
+2100 ; [.2075.0020.0004][*03BA.0020.0004][.20A9.0020.0004] # ACCOUNT OF
+00E6 ; [.2075.0020.0004][.0000.0118.0004][.20DB.0020.0004] # LATIN SMALL LETTER AE
+1DD4 ; [.2075.0020.0004][.0000.0118.0004][.20DB.0020.0004] # COMBINING LATIN SMALL LETTER AE
+00C6 ; [.2075.0020.000A][.0000.0118.0004][.20DB.0020.000A] # LATIN CAPITAL LETTER AE
+1D2D ; [.2075.0020.0014][.0000.0118.0014][.20DB.0020.0014] # MODIFIER LETTER CAPITAL AE
+10783 ; [.2075.0020.0014][.0000.0118.0014][.20DB.0020.0014] # MODIFIER LETTER SMALL AE
+01FD ; [.2075.0020.0004][.0000.0118.0004][.20DB.0020.0004][.0000.0024.0002] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.2075.0020.000A][.0000.0118.0004][.20DB.0020.000A][.0000.0024.0002] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.2075.0020.0004][.0000.0118.0004][.20DB.0020.0004][.0000.0032.0002] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.2075.0020.000A][.0000.0118.0004][.20DB.0020.000A][.0000.0032.0002] # LATIN CAPITAL LETTER AE WITH MACRON
+33C2 ; [.2075.0020.001C][*0281.0020.001C][.21E8.0020.001C][*0281.0020.001C] # SQUARE AM
+33DF ; [.2075.0020.001D][*06AC.0020.001C][.21E8.0020.001C] # SQUARE A OVER M
+1DD5 ; [.2075.0020.0004][.221D.0020.0004] # COMBINING LATIN SMALL LETTER AO
+A735 ; [.2075.0020.0004][.221D.0020.0004] # LATIN SMALL LETTER AO
+A734 ; [.2075.0020.000A][.221D.0020.000A] # LATIN CAPITAL LETTER AO
+2101 ; [.2075.0020.0004][*03BA.0020.0004][.22B6.0020.0004] # ADDRESSED TO THE SUBJECT
+214D ; [.2075.0020.000A][*03BA.0020.0004][.22B6.0020.000A] # AKTIESELSKAB
+A737 ; [.2075.0020.0004][.2301.0020.0004] # LATIN SMALL LETTER AU
+A736 ; [.2075.0020.000A][.2301.0020.000A] # LATIN CAPITAL LETTER AU
+3373 ; [.2075.0020.001D][.2301.0020.001D] # SQUARE AU
+1DD6 ; [.2075.0020.0004][.2331.0020.0004] # COMBINING LATIN SMALL LETTER AV
+A739 ; [.2075.0020.0004][.2331.0020.0004] # LATIN SMALL LETTER AV
+A738 ; [.2075.0020.000A][.2331.0020.000A] # LATIN CAPITAL LETTER AV
+A73B ; [.2075.0020.0004][.0000.0118.0004][.2331.0020.0004] # LATIN SMALL LETTER AV WITH HORIZONTAL BAR
+A73A ; [.2075.0020.000A][.0000.0118.0004][.2331.0020.000A] # LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+A73D ; [.2075.0020.0004][.2359.0020.0004] # LATIN SMALL LETTER AY
+A73C ; [.2075.0020.000A][.2359.0020.000A] # LATIN CAPITAL LETTER AY
+1E9A ; [.2075.0020.0004][.23D1.0020.0004] # LATIN SMALL LETTER A WITH RIGHT HALF RING
+1D00 ; [.2079.0020.0002] # LATIN LETTER SMALL CAPITAL A
+2C65 ; [.207A.0020.0002] # LATIN SMALL LETTER A WITH STROKE
+023A ; [.207A.0020.0008] # LATIN CAPITAL LETTER A WITH STROKE
+1D8F ; [.207B.0020.0002] # LATIN SMALL LETTER A WITH RETROFLEX HOOK
+A7BB ; [.207C.0020.0002] # LATIN SMALL LETTER GLOTTAL A
+A7BA ; [.207C.0020.0008] # LATIN CAPITAL LETTER GLOTTAL A
+1D01 ; [.207D.0020.0002] # LATIN LETTER SMALL CAPITAL AE
+1D02 ; [.207E.0020.0002] # LATIN SMALL LETTER TURNED AE
+1D46 ; [.207E.0020.0014] # MODIFIER LETTER SMALL TURNED AE
+AB31 ; [.207F.0020.0002] # LATIN SMALL LETTER A REVERSED-SCHWA
+0250 ; [.2080.0020.0002] # LATIN SMALL LETTER TURNED A
+2C6F ; [.2080.0020.0008] # LATIN CAPITAL LETTER TURNED A
+1D44 ; [.2080.0020.0014] # MODIFIER LETTER SMALL TURNED A
+0251 ; [.2084.0020.0002] # LATIN SMALL LETTER ALPHA
+1DE7 ; [.2084.0020.0004] # COMBINING LATIN SMALL LETTER ALPHA
+2C6D ; [.2084.0020.0008] # LATIN CAPITAL LETTER ALPHA
+1D45 ; [.2084.0020.0014] # MODIFIER LETTER SMALL ALPHA
+AB30 ; [.2088.0020.0002] # LATIN SMALL LETTER BARRED ALPHA
+1D90 ; [.2089.0020.0002] # LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK
+0252 ; [.208A.0020.0002] # LATIN SMALL LETTER TURNED ALPHA
+2C70 ; [.208A.0020.0008] # LATIN CAPITAL LETTER TURNED ALPHA
+1D9B ; [.208A.0020.0014] # MODIFIER LETTER SMALL TURNED ALPHA
+AB64 ; [.208E.0020.0002] # LATIN SMALL LETTER INVERTED ALPHA
+0062 ; [.208F.0020.0002] # LATIN SMALL LETTER B
+FF42 ; [.208F.0020.0003] # FULLWIDTH LATIN SMALL LETTER B
+1DE8 ; [.208F.0020.0004] # COMBINING LATIN SMALL LETTER B
+249D ; [*0334.0020.0004][.208F.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER B
+1D41B ; [.208F.0020.0005] # MATHEMATICAL BOLD SMALL B
+1D44F ; [.208F.0020.0005] # MATHEMATICAL ITALIC SMALL B
+1D483 ; [.208F.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL B
+1D4B7 ; [.208F.0020.0005] # MATHEMATICAL SCRIPT SMALL B
+1D4EB ; [.208F.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL B
+1D51F ; [.208F.0020.0005] # MATHEMATICAL FRAKTUR SMALL B
+1D553 ; [.208F.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL B
+1D587 ; [.208F.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL B
+1D5BB ; [.208F.0020.0005] # MATHEMATICAL SANS-SERIF SMALL B
+1D5EF ; [.208F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL B
+1D623 ; [.208F.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL B
+1D657 ; [.208F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
+1D68B ; [.208F.0020.0005] # MATHEMATICAL MONOSPACE SMALL B
+24D1 ; [.208F.0020.0006] # CIRCLED LATIN SMALL LETTER B
+0042 ; [.208F.0020.0008] # LATIN CAPITAL LETTER B
+FF22 ; [.208F.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER B
+1F111 ; [*0334.0020.0004][.208F.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER B
+212C ; [.208F.0020.000B] # SCRIPT CAPITAL B
+1D401 ; [.208F.0020.000B] # MATHEMATICAL BOLD CAPITAL B
+1D435 ; [.208F.0020.000B] # MATHEMATICAL ITALIC CAPITAL B
+1D469 ; [.208F.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL B
+1D4D1 ; [.208F.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL B
+1D505 ; [.208F.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL B
+1D539 ; [.208F.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D56D ; [.208F.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL B
+1D5A1 ; [.208F.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL B
+1D5D5 ; [.208F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+1D609 ; [.208F.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+1D63D ; [.208F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+1D671 ; [.208F.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL B
+24B7 ; [.208F.0020.000C] # CIRCLED LATIN CAPITAL LETTER B
+1F151 ; [.208F.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER B
+1D47 ; [.208F.0020.0014] # MODIFIER LETTER SMALL B
+1D2E ; [.208F.0020.001D] # MODIFIER LETTER CAPITAL B
+1F131 ; [.208F.0020.001D] # SQUARED LATIN CAPITAL LETTER B
+1F171 ; [.208F.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER B
+1E03 ; [.208F.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER B WITH DOT ABOVE
+1E02 ; [.208F.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER B WITH DOT ABOVE
+1E05 ; [.208F.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER B WITH DOT BELOW
+1E04 ; [.208F.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER B WITH DOT BELOW
+1E07 ; [.208F.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER B WITH LINE BELOW
+1E06 ; [.208F.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER B WITH LINE BELOW
+3374 ; [.208F.0020.001C][.2075.0020.001C][.2275.0020.001C] # SQUARE BAR
+33C3 ; [.208F.0020.001D][.2262.0020.001C] # SQUARE BQ
+0299 ; [.2093.0020.0002] # LATIN LETTER SMALL CAPITAL B
+10784 ; [.2093.0020.0014] # MODIFIER LETTER SMALL CAPITAL B
+0180 ; [.2097.0020.0002] # LATIN SMALL LETTER B WITH STROKE
+0243 ; [.2097.0020.0008] # LATIN CAPITAL LETTER B WITH STROKE
+1D2F ; [.209B.0020.0002] # MODIFIER LETTER CAPITAL BARRED B
+1D03 ; [.209C.0020.0002] # LATIN LETTER SMALL CAPITAL BARRED B
+1D6C ; [.209D.0020.0002] # LATIN SMALL LETTER B WITH MIDDLE TILDE
+A797 ; [.209E.0020.0002] # LATIN SMALL LETTER B WITH FLOURISH
+A796 ; [.209E.0020.0008] # LATIN CAPITAL LETTER B WITH FLOURISH
+1D80 ; [.209F.0020.0002] # LATIN SMALL LETTER B WITH PALATAL HOOK
+0253 ; [.20A0.0020.0002] # LATIN SMALL LETTER B WITH HOOK
+0181 ; [.20A0.0020.0008] # LATIN CAPITAL LETTER B WITH HOOK
+10785 ; [.20A0.0020.0014] # MODIFIER LETTER SMALL B WITH HOOK
+0183 ; [.20A4.0020.0002] # LATIN SMALL LETTER B WITH TOPBAR
+0182 ; [.20A4.0020.0008] # LATIN CAPITAL LETTER B WITH TOPBAR
+A7B5 ; [.20A8.0020.0002] # LATIN SMALL LETTER BETA
+1DE9 ; [.20A8.0020.0004] # COMBINING LATIN SMALL LETTER BETA
+A7B4 ; [.20A8.0020.0008] # LATIN CAPITAL LETTER BETA
+0063 ; [.20A9.0020.0002] # LATIN SMALL LETTER C
+FF43 ; [.20A9.0020.0003] # FULLWIDTH LATIN SMALL LETTER C
+0368 ; [.20A9.0020.0004] # COMBINING LATIN SMALL LETTER C
+217D ; [.20A9.0020.0004] # SMALL ROMAN NUMERAL ONE HUNDRED
+249E ; [*0334.0020.0004][.20A9.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER C
+1D41C ; [.20A9.0020.0005] # MATHEMATICAL BOLD SMALL C
+1D450 ; [.20A9.0020.0005] # MATHEMATICAL ITALIC SMALL C
+1D484 ; [.20A9.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL C
+1D4B8 ; [.20A9.0020.0005] # MATHEMATICAL SCRIPT SMALL C
+1D4EC ; [.20A9.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL C
+1D520 ; [.20A9.0020.0005] # MATHEMATICAL FRAKTUR SMALL C
+1D554 ; [.20A9.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL C
+1D588 ; [.20A9.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL C
+1D5BC ; [.20A9.0020.0005] # MATHEMATICAL SANS-SERIF SMALL C
+1D5F0 ; [.20A9.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL C
+1D624 ; [.20A9.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL C
+1D658 ; [.20A9.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
+1D68C ; [.20A9.0020.0005] # MATHEMATICAL MONOSPACE SMALL C
+24D2 ; [.20A9.0020.0006] # CIRCLED LATIN SMALL LETTER C
+0043 ; [.20A9.0020.0008] # LATIN CAPITAL LETTER C
+FF23 ; [.20A9.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER C
+2103 ; [*054C.0020.0004][.20A9.0020.000A] # DEGREE CELSIUS
+216D ; [.20A9.0020.000A] # ROMAN NUMERAL ONE HUNDRED
+1F112 ; [*0334.0020.0004][.20A9.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER C
+2102 ; [.20A9.0020.000B] # DOUBLE-STRUCK CAPITAL C
+212D ; [.20A9.0020.000B] # BLACK-LETTER CAPITAL C
+1D402 ; [.20A9.0020.000B] # MATHEMATICAL BOLD CAPITAL C
+1D436 ; [.20A9.0020.000B] # MATHEMATICAL ITALIC CAPITAL C
+1D46A ; [.20A9.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL C
+1D49E ; [.20A9.0020.000B] # MATHEMATICAL SCRIPT CAPITAL C
+1D4D2 ; [.20A9.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL C
+1D56E ; [.20A9.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL C
+1D5A2 ; [.20A9.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL C
+1D5D6 ; [.20A9.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+1D60A ; [.20A9.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+1D63E ; [.20A9.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+1D672 ; [.20A9.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL C
+24B8 ; [.20A9.0020.000C] # CIRCLED LATIN CAPITAL LETTER C
+1F12B ; [.20A9.0020.000C] # CIRCLED ITALIC LATIN CAPITAL LETTER C
+1F152 ; [.20A9.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER C
+1D9C ; [.20A9.0020.0014] # MODIFIER LETTER SMALL C
+A7F2 ; [.20A9.0020.001D] # MODIFIER LETTER CAPITAL C
+1F132 ; [.20A9.0020.001D] # SQUARED LATIN CAPITAL LETTER C
+1F172 ; [.20A9.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER C
+0107 ; [.20A9.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER C WITH ACUTE
+0106 ; [.20A9.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER C WITH ACUTE
+0109 ; [.20A9.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER C WITH CIRCUMFLEX
+0108 ; [.20A9.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+010D ; [.20A9.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER C WITH CARON
+010C ; [.20A9.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER C WITH CARON
+010B ; [.20A9.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER C WITH DOT ABOVE
+010A ; [.20A9.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER C WITH DOT ABOVE
+00E7 ; [.20A9.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER C WITH CEDILLA
+1DD7 ; [.20A9.0020.0004][.0000.0030.0004] # COMBINING LATIN SMALL LETTER C CEDILLA
+00C7 ; [.20A9.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER C WITH CEDILLA
+1E09 ; [.20A9.0020.0002][.0000.0030.0002][.0000.0024.0002] # LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+1E08 ; [.20A9.0020.0008][.0000.0030.0002][.0000.0024.0002] # LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+3388 ; [.20A9.0020.001C][.2075.0020.001C][.21B0.0020.001C] # SQUARE CAL
+33C4 ; [.20A9.0020.001C][.20A9.0020.001C] # SQUARE CC
+1F12D ; [.20A9.0020.000C][.20BF.0020.000C] # CIRCLED CD
+33C5 ; [.20A9.0020.001C][.20BF.0020.001C] # SQUARE CD
+33C6 ; [.20A9.0020.001D][*06AC.0020.001C][.219C.0020.001C][.2125.0020.001C] # SQUARE C OVER KG
+1F191 ; [.20A9.0020.001D][.21B0.0020.001D] # SQUARED CL
+339D ; [.20A9.0020.001C][.21E8.0020.001C] # SQUARE CM
+33A0 ; [.20A9.0020.001C][.21E8.0020.001C][.206D.0020.001C] # SQUARE CM SQUARED
+33A4 ; [.20A9.0020.001C][.21E8.0020.001C][.206E.0020.001C] # SQUARE CM CUBED
+2105 ; [.20A9.0020.0004][*03BA.0020.0004][.221D.0020.0004] # CARE OF
+33C7 ; [.20A9.0020.001D][.221D.0020.001C][*0281.0020.001C] # SQUARE CO
+1F192 ; [.20A9.0020.001D][.221D.0020.001D][.221D.0020.001D][.21B0.0020.001D] # SQUARED COOL
+2106 ; [.20A9.0020.0004][*03BA.0020.0004][.2301.0020.0004] # CADA UNA
+1D04 ; [.20AD.0020.0002] # LATIN LETTER SMALL CAPITAL C
+023C ; [.20AE.0020.0002] # LATIN SMALL LETTER C WITH STROKE
+023B ; [.20AE.0020.0008] # LATIN CAPITAL LETTER C WITH STROKE
+A793 ; [.20B2.0020.0002] # LATIN SMALL LETTER C WITH BAR
+A792 ; [.20B2.0020.0008] # LATIN CAPITAL LETTER C WITH BAR
+A794 ; [.20B3.0020.0002] # LATIN SMALL LETTER C WITH PALATAL HOOK
+A7C4 ; [.20B3.0020.0008] # LATIN CAPITAL LETTER C WITH PALATAL HOOK
+1DF1D ; [.20B4.0020.0002] # LATIN SMALL LETTER C WITH RETROFLEX HOOK
+0188 ; [.20B5.0020.0002] # LATIN SMALL LETTER C WITH HOOK
+0187 ; [.20B5.0020.0008] # LATIN CAPITAL LETTER C WITH HOOK
+0255 ; [.20B9.0020.0002] # LATIN SMALL LETTER C WITH CURL
+1D9D ; [.20B9.0020.0014] # MODIFIER LETTER SMALL C WITH CURL
+2184 ; [.20BD.0020.0002] # LATIN SMALL LETTER REVERSED C
+2183 ; [.20BD.0020.0008] # ROMAN NUMERAL REVERSED ONE HUNDRED
+A73F ; [.20BE.0020.0002] # LATIN SMALL LETTER REVERSED C WITH DOT
+A73E ; [.20BE.0020.0008] # LATIN CAPITAL LETTER REVERSED C WITH DOT
+0064 ; [.20BF.0020.0002] # LATIN SMALL LETTER D
+FF44 ; [.20BF.0020.0003] # FULLWIDTH LATIN SMALL LETTER D
+0369 ; [.20BF.0020.0004] # COMBINING LATIN SMALL LETTER D
+217E ; [.20BF.0020.0004] # SMALL ROMAN NUMERAL FIVE HUNDRED
+249F ; [*0334.0020.0004][.20BF.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER D
+2146 ; [.20BF.0020.0005] # DOUBLE-STRUCK ITALIC SMALL D
+1D41D ; [.20BF.0020.0005] # MATHEMATICAL BOLD SMALL D
+1D451 ; [.20BF.0020.0005] # MATHEMATICAL ITALIC SMALL D
+1D485 ; [.20BF.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL D
+1D4B9 ; [.20BF.0020.0005] # MATHEMATICAL SCRIPT SMALL D
+1D4ED ; [.20BF.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL D
+1D521 ; [.20BF.0020.0005] # MATHEMATICAL FRAKTUR SMALL D
+1D555 ; [.20BF.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL D
+1D589 ; [.20BF.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL D
+1D5BD ; [.20BF.0020.0005] # MATHEMATICAL SANS-SERIF SMALL D
+1D5F1 ; [.20BF.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL D
+1D625 ; [.20BF.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL D
+1D659 ; [.20BF.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
+1D68D ; [.20BF.0020.0005] # MATHEMATICAL MONOSPACE SMALL D
+24D3 ; [.20BF.0020.0006] # CIRCLED LATIN SMALL LETTER D
+0044 ; [.20BF.0020.0008] # LATIN CAPITAL LETTER D
+FF24 ; [.20BF.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER D
+216E ; [.20BF.0020.000A] # ROMAN NUMERAL FIVE HUNDRED
+1F113 ; [*0334.0020.0004][.20BF.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER D
+2145 ; [.20BF.0020.000B] # DOUBLE-STRUCK ITALIC CAPITAL D
+1D403 ; [.20BF.0020.000B] # MATHEMATICAL BOLD CAPITAL D
+1D437 ; [.20BF.0020.000B] # MATHEMATICAL ITALIC CAPITAL D
+1D46B ; [.20BF.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL D
+1D49F ; [.20BF.0020.000B] # MATHEMATICAL SCRIPT CAPITAL D
+1D4D3 ; [.20BF.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL D
+1D507 ; [.20BF.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL D
+1D53B ; [.20BF.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+1D56F ; [.20BF.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL D
+1D5A3 ; [.20BF.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL D
+1D5D7 ; [.20BF.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+1D60B ; [.20BF.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+1D63F ; [.20BF.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+1D673 ; [.20BF.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL D
+24B9 ; [.20BF.0020.000C] # CIRCLED LATIN CAPITAL LETTER D
+1F153 ; [.20BF.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER D
+1D48 ; [.20BF.0020.0014] # MODIFIER LETTER SMALL D
+1F1A5 ; [.20BF.0020.001C] # SQUARED LATIN SMALL LETTER D
+1D30 ; [.20BF.0020.001D] # MODIFIER LETTER CAPITAL D
+1F133 ; [.20BF.0020.001D] # SQUARED LATIN CAPITAL LETTER D
+1F173 ; [.20BF.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER D
+010F ; [.20BF.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER D WITH CARON
+010E ; [.20BF.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER D WITH CARON
+1E0B ; [.20BF.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER D WITH DOT ABOVE
+1E0A ; [.20BF.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER D WITH DOT ABOVE
+1E11 ; [.20BF.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER D WITH CEDILLA
+1E10 ; [.20BF.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER D WITH CEDILLA
+0111 ; [.20BF.0020.0002][.0000.0039.0002] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.20BF.0020.0008][.0000.0039.0002] # LATIN CAPITAL LETTER D WITH STROKE
+1E0D ; [.20BF.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER D WITH DOT BELOW
+1E0C ; [.20BF.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER D WITH DOT BELOW
+1E13 ; [.20BF.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+1E12 ; [.20BF.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+1E0F ; [.20BF.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER D WITH LINE BELOW
+1E0E ; [.20BF.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER D WITH LINE BELOW
+00F0 ; [.20BF.0020.0004][.0000.0118.0004] # LATIN SMALL LETTER ETH
+1DD9 ; [.20BF.0020.0004][.0000.0118.0004] # COMBINING LATIN SMALL LETTER ETH
+00D0 ; [.20BF.0020.000A][.0000.0118.0004] # LATIN CAPITAL LETTER ETH
+1D9E ; [.20BF.0020.0014][.0000.0118.0014] # MODIFIER LETTER SMALL ETH
+1DD8 ; [.20BF.0020.0004][.0000.0119.0004] # COMBINING LATIN SMALL LETTER INSULAR D
+A77A ; [.20BF.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR D
+A779 ; [.20BF.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR D
+3372 ; [.20BF.0020.001C][.2075.0020.001C] # SQUARE DA
+0238 ; [.20BF.0020.0004][.208F.0020.0004] # LATIN SMALL LETTER DB DIGRAPH
+33C8 ; [.20BF.0020.001C][.208F.0020.001D] # SQUARE DB
+1F190 ; [.20BF.0020.001D][.2183.0020.001D] # SQUARE DJ
+3397 ; [.20BF.0020.001C][.21B0.0020.001C] # SQUARE DL
+3377 ; [.20BF.0020.001C][.21E8.0020.001C] # SQUARE DM
+3378 ; [.20BF.0020.001C][.21E8.0020.001C][.206D.0020.001C] # SQUARE DM SQUARED
+3379 ; [.20BF.0020.001C][.21E8.0020.001C][.206E.0020.001C] # SQUARE DM CUBED
+01F3 ; [.20BF.0020.0004][.236F.0020.0004] # LATIN SMALL LETTER DZ
+02A3 ; [.20BF.0020.0004][.236F.0020.0004] # LATIN SMALL LETTER DZ DIGRAPH
+01F2 ; [.20BF.0020.000A][.236F.0020.0004] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+01F1 ; [.20BF.0020.000A][.236F.0020.000A] # LATIN CAPITAL LETTER DZ
+10787 ; [.20BF.0020.0014][.236F.0020.0014] # MODIFIER LETTER SMALL DZ DIGRAPH
+01C6 ; [.20BF.0020.0004][.236F.0020.0004][.0000.0028.0004] # LATIN SMALL LETTER DZ WITH CARON
+01C5 ; [.20BF.0020.000A][.236F.0020.0004][.0000.0028.0004] # LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+01C4 ; [.20BF.0020.000A][.236F.0020.000A][.0000.0028.0004] # LATIN CAPITAL LETTER DZ WITH CARON
+AB66 ; [.20BF.0020.0004][.237E.0020.0004] # LATIN SMALL LETTER DZ DIGRAPH WITH RETROFLEX HOOK
+10788 ; [.20BF.0020.0014][.237E.0020.0014] # MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK
+02A5 ; [.20BF.0020.0004][.2382.0020.0004] # LATIN SMALL LETTER DZ DIGRAPH WITH CURL
+10789 ; [.20BF.0020.0014][.2382.0020.0014] # MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL
+02A4 ; [.20BF.0020.0004][.238C.0020.0004] # LATIN SMALL LETTER DEZH DIGRAPH
+1078A ; [.20BF.0020.0014][.238C.0020.0014] # MODIFIER LETTER SMALL DEZH DIGRAPH
+1DF12 ; [.20BF.0020.0004][.2395.0020.0004] # LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK
+1DF19 ; [.20BF.0020.0004][.2396.0020.0004] # LATIN SMALL LETTER DEZH DIGRAPH WITH RETROFLEX HOOK
+1D05 ; [.20C3.0020.0002] # LATIN LETTER SMALL CAPITAL D
+1D06 ; [.20C4.0020.0002] # LATIN LETTER SMALL CAPITAL ETH
+A7C8 ; [.20C5.0020.0002] # LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY
+A7C7 ; [.20C5.0020.0008] # LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
+1D6D ; [.20C6.0020.0002] # LATIN SMALL LETTER D WITH MIDDLE TILDE
+1D81 ; [.20C7.0020.0002] # LATIN SMALL LETTER D WITH PALATAL HOOK
+0256 ; [.20C8.0020.0002] # LATIN SMALL LETTER D WITH TAIL
+0189 ; [.20C8.0020.0008] # LATIN CAPITAL LETTER AFRICAN D
+1078B ; [.20C8.0020.0014] # MODIFIER LETTER SMALL D WITH TAIL
+0257 ; [.20CC.0020.0002] # LATIN SMALL LETTER D WITH HOOK
+018A ; [.20CC.0020.0008] # LATIN CAPITAL LETTER D WITH HOOK
+1078C ; [.20CC.0020.0014] # MODIFIER LETTER SMALL D WITH HOOK
+1D91 ; [.20D0.0020.0002] # LATIN SMALL LETTER D WITH HOOK AND TAIL
+1078D ; [.20D0.0020.0014] # MODIFIER LETTER SMALL D WITH HOOK AND TAIL
+018C ; [.20D1.0020.0002] # LATIN SMALL LETTER D WITH TOPBAR
+018B ; [.20D1.0020.0008] # LATIN CAPITAL LETTER D WITH TOPBAR
+0221 ; [.20D5.0020.0002] # LATIN SMALL LETTER D WITH CURL
+A771 ; [.20D9.0020.0002] # LATIN SMALL LETTER DUM
+1E9F ; [.20DA.0020.0002] # LATIN SMALL LETTER DELTA
+0065 ; [.20DB.0020.0002] # LATIN SMALL LETTER E
+FF45 ; [.20DB.0020.0003] # FULLWIDTH LATIN SMALL LETTER E
+0364 ; [.20DB.0020.0004] # COMBINING LATIN SMALL LETTER E
+24A0 ; [*0334.0020.0004][.20DB.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER E
+212F ; [.20DB.0020.0005] # SCRIPT SMALL E
+2147 ; [.20DB.0020.0005] # DOUBLE-STRUCK ITALIC SMALL E
+1D41E ; [.20DB.0020.0005] # MATHEMATICAL BOLD SMALL E
+1D452 ; [.20DB.0020.0005] # MATHEMATICAL ITALIC SMALL E
+1D486 ; [.20DB.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL E
+1D4EE ; [.20DB.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL E
+1D522 ; [.20DB.0020.0005] # MATHEMATICAL FRAKTUR SMALL E
+1D556 ; [.20DB.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL E
+1D58A ; [.20DB.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL E
+1D5BE ; [.20DB.0020.0005] # MATHEMATICAL SANS-SERIF SMALL E
+1D5F2 ; [.20DB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL E
+1D626 ; [.20DB.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL E
+1D65A ; [.20DB.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
+1D68E ; [.20DB.0020.0005] # MATHEMATICAL MONOSPACE SMALL E
+24D4 ; [.20DB.0020.0006] # CIRCLED LATIN SMALL LETTER E
+0045 ; [.20DB.0020.0008] # LATIN CAPITAL LETTER E
+FF25 ; [.20DB.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER E
+1F114 ; [*0334.0020.0004][.20DB.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER E
+2130 ; [.20DB.0020.000B] # SCRIPT CAPITAL E
+1D404 ; [.20DB.0020.000B] # MATHEMATICAL BOLD CAPITAL E
+1D438 ; [.20DB.0020.000B] # MATHEMATICAL ITALIC CAPITAL E
+1D46C ; [.20DB.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL E
+1D4D4 ; [.20DB.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL E
+1D508 ; [.20DB.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL E
+1D53C ; [.20DB.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+1D570 ; [.20DB.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL E
+1D5A4 ; [.20DB.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL E
+1D5D8 ; [.20DB.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+1D60C ; [.20DB.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+1D640 ; [.20DB.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+1D674 ; [.20DB.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL E
+24BA ; [.20DB.0020.000C] # CIRCLED LATIN CAPITAL LETTER E
+1F154 ; [.20DB.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER E
+1D49 ; [.20DB.0020.0014] # MODIFIER LETTER SMALL E
+2091 ; [.20DB.0020.0015] # LATIN SUBSCRIPT SMALL LETTER E
+1D31 ; [.20DB.0020.001D] # MODIFIER LETTER CAPITAL E
+1F134 ; [.20DB.0020.001D] # SQUARED LATIN CAPITAL LETTER E
+1F174 ; [.20DB.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER E
+00E9 ; [.20DB.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.20DB.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH ACUTE
+00E8 ; [.20DB.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH GRAVE
+00C8 ; [.20DB.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH GRAVE
+0115 ; [.20DB.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER E WITH BREVE
+0114 ; [.20DB.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER E WITH BREVE
+00EA ; [.20DB.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA ; [.20DB.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EBF ; [.20DB.0020.0002][.0000.0027.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE ; [.20DB.0020.0008][.0000.0027.0002][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC1 ; [.20DB.0020.0002][.0000.0027.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0 ; [.20DB.0020.0008][.0000.0027.0002][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC5 ; [.20DB.0020.0002][.0000.0027.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4 ; [.20DB.0020.0008][.0000.0027.0002][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3 ; [.20DB.0020.0002][.0000.0027.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2 ; [.20DB.0020.0008][.0000.0027.0002][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+011B ; [.20DB.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER E WITH CARON
+011A ; [.20DB.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER E WITH CARON
+00EB ; [.20DB.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER E WITH DIAERESIS
+00CB ; [.20DB.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER E WITH DIAERESIS
+1EBD ; [.20DB.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER E WITH TILDE
+1EBC ; [.20DB.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER E WITH TILDE
+0117 ; [.20DB.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER E WITH DOT ABOVE
+0116 ; [.20DB.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER E WITH DOT ABOVE
+0229 ; [.20DB.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER E WITH CEDILLA
+0228 ; [.20DB.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER E WITH CEDILLA
+1E1D ; [.20DB.0020.0002][.0000.0030.0002][.0000.0026.0002] # LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+1E1C ; [.20DB.0020.0008][.0000.0030.0002][.0000.0026.0002] # LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+0119 ; [.20DB.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.20DB.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER E WITH OGONEK
+0113 ; [.20DB.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.20DB.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER E WITH MACRON
+1E17 ; [.20DB.0020.0002][.0000.0032.0002][.0000.0024.0002] # LATIN SMALL LETTER E WITH MACRON AND ACUTE
+1E16 ; [.20DB.0020.0008][.0000.0032.0002][.0000.0024.0002] # LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+1E15 ; [.20DB.0020.0002][.0000.0032.0002][.0000.0025.0002] # LATIN SMALL LETTER E WITH MACRON AND GRAVE
+1E14 ; [.20DB.0020.0008][.0000.0032.0002][.0000.0025.0002] # LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+1EBB ; [.20DB.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBA ; [.20DB.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+0205 ; [.20DB.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER E WITH DOUBLE GRAVE
+0204 ; [.20DB.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+0207 ; [.20DB.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER E WITH INVERTED BREVE
+0206 ; [.20DB.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER E WITH INVERTED BREVE
+1EB9 ; [.20DB.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER E WITH DOT BELOW
+1EB8 ; [.20DB.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER E WITH DOT BELOW
+1EC7 ; [.20DB.0020.0002][.0000.0042.0002][.0000.0027.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6 ; [.20DB.0020.0008][.0000.0042.0002][.0000.0027.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1E19 ; [.20DB.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+1E18 ; [.20DB.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+1E1B ; [.20DB.0020.0002][.0000.0048.0002] # LATIN SMALL LETTER E WITH TILDE BELOW
+1E1A ; [.20DB.0020.0008][.0000.0048.0002] # LATIN CAPITAL LETTER E WITH TILDE BELOW
+32CD ; [.20DB.0020.001C][.2275.0020.001C][.2125.0020.001C] # SQUARE ERG
+32CE ; [.20DB.0020.001C][.2331.0020.001D] # SQUARE EV
+1D07 ; [.20DF.0020.0002] # LATIN LETTER SMALL CAPITAL E
+AB32 ; [.20E0.0020.0002] # LATIN SMALL LETTER BLACKLETTER E
+AB33 ; [.20E1.0020.0002] # LATIN SMALL LETTER BARRED E
+0247 ; [.20E2.0020.0002] # LATIN SMALL LETTER E WITH STROKE
+0246 ; [.20E2.0020.0008] # LATIN CAPITAL LETTER E WITH STROKE
+1D92 ; [.20E6.0020.0002] # LATIN SMALL LETTER E WITH RETROFLEX HOOK
+AB34 ; [.20E7.0020.0002] # LATIN SMALL LETTER E WITH FLOURISH
+2C78 ; [.20E8.0020.0002] # LATIN SMALL LETTER E WITH NOTCH
+01DD ; [.20E9.0020.0002] # LATIN SMALL LETTER TURNED E
+018E ; [.20E9.0020.0008] # LATIN CAPITAL LETTER REVERSED E
+1D32 ; [.20E9.0020.001D] # MODIFIER LETTER CAPITAL REVERSED E
+2C7B ; [.20ED.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED E
+0259 ; [.20EE.0020.0002] # LATIN SMALL LETTER SCHWA
+1DEA ; [.20EE.0020.0004] # COMBINING LATIN SMALL LETTER SCHWA
+018F ; [.20EE.0020.0008] # LATIN CAPITAL LETTER SCHWA
+1D4A ; [.20EE.0020.0014] # MODIFIER LETTER SMALL SCHWA
+2094 ; [.20EE.0020.0015] # LATIN SUBSCRIPT SMALL LETTER SCHWA
+1D95 ; [.20F2.0020.0002] # LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK
+025B ; [.20F3.0020.0002] # LATIN SMALL LETTER OPEN E
+0190 ; [.20F3.0020.0008] # LATIN CAPITAL LETTER OPEN E
+2107 ; [.20F3.0020.000A] # EULER CONSTANT
+1D4B ; [.20F3.0020.0014] # MODIFIER LETTER SMALL OPEN E
+1D93 ; [.20F7.0020.0002] # LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK
+0258 ; [.20F8.0020.0002] # LATIN SMALL LETTER REVERSED E
+1078E ; [.20F8.0020.0014] # MODIFIER LETTER SMALL REVERSED E
+025A ; [.20FC.0020.0002] # LATIN SMALL LETTER SCHWA WITH HOOK
+025C ; [.2100.0020.0002] # LATIN SMALL LETTER REVERSED OPEN E
+A7AB ; [.2100.0020.0008] # LATIN CAPITAL LETTER REVERSED OPEN E
+1D9F ; [.2100.0020.0014] # MODIFIER LETTER SMALL REVERSED OPEN E
+1D94 ; [.2104.0020.0002] # LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK
+1D08 ; [.2105.0020.0002] # LATIN SMALL LETTER TURNED OPEN E
+1D4C ; [.2105.0020.0014] # MODIFIER LETTER SMALL TURNED OPEN E
+025D ; [.2106.0020.0002] # LATIN SMALL LETTER REVERSED OPEN E WITH HOOK
+025E ; [.210A.0020.0002] # LATIN SMALL LETTER CLOSED REVERSED OPEN E
+1078F ; [.210A.0020.0014] # MODIFIER LETTER SMALL CLOSED REVERSED OPEN E
+029A ; [.210E.0020.0002] # LATIN SMALL LETTER CLOSED OPEN E
+0264 ; [.2112.0020.0002] # LATIN SMALL LETTER RAMS HORN
+10791 ; [.2112.0020.0014] # MODIFIER LETTER SMALL RAMS HORN
+0066 ; [.2116.0020.0002] # LATIN SMALL LETTER F
+FF46 ; [.2116.0020.0003] # FULLWIDTH LATIN SMALL LETTER F
+1DEB ; [.2116.0020.0004] # COMBINING LATIN SMALL LETTER F
+24A1 ; [*0334.0020.0004][.2116.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER F
+1D41F ; [.2116.0020.0005] # MATHEMATICAL BOLD SMALL F
+1D453 ; [.2116.0020.0005] # MATHEMATICAL ITALIC SMALL F
+1D487 ; [.2116.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL F
+1D4BB ; [.2116.0020.0005] # MATHEMATICAL SCRIPT SMALL F
+1D4EF ; [.2116.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL F
+1D523 ; [.2116.0020.0005] # MATHEMATICAL FRAKTUR SMALL F
+1D557 ; [.2116.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL F
+1D58B ; [.2116.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL F
+1D5BF ; [.2116.0020.0005] # MATHEMATICAL SANS-SERIF SMALL F
+1D5F3 ; [.2116.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL F
+1D627 ; [.2116.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL F
+1D65B ; [.2116.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
+1D68F ; [.2116.0020.0005] # MATHEMATICAL MONOSPACE SMALL F
+24D5 ; [.2116.0020.0006] # CIRCLED LATIN SMALL LETTER F
+0046 ; [.2116.0020.0008] # LATIN CAPITAL LETTER F
+FF26 ; [.2116.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER F
+2109 ; [*054C.0020.0004][.2116.0020.000A] # DEGREE FAHRENHEIT
+1F115 ; [*0334.0020.0004][.2116.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER F
+2131 ; [.2116.0020.000B] # SCRIPT CAPITAL F
+1D405 ; [.2116.0020.000B] # MATHEMATICAL BOLD CAPITAL F
+1D439 ; [.2116.0020.000B] # MATHEMATICAL ITALIC CAPITAL F
+1D46D ; [.2116.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL F
+1D4D5 ; [.2116.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL F
+1D509 ; [.2116.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL F
+1D53D ; [.2116.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+1D571 ; [.2116.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL F
+1D5A5 ; [.2116.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL F
+1D5D9 ; [.2116.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+1D60D ; [.2116.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+1D641 ; [.2116.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+1D675 ; [.2116.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL F
+24BB ; [.2116.0020.000C] # CIRCLED LATIN CAPITAL LETTER F
+1F155 ; [.2116.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER F
+1DA0 ; [.2116.0020.0014] # MODIFIER LETTER SMALL F
+A7F3 ; [.2116.0020.001D] # MODIFIER LETTER CAPITAL F
+1F135 ; [.2116.0020.001D] # SQUARED LATIN CAPITAL LETTER F
+1F175 ; [.2116.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER F
+1E1F ; [.2116.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER F WITH DOT ABOVE
+1E1E ; [.2116.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER F WITH DOT ABOVE
+A77C ; [.2116.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR F
+A77B ; [.2116.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR F
+213B ; [.2116.0020.000A][.2075.0020.000A][.234D.0020.000A] # FACSIMILE SIGN
+FB00 ; [.2116.0020.0004][.2116.0020.0004] # LATIN SMALL LIGATURE FF
+FB03 ; [.2116.0020.0004][.2116.0020.0004][.2167.0020.0004] # LATIN SMALL LIGATURE FFI
+FB04 ; [.2116.0020.0004][.2116.0020.0004][.21B0.0020.0004] # LATIN SMALL LIGATURE FFL
+FB01 ; [.2116.0020.0004][.2167.0020.0004] # LATIN SMALL LIGATURE FI
+FB02 ; [.2116.0020.0004][.21B0.0020.0004] # LATIN SMALL LIGATURE FL
+3399 ; [.2116.0020.001C][.21E8.0020.001C] # SQUARE FM
+02A9 ; [.2116.0020.0004][.2216.0020.0004] # LATIN SMALL LETTER FENG DIGRAPH
+10790 ; [.2116.0020.0014][.2216.0020.0014] # MODIFIER LETTER SMALL FENG DIGRAPH
+1DF00 ; [.2116.0020.0004][.0000.011A.0004][.2216.0020.0004] # LATIN SMALL LETTER FENG DIGRAPH WITH TRILL
+1F193 ; [.2116.0020.001D][.2275.0020.001D][.20DB.0020.001D][.20DB.0020.001D] # SQUARED FREE
+A730 ; [.211A.0020.0002] # LATIN LETTER SMALL CAPITAL F
+AB35 ; [.211B.0020.0002] # LATIN SMALL LETTER LENIS F
+A799 ; [.211C.0020.0002] # LATIN SMALL LETTER F WITH STROKE
+A798 ; [.211C.0020.0008] # LATIN CAPITAL LETTER F WITH STROKE
+1D6E ; [.211D.0020.0002] # LATIN SMALL LETTER F WITH MIDDLE TILDE
+1D82 ; [.211E.0020.0002] # LATIN SMALL LETTER F WITH PALATAL HOOK
+0192 ; [.211F.0020.0002] # LATIN SMALL LETTER F WITH HOOK
+0191 ; [.211F.0020.0008] # LATIN CAPITAL LETTER F WITH HOOK
+214E ; [.2123.0020.0002] # TURNED SMALL F
+2132 ; [.2123.0020.0008] # TURNED CAPITAL F
+A7FB ; [.2124.0020.0002] # LATIN EPIGRAPHIC LETTER REVERSED F
+0067 ; [.2125.0020.0002] # LATIN SMALL LETTER G
+FF47 ; [.2125.0020.0003] # FULLWIDTH LATIN SMALL LETTER G
+1DDA ; [.2125.0020.0004] # COMBINING LATIN SMALL LETTER G
+24A2 ; [*0334.0020.0004][.2125.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER G
+210A ; [.2125.0020.0005] # SCRIPT SMALL G
+1D420 ; [.2125.0020.0005] # MATHEMATICAL BOLD SMALL G
+1D454 ; [.2125.0020.0005] # MATHEMATICAL ITALIC SMALL G
+1D488 ; [.2125.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL G
+1D4F0 ; [.2125.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL G
+1D524 ; [.2125.0020.0005] # MATHEMATICAL FRAKTUR SMALL G
+1D558 ; [.2125.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL G
+1D58C ; [.2125.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL G
+1D5C0 ; [.2125.0020.0005] # MATHEMATICAL SANS-SERIF SMALL G
+1D5F4 ; [.2125.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL G
+1D628 ; [.2125.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL G
+1D65C ; [.2125.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
+1D690 ; [.2125.0020.0005] # MATHEMATICAL MONOSPACE SMALL G
+24D6 ; [.2125.0020.0006] # CIRCLED LATIN SMALL LETTER G
+0047 ; [.2125.0020.0008] # LATIN CAPITAL LETTER G
+FF27 ; [.2125.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER G
+1F116 ; [*0334.0020.0004][.2125.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER G
+1D406 ; [.2125.0020.000B] # MATHEMATICAL BOLD CAPITAL G
+1D43A ; [.2125.0020.000B] # MATHEMATICAL ITALIC CAPITAL G
+1D46E ; [.2125.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL G
+1D4A2 ; [.2125.0020.000B] # MATHEMATICAL SCRIPT CAPITAL G
+1D4D6 ; [.2125.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL G
+1D50A ; [.2125.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL G
+1D53E ; [.2125.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D572 ; [.2125.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL G
+1D5A6 ; [.2125.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL G
+1D5DA ; [.2125.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+1D60E ; [.2125.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+1D642 ; [.2125.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+1D676 ; [.2125.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL G
+24BC ; [.2125.0020.000C] # CIRCLED LATIN CAPITAL LETTER G
+1F156 ; [.2125.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER G
+1D4D ; [.2125.0020.0014] # MODIFIER LETTER SMALL G
+1D33 ; [.2125.0020.001D] # MODIFIER LETTER CAPITAL G
+1F136 ; [.2125.0020.001D] # SQUARED LATIN CAPITAL LETTER G
+1F176 ; [.2125.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER G
+01F5 ; [.2125.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER G WITH ACUTE
+01F4 ; [.2125.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER G WITH ACUTE
+011F ; [.2125.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER G WITH BREVE
+011E ; [.2125.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER G WITH BREVE
+011D ; [.2125.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER G WITH CIRCUMFLEX
+011C ; [.2125.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+01E7 ; [.2125.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER G WITH CARON
+01E6 ; [.2125.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER G WITH CARON
+0121 ; [.2125.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER G WITH DOT ABOVE
+0120 ; [.2125.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER G WITH DOT ABOVE
+0123 ; [.2125.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER G WITH CEDILLA
+0122 ; [.2125.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER G WITH CEDILLA
+1E21 ; [.2125.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER G WITH MACRON
+1E20 ; [.2125.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER G WITH MACRON
+A7A1 ; [.2125.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER G WITH OBLIQUE STROKE
+A7A0 ; [.2125.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
+1ACC ; [.2125.0020.0004][.0000.0119.0004] # COMBINING LATIN SMALL LETTER INSULAR G
+1D79 ; [.2125.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR G
+A77D ; [.2125.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR G
+33FF ; [.2125.0020.001C][.2075.0020.001C][.21B0.0020.001C] # SQUARE GAL
+3387 ; [.2125.0020.001D][.208F.0020.001D] # SQUARE GB
+3393 ; [.2125.0020.001D][.214C.0020.001D][.236F.0020.001C] # SQUARE GHZ
+33AC ; [.2125.0020.001D][.224D.0020.001D][.2075.0020.001C] # SQUARE GPA
+33C9 ; [.2125.0020.001D][.2359.0020.001C] # SQUARE GY
+A7D1 ; [.2129.0020.0002] # LATIN SMALL LETTER CLOSED INSULAR G
+A7D0 ; [.2129.0020.0008] # LATIN CAPITAL LETTER CLOSED INSULAR G
+0261 ; [.212A.0020.0002] # LATIN SMALL LETTER SCRIPT G
+A7AC ; [.212A.0020.0008] # LATIN CAPITAL LETTER SCRIPT G
+1DA2 ; [.212A.0020.0014] # MODIFIER LETTER SMALL SCRIPT G
+1DF01 ; [.212E.0020.0002] # LATIN SMALL LETTER REVERSED SCRIPT G
+AB36 ; [.212F.0020.0002] # LATIN SMALL LETTER SCRIPT G WITH CROSSED-TAIL
+0262 ; [.2130.0020.0002] # LATIN LETTER SMALL CAPITAL G
+1DDB ; [.2130.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL G
+10792 ; [.2130.0020.0014] # MODIFIER LETTER SMALL CAPITAL G
+01E5 ; [.2134.0020.0002] # LATIN SMALL LETTER G WITH STROKE
+01E4 ; [.2134.0020.0008] # LATIN CAPITAL LETTER G WITH STROKE
+1D83 ; [.2138.0020.0002] # LATIN SMALL LETTER G WITH PALATAL HOOK
+0260 ; [.2139.0020.0002] # LATIN SMALL LETTER G WITH HOOK
+0193 ; [.2139.0020.0008] # LATIN CAPITAL LETTER G WITH HOOK
+10793 ; [.2139.0020.0014] # MODIFIER LETTER SMALL G WITH HOOK
+029B ; [.213D.0020.0002] # LATIN LETTER SMALL CAPITAL G WITH HOOK
+10794 ; [.213D.0020.0014] # MODIFIER LETTER SMALL CAPITAL G WITH HOOK
+1D77 ; [.2141.0020.0002] # LATIN SMALL LETTER TURNED G
+1DF02 ; [.2142.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED G
+A77F ; [.2143.0020.0002] # LATIN SMALL LETTER TURNED INSULAR G
+A77E ; [.2143.0020.0008] # LATIN CAPITAL LETTER TURNED INSULAR G
+0263 ; [.2144.0020.0002] # LATIN SMALL LETTER GAMMA
+0194 ; [.2144.0020.0008] # LATIN CAPITAL LETTER GAMMA
+02E0 ; [.2144.0020.0014] # MODIFIER LETTER SMALL GAMMA
+01A3 ; [.2148.0020.0002] # LATIN SMALL LETTER OI
+01A2 ; [.2148.0020.0008] # LATIN CAPITAL LETTER OI
+0068 ; [.214C.0020.0002] # LATIN SMALL LETTER H
+FF48 ; [.214C.0020.0003] # FULLWIDTH LATIN SMALL LETTER H
+036A ; [.214C.0020.0004] # COMBINING LATIN SMALL LETTER H
+24A3 ; [*0334.0020.0004][.214C.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER H
+210E ; [.214C.0020.0005] # PLANCK CONSTANT
+1D421 ; [.214C.0020.0005] # MATHEMATICAL BOLD SMALL H
+1D489 ; [.214C.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL H
+1D4BD ; [.214C.0020.0005] # MATHEMATICAL SCRIPT SMALL H
+1D4F1 ; [.214C.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL H
+1D525 ; [.214C.0020.0005] # MATHEMATICAL FRAKTUR SMALL H
+1D559 ; [.214C.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL H
+1D58D ; [.214C.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL H
+1D5C1 ; [.214C.0020.0005] # MATHEMATICAL SANS-SERIF SMALL H
+1D5F5 ; [.214C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL H
+1D629 ; [.214C.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL H
+1D65D ; [.214C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
+1D691 ; [.214C.0020.0005] # MATHEMATICAL MONOSPACE SMALL H
+24D7 ; [.214C.0020.0006] # CIRCLED LATIN SMALL LETTER H
+0048 ; [.214C.0020.0008] # LATIN CAPITAL LETTER H
+FF28 ; [.214C.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER H
+1F117 ; [*0334.0020.0004][.214C.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER H
+210B ; [.214C.0020.000B] # SCRIPT CAPITAL H
+210C ; [.214C.0020.000B] # BLACK-LETTER CAPITAL H
+210D ; [.214C.0020.000B] # DOUBLE-STRUCK CAPITAL H
+1D407 ; [.214C.0020.000B] # MATHEMATICAL BOLD CAPITAL H
+1D43B ; [.214C.0020.000B] # MATHEMATICAL ITALIC CAPITAL H
+1D46F ; [.214C.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL H
+1D4D7 ; [.214C.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL H
+1D573 ; [.214C.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL H
+1D5A7 ; [.214C.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL H
+1D5DB ; [.214C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+1D60F ; [.214C.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+1D643 ; [.214C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+1D677 ; [.214C.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL H
+24BD ; [.214C.0020.000C] # CIRCLED LATIN CAPITAL LETTER H
+1F157 ; [.214C.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER H
+02B0 ; [.214C.0020.0014] # MODIFIER LETTER SMALL H
+2095 ; [.214C.0020.0015] # LATIN SUBSCRIPT SMALL LETTER H
+1D34 ; [.214C.0020.001D] # MODIFIER LETTER CAPITAL H
+1F137 ; [.214C.0020.001D] # SQUARED LATIN CAPITAL LETTER H
+1F177 ; [.214C.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER H
+0125 ; [.214C.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER H WITH CIRCUMFLEX
+0124 ; [.214C.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+021F ; [.214C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER H WITH CARON
+021E ; [.214C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER H WITH CARON
+1E27 ; [.214C.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER H WITH DIAERESIS
+1E26 ; [.214C.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER H WITH DIAERESIS
+1E23 ; [.214C.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER H WITH DOT ABOVE
+1E22 ; [.214C.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER H WITH DOT ABOVE
+1E29 ; [.214C.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER H WITH CEDILLA
+1E28 ; [.214C.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER H WITH CEDILLA
+0127 ; [.214C.0020.0002][.0000.0039.0002] # LATIN SMALL LETTER H WITH STROKE
+210F ; [.214C.0020.0002][.0000.0039.0002] # PLANCK CONSTANT OVER TWO PI
+0126 ; [.214C.0020.0008][.0000.0039.0002] # LATIN CAPITAL LETTER H WITH STROKE
+A7F8 ; [.214C.0020.0014][.0000.0039.0014] # MODIFIER LETTER CAPITAL H WITH STROKE
+10795 ; [.214C.0020.0014][.0000.0039.0014] # MODIFIER LETTER SMALL H WITH STROKE
+1E25 ; [.214C.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER H WITH DOT BELOW
+1E24 ; [.214C.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER H WITH DOT BELOW
+1E2B ; [.214C.0020.0002][.0000.0047.0002] # LATIN SMALL LETTER H WITH BREVE BELOW
+1E2A ; [.214C.0020.0008][.0000.0047.0002] # LATIN CAPITAL LETTER H WITH BREVE BELOW
+1E96 ; [.214C.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER H WITH LINE BELOW
+33CA ; [.214C.0020.001C][.2075.0020.001C] # SQUARE HA
+1F1A6 ; [.214C.0020.001D][.20A9.0020.001C] # SQUARED HC
+1F1A7 ; [.214C.0020.001D][.20BF.0020.001C][.2275.0020.001D] # SQUARED HDR
+32CC ; [.214C.0020.001D][.2125.0020.001C] # SQUARE HG
+1F1A8 ; [.214C.0020.001D][.2167.0020.001C][*0209.0020.001C][.2275.0020.001D][.20DB.0020.001C][.22B6.0020.001C] # SQUARED HI-RES
+33CB ; [.214C.0020.001D][.224D.0020.001D] # SQUARE HP
+3371 ; [.214C.0020.001C][.224D.0020.001D][.2075.0020.001C] # SQUARE HPA
+1F14A ; [.214C.0020.001D][.2331.0020.001D] # SQUARED HV
+3390 ; [.214C.0020.001D][.236F.0020.001C] # SQUARE HZ
+029C ; [.2150.0020.0002] # LATIN LETTER SMALL CAPITAL H
+10796 ; [.2150.0020.0014] # MODIFIER LETTER SMALL CAPITAL H
+0195 ; [.2154.0020.0002] # LATIN SMALL LETTER HV
+01F6 ; [.2154.0020.0008] # LATIN CAPITAL LETTER HWAIR
+A795 ; [.2158.0020.0002] # LATIN SMALL LETTER H WITH PALATAL HOOK
+0266 ; [.2159.0020.0002] # LATIN SMALL LETTER H WITH HOOK
+A7AA ; [.2159.0020.0008] # LATIN CAPITAL LETTER H WITH HOOK
+02B1 ; [.2159.0020.0014] # MODIFIER LETTER SMALL H WITH HOOK
+2C68 ; [.215D.0020.0002] # LATIN SMALL LETTER H WITH DESCENDER
+2C67 ; [.215D.0020.0008] # LATIN CAPITAL LETTER H WITH DESCENDER
+2C76 ; [.215E.0020.0002] # LATIN SMALL LETTER HALF H
+2C75 ; [.215E.0020.0008] # LATIN CAPITAL LETTER HALF H
+A7F6 ; [.215F.0020.0002] # LATIN SMALL LETTER REVERSED HALF H
+A7F5 ; [.215F.0020.0008] # LATIN CAPITAL LETTER REVERSED HALF H
+A727 ; [.2160.0020.0002] # LATIN SMALL LETTER HENG
+A726 ; [.2160.0020.0008] # LATIN CAPITAL LETTER HENG
+AB5C ; [.2160.0020.0014] # MODIFIER LETTER SMALL HENG
+0267 ; [.2161.0020.0002] # LATIN SMALL LETTER HENG WITH HOOK
+10797 ; [.2161.0020.0014] # MODIFIER LETTER SMALL HENG WITH HOOK
+02BB ; [.2165.0020.0002] # MODIFIER LETTER TURNED COMMA
+02BD ; [.2166.0020.0002] # MODIFIER LETTER REVERSED COMMA
+0069 ; [.2167.0020.0002] # LATIN SMALL LETTER I
+FF49 ; [.2167.0020.0003] # FULLWIDTH LATIN SMALL LETTER I
+0365 ; [.2167.0020.0004] # COMBINING LATIN SMALL LETTER I
+2170 ; [.2167.0020.0004] # SMALL ROMAN NUMERAL ONE
+24A4 ; [*0334.0020.0004][.2167.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER I
+2139 ; [.2167.0020.0005] # INFORMATION SOURCE
+2148 ; [.2167.0020.0005] # DOUBLE-STRUCK ITALIC SMALL I
+1D422 ; [.2167.0020.0005] # MATHEMATICAL BOLD SMALL I
+1D456 ; [.2167.0020.0005] # MATHEMATICAL ITALIC SMALL I
+1D48A ; [.2167.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL I
+1D4BE ; [.2167.0020.0005] # MATHEMATICAL SCRIPT SMALL I
+1D4F2 ; [.2167.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL I
+1D526 ; [.2167.0020.0005] # MATHEMATICAL FRAKTUR SMALL I
+1D55A ; [.2167.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL I
+1D58E ; [.2167.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL I
+1D5C2 ; [.2167.0020.0005] # MATHEMATICAL SANS-SERIF SMALL I
+1D5F6 ; [.2167.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL I
+1D62A ; [.2167.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL I
+1D65E ; [.2167.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
+1D692 ; [.2167.0020.0005] # MATHEMATICAL MONOSPACE SMALL I
+24D8 ; [.2167.0020.0006] # CIRCLED LATIN SMALL LETTER I
+0049 ; [.2167.0020.0008] # LATIN CAPITAL LETTER I
+FF29 ; [.2167.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER I
+2160 ; [.2167.0020.000A] # ROMAN NUMERAL ONE
+1F118 ; [*0334.0020.0004][.2167.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER I
+2110 ; [.2167.0020.000B] # SCRIPT CAPITAL I
+2111 ; [.2167.0020.000B] # BLACK-LETTER CAPITAL I
+1D408 ; [.2167.0020.000B] # MATHEMATICAL BOLD CAPITAL I
+1D43C ; [.2167.0020.000B] # MATHEMATICAL ITALIC CAPITAL I
+1D470 ; [.2167.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL I
+1D4D8 ; [.2167.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL I
+1D540 ; [.2167.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+1D574 ; [.2167.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL I
+1D5A8 ; [.2167.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL I
+1D5DC ; [.2167.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+1D610 ; [.2167.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+1D644 ; [.2167.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+1D678 ; [.2167.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL I
+24BE ; [.2167.0020.000C] # CIRCLED LATIN CAPITAL LETTER I
+1F158 ; [.2167.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER I
+2071 ; [.2167.0020.0014] # SUPERSCRIPT LATIN SMALL LETTER I
+1D62 ; [.2167.0020.0015] # LATIN SUBSCRIPT SMALL LETTER I
+1D35 ; [.2167.0020.001D] # MODIFIER LETTER CAPITAL I
+1F138 ; [.2167.0020.001D] # SQUARED LATIN CAPITAL LETTER I
+1F178 ; [.2167.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER I
+00ED ; [.2167.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.2167.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER I WITH ACUTE
+00EC ; [.2167.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER I WITH GRAVE
+00CC ; [.2167.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER I WITH GRAVE
+012D ; [.2167.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER I WITH BREVE
+012C ; [.2167.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER I WITH BREVE
+00EE ; [.2167.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER I WITH CIRCUMFLEX
+00CE ; [.2167.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+01D0 ; [.2167.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER I WITH CARON
+01CF ; [.2167.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER I WITH CARON
+00EF ; [.2167.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER I WITH DIAERESIS
+00CF ; [.2167.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER I WITH DIAERESIS
+1E2F ; [.2167.0020.0002][.0000.002B.0002][.0000.0024.0002] # LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+1E2E ; [.2167.0020.0008][.0000.002B.0002][.0000.0024.0002] # LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+0129 ; [.2167.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER I WITH TILDE
+0128 ; [.2167.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER I WITH TILDE
+0130 ; [.2167.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER I WITH DOT ABOVE
+012F ; [.2167.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER I WITH OGONEK
+012E ; [.2167.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER I WITH OGONEK
+012B ; [.2167.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.2167.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER I WITH MACRON
+1EC9 ; [.2167.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER I WITH HOOK ABOVE
+1EC8 ; [.2167.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+0209 ; [.2167.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER I WITH DOUBLE GRAVE
+0208 ; [.2167.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+020B ; [.2167.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER I WITH INVERTED BREVE
+020A ; [.2167.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER I WITH INVERTED BREVE
+1ECB ; [.2167.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER I WITH DOT BELOW
+1ECA ; [.2167.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER I WITH DOT BELOW
+1E2D ; [.2167.0020.0002][.0000.0048.0002] # LATIN SMALL LETTER I WITH TILDE BELOW
+1E2C ; [.2167.0020.0008][.0000.0048.0002] # LATIN CAPITAL LETTER I WITH TILDE BELOW
+1F18B ; [.2167.0020.001D][.20A9.0020.001D] # NEGATIVE SQUARED IC
+1F194 ; [.2167.0020.001D][.20BF.0020.001D] # SQUARED ID
+2171 ; [.2167.0020.0004][.2167.0020.0004] # SMALL ROMAN NUMERAL TWO
+2161 ; [.2167.0020.000A][.2167.0020.000A] # ROMAN NUMERAL TWO
+2172 ; [.2167.0020.0004][.2167.0020.0004][.2167.0020.0004] # SMALL ROMAN NUMERAL THREE
+2162 ; [.2167.0020.000A][.2167.0020.000A][.2167.0020.000A] # ROMAN NUMERAL THREE
+0133 ; [.2167.0020.0004][.2183.0020.0004] # LATIN SMALL LIGATURE IJ
+0132 ; [.2167.0020.000A][.2183.0020.000A] # LATIN CAPITAL LIGATURE IJ
+33CC ; [.2167.0020.001C][.21F7.0020.001C] # SQUARE IN
+337A ; [.2167.0020.001D][.2301.0020.001D] # SQUARE IU
+2173 ; [.2167.0020.0004][.2331.0020.0004] # SMALL ROMAN NUMERAL FOUR
+2163 ; [.2167.0020.000A][.2331.0020.000A] # ROMAN NUMERAL FOUR
+2178 ; [.2167.0020.0004][.234D.0020.0004] # SMALL ROMAN NUMERAL NINE
+2168 ; [.2167.0020.000A][.234D.0020.000A] # ROMAN NUMERAL NINE
+0131 ; [.216B.0020.0002] # LATIN SMALL LETTER DOTLESS I
+1D6A4 ; [.216B.0020.0005] # MATHEMATICAL ITALIC SMALL DOTLESS I
+026A ; [.216F.0020.0002] # LATIN LETTER SMALL CAPITAL I
+A7AE ; [.216F.0020.0008] # LATIN CAPITAL LETTER SMALL CAPITAL I
+1DA6 ; [.216F.0020.0014] # MODIFIER LETTER SMALL CAPITAL I
+A7FE ; [.2173.0020.0002] # LATIN EPIGRAPHIC LETTER I LONGA
+A7F7 ; [.2174.0020.0002] # LATIN EPIGRAPHIC LETTER SIDEWAYS I
+1D09 ; [.2175.0020.0002] # LATIN SMALL LETTER TURNED I
+1D4E ; [.2175.0020.0014] # MODIFIER LETTER SMALL TURNED I
+0268 ; [.2176.0020.0002] # LATIN SMALL LETTER I WITH STROKE
+0197 ; [.2176.0020.0008] # LATIN CAPITAL LETTER I WITH STROKE
+1DA4 ; [.2176.0020.0014] # MODIFIER LETTER SMALL I WITH STROKE
+1D7B ; [.217A.0020.0002] # LATIN SMALL CAPITAL LETTER I WITH STROKE
+1DA7 ; [.217A.0020.0014] # MODIFIER LETTER SMALL CAPITAL I WITH STROKE
+1DF1A ; [.217B.0020.0002] # LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK
+1D96 ; [.217C.0020.0002] # LATIN SMALL LETTER I WITH RETROFLEX HOOK
+A7BD ; [.217D.0020.0002] # LATIN SMALL LETTER GLOTTAL I
+A7BC ; [.217D.0020.0008] # LATIN CAPITAL LETTER GLOTTAL I
+0269 ; [.217E.0020.0002] # LATIN SMALL LETTER IOTA
+0196 ; [.217E.0020.0008] # LATIN CAPITAL LETTER IOTA
+1DA5 ; [.217E.0020.0014] # MODIFIER LETTER SMALL IOTA
+1D7C ; [.2182.0020.0002] # LATIN SMALL LETTER IOTA WITH STROKE
+006A ; [.2183.0020.0002] # LATIN SMALL LETTER J
+FF4A ; [.2183.0020.0003] # FULLWIDTH LATIN SMALL LETTER J
+24A5 ; [*0334.0020.0004][.2183.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER J
+2149 ; [.2183.0020.0005] # DOUBLE-STRUCK ITALIC SMALL J
+1D423 ; [.2183.0020.0005] # MATHEMATICAL BOLD SMALL J
+1D457 ; [.2183.0020.0005] # MATHEMATICAL ITALIC SMALL J
+1D48B ; [.2183.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL J
+1D4BF ; [.2183.0020.0005] # MATHEMATICAL SCRIPT SMALL J
+1D4F3 ; [.2183.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL J
+1D527 ; [.2183.0020.0005] # MATHEMATICAL FRAKTUR SMALL J
+1D55B ; [.2183.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL J
+1D58F ; [.2183.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL J
+1D5C3 ; [.2183.0020.0005] # MATHEMATICAL SANS-SERIF SMALL J
+1D5F7 ; [.2183.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL J
+1D62B ; [.2183.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL J
+1D65F ; [.2183.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
+1D693 ; [.2183.0020.0005] # MATHEMATICAL MONOSPACE SMALL J
+24D9 ; [.2183.0020.0006] # CIRCLED LATIN SMALL LETTER J
+004A ; [.2183.0020.0008] # LATIN CAPITAL LETTER J
+FF2A ; [.2183.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER J
+1F119 ; [*0334.0020.0004][.2183.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER J
+1D409 ; [.2183.0020.000B] # MATHEMATICAL BOLD CAPITAL J
+1D43D ; [.2183.0020.000B] # MATHEMATICAL ITALIC CAPITAL J
+1D471 ; [.2183.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL J
+1D4A5 ; [.2183.0020.000B] # MATHEMATICAL SCRIPT CAPITAL J
+1D4D9 ; [.2183.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL J
+1D50D ; [.2183.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL J
+1D541 ; [.2183.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+1D575 ; [.2183.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL J
+1D5A9 ; [.2183.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL J
+1D5DD ; [.2183.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+1D611 ; [.2183.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+1D645 ; [.2183.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+1D679 ; [.2183.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL J
+24BF ; [.2183.0020.000C] # CIRCLED LATIN CAPITAL LETTER J
+1F159 ; [.2183.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER J
+02B2 ; [.2183.0020.0014] # MODIFIER LETTER SMALL J
+2C7C ; [.2183.0020.0015] # LATIN SUBSCRIPT SMALL LETTER J
+1D36 ; [.2183.0020.001D] # MODIFIER LETTER CAPITAL J
+1F139 ; [.2183.0020.001D] # SQUARED LATIN CAPITAL LETTER J
+1F179 ; [.2183.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER J
+0135 ; [.2183.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER J WITH CIRCUMFLEX
+0134 ; [.2183.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+01F0 ; [.2183.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER J WITH CARON
+0237 ; [.2187.0020.0002] # LATIN SMALL LETTER DOTLESS J
+1D6A5 ; [.2187.0020.0005] # MATHEMATICAL ITALIC SMALL DOTLESS J
+1D0A ; [.218B.0020.0002] # LATIN LETTER SMALL CAPITAL J
+0249 ; [.218C.0020.0002] # LATIN SMALL LETTER J WITH STROKE
+0248 ; [.218C.0020.0008] # LATIN CAPITAL LETTER J WITH STROKE
+029D ; [.2190.0020.0002] # LATIN SMALL LETTER J WITH CROSSED-TAIL
+A7B2 ; [.2190.0020.0008] # LATIN CAPITAL LETTER J WITH CROSSED-TAIL
+1DA8 ; [.2190.0020.0014] # MODIFIER LETTER SMALL J WITH CROSSED-TAIL
+025F ; [.2194.0020.0002] # LATIN SMALL LETTER DOTLESS J WITH STROKE
+1DA1 ; [.2194.0020.0014] # MODIFIER LETTER SMALL DOTLESS J WITH STROKE
+0284 ; [.2198.0020.0002] # LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
+10798 ; [.2198.0020.0014] # MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK
+006B ; [.219C.0020.0002] # LATIN SMALL LETTER K
+FF4B ; [.219C.0020.0003] # FULLWIDTH LATIN SMALL LETTER K
+1DDC ; [.219C.0020.0004] # COMBINING LATIN SMALL LETTER K
+24A6 ; [*0334.0020.0004][.219C.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER K
+1D424 ; [.219C.0020.0005] # MATHEMATICAL BOLD SMALL K
+1D458 ; [.219C.0020.0005] # MATHEMATICAL ITALIC SMALL K
+1D48C ; [.219C.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL K
+1D4C0 ; [.219C.0020.0005] # MATHEMATICAL SCRIPT SMALL K
+1D4F4 ; [.219C.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL K
+1D528 ; [.219C.0020.0005] # MATHEMATICAL FRAKTUR SMALL K
+1D55C ; [.219C.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL K
+1D590 ; [.219C.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL K
+1D5C4 ; [.219C.0020.0005] # MATHEMATICAL SANS-SERIF SMALL K
+1D5F8 ; [.219C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL K
+1D62C ; [.219C.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL K
+1D660 ; [.219C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
+1D694 ; [.219C.0020.0005] # MATHEMATICAL MONOSPACE SMALL K
+24DA ; [.219C.0020.0006] # CIRCLED LATIN SMALL LETTER K
+004B ; [.219C.0020.0008] # LATIN CAPITAL LETTER K
+212A ; [.219C.0020.0008] # KELVIN SIGN
+FF2B ; [.219C.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER K
+1F11A ; [*0334.0020.0004][.219C.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER K
+1D40A ; [.219C.0020.000B] # MATHEMATICAL BOLD CAPITAL K
+1D43E ; [.219C.0020.000B] # MATHEMATICAL ITALIC CAPITAL K
+1D472 ; [.219C.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL K
+1D4A6 ; [.219C.0020.000B] # MATHEMATICAL SCRIPT CAPITAL K
+1D4DA ; [.219C.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL K
+1D50E ; [.219C.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL K
+1D542 ; [.219C.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+1D576 ; [.219C.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL K
+1D5AA ; [.219C.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL K
+1D5DE ; [.219C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+1D612 ; [.219C.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+1D646 ; [.219C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+1D67A ; [.219C.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL K
+24C0 ; [.219C.0020.000C] # CIRCLED LATIN CAPITAL LETTER K
+1F15A ; [.219C.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER K
+1D4F ; [.219C.0020.0014] # MODIFIER LETTER SMALL K
+2096 ; [.219C.0020.0015] # LATIN SUBSCRIPT SMALL LETTER K
+1D37 ; [.219C.0020.001D] # MODIFIER LETTER CAPITAL K
+1F13A ; [.219C.0020.001D] # SQUARED LATIN CAPITAL LETTER K
+1F17A ; [.219C.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER K
+1E31 ; [.219C.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER K WITH ACUTE
+1E30 ; [.219C.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER K WITH ACUTE
+01E9 ; [.219C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER K WITH CARON
+01E8 ; [.219C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER K WITH CARON
+0137 ; [.219C.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER K WITH CEDILLA
+0136 ; [.219C.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER K WITH CEDILLA
+A7A3 ; [.219C.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER K WITH OBLIQUE STROKE
+A7A2 ; [.219C.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
+1E33 ; [.219C.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER K WITH DOT BELOW
+1E32 ; [.219C.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER K WITH DOT BELOW
+1E35 ; [.219C.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER K WITH LINE BELOW
+1E34 ; [.219C.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER K WITH LINE BELOW
+3384 ; [.219C.0020.001C][.2075.0020.001D] # SQUARE KA
+3385 ; [.219C.0020.001D][.208F.0020.001D] # SQUARE KB
+3389 ; [.219C.0020.001C][.20A9.0020.001C][.2075.0020.001C][.21B0.0020.001C] # SQUARE KCAL
+338F ; [.219C.0020.001C][.2125.0020.001C] # SQUARE KG
+3391 ; [.219C.0020.001C][.214C.0020.001D][.236F.0020.001C] # SQUARE KHZ
+33CD ; [.219C.0020.001D][.219C.0020.001D] # SQUARE KK
+3398 ; [.219C.0020.001C][.21B0.0020.001C] # SQUARE KL
+339E ; [.219C.0020.001C][.21E8.0020.001C] # SQUARE KM
+33CE ; [.219C.0020.001D][.21E8.0020.001D] # SQUARE KM CAPITAL
+33A2 ; [.219C.0020.001C][.21E8.0020.001C][.206D.0020.001C] # SQUARE KM SQUARED
+33A6 ; [.219C.0020.001C][.21E8.0020.001C][.206E.0020.001C] # SQUARE KM CUBED
+33AA ; [.219C.0020.001C][.224D.0020.001D][.2075.0020.001C] # SQUARE KPA
+33CF ; [.219C.0020.001C][.22DF.0020.001C] # SQUARE KT
+33B8 ; [.219C.0020.001C][.2331.0020.001D] # SQUARE KV
+33BE ; [.219C.0020.001C][.2343.0020.001D] # SQUARE KW
+33C0 ; [.219C.0020.001C][.2435.0020.001D] # SQUARE K OHM
+1D0B ; [.21A0.0020.0002] # LATIN LETTER SMALL CAPITAL K
+1D84 ; [.21A1.0020.0002] # LATIN SMALL LETTER K WITH PALATAL HOOK
+0199 ; [.21A2.0020.0002] # LATIN SMALL LETTER K WITH HOOK
+0198 ; [.21A2.0020.0008] # LATIN CAPITAL LETTER K WITH HOOK
+2C6A ; [.21A6.0020.0002] # LATIN SMALL LETTER K WITH DESCENDER
+2C69 ; [.21A6.0020.0008] # LATIN CAPITAL LETTER K WITH DESCENDER
+A741 ; [.21A7.0020.0002] # LATIN SMALL LETTER K WITH STROKE
+A740 ; [.21A7.0020.0008] # LATIN CAPITAL LETTER K WITH STROKE
+A743 ; [.21A8.0020.0002] # LATIN SMALL LETTER K WITH DIAGONAL STROKE
+A742 ; [.21A8.0020.0008] # LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+A745 ; [.21A9.0020.0002] # LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
+A744 ; [.21A9.0020.0008] # LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+1DF03 ; [.21AA.0020.0002] # LATIN SMALL LETTER REVERSED K
+029E ; [.21AB.0020.0002] # LATIN SMALL LETTER TURNED K
+A7B0 ; [.21AB.0020.0008] # LATIN CAPITAL LETTER TURNED K
+1DF10 ; [.21AF.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED K
+006C ; [.21B0.0020.0002] # LATIN SMALL LETTER L
+FF4C ; [.21B0.0020.0003] # FULLWIDTH LATIN SMALL LETTER L
+1DDD ; [.21B0.0020.0004] # COMBINING LATIN SMALL LETTER L
+217C ; [.21B0.0020.0004] # SMALL ROMAN NUMERAL FIFTY
+24A7 ; [*0334.0020.0004][.21B0.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER L
+2113 ; [.21B0.0020.0005] # SCRIPT SMALL L
+1D425 ; [.21B0.0020.0005] # MATHEMATICAL BOLD SMALL L
+1D459 ; [.21B0.0020.0005] # MATHEMATICAL ITALIC SMALL L
+1D48D ; [.21B0.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL L
+1D4C1 ; [.21B0.0020.0005] # MATHEMATICAL SCRIPT SMALL L
+1D4F5 ; [.21B0.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL L
+1D529 ; [.21B0.0020.0005] # MATHEMATICAL FRAKTUR SMALL L
+1D55D ; [.21B0.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL L
+1D591 ; [.21B0.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL L
+1D5C5 ; [.21B0.0020.0005] # MATHEMATICAL SANS-SERIF SMALL L
+1D5F9 ; [.21B0.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL L
+1D62D ; [.21B0.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL L
+1D661 ; [.21B0.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
+1D695 ; [.21B0.0020.0005] # MATHEMATICAL MONOSPACE SMALL L
+24DB ; [.21B0.0020.0006] # CIRCLED LATIN SMALL LETTER L
+004C ; [.21B0.0020.0008] # LATIN CAPITAL LETTER L
+FF2C ; [.21B0.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER L
+216C ; [.21B0.0020.000A] # ROMAN NUMERAL FIFTY
+1F11B ; [*0334.0020.0004][.21B0.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER L
+2112 ; [.21B0.0020.000B] # SCRIPT CAPITAL L
+1D40B ; [.21B0.0020.000B] # MATHEMATICAL BOLD CAPITAL L
+1D43F ; [.21B0.0020.000B] # MATHEMATICAL ITALIC CAPITAL L
+1D473 ; [.21B0.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL L
+1D4DB ; [.21B0.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL L
+1D50F ; [.21B0.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL L
+1D543 ; [.21B0.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+1D577 ; [.21B0.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL L
+1D5AB ; [.21B0.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL L
+1D5DF ; [.21B0.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+1D613 ; [.21B0.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+1D647 ; [.21B0.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+1D67B ; [.21B0.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL L
+24C1 ; [.21B0.0020.000C] # CIRCLED LATIN CAPITAL LETTER L
+1F15B ; [.21B0.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER L
+02E1 ; [.21B0.0020.0014] # MODIFIER LETTER SMALL L
+2097 ; [.21B0.0020.0015] # LATIN SUBSCRIPT SMALL LETTER L
+1D38 ; [.21B0.0020.001D] # MODIFIER LETTER CAPITAL L
+1F13B ; [.21B0.0020.001D] # SQUARED LATIN CAPITAL LETTER L
+1F17B ; [.21B0.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER L
+013A ; [.21B0.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER L WITH ACUTE
+0139 ; [.21B0.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER L WITH ACUTE
+013E ; [.21B0.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER L WITH CARON
+013D ; [.21B0.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER L WITH CARON
+013C ; [.21B0.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER L WITH CEDILLA
+013B ; [.21B0.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER L WITH CEDILLA
+0142 ; [.21B0.0020.0002][.0000.0039.0002] # LATIN SMALL LETTER L WITH STROKE
+0141 ; [.21B0.0020.0008][.0000.0039.0002] # LATIN CAPITAL LETTER L WITH STROKE
+1E37 ; [.21B0.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER L WITH DOT BELOW
+1E36 ; [.21B0.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER L WITH DOT BELOW
+1E39 ; [.21B0.0020.0002][.0000.0042.0002][.0000.0032.0002] # LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+1E38 ; [.21B0.0020.0008][.0000.0042.0002][.0000.0032.0002] # LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+1E3D ; [.21B0.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+1E3C ; [.21B0.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+1E3B ; [.21B0.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER L WITH LINE BELOW
+1E3A ; [.21B0.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER L WITH LINE BELOW
+0140 ; [.21B0.0020.0002][.0000.0118.0002] # LATIN SMALL LETTER L WITH MIDDLE DOT
+006C 00B7 ; [.21B0.0020.0002][.0000.0118.0002] # LATIN SMALL LETTER L WITH MIDDLE DOT
+006C 0387 ; [.21B0.0020.0002][.0000.0118.0002] # LATIN SMALL LETTER L WITH MIDDLE DOT
+013F ; [.21B0.0020.0008][.0000.0118.0002] # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+004C 00B7 ; [.21B0.0020.0008][.0000.0118.0002] # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+004C 0387 ; [.21B0.0020.0008][.0000.0118.0002] # LATIN CAPITAL LETTER L WITH MIDDLE DOT
+01C9 ; [.21B0.0020.0004][.2183.0020.0004] # LATIN SMALL LETTER LJ
+01C8 ; [.21B0.0020.000A][.2183.0020.0004] # LATIN CAPITAL LETTER L WITH SMALL LETTER J
+01C7 ; [.21B0.0020.000A][.2183.0020.000A] # LATIN CAPITAL LETTER LJ
+1EFB ; [.21B0.0020.0004][.21B0.0020.0004] # LATIN SMALL LETTER MIDDLE-WELSH LL
+1EFA ; [.21B0.0020.000A][.21B0.0020.000A] # LATIN CAPITAL LETTER MIDDLE-WELSH LL
+33D0 ; [.21B0.0020.001C][.21E8.0020.001C] # SQUARE LM
+33D1 ; [.21B0.0020.001C][.21F7.0020.001C] # SQUARE LN
+33D2 ; [.21B0.0020.001C][.221D.0020.001C][.2125.0020.001C] # SQUARE LOG
+1F1A9 ; [.21B0.0020.001D][.221D.0020.001C][.22B6.0020.001C][.22B6.0020.001C][.21B0.0020.001C][.20DB.0020.001C][.22B6.0020.001C][.22B6.0020.001C] # SQUARED LOSSLESS
+02AA ; [.21B0.0020.0004][.22B6.0020.0004] # LATIN SMALL LETTER LS DIGRAPH
+10799 ; [.21B0.0020.0014][.22B6.0020.0014] # MODIFIER LETTER SMALL LS DIGRAPH
+32CF ; [.21B0.0020.001D][.22DF.0020.001D][.20BF.0020.001D] # LIMITED LIABILITY SIGN
+33D3 ; [.21B0.0020.001C][.234D.0020.001C] # SQUARE LX
+02AB ; [.21B0.0020.0004][.236F.0020.0004] # LATIN SMALL LETTER LZ DIGRAPH
+1079A ; [.21B0.0020.0014][.236F.0020.0014] # MODIFIER LETTER SMALL LZ DIGRAPH
+029F ; [.21B4.0020.0002] # LATIN LETTER SMALL CAPITAL L
+1DDE ; [.21B4.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL L
+1DAB ; [.21B4.0020.0014] # MODIFIER LETTER SMALL CAPITAL L
+A747 ; [.21B8.0020.0002] # LATIN SMALL LETTER BROKEN L
+A746 ; [.21B8.0020.0008] # LATIN CAPITAL LETTER BROKEN L
+1D0C ; [.21B9.0020.0002] # LATIN LETTER SMALL CAPITAL L WITH STROKE
+A749 ; [.21BA.0020.0002] # LATIN SMALL LETTER L WITH HIGH STROKE
+A748 ; [.21BA.0020.0008] # LATIN CAPITAL LETTER L WITH HIGH STROKE
+019A ; [.21BB.0020.0002] # LATIN SMALL LETTER L WITH BAR
+023D ; [.21BB.0020.0008] # LATIN CAPITAL LETTER L WITH BAR
+2C61 ; [.21BF.0020.0002] # LATIN SMALL LETTER L WITH DOUBLE BAR
+2C60 ; [.21BF.0020.0008] # LATIN CAPITAL LETTER L WITH DOUBLE BAR
+026B ; [.21C0.0020.0002] # LATIN SMALL LETTER L WITH MIDDLE TILDE
+2C62 ; [.21C0.0020.0008] # LATIN CAPITAL LETTER L WITH MIDDLE TILDE
+AB5E ; [.21C0.0020.0014] # MODIFIER LETTER SMALL L WITH MIDDLE TILDE
+AB38 ; [.21C4.0020.0002] # LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE
+1DEC ; [.21C4.0020.0004] # COMBINING LATIN SMALL LETTER L WITH DOUBLE MIDDLE TILDE
+AB39 ; [.21C5.0020.0002] # LATIN SMALL LETTER L WITH MIDDLE RING
+026C ; [.21C6.0020.0002] # LATIN SMALL LETTER L WITH BELT
+A7AD ; [.21C6.0020.0008] # LATIN CAPITAL LETTER L WITH BELT
+1079B ; [.21C6.0020.0014] # MODIFIER LETTER SMALL L WITH BELT
+1DF04 ; [.21CA.0020.0002] # LATIN LETTER SMALL CAPITAL L WITH BELT
+1079C ; [.21CA.0020.0014] # MODIFIER LETTER SMALL CAPITAL L WITH BELT
+1DF13 ; [.21CB.0020.0002] # LATIN SMALL LETTER L WITH BELT AND PALATAL HOOK
+AB37 ; [.21CC.0020.0002] # LATIN SMALL LETTER L WITH INVERTED LAZY S
+AB5D ; [.21CC.0020.0014] # MODIFIER LETTER SMALL L WITH INVERTED LAZY S
+1D85 ; [.21CD.0020.0002] # LATIN SMALL LETTER L WITH PALATAL HOOK
+1DAA ; [.21CD.0020.0014] # MODIFIER LETTER SMALL L WITH PALATAL HOOK
+026D ; [.21CE.0020.0002] # LATIN SMALL LETTER L WITH RETROFLEX HOOK
+1DA9 ; [.21CE.0020.0014] # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
+A78E ; [.21D2.0020.0002] # LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+1079D ; [.21D2.0020.0014] # MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT
+1DF11 ; [.21D3.0020.0002] # LATIN SMALL LETTER L WITH FISHHOOK
+0234 ; [.21D4.0020.0002] # LATIN SMALL LETTER L WITH CURL
+A772 ; [.21D8.0020.0002] # LATIN SMALL LETTER LUM
+026E ; [.21D9.0020.0002] # LATIN SMALL LETTER LEZH
+1079E ; [.21D9.0020.0014] # MODIFIER LETTER SMALL LEZH
+1DF05 ; [.21DD.0020.0002] # LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK
+1079F ; [.21DD.0020.0014] # MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK
+A781 ; [.21DE.0020.0002] # LATIN SMALL LETTER TURNED L
+A780 ; [.21DE.0020.0008] # LATIN CAPITAL LETTER TURNED L
+019B ; [.21DF.0020.0002] # LATIN SMALL LETTER LAMBDA WITH STROKE
+028E ; [.21E3.0020.0002] # LATIN SMALL LETTER TURNED Y
+107A0 ; [.21E3.0020.0014] # MODIFIER LETTER SMALL TURNED Y
+1DF06 ; [.21E7.0020.0002] # LATIN SMALL LETTER TURNED Y WITH BELT
+107A1 ; [.21E7.0020.0014] # MODIFIER LETTER SMALL TURNED Y WITH BELT
+006D ; [.21E8.0020.0002] # LATIN SMALL LETTER M
+FF4D ; [.21E8.0020.0003] # FULLWIDTH LATIN SMALL LETTER M
+036B ; [.21E8.0020.0004] # COMBINING LATIN SMALL LETTER M
+217F ; [.21E8.0020.0004] # SMALL ROMAN NUMERAL ONE THOUSAND
+24A8 ; [*0334.0020.0004][.21E8.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER M
+1D426 ; [.21E8.0020.0005] # MATHEMATICAL BOLD SMALL M
+1D45A ; [.21E8.0020.0005] # MATHEMATICAL ITALIC SMALL M
+1D48E ; [.21E8.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL M
+1D4C2 ; [.21E8.0020.0005] # MATHEMATICAL SCRIPT SMALL M
+1D4F6 ; [.21E8.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL M
+1D52A ; [.21E8.0020.0005] # MATHEMATICAL FRAKTUR SMALL M
+1D55E ; [.21E8.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL M
+1D592 ; [.21E8.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL M
+1D5C6 ; [.21E8.0020.0005] # MATHEMATICAL SANS-SERIF SMALL M
+1D5FA ; [.21E8.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL M
+1D62E ; [.21E8.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL M
+1D662 ; [.21E8.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
+1D696 ; [.21E8.0020.0005] # MATHEMATICAL MONOSPACE SMALL M
+24DC ; [.21E8.0020.0006] # CIRCLED LATIN SMALL LETTER M
+004D ; [.21E8.0020.0008] # LATIN CAPITAL LETTER M
+FF2D ; [.21E8.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER M
+216F ; [.21E8.0020.000A] # ROMAN NUMERAL ONE THOUSAND
+1F11C ; [*0334.0020.0004][.21E8.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER M
+2133 ; [.21E8.0020.000B] # SCRIPT CAPITAL M
+1D40C ; [.21E8.0020.000B] # MATHEMATICAL BOLD CAPITAL M
+1D440 ; [.21E8.0020.000B] # MATHEMATICAL ITALIC CAPITAL M
+1D474 ; [.21E8.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL M
+1D4DC ; [.21E8.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL M
+1D510 ; [.21E8.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL M
+1D544 ; [.21E8.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D578 ; [.21E8.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL M
+1D5AC ; [.21E8.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL M
+1D5E0 ; [.21E8.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+1D614 ; [.21E8.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+1D648 ; [.21E8.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+1D67C ; [.21E8.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL M
+24C2 ; [.21E8.0020.000C] # CIRCLED LATIN CAPITAL LETTER M
+1F15C ; [.21E8.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER M
+1D50 ; [.21E8.0020.0014] # MODIFIER LETTER SMALL M
+2098 ; [.21E8.0020.0015] # LATIN SUBSCRIPT SMALL LETTER M
+1D39 ; [.21E8.0020.001D] # MODIFIER LETTER CAPITAL M
+1F13C ; [.21E8.0020.001D] # SQUARED LATIN CAPITAL LETTER M
+1F17C ; [.21E8.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER M
+1E3F ; [.21E8.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER M WITH ACUTE
+1E3E ; [.21E8.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER M WITH ACUTE
+1E41 ; [.21E8.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER M WITH DOT ABOVE
+1E40 ; [.21E8.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER M WITH DOT ABOVE
+1E43 ; [.21E8.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER M WITH DOT BELOW
+1E42 ; [.21E8.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER M WITH DOT BELOW
+33A1 ; [.21E8.0020.001C][.206D.0020.001C] # SQUARE M SQUARED
+33A5 ; [.21E8.0020.001C][.206E.0020.001C] # SQUARE M CUBED
+3383 ; [.21E8.0020.001C][.2075.0020.001D] # SQUARE MA
+33D4 ; [.21E8.0020.001C][.208F.0020.001C] # SQUARE MB SMALL
+3386 ; [.21E8.0020.001D][.208F.0020.001D] # SQUARE MB
+1F16A ; [.21E8.0020.0014][.20A9.0020.0014] # RAISED MC SIGN
+1F16B ; [.21E8.0020.0014][.20BF.0020.0014] # RAISED MD SIGN
+338E ; [.21E8.0020.001C][.2125.0020.001C] # SQUARE MG
+3392 ; [.21E8.0020.001D][.214C.0020.001D][.236F.0020.001C] # SQUARE MHZ
+33D5 ; [.21E8.0020.001C][.2167.0020.001C][.21B0.0020.001C] # SQUARE MIL
+3396 ; [.21E8.0020.001C][.21B0.0020.001C] # SQUARE ML
+339C ; [.21E8.0020.001C][.21E8.0020.001C] # SQUARE MM
+339F ; [.21E8.0020.001C][.21E8.0020.001C][.206D.0020.001C] # SQUARE MM SQUARED
+33A3 ; [.21E8.0020.001C][.21E8.0020.001C][.206E.0020.001C] # SQUARE MM CUBED
+33D6 ; [.21E8.0020.001C][.221D.0020.001C][.21B0.0020.001C] # SQUARE MOL
+33AB ; [.21E8.0020.001D][.224D.0020.001D][.2075.0020.001C] # SQUARE MPA
+1F16C ; [.21E8.0020.0014][.2275.0020.0014] # RAISED MR SIGN
+33A7 ; [.21E8.0020.001C][*06AC.0020.001C][.22B6.0020.001C] # SQUARE M OVER S
+33B3 ; [.21E8.0020.001C][.22B6.0020.001C] # SQUARE MS
+33A8 ; [.21E8.0020.001C][*06AC.0020.001C][.22B6.0020.001C][.206D.0020.001C] # SQUARE M OVER S SQUARED
+33B7 ; [.21E8.0020.001C][.2331.0020.001D] # SQUARE MV
+33B9 ; [.21E8.0020.001D][.2331.0020.001D] # SQUARE MV MEGA
+1F14B ; [.21E8.0020.001D][.2331.0020.001D] # SQUARED MV
+33BD ; [.21E8.0020.001C][.2343.0020.001D] # SQUARE MW
+33BF ; [.21E8.0020.001D][.2343.0020.001D] # SQUARE MW MEGA
+33C1 ; [.21E8.0020.001D][.2435.0020.001D] # SQUARE M OHM
+1D0D ; [.21EC.0020.0002] # LATIN LETTER SMALL CAPITAL M
+1DDF ; [.21EC.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL M
+1D6F ; [.21ED.0020.0002] # LATIN SMALL LETTER M WITH MIDDLE TILDE
+1D86 ; [.21EE.0020.0002] # LATIN SMALL LETTER M WITH PALATAL HOOK
+0271 ; [.21EF.0020.0002] # LATIN SMALL LETTER M WITH HOOK
+2C6E ; [.21EF.0020.0008] # LATIN CAPITAL LETTER M WITH HOOK
+1DAC ; [.21EF.0020.0014] # MODIFIER LETTER SMALL M WITH HOOK
+AB3A ; [.21F3.0020.0002] # LATIN SMALL LETTER M WITH CROSSED-TAIL
+A7FD ; [.21F4.0020.0002] # LATIN EPIGRAPHIC LETTER INVERTED M
+A7FF ; [.21F5.0020.0002] # LATIN EPIGRAPHIC LETTER ARCHAIC M
+A773 ; [.21F6.0020.0002] # LATIN SMALL LETTER MUM
+006E ; [.21F7.0020.0002] # LATIN SMALL LETTER N
+FF4E ; [.21F7.0020.0003] # FULLWIDTH LATIN SMALL LETTER N
+1DE0 ; [.21F7.0020.0004] # COMBINING LATIN SMALL LETTER N
+24A9 ; [*0334.0020.0004][.21F7.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER N
+1D427 ; [.21F7.0020.0005] # MATHEMATICAL BOLD SMALL N
+1D45B ; [.21F7.0020.0005] # MATHEMATICAL ITALIC SMALL N
+1D48F ; [.21F7.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL N
+1D4C3 ; [.21F7.0020.0005] # MATHEMATICAL SCRIPT SMALL N
+1D4F7 ; [.21F7.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL N
+1D52B ; [.21F7.0020.0005] # MATHEMATICAL FRAKTUR SMALL N
+1D55F ; [.21F7.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL N
+1D593 ; [.21F7.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL N
+1D5C7 ; [.21F7.0020.0005] # MATHEMATICAL SANS-SERIF SMALL N
+1D5FB ; [.21F7.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL N
+1D62F ; [.21F7.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL N
+1D663 ; [.21F7.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
+1D697 ; [.21F7.0020.0005] # MATHEMATICAL MONOSPACE SMALL N
+24DD ; [.21F7.0020.0006] # CIRCLED LATIN SMALL LETTER N
+004E ; [.21F7.0020.0008] # LATIN CAPITAL LETTER N
+FF2E ; [.21F7.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER N
+1F11D ; [*0334.0020.0004][.21F7.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER N
+2115 ; [.21F7.0020.000B] # DOUBLE-STRUCK CAPITAL N
+1D40D ; [.21F7.0020.000B] # MATHEMATICAL BOLD CAPITAL N
+1D441 ; [.21F7.0020.000B] # MATHEMATICAL ITALIC CAPITAL N
+1D475 ; [.21F7.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL N
+1D4A9 ; [.21F7.0020.000B] # MATHEMATICAL SCRIPT CAPITAL N
+1D4DD ; [.21F7.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL N
+1D511 ; [.21F7.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL N
+1D579 ; [.21F7.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL N
+1D5AD ; [.21F7.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL N
+1D5E1 ; [.21F7.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+1D615 ; [.21F7.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+1D649 ; [.21F7.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+1D67D ; [.21F7.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL N
+24C3 ; [.21F7.0020.000C] # CIRCLED LATIN CAPITAL LETTER N
+1F15D ; [.21F7.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER N
+207F ; [.21F7.0020.0014] # SUPERSCRIPT LATIN SMALL LETTER N
+2099 ; [.21F7.0020.0015] # LATIN SUBSCRIPT SMALL LETTER N
+1D3A ; [.21F7.0020.001D] # MODIFIER LETTER CAPITAL N
+1F13D ; [.21F7.0020.001D] # SQUARED LATIN CAPITAL LETTER N
+1F17D ; [.21F7.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER N
+0144 ; [.21F7.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER N WITH ACUTE
+0143 ; [.21F7.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER N WITH ACUTE
+01F9 ; [.21F7.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER N WITH GRAVE
+01F8 ; [.21F7.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER N WITH GRAVE
+0148 ; [.21F7.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER N WITH CARON
+0147 ; [.21F7.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER N WITH CARON
+00F1 ; [.21F7.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER N WITH TILDE
+00D1 ; [.21F7.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER N WITH TILDE
+1E45 ; [.21F7.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER N WITH DOT ABOVE
+1E44 ; [.21F7.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER N WITH DOT ABOVE
+0146 ; [.21F7.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER N WITH CEDILLA
+0145 ; [.21F7.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER N WITH CEDILLA
+A7A5 ; [.21F7.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER N WITH OBLIQUE STROKE
+A7A4 ; [.21F7.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
+1E47 ; [.21F7.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER N WITH DOT BELOW
+1E46 ; [.21F7.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER N WITH DOT BELOW
+1E4B ; [.21F7.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+1E4A ; [.21F7.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+1E49 ; [.21F7.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER N WITH LINE BELOW
+1E48 ; [.21F7.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER N WITH LINE BELOW
+3381 ; [.21F7.0020.001C][.2075.0020.001D] # SQUARE NA
+1F195 ; [.21F7.0020.001D][.20DB.0020.001D][.2343.0020.001D] # SQUARED NEW
+338B ; [.21F7.0020.001C][.2116.0020.001D] # SQUARE NF
+1F196 ; [.21F7.0020.001D][.2125.0020.001D] # SQUARED NG
+01CC ; [.21F7.0020.0004][.2183.0020.0004] # LATIN SMALL LETTER NJ
+01CB ; [.21F7.0020.000A][.2183.0020.0004] # LATIN CAPITAL LETTER N WITH SMALL LETTER J
+01CA ; [.21F7.0020.000A][.2183.0020.000A] # LATIN CAPITAL LETTER NJ
+339A ; [.21F7.0020.001C][.21E8.0020.001C] # SQUARE NM
+2116 ; [.21F7.0020.000A][.221D.0020.0004] # NUMERO SIGN
+33B1 ; [.21F7.0020.001C][.22B6.0020.001C] # SQUARE NS
+33B5 ; [.21F7.0020.001C][.2331.0020.001D] # SQUARE NV
+33BB ; [.21F7.0020.001C][.2343.0020.001D] # SQUARE NW
+0274 ; [.21FB.0020.0002] # LATIN LETTER SMALL CAPITAL N
+1DE1 ; [.21FB.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL N
+1DB0 ; [.21FB.0020.0014] # MODIFIER LETTER SMALL CAPITAL N
+1D3B ; [.21FF.0020.0002] # MODIFIER LETTER CAPITAL REVERSED N
+1D0E ; [.2200.0020.0002] # LATIN LETTER SMALL CAPITAL REVERSED N
+1D70 ; [.2201.0020.0002] # LATIN SMALL LETTER N WITH MIDDLE TILDE
+0272 ; [.2202.0020.0002] # LATIN SMALL LETTER N WITH LEFT HOOK
+019D ; [.2202.0020.0008] # LATIN CAPITAL LETTER N WITH LEFT HOOK
+1DAE ; [.2202.0020.0014] # MODIFIER LETTER SMALL N WITH LEFT HOOK
+019E ; [.2206.0020.0002] # LATIN SMALL LETTER N WITH LONG RIGHT LEG
+0220 ; [.2206.0020.0008] # LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+A791 ; [.220A.0020.0002] # LATIN SMALL LETTER N WITH DESCENDER
+A790 ; [.220A.0020.0008] # LATIN CAPITAL LETTER N WITH DESCENDER
+1D87 ; [.220B.0020.0002] # LATIN SMALL LETTER N WITH PALATAL HOOK
+0273 ; [.220C.0020.0002] # LATIN SMALL LETTER N WITH RETROFLEX HOOK
+1DAF ; [.220C.0020.0014] # MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
+0235 ; [.2210.0020.0002] # LATIN SMALL LETTER N WITH CURL
+AB3B ; [.2214.0020.0002] # LATIN SMALL LETTER N WITH CROSSED-TAIL
+A774 ; [.2215.0020.0002] # LATIN SMALL LETTER NUM
+014B ; [.2216.0020.0002] # LATIN SMALL LETTER ENG
+014A ; [.2216.0020.0008] # LATIN CAPITAL LETTER ENG
+1D51 ; [.2216.0020.0014] # MODIFIER LETTER SMALL ENG
+AB3C ; [.221A.0020.0002] # LATIN SMALL LETTER ENG WITH CROSSED-TAIL
+1DF14 ; [.221B.0020.0002] # LATIN SMALL LETTER ENG WITH PALATAL HOOK
+1DF07 ; [.221C.0020.0002] # LATIN SMALL LETTER REVERSED ENG
+006F ; [.221D.0020.0002] # LATIN SMALL LETTER O
+FF4F ; [.221D.0020.0003] # FULLWIDTH LATIN SMALL LETTER O
+0366 ; [.221D.0020.0004] # COMBINING LATIN SMALL LETTER O
+24AA ; [*0334.0020.0004][.221D.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER O
+2134 ; [.221D.0020.0005] # SCRIPT SMALL O
+1D428 ; [.221D.0020.0005] # MATHEMATICAL BOLD SMALL O
+1D45C ; [.221D.0020.0005] # MATHEMATICAL ITALIC SMALL O
+1D490 ; [.221D.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL O
+1D4F8 ; [.221D.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL O
+1D52C ; [.221D.0020.0005] # MATHEMATICAL FRAKTUR SMALL O
+1D560 ; [.221D.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL O
+1D594 ; [.221D.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL O
+1D5C8 ; [.221D.0020.0005] # MATHEMATICAL SANS-SERIF SMALL O
+1D5FC ; [.221D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL O
+1D630 ; [.221D.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL O
+1D664 ; [.221D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
+1D698 ; [.221D.0020.0005] # MATHEMATICAL MONOSPACE SMALL O
+24DE ; [.221D.0020.0006] # CIRCLED LATIN SMALL LETTER O
+004F ; [.221D.0020.0008] # LATIN CAPITAL LETTER O
+FF2F ; [.221D.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER O
+1F11E ; [*0334.0020.0004][.221D.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER O
+1D40E ; [.221D.0020.000B] # MATHEMATICAL BOLD CAPITAL O
+1D442 ; [.221D.0020.000B] # MATHEMATICAL ITALIC CAPITAL O
+1D476 ; [.221D.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL O
+1D4AA ; [.221D.0020.000B] # MATHEMATICAL SCRIPT CAPITAL O
+1D4DE ; [.221D.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL O
+1D512 ; [.221D.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL O
+1D546 ; [.221D.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D57A ; [.221D.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL O
+1D5AE ; [.221D.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL O
+1D5E2 ; [.221D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+1D616 ; [.221D.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+1D64A ; [.221D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+1D67E ; [.221D.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL O
+24C4 ; [.221D.0020.000C] # CIRCLED LATIN CAPITAL LETTER O
+1F15E ; [.221D.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER O
+00BA ; [.221D.0020.0014] # MASCULINE ORDINAL INDICATOR
+1D52 ; [.221D.0020.0014] # MODIFIER LETTER SMALL O
+2092 ; [.221D.0020.0015] # LATIN SUBSCRIPT SMALL LETTER O
+1D3C ; [.221D.0020.001D] # MODIFIER LETTER CAPITAL O
+1F13E ; [.221D.0020.001D] # SQUARED LATIN CAPITAL LETTER O
+1F17E ; [.221D.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER O
+00F3 ; [.221D.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.221D.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH ACUTE
+00F2 ; [.221D.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH GRAVE
+00D2 ; [.221D.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH GRAVE
+014F ; [.221D.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER O WITH BREVE
+014E ; [.221D.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER O WITH BREVE
+00F4 ; [.221D.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.221D.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED1 ; [.221D.0020.0002][.0000.0027.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.221D.0020.0008][.0000.0027.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED3 ; [.221D.0020.0002][.0000.0027.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.221D.0020.0008][.0000.0027.0002][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED7 ; [.221D.0020.0002][.0000.0027.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.221D.0020.0008][.0000.0027.0002][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.221D.0020.0002][.0000.0027.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.221D.0020.0008][.0000.0027.0002][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+01D2 ; [.221D.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER O WITH CARON
+01D1 ; [.221D.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER O WITH CARON
+00F6 ; [.221D.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER O WITH DIAERESIS
+1DF3 ; [.221D.0020.0004][.0000.002B.0004] # COMBINING LATIN SMALL LETTER O WITH DIAERESIS
+A79D ; [.221D.0020.0004][.0000.002B.0004] # LATIN SMALL LETTER VOLAPUK OE
+00D6 ; [.221D.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS
+A79C ; [.221D.0020.000A][.0000.002B.0004] # LATIN CAPITAL LETTER VOLAPUK OE
+022B ; [.221D.0020.0002][.0000.002B.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.221D.0020.0008][.0000.002B.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+0151 ; [.221D.0020.0002][.0000.002C.0002] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.221D.0020.0008][.0000.002C.0002] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+00F5 ; [.221D.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH TILDE
+00D5 ; [.221D.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH TILDE
+1E4D ; [.221D.0020.0002][.0000.002D.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH TILDE AND ACUTE
+1E4C ; [.221D.0020.0008][.0000.002D.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+1E4F ; [.221D.0020.0002][.0000.002D.0002][.0000.002B.0002] # LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+1E4E ; [.221D.0020.0008][.0000.002D.0002][.0000.002B.0002] # LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+022D ; [.221D.0020.0002][.0000.002D.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH TILDE AND MACRON
+022C ; [.221D.0020.0008][.0000.002D.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+022F ; [.221D.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER O WITH DOT ABOVE
+022E ; [.221D.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER O WITH DOT ABOVE
+0231 ; [.221D.0020.0002][.0000.002E.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+0230 ; [.221D.0020.0008][.0000.002E.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+00F8 ; [.221D.0020.0002][.0000.002F.0002] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.221D.0020.0008][.0000.002F.0002] # LATIN CAPITAL LETTER O WITH STROKE
+107A2 ; [.221D.0020.0014][.0000.002F.0014] # MODIFIER LETTER SMALL O WITH STROKE
+01FF ; [.221D.0020.0002][.0000.002F.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.221D.0020.0008][.0000.002F.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+01EB ; [.221D.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER O WITH OGONEK
+01EA ; [.221D.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER O WITH OGONEK
+01ED ; [.221D.0020.0002][.0000.0031.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH OGONEK AND MACRON
+01EC ; [.221D.0020.0008][.0000.0031.0002][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+014D ; [.221D.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.221D.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER O WITH MACRON
+1E53 ; [.221D.0020.0002][.0000.0032.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH MACRON AND ACUTE
+1E52 ; [.221D.0020.0008][.0000.0032.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+1E51 ; [.221D.0020.0002][.0000.0032.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH MACRON AND GRAVE
+1E50 ; [.221D.0020.0008][.0000.0032.0002][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+1DED ; [.221D.0020.0004][.0000.0034.0004] # COMBINING LATIN SMALL LETTER O WITH LIGHT CENTRALIZATION STROKE
+1ECF ; [.221D.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH HOOK ABOVE
+1ECE ; [.221D.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+020D ; [.221D.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER O WITH DOUBLE GRAVE
+020C ; [.221D.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+020F ; [.221D.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER O WITH INVERTED BREVE
+020E ; [.221D.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER O WITH INVERTED BREVE
+01A1 ; [.221D.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER O WITH HORN
+01A0 ; [.221D.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER O WITH HORN
+1EDB ; [.221D.0020.0002][.0000.003F.0002][.0000.0024.0002] # LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDA ; [.221D.0020.0008][.0000.003F.0002][.0000.0024.0002] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EDD ; [.221D.0020.0002][.0000.003F.0002][.0000.0025.0002] # LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDC ; [.221D.0020.0008][.0000.003F.0002][.0000.0025.0002] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EE1 ; [.221D.0020.0002][.0000.003F.0002][.0000.002D.0002] # LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE0 ; [.221D.0020.0008][.0000.003F.0002][.0000.002D.0002] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EDF ; [.221D.0020.0002][.0000.003F.0002][.0000.003B.0002] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EDE ; [.221D.0020.0008][.0000.003F.0002][.0000.003B.0002] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EE3 ; [.221D.0020.0002][.0000.003F.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE2 ; [.221D.0020.0008][.0000.003F.0002][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+1ECD ; [.221D.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER O WITH DOT BELOW
+1ECC ; [.221D.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER O WITH DOT BELOW
+1ED9 ; [.221D.0020.0002][.0000.0042.0002][.0000.0027.0002] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.221D.0020.0008][.0000.0042.0002][.0000.0027.0002] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+0153 ; [.221D.0020.0004][.0000.0118.0004][.20DB.0020.0004] # LATIN SMALL LIGATURE OE
+0152 ; [.221D.0020.000A][.0000.0118.0004][.20DB.0020.000A] # LATIN CAPITAL LIGATURE OE
+A7F9 ; [.221D.0020.0014][.0000.0118.0014][.20DB.0020.0014] # MODIFIER LETTER SMALL LIGATURE OE
+1F197 ; [.221D.0020.001D][.219C.0020.001D] # SQUARED OK
+A74F ; [.221D.0020.0004][.221D.0020.0004] # LATIN SMALL LETTER OO
+A74E ; [.221D.0020.000A][.221D.0020.000A] # LATIN CAPITAL LETTER OO
+3375 ; [.221D.0020.001C][.2331.0020.001D] # SQUARE OV
+1D0F ; [.2221.0020.0002] # LATIN LETTER SMALL CAPITAL O
+1D11 ; [.2222.0020.0002] # LATIN SMALL LETTER SIDEWAYS O
+AB3D ; [.2223.0020.0002] # LATIN SMALL LETTER BLACKLETTER O
+0276 ; [.2224.0020.0002] # LATIN LETTER SMALL CAPITAL OE
+107A3 ; [.2224.0020.0014] # MODIFIER LETTER SMALL CAPITAL OE
+1D14 ; [.2228.0020.0002] # LATIN SMALL LETTER TURNED OE
+AB41 ; [.2229.0020.0002] # LATIN SMALL LETTER TURNED OE WITH STROKE
+AB42 ; [.222A.0020.0002] # LATIN SMALL LETTER TURNED OE WITH HORIZONTAL STROKE
+AB40 ; [.222B.0020.0002] # LATIN SMALL LETTER INVERTED OE
+AB43 ; [.222C.0020.0002] # LATIN SMALL LETTER TURNED O OPEN-O
+AB44 ; [.222D.0020.0002] # LATIN SMALL LETTER TURNED O OPEN-O WITH STROKE
+1D13 ; [.222E.0020.0002] # LATIN SMALL LETTER SIDEWAYS O WITH STROKE
+AB3E ; [.222F.0020.0002] # LATIN SMALL LETTER BLACKLETTER O WITH STROKE
+1DF1B ; [.2230.0020.0002] # LATIN SMALL LETTER O WITH RETROFLEX HOOK
+0254 ; [.2231.0020.0002] # LATIN SMALL LETTER OPEN O
+0186 ; [.2231.0020.0008] # LATIN CAPITAL LETTER OPEN O
+1D53 ; [.2231.0020.0014] # MODIFIER LETTER SMALL OPEN O
+1D10 ; [.2235.0020.0002] # LATIN LETTER SMALL CAPITAL OPEN O
+1D12 ; [.2236.0020.0002] # LATIN SMALL LETTER SIDEWAYS OPEN O
+AB3F ; [.2237.0020.0002] # LATIN SMALL LETTER OPEN O WITH STROKE
+1D97 ; [.2238.0020.0002] # LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK
+AB62 ; [.2239.0020.0002] # LATIN SMALL LETTER OPEN OE
+A74D ; [.223A.0020.0002] # LATIN SMALL LETTER O WITH LOOP
+A74C ; [.223A.0020.0008] # LATIN CAPITAL LETTER O WITH LOOP
+1D16 ; [.223B.0020.0002] # LATIN SMALL LETTER TOP HALF O
+1D54 ; [.223B.0020.0014] # MODIFIER LETTER SMALL TOP HALF O
+1D17 ; [.223C.0020.0002] # LATIN SMALL LETTER BOTTOM HALF O
+1D55 ; [.223C.0020.0014] # MODIFIER LETTER SMALL BOTTOM HALF O
+2C7A ; [.223D.0020.0002] # LATIN SMALL LETTER O WITH LOW RING INSIDE
+0275 ; [.223E.0020.0002] # LATIN SMALL LETTER BARRED O
+019F ; [.223E.0020.0008] # LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+1DB1 ; [.223E.0020.0014] # MODIFIER LETTER SMALL BARRED O
+A74B ; [.2242.0020.0002] # LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
+A74A ; [.2242.0020.0008] # LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+0277 ; [.2243.0020.0002] # LATIN SMALL LETTER CLOSED OMEGA
+107A4 ; [.2243.0020.0014] # MODIFIER LETTER SMALL CLOSED OMEGA
+A7B7 ; [.2247.0020.0002] # LATIN SMALL LETTER OMEGA
+A7B6 ; [.2247.0020.0008] # LATIN CAPITAL LETTER OMEGA
+0223 ; [.2248.0020.0002] # LATIN SMALL LETTER OU
+0222 ; [.2248.0020.0008] # LATIN CAPITAL LETTER OU
+1D3D ; [.2248.0020.001D] # MODIFIER LETTER CAPITAL OU
+1D15 ; [.224C.0020.0002] # LATIN LETTER SMALL CAPITAL OU
+0070 ; [.224D.0020.0002] # LATIN SMALL LETTER P
+FF50 ; [.224D.0020.0003] # FULLWIDTH LATIN SMALL LETTER P
+1DEE ; [.224D.0020.0004] # COMBINING LATIN SMALL LETTER P
+24AB ; [*0334.0020.0004][.224D.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER P
+1D429 ; [.224D.0020.0005] # MATHEMATICAL BOLD SMALL P
+1D45D ; [.224D.0020.0005] # MATHEMATICAL ITALIC SMALL P
+1D491 ; [.224D.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL P
+1D4C5 ; [.224D.0020.0005] # MATHEMATICAL SCRIPT SMALL P
+1D4F9 ; [.224D.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL P
+1D52D ; [.224D.0020.0005] # MATHEMATICAL FRAKTUR SMALL P
+1D561 ; [.224D.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL P
+1D595 ; [.224D.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL P
+1D5C9 ; [.224D.0020.0005] # MATHEMATICAL SANS-SERIF SMALL P
+1D5FD ; [.224D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL P
+1D631 ; [.224D.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL P
+1D665 ; [.224D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
+1D699 ; [.224D.0020.0005] # MATHEMATICAL MONOSPACE SMALL P
+24DF ; [.224D.0020.0006] # CIRCLED LATIN SMALL LETTER P
+0050 ; [.224D.0020.0008] # LATIN CAPITAL LETTER P
+FF30 ; [.224D.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER P
+1F11F ; [*0334.0020.0004][.224D.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER P
+2119 ; [.224D.0020.000B] # DOUBLE-STRUCK CAPITAL P
+1D40F ; [.224D.0020.000B] # MATHEMATICAL BOLD CAPITAL P
+1D443 ; [.224D.0020.000B] # MATHEMATICAL ITALIC CAPITAL P
+1D477 ; [.224D.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL P
+1D4AB ; [.224D.0020.000B] # MATHEMATICAL SCRIPT CAPITAL P
+1D4DF ; [.224D.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL P
+1D513 ; [.224D.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL P
+1D57B ; [.224D.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL P
+1D5AF ; [.224D.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL P
+1D5E3 ; [.224D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+1D617 ; [.224D.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+1D64B ; [.224D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+1D67F ; [.224D.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL P
+24C5 ; [.224D.0020.000C] # CIRCLED LATIN CAPITAL LETTER P
+1F15F ; [.224D.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER P
+1D56 ; [.224D.0020.0014] # MODIFIER LETTER SMALL P
+209A ; [.224D.0020.0015] # LATIN SUBSCRIPT SMALL LETTER P
+1D3E ; [.224D.0020.001D] # MODIFIER LETTER CAPITAL P
+1F13F ; [.224D.0020.001D] # SQUARED LATIN CAPITAL LETTER P
+1F17F ; [.224D.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER P
+1F18A ; [.224D.0020.001D] # CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P
+1E55 ; [.224D.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER P WITH ACUTE
+1E54 ; [.224D.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER P WITH ACUTE
+1E57 ; [.224D.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER P WITH DOT ABOVE
+1E56 ; [.224D.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER P WITH DOT ABOVE
+3380 ; [.224D.0020.001C][.2075.0020.001D] # SQUARE PA AMPS
+33A9 ; [.224D.0020.001D][.2075.0020.001C] # SQUARE PA
+1F18C ; [.224D.0020.001D][.2075.0020.001D] # NEGATIVE SQUARED PA
+3376 ; [.224D.0020.001C][.20A9.0020.001C] # SQUARE PC
+338A ; [.224D.0020.001C][.2116.0020.001D] # SQUARE PF
+33D7 ; [.224D.0020.001D][.214C.0020.001D] # SQUARE PH
+33D8 ; [.224D.0020.001C][*0281.0020.001C][.21E8.0020.001C][*0281.0020.001C] # SQUARE PM
+33D9 ; [.224D.0020.001D][.224D.0020.001D][.21E8.0020.001D] # SQUARE PPM
+1F14E ; [.224D.0020.001D][.224D.0020.001D][.2331.0020.001D] # SQUARED PPV
+33DA ; [.224D.0020.001D][.2275.0020.001D] # SQUARE PR
+33B0 ; [.224D.0020.001C][.22B6.0020.001C] # SQUARE PS
+3250 ; [.224D.0020.001D][.22DF.0020.001D][.20DB.0020.001D] # PARTNERSHIP SIGN
+33B4 ; [.224D.0020.001C][.2331.0020.001D] # SQUARE PV
+33BA ; [.224D.0020.001C][.2343.0020.001D] # SQUARE PW
+1D18 ; [.2251.0020.0002] # LATIN LETTER SMALL CAPITAL P
+1D7D ; [.2252.0020.0002] # LATIN SMALL LETTER P WITH STROKE
+2C63 ; [.2252.0020.0008] # LATIN CAPITAL LETTER P WITH STROKE
+A751 ; [.2253.0020.0002] # LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
+A750 ; [.2253.0020.0008] # LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+1D71 ; [.2254.0020.0002] # LATIN SMALL LETTER P WITH MIDDLE TILDE
+1D88 ; [.2255.0020.0002] # LATIN SMALL LETTER P WITH PALATAL HOOK
+01A5 ; [.2256.0020.0002] # LATIN SMALL LETTER P WITH HOOK
+01A4 ; [.2256.0020.0008] # LATIN CAPITAL LETTER P WITH HOOK
+A753 ; [.225A.0020.0002] # LATIN SMALL LETTER P WITH FLOURISH
+A752 ; [.225A.0020.0008] # LATIN CAPITAL LETTER P WITH FLOURISH
+A755 ; [.225B.0020.0002] # LATIN SMALL LETTER P WITH SQUIRREL TAIL
+A754 ; [.225B.0020.0008] # LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+A7FC ; [.225C.0020.0002] # LATIN EPIGRAPHIC LETTER REVERSED P
+0278 ; [.225D.0020.0002] # LATIN SMALL LETTER PHI
+1DB2 ; [.225D.0020.0014] # MODIFIER LETTER SMALL PHI
+2C77 ; [.2261.0020.0002] # LATIN SMALL LETTER TAILLESS PHI
+0071 ; [.2262.0020.0002] # LATIN SMALL LETTER Q
+FF51 ; [.2262.0020.0003] # FULLWIDTH LATIN SMALL LETTER Q
+24AC ; [*0334.0020.0004][.2262.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER Q
+1D42A ; [.2262.0020.0005] # MATHEMATICAL BOLD SMALL Q
+1D45E ; [.2262.0020.0005] # MATHEMATICAL ITALIC SMALL Q
+1D492 ; [.2262.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL Q
+1D4C6 ; [.2262.0020.0005] # MATHEMATICAL SCRIPT SMALL Q
+1D4FA ; [.2262.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL Q
+1D52E ; [.2262.0020.0005] # MATHEMATICAL FRAKTUR SMALL Q
+1D562 ; [.2262.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL Q
+1D596 ; [.2262.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL Q
+1D5CA ; [.2262.0020.0005] # MATHEMATICAL SANS-SERIF SMALL Q
+1D5FE ; [.2262.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL Q
+1D632 ; [.2262.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL Q
+1D666 ; [.2262.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
+1D69A ; [.2262.0020.0005] # MATHEMATICAL MONOSPACE SMALL Q
+24E0 ; [.2262.0020.0006] # CIRCLED LATIN SMALL LETTER Q
+0051 ; [.2262.0020.0008] # LATIN CAPITAL LETTER Q
+FF31 ; [.2262.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER Q
+1F120 ; [*0334.0020.0004][.2262.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER Q
+211A ; [.2262.0020.000B] # DOUBLE-STRUCK CAPITAL Q
+1D410 ; [.2262.0020.000B] # MATHEMATICAL BOLD CAPITAL Q
+1D444 ; [.2262.0020.000B] # MATHEMATICAL ITALIC CAPITAL Q
+1D478 ; [.2262.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL Q
+1D4AC ; [.2262.0020.000B] # MATHEMATICAL SCRIPT CAPITAL Q
+1D4E0 ; [.2262.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL Q
+1D514 ; [.2262.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL Q
+1D57C ; [.2262.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+1D5B0 ; [.2262.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL Q
+1D5E4 ; [.2262.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+1D618 ; [.2262.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+1D64C ; [.2262.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+1D680 ; [.2262.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL Q
+24C6 ; [.2262.0020.000C] # CIRCLED LATIN CAPITAL LETTER Q
+1F160 ; [.2262.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Q
+107A5 ; [.2262.0020.0014] # MODIFIER LETTER SMALL Q
+A7F4 ; [.2262.0020.001D] # MODIFIER LETTER CAPITAL Q
+1F140 ; [.2262.0020.001D] # SQUARED LATIN CAPITAL LETTER Q
+1F180 ; [.2262.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER Q
+0239 ; [.2262.0020.0004][.224D.0020.0004] # LATIN SMALL LETTER QP DIGRAPH
+A7AF ; [.2266.0020.0002] # LATIN LETTER SMALL CAPITAL Q
+A757 ; [.2267.0020.0002] # LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
+A756 ; [.2267.0020.0008] # LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+A759 ; [.2268.0020.0002] # LATIN SMALL LETTER Q WITH DIAGONAL STROKE
+A758 ; [.2268.0020.0008] # LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+02A0 ; [.2269.0020.0002] # LATIN SMALL LETTER Q WITH HOOK
+024B ; [.226D.0020.0002] # LATIN SMALL LETTER Q WITH HOOK TAIL
+024A ; [.226D.0020.0008] # LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+0138 ; [.2271.0020.0002] # LATIN SMALL LETTER KRA
+0072 ; [.2275.0020.0002] # LATIN SMALL LETTER R
+FF52 ; [.2275.0020.0003] # FULLWIDTH LATIN SMALL LETTER R
+036C ; [.2275.0020.0004] # COMBINING LATIN SMALL LETTER R
+1DCA ; [.2275.0020.0004] # COMBINING LATIN SMALL LETTER R BELOW
+24AD ; [*0334.0020.0004][.2275.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER R
+1D42B ; [.2275.0020.0005] # MATHEMATICAL BOLD SMALL R
+1D45F ; [.2275.0020.0005] # MATHEMATICAL ITALIC SMALL R
+1D493 ; [.2275.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL R
+1D4C7 ; [.2275.0020.0005] # MATHEMATICAL SCRIPT SMALL R
+1D4FB ; [.2275.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL R
+1D52F ; [.2275.0020.0005] # MATHEMATICAL FRAKTUR SMALL R
+1D563 ; [.2275.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL R
+1D597 ; [.2275.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL R
+1D5CB ; [.2275.0020.0005] # MATHEMATICAL SANS-SERIF SMALL R
+1D5FF ; [.2275.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL R
+1D633 ; [.2275.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL R
+1D667 ; [.2275.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
+1D69B ; [.2275.0020.0005] # MATHEMATICAL MONOSPACE SMALL R
+24E1 ; [.2275.0020.0006] # CIRCLED LATIN SMALL LETTER R
+0052 ; [.2275.0020.0008] # LATIN CAPITAL LETTER R
+FF32 ; [.2275.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER R
+1F121 ; [*0334.0020.0004][.2275.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER R
+211B ; [.2275.0020.000B] # SCRIPT CAPITAL R
+211C ; [.2275.0020.000B] # BLACK-LETTER CAPITAL R
+211D ; [.2275.0020.000B] # DOUBLE-STRUCK CAPITAL R
+1D411 ; [.2275.0020.000B] # MATHEMATICAL BOLD CAPITAL R
+1D445 ; [.2275.0020.000B] # MATHEMATICAL ITALIC CAPITAL R
+1D479 ; [.2275.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL R
+1D4E1 ; [.2275.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL R
+1D57D ; [.2275.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL R
+1D5B1 ; [.2275.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL R
+1D5E5 ; [.2275.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+1D619 ; [.2275.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+1D64D ; [.2275.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+1D681 ; [.2275.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL R
+24C7 ; [.2275.0020.000C] # CIRCLED LATIN CAPITAL LETTER R
+1F12C ; [.2275.0020.000C] # CIRCLED ITALIC LATIN CAPITAL LETTER R
+1F161 ; [.2275.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER R
+02B3 ; [.2275.0020.0014] # MODIFIER LETTER SMALL R
+1D63 ; [.2275.0020.0015] # LATIN SUBSCRIPT SMALL LETTER R
+1D3F ; [.2275.0020.001D] # MODIFIER LETTER CAPITAL R
+1F141 ; [.2275.0020.001D] # SQUARED LATIN CAPITAL LETTER R
+1F181 ; [.2275.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER R
+0155 ; [.2275.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER R WITH ACUTE
+0154 ; [.2275.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER R WITH ACUTE
+0159 ; [.2275.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER R WITH CARON
+0158 ; [.2275.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER R WITH CARON
+1E59 ; [.2275.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER R WITH DOT ABOVE
+1E58 ; [.2275.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER R WITH DOT ABOVE
+0157 ; [.2275.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER R WITH CEDILLA
+0156 ; [.2275.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER R WITH CEDILLA
+A7A7 ; [.2275.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER R WITH OBLIQUE STROKE
+A7A6 ; [.2275.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
+0211 ; [.2275.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER R WITH DOUBLE GRAVE
+0210 ; [.2275.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+0213 ; [.2275.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER R WITH INVERTED BREVE
+0212 ; [.2275.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER R WITH INVERTED BREVE
+1E5B ; [.2275.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER R WITH DOT BELOW
+1E5A ; [.2275.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER R WITH DOT BELOW
+1E5D ; [.2275.0020.0002][.0000.0042.0002][.0000.0032.0002] # LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+1E5C ; [.2275.0020.0008][.0000.0042.0002][.0000.0032.0002] # LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+1E5F ; [.2275.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER R WITH LINE BELOW
+1E5E ; [.2275.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER R WITH LINE BELOW
+1ACD ; [.2275.0020.0004][.0000.0119.0004] # COMBINING LATIN SMALL LETTER INSULAR R
+A783 ; [.2275.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR R
+A782 ; [.2275.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR R
+1DE3 ; [.2275.0020.0004][.0000.011A.0004] # COMBINING LATIN SMALL LETTER R ROTUNDA
+A75B ; [.2275.0020.0004][.0000.011A.0004] # LATIN SMALL LETTER R ROTUNDA
+A75A ; [.2275.0020.000A][.0000.011A.0004] # LATIN CAPITAL LETTER R ROTUNDA
+33AD ; [.2275.0020.001C][.2075.0020.001C][.20BF.0020.001C] # SQUARE RAD
+33AE ; [.2275.0020.001C][.2075.0020.001C][.20BF.0020.001C][*06AC.0020.001C][.22B6.0020.001C] # SQUARE RAD OVER S
+33AF ; [.2275.0020.001C][.2075.0020.001C][.20BF.0020.001C][*06AC.0020.001C][.22B6.0020.001C][.206D.0020.001C] # SQUARE RAD OVER S SQUARED
+20A8 ; [.2275.0020.000A][.22B6.0020.0004] # RUPEE SIGN
+AB45 ; [.2279.0020.0002] # LATIN SMALL LETTER STIRRUP R
+0280 ; [.227A.0020.0002] # LATIN LETTER SMALL CAPITAL R
+1DE2 ; [.227A.0020.0004] # COMBINING LATIN LETTER SMALL CAPITAL R
+01A6 ; [.227A.0020.0008] # LATIN LETTER YR
+107AA ; [.227A.0020.0014] # MODIFIER LETTER SMALL CAPITAL R
+AB46 ; [.227E.0020.0002] # LATIN LETTER SMALL CAPITAL R WITH RIGHT LEG
+1D19 ; [.227F.0020.0002] # LATIN LETTER SMALL CAPITAL REVERSED R
+024D ; [.2280.0020.0002] # LATIN SMALL LETTER R WITH STROKE
+024C ; [.2280.0020.0008] # LATIN CAPITAL LETTER R WITH STROKE
+1D72 ; [.2284.0020.0002] # LATIN SMALL LETTER R WITH MIDDLE TILDE
+0279 ; [.2285.0020.0002] # LATIN SMALL LETTER TURNED R
+02B4 ; [.2285.0020.0014] # MODIFIER LETTER SMALL TURNED R
+1D1A ; [.2289.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED R
+027A ; [.228A.0020.0002] # LATIN SMALL LETTER TURNED R WITH LONG LEG
+107A6 ; [.228A.0020.0014] # MODIFIER LETTER SMALL TURNED R WITH LONG LEG
+1DF08 ; [.228E.0020.0002] # LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK
+107A7 ; [.228E.0020.0014] # MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK
+1D89 ; [.228F.0020.0002] # LATIN SMALL LETTER R WITH PALATAL HOOK
+027B ; [.2290.0020.0002] # LATIN SMALL LETTER TURNED R WITH HOOK
+02B5 ; [.2290.0020.0014] # MODIFIER LETTER SMALL TURNED R WITH HOOK
+2C79 ; [.2294.0020.0002] # LATIN SMALL LETTER TURNED R WITH TAIL
+027C ; [.2295.0020.0002] # LATIN SMALL LETTER R WITH LONG LEG
+027D ; [.2299.0020.0002] # LATIN SMALL LETTER R WITH TAIL
+2C64 ; [.2299.0020.0008] # LATIN CAPITAL LETTER R WITH TAIL
+107A8 ; [.2299.0020.0014] # MODIFIER LETTER SMALL R WITH TAIL
+AB49 ; [.229D.0020.0002] # LATIN SMALL LETTER R WITH CROSSED-TAIL
+027E ; [.229E.0020.0002] # LATIN SMALL LETTER R WITH FISHHOOK
+107A9 ; [.229E.0020.0014] # MODIFIER LETTER SMALL R WITH FISHHOOK
+1D73 ; [.22A2.0020.0002] # LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE
+1DF16 ; [.22A3.0020.0002] # LATIN SMALL LETTER R WITH FISHHOOK AND PALATAL HOOK
+027F ; [.22A4.0020.0002] # LATIN SMALL LETTER REVERSED R WITH FISHHOOK
+AB47 ; [.22A8.0020.0002] # LATIN SMALL LETTER R WITHOUT HANDLE
+AB48 ; [.22A9.0020.0002] # LATIN SMALL LETTER DOUBLE R
+AB4A ; [.22AA.0020.0002] # LATIN SMALL LETTER DOUBLE R WITH CROSSED-TAIL
+AB4B ; [.22AB.0020.0002] # LATIN SMALL LETTER SCRIPT R
+AB4C ; [.22AC.0020.0002] # LATIN SMALL LETTER SCRIPT R WITH RING
+0281 ; [.22AD.0020.0002] # LATIN LETTER SMALL CAPITAL INVERTED R
+02B6 ; [.22AD.0020.0014] # MODIFIER LETTER SMALL CAPITAL INVERTED R
+AB68 ; [.22B1.0020.0002] # LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+1DF15 ; [.22B2.0020.0002] # LATIN SMALL LETTER TURNED R WITH PALATAL HOOK
+A775 ; [.22B3.0020.0002] # LATIN SMALL LETTER RUM
+A776 ; [.22B4.0020.0002] # LATIN LETTER SMALL CAPITAL RUM
+A75D ; [.22B5.0020.0002] # LATIN SMALL LETTER RUM ROTUNDA
+A75C ; [.22B5.0020.0008] # LATIN CAPITAL LETTER RUM ROTUNDA
+0073 ; [.22B6.0020.0002] # LATIN SMALL LETTER S
+FF53 ; [.22B6.0020.0003] # FULLWIDTH LATIN SMALL LETTER S
+1DE4 ; [.22B6.0020.0004] # COMBINING LATIN SMALL LETTER S
+24AE ; [*0334.0020.0004][.22B6.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER S
+1D42C ; [.22B6.0020.0005] # MATHEMATICAL BOLD SMALL S
+1D460 ; [.22B6.0020.0005] # MATHEMATICAL ITALIC SMALL S
+1D494 ; [.22B6.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL S
+1D4C8 ; [.22B6.0020.0005] # MATHEMATICAL SCRIPT SMALL S
+1D4FC ; [.22B6.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL S
+1D530 ; [.22B6.0020.0005] # MATHEMATICAL FRAKTUR SMALL S
+1D564 ; [.22B6.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL S
+1D598 ; [.22B6.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL S
+1D5CC ; [.22B6.0020.0005] # MATHEMATICAL SANS-SERIF SMALL S
+1D600 ; [.22B6.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL S
+1D634 ; [.22B6.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL S
+1D668 ; [.22B6.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
+1D69C ; [.22B6.0020.0005] # MATHEMATICAL MONOSPACE SMALL S
+24E2 ; [.22B6.0020.0006] # CIRCLED LATIN SMALL LETTER S
+0053 ; [.22B6.0020.0008] # LATIN CAPITAL LETTER S
+FF33 ; [.22B6.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER S
+1F122 ; [*0334.0020.0004][.22B6.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER S
+1F12A ; [*039E.0020.0004][.22B6.0020.000A][*039F.0020.0004] # TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S
+1D412 ; [.22B6.0020.000B] # MATHEMATICAL BOLD CAPITAL S
+1D446 ; [.22B6.0020.000B] # MATHEMATICAL ITALIC CAPITAL S
+1D47A ; [.22B6.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL S
+1D4AE ; [.22B6.0020.000B] # MATHEMATICAL SCRIPT CAPITAL S
+1D4E2 ; [.22B6.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL S
+1D516 ; [.22B6.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL S
+1D54A ; [.22B6.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+1D57E ; [.22B6.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL S
+1D5B2 ; [.22B6.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL S
+1D5E6 ; [.22B6.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+1D61A ; [.22B6.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+1D64E ; [.22B6.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+1D682 ; [.22B6.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL S
+24C8 ; [.22B6.0020.000C] # CIRCLED LATIN CAPITAL LETTER S
+1F162 ; [.22B6.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER S
+02E2 ; [.22B6.0020.0014] # MODIFIER LETTER SMALL S
+209B ; [.22B6.0020.0015] # LATIN SUBSCRIPT SMALL LETTER S
+1F142 ; [.22B6.0020.001D] # SQUARED LATIN CAPITAL LETTER S
+1F182 ; [.22B6.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER S
+015B ; [.22B6.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER S WITH ACUTE
+015A ; [.22B6.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER S WITH ACUTE
+1E65 ; [.22B6.0020.0002][.0000.0024.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+1E64 ; [.22B6.0020.0008][.0000.0024.0002][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+015D ; [.22B6.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER S WITH CIRCUMFLEX
+015C ; [.22B6.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+0161 ; [.22B6.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER S WITH CARON
+0160 ; [.22B6.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER S WITH CARON
+1E67 ; [.22B6.0020.0002][.0000.0028.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+1E66 ; [.22B6.0020.0008][.0000.0028.0002][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+1E61 ; [.22B6.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH DOT ABOVE
+1E60 ; [.22B6.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH DOT ABOVE
+015F ; [.22B6.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER S WITH CEDILLA
+015E ; [.22B6.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER S WITH CEDILLA
+A7A9 ; [.22B6.0020.0004][.0000.0035.0004] # LATIN SMALL LETTER S WITH OBLIQUE STROKE
+A7A8 ; [.22B6.0020.000A][.0000.0035.0004] # LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
+1E63 ; [.22B6.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER S WITH DOT BELOW
+1E62 ; [.22B6.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER S WITH DOT BELOW
+1E69 ; [.22B6.0020.0002][.0000.0042.0002][.0000.002E.0002] # LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+1E68 ; [.22B6.0020.0008][.0000.0042.0002][.0000.002E.0002] # LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+0219 ; [.22B6.0020.0002][.0000.0045.0002] # LATIN SMALL LETTER S WITH COMMA BELOW
+0218 ; [.22B6.0020.0008][.0000.0045.0002] # LATIN CAPITAL LETTER S WITH COMMA BELOW
+017F ; [.22B6.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER LONG S
+1DE5 ; [.22B6.0020.0004][.0000.0119.0004] # COMBINING LATIN SMALL LETTER LONG S
+1E9B ; [.22B6.0020.0004][.0000.0119.0004][.0000.002E.0002] # LATIN SMALL LETTER LONG S WITH DOT ABOVE
+A785 ; [.22B6.0020.0004][.0000.011A.0004] # LATIN SMALL LETTER INSULAR S
+A784 ; [.22B6.0020.000A][.0000.011A.0004] # LATIN CAPITAL LETTER INSULAR S
+A7D9 ; [.22B6.0020.0004][.0000.011B.0004] # LATIN SMALL LETTER SIGMOID S
+A7D8 ; [.22B6.0020.000A][.0000.011B.0004] # LATIN CAPITAL LETTER SIGMOID S
+1F18D ; [.22B6.0020.001D][.2075.0020.001D] # NEGATIVE SQUARED SA
+1F14C ; [.22B6.0020.001D][.20BF.0020.001D] # SQUARED SD
+1F1AA ; [.22B6.0020.001D][.214C.0020.001D][.2331.0020.001D] # SQUARED SHV
+2120 ; [.22B6.0020.0014][.21E8.0020.0014] # SERVICE MARK
+1F198 ; [.22B6.0020.001D][.221D.0020.001D][.22B6.0020.001D] # SQUARED SOS
+33DB ; [.22B6.0020.001C][.2275.0020.001C] # SQUARE SR
+1F14D ; [.22B6.0020.001D][.22B6.0020.001D] # SQUARED SS
+00DF ; [.22B6.0020.0004][.0000.0118.0004][.22B6.0020.0004] # LATIN SMALL LETTER SHARP S
+1E9E ; [.22B6.0020.000A][.0000.0118.0004][.22B6.0020.000A] # LATIN CAPITAL LETTER SHARP S
+FB06 ; [.22B6.0020.0004][.22DF.0020.0004] # LATIN SMALL LIGATURE ST
+FB05 ; [.22B6.0020.0004][.0000.0119.0004][.22DF.0020.0004] # LATIN SMALL LIGATURE LONG S T
+33DC ; [.22B6.0020.001D][.2331.0020.001C] # SQUARE SV
+A731 ; [.22BA.0020.0002] # LATIN LETTER SMALL CAPITAL S
+A7CA ; [.22BB.0020.0002] # LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+A7C9 ; [.22BB.0020.0008] # LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+1D74 ; [.22BC.0020.0002] # LATIN SMALL LETTER S WITH MIDDLE TILDE
+1D8A ; [.22BD.0020.0002] # LATIN SMALL LETTER S WITH PALATAL HOOK
+0282 ; [.22BE.0020.0002] # LATIN SMALL LETTER S WITH HOOK
+A7C5 ; [.22BE.0020.0008] # LATIN CAPITAL LETTER S WITH HOOK
+1DB3 ; [.22BE.0020.0014] # MODIFIER LETTER SMALL S WITH HOOK
+1DF1E ; [.22C2.0020.0002] # LATIN SMALL LETTER S WITH CURL
+107BA ; [.22C2.0020.0014] # MODIFIER LETTER SMALL S WITH CURL
+023F ; [.22C3.0020.0002] # LATIN SMALL LETTER S WITH SWASH TAIL
+2C7E ; [.22C3.0020.0008] # LATIN CAPITAL LETTER S WITH SWASH TAIL
+A7D7 ; [.22C7.0020.0002] # LATIN SMALL LETTER MIDDLE SCOTS S
+A7D6 ; [.22C7.0020.0008] # LATIN CAPITAL LETTER MIDDLE SCOTS S
+1E9C ; [.22C8.0020.0002] # LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE
+1E9D ; [.22C9.0020.0002] # LATIN SMALL LETTER LONG S WITH HIGH STROKE
+0283 ; [.22CA.0020.0002] # LATIN SMALL LETTER ESH
+1DEF ; [.22CA.0020.0004] # COMBINING LATIN SMALL LETTER ESH
+01A9 ; [.22CA.0020.0008] # LATIN CAPITAL LETTER ESH
+1DB4 ; [.22CA.0020.0014] # MODIFIER LETTER SMALL ESH
+AB4D ; [.22CE.0020.0002] # LATIN SMALL LETTER BASELINE ESH
+1D8B ; [.22CF.0020.0002] # LATIN SMALL LETTER ESH WITH PALATAL HOOK
+1D98 ; [.22D0.0020.0002] # LATIN SMALL LETTER ESH WITH RETROFLEX HOOK
+01AA ; [.22D1.0020.0002] # LATIN LETTER REVERSED ESH LOOP
+0285 ; [.22D5.0020.0002] # LATIN SMALL LETTER SQUAT REVERSED ESH
+0286 ; [.22D9.0020.0002] # LATIN SMALL LETTER ESH WITH CURL
+1DF0B ; [.22DD.0020.0002] # LATIN SMALL LETTER ESH WITH DOUBLE BAR
+1DF0C ; [.22DE.0020.0002] # LATIN SMALL LETTER ESH WITH DOUBLE BAR AND CURL
+0074 ; [.22DF.0020.0002] # LATIN SMALL LETTER T
+FF54 ; [.22DF.0020.0003] # FULLWIDTH LATIN SMALL LETTER T
+036D ; [.22DF.0020.0004] # COMBINING LATIN SMALL LETTER T
+24AF ; [*0334.0020.0004][.22DF.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER T
+1D42D ; [.22DF.0020.0005] # MATHEMATICAL BOLD SMALL T
+1D461 ; [.22DF.0020.0005] # MATHEMATICAL ITALIC SMALL T
+1D495 ; [.22DF.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL T
+1D4C9 ; [.22DF.0020.0005] # MATHEMATICAL SCRIPT SMALL T
+1D4FD ; [.22DF.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL T
+1D531 ; [.22DF.0020.0005] # MATHEMATICAL FRAKTUR SMALL T
+1D565 ; [.22DF.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL T
+1D599 ; [.22DF.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL T
+1D5CD ; [.22DF.0020.0005] # MATHEMATICAL SANS-SERIF SMALL T
+1D601 ; [.22DF.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL T
+1D635 ; [.22DF.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL T
+1D669 ; [.22DF.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
+1D69D ; [.22DF.0020.0005] # MATHEMATICAL MONOSPACE SMALL T
+24E3 ; [.22DF.0020.0006] # CIRCLED LATIN SMALL LETTER T
+0054 ; [.22DF.0020.0008] # LATIN CAPITAL LETTER T
+FF34 ; [.22DF.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER T
+1F123 ; [*0334.0020.0004][.22DF.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER T
+1D413 ; [.22DF.0020.000B] # MATHEMATICAL BOLD CAPITAL T
+1D447 ; [.22DF.0020.000B] # MATHEMATICAL ITALIC CAPITAL T
+1D47B ; [.22DF.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL T
+1D4AF ; [.22DF.0020.000B] # MATHEMATICAL SCRIPT CAPITAL T
+1D4E3 ; [.22DF.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL T
+1D517 ; [.22DF.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL T
+1D54B ; [.22DF.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+1D57F ; [.22DF.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL T
+1D5B3 ; [.22DF.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL T
+1D5E7 ; [.22DF.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+1D61B ; [.22DF.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+1D64F ; [.22DF.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+1D683 ; [.22DF.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL T
+24C9 ; [.22DF.0020.000C] # CIRCLED LATIN CAPITAL LETTER T
+1F163 ; [.22DF.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER T
+1D57 ; [.22DF.0020.0014] # MODIFIER LETTER SMALL T
+209C ; [.22DF.0020.0015] # LATIN SUBSCRIPT SMALL LETTER T
+1D40 ; [.22DF.0020.001D] # MODIFIER LETTER CAPITAL T
+1F143 ; [.22DF.0020.001D] # SQUARED LATIN CAPITAL LETTER T
+1F183 ; [.22DF.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER T
+0165 ; [.22DF.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER T WITH CARON
+0164 ; [.22DF.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER T WITH CARON
+1E97 ; [.22DF.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER T WITH DIAERESIS
+1E6B ; [.22DF.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER T WITH DOT ABOVE
+1E6A ; [.22DF.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER T WITH DOT ABOVE
+0163 ; [.22DF.0020.0002][.0000.0030.0002] # LATIN SMALL LETTER T WITH CEDILLA
+0162 ; [.22DF.0020.0008][.0000.0030.0002] # LATIN CAPITAL LETTER T WITH CEDILLA
+1E6D ; [.22DF.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER T WITH DOT BELOW
+1E6C ; [.22DF.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER T WITH DOT BELOW
+021B ; [.22DF.0020.0002][.0000.0045.0002] # LATIN SMALL LETTER T WITH COMMA BELOW
+021A ; [.22DF.0020.0008][.0000.0045.0002] # LATIN CAPITAL LETTER T WITH COMMA BELOW
+1E71 ; [.22DF.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+1E70 ; [.22DF.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+1E6F ; [.22DF.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER T WITH LINE BELOW
+1E6E ; [.22DF.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER T WITH LINE BELOW
+1ACE ; [.22DF.0020.0004][.0000.0119.0004] # COMBINING LATIN SMALL LETTER INSULAR T
+A787 ; [.22DF.0020.0004][.0000.0119.0004] # LATIN SMALL LETTER INSULAR T
+A786 ; [.22DF.0020.000A][.0000.0119.0004] # LATIN CAPITAL LETTER INSULAR T
+02A8 ; [.22DF.0020.0004][.20B9.0020.0004] # LATIN SMALL LETTER TC DIGRAPH WITH CURL
+107AB ; [.22DF.0020.0014][.20B9.0020.0014] # MODIFIER LETTER SMALL TC DIGRAPH WITH CURL
+2121 ; [.22DF.0020.000A][.20DB.0020.000A][.21B0.0020.000A] # TELEPHONE SIGN
+1D7A ; [.22DF.0020.0004][.0000.0118.0004][.214C.0020.0004] # LATIN SMALL LETTER TH WITH STRIKETHROUGH
+3394 ; [.22DF.0020.001D][.214C.0020.001D][.236F.0020.001C] # SQUARE THZ
+2122 ; [.22DF.0020.0014][.21E8.0020.0014] # TRADE MARK SIGN
+01BE ; [.22DF.0020.0004][.22B6.0020.0004] # LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE
+02A6 ; [.22DF.0020.0004][.22B6.0020.0004] # LATIN SMALL LETTER TS DIGRAPH
+107AC ; [.22DF.0020.0014][.22B6.0020.0014] # MODIFIER LETTER SMALL TS DIGRAPH
+AB67 ; [.22DF.0020.0004][.22BE.0020.0004] # LATIN SMALL LETTER TS DIGRAPH WITH RETROFLEX HOOK
+107AD ; [.22DF.0020.0014][.22BE.0020.0014] # MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK
+02A7 ; [.22DF.0020.0004][.22CA.0020.0004] # LATIN SMALL LETTER TESH DIGRAPH
+107AE ; [.22DF.0020.0014][.22CA.0020.0014] # MODIFIER LETTER SMALL TESH DIGRAPH
+1DF17 ; [.22DF.0020.0004][.22CF.0020.0004] # LATIN SMALL LETTER TESH DIGRAPH WITH PALATAL HOOK
+1DF1C ; [.22DF.0020.0004][.22D0.0020.0004] # LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK
+A729 ; [.22DF.0020.0004][.236F.0020.0004] # LATIN SMALL LETTER TZ
+A728 ; [.22DF.0020.000A][.236F.0020.0004] # LATIN CAPITAL LETTER TZ
+1D1B ; [.22E3.0020.0002] # LATIN LETTER SMALL CAPITAL T
+0167 ; [.22E4.0020.0002] # LATIN SMALL LETTER T WITH STROKE
+0166 ; [.22E4.0020.0008] # LATIN CAPITAL LETTER T WITH STROKE
+2C66 ; [.22E8.0020.0002] # LATIN SMALL LETTER T WITH DIAGONAL STROKE
+023E ; [.22E8.0020.0008] # LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+1D75 ; [.22E9.0020.0002] # LATIN SMALL LETTER T WITH MIDDLE TILDE
+01AB ; [.22EA.0020.0002] # LATIN SMALL LETTER T WITH PALATAL HOOK
+1DB5 ; [.22EA.0020.0014] # MODIFIER LETTER SMALL T WITH PALATAL HOOK
+01AD ; [.22EE.0020.0002] # LATIN SMALL LETTER T WITH HOOK
+01AC ; [.22EE.0020.0008] # LATIN CAPITAL LETTER T WITH HOOK
+0288 ; [.22F2.0020.0002] # LATIN SMALL LETTER T WITH RETROFLEX HOOK
+01AE ; [.22F2.0020.0008] # LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+107AF ; [.22F2.0020.0014] # MODIFIER LETTER SMALL T WITH RETROFLEX HOOK
+1DF09 ; [.22F6.0020.0002] # LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+0236 ; [.22F7.0020.0002] # LATIN SMALL LETTER T WITH CURL
+A777 ; [.22FB.0020.0002] # LATIN SMALL LETTER TUM
+0287 ; [.22FC.0020.0002] # LATIN SMALL LETTER TURNED T
+A7B1 ; [.22FC.0020.0008] # LATIN CAPITAL LETTER TURNED T
+1DF0D ; [.2300.0020.0002] # LATIN SMALL LETTER TURNED T WITH CURL
+0075 ; [.2301.0020.0002] # LATIN SMALL LETTER U
+FF55 ; [.2301.0020.0003] # FULLWIDTH LATIN SMALL LETTER U
+0367 ; [.2301.0020.0004] # COMBINING LATIN SMALL LETTER U
+24B0 ; [*0334.0020.0004][.2301.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER U
+1D42E ; [.2301.0020.0005] # MATHEMATICAL BOLD SMALL U
+1D462 ; [.2301.0020.0005] # MATHEMATICAL ITALIC SMALL U
+1D496 ; [.2301.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL U
+1D4CA ; [.2301.0020.0005] # MATHEMATICAL SCRIPT SMALL U
+1D4FE ; [.2301.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL U
+1D532 ; [.2301.0020.0005] # MATHEMATICAL FRAKTUR SMALL U
+1D566 ; [.2301.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL U
+1D59A ; [.2301.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL U
+1D5CE ; [.2301.0020.0005] # MATHEMATICAL SANS-SERIF SMALL U
+1D602 ; [.2301.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL U
+1D636 ; [.2301.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL U
+1D66A ; [.2301.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
+1D69E ; [.2301.0020.0005] # MATHEMATICAL MONOSPACE SMALL U
+24E4 ; [.2301.0020.0006] # CIRCLED LATIN SMALL LETTER U
+0055 ; [.2301.0020.0008] # LATIN CAPITAL LETTER U
+FF35 ; [.2301.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER U
+1F124 ; [*0334.0020.0004][.2301.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER U
+1D414 ; [.2301.0020.000B] # MATHEMATICAL BOLD CAPITAL U
+1D448 ; [.2301.0020.000B] # MATHEMATICAL ITALIC CAPITAL U
+1D47C ; [.2301.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL U
+1D4B0 ; [.2301.0020.000B] # MATHEMATICAL SCRIPT CAPITAL U
+1D4E4 ; [.2301.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL U
+1D518 ; [.2301.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL U
+1D54C ; [.2301.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+1D580 ; [.2301.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL U
+1D5B4 ; [.2301.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL U
+1D5E8 ; [.2301.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+1D61C ; [.2301.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+1D650 ; [.2301.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+1D684 ; [.2301.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL U
+24CA ; [.2301.0020.000C] # CIRCLED LATIN CAPITAL LETTER U
+1F164 ; [.2301.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER U
+1D58 ; [.2301.0020.0014] # MODIFIER LETTER SMALL U
+1D64 ; [.2301.0020.0015] # LATIN SUBSCRIPT SMALL LETTER U
+1D41 ; [.2301.0020.001D] # MODIFIER LETTER CAPITAL U
+1F144 ; [.2301.0020.001D] # SQUARED LATIN CAPITAL LETTER U
+1F184 ; [.2301.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER U
+00FA ; [.2301.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.2301.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH ACUTE
+00F9 ; [.2301.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH GRAVE
+00D9 ; [.2301.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH GRAVE
+016D ; [.2301.0020.0002][.0000.0026.0002] # LATIN SMALL LETTER U WITH BREVE
+016C ; [.2301.0020.0008][.0000.0026.0002] # LATIN CAPITAL LETTER U WITH BREVE
+00FB ; [.2301.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER U WITH CIRCUMFLEX
+00DB ; [.2301.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+01D4 ; [.2301.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH CARON
+01D3 ; [.2301.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH CARON
+016F ; [.2301.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER U WITH RING ABOVE
+016E ; [.2301.0020.0008][.0000.0029.0002] # LATIN CAPITAL LETTER U WITH RING ABOVE
+00FC ; [.2301.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER U WITH DIAERESIS
+1DF4 ; [.2301.0020.0004][.0000.002B.0004] # COMBINING LATIN SMALL LETTER U WITH DIAERESIS
+A79F ; [.2301.0020.0004][.0000.002B.0004] # LATIN SMALL LETTER VOLAPUK UE
+00DC ; [.2301.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS
+A79E ; [.2301.0020.000A][.0000.002B.0004] # LATIN CAPITAL LETTER VOLAPUK UE
+01D8 ; [.2301.0020.0002][.0000.002B.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.2301.0020.0008][.0000.002B.0002][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01DC ; [.2301.0020.0002][.0000.002B.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.2301.0020.0008][.0000.002B.0002][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01DA ; [.2301.0020.0002][.0000.002B.0002][.0000.0028.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.2301.0020.0008][.0000.002B.0002][.0000.0028.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+01D6 ; [.2301.0020.0002][.0000.002B.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.2301.0020.0008][.0000.002B.0002][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+0171 ; [.2301.0020.0002][.0000.002C.0002] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.2301.0020.0008][.0000.002C.0002] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0169 ; [.2301.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER U WITH TILDE
+0168 ; [.2301.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER U WITH TILDE
+1E79 ; [.2301.0020.0002][.0000.002D.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH TILDE AND ACUTE
+1E78 ; [.2301.0020.0008][.0000.002D.0002][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+0173 ; [.2301.0020.0002][.0000.0031.0002] # LATIN SMALL LETTER U WITH OGONEK
+0172 ; [.2301.0020.0008][.0000.0031.0002] # LATIN CAPITAL LETTER U WITH OGONEK
+016B ; [.2301.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.2301.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER U WITH MACRON
+1E7B ; [.2301.0020.0002][.0000.0032.0002][.0000.002B.0002] # LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+1E7A ; [.2301.0020.0008][.0000.0032.0002][.0000.002B.0002] # LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+1DF0 ; [.2301.0020.0004][.0000.0034.0004] # COMBINING LATIN SMALL LETTER U WITH LIGHT CENTRALIZATION STROKE
+1EE7 ; [.2301.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE6 ; [.2301.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+0215 ; [.2301.0020.0002][.0000.003C.0002] # LATIN SMALL LETTER U WITH DOUBLE GRAVE
+0214 ; [.2301.0020.0008][.0000.003C.0002] # LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+0217 ; [.2301.0020.0002][.0000.003E.0002] # LATIN SMALL LETTER U WITH INVERTED BREVE
+0216 ; [.2301.0020.0008][.0000.003E.0002] # LATIN CAPITAL LETTER U WITH INVERTED BREVE
+01B0 ; [.2301.0020.0002][.0000.003F.0002] # LATIN SMALL LETTER U WITH HORN
+01AF ; [.2301.0020.0008][.0000.003F.0002] # LATIN CAPITAL LETTER U WITH HORN
+1EE9 ; [.2301.0020.0002][.0000.003F.0002][.0000.0024.0002] # LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EE8 ; [.2301.0020.0008][.0000.003F.0002][.0000.0024.0002] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EEB ; [.2301.0020.0002][.0000.003F.0002][.0000.0025.0002] # LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEA ; [.2301.0020.0008][.0000.003F.0002][.0000.0025.0002] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EEF ; [.2301.0020.0002][.0000.003F.0002][.0000.002D.0002] # LATIN SMALL LETTER U WITH HORN AND TILDE
+1EEE ; [.2301.0020.0008][.0000.003F.0002][.0000.002D.0002] # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EED ; [.2301.0020.0002][.0000.003F.0002][.0000.003B.0002] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EEC ; [.2301.0020.0008][.0000.003F.0002][.0000.003B.0002] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EF1 ; [.2301.0020.0002][.0000.003F.0002][.0000.0042.0002] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+1EF0 ; [.2301.0020.0008][.0000.003F.0002][.0000.0042.0002] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EE5 ; [.2301.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER U WITH DOT BELOW
+1EE4 ; [.2301.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER U WITH DOT BELOW
+1E73 ; [.2301.0020.0002][.0000.0043.0002] # LATIN SMALL LETTER U WITH DIAERESIS BELOW
+1E72 ; [.2301.0020.0008][.0000.0043.0002] # LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+1E77 ; [.2301.0020.0002][.0000.0046.0002] # LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+1E76 ; [.2301.0020.0008][.0000.0046.0002] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+1E75 ; [.2301.0020.0002][.0000.0048.0002] # LATIN SMALL LETTER U WITH TILDE BELOW
+1E74 ; [.2301.0020.0008][.0000.0048.0002] # LATIN CAPITAL LETTER U WITH TILDE BELOW
+1F1AB ; [.2301.0020.001D][.214C.0020.001D][.20BF.0020.001D] # SQUARED UHD
+1F199 ; [.2301.0020.001D][.224D.0020.001D][*0268.0020.001C] # SQUARED UP WITH EXCLAMATION MARK
+1D1C ; [.2305.0020.0002] # LATIN LETTER SMALL CAPITAL U
+1DB8 ; [.2305.0020.0014] # MODIFIER LETTER SMALL CAPITAL U
+AB4E ; [.2306.0020.0002] # LATIN SMALL LETTER U WITH SHORT RIGHT LEG
+1D1D ; [.2307.0020.0002] # LATIN SMALL LETTER SIDEWAYS U
+1D59 ; [.2307.0020.0014] # MODIFIER LETTER SMALL SIDEWAYS U
+1D1E ; [.2308.0020.0002] # LATIN SMALL LETTER SIDEWAYS DIAERESIZED U
+1D6B ; [.2309.0020.0002] # LATIN SMALL LETTER UE
+AB50 ; [.230A.0020.0002] # LATIN SMALL LETTER UI
+AB51 ; [.230B.0020.0002] # LATIN SMALL LETTER TURNED UI
+0289 ; [.230C.0020.0002] # LATIN SMALL LETTER U BAR
+0244 ; [.230C.0020.0008] # LATIN CAPITAL LETTER U BAR
+1DB6 ; [.230C.0020.0014] # MODIFIER LETTER SMALL U BAR
+AB4F ; [.2310.0020.0002] # LATIN SMALL LETTER U BAR WITH SHORT RIGHT LEG
+A7B9 ; [.2311.0020.0002] # LATIN SMALL LETTER U WITH STROKE
+A7B8 ; [.2311.0020.0008] # LATIN CAPITAL LETTER U WITH STROKE
+1D7E ; [.2312.0020.0002] # LATIN SMALL CAPITAL LETTER U WITH STROKE
+1D99 ; [.2313.0020.0002] # LATIN SMALL LETTER U WITH RETROFLEX HOOK
+AB52 ; [.2314.0020.0002] # LATIN SMALL LETTER U WITH LEFT HOOK
+AB5F ; [.2314.0020.0014] # MODIFIER LETTER SMALL U WITH LEFT HOOK
+A7BF ; [.2315.0020.0002] # LATIN SMALL LETTER GLOTTAL U
+A7BE ; [.2315.0020.0008] # LATIN CAPITAL LETTER GLOTTAL U
+0265 ; [.2316.0020.0002] # LATIN SMALL LETTER TURNED H
+A78D ; [.2316.0020.0008] # LATIN CAPITAL LETTER TURNED H
+1DA3 ; [.2316.0020.0014] # MODIFIER LETTER SMALL TURNED H
+02AE ; [.231A.0020.0002] # LATIN SMALL LETTER TURNED H WITH FISHHOOK
+02AF ; [.231E.0020.0002] # LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+026F ; [.2322.0020.0002] # LATIN SMALL LETTER TURNED M
+019C ; [.2322.0020.0008] # LATIN CAPITAL LETTER TURNED M
+1D5A ; [.2322.0020.0014] # MODIFIER LETTER SMALL TURNED M
+A7FA ; [.2326.0020.0002] # LATIN LETTER SMALL CAPITAL TURNED M
+1D1F ; [.2327.0020.0002] # LATIN SMALL LETTER SIDEWAYS TURNED M
+0270 ; [.2328.0020.0002] # LATIN SMALL LETTER TURNED M WITH LONG LEG
+1DAD ; [.2328.0020.0014] # MODIFIER LETTER SMALL TURNED M WITH LONG LEG
+028A ; [.232C.0020.0002] # LATIN SMALL LETTER UPSILON
+01B1 ; [.232C.0020.0008] # LATIN CAPITAL LETTER UPSILON
+1DB7 ; [.232C.0020.0014] # MODIFIER LETTER SMALL UPSILON
+1D7F ; [.2330.0020.0002] # LATIN SMALL LETTER UPSILON WITH STROKE
+0076 ; [.2331.0020.0002] # LATIN SMALL LETTER V
+FF56 ; [.2331.0020.0003] # FULLWIDTH LATIN SMALL LETTER V
+036E ; [.2331.0020.0004] # COMBINING LATIN SMALL LETTER V
+2174 ; [.2331.0020.0004] # SMALL ROMAN NUMERAL FIVE
+24B1 ; [*0334.0020.0004][.2331.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER V
+1D42F ; [.2331.0020.0005] # MATHEMATICAL BOLD SMALL V
+1D463 ; [.2331.0020.0005] # MATHEMATICAL ITALIC SMALL V
+1D497 ; [.2331.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL V
+1D4CB ; [.2331.0020.0005] # MATHEMATICAL SCRIPT SMALL V
+1D4FF ; [.2331.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL V
+1D533 ; [.2331.0020.0005] # MATHEMATICAL FRAKTUR SMALL V
+1D567 ; [.2331.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL V
+1D59B ; [.2331.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL V
+1D5CF ; [.2331.0020.0005] # MATHEMATICAL SANS-SERIF SMALL V
+1D603 ; [.2331.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL V
+1D637 ; [.2331.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL V
+1D66B ; [.2331.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
+1D69F ; [.2331.0020.0005] # MATHEMATICAL MONOSPACE SMALL V
+24E5 ; [.2331.0020.0006] # CIRCLED LATIN SMALL LETTER V
+0056 ; [.2331.0020.0008] # LATIN CAPITAL LETTER V
+FF36 ; [.2331.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER V
+2164 ; [.2331.0020.000A] # ROMAN NUMERAL FIVE
+1F125 ; [*0334.0020.0004][.2331.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER V
+1D415 ; [.2331.0020.000B] # MATHEMATICAL BOLD CAPITAL V
+1D449 ; [.2331.0020.000B] # MATHEMATICAL ITALIC CAPITAL V
+1D47D ; [.2331.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL V
+1D4B1 ; [.2331.0020.000B] # MATHEMATICAL SCRIPT CAPITAL V
+1D4E5 ; [.2331.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL V
+1D519 ; [.2331.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL V
+1D54D ; [.2331.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+1D581 ; [.2331.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL V
+1D5B5 ; [.2331.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL V
+1D5E9 ; [.2331.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+1D61D ; [.2331.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+1D651 ; [.2331.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+1D685 ; [.2331.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL V
+24CB ; [.2331.0020.000C] # CIRCLED LATIN CAPITAL LETTER V
+1F165 ; [.2331.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER V
+1D5B ; [.2331.0020.0014] # MODIFIER LETTER SMALL V
+1D65 ; [.2331.0020.0015] # LATIN SUBSCRIPT SMALL LETTER V
+2C7D ; [.2331.0020.001D] # MODIFIER LETTER CAPITAL V
+1F145 ; [.2331.0020.001D] # SQUARED LATIN CAPITAL LETTER V
+1F185 ; [.2331.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER V
+1E7D ; [.2331.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER V WITH TILDE
+1E7C ; [.2331.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER V WITH TILDE
+1E7F ; [.2331.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER V WITH DOT BELOW
+1E7E ; [.2331.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER V WITH DOT BELOW
+2175 ; [.2331.0020.0004][.2167.0020.0004] # SMALL ROMAN NUMERAL SIX
+2165 ; [.2331.0020.000A][.2167.0020.000A] # ROMAN NUMERAL SIX
+2176 ; [.2331.0020.0004][.2167.0020.0004][.2167.0020.0004] # SMALL ROMAN NUMERAL SEVEN
+2166 ; [.2331.0020.000A][.2167.0020.000A][.2167.0020.000A] # ROMAN NUMERAL SEVEN
+2177 ; [.2331.0020.0004][.2167.0020.0004][.2167.0020.0004][.2167.0020.0004] # SMALL ROMAN NUMERAL EIGHT
+2167 ; [.2331.0020.000A][.2167.0020.000A][.2167.0020.000A][.2167.0020.000A] # ROMAN NUMERAL EIGHT
+33DE ; [.2331.0020.001D][*06AC.0020.001C][.21E8.0020.001C] # SQUARE V OVER M
+1F1AC ; [.2331.0020.001D][.221D.0020.001D][.20BF.0020.001D] # SQUARED VOD
+1F19A ; [.2331.0020.001D][.22B6.0020.001D] # SQUARED VS
+A761 ; [.2331.0020.0004][.2359.0020.0004] # LATIN SMALL LETTER VY
+A760 ; [.2331.0020.000A][.2359.0020.000A] # LATIN CAPITAL LETTER VY
+1D20 ; [.2335.0020.0002] # LATIN LETTER SMALL CAPITAL V
+A75F ; [.2336.0020.0002] # LATIN SMALL LETTER V WITH DIAGONAL STROKE
+A75E ; [.2336.0020.0008] # LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+1D8C ; [.2337.0020.0002] # LATIN SMALL LETTER V WITH PALATAL HOOK
+028B ; [.2338.0020.0002] # LATIN SMALL LETTER V WITH HOOK
+01B2 ; [.2338.0020.0008] # LATIN CAPITAL LETTER V WITH HOOK
+1DB9 ; [.2338.0020.0014] # MODIFIER LETTER SMALL V WITH HOOK
+2C71 ; [.233C.0020.0002] # LATIN SMALL LETTER V WITH RIGHT HOOK
+107B0 ; [.233C.0020.0014] # MODIFIER LETTER SMALL V WITH RIGHT HOOK
+2C74 ; [.233D.0020.0002] # LATIN SMALL LETTER V WITH CURL
+1EFD ; [.233E.0020.0002] # LATIN SMALL LETTER MIDDLE-WELSH V
+1EFC ; [.233E.0020.0008] # LATIN CAPITAL LETTER MIDDLE-WELSH V
+028C ; [.233F.0020.0002] # LATIN SMALL LETTER TURNED V
+0245 ; [.233F.0020.0008] # LATIN CAPITAL LETTER TURNED V
+1DBA ; [.233F.0020.0014] # MODIFIER LETTER SMALL TURNED V
+0077 ; [.2343.0020.0002] # LATIN SMALL LETTER W
+FF57 ; [.2343.0020.0003] # FULLWIDTH LATIN SMALL LETTER W
+1ABF ; [.2343.0020.0004] # COMBINING LATIN SMALL LETTER W BELOW
+1DF1 ; [.2343.0020.0004] # COMBINING LATIN SMALL LETTER W
+24B2 ; [*0334.0020.0004][.2343.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER W
+1D430 ; [.2343.0020.0005] # MATHEMATICAL BOLD SMALL W
+1D464 ; [.2343.0020.0005] # MATHEMATICAL ITALIC SMALL W
+1D498 ; [.2343.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL W
+1D4CC ; [.2343.0020.0005] # MATHEMATICAL SCRIPT SMALL W
+1D500 ; [.2343.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL W
+1D534 ; [.2343.0020.0005] # MATHEMATICAL FRAKTUR SMALL W
+1D568 ; [.2343.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL W
+1D59C ; [.2343.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL W
+1D5D0 ; [.2343.0020.0005] # MATHEMATICAL SANS-SERIF SMALL W
+1D604 ; [.2343.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL W
+1D638 ; [.2343.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL W
+1D66C ; [.2343.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
+1D6A0 ; [.2343.0020.0005] # MATHEMATICAL MONOSPACE SMALL W
+24E6 ; [.2343.0020.0006] # CIRCLED LATIN SMALL LETTER W
+0057 ; [.2343.0020.0008] # LATIN CAPITAL LETTER W
+FF37 ; [.2343.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER W
+1F126 ; [*0334.0020.0004][.2343.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER W
+1D416 ; [.2343.0020.000B] # MATHEMATICAL BOLD CAPITAL W
+1D44A ; [.2343.0020.000B] # MATHEMATICAL ITALIC CAPITAL W
+1D47E ; [.2343.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL W
+1D4B2 ; [.2343.0020.000B] # MATHEMATICAL SCRIPT CAPITAL W
+1D4E6 ; [.2343.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL W
+1D51A ; [.2343.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL W
+1D54E ; [.2343.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+1D582 ; [.2343.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL W
+1D5B6 ; [.2343.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL W
+1D5EA ; [.2343.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+1D61E ; [.2343.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+1D652 ; [.2343.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+1D686 ; [.2343.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL W
+24CC ; [.2343.0020.000C] # CIRCLED LATIN CAPITAL LETTER W
+1F166 ; [.2343.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER W
+02B7 ; [.2343.0020.0014] # MODIFIER LETTER SMALL W
+1D42 ; [.2343.0020.001D] # MODIFIER LETTER CAPITAL W
+1F146 ; [.2343.0020.001D] # SQUARED LATIN CAPITAL LETTER W
+1F186 ; [.2343.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER W
+1E83 ; [.2343.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER W WITH ACUTE
+1E82 ; [.2343.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER W WITH ACUTE
+1E81 ; [.2343.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER W WITH GRAVE
+1E80 ; [.2343.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER W WITH GRAVE
+0175 ; [.2343.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER W WITH CIRCUMFLEX
+0174 ; [.2343.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+1E98 ; [.2343.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER W WITH RING ABOVE
+1E85 ; [.2343.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER W WITH DIAERESIS
+1E84 ; [.2343.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER W WITH DIAERESIS
+1E87 ; [.2343.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER W WITH DOT ABOVE
+1E86 ; [.2343.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER W WITH DOT ABOVE
+1E89 ; [.2343.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER W WITH DOT BELOW
+1E88 ; [.2343.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER W WITH DOT BELOW
+A7C3 ; [.2343.0020.0004][.0000.0118.0004] # LATIN SMALL LETTER ANGLICANA W
+A7C2 ; [.2343.0020.000A][.0000.0118.0004] # LATIN CAPITAL LETTER ANGLICANA W
+33DD ; [.2343.0020.001D][.208F.0020.001C] # SQUARE WB
+1F14F ; [.2343.0020.001D][.20A9.0020.001D] # SQUARED WC
+1F18F ; [.2343.0020.001D][.20A9.0020.001D] # NEGATIVE SQUARED WC
+1F12E ; [.2343.0020.000C][.236F.0020.000C] # CIRCLED WZ
+1D21 ; [.2347.0020.0002] # LATIN LETTER SMALL CAPITAL W
+2C73 ; [.2348.0020.0002] # LATIN SMALL LETTER W WITH HOOK
+2C72 ; [.2348.0020.0008] # LATIN CAPITAL LETTER W WITH HOOK
+028D ; [.2349.0020.0002] # LATIN SMALL LETTER TURNED W
+1AC0 ; [.2349.0020.0004] # COMBINING LATIN SMALL LETTER TURNED W BELOW
+AB69 ; [.2349.0020.0014] # MODIFIER LETTER SMALL TURNED W
+0078 ; [.234D.0020.0002] # LATIN SMALL LETTER X
+FF58 ; [.234D.0020.0003] # FULLWIDTH LATIN SMALL LETTER X
+036F ; [.234D.0020.0004] # COMBINING LATIN SMALL LETTER X
+2179 ; [.234D.0020.0004] # SMALL ROMAN NUMERAL TEN
+24B3 ; [*0334.0020.0004][.234D.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER X
+1D431 ; [.234D.0020.0005] # MATHEMATICAL BOLD SMALL X
+1D465 ; [.234D.0020.0005] # MATHEMATICAL ITALIC SMALL X
+1D499 ; [.234D.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL X
+1D4CD ; [.234D.0020.0005] # MATHEMATICAL SCRIPT SMALL X
+1D501 ; [.234D.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL X
+1D535 ; [.234D.0020.0005] # MATHEMATICAL FRAKTUR SMALL X
+1D569 ; [.234D.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL X
+1D59D ; [.234D.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL X
+1D5D1 ; [.234D.0020.0005] # MATHEMATICAL SANS-SERIF SMALL X
+1D605 ; [.234D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL X
+1D639 ; [.234D.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL X
+1D66D ; [.234D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
+1D6A1 ; [.234D.0020.0005] # MATHEMATICAL MONOSPACE SMALL X
+24E7 ; [.234D.0020.0006] # CIRCLED LATIN SMALL LETTER X
+0058 ; [.234D.0020.0008] # LATIN CAPITAL LETTER X
+FF38 ; [.234D.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER X
+2169 ; [.234D.0020.000A] # ROMAN NUMERAL TEN
+1F127 ; [*0334.0020.0004][.234D.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER X
+1D417 ; [.234D.0020.000B] # MATHEMATICAL BOLD CAPITAL X
+1D44B ; [.234D.0020.000B] # MATHEMATICAL ITALIC CAPITAL X
+1D47F ; [.234D.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL X
+1D4B3 ; [.234D.0020.000B] # MATHEMATICAL SCRIPT CAPITAL X
+1D4E7 ; [.234D.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL X
+1D51B ; [.234D.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL X
+1D54F ; [.234D.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+1D583 ; [.234D.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL X
+1D5B7 ; [.234D.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL X
+1D5EB ; [.234D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+1D61F ; [.234D.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+1D653 ; [.234D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+1D687 ; [.234D.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL X
+24CD ; [.234D.0020.000C] # CIRCLED LATIN CAPITAL LETTER X
+1F167 ; [.234D.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER X
+02E3 ; [.234D.0020.0014] # MODIFIER LETTER SMALL X
+2093 ; [.234D.0020.0015] # LATIN SUBSCRIPT SMALL LETTER X
+1F147 ; [.234D.0020.001D] # SQUARED LATIN CAPITAL LETTER X
+1F187 ; [.234D.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER X
+1E8D ; [.234D.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER X WITH DIAERESIS
+1E8C ; [.234D.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER X WITH DIAERESIS
+1E8B ; [.234D.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER X WITH DOT ABOVE
+1E8A ; [.234D.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER X WITH DOT ABOVE
+217A ; [.234D.0020.0004][.2167.0020.0004] # SMALL ROMAN NUMERAL ELEVEN
+216A ; [.234D.0020.000A][.2167.0020.000A] # ROMAN NUMERAL ELEVEN
+217B ; [.234D.0020.0004][.2167.0020.0004][.2167.0020.0004] # SMALL ROMAN NUMERAL TWELVE
+216B ; [.234D.0020.000A][.2167.0020.000A][.2167.0020.000A] # ROMAN NUMERAL TWELVE
+1D8D ; [.2351.0020.0002] # LATIN SMALL LETTER X WITH PALATAL HOOK
+AB56 ; [.2352.0020.0002] # LATIN SMALL LETTER X WITH LOW RIGHT RING
+AB57 ; [.2353.0020.0002] # LATIN SMALL LETTER X WITH LONG LEFT LEG
+AB58 ; [.2354.0020.0002] # LATIN SMALL LETTER X WITH LONG LEFT LEG AND LOW RIGHT RING
+AB59 ; [.2355.0020.0002] # LATIN SMALL LETTER X WITH LONG LEFT LEG WITH SERIF
+AB53 ; [.2356.0020.0002] # LATIN SMALL LETTER CHI
+A7B3 ; [.2356.0020.0008] # LATIN CAPITAL LETTER CHI
+AB54 ; [.2357.0020.0002] # LATIN SMALL LETTER CHI WITH LOW RIGHT RING
+AB55 ; [.2358.0020.0002] # LATIN SMALL LETTER CHI WITH LOW LEFT SERIF
+0079 ; [.2359.0020.0002] # LATIN SMALL LETTER Y
+FF59 ; [.2359.0020.0003] # FULLWIDTH LATIN SMALL LETTER Y
+24B4 ; [*0334.0020.0004][.2359.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER Y
+1D432 ; [.2359.0020.0005] # MATHEMATICAL BOLD SMALL Y
+1D466 ; [.2359.0020.0005] # MATHEMATICAL ITALIC SMALL Y
+1D49A ; [.2359.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL Y
+1D4CE ; [.2359.0020.0005] # MATHEMATICAL SCRIPT SMALL Y
+1D502 ; [.2359.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL Y
+1D536 ; [.2359.0020.0005] # MATHEMATICAL FRAKTUR SMALL Y
+1D56A ; [.2359.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL Y
+1D59E ; [.2359.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL Y
+1D5D2 ; [.2359.0020.0005] # MATHEMATICAL SANS-SERIF SMALL Y
+1D606 ; [.2359.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL Y
+1D63A ; [.2359.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL Y
+1D66E ; [.2359.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
+1D6A2 ; [.2359.0020.0005] # MATHEMATICAL MONOSPACE SMALL Y
+24E8 ; [.2359.0020.0006] # CIRCLED LATIN SMALL LETTER Y
+0059 ; [.2359.0020.0008] # LATIN CAPITAL LETTER Y
+FF39 ; [.2359.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER Y
+1F128 ; [*0334.0020.0004][.2359.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER Y
+1D418 ; [.2359.0020.000B] # MATHEMATICAL BOLD CAPITAL Y
+1D44C ; [.2359.0020.000B] # MATHEMATICAL ITALIC CAPITAL Y
+1D480 ; [.2359.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL Y
+1D4B4 ; [.2359.0020.000B] # MATHEMATICAL SCRIPT CAPITAL Y
+1D4E8 ; [.2359.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL Y
+1D51C ; [.2359.0020.000B] # MATHEMATICAL FRAKTUR CAPITAL Y
+1D550 ; [.2359.0020.000B] # MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D584 ; [.2359.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+1D5B8 ; [.2359.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL Y
+1D5EC ; [.2359.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+1D620 ; [.2359.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+1D654 ; [.2359.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+1D688 ; [.2359.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL Y
+24CE ; [.2359.0020.000C] # CIRCLED LATIN CAPITAL LETTER Y
+1F168 ; [.2359.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Y
+02B8 ; [.2359.0020.0014] # MODIFIER LETTER SMALL Y
+1F148 ; [.2359.0020.001D] # SQUARED LATIN CAPITAL LETTER Y
+1F188 ; [.2359.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER Y
+00FD ; [.2359.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER Y WITH ACUTE
+00DD ; [.2359.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER Y WITH ACUTE
+1EF3 ; [.2359.0020.0002][.0000.0025.0002] # LATIN SMALL LETTER Y WITH GRAVE
+1EF2 ; [.2359.0020.0008][.0000.0025.0002] # LATIN CAPITAL LETTER Y WITH GRAVE
+0177 ; [.2359.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0176 ; [.2359.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+1E99 ; [.2359.0020.0002][.0000.0029.0002] # LATIN SMALL LETTER Y WITH RING ABOVE
+00FF ; [.2359.0020.0002][.0000.002B.0002] # LATIN SMALL LETTER Y WITH DIAERESIS
+0178 ; [.2359.0020.0008][.0000.002B.0002] # LATIN CAPITAL LETTER Y WITH DIAERESIS
+1EF9 ; [.2359.0020.0002][.0000.002D.0002] # LATIN SMALL LETTER Y WITH TILDE
+1EF8 ; [.2359.0020.0008][.0000.002D.0002] # LATIN CAPITAL LETTER Y WITH TILDE
+1E8F ; [.2359.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER Y WITH DOT ABOVE
+1E8E ; [.2359.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER Y WITH DOT ABOVE
+0233 ; [.2359.0020.0002][.0000.0032.0002] # LATIN SMALL LETTER Y WITH MACRON
+0232 ; [.2359.0020.0008][.0000.0032.0002] # LATIN CAPITAL LETTER Y WITH MACRON
+1EF7 ; [.2359.0020.0002][.0000.003B.0002] # LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF6 ; [.2359.0020.0008][.0000.003B.0002] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+1EF5 ; [.2359.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER Y WITH DOT BELOW
+1EF4 ; [.2359.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER Y WITH DOT BELOW
+028F ; [.235D.0020.0002] # LATIN LETTER SMALL CAPITAL Y
+107B2 ; [.235D.0020.0014] # MODIFIER LETTER SMALL CAPITAL Y
+024F ; [.2361.0020.0002] # LATIN SMALL LETTER Y WITH STROKE
+024E ; [.2361.0020.0008] # LATIN CAPITAL LETTER Y WITH STROKE
+01B4 ; [.2365.0020.0002] # LATIN SMALL LETTER Y WITH HOOK
+01B3 ; [.2365.0020.0008] # LATIN CAPITAL LETTER Y WITH HOOK
+1EFF ; [.2369.0020.0002] # LATIN SMALL LETTER Y WITH LOOP
+1EFE ; [.2369.0020.0008] # LATIN CAPITAL LETTER Y WITH LOOP
+AB5A ; [.236A.0020.0002] # LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
+021D ; [.236B.0020.0002] # LATIN SMALL LETTER YOGH
+021C ; [.236B.0020.0008] # LATIN CAPITAL LETTER YOGH
+007A ; [.236F.0020.0002] # LATIN SMALL LETTER Z
+FF5A ; [.236F.0020.0003] # FULLWIDTH LATIN SMALL LETTER Z
+1DE6 ; [.236F.0020.0004] # COMBINING LATIN SMALL LETTER Z
+24B5 ; [*0334.0020.0004][.236F.0020.0004][*0335.0020.0004] # PARENTHESIZED LATIN SMALL LETTER Z
+1D433 ; [.236F.0020.0005] # MATHEMATICAL BOLD SMALL Z
+1D467 ; [.236F.0020.0005] # MATHEMATICAL ITALIC SMALL Z
+1D49B ; [.236F.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL Z
+1D4CF ; [.236F.0020.0005] # MATHEMATICAL SCRIPT SMALL Z
+1D503 ; [.236F.0020.0005] # MATHEMATICAL BOLD SCRIPT SMALL Z
+1D537 ; [.236F.0020.0005] # MATHEMATICAL FRAKTUR SMALL Z
+1D56B ; [.236F.0020.0005] # MATHEMATICAL DOUBLE-STRUCK SMALL Z
+1D59F ; [.236F.0020.0005] # MATHEMATICAL BOLD FRAKTUR SMALL Z
+1D5D3 ; [.236F.0020.0005] # MATHEMATICAL SANS-SERIF SMALL Z
+1D607 ; [.236F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL Z
+1D63B ; [.236F.0020.0005] # MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+1D66F ; [.236F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+1D6A3 ; [.236F.0020.0005] # MATHEMATICAL MONOSPACE SMALL Z
+24E9 ; [.236F.0020.0006] # CIRCLED LATIN SMALL LETTER Z
+005A ; [.236F.0020.0008] # LATIN CAPITAL LETTER Z
+FF3A ; [.236F.0020.0009] # FULLWIDTH LATIN CAPITAL LETTER Z
+1F129 ; [*0334.0020.0004][.236F.0020.000A][*0335.0020.0004] # PARENTHESIZED LATIN CAPITAL LETTER Z
+2124 ; [.236F.0020.000B] # DOUBLE-STRUCK CAPITAL Z
+2128 ; [.236F.0020.000B] # BLACK-LETTER CAPITAL Z
+1D419 ; [.236F.0020.000B] # MATHEMATICAL BOLD CAPITAL Z
+1D44D ; [.236F.0020.000B] # MATHEMATICAL ITALIC CAPITAL Z
+1D481 ; [.236F.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D4B5 ; [.236F.0020.000B] # MATHEMATICAL SCRIPT CAPITAL Z
+1D4E9 ; [.236F.0020.000B] # MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D585 ; [.236F.0020.000B] # MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D5B9 ; [.236F.0020.000B] # MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5ED ; [.236F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D621 ; [.236F.0020.000B] # MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D655 ; [.236F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D689 ; [.236F.0020.000B] # MATHEMATICAL MONOSPACE CAPITAL Z
+24CF ; [.236F.0020.000C] # CIRCLED LATIN CAPITAL LETTER Z
+1F169 ; [.236F.0020.000C] # NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
+1DBB ; [.236F.0020.0014] # MODIFIER LETTER SMALL Z
+1F149 ; [.236F.0020.001D] # SQUARED LATIN CAPITAL LETTER Z
+1F189 ; [.236F.0020.001D] # NEGATIVE SQUARED LATIN CAPITAL LETTER Z
+017A ; [.236F.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER Z WITH ACUTE
+0179 ; [.236F.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER Z WITH ACUTE
+1E91 ; [.236F.0020.0002][.0000.0027.0002] # LATIN SMALL LETTER Z WITH CIRCUMFLEX
+1E90 ; [.236F.0020.0008][.0000.0027.0002] # LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+017E ; [.236F.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER Z WITH CARON
+017D ; [.236F.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER Z WITH CARON
+017C ; [.236F.0020.0002][.0000.002E.0002] # LATIN SMALL LETTER Z WITH DOT ABOVE
+017B ; [.236F.0020.0008][.0000.002E.0002] # LATIN CAPITAL LETTER Z WITH DOT ABOVE
+1E93 ; [.236F.0020.0002][.0000.0042.0002] # LATIN SMALL LETTER Z WITH DOT BELOW
+1E92 ; [.236F.0020.0008][.0000.0042.0002] # LATIN CAPITAL LETTER Z WITH DOT BELOW
+1E95 ; [.236F.0020.0002][.0000.0049.0002] # LATIN SMALL LETTER Z WITH LINE BELOW
+1E94 ; [.236F.0020.0008][.0000.0049.0002] # LATIN CAPITAL LETTER Z WITH LINE BELOW
+018D ; [.236F.0020.0004][.2343.0020.0004] # LATIN SMALL LETTER TURNED DELTA
+1D22 ; [.2373.0020.0002] # LATIN LETTER SMALL CAPITAL Z
+01B6 ; [.2374.0020.0002] # LATIN SMALL LETTER Z WITH STROKE
+01B5 ; [.2374.0020.0008] # LATIN CAPITAL LETTER Z WITH STROKE
+1D76 ; [.2378.0020.0002] # LATIN SMALL LETTER Z WITH MIDDLE TILDE
+1D8E ; [.2379.0020.0002] # LATIN SMALL LETTER Z WITH PALATAL HOOK
+A7C6 ; [.2379.0020.0008] # LATIN CAPITAL LETTER Z WITH PALATAL HOOK
+0225 ; [.237A.0020.0002] # LATIN SMALL LETTER Z WITH HOOK
+0224 ; [.237A.0020.0008] # LATIN CAPITAL LETTER Z WITH HOOK
+0290 ; [.237E.0020.0002] # LATIN SMALL LETTER Z WITH RETROFLEX HOOK
+1DBC ; [.237E.0020.0014] # MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
+0291 ; [.2382.0020.0002] # LATIN SMALL LETTER Z WITH CURL
+1DBD ; [.2382.0020.0014] # MODIFIER LETTER SMALL Z WITH CURL
+0240 ; [.2386.0020.0002] # LATIN SMALL LETTER Z WITH SWASH TAIL
+2C7F ; [.2386.0020.0008] # LATIN CAPITAL LETTER Z WITH SWASH TAIL
+2C6C ; [.238A.0020.0002] # LATIN SMALL LETTER Z WITH DESCENDER
+2C6B ; [.238A.0020.0008] # LATIN CAPITAL LETTER Z WITH DESCENDER
+A763 ; [.238B.0020.0002] # LATIN SMALL LETTER VISIGOTHIC Z
+A762 ; [.238B.0020.0008] # LATIN CAPITAL LETTER VISIGOTHIC Z
+0292 ; [.238C.0020.0002] # LATIN SMALL LETTER EZH
+01B7 ; [.238C.0020.0008] # LATIN CAPITAL LETTER EZH
+1DBE ; [.238C.0020.0014] # MODIFIER LETTER SMALL EZH
+01EF ; [.238C.0020.0002][.0000.0028.0002] # LATIN SMALL LETTER EZH WITH CARON
+01EE ; [.238C.0020.0008][.0000.0028.0002] # LATIN CAPITAL LETTER EZH WITH CARON
+1D23 ; [.2390.0020.0002] # LATIN LETTER SMALL CAPITAL EZH
+01B9 ; [.2391.0020.0002] # LATIN SMALL LETTER EZH REVERSED
+01B8 ; [.2391.0020.0008] # LATIN CAPITAL LETTER EZH REVERSED
+1DF18 ; [.2395.0020.0002] # LATIN SMALL LETTER EZH WITH PALATAL HOOK
+1D9A ; [.2396.0020.0002] # LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+01BA ; [.2397.0020.0002] # LATIN SMALL LETTER EZH WITH TAIL
+0293 ; [.239B.0020.0002] # LATIN SMALL LETTER EZH WITH CURL
+00FE ; [.239F.0020.0002] # LATIN SMALL LETTER THORN
+00DE ; [.239F.0020.0008] # LATIN CAPITAL LETTER THORN
+A7D3 ; [.23A3.0020.0002] # LATIN SMALL LETTER DOUBLE THORN
+A765 ; [.23A4.0020.0002] # LATIN SMALL LETTER THORN WITH STROKE
+A764 ; [.23A4.0020.0008] # LATIN CAPITAL LETTER THORN WITH STROKE
+A767 ; [.23A5.0020.0002] # LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
+A766 ; [.23A5.0020.0008] # LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+01BF ; [.23A6.0020.0002] # LATIN LETTER WYNN
+01F7 ; [.23A6.0020.0008] # LATIN CAPITAL LETTER WYNN
+A7D5 ; [.23AA.0020.0002] # LATIN SMALL LETTER DOUBLE WYNN
+A769 ; [.23AB.0020.0002] # LATIN SMALL LETTER VEND
+A768 ; [.23AB.0020.0008] # LATIN CAPITAL LETTER VEND
+AB60 ; [.23AC.0020.0002] # LATIN SMALL LETTER SAKHA YAT
+AB61 ; [.23AD.0020.0002] # LATIN SMALL LETTER IOTIFIED E
+AB63 ; [.23AE.0020.0002] # LATIN SMALL LETTER UO
+A76B ; [.23AF.0020.0002] # LATIN SMALL LETTER ET
+A76A ; [.23AF.0020.0008] # LATIN CAPITAL LETTER ET
+A76D ; [.23B0.0020.0002] # LATIN SMALL LETTER IS
+A76C ; [.23B0.0020.0008] # LATIN CAPITAL LETTER IS
+A76F ; [.23B1.0020.0002] # LATIN SMALL LETTER CON
+1DD2 ; [.23B1.0020.0004] # COMBINING US ABOVE
+A76E ; [.23B1.0020.0008] # LATIN CAPITAL LETTER CON
+A770 ; [.23B1.0020.0014] # MODIFIER LETTER US
+A778 ; [.23B2.0020.0002] # LATIN SMALL LETTER UM
+01BB ; [.23B3.0020.0002] # LATIN LETTER TWO WITH STROKE
+A72B ; [.23B7.0020.0002] # LATIN SMALL LETTER TRESILLO
+A72A ; [.23B7.0020.0008] # LATIN CAPITAL LETTER TRESILLO
+A72D ; [.23B8.0020.0002] # LATIN SMALL LETTER CUATRILLO
+A72C ; [.23B8.0020.0008] # LATIN CAPITAL LETTER CUATRILLO
+A72F ; [.23B9.0020.0002] # LATIN SMALL LETTER CUATRILLO WITH COMMA
+A72E ; [.23B9.0020.0008] # LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+01A8 ; [.23BA.0020.0002] # LATIN SMALL LETTER TONE TWO
+01A7 ; [.23BA.0020.0008] # LATIN CAPITAL LETTER TONE TWO
+01BD ; [.23BE.0020.0002] # LATIN SMALL LETTER TONE FIVE
+01BC ; [.23BE.0020.0008] # LATIN CAPITAL LETTER TONE FIVE
+0185 ; [.23C2.0020.0002] # LATIN SMALL LETTER TONE SIX
+0184 ; [.23C2.0020.0008] # LATIN CAPITAL LETTER TONE SIX
+0294 ; [.23C6.0020.0002] # LATIN LETTER GLOTTAL STOP
+0242 ; [.23CA.0020.0002] # LATIN SMALL LETTER GLOTTAL STOP
+0241 ; [.23CA.0020.0008] # LATIN CAPITAL LETTER GLOTTAL STOP
+02C0 ; [.23CE.0020.0002] # MODIFIER LETTER GLOTTAL STOP
+02BC ; [.23CF.0020.0002] # MODIFIER LETTER APOSTROPHE
+0149 ; [.23CF.0020.0004][.21F7.0020.0004] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+02EE ; [.23D0.0020.0002] # MODIFIER LETTER DOUBLE APOSTROPHE
+02BE ; [.23D1.0020.0002] # MODIFIER LETTER RIGHT HALF RING
+A723 ; [.23D2.0020.0002] # LATIN SMALL LETTER EGYPTOLOGICAL ALEF
+A722 ; [.23D2.0020.0008] # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+A78C ; [.23D3.0020.0002] # LATIN SMALL LETTER SALTILLO
+A78B ; [.23D3.0020.0008] # LATIN CAPITAL LETTER SALTILLO
+A78F ; [.23D4.0020.0002] # LATIN LETTER SINOLOGICAL DOT
+0295 ; [.23D5.0020.0002] # LATIN LETTER PHARYNGEAL VOICED FRICATIVE
+02E4 ; [.23D5.0020.0014] # MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02BF ; [.23D9.0020.0002] # MODIFIER LETTER LEFT HALF RING
+02C1 ; [.23DA.0020.0002] # MODIFIER LETTER REVERSED GLOTTAL STOP
+1D24 ; [.23DB.0020.0002] # LATIN LETTER VOICED LARYNGEAL SPIRANT
+1D25 ; [.23DC.0020.0002] # LATIN LETTER AIN
+1D5C ; [.23DC.0020.0014] # MODIFIER LETTER SMALL AIN
+A725 ; [.23DD.0020.0002] # LATIN SMALL LETTER EGYPTOLOGICAL AIN
+A724 ; [.23DD.0020.0008] # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+02A1 ; [.23DE.0020.0002] # LATIN LETTER GLOTTAL STOP WITH STROKE
+107B3 ; [.23DE.0020.0014] # MODIFIER LETTER GLOTTAL STOP WITH STROKE
+02A2 ; [.23E2.0020.0002] # LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE
+107B4 ; [.23E2.0020.0014] # MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE
+0296 ; [.23E6.0020.0002] # LATIN LETTER INVERTED GLOTTAL STOP
+1DF0E ; [.23EA.0020.0002] # LATIN LETTER INVERTED GLOTTAL STOP WITH CURL
+01C0 ; [.23EB.0020.0002] # LATIN LETTER DENTAL CLICK
+107B6 ; [.23EB.0020.0014] # MODIFIER LETTER DENTAL CLICK
+01C1 ; [.23EF.0020.0002] # LATIN LETTER LATERAL CLICK
+107B7 ; [.23EF.0020.0014] # MODIFIER LETTER LATERAL CLICK
+01C2 ; [.23F3.0020.0002] # LATIN LETTER ALVEOLAR CLICK
+107B8 ; [.23F3.0020.0014] # MODIFIER LETTER ALVEOLAR CLICK
+01C3 ; [.23F7.0020.0002] # LATIN LETTER RETROFLEX CLICK
+1DF0A ; [.23FB.0020.0002] # LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+107B9 ; [.23FB.0020.0014] # MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+0297 ; [.23FC.0020.0002] # LATIN LETTER STRETCHED C
+1DF0F ; [.2400.0020.0002] # LATIN LETTER STRETCHED C WITH CURL
+0298 ; [.2401.0020.0002] # LATIN LETTER BILABIAL CLICK
+107B5 ; [.2401.0020.0014] # MODIFIER LETTER BILABIAL CLICK
+02AC ; [.2405.0020.0002] # LATIN LETTER BILABIAL PERCUSSIVE
+02AD ; [.2409.0020.0002] # LATIN LETTER BIDENTAL PERCUSSIVE
+03B1 ; [.240D.0020.0002] # GREEK SMALL LETTER ALPHA
+1D6C2 ; [.240D.0020.0005] # MATHEMATICAL BOLD SMALL ALPHA
+1D6FC ; [.240D.0020.0005] # MATHEMATICAL ITALIC SMALL ALPHA
+1D736 ; [.240D.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL ALPHA
+1D770 ; [.240D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
+1D7AA ; [.240D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
+0391 ; [.240D.0020.0008] # GREEK CAPITAL LETTER ALPHA
+1D6A8 ; [.240D.0020.000B] # MATHEMATICAL BOLD CAPITAL ALPHA
+1D6E2 ; [.240D.0020.000B] # MATHEMATICAL ITALIC CAPITAL ALPHA
+1D71C ; [.240D.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+1D756 ; [.240D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+1D790 ; [.240D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+1F00 ; [.240D.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER ALPHA WITH PSILI
+1F08 ; [.240D.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI
+1F04 ; [.240D.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA
+1F0C ; [.240D.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+1F84 ; [.240D.0020.0002][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F8C ; [.240D.0020.0008][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F02 ; [.240D.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA
+1F0A ; [.240D.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+1F82 ; [.240D.0020.0002][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F8A ; [.240D.0020.0008][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F06 ; [.240D.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F0E ; [.240D.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+1F86 ; [.240D.0020.0002][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F8E ; [.240D.0020.0008][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F80 ; [.240D.0020.0002][.0000.0022.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+1F88 ; [.240D.0020.0008][.0000.0022.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+1F01 ; [.240D.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER ALPHA WITH DASIA
+1F09 ; [.240D.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA
+1F05 ; [.240D.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA
+1F0D ; [.240D.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+1F85 ; [.240D.0020.0002][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F8D ; [.240D.0020.0008][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F03 ; [.240D.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA
+1F0B ; [.240D.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+1F83 ; [.240D.0020.0002][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F8B ; [.240D.0020.0008][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F07 ; [.240D.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F0F ; [.240D.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+1F87 ; [.240D.0020.0002][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F8F ; [.240D.0020.0008][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F81 ; [.240D.0020.0002][.0000.0023.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+1F89 ; [.240D.0020.0008][.0000.0023.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+03AC ; [.240D.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH TONOS
+1F71 ; [.240D.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ALPHA WITH OXIA
+0386 ; [.240D.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH TONOS
+1FBB ; [.240D.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FB4 ; [.240D.0020.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1F70 ; [.240D.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER ALPHA WITH VARIA
+1FBA ; [.240D.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER ALPHA WITH VARIA
+1FB2 ; [.240D.0020.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+1FB0 ; [.240D.0020.0002][.0000.0026.0002] # GREEK SMALL LETTER ALPHA WITH VRACHY
+1FB8 ; [.240D.0020.0008][.0000.0026.0002] # GREEK CAPITAL LETTER ALPHA WITH VRACHY
+1FB6 ; [.240D.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER ALPHA WITH PERISPOMENI
+1FB7 ; [.240D.0020.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FB1 ; [.240D.0020.0002][.0000.0032.0002] # GREEK SMALL LETTER ALPHA WITH MACRON
+1FB9 ; [.240D.0020.0008][.0000.0032.0002] # GREEK CAPITAL LETTER ALPHA WITH MACRON
+1FB3 ; [.240D.0020.0002][.0000.004C.0002] # GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+1FBC ; [.240D.0020.0008][.0000.004C.0002] # GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+03B2 ; [.240E.0020.0002] # GREEK SMALL LETTER BETA
+03D0 ; [.240E.0020.0004] # GREEK BETA SYMBOL
+1D6C3 ; [.240E.0020.0005] # MATHEMATICAL BOLD SMALL BETA
+1D6FD ; [.240E.0020.0005] # MATHEMATICAL ITALIC SMALL BETA
+1D737 ; [.240E.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL BETA
+1D771 ; [.240E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL BETA
+1D7AB ; [.240E.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
+0392 ; [.240E.0020.0008] # GREEK CAPITAL LETTER BETA
+1D6A9 ; [.240E.0020.000B] # MATHEMATICAL BOLD CAPITAL BETA
+1D6E3 ; [.240E.0020.000B] # MATHEMATICAL ITALIC CAPITAL BETA
+1D71D ; [.240E.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL BETA
+1D757 ; [.240E.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+1D791 ; [.240E.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+1D5D ; [.240E.0020.0014] # MODIFIER LETTER SMALL BETA
+1D66 ; [.240E.0020.0015] # GREEK SUBSCRIPT SMALL LETTER BETA
+03B3 ; [.240F.0020.0002] # GREEK SMALL LETTER GAMMA
+213D ; [.240F.0020.0005] # DOUBLE-STRUCK SMALL GAMMA
+1D6C4 ; [.240F.0020.0005] # MATHEMATICAL BOLD SMALL GAMMA
+1D6FE ; [.240F.0020.0005] # MATHEMATICAL ITALIC SMALL GAMMA
+1D738 ; [.240F.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL GAMMA
+1D772 ; [.240F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
+1D7AC ; [.240F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
+0393 ; [.240F.0020.0008] # GREEK CAPITAL LETTER GAMMA
+213E ; [.240F.0020.000B] # DOUBLE-STRUCK CAPITAL GAMMA
+1D6AA ; [.240F.0020.000B] # MATHEMATICAL BOLD CAPITAL GAMMA
+1D6E4 ; [.240F.0020.000B] # MATHEMATICAL ITALIC CAPITAL GAMMA
+1D71E ; [.240F.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+1D758 ; [.240F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+1D792 ; [.240F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+1D5E ; [.240F.0020.0014] # MODIFIER LETTER SMALL GREEK GAMMA
+1D67 ; [.240F.0020.0015] # GREEK SUBSCRIPT SMALL LETTER GAMMA
+1D26 ; [.2410.0020.0002] # GREEK LETTER SMALL CAPITAL GAMMA
+03B4 ; [.2411.0020.0002] # GREEK SMALL LETTER DELTA
+1D6C5 ; [.2411.0020.0005] # MATHEMATICAL BOLD SMALL DELTA
+1D6FF ; [.2411.0020.0005] # MATHEMATICAL ITALIC SMALL DELTA
+1D739 ; [.2411.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL DELTA
+1D773 ; [.2411.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
+1D7AD ; [.2411.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
+0394 ; [.2411.0020.0008] # GREEK CAPITAL LETTER DELTA
+1D6AB ; [.2411.0020.000B] # MATHEMATICAL BOLD CAPITAL DELTA
+1D6E5 ; [.2411.0020.000B] # MATHEMATICAL ITALIC CAPITAL DELTA
+1D71F ; [.2411.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+1D759 ; [.2411.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+1D793 ; [.2411.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+1D5F ; [.2411.0020.0014] # MODIFIER LETTER SMALL DELTA
+03B5 ; [.2412.0020.0002] # GREEK SMALL LETTER EPSILON
+03F5 ; [.2412.0020.0004] # GREEK LUNATE EPSILON SYMBOL
+1D6C6 ; [.2412.0020.0005] # MATHEMATICAL BOLD SMALL EPSILON
+1D6DC ; [.2412.0020.0005] # MATHEMATICAL BOLD EPSILON SYMBOL
+1D700 ; [.2412.0020.0005] # MATHEMATICAL ITALIC SMALL EPSILON
+1D716 ; [.2412.0020.0005] # MATHEMATICAL ITALIC EPSILON SYMBOL
+1D73A ; [.2412.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL EPSILON
+1D750 ; [.2412.0020.0005] # MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
+1D774 ; [.2412.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
+1D78A ; [.2412.0020.0005] # MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
+1D7AE ; [.2412.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
+1D7C4 ; [.2412.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
+0395 ; [.2412.0020.0008] # GREEK CAPITAL LETTER EPSILON
+1D6AC ; [.2412.0020.000B] # MATHEMATICAL BOLD CAPITAL EPSILON
+1D6E6 ; [.2412.0020.000B] # MATHEMATICAL ITALIC CAPITAL EPSILON
+1D720 ; [.2412.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+1D75A ; [.2412.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+1D794 ; [.2412.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+1F10 ; [.2412.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER EPSILON WITH PSILI
+1F18 ; [.2412.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER EPSILON WITH PSILI
+1F14 ; [.2412.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA
+1F1C ; [.2412.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+1F12 ; [.2412.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA
+1F1A ; [.2412.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+1F11 ; [.2412.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER EPSILON WITH DASIA
+1F19 ; [.2412.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER EPSILON WITH DASIA
+1F15 ; [.2412.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F1D ; [.2412.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F13 ; [.2412.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA
+1F1B ; [.2412.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+03AD ; [.2412.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH TONOS
+1F73 ; [.2412.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER EPSILON WITH OXIA
+0388 ; [.2412.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH TONOS
+1FC9 ; [.2412.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER EPSILON WITH OXIA
+1F72 ; [.2412.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER EPSILON WITH VARIA
+1FC8 ; [.2412.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER EPSILON WITH VARIA
+03DD ; [.2413.0020.0002] # GREEK SMALL LETTER DIGAMMA
+1D7CB ; [.2413.0020.0005] # MATHEMATICAL BOLD SMALL DIGAMMA
+03DC ; [.2413.0020.0008] # GREEK LETTER DIGAMMA
+1D7CA ; [.2413.0020.000B] # MATHEMATICAL BOLD CAPITAL DIGAMMA
+0377 ; [.2414.0020.0002] # GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+0376 ; [.2414.0020.0008] # GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+03DB ; [.2415.0020.0002] # GREEK SMALL LETTER STIGMA
+03DA ; [.2415.0020.0008] # GREEK LETTER STIGMA
+03B6 ; [.2416.0020.0002] # GREEK SMALL LETTER ZETA
+1D6C7 ; [.2416.0020.0005] # MATHEMATICAL BOLD SMALL ZETA
+1D701 ; [.2416.0020.0005] # MATHEMATICAL ITALIC SMALL ZETA
+1D73B ; [.2416.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL ZETA
+1D775 ; [.2416.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
+1D7AF ; [.2416.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
+0396 ; [.2416.0020.0008] # GREEK CAPITAL LETTER ZETA
+1D6AD ; [.2416.0020.000B] # MATHEMATICAL BOLD CAPITAL ZETA
+1D6E7 ; [.2416.0020.000B] # MATHEMATICAL ITALIC CAPITAL ZETA
+1D721 ; [.2416.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+1D75B ; [.2416.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+1D795 ; [.2416.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+0371 ; [.2417.0020.0002] # GREEK SMALL LETTER HETA
+0370 ; [.2417.0020.0008] # GREEK CAPITAL LETTER HETA
+03B7 ; [.2418.0020.0002] # GREEK SMALL LETTER ETA
+1D6C8 ; [.2418.0020.0005] # MATHEMATICAL BOLD SMALL ETA
+1D702 ; [.2418.0020.0005] # MATHEMATICAL ITALIC SMALL ETA
+1D73C ; [.2418.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL ETA
+1D776 ; [.2418.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL ETA
+1D7B0 ; [.2418.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
+0397 ; [.2418.0020.0008] # GREEK CAPITAL LETTER ETA
+1D6AE ; [.2418.0020.000B] # MATHEMATICAL BOLD CAPITAL ETA
+1D6E8 ; [.2418.0020.000B] # MATHEMATICAL ITALIC CAPITAL ETA
+1D722 ; [.2418.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL ETA
+1D75C ; [.2418.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+1D796 ; [.2418.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+1F20 ; [.2418.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER ETA WITH PSILI
+1F28 ; [.2418.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER ETA WITH PSILI
+1F24 ; [.2418.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH PSILI AND OXIA
+1F2C ; [.2418.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+1F94 ; [.2418.0020.0002][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1F9C ; [.2418.0020.0008][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F22 ; [.2418.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER ETA WITH PSILI AND VARIA
+1F2A ; [.2418.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+1F92 ; [.2418.0020.0002][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1F9A ; [.2418.0020.0008][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F26 ; [.2418.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI
+1F2E ; [.2418.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+1F96 ; [.2418.0020.0002][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1F9E ; [.2418.0020.0008][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1F90 ; [.2418.0020.0002][.0000.0022.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+1F98 ; [.2418.0020.0008][.0000.0022.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+1F21 ; [.2418.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER ETA WITH DASIA
+1F29 ; [.2418.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER ETA WITH DASIA
+1F25 ; [.2418.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH DASIA AND OXIA
+1F2D ; [.2418.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+1F95 ; [.2418.0020.0002][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1F9D ; [.2418.0020.0008][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F23 ; [.2418.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER ETA WITH DASIA AND VARIA
+1F2B ; [.2418.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+1F93 ; [.2418.0020.0002][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1F9B ; [.2418.0020.0008][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F27 ; [.2418.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+1F2F ; [.2418.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+1F97 ; [.2418.0020.0002][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1F9F ; [.2418.0020.0008][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1F91 ; [.2418.0020.0002][.0000.0023.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+1F99 ; [.2418.0020.0008][.0000.0023.0002][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+03AE ; [.2418.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH TONOS
+1F75 ; [.2418.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER ETA WITH OXIA
+0389 ; [.2418.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH TONOS
+1FCB ; [.2418.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER ETA WITH OXIA
+1FC4 ; [.2418.0020.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1F74 ; [.2418.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER ETA WITH VARIA
+1FCA ; [.2418.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER ETA WITH VARIA
+1FC2 ; [.2418.0020.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+1FC6 ; [.2418.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER ETA WITH PERISPOMENI
+1FC7 ; [.2418.0020.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FC3 ; [.2418.0020.0002][.0000.004C.0002] # GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+1FCC ; [.2418.0020.0008][.0000.004C.0002] # GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+03B8 ; [.2419.0020.0002] # GREEK SMALL LETTER THETA
+03D1 ; [.2419.0020.0004] # GREEK THETA SYMBOL
+1D6C9 ; [.2419.0020.0005] # MATHEMATICAL BOLD SMALL THETA
+1D6DD ; [.2419.0020.0005] # MATHEMATICAL BOLD THETA SYMBOL
+1D703 ; [.2419.0020.0005] # MATHEMATICAL ITALIC SMALL THETA
+1D717 ; [.2419.0020.0005] # MATHEMATICAL ITALIC THETA SYMBOL
+1D73D ; [.2419.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL THETA
+1D751 ; [.2419.0020.0005] # MATHEMATICAL BOLD ITALIC THETA SYMBOL
+1D777 ; [.2419.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL THETA
+1D78B ; [.2419.0020.0005] # MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
+1D7B1 ; [.2419.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
+1D7C5 ; [.2419.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
+0398 ; [.2419.0020.0008] # GREEK CAPITAL LETTER THETA
+03F4 ; [.2419.0020.000A] # GREEK CAPITAL THETA SYMBOL
+1D6AF ; [.2419.0020.000B] # MATHEMATICAL BOLD CAPITAL THETA
+1D6B9 ; [.2419.0020.000B] # MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+1D6E9 ; [.2419.0020.000B] # MATHEMATICAL ITALIC CAPITAL THETA
+1D6F3 ; [.2419.0020.000B] # MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+1D723 ; [.2419.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL THETA
+1D72D ; [.2419.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+1D75D ; [.2419.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+1D767 ; [.2419.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+1D797 ; [.2419.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+1D7A1 ; [.2419.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+1DBF ; [.2419.0020.0014] # MODIFIER LETTER SMALL THETA
+03B9 ; [.241A.0020.0002] # GREEK SMALL LETTER IOTA
+1FBE ; [.241A.0020.0002] # GREEK PROSGEGRAMMENI
+037A ; [.241A.0020.0004] # GREEK YPOGEGRAMMENI
+1D6CA ; [.241A.0020.0005] # MATHEMATICAL BOLD SMALL IOTA
+1D704 ; [.241A.0020.0005] # MATHEMATICAL ITALIC SMALL IOTA
+1D73E ; [.241A.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL IOTA
+1D778 ; [.241A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
+1D7B2 ; [.241A.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
+0399 ; [.241A.0020.0008] # GREEK CAPITAL LETTER IOTA
+1D6B0 ; [.241A.0020.000B] # MATHEMATICAL BOLD CAPITAL IOTA
+1D6EA ; [.241A.0020.000B] # MATHEMATICAL ITALIC CAPITAL IOTA
+1D724 ; [.241A.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+1D75E ; [.241A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+1D798 ; [.241A.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+1F30 ; [.241A.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER IOTA WITH PSILI
+1F38 ; [.241A.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI
+1F34 ; [.241A.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH PSILI AND OXIA
+1F3C ; [.241A.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+1F32 ; [.241A.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH PSILI AND VARIA
+1F3A ; [.241A.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+1F36 ; [.241A.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F3E ; [.241A.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+1F31 ; [.241A.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER IOTA WITH DASIA
+1F39 ; [.241A.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA
+1F35 ; [.241A.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH DASIA AND OXIA
+1F3D ; [.241A.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+1F33 ; [.241A.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH DASIA AND VARIA
+1F3B ; [.241A.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+1F37 ; [.241A.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+1F3F ; [.241A.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+03AF ; [.241A.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH TONOS
+1F77 ; [.241A.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH OXIA
+038A ; [.241A.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH TONOS
+1FDB ; [.241A.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER IOTA WITH OXIA
+1F76 ; [.241A.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH VARIA
+1FDA ; [.241A.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER IOTA WITH VARIA
+1FD0 ; [.241A.0020.0002][.0000.0026.0002] # GREEK SMALL LETTER IOTA WITH VRACHY
+1FD8 ; [.241A.0020.0008][.0000.0026.0002] # GREEK CAPITAL LETTER IOTA WITH VRACHY
+1FD6 ; [.241A.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH PERISPOMENI
+03CA ; [.241A.0020.0002][.0000.002B.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA
+03AA ; [.241A.0020.0008][.0000.002B.0002] # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+0390 ; [.241A.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+1FD3 ; [.241A.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD2 ; [.241A.0020.0002][.0000.002B.0002][.0000.0025.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
+1FD7 ; [.241A.0020.0002][.0000.002B.0002][.0000.002A.0002] # GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+1FD1 ; [.241A.0020.0002][.0000.0032.0002] # GREEK SMALL LETTER IOTA WITH MACRON
+1FD9 ; [.241A.0020.0008][.0000.0032.0002] # GREEK CAPITAL LETTER IOTA WITH MACRON
+03F3 ; [.241B.0020.0002] # GREEK LETTER YOT
+037F ; [.241B.0020.0008] # GREEK CAPITAL LETTER YOT
+03BA ; [.241C.0020.0002] # GREEK SMALL LETTER KAPPA
+03F0 ; [.241C.0020.0004] # GREEK KAPPA SYMBOL
+1D6CB ; [.241C.0020.0005] # MATHEMATICAL BOLD SMALL KAPPA
+1D6DE ; [.241C.0020.0005] # MATHEMATICAL BOLD KAPPA SYMBOL
+1D705 ; [.241C.0020.0005] # MATHEMATICAL ITALIC SMALL KAPPA
+1D718 ; [.241C.0020.0005] # MATHEMATICAL ITALIC KAPPA SYMBOL
+1D73F ; [.241C.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL KAPPA
+1D752 ; [.241C.0020.0005] # MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
+1D779 ; [.241C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
+1D78C ; [.241C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
+1D7B3 ; [.241C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
+1D7C6 ; [.241C.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
+039A ; [.241C.0020.0008] # GREEK CAPITAL LETTER KAPPA
+1D6B1 ; [.241C.0020.000B] # MATHEMATICAL BOLD CAPITAL KAPPA
+1D6EB ; [.241C.0020.000B] # MATHEMATICAL ITALIC CAPITAL KAPPA
+1D725 ; [.241C.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+1D75F ; [.241C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+1D799 ; [.241C.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+03D7 ; [.241C.0020.0004][.240D.0020.0004][.241A.0020.0004] # GREEK KAI SYMBOL
+03CF ; [.241C.0020.000A][.240D.0020.0004][.241A.0020.0004] # GREEK CAPITAL KAI SYMBOL
+03BB ; [.241D.0020.0002] # GREEK SMALL LETTER LAMDA
+1D6CC ; [.241D.0020.0005] # MATHEMATICAL BOLD SMALL LAMDA
+1D706 ; [.241D.0020.0005] # MATHEMATICAL ITALIC SMALL LAMDA
+1D740 ; [.241D.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL LAMDA
+1D77A ; [.241D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
+1D7B4 ; [.241D.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
+039B ; [.241D.0020.0008] # GREEK CAPITAL LETTER LAMDA
+1D6B2 ; [.241D.0020.000B] # MATHEMATICAL BOLD CAPITAL LAMDA
+1D6EC ; [.241D.0020.000B] # MATHEMATICAL ITALIC CAPITAL LAMDA
+1D726 ; [.241D.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+1D760 ; [.241D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+1D79A ; [.241D.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+1D27 ; [.241E.0020.0002] # GREEK LETTER SMALL CAPITAL LAMDA
+03BC ; [.241F.0020.0002] # GREEK SMALL LETTER MU
+00B5 ; [.241F.0020.0004] # MICRO SIGN
+1D6CD ; [.241F.0020.0005] # MATHEMATICAL BOLD SMALL MU
+1D707 ; [.241F.0020.0005] # MATHEMATICAL ITALIC SMALL MU
+1D741 ; [.241F.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL MU
+1D77B ; [.241F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL MU
+1D7B5 ; [.241F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
+039C ; [.241F.0020.0008] # GREEK CAPITAL LETTER MU
+1D6B3 ; [.241F.0020.000B] # MATHEMATICAL BOLD CAPITAL MU
+1D6ED ; [.241F.0020.000B] # MATHEMATICAL ITALIC CAPITAL MU
+1D727 ; [.241F.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL MU
+1D761 ; [.241F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+1D79B ; [.241F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+3382 ; [.241F.0020.001C][.2075.0020.001D] # SQUARE MU A
+338C ; [.241F.0020.001C][.2116.0020.001D] # SQUARE MU F
+338D ; [.241F.0020.001C][.2125.0020.001C] # SQUARE MU G
+3395 ; [.241F.0020.001C][.21B0.0020.001C] # SQUARE MU L
+339B ; [.241F.0020.001C][.21E8.0020.001C] # SQUARE MU M
+33B2 ; [.241F.0020.001C][.22B6.0020.001C] # SQUARE MU S
+33B6 ; [.241F.0020.001C][.2331.0020.001D] # SQUARE MU V
+33BC ; [.241F.0020.001C][.2343.0020.001D] # SQUARE MU W
+03BD ; [.2420.0020.0002] # GREEK SMALL LETTER NU
+1D6CE ; [.2420.0020.0005] # MATHEMATICAL BOLD SMALL NU
+1D708 ; [.2420.0020.0005] # MATHEMATICAL ITALIC SMALL NU
+1D742 ; [.2420.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL NU
+1D77C ; [.2420.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL NU
+1D7B6 ; [.2420.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
+039D ; [.2420.0020.0008] # GREEK CAPITAL LETTER NU
+1D6B4 ; [.2420.0020.000B] # MATHEMATICAL BOLD CAPITAL NU
+1D6EE ; [.2420.0020.000B] # MATHEMATICAL ITALIC CAPITAL NU
+1D728 ; [.2420.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL NU
+1D762 ; [.2420.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+1D79C ; [.2420.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+03BE ; [.2421.0020.0002] # GREEK SMALL LETTER XI
+1D6CF ; [.2421.0020.0005] # MATHEMATICAL BOLD SMALL XI
+1D709 ; [.2421.0020.0005] # MATHEMATICAL ITALIC SMALL XI
+1D743 ; [.2421.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL XI
+1D77D ; [.2421.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL XI
+1D7B7 ; [.2421.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
+039E ; [.2421.0020.0008] # GREEK CAPITAL LETTER XI
+1D6B5 ; [.2421.0020.000B] # MATHEMATICAL BOLD CAPITAL XI
+1D6EF ; [.2421.0020.000B] # MATHEMATICAL ITALIC CAPITAL XI
+1D729 ; [.2421.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL XI
+1D763 ; [.2421.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+1D79D ; [.2421.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+03BF ; [.2422.0020.0002] # GREEK SMALL LETTER OMICRON
+1D6D0 ; [.2422.0020.0005] # MATHEMATICAL BOLD SMALL OMICRON
+1D70A ; [.2422.0020.0005] # MATHEMATICAL ITALIC SMALL OMICRON
+1D744 ; [.2422.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL OMICRON
+1D77E ; [.2422.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
+1D7B8 ; [.2422.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
+039F ; [.2422.0020.0008] # GREEK CAPITAL LETTER OMICRON
+1D6B6 ; [.2422.0020.000B] # MATHEMATICAL BOLD CAPITAL OMICRON
+1D6F0 ; [.2422.0020.000B] # MATHEMATICAL ITALIC CAPITAL OMICRON
+1D72A ; [.2422.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+1D764 ; [.2422.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+1D79E ; [.2422.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+1F40 ; [.2422.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER OMICRON WITH PSILI
+1F48 ; [.2422.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER OMICRON WITH PSILI
+1F44 ; [.2422.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA
+1F4C ; [.2422.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+1F42 ; [.2422.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA
+1F4A ; [.2422.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+1F41 ; [.2422.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER OMICRON WITH DASIA
+1F49 ; [.2422.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER OMICRON WITH DASIA
+1F45 ; [.2422.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F4D ; [.2422.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F43 ; [.2422.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA
+1F4B ; [.2422.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+03CC ; [.2422.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH TONOS
+1F79 ; [.2422.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMICRON WITH OXIA
+038C ; [.2422.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH TONOS
+1FF9 ; [.2422.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMICRON WITH OXIA
+1F78 ; [.2422.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER OMICRON WITH VARIA
+1FF8 ; [.2422.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER OMICRON WITH VARIA
+03C0 ; [.2423.0020.0002] # GREEK SMALL LETTER PI
+03D6 ; [.2423.0020.0004] # GREEK PI SYMBOL
+213C ; [.2423.0020.0005] # DOUBLE-STRUCK SMALL PI
+1D6D1 ; [.2423.0020.0005] # MATHEMATICAL BOLD SMALL PI
+1D6E1 ; [.2423.0020.0005] # MATHEMATICAL BOLD PI SYMBOL
+1D70B ; [.2423.0020.0005] # MATHEMATICAL ITALIC SMALL PI
+1D71B ; [.2423.0020.0005] # MATHEMATICAL ITALIC PI SYMBOL
+1D745 ; [.2423.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL PI
+1D755 ; [.2423.0020.0005] # MATHEMATICAL BOLD ITALIC PI SYMBOL
+1D77F ; [.2423.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL PI
+1D78F ; [.2423.0020.0005] # MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+1D7B9 ; [.2423.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
+1D7C9 ; [.2423.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+03A0 ; [.2423.0020.0008] # GREEK CAPITAL LETTER PI
+213F ; [.2423.0020.000B] # DOUBLE-STRUCK CAPITAL PI
+1D6B7 ; [.2423.0020.000B] # MATHEMATICAL BOLD CAPITAL PI
+1D6F1 ; [.2423.0020.000B] # MATHEMATICAL ITALIC CAPITAL PI
+1D72B ; [.2423.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL PI
+1D765 ; [.2423.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+1D79F ; [.2423.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+1D28 ; [.2424.0020.0002] # GREEK LETTER SMALL CAPITAL PI
+03FB ; [.2425.0020.0002] # GREEK SMALL LETTER SAN
+03FA ; [.2425.0020.0008] # GREEK CAPITAL LETTER SAN
+03DF ; [.2426.0020.0002] # GREEK SMALL LETTER KOPPA
+03DE ; [.2426.0020.0008] # GREEK LETTER KOPPA
+03D9 ; [.2427.0020.0002] # GREEK SMALL LETTER ARCHAIC KOPPA
+03D8 ; [.2427.0020.0008] # GREEK LETTER ARCHAIC KOPPA
+03C1 ; [.2428.0020.0002] # GREEK SMALL LETTER RHO
+03F1 ; [.2428.0020.0004] # GREEK RHO SYMBOL
+1D6D2 ; [.2428.0020.0005] # MATHEMATICAL BOLD SMALL RHO
+1D6E0 ; [.2428.0020.0005] # MATHEMATICAL BOLD RHO SYMBOL
+1D70C ; [.2428.0020.0005] # MATHEMATICAL ITALIC SMALL RHO
+1D71A ; [.2428.0020.0005] # MATHEMATICAL ITALIC RHO SYMBOL
+1D746 ; [.2428.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL RHO
+1D754 ; [.2428.0020.0005] # MATHEMATICAL BOLD ITALIC RHO SYMBOL
+1D780 ; [.2428.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL RHO
+1D78E ; [.2428.0020.0005] # MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
+1D7BA ; [.2428.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
+1D7C8 ; [.2428.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
+03A1 ; [.2428.0020.0008] # GREEK CAPITAL LETTER RHO
+1D6B8 ; [.2428.0020.000B] # MATHEMATICAL BOLD CAPITAL RHO
+1D6F2 ; [.2428.0020.000B] # MATHEMATICAL ITALIC CAPITAL RHO
+1D72C ; [.2428.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL RHO
+1D766 ; [.2428.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+1D7A0 ; [.2428.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+1D68 ; [.2428.0020.0015] # GREEK SUBSCRIPT SMALL LETTER RHO
+1FE4 ; [.2428.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER RHO WITH PSILI
+1FE5 ; [.2428.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER RHO WITH DASIA
+1FEC ; [.2428.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER RHO WITH DASIA
+1D29 ; [.2429.0020.0002] # GREEK LETTER SMALL CAPITAL RHO
+03FC ; [.242A.0020.0002] # GREEK RHO WITH STROKE SYMBOL
+03C3 ; [.242B.0020.0002] # GREEK SMALL LETTER SIGMA
+03F2 ; [.242B.0020.0004] # GREEK LUNATE SIGMA SYMBOL
+1D6D3 ; [.242B.0020.0005] # MATHEMATICAL BOLD SMALL FINAL SIGMA
+1D6D4 ; [.242B.0020.0005] # MATHEMATICAL BOLD SMALL SIGMA
+1D70D ; [.242B.0020.0005] # MATHEMATICAL ITALIC SMALL FINAL SIGMA
+1D70E ; [.242B.0020.0005] # MATHEMATICAL ITALIC SMALL SIGMA
+1D747 ; [.242B.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+1D748 ; [.242B.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL SIGMA
+1D781 ; [.242B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+1D782 ; [.242B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
+1D7BB ; [.242B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+1D7BC ; [.242B.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
+03A3 ; [.242B.0020.0008] # GREEK CAPITAL LETTER SIGMA
+03F9 ; [.242B.0020.000A] # GREEK CAPITAL LUNATE SIGMA SYMBOL
+1D6BA ; [.242B.0020.000B] # MATHEMATICAL BOLD CAPITAL SIGMA
+1D6F4 ; [.242B.0020.000B] # MATHEMATICAL ITALIC CAPITAL SIGMA
+1D72E ; [.242B.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+1D768 ; [.242B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+1D7A2 ; [.242B.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+03C2 ; [.242B.0020.0019] # GREEK SMALL LETTER FINAL SIGMA
+037C ; [.242C.0020.0002] # GREEK SMALL DOTTED LUNATE SIGMA SYMBOL
+03FE ; [.242C.0020.0008] # GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
+037B ; [.242D.0020.0002] # GREEK SMALL REVERSED LUNATE SIGMA SYMBOL
+03FD ; [.242D.0020.0008] # GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
+037D ; [.242E.0020.0002] # GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+03FF ; [.242E.0020.0008] # GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
+03C4 ; [.242F.0020.0002] # GREEK SMALL LETTER TAU
+1D6D5 ; [.242F.0020.0005] # MATHEMATICAL BOLD SMALL TAU
+1D70F ; [.242F.0020.0005] # MATHEMATICAL ITALIC SMALL TAU
+1D749 ; [.242F.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL TAU
+1D783 ; [.242F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL TAU
+1D7BD ; [.242F.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
+03A4 ; [.242F.0020.0008] # GREEK CAPITAL LETTER TAU
+1D6BB ; [.242F.0020.000B] # MATHEMATICAL BOLD CAPITAL TAU
+1D6F5 ; [.242F.0020.000B] # MATHEMATICAL ITALIC CAPITAL TAU
+1D72F ; [.242F.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL TAU
+1D769 ; [.242F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+1D7A3 ; [.242F.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+03C5 ; [.2430.0020.0002] # GREEK SMALL LETTER UPSILON
+1D6D6 ; [.2430.0020.0005] # MATHEMATICAL BOLD SMALL UPSILON
+1D710 ; [.2430.0020.0005] # MATHEMATICAL ITALIC SMALL UPSILON
+1D74A ; [.2430.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL UPSILON
+1D784 ; [.2430.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
+1D7BE ; [.2430.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
+03A5 ; [.2430.0020.0008] # GREEK CAPITAL LETTER UPSILON
+03D2 ; [.2430.0020.000A] # GREEK UPSILON WITH HOOK SYMBOL
+1D6BC ; [.2430.0020.000B] # MATHEMATICAL BOLD CAPITAL UPSILON
+1D6F6 ; [.2430.0020.000B] # MATHEMATICAL ITALIC CAPITAL UPSILON
+1D730 ; [.2430.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+1D76A ; [.2430.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+1D7A4 ; [.2430.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+1F50 ; [.2430.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER UPSILON WITH PSILI
+1F54 ; [.2430.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
+1F52 ; [.2430.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
+1F56 ; [.2430.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
+1F51 ; [.2430.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER UPSILON WITH DASIA
+1F59 ; [.2430.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F55 ; [.2430.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA
+1F5D ; [.2430.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F53 ; [.2430.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA
+1F5B ; [.2430.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F57 ; [.2430.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F5F ; [.2430.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+03CD ; [.2430.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH TONOS
+1F7B ; [.2430.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH OXIA
+038E ; [.2430.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER UPSILON WITH TONOS
+1FEB ; [.2430.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER UPSILON WITH OXIA
+03D3 ; [.2430.0020.000A][.0000.0024.0002] # GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+1F7A ; [.2430.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH VARIA
+1FEA ; [.2430.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER UPSILON WITH VARIA
+1FE0 ; [.2430.0020.0002][.0000.0026.0002] # GREEK SMALL LETTER UPSILON WITH VRACHY
+1FE8 ; [.2430.0020.0008][.0000.0026.0002] # GREEK CAPITAL LETTER UPSILON WITH VRACHY
+1FE6 ; [.2430.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH PERISPOMENI
+03CB ; [.2430.0020.0002][.0000.002B.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+03AB ; [.2430.0020.0008][.0000.002B.0002] # GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+03D4 ; [.2430.0020.000A][.0000.002B.0002] # GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03B0 ; [.2430.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+1FE3 ; [.2430.0020.0002][.0000.002B.0002][.0000.0024.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FE2 ; [.2430.0020.0002][.0000.002B.0002][.0000.0025.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
+1FE7 ; [.2430.0020.0002][.0000.002B.0002][.0000.002A.0002] # GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+1FE1 ; [.2430.0020.0002][.0000.0032.0002] # GREEK SMALL LETTER UPSILON WITH MACRON
+1FE9 ; [.2430.0020.0008][.0000.0032.0002] # GREEK CAPITAL LETTER UPSILON WITH MACRON
+03C6 ; [.2431.0020.0002] # GREEK SMALL LETTER PHI
+03D5 ; [.2431.0020.0004] # GREEK PHI SYMBOL
+1D6D7 ; [.2431.0020.0005] # MATHEMATICAL BOLD SMALL PHI
+1D6DF ; [.2431.0020.0005] # MATHEMATICAL BOLD PHI SYMBOL
+1D711 ; [.2431.0020.0005] # MATHEMATICAL ITALIC SMALL PHI
+1D719 ; [.2431.0020.0005] # MATHEMATICAL ITALIC PHI SYMBOL
+1D74B ; [.2431.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL PHI
+1D753 ; [.2431.0020.0005] # MATHEMATICAL BOLD ITALIC PHI SYMBOL
+1D785 ; [.2431.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL PHI
+1D78D ; [.2431.0020.0005] # MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
+1D7BF ; [.2431.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
+1D7C7 ; [.2431.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
+03A6 ; [.2431.0020.0008] # GREEK CAPITAL LETTER PHI
+1D6BD ; [.2431.0020.000B] # MATHEMATICAL BOLD CAPITAL PHI
+1D6F7 ; [.2431.0020.000B] # MATHEMATICAL ITALIC CAPITAL PHI
+1D731 ; [.2431.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL PHI
+1D76B ; [.2431.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+1D7A5 ; [.2431.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+1D60 ; [.2431.0020.0014] # MODIFIER LETTER SMALL GREEK PHI
+1D69 ; [.2431.0020.0015] # GREEK SUBSCRIPT SMALL LETTER PHI
+03C7 ; [.2432.0020.0002] # GREEK SMALL LETTER CHI
+1D6D8 ; [.2432.0020.0005] # MATHEMATICAL BOLD SMALL CHI
+1D712 ; [.2432.0020.0005] # MATHEMATICAL ITALIC SMALL CHI
+1D74C ; [.2432.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL CHI
+1D786 ; [.2432.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL CHI
+1D7C0 ; [.2432.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
+03A7 ; [.2432.0020.0008] # GREEK CAPITAL LETTER CHI
+1D6BE ; [.2432.0020.000B] # MATHEMATICAL BOLD CAPITAL CHI
+1D6F8 ; [.2432.0020.000B] # MATHEMATICAL ITALIC CAPITAL CHI
+1D732 ; [.2432.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL CHI
+1D76C ; [.2432.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+1D7A6 ; [.2432.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+1D61 ; [.2432.0020.0014] # MODIFIER LETTER SMALL CHI
+1D6A ; [.2432.0020.0015] # GREEK SUBSCRIPT SMALL LETTER CHI
+03C8 ; [.2433.0020.0002] # GREEK SMALL LETTER PSI
+1D6D9 ; [.2433.0020.0005] # MATHEMATICAL BOLD SMALL PSI
+1D713 ; [.2433.0020.0005] # MATHEMATICAL ITALIC SMALL PSI
+1D74D ; [.2433.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL PSI
+1D787 ; [.2433.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL PSI
+1D7C1 ; [.2433.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
+03A8 ; [.2433.0020.0008] # GREEK CAPITAL LETTER PSI
+1D6BF ; [.2433.0020.000B] # MATHEMATICAL BOLD CAPITAL PSI
+1D6F9 ; [.2433.0020.000B] # MATHEMATICAL ITALIC CAPITAL PSI
+1D733 ; [.2433.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL PSI
+1D76D ; [.2433.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+1D7A7 ; [.2433.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+1D2A ; [.2434.0020.0002] # GREEK LETTER SMALL CAPITAL PSI
+03C9 ; [.2435.0020.0002] # GREEK SMALL LETTER OMEGA
+1D6DA ; [.2435.0020.0005] # MATHEMATICAL BOLD SMALL OMEGA
+1D714 ; [.2435.0020.0005] # MATHEMATICAL ITALIC SMALL OMEGA
+1D74E ; [.2435.0020.0005] # MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D788 ; [.2435.0020.0005] # MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D7C2 ; [.2435.0020.0005] # MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+03A9 ; [.2435.0020.0008] # GREEK CAPITAL LETTER OMEGA
+2126 ; [.2435.0020.0008] # OHM SIGN
+1D6C0 ; [.2435.0020.000B] # MATHEMATICAL BOLD CAPITAL OMEGA
+1D6FA ; [.2435.0020.000B] # MATHEMATICAL ITALIC CAPITAL OMEGA
+1D734 ; [.2435.0020.000B] # MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D76E ; [.2435.0020.000B] # MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D7A8 ; [.2435.0020.000B] # MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1F60 ; [.2435.0020.0002][.0000.0022.0002] # GREEK SMALL LETTER OMEGA WITH PSILI
+1F68 ; [.2435.0020.0008][.0000.0022.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI
+1F64 ; [.2435.0020.0002][.0000.0022.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA
+1F6C ; [.2435.0020.0008][.0000.0022.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+1FA4 ; [.2435.0020.0002][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+1FAC ; [.2435.0020.0008][.0000.0022.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+1F62 ; [.2435.0020.0002][.0000.0022.0002][.0000.0025.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA
+1F6A ; [.2435.0020.0008][.0000.0022.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+1FA2 ; [.2435.0020.0002][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+1FAA ; [.2435.0020.0008][.0000.0022.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+1F66 ; [.2435.0020.0002][.0000.0022.0002][.0000.002A.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1F6E ; [.2435.0020.0008][.0000.0022.0002][.0000.002A.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+1FA6 ; [.2435.0020.0002][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+1FAE ; [.2435.0020.0008][.0000.0022.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+1FA0 ; [.2435.0020.0002][.0000.0022.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+1FA8 ; [.2435.0020.0008][.0000.0022.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+1F61 ; [.2435.0020.0002][.0000.0023.0002] # GREEK SMALL LETTER OMEGA WITH DASIA
+1F69 ; [.2435.0020.0008][.0000.0023.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA
+1F65 ; [.2435.0020.0002][.0000.0023.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA
+1F6D ; [.2435.0020.0008][.0000.0023.0002][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+1FA5 ; [.2435.0020.0002][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+1FAD ; [.2435.0020.0008][.0000.0023.0002][.0000.0024.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+1F63 ; [.2435.0020.0002][.0000.0023.0002][.0000.0025.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA
+1F6B ; [.2435.0020.0008][.0000.0023.0002][.0000.0025.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+1FA3 ; [.2435.0020.0002][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+1FAB ; [.2435.0020.0008][.0000.0023.0002][.0000.0025.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+1F67 ; [.2435.0020.0002][.0000.0023.0002][.0000.002A.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1F6F ; [.2435.0020.0008][.0000.0023.0002][.0000.002A.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+1FA7 ; [.2435.0020.0002][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+1FAF ; [.2435.0020.0008][.0000.0023.0002][.0000.002A.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+1FA1 ; [.2435.0020.0002][.0000.0023.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+1FA9 ; [.2435.0020.0008][.0000.0023.0002][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+03CE ; [.2435.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH TONOS
+1F7D ; [.2435.0020.0002][.0000.0024.0002] # GREEK SMALL LETTER OMEGA WITH OXIA
+038F ; [.2435.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH TONOS
+1FFB ; [.2435.0020.0008][.0000.0024.0002] # GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FF4 ; [.2435.0020.0002][.0000.0024.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1F7C ; [.2435.0020.0002][.0000.0025.0002] # GREEK SMALL LETTER OMEGA WITH VARIA
+1FFA ; [.2435.0020.0008][.0000.0025.0002] # GREEK CAPITAL LETTER OMEGA WITH VARIA
+1FF2 ; [.2435.0020.0002][.0000.0025.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+1FF6 ; [.2435.0020.0002][.0000.002A.0002] # GREEK SMALL LETTER OMEGA WITH PERISPOMENI
+1FF7 ; [.2435.0020.0002][.0000.002A.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+1FF3 ; [.2435.0020.0002][.0000.004C.0002] # GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+1FFC ; [.2435.0020.0008][.0000.004C.0002] # GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+AB65 ; [.2436.0020.0002] # GREEK LETTER SMALL CAPITAL OMEGA
+03E1 ; [.2437.0020.0002] # GREEK SMALL LETTER SAMPI
+03E0 ; [.2437.0020.0008] # GREEK LETTER SAMPI
+0373 ; [.2438.0020.0002] # GREEK SMALL LETTER ARCHAIC SAMPI
+0372 ; [.2438.0020.0008] # GREEK CAPITAL LETTER ARCHAIC SAMPI
+03F8 ; [.2439.0020.0002] # GREEK SMALL LETTER SHO
+03F7 ; [.2439.0020.0008] # GREEK CAPITAL LETTER SHO
+2C81 ; [.243A.0020.0002] # COPTIC SMALL LETTER ALFA
+2C80 ; [.243A.0020.0008] # COPTIC CAPITAL LETTER ALFA
+2C83 ; [.243B.0020.0002] # COPTIC SMALL LETTER VIDA
+2C82 ; [.243B.0020.0008] # COPTIC CAPITAL LETTER VIDA
+2C85 ; [.243C.0020.0002] # COPTIC SMALL LETTER GAMMA
+2C84 ; [.243C.0020.0008] # COPTIC CAPITAL LETTER GAMMA
+2C87 ; [.243D.0020.0002] # COPTIC SMALL LETTER DALDA
+2C86 ; [.243D.0020.0008] # COPTIC CAPITAL LETTER DALDA
+2C89 ; [.243E.0020.0002] # COPTIC SMALL LETTER EIE
+2C88 ; [.243E.0020.0008] # COPTIC CAPITAL LETTER EIE
+2CB7 ; [.243F.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
+2CB6 ; [.243F.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+2C8B ; [.2440.0020.0002] # COPTIC SMALL LETTER SOU
+2C8A ; [.2440.0020.0008] # COPTIC CAPITAL LETTER SOU
+2C8D ; [.2441.0020.0002] # COPTIC SMALL LETTER ZATA
+2C8C ; [.2441.0020.0008] # COPTIC CAPITAL LETTER ZATA
+2C8F ; [.2442.0020.0002] # COPTIC SMALL LETTER HATE
+2C8E ; [.2442.0020.0008] # COPTIC CAPITAL LETTER HATE
+2C91 ; [.2443.0020.0002] # COPTIC SMALL LETTER THETHE
+2C90 ; [.2443.0020.0008] # COPTIC CAPITAL LETTER THETHE
+2C93 ; [.2444.0020.0002] # COPTIC SMALL LETTER IAUDA
+2C92 ; [.2444.0020.0008] # COPTIC CAPITAL LETTER IAUDA
+2C95 ; [.2445.0020.0002] # COPTIC SMALL LETTER KAPA
+2C94 ; [.2445.0020.0008] # COPTIC CAPITAL LETTER KAPA
+2CE4 ; [.2445.0020.0004][.243A.0020.0004][.2444.0020.0004] # COPTIC SYMBOL KAI
+2CB9 ; [.2446.0020.0002] # COPTIC SMALL LETTER DIALECT-P KAPA
+2CB8 ; [.2446.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P KAPA
+2C97 ; [.2447.0020.0002] # COPTIC SMALL LETTER LAULA
+2C96 ; [.2447.0020.0008] # COPTIC CAPITAL LETTER LAULA
+2C99 ; [.2448.0020.0002] # COPTIC SMALL LETTER MI
+2C98 ; [.2448.0020.0008] # COPTIC CAPITAL LETTER MI
+2C9B ; [.2449.0020.0002] # COPTIC SMALL LETTER NI
+2C9A ; [.2449.0020.0008] # COPTIC CAPITAL LETTER NI
+2CBB ; [.244A.0020.0002] # COPTIC SMALL LETTER DIALECT-P NI
+2CBA ; [.244A.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P NI
+2CBD ; [.244B.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC NI
+2CBC ; [.244B.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+2C9D ; [.244C.0020.0002] # COPTIC SMALL LETTER KSI
+2C9C ; [.244C.0020.0008] # COPTIC CAPITAL LETTER KSI
+2C9F ; [.244D.0020.0002] # COPTIC SMALL LETTER O
+2C9E ; [.244D.0020.0008] # COPTIC CAPITAL LETTER O
+2CA1 ; [.244E.0020.0002] # COPTIC SMALL LETTER PI
+2CA0 ; [.244E.0020.0008] # COPTIC CAPITAL LETTER PI
+2CA3 ; [.244F.0020.0002] # COPTIC SMALL LETTER RO
+2CA2 ; [.244F.0020.0008] # COPTIC CAPITAL LETTER RO
+2CA5 ; [.2450.0020.0002] # COPTIC SMALL LETTER SIMA
+2CA4 ; [.2450.0020.0008] # COPTIC CAPITAL LETTER SIMA
+2CA7 ; [.2451.0020.0002] # COPTIC SMALL LETTER TAU
+2CA6 ; [.2451.0020.0008] # COPTIC CAPITAL LETTER TAU
+2CA9 ; [.2452.0020.0002] # COPTIC SMALL LETTER UA
+2CA8 ; [.2452.0020.0008] # COPTIC CAPITAL LETTER UA
+2CAB ; [.2453.0020.0002] # COPTIC SMALL LETTER FI
+2CAA ; [.2453.0020.0008] # COPTIC CAPITAL LETTER FI
+2CAD ; [.2454.0020.0002] # COPTIC SMALL LETTER KHI
+2CAC ; [.2454.0020.0008] # COPTIC CAPITAL LETTER KHI
+2CAF ; [.2455.0020.0002] # COPTIC SMALL LETTER PSI
+2CAE ; [.2455.0020.0008] # COPTIC CAPITAL LETTER PSI
+2CB1 ; [.2456.0020.0002] # COPTIC SMALL LETTER OOU
+2CB0 ; [.2456.0020.0008] # COPTIC CAPITAL LETTER OOU
+2CBF ; [.2457.0020.0002] # COPTIC SMALL LETTER OLD COPTIC OOU
+2CBE ; [.2457.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC OOU
+2CC1 ; [.2458.0020.0002] # COPTIC SMALL LETTER SAMPI
+2CC0 ; [.2458.0020.0008] # COPTIC CAPITAL LETTER SAMPI
+03E3 ; [.2459.0020.0002] # COPTIC SMALL LETTER SHEI
+03E2 ; [.2459.0020.0008] # COPTIC CAPITAL LETTER SHEI
+2CEC ; [.245A.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI
+2CEB ; [.245A.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
+2CC3 ; [.245B.0020.0002] # COPTIC SMALL LETTER CROSSED SHEI
+2CC2 ; [.245B.0020.0008] # COPTIC CAPITAL LETTER CROSSED SHEI
+2CC5 ; [.245C.0020.0002] # COPTIC SMALL LETTER OLD COPTIC SHEI
+2CC4 ; [.245C.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC SHEI
+2CC7 ; [.245D.0020.0002] # COPTIC SMALL LETTER OLD COPTIC ESH
+2CC6 ; [.245D.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC ESH
+03E5 ; [.245E.0020.0002] # COPTIC SMALL LETTER FEI
+03E4 ; [.245E.0020.0008] # COPTIC CAPITAL LETTER FEI
+03E7 ; [.245F.0020.0002] # COPTIC SMALL LETTER KHEI
+03E6 ; [.245F.0020.0008] # COPTIC CAPITAL LETTER KHEI
+2CF3 ; [.2460.0020.0002] # COPTIC SMALL LETTER BOHAIRIC KHEI
+2CF2 ; [.2460.0020.0008] # COPTIC CAPITAL LETTER BOHAIRIC KHEI
+2CC9 ; [.2461.0020.0002] # COPTIC SMALL LETTER AKHMIMIC KHEI
+2CC8 ; [.2461.0020.0008] # COPTIC CAPITAL LETTER AKHMIMIC KHEI
+03E9 ; [.2462.0020.0002] # COPTIC SMALL LETTER HORI
+03E8 ; [.2462.0020.0008] # COPTIC CAPITAL LETTER HORI
+2CCB ; [.2463.0020.0002] # COPTIC SMALL LETTER DIALECT-P HORI
+2CCA ; [.2463.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P HORI
+2CCD ; [.2464.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HORI
+2CCC ; [.2464.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HORI
+2CCF ; [.2465.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HA
+2CCE ; [.2465.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HA
+2CD1 ; [.2466.0020.0002] # COPTIC SMALL LETTER L-SHAPED HA
+2CD0 ; [.2466.0020.0008] # COPTIC CAPITAL LETTER L-SHAPED HA
+2CD3 ; [.2467.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HEI
+2CD2 ; [.2467.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HEI
+2CD5 ; [.2468.0020.0002] # COPTIC SMALL LETTER OLD COPTIC HAT
+2CD4 ; [.2468.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC HAT
+03EB ; [.2469.0020.0002] # COPTIC SMALL LETTER GANGIA
+03EA ; [.2469.0020.0008] # COPTIC CAPITAL LETTER GANGIA
+2CEE ; [.246A.0020.0002] # COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+2CED ; [.246A.0020.0008] # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
+2CD7 ; [.246B.0020.0002] # COPTIC SMALL LETTER OLD COPTIC GANGIA
+2CD6 ; [.246B.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+03ED ; [.246C.0020.0002] # COPTIC SMALL LETTER SHIMA
+03EC ; [.246C.0020.0008] # COPTIC CAPITAL LETTER SHIMA
+2CD9 ; [.246D.0020.0002] # COPTIC SMALL LETTER OLD COPTIC DJA
+2CD8 ; [.246D.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC DJA
+2CDB ; [.246E.0020.0002] # COPTIC SMALL LETTER OLD COPTIC SHIMA
+2CDA ; [.246E.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+2CDD ; [.246F.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN SHIMA
+2CDC ; [.246F.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+03EF ; [.2470.0020.0002] # COPTIC SMALL LETTER DEI
+03EE ; [.2470.0020.0008] # COPTIC CAPITAL LETTER DEI
+2CB3 ; [.2471.0020.0002] # COPTIC SMALL LETTER DIALECT-P ALEF
+2CB2 ; [.2471.0020.0008] # COPTIC CAPITAL LETTER DIALECT-P ALEF
+2CB5 ; [.2472.0020.0002] # COPTIC SMALL LETTER OLD COPTIC AIN
+2CB4 ; [.2472.0020.0008] # COPTIC CAPITAL LETTER OLD COPTIC AIN
+2CDF ; [.2473.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN NGI
+2CDE ; [.2473.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN NGI
+2CE1 ; [.2474.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN NYI
+2CE0 ; [.2474.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN NYI
+2CE3 ; [.2475.0020.0002] # COPTIC SMALL LETTER OLD NUBIAN WAU
+2CE2 ; [.2475.0020.0008] # COPTIC CAPITAL LETTER OLD NUBIAN WAU
+0430 ; [.2476.0020.0002] # CYRILLIC SMALL LETTER A
+2DF6 ; [.2476.0020.0004] # COMBINING CYRILLIC LETTER A
+0410 ; [.2476.0020.0008] # CYRILLIC CAPITAL LETTER A
+04D1 ; [.2476.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.2476.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.2476.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.2476.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04D9 ; [.247A.0020.0002] # CYRILLIC SMALL LETTER SCHWA
+04D8 ; [.247A.0020.0008] # CYRILLIC CAPITAL LETTER SCHWA
+04DB ; [.247A.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.247A.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04D5 ; [.247E.0020.0002] # CYRILLIC SMALL LIGATURE A IE
+04D4 ; [.247E.0020.0008] # CYRILLIC CAPITAL LIGATURE A IE
+0431 ; [.2482.0020.0002] # CYRILLIC SMALL LETTER BE
+2DE0 ; [.2482.0020.0004] # COMBINING CYRILLIC LETTER BE
+0411 ; [.2482.0020.0008] # CYRILLIC CAPITAL LETTER BE
+0432 ; [.2486.0020.0002] # CYRILLIC SMALL LETTER VE
+1C80 ; [.2486.0020.0004] # CYRILLIC SMALL LETTER ROUNDED VE
+2DE1 ; [.2486.0020.0004] # COMBINING CYRILLIC LETTER VE
+0412 ; [.2486.0020.0008] # CYRILLIC CAPITAL LETTER VE
+0433 ; [.248A.0020.0002] # CYRILLIC SMALL LETTER GHE
+2DE2 ; [.248A.0020.0004] # COMBINING CYRILLIC LETTER GHE
+0413 ; [.248A.0020.0008] # CYRILLIC CAPITAL LETTER GHE
+0453 ; [.248A.0020.0002][.0000.0024.0002] # CYRILLIC SMALL LETTER GJE
+0403 ; [.248A.0020.0008][.0000.0024.0002] # CYRILLIC CAPITAL LETTER GJE
+0491 ; [.248A.0020.0004][.0000.0119.0004] # CYRILLIC SMALL LETTER GHE WITH UPTURN
+0490 ; [.248A.0020.000A][.0000.0119.0004] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+0493 ; [.248E.0020.0002] # CYRILLIC SMALL LETTER GHE WITH STROKE
+0492 ; [.248E.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH STROKE
+04FB ; [.2492.0020.0002] # CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
+04FA ; [.2492.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+0495 ; [.2496.0020.0002] # CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+0494 ; [.2496.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+04F7 ; [.249A.0020.0002] # CYRILLIC SMALL LETTER GHE WITH DESCENDER
+04F6 ; [.249A.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+0434 ; [.249E.0020.0002] # CYRILLIC SMALL LETTER DE
+1C81 ; [.249E.0020.0004] # CYRILLIC SMALL LETTER LONG-LEGGED DE
+2DE3 ; [.249E.0020.0004] # COMBINING CYRILLIC LETTER DE
+0414 ; [.249E.0020.0008] # CYRILLIC CAPITAL LETTER DE
+0501 ; [.24A2.0020.0002] # CYRILLIC SMALL LETTER KOMI DE
+0500 ; [.24A2.0020.0008] # CYRILLIC CAPITAL LETTER KOMI DE
+A681 ; [.24A3.0020.0002] # CYRILLIC SMALL LETTER DWE
+A680 ; [.24A3.0020.0008] # CYRILLIC CAPITAL LETTER DWE
+0452 ; [.24A4.0020.0002] # CYRILLIC SMALL LETTER DJE
+0402 ; [.24A4.0020.0008] # CYRILLIC CAPITAL LETTER DJE
+A663 ; [.24A8.0020.0002] # CYRILLIC SMALL LETTER SOFT DE
+A662 ; [.24A8.0020.0008] # CYRILLIC CAPITAL LETTER SOFT DE
+0503 ; [.24A9.0020.0002] # CYRILLIC SMALL LETTER KOMI DJE
+0502 ; [.24A9.0020.0008] # CYRILLIC CAPITAL LETTER KOMI DJE
+0499 ; [.24AA.0020.0002] # CYRILLIC SMALL LETTER ZE WITH DESCENDER
+0498 ; [.24AA.0020.0008] # CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+0435 ; [.24AE.0020.0002] # CYRILLIC SMALL LETTER IE
+2DF7 ; [.24AE.0020.0004] # COMBINING CYRILLIC LETTER IE
+0415 ; [.24AE.0020.0008] # CYRILLIC CAPITAL LETTER IE
+0450 ; [.24AE.0020.0002][.0000.0025.0002] # CYRILLIC SMALL LETTER IE WITH GRAVE
+0400 ; [.24AE.0020.0008][.0000.0025.0002] # CYRILLIC CAPITAL LETTER IE WITH GRAVE
+04D7 ; [.24AE.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.24AE.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+0451 ; [.24AE.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER IO
+0401 ; [.24AE.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER IO
+0454 ; [.24B2.0020.0002] # CYRILLIC SMALL LETTER UKRAINIAN IE
+A674 ; [.24B2.0020.0004] # COMBINING CYRILLIC LETTER UKRAINIAN IE
+0404 ; [.24B2.0020.0008] # CYRILLIC CAPITAL LETTER UKRAINIAN IE
+0436 ; [.24B6.0020.0002] # CYRILLIC SMALL LETTER ZHE
+2DE4 ; [.24B6.0020.0004] # COMBINING CYRILLIC LETTER ZHE
+0416 ; [.24B6.0020.0008] # CYRILLIC CAPITAL LETTER ZHE
+04C2 ; [.24B6.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER ZHE WITH BREVE
+04C1 ; [.24B6.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+04DD ; [.24B6.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.24B6.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+052B ; [.24BA.0020.0002] # CYRILLIC SMALL LETTER DZZHE
+052A ; [.24BA.0020.0008] # CYRILLIC CAPITAL LETTER DZZHE
+A685 ; [.24BB.0020.0002] # CYRILLIC SMALL LETTER ZHWE
+A684 ; [.24BB.0020.0008] # CYRILLIC CAPITAL LETTER ZHWE
+0497 ; [.24BC.0020.0002] # CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+0496 ; [.24BC.0020.0008] # CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+0437 ; [.24C0.0020.0002] # CYRILLIC SMALL LETTER ZE
+2DE5 ; [.24C0.0020.0004] # COMBINING CYRILLIC LETTER ZE
+0417 ; [.24C0.0020.0008] # CYRILLIC CAPITAL LETTER ZE
+04DF ; [.24C0.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.24C0.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+A641 ; [.24C4.0020.0002] # CYRILLIC SMALL LETTER ZEMLYA
+A640 ; [.24C4.0020.0008] # CYRILLIC CAPITAL LETTER ZEMLYA
+0505 ; [.24C5.0020.0002] # CYRILLIC SMALL LETTER KOMI ZJE
+0504 ; [.24C5.0020.0008] # CYRILLIC CAPITAL LETTER KOMI ZJE
+0511 ; [.24C6.0020.0002] # CYRILLIC SMALL LETTER REVERSED ZE
+0510 ; [.24C6.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED ZE
+A643 ; [.24C7.0020.0002] # CYRILLIC SMALL LETTER DZELO
+A642 ; [.24C7.0020.0008] # CYRILLIC CAPITAL LETTER DZELO
+0455 ; [.24C8.0020.0002] # CYRILLIC SMALL LETTER DZE
+0405 ; [.24C8.0020.0008] # CYRILLIC CAPITAL LETTER DZE
+A645 ; [.24CC.0020.0002] # CYRILLIC SMALL LETTER REVERSED DZE
+A644 ; [.24CC.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED DZE
+04E1 ; [.24CD.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN DZE
+04E0 ; [.24CD.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+A689 ; [.24D1.0020.0002] # CYRILLIC SMALL LETTER DZZE
+A688 ; [.24D1.0020.0008] # CYRILLIC CAPITAL LETTER DZZE
+0507 ; [.24D2.0020.0002] # CYRILLIC SMALL LETTER KOMI DZJE
+0506 ; [.24D2.0020.0008] # CYRILLIC CAPITAL LETTER KOMI DZJE
+A683 ; [.24D3.0020.0002] # CYRILLIC SMALL LETTER DZWE
+A682 ; [.24D3.0020.0008] # CYRILLIC CAPITAL LETTER DZWE
+0438 ; [.24D4.0020.0002] # CYRILLIC SMALL LETTER I
+A675 ; [.24D4.0020.0004] # COMBINING CYRILLIC LETTER I
+0418 ; [.24D4.0020.0008] # CYRILLIC CAPITAL LETTER I
+045D ; [.24D4.0020.0002][.0000.0025.0002] # CYRILLIC SMALL LETTER I WITH GRAVE
+040D ; [.24D4.0020.0008][.0000.0025.0002] # CYRILLIC CAPITAL LETTER I WITH GRAVE
+04E5 ; [.24D4.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E4 ; [.24D4.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+04E3 ; [.24D4.0020.0002][.0000.0032.0002] # CYRILLIC SMALL LETTER I WITH MACRON
+04E2 ; [.24D4.0020.0008][.0000.0032.0002] # CYRILLIC CAPITAL LETTER I WITH MACRON
+048B ; [.24D8.0020.0002] # CYRILLIC SMALL LETTER SHORT I WITH TAIL
+048A ; [.24D8.0020.0008] # CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+0456 ; [.24DC.0020.0002] # CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+0406 ; [.24DC.0020.0008] # CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+0457 ; [.24DC.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER YI
+A676 ; [.24DC.0020.0004][.0000.002B.0004] # COMBINING CYRILLIC LETTER YI
+0407 ; [.24DC.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER YI
+A647 ; [.24E0.0020.0002] # CYRILLIC SMALL LETTER IOTA
+A646 ; [.24E0.0020.0008] # CYRILLIC CAPITAL LETTER IOTA
+0439 ; [.24E1.0020.0002] # CYRILLIC SMALL LETTER SHORT I
+0438 0306 ; [.24E1.0020.0002] # CYRILLIC SMALL LETTER SHORT I
+0419 ; [.24E1.0020.0008] # CYRILLIC CAPITAL LETTER SHORT I
+0418 0306 ; [.24E1.0020.0008] # CYRILLIC CAPITAL LETTER SHORT I
+0458 ; [.24E5.0020.0002] # CYRILLIC SMALL LETTER JE
+0408 ; [.24E5.0020.0008] # CYRILLIC CAPITAL LETTER JE
+A649 ; [.24E9.0020.0002] # CYRILLIC SMALL LETTER DJERV
+2DF8 ; [.24E9.0020.0004] # COMBINING CYRILLIC LETTER DJERV
+A648 ; [.24E9.0020.0008] # CYRILLIC CAPITAL LETTER DJERV
+043A ; [.24EA.0020.0002] # CYRILLIC SMALL LETTER KA
+2DE6 ; [.24EA.0020.0004] # COMBINING CYRILLIC LETTER KA
+041A ; [.24EA.0020.0008] # CYRILLIC CAPITAL LETTER KA
+045C ; [.24EA.0020.0002][.0000.0024.0002] # CYRILLIC SMALL LETTER KJE
+040C ; [.24EA.0020.0008][.0000.0024.0002] # CYRILLIC CAPITAL LETTER KJE
+049B ; [.24EE.0020.0002] # CYRILLIC SMALL LETTER KA WITH DESCENDER
+049A ; [.24EE.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+04C4 ; [.24F2.0020.0002] # CYRILLIC SMALL LETTER KA WITH HOOK
+04C3 ; [.24F2.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH HOOK
+04A1 ; [.24F6.0020.0002] # CYRILLIC SMALL LETTER BASHKIR KA
+04A0 ; [.24F6.0020.0008] # CYRILLIC CAPITAL LETTER BASHKIR KA
+049F ; [.24FA.0020.0002] # CYRILLIC SMALL LETTER KA WITH STROKE
+049E ; [.24FA.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH STROKE
+049D ; [.24FE.0020.0002] # CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+049C ; [.24FE.0020.0008] # CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+051F ; [.2502.0020.0002] # CYRILLIC SMALL LETTER ALEUT KA
+051E ; [.2502.0020.0008] # CYRILLIC CAPITAL LETTER ALEUT KA
+051B ; [.2503.0020.0002] # CYRILLIC SMALL LETTER QA
+051A ; [.2503.0020.0008] # CYRILLIC CAPITAL LETTER QA
+043B ; [.2504.0020.0002] # CYRILLIC SMALL LETTER EL
+2DE7 ; [.2504.0020.0004] # COMBINING CYRILLIC LETTER EL
+041B ; [.2504.0020.0008] # CYRILLIC CAPITAL LETTER EL
+1D2B ; [.2508.0020.0002] # CYRILLIC LETTER SMALL CAPITAL EL
+04C6 ; [.2509.0020.0002] # CYRILLIC SMALL LETTER EL WITH TAIL
+04C5 ; [.2509.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH TAIL
+052F ; [.250D.0020.0002] # CYRILLIC SMALL LETTER EL WITH DESCENDER
+052E ; [.250D.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH DESCENDER
+0513 ; [.250E.0020.0002] # CYRILLIC SMALL LETTER EL WITH HOOK
+0512 ; [.250E.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH HOOK
+0521 ; [.250F.0020.0002] # CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
+0520 ; [.250F.0020.0008] # CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+0459 ; [.2510.0020.0002] # CYRILLIC SMALL LETTER LJE
+0409 ; [.2510.0020.0008] # CYRILLIC CAPITAL LETTER LJE
+A665 ; [.2514.0020.0002] # CYRILLIC SMALL LETTER SOFT EL
+A664 ; [.2514.0020.0008] # CYRILLIC CAPITAL LETTER SOFT EL
+0509 ; [.2515.0020.0002] # CYRILLIC SMALL LETTER KOMI LJE
+0508 ; [.2515.0020.0008] # CYRILLIC CAPITAL LETTER KOMI LJE
+0515 ; [.2516.0020.0002] # CYRILLIC SMALL LETTER LHA
+0514 ; [.2516.0020.0008] # CYRILLIC CAPITAL LETTER LHA
+043C ; [.2517.0020.0002] # CYRILLIC SMALL LETTER EM
+2DE8 ; [.2517.0020.0004] # COMBINING CYRILLIC LETTER EM
+041C ; [.2517.0020.0008] # CYRILLIC CAPITAL LETTER EM
+04CE ; [.251B.0020.0002] # CYRILLIC SMALL LETTER EM WITH TAIL
+04CD ; [.251B.0020.0008] # CYRILLIC CAPITAL LETTER EM WITH TAIL
+A667 ; [.251F.0020.0002] # CYRILLIC SMALL LETTER SOFT EM
+A666 ; [.251F.0020.0008] # CYRILLIC CAPITAL LETTER SOFT EM
+043D ; [.2520.0020.0002] # CYRILLIC SMALL LETTER EN
+2DE9 ; [.2520.0020.0004] # COMBINING CYRILLIC LETTER EN
+041D ; [.2520.0020.0008] # CYRILLIC CAPITAL LETTER EN
+1D78 ; [.2520.0020.0014] # MODIFIER LETTER CYRILLIC EN
+0529 ; [.2524.0020.0002] # CYRILLIC SMALL LETTER EN WITH LEFT HOOK
+0528 ; [.2524.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
+04CA ; [.2525.0020.0002] # CYRILLIC SMALL LETTER EN WITH TAIL
+04C9 ; [.2525.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH TAIL
+04A3 ; [.2529.0020.0002] # CYRILLIC SMALL LETTER EN WITH DESCENDER
+04A2 ; [.2529.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+04C8 ; [.252D.0020.0002] # CYRILLIC SMALL LETTER EN WITH HOOK
+04C7 ; [.252D.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH HOOK
+0523 ; [.2531.0020.0002] # CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
+0522 ; [.2531.0020.0008] # CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+04A5 ; [.2532.0020.0002] # CYRILLIC SMALL LIGATURE EN GHE
+04A4 ; [.2532.0020.0008] # CYRILLIC CAPITAL LIGATURE EN GHE
+045A ; [.2536.0020.0002] # CYRILLIC SMALL LETTER NJE
+040A ; [.2536.0020.0008] # CYRILLIC CAPITAL LETTER NJE
+050B ; [.253A.0020.0002] # CYRILLIC SMALL LETTER KOMI NJE
+050A ; [.253A.0020.0008] # CYRILLIC CAPITAL LETTER KOMI NJE
+043E ; [.253B.0020.0002] # CYRILLIC SMALL LETTER O
+1C82 ; [.253B.0020.0004] # CYRILLIC SMALL LETTER NARROW O
+2DEA ; [.253B.0020.0004] # COMBINING CYRILLIC LETTER O
+A669 ; [.253B.0020.0004] # CYRILLIC SMALL LETTER MONOCULAR O
+A66B ; [.253B.0020.0004] # CYRILLIC SMALL LETTER BINOCULAR O
+A66D ; [.253B.0020.0004] # CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+A66E ; [.253B.0020.0004] # CYRILLIC LETTER MULTIOCULAR O
+A699 ; [.253B.0020.0004] # CYRILLIC SMALL LETTER DOUBLE O
+A69B ; [.253B.0020.0004] # CYRILLIC SMALL LETTER CROSSED O
+041E ; [.253B.0020.0008] # CYRILLIC CAPITAL LETTER O
+A668 ; [.253B.0020.000A] # CYRILLIC CAPITAL LETTER MONOCULAR O
+A66A ; [.253B.0020.000A] # CYRILLIC CAPITAL LETTER BINOCULAR O
+A66C ; [.253B.0020.000A] # CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+A698 ; [.253B.0020.000A] # CYRILLIC CAPITAL LETTER DOUBLE O
+A69A ; [.253B.0020.000A] # CYRILLIC CAPITAL LETTER CROSSED O
+04E7 ; [.253B.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.253B.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04E9 ; [.253F.0020.0002] # CYRILLIC SMALL LETTER BARRED O
+04E8 ; [.253F.0020.0008] # CYRILLIC CAPITAL LETTER BARRED O
+04EB ; [.253F.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.253F.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+043F ; [.2543.0020.0002] # CYRILLIC SMALL LETTER PE
+2DEB ; [.2543.0020.0004] # COMBINING CYRILLIC LETTER PE
+041F ; [.2543.0020.0008] # CYRILLIC CAPITAL LETTER PE
+0525 ; [.2547.0020.0002] # CYRILLIC SMALL LETTER PE WITH DESCENDER
+0524 ; [.2547.0020.0008] # CYRILLIC CAPITAL LETTER PE WITH DESCENDER
+04A7 ; [.2548.0020.0002] # CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+04A6 ; [.2548.0020.0008] # CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+0481 ; [.254C.0020.0002] # CYRILLIC SMALL LETTER KOPPA
+0480 ; [.254C.0020.0008] # CYRILLIC CAPITAL LETTER KOPPA
+0440 ; [.2550.0020.0002] # CYRILLIC SMALL LETTER ER
+2DEC ; [.2550.0020.0004] # COMBINING CYRILLIC LETTER ER
+0420 ; [.2550.0020.0008] # CYRILLIC CAPITAL LETTER ER
+048F ; [.2554.0020.0002] # CYRILLIC SMALL LETTER ER WITH TICK
+048E ; [.2554.0020.0008] # CYRILLIC CAPITAL LETTER ER WITH TICK
+0517 ; [.2558.0020.0002] # CYRILLIC SMALL LETTER RHA
+0516 ; [.2558.0020.0008] # CYRILLIC CAPITAL LETTER RHA
+0441 ; [.2559.0020.0002] # CYRILLIC SMALL LETTER ES
+1C83 ; [.2559.0020.0004] # CYRILLIC SMALL LETTER WIDE ES
+2DED ; [.2559.0020.0004] # COMBINING CYRILLIC LETTER ES
+0421 ; [.2559.0020.0008] # CYRILLIC CAPITAL LETTER ES
+2DF5 ; [.2559.0020.0004][.2562.0020.0004] # COMBINING CYRILLIC LETTER ES-TE
+050D ; [.255D.0020.0002] # CYRILLIC SMALL LETTER KOMI SJE
+050C ; [.255D.0020.0008] # CYRILLIC CAPITAL LETTER KOMI SJE
+04AB ; [.255E.0020.0002] # CYRILLIC SMALL LETTER ES WITH DESCENDER
+04AA ; [.255E.0020.0008] # CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+0442 ; [.2562.0020.0002] # CYRILLIC SMALL LETTER TE
+1C84 ; [.2562.0020.0004] # CYRILLIC SMALL LETTER TALL TE
+1C85 ; [.2562.0020.0004] # CYRILLIC SMALL LETTER THREE-LEGGED TE
+2DEE ; [.2562.0020.0004] # COMBINING CYRILLIC LETTER TE
+0422 ; [.2562.0020.0008] # CYRILLIC CAPITAL LETTER TE
+A68D ; [.2566.0020.0002] # CYRILLIC SMALL LETTER TWE
+A68C ; [.2566.0020.0008] # CYRILLIC CAPITAL LETTER TWE
+050F ; [.2567.0020.0002] # CYRILLIC SMALL LETTER KOMI TJE
+050E ; [.2567.0020.0008] # CYRILLIC CAPITAL LETTER KOMI TJE
+04AD ; [.2568.0020.0002] # CYRILLIC SMALL LETTER TE WITH DESCENDER
+04AC ; [.2568.0020.0008] # CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+A68B ; [.256C.0020.0002] # CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
+A68A ; [.256C.0020.0008] # CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+045B ; [.256D.0020.0002] # CYRILLIC SMALL LETTER TSHE
+040B ; [.256D.0020.0008] # CYRILLIC CAPITAL LETTER TSHE
+0443 ; [.2571.0020.0002] # CYRILLIC SMALL LETTER U
+A677 ; [.2571.0020.0004] # COMBINING CYRILLIC LETTER U
+0423 ; [.2571.0020.0008] # CYRILLIC CAPITAL LETTER U
+045E ; [.2571.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.2571.0020.0008][.0000.0026.0002] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.2571.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.2571.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.2571.0020.0002][.0000.002C.0002] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.2571.0020.0008][.0000.002C.0002] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04EF ; [.2571.0020.0002][.0000.0032.0002] # CYRILLIC SMALL LETTER U WITH MACRON
+04EE ; [.2571.0020.0008][.0000.0032.0002] # CYRILLIC CAPITAL LETTER U WITH MACRON
+04AF ; [.2575.0020.0002] # CYRILLIC SMALL LETTER STRAIGHT U
+04AE ; [.2575.0020.0008] # CYRILLIC CAPITAL LETTER STRAIGHT U
+04B1 ; [.2579.0020.0002] # CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+04B0 ; [.2579.0020.0008] # CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+A64B ; [.257D.0020.0002] # CYRILLIC SMALL LETTER MONOGRAPH UK
+1C88 ; [.257D.0020.0004] # CYRILLIC SMALL LETTER UNBLENDED UK
+2DF9 ; [.257D.0020.0004] # COMBINING CYRILLIC LETTER MONOGRAPH UK
+A64A ; [.257D.0020.0008] # CYRILLIC CAPITAL LETTER MONOGRAPH UK
+0479 ; [.257E.0020.0002] # CYRILLIC SMALL LETTER UK
+0478 ; [.257E.0020.0008] # CYRILLIC CAPITAL LETTER UK
+0444 ; [.2582.0020.0002] # CYRILLIC SMALL LETTER EF
+A69E ; [.2582.0020.0004] # COMBINING CYRILLIC LETTER EF
+0424 ; [.2582.0020.0008] # CYRILLIC CAPITAL LETTER EF
+0445 ; [.2586.0020.0002] # CYRILLIC SMALL LETTER HA
+2DEF ; [.2586.0020.0004] # COMBINING CYRILLIC LETTER HA
+0425 ; [.2586.0020.0008] # CYRILLIC CAPITAL LETTER HA
+04FD ; [.258A.0020.0002] # CYRILLIC SMALL LETTER HA WITH HOOK
+04FC ; [.258A.0020.0008] # CYRILLIC CAPITAL LETTER HA WITH HOOK
+04FF ; [.258E.0020.0002] # CYRILLIC SMALL LETTER HA WITH STROKE
+04FE ; [.258E.0020.0008] # CYRILLIC CAPITAL LETTER HA WITH STROKE
+04B3 ; [.2592.0020.0002] # CYRILLIC SMALL LETTER HA WITH DESCENDER
+04B2 ; [.2592.0020.0008] # CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+04BB ; [.2596.0020.0002] # CYRILLIC SMALL LETTER SHHA
+04BA ; [.2596.0020.0008] # CYRILLIC CAPITAL LETTER SHHA
+0527 ; [.259A.0020.0002] # CYRILLIC SMALL LETTER SHHA WITH DESCENDER
+0526 ; [.259A.0020.0008] # CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
+A695 ; [.259B.0020.0002] # CYRILLIC SMALL LETTER HWE
+A694 ; [.259B.0020.0008] # CYRILLIC CAPITAL LETTER HWE
+0461 ; [.259C.0020.0002] # CYRILLIC SMALL LETTER OMEGA
+A67B ; [.259C.0020.0004] # COMBINING CYRILLIC LETTER OMEGA
+0460 ; [.259C.0020.0008] # CYRILLIC CAPITAL LETTER OMEGA
+047F ; [.25A0.0020.0002] # CYRILLIC SMALL LETTER OT
+047E ; [.25A0.0020.0008] # CYRILLIC CAPITAL LETTER OT
+A64D ; [.25A4.0020.0002] # CYRILLIC SMALL LETTER BROAD OMEGA
+A64C ; [.25A4.0020.0008] # CYRILLIC CAPITAL LETTER BROAD OMEGA
+047D ; [.25A5.0020.0002] # CYRILLIC SMALL LETTER OMEGA WITH TITLO
+047C ; [.25A5.0020.0008] # CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+047B ; [.25A9.0020.0002] # CYRILLIC SMALL LETTER ROUND OMEGA
+047A ; [.25A9.0020.0008] # CYRILLIC CAPITAL LETTER ROUND OMEGA
+0446 ; [.25AD.0020.0002] # CYRILLIC SMALL LETTER TSE
+2DF0 ; [.25AD.0020.0004] # COMBINING CYRILLIC LETTER TSE
+0426 ; [.25AD.0020.0008] # CYRILLIC CAPITAL LETTER TSE
+A661 ; [.25B1.0020.0002] # CYRILLIC SMALL LETTER REVERSED TSE
+A660 ; [.25B1.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED TSE
+A68F ; [.25B2.0020.0002] # CYRILLIC SMALL LETTER TSWE
+A68E ; [.25B2.0020.0008] # CYRILLIC CAPITAL LETTER TSWE
+04B5 ; [.25B3.0020.0002] # CYRILLIC SMALL LIGATURE TE TSE
+04B4 ; [.25B3.0020.0008] # CYRILLIC CAPITAL LIGATURE TE TSE
+A691 ; [.25B7.0020.0002] # CYRILLIC SMALL LETTER TSSE
+A690 ; [.25B7.0020.0008] # CYRILLIC CAPITAL LETTER TSSE
+0447 ; [.25B8.0020.0002] # CYRILLIC SMALL LETTER CHE
+2DF1 ; [.25B8.0020.0004] # COMBINING CYRILLIC LETTER CHE
+0427 ; [.25B8.0020.0008] # CYRILLIC CAPITAL LETTER CHE
+04F5 ; [.25B8.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.25B8.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+052D ; [.25BC.0020.0002] # CYRILLIC SMALL LETTER DCHE
+052C ; [.25BC.0020.0008] # CYRILLIC CAPITAL LETTER DCHE
+A693 ; [.25BD.0020.0002] # CYRILLIC SMALL LETTER TCHE
+A692 ; [.25BD.0020.0008] # CYRILLIC CAPITAL LETTER TCHE
+04B7 ; [.25BE.0020.0002] # CYRILLIC SMALL LETTER CHE WITH DESCENDER
+04B6 ; [.25BE.0020.0008] # CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+04CC ; [.25C2.0020.0002] # CYRILLIC SMALL LETTER KHAKASSIAN CHE
+04CB ; [.25C2.0020.0008] # CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+04B9 ; [.25C6.0020.0002] # CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+04B8 ; [.25C6.0020.0008] # CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+A687 ; [.25CA.0020.0002] # CYRILLIC SMALL LETTER CCHE
+A686 ; [.25CA.0020.0008] # CYRILLIC CAPITAL LETTER CCHE
+04BD ; [.25CB.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN CHE
+04BC ; [.25CB.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+04BF ; [.25CF.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+04BE ; [.25CF.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+045F ; [.25D3.0020.0002] # CYRILLIC SMALL LETTER DZHE
+040F ; [.25D3.0020.0008] # CYRILLIC CAPITAL LETTER DZHE
+0448 ; [.25D7.0020.0002] # CYRILLIC SMALL LETTER SHA
+2DF2 ; [.25D7.0020.0004] # COMBINING CYRILLIC LETTER SHA
+0428 ; [.25D7.0020.0008] # CYRILLIC CAPITAL LETTER SHA
+A697 ; [.25DB.0020.0002] # CYRILLIC SMALL LETTER SHWE
+A696 ; [.25DB.0020.0008] # CYRILLIC CAPITAL LETTER SHWE
+0449 ; [.25DC.0020.0002] # CYRILLIC SMALL LETTER SHCHA
+2DF3 ; [.25DC.0020.0004] # COMBINING CYRILLIC LETTER SHCHA
+0429 ; [.25DC.0020.0008] # CYRILLIC CAPITAL LETTER SHCHA
+A64F ; [.25E0.0020.0002] # CYRILLIC SMALL LETTER NEUTRAL YER
+A64E ; [.25E0.0020.0008] # CYRILLIC CAPITAL LETTER NEUTRAL YER
+2E2F ; [.25E1.0020.0002] # VERTICAL TILDE
+A67F ; [.25E2.0020.0002] # CYRILLIC PAYEROK
+044A ; [.25E3.0020.0002] # CYRILLIC SMALL LETTER HARD SIGN
+1C86 ; [.25E3.0020.0004] # CYRILLIC SMALL LETTER TALL HARD SIGN
+A678 ; [.25E3.0020.0004] # COMBINING CYRILLIC LETTER HARD SIGN
+042A ; [.25E3.0020.0008] # CYRILLIC CAPITAL LETTER HARD SIGN
+A69C ; [.25E3.0020.0014] # MODIFIER LETTER CYRILLIC HARD SIGN
+A651 ; [.25E7.0020.0002] # CYRILLIC SMALL LETTER YERU WITH BACK YER
+A650 ; [.25E7.0020.0008] # CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+044B ; [.25E8.0020.0002] # CYRILLIC SMALL LETTER YERU
+A679 ; [.25E8.0020.0004] # COMBINING CYRILLIC LETTER YERU
+042B ; [.25E8.0020.0008] # CYRILLIC CAPITAL LETTER YERU
+04F9 ; [.25E8.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.25E8.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+044C ; [.25EC.0020.0002] # CYRILLIC SMALL LETTER SOFT SIGN
+A67A ; [.25EC.0020.0004] # COMBINING CYRILLIC LETTER SOFT SIGN
+042C ; [.25EC.0020.0008] # CYRILLIC CAPITAL LETTER SOFT SIGN
+A69D ; [.25EC.0020.0014] # MODIFIER LETTER CYRILLIC SOFT SIGN
+048D ; [.25F0.0020.0002] # CYRILLIC SMALL LETTER SEMISOFT SIGN
+048C ; [.25F0.0020.0008] # CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+0463 ; [.25F4.0020.0002] # CYRILLIC SMALL LETTER YAT
+1C87 ; [.25F4.0020.0004] # CYRILLIC SMALL LETTER TALL YAT
+2DFA ; [.25F4.0020.0004] # COMBINING CYRILLIC LETTER YAT
+0462 ; [.25F4.0020.0008] # CYRILLIC CAPITAL LETTER YAT
+A653 ; [.25F8.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED YAT
+A652 ; [.25F8.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED YAT
+044D ; [.25F9.0020.0002] # CYRILLIC SMALL LETTER E
+042D ; [.25F9.0020.0008] # CYRILLIC CAPITAL LETTER E
+04ED ; [.25F9.0020.0002][.0000.002B.0002] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.25F9.0020.0008][.0000.002B.0002] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+044E ; [.25FD.0020.0002] # CYRILLIC SMALL LETTER YU
+2DFB ; [.25FD.0020.0004] # COMBINING CYRILLIC LETTER YU
+042E ; [.25FD.0020.0008] # CYRILLIC CAPITAL LETTER YU
+A655 ; [.2601.0020.0002] # CYRILLIC SMALL LETTER REVERSED YU
+A654 ; [.2601.0020.0008] # CYRILLIC CAPITAL LETTER REVERSED YU
+A657 ; [.2602.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED A
+2DFC ; [.2602.0020.0004] # COMBINING CYRILLIC LETTER IOTIFIED A
+A656 ; [.2602.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED A
+044F ; [.2603.0020.0002] # CYRILLIC SMALL LETTER YA
+042F ; [.2603.0020.0008] # CYRILLIC CAPITAL LETTER YA
+0519 ; [.2607.0020.0002] # CYRILLIC SMALL LETTER YAE
+0518 ; [.2607.0020.0008] # CYRILLIC CAPITAL LETTER YAE
+0465 ; [.2608.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED E
+A69F ; [.2608.0020.0004] # COMBINING CYRILLIC LETTER IOTIFIED E
+0464 ; [.2608.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED E
+0467 ; [.260C.0020.0002] # CYRILLIC SMALL LETTER LITTLE YUS
+2DFD ; [.260C.0020.0004] # COMBINING CYRILLIC LETTER LITTLE YUS
+0466 ; [.260C.0020.0008] # CYRILLIC CAPITAL LETTER LITTLE YUS
+A659 ; [.2610.0020.0002] # CYRILLIC SMALL LETTER CLOSED LITTLE YUS
+A658 ; [.2610.0020.0008] # CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+046B ; [.2611.0020.0002] # CYRILLIC SMALL LETTER BIG YUS
+2DFE ; [.2611.0020.0004] # COMBINING CYRILLIC LETTER BIG YUS
+046A ; [.2611.0020.0008] # CYRILLIC CAPITAL LETTER BIG YUS
+A65B ; [.2615.0020.0002] # CYRILLIC SMALL LETTER BLENDED YUS
+A65A ; [.2615.0020.0008] # CYRILLIC CAPITAL LETTER BLENDED YUS
+0469 ; [.2616.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+0468 ; [.2616.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+A65D ; [.261A.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
+A65C ; [.261A.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+046D ; [.261B.0020.0002] # CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+2DFF ; [.261B.0020.0004] # COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+046C ; [.261B.0020.0008] # CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+046F ; [.261F.0020.0002] # CYRILLIC SMALL LETTER KSI
+046E ; [.261F.0020.0008] # CYRILLIC CAPITAL LETTER KSI
+0471 ; [.2623.0020.0002] # CYRILLIC SMALL LETTER PSI
+0470 ; [.2623.0020.0008] # CYRILLIC CAPITAL LETTER PSI
+0473 ; [.2627.0020.0002] # CYRILLIC SMALL LETTER FITA
+2DF4 ; [.2627.0020.0004] # COMBINING CYRILLIC LETTER FITA
+0472 ; [.2627.0020.0008] # CYRILLIC CAPITAL LETTER FITA
+0475 ; [.262B.0020.0002] # CYRILLIC SMALL LETTER IZHITSA
+0474 ; [.262B.0020.0008] # CYRILLIC CAPITAL LETTER IZHITSA
+0477 ; [.262B.0020.0002][.0000.003C.0002] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.262B.0020.0008][.0000.003C.0002] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+A65F ; [.262F.0020.0002] # CYRILLIC SMALL LETTER YN
+A65E ; [.262F.0020.0008] # CYRILLIC CAPITAL LETTER YN
+04A9 ; [.2630.0020.0002] # CYRILLIC SMALL LETTER ABKHASIAN HA
+04A8 ; [.2630.0020.0008] # CYRILLIC CAPITAL LETTER ABKHASIAN HA
+051D ; [.2634.0020.0002] # CYRILLIC SMALL LETTER WE
+051C ; [.2634.0020.0008] # CYRILLIC CAPITAL LETTER WE
+04CF ; [.2635.0020.0002] # CYRILLIC SMALL LETTER PALOCHKA
+04C0 ; [.2635.0020.0008] # CYRILLIC LETTER PALOCHKA
+2C30 ; [.2639.0020.0002] # GLAGOLITIC SMALL LETTER AZU
+1E000 ; [.2639.0020.0004] # COMBINING GLAGOLITIC LETTER AZU
+2C00 ; [.2639.0020.0008] # GLAGOLITIC CAPITAL LETTER AZU
+2C31 ; [.263A.0020.0002] # GLAGOLITIC SMALL LETTER BUKY
+1E001 ; [.263A.0020.0004] # COMBINING GLAGOLITIC LETTER BUKY
+2C01 ; [.263A.0020.0008] # GLAGOLITIC CAPITAL LETTER BUKY
+2C32 ; [.263B.0020.0002] # GLAGOLITIC SMALL LETTER VEDE
+1E002 ; [.263B.0020.0004] # COMBINING GLAGOLITIC LETTER VEDE
+2C02 ; [.263B.0020.0008] # GLAGOLITIC CAPITAL LETTER VEDE
+2C33 ; [.263C.0020.0002] # GLAGOLITIC SMALL LETTER GLAGOLI
+1E003 ; [.263C.0020.0004] # COMBINING GLAGOLITIC LETTER GLAGOLI
+2C03 ; [.263C.0020.0008] # GLAGOLITIC CAPITAL LETTER GLAGOLI
+2C34 ; [.263D.0020.0002] # GLAGOLITIC SMALL LETTER DOBRO
+1E004 ; [.263D.0020.0004] # COMBINING GLAGOLITIC LETTER DOBRO
+2C04 ; [.263D.0020.0008] # GLAGOLITIC CAPITAL LETTER DOBRO
+2C35 ; [.263E.0020.0002] # GLAGOLITIC SMALL LETTER YESTU
+1E005 ; [.263E.0020.0004] # COMBINING GLAGOLITIC LETTER YESTU
+2C05 ; [.263E.0020.0008] # GLAGOLITIC CAPITAL LETTER YESTU
+2C36 ; [.263F.0020.0002] # GLAGOLITIC SMALL LETTER ZHIVETE
+1E006 ; [.263F.0020.0004] # COMBINING GLAGOLITIC LETTER ZHIVETE
+2C06 ; [.263F.0020.0008] # GLAGOLITIC CAPITAL LETTER ZHIVETE
+2C37 ; [.2640.0020.0002] # GLAGOLITIC SMALL LETTER DZELO
+2C07 ; [.2640.0020.0008] # GLAGOLITIC CAPITAL LETTER DZELO
+2C38 ; [.2641.0020.0002] # GLAGOLITIC SMALL LETTER ZEMLJA
+1E008 ; [.2641.0020.0004] # COMBINING GLAGOLITIC LETTER ZEMLJA
+2C08 ; [.2641.0020.0008] # GLAGOLITIC CAPITAL LETTER ZEMLJA
+2C39 ; [.2642.0020.0002] # GLAGOLITIC SMALL LETTER IZHE
+1E009 ; [.2642.0020.0004] # COMBINING GLAGOLITIC LETTER IZHE
+2C09 ; [.2642.0020.0008] # GLAGOLITIC CAPITAL LETTER IZHE
+2C3A ; [.2643.0020.0002] # GLAGOLITIC SMALL LETTER INITIAL IZHE
+1E00A ; [.2643.0020.0004] # COMBINING GLAGOLITIC LETTER INITIAL IZHE
+2C0A ; [.2643.0020.0008] # GLAGOLITIC CAPITAL LETTER INITIAL IZHE
+2C3B ; [.2644.0020.0002] # GLAGOLITIC SMALL LETTER I
+1E00B ; [.2644.0020.0004] # COMBINING GLAGOLITIC LETTER I
+2C0B ; [.2644.0020.0008] # GLAGOLITIC CAPITAL LETTER I
+2C3C ; [.2645.0020.0002] # GLAGOLITIC SMALL LETTER DJERVI
+1E00C ; [.2645.0020.0004] # COMBINING GLAGOLITIC LETTER DJERVI
+2C0C ; [.2645.0020.0008] # GLAGOLITIC CAPITAL LETTER DJERVI
+2C3D ; [.2646.0020.0002] # GLAGOLITIC SMALL LETTER KAKO
+1E00D ; [.2646.0020.0004] # COMBINING GLAGOLITIC LETTER KAKO
+2C0D ; [.2646.0020.0008] # GLAGOLITIC CAPITAL LETTER KAKO
+2C3E ; [.2647.0020.0002] # GLAGOLITIC SMALL LETTER LJUDIJE
+1E00E ; [.2647.0020.0004] # COMBINING GLAGOLITIC LETTER LJUDIJE
+2C0E ; [.2647.0020.0008] # GLAGOLITIC CAPITAL LETTER LJUDIJE
+2C3F ; [.2648.0020.0002] # GLAGOLITIC SMALL LETTER MYSLITE
+1E00F ; [.2648.0020.0004] # COMBINING GLAGOLITIC LETTER MYSLITE
+2C0F ; [.2648.0020.0008] # GLAGOLITIC CAPITAL LETTER MYSLITE
+2C40 ; [.2649.0020.0002] # GLAGOLITIC SMALL LETTER NASHI
+1E010 ; [.2649.0020.0004] # COMBINING GLAGOLITIC LETTER NASHI
+2C10 ; [.2649.0020.0008] # GLAGOLITIC CAPITAL LETTER NASHI
+2C41 ; [.264A.0020.0002] # GLAGOLITIC SMALL LETTER ONU
+1E011 ; [.264A.0020.0004] # COMBINING GLAGOLITIC LETTER ONU
+2C11 ; [.264A.0020.0008] # GLAGOLITIC CAPITAL LETTER ONU
+2C42 ; [.264B.0020.0002] # GLAGOLITIC SMALL LETTER POKOJI
+1E012 ; [.264B.0020.0004] # COMBINING GLAGOLITIC LETTER POKOJI
+2C12 ; [.264B.0020.0008] # GLAGOLITIC CAPITAL LETTER POKOJI
+2C43 ; [.264C.0020.0002] # GLAGOLITIC SMALL LETTER RITSI
+1E013 ; [.264C.0020.0004] # COMBINING GLAGOLITIC LETTER RITSI
+2C13 ; [.264C.0020.0008] # GLAGOLITIC CAPITAL LETTER RITSI
+2C44 ; [.264D.0020.0002] # GLAGOLITIC SMALL LETTER SLOVO
+1E014 ; [.264D.0020.0004] # COMBINING GLAGOLITIC LETTER SLOVO
+2C14 ; [.264D.0020.0008] # GLAGOLITIC CAPITAL LETTER SLOVO
+2C45 ; [.264E.0020.0002] # GLAGOLITIC SMALL LETTER TVRIDO
+1E015 ; [.264E.0020.0004] # COMBINING GLAGOLITIC LETTER TVRIDO
+2C15 ; [.264E.0020.0008] # GLAGOLITIC CAPITAL LETTER TVRIDO
+2C46 ; [.264F.0020.0002] # GLAGOLITIC SMALL LETTER UKU
+1E016 ; [.264F.0020.0004] # COMBINING GLAGOLITIC LETTER UKU
+2C16 ; [.264F.0020.0008] # GLAGOLITIC CAPITAL LETTER UKU
+2C47 ; [.2650.0020.0002] # GLAGOLITIC SMALL LETTER FRITU
+1E017 ; [.2650.0020.0004] # COMBINING GLAGOLITIC LETTER FRITU
+2C17 ; [.2650.0020.0008] # GLAGOLITIC CAPITAL LETTER FRITU
+2C48 ; [.2651.0020.0002] # GLAGOLITIC SMALL LETTER HERU
+1E018 ; [.2651.0020.0004] # COMBINING GLAGOLITIC LETTER HERU
+2C18 ; [.2651.0020.0008] # GLAGOLITIC CAPITAL LETTER HERU
+2C49 ; [.2652.0020.0002] # GLAGOLITIC SMALL LETTER OTU
+2C19 ; [.2652.0020.0008] # GLAGOLITIC CAPITAL LETTER OTU
+2C4A ; [.2653.0020.0002] # GLAGOLITIC SMALL LETTER PE
+2C1A ; [.2653.0020.0008] # GLAGOLITIC CAPITAL LETTER PE
+2C4B ; [.2654.0020.0002] # GLAGOLITIC SMALL LETTER SHTA
+1E01B ; [.2654.0020.0004] # COMBINING GLAGOLITIC LETTER SHTA
+2C1B ; [.2654.0020.0008] # GLAGOLITIC CAPITAL LETTER SHTA
+2C4C ; [.2655.0020.0002] # GLAGOLITIC SMALL LETTER TSI
+1E01C ; [.2655.0020.0004] # COMBINING GLAGOLITIC LETTER TSI
+2C1C ; [.2655.0020.0008] # GLAGOLITIC CAPITAL LETTER TSI
+2C4D ; [.2656.0020.0002] # GLAGOLITIC SMALL LETTER CHRIVI
+1E01D ; [.2656.0020.0004] # COMBINING GLAGOLITIC LETTER CHRIVI
+2C1D ; [.2656.0020.0008] # GLAGOLITIC CAPITAL LETTER CHRIVI
+2C4E ; [.2657.0020.0002] # GLAGOLITIC SMALL LETTER SHA
+1E01E ; [.2657.0020.0004] # COMBINING GLAGOLITIC LETTER SHA
+2C1E ; [.2657.0020.0008] # GLAGOLITIC CAPITAL LETTER SHA
+2C4F ; [.2658.0020.0002] # GLAGOLITIC SMALL LETTER YERU
+1E01F ; [.2658.0020.0004] # COMBINING GLAGOLITIC LETTER YERU
+2C1F ; [.2658.0020.0008] # GLAGOLITIC CAPITAL LETTER YERU
+2C50 ; [.2659.0020.0002] # GLAGOLITIC SMALL LETTER YERI
+1E020 ; [.2659.0020.0004] # COMBINING GLAGOLITIC LETTER YERI
+2C20 ; [.2659.0020.0008] # GLAGOLITIC CAPITAL LETTER YERI
+2C51 ; [.265A.0020.0002] # GLAGOLITIC SMALL LETTER YATI
+1E021 ; [.265A.0020.0004] # COMBINING GLAGOLITIC LETTER YATI
+2C21 ; [.265A.0020.0008] # GLAGOLITIC CAPITAL LETTER YATI
+2C52 ; [.265B.0020.0002] # GLAGOLITIC SMALL LETTER SPIDERY HA
+2C22 ; [.265B.0020.0008] # GLAGOLITIC CAPITAL LETTER SPIDERY HA
+2C53 ; [.265C.0020.0002] # GLAGOLITIC SMALL LETTER YU
+1E023 ; [.265C.0020.0004] # COMBINING GLAGOLITIC LETTER YU
+2C23 ; [.265C.0020.0008] # GLAGOLITIC CAPITAL LETTER YU
+2C54 ; [.265D.0020.0002] # GLAGOLITIC SMALL LETTER SMALL YUS
+1E024 ; [.265D.0020.0004] # COMBINING GLAGOLITIC LETTER SMALL YUS
+2C24 ; [.265D.0020.0008] # GLAGOLITIC CAPITAL LETTER SMALL YUS
+2C55 ; [.265E.0020.0002] # GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL
+2C25 ; [.265E.0020.0008] # GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
+2C56 ; [.265F.0020.0002] # GLAGOLITIC SMALL LETTER YO
+1E026 ; [.265F.0020.0004] # COMBINING GLAGOLITIC LETTER YO
+2C26 ; [.265F.0020.0008] # GLAGOLITIC CAPITAL LETTER YO
+2C57 ; [.2660.0020.0002] # GLAGOLITIC SMALL LETTER IOTATED SMALL YUS
+1E027 ; [.2660.0020.0004] # COMBINING GLAGOLITIC LETTER IOTATED SMALL YUS
+2C27 ; [.2660.0020.0008] # GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
+2C58 ; [.2661.0020.0002] # GLAGOLITIC SMALL LETTER BIG YUS
+1E028 ; [.2661.0020.0004] # COMBINING GLAGOLITIC LETTER BIG YUS
+2C28 ; [.2661.0020.0008] # GLAGOLITIC CAPITAL LETTER BIG YUS
+2C59 ; [.2662.0020.0002] # GLAGOLITIC SMALL LETTER IOTATED BIG YUS
+1E029 ; [.2662.0020.0004] # COMBINING GLAGOLITIC LETTER IOTATED BIG YUS
+2C29 ; [.2662.0020.0008] # GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
+2C5A ; [.2663.0020.0002] # GLAGOLITIC SMALL LETTER FITA
+1E02A ; [.2663.0020.0004] # COMBINING GLAGOLITIC LETTER FITA
+2C2A ; [.2663.0020.0008] # GLAGOLITIC CAPITAL LETTER FITA
+2C5B ; [.2664.0020.0002] # GLAGOLITIC SMALL LETTER IZHITSA
+2C2B ; [.2664.0020.0008] # GLAGOLITIC CAPITAL LETTER IZHITSA
+2C5C ; [.2665.0020.0002] # GLAGOLITIC SMALL LETTER SHTAPIC
+2C2C ; [.2665.0020.0008] # GLAGOLITIC CAPITAL LETTER SHTAPIC
+2C5D ; [.2666.0020.0002] # GLAGOLITIC SMALL LETTER TROKUTASTI A
+2C2D ; [.2666.0020.0008] # GLAGOLITIC CAPITAL LETTER TROKUTASTI A
+2C5E ; [.2667.0020.0002] # GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+2C2E ; [.2667.0020.0008] # GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+2C5F ; [.2668.0020.0002] # GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
+2C2F ; [.2668.0020.0008] # GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI
+10350 ; [.2669.0020.0002] # OLD PERMIC LETTER AN
+10376 ; [.2669.0020.0004] # COMBINING OLD PERMIC LETTER AN
+10351 ; [.266A.0020.0002] # OLD PERMIC LETTER BUR
+10352 ; [.266B.0020.0002] # OLD PERMIC LETTER GAI
+10353 ; [.266C.0020.0002] # OLD PERMIC LETTER DOI
+10377 ; [.266C.0020.0004] # COMBINING OLD PERMIC LETTER DOI
+10354 ; [.266D.0020.0002] # OLD PERMIC LETTER E
+10355 ; [.266E.0020.0002] # OLD PERMIC LETTER ZHOI
+10356 ; [.266F.0020.0002] # OLD PERMIC LETTER DZHOI
+10357 ; [.2670.0020.0002] # OLD PERMIC LETTER ZATA
+10378 ; [.2670.0020.0004] # COMBINING OLD PERMIC LETTER ZATA
+10358 ; [.2671.0020.0002] # OLD PERMIC LETTER DZITA
+10359 ; [.2672.0020.0002] # OLD PERMIC LETTER I
+1035A ; [.2673.0020.0002] # OLD PERMIC LETTER KOKE
+1035B ; [.2674.0020.0002] # OLD PERMIC LETTER LEI
+1035C ; [.2675.0020.0002] # OLD PERMIC LETTER MENOE
+1035D ; [.2676.0020.0002] # OLD PERMIC LETTER NENOE
+10379 ; [.2676.0020.0004] # COMBINING OLD PERMIC LETTER NENOE
+1035E ; [.2677.0020.0002] # OLD PERMIC LETTER VOOI
+1035F ; [.2678.0020.0002] # OLD PERMIC LETTER PEEI
+10360 ; [.2679.0020.0002] # OLD PERMIC LETTER REI
+10361 ; [.267A.0020.0002] # OLD PERMIC LETTER SII
+1037A ; [.267A.0020.0004] # COMBINING OLD PERMIC LETTER SII
+10362 ; [.267B.0020.0002] # OLD PERMIC LETTER TAI
+10363 ; [.267C.0020.0002] # OLD PERMIC LETTER U
+10364 ; [.267D.0020.0002] # OLD PERMIC LETTER CHERY
+10365 ; [.267E.0020.0002] # OLD PERMIC LETTER SHOOI
+10366 ; [.267F.0020.0002] # OLD PERMIC LETTER SHCHOOI
+10367 ; [.2680.0020.0002] # OLD PERMIC LETTER YRY
+10368 ; [.2681.0020.0002] # OLD PERMIC LETTER YERU
+10369 ; [.2682.0020.0002] # OLD PERMIC LETTER O
+1036A ; [.2683.0020.0002] # OLD PERMIC LETTER OO
+1036B ; [.2684.0020.0002] # OLD PERMIC LETTER EF
+1036C ; [.2685.0020.0002] # OLD PERMIC LETTER HA
+1036D ; [.2686.0020.0002] # OLD PERMIC LETTER TSIU
+1036E ; [.2687.0020.0002] # OLD PERMIC LETTER VER
+1036F ; [.2688.0020.0002] # OLD PERMIC LETTER YER
+10370 ; [.2689.0020.0002] # OLD PERMIC LETTER YERI
+10371 ; [.268A.0020.0002] # OLD PERMIC LETTER YAT
+10372 ; [.268B.0020.0002] # OLD PERMIC LETTER IE
+10373 ; [.268C.0020.0002] # OLD PERMIC LETTER YU
+10374 ; [.268D.0020.0002] # OLD PERMIC LETTER YA
+10375 ; [.268E.0020.0002] # OLD PERMIC LETTER IA
+10D0 ; [.268F.0020.0002] # GEORGIAN LETTER AN
+1C90 ; [.268F.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER AN
+2D00 ; [.2690.0020.0002] # GEORGIAN SMALL LETTER AN
+10A0 ; [.2690.0020.0008] # GEORGIAN CAPITAL LETTER AN
+10D1 ; [.2691.0020.0002] # GEORGIAN LETTER BAN
+1C91 ; [.2691.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER BAN
+2D01 ; [.2692.0020.0002] # GEORGIAN SMALL LETTER BAN
+10A1 ; [.2692.0020.0008] # GEORGIAN CAPITAL LETTER BAN
+10D2 ; [.2693.0020.0002] # GEORGIAN LETTER GAN
+1C92 ; [.2693.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER GAN
+2D02 ; [.2694.0020.0002] # GEORGIAN SMALL LETTER GAN
+10A2 ; [.2694.0020.0008] # GEORGIAN CAPITAL LETTER GAN
+10D3 ; [.2695.0020.0002] # GEORGIAN LETTER DON
+1C93 ; [.2695.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER DON
+2D03 ; [.2696.0020.0002] # GEORGIAN SMALL LETTER DON
+10A3 ; [.2696.0020.0008] # GEORGIAN CAPITAL LETTER DON
+10D4 ; [.2697.0020.0002] # GEORGIAN LETTER EN
+1C94 ; [.2697.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER EN
+2D04 ; [.2698.0020.0002] # GEORGIAN SMALL LETTER EN
+10A4 ; [.2698.0020.0008] # GEORGIAN CAPITAL LETTER EN
+10D5 ; [.2699.0020.0002] # GEORGIAN LETTER VIN
+1C95 ; [.2699.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER VIN
+2D05 ; [.269A.0020.0002] # GEORGIAN SMALL LETTER VIN
+10A5 ; [.269A.0020.0008] # GEORGIAN CAPITAL LETTER VIN
+10D6 ; [.269B.0020.0002] # GEORGIAN LETTER ZEN
+1C96 ; [.269B.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER ZEN
+2D06 ; [.269C.0020.0002] # GEORGIAN SMALL LETTER ZEN
+10A6 ; [.269C.0020.0008] # GEORGIAN CAPITAL LETTER ZEN
+10F1 ; [.269D.0020.0002] # GEORGIAN LETTER HE
+1CB1 ; [.269D.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HE
+2D21 ; [.269E.0020.0002] # GEORGIAN SMALL LETTER HE
+10C1 ; [.269E.0020.0008] # GEORGIAN CAPITAL LETTER HE
+10D7 ; [.269F.0020.0002] # GEORGIAN LETTER TAN
+1C97 ; [.269F.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER TAN
+2D07 ; [.26A0.0020.0002] # GEORGIAN SMALL LETTER TAN
+10A7 ; [.26A0.0020.0008] # GEORGIAN CAPITAL LETTER TAN
+10D8 ; [.26A1.0020.0002] # GEORGIAN LETTER IN
+1C98 ; [.26A1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER IN
+2D08 ; [.26A2.0020.0002] # GEORGIAN SMALL LETTER IN
+10A8 ; [.26A2.0020.0008] # GEORGIAN CAPITAL LETTER IN
+10D9 ; [.26A3.0020.0002] # GEORGIAN LETTER KAN
+1C99 ; [.26A3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER KAN
+2D09 ; [.26A4.0020.0002] # GEORGIAN SMALL LETTER KAN
+10A9 ; [.26A4.0020.0008] # GEORGIAN CAPITAL LETTER KAN
+10DA ; [.26A5.0020.0002] # GEORGIAN LETTER LAS
+1C9A ; [.26A5.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER LAS
+2D0A ; [.26A6.0020.0002] # GEORGIAN SMALL LETTER LAS
+10AA ; [.26A6.0020.0008] # GEORGIAN CAPITAL LETTER LAS
+10DB ; [.26A7.0020.0002] # GEORGIAN LETTER MAN
+1C9B ; [.26A7.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER MAN
+2D0B ; [.26A8.0020.0002] # GEORGIAN SMALL LETTER MAN
+10AB ; [.26A8.0020.0008] # GEORGIAN CAPITAL LETTER MAN
+10DC ; [.26A9.0020.0002] # GEORGIAN LETTER NAR
+1C9C ; [.26A9.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER NAR
+10FC ; [.26A9.0020.0014] # MODIFIER LETTER GEORGIAN NAR
+2D0C ; [.26AA.0020.0002] # GEORGIAN SMALL LETTER NAR
+10AC ; [.26AA.0020.0008] # GEORGIAN CAPITAL LETTER NAR
+10F2 ; [.26AB.0020.0002] # GEORGIAN LETTER HIE
+1CB2 ; [.26AB.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HIE
+2D22 ; [.26AC.0020.0002] # GEORGIAN SMALL LETTER HIE
+10C2 ; [.26AC.0020.0008] # GEORGIAN CAPITAL LETTER HIE
+10DD ; [.26AD.0020.0002] # GEORGIAN LETTER ON
+1C9D ; [.26AD.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER ON
+2D0D ; [.26AE.0020.0002] # GEORGIAN SMALL LETTER ON
+10AD ; [.26AE.0020.0008] # GEORGIAN CAPITAL LETTER ON
+10DE ; [.26AF.0020.0002] # GEORGIAN LETTER PAR
+1C9E ; [.26AF.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER PAR
+2D0E ; [.26B0.0020.0002] # GEORGIAN SMALL LETTER PAR
+10AE ; [.26B0.0020.0008] # GEORGIAN CAPITAL LETTER PAR
+10DF ; [.26B1.0020.0002] # GEORGIAN LETTER ZHAR
+1C9F ; [.26B1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER ZHAR
+2D0F ; [.26B2.0020.0002] # GEORGIAN SMALL LETTER ZHAR
+10AF ; [.26B2.0020.0008] # GEORGIAN CAPITAL LETTER ZHAR
+10E0 ; [.26B3.0020.0002] # GEORGIAN LETTER RAE
+1CA0 ; [.26B3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER RAE
+2D10 ; [.26B4.0020.0002] # GEORGIAN SMALL LETTER RAE
+10B0 ; [.26B4.0020.0008] # GEORGIAN CAPITAL LETTER RAE
+10E1 ; [.26B5.0020.0002] # GEORGIAN LETTER SAN
+1CA1 ; [.26B5.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER SAN
+2D11 ; [.26B6.0020.0002] # GEORGIAN SMALL LETTER SAN
+10B1 ; [.26B6.0020.0008] # GEORGIAN CAPITAL LETTER SAN
+10E2 ; [.26B7.0020.0002] # GEORGIAN LETTER TAR
+1CA2 ; [.26B7.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER TAR
+2D12 ; [.26B8.0020.0002] # GEORGIAN SMALL LETTER TAR
+10B2 ; [.26B8.0020.0008] # GEORGIAN CAPITAL LETTER TAR
+10F3 ; [.26B9.0020.0002] # GEORGIAN LETTER WE
+1CB3 ; [.26B9.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER WE
+2D23 ; [.26BA.0020.0002] # GEORGIAN SMALL LETTER WE
+10C3 ; [.26BA.0020.0008] # GEORGIAN CAPITAL LETTER WE
+10E3 ; [.26BB.0020.0002] # GEORGIAN LETTER UN
+1CA3 ; [.26BB.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER UN
+2D13 ; [.26BC.0020.0002] # GEORGIAN SMALL LETTER UN
+10B3 ; [.26BC.0020.0008] # GEORGIAN CAPITAL LETTER UN
+10E4 ; [.26BD.0020.0002] # GEORGIAN LETTER PHAR
+1CA4 ; [.26BD.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER PHAR
+2D14 ; [.26BE.0020.0002] # GEORGIAN SMALL LETTER PHAR
+10B4 ; [.26BE.0020.0008] # GEORGIAN CAPITAL LETTER PHAR
+10E5 ; [.26BF.0020.0002] # GEORGIAN LETTER KHAR
+1CA5 ; [.26BF.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER KHAR
+2D15 ; [.26C0.0020.0002] # GEORGIAN SMALL LETTER KHAR
+10B5 ; [.26C0.0020.0008] # GEORGIAN CAPITAL LETTER KHAR
+10E6 ; [.26C1.0020.0002] # GEORGIAN LETTER GHAN
+1CA6 ; [.26C1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER GHAN
+2D16 ; [.26C2.0020.0002] # GEORGIAN SMALL LETTER GHAN
+10B6 ; [.26C2.0020.0008] # GEORGIAN CAPITAL LETTER GHAN
+10E7 ; [.26C3.0020.0002] # GEORGIAN LETTER QAR
+1CA7 ; [.26C3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER QAR
+2D17 ; [.26C4.0020.0002] # GEORGIAN SMALL LETTER QAR
+10B7 ; [.26C4.0020.0008] # GEORGIAN CAPITAL LETTER QAR
+10E8 ; [.26C5.0020.0002] # GEORGIAN LETTER SHIN
+1CA8 ; [.26C5.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER SHIN
+2D18 ; [.26C6.0020.0002] # GEORGIAN SMALL LETTER SHIN
+10B8 ; [.26C6.0020.0008] # GEORGIAN CAPITAL LETTER SHIN
+10E9 ; [.26C7.0020.0002] # GEORGIAN LETTER CHIN
+1CA9 ; [.26C7.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER CHIN
+2D19 ; [.26C8.0020.0002] # GEORGIAN SMALL LETTER CHIN
+10B9 ; [.26C8.0020.0008] # GEORGIAN CAPITAL LETTER CHIN
+10EA ; [.26C9.0020.0002] # GEORGIAN LETTER CAN
+1CAA ; [.26C9.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER CAN
+2D1A ; [.26CA.0020.0002] # GEORGIAN SMALL LETTER CAN
+10BA ; [.26CA.0020.0008] # GEORGIAN CAPITAL LETTER CAN
+10EB ; [.26CB.0020.0002] # GEORGIAN LETTER JIL
+1CAB ; [.26CB.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER JIL
+2D1B ; [.26CC.0020.0002] # GEORGIAN SMALL LETTER JIL
+10BB ; [.26CC.0020.0008] # GEORGIAN CAPITAL LETTER JIL
+10EC ; [.26CD.0020.0002] # GEORGIAN LETTER CIL
+1CAC ; [.26CD.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER CIL
+2D1C ; [.26CE.0020.0002] # GEORGIAN SMALL LETTER CIL
+10BC ; [.26CE.0020.0008] # GEORGIAN CAPITAL LETTER CIL
+10ED ; [.26CF.0020.0002] # GEORGIAN LETTER CHAR
+1CAD ; [.26CF.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER CHAR
+2D1D ; [.26D0.0020.0002] # GEORGIAN SMALL LETTER CHAR
+10BD ; [.26D0.0020.0008] # GEORGIAN CAPITAL LETTER CHAR
+10EE ; [.26D1.0020.0002] # GEORGIAN LETTER XAN
+1CAE ; [.26D1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER XAN
+2D1E ; [.26D2.0020.0002] # GEORGIAN SMALL LETTER XAN
+10BE ; [.26D2.0020.0008] # GEORGIAN CAPITAL LETTER XAN
+10F4 ; [.26D3.0020.0002] # GEORGIAN LETTER HAR
+1CB4 ; [.26D3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HAR
+2D24 ; [.26D4.0020.0002] # GEORGIAN SMALL LETTER HAR
+10C4 ; [.26D4.0020.0008] # GEORGIAN CAPITAL LETTER HAR
+10EF ; [.26D5.0020.0002] # GEORGIAN LETTER JHAN
+1CAF ; [.26D5.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER JHAN
+2D1F ; [.26D6.0020.0002] # GEORGIAN SMALL LETTER JHAN
+10BF ; [.26D6.0020.0008] # GEORGIAN CAPITAL LETTER JHAN
+10F0 ; [.26D7.0020.0002] # GEORGIAN LETTER HAE
+1CB0 ; [.26D7.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HAE
+2D20 ; [.26D8.0020.0002] # GEORGIAN SMALL LETTER HAE
+10C0 ; [.26D8.0020.0008] # GEORGIAN CAPITAL LETTER HAE
+10F5 ; [.26D9.0020.0002] # GEORGIAN LETTER HOE
+1CB5 ; [.26D9.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HOE
+2D25 ; [.26DA.0020.0002] # GEORGIAN SMALL LETTER HOE
+10C5 ; [.26DA.0020.0008] # GEORGIAN CAPITAL LETTER HOE
+10F6 ; [.26DB.0020.0002] # GEORGIAN LETTER FI
+1CB6 ; [.26DB.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER FI
+10F7 ; [.26DC.0020.0002] # GEORGIAN LETTER YN
+1CB7 ; [.26DC.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER YN
+2D27 ; [.26DD.0020.0002] # GEORGIAN SMALL LETTER YN
+10C7 ; [.26DD.0020.0008] # GEORGIAN CAPITAL LETTER YN
+10F8 ; [.26DE.0020.0002] # GEORGIAN LETTER ELIFI
+1CB8 ; [.26DE.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER ELIFI
+10F9 ; [.26DF.0020.0002] # GEORGIAN LETTER TURNED GAN
+1CB9 ; [.26DF.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN
+10FA ; [.26E0.0020.0002] # GEORGIAN LETTER AIN
+1CBA ; [.26E0.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER AIN
+10FD ; [.26E1.0020.0002] # GEORGIAN LETTER AEN
+1CBD ; [.26E1.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER AEN
+2D2D ; [.26E2.0020.0002] # GEORGIAN SMALL LETTER AEN
+10CD ; [.26E2.0020.0008] # GEORGIAN CAPITAL LETTER AEN
+10FE ; [.26E3.0020.0002] # GEORGIAN LETTER HARD SIGN
+1CBE ; [.26E3.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN
+10FF ; [.26E4.0020.0002] # GEORGIAN LETTER LABIAL SIGN
+1CBF ; [.26E4.0020.0008] # GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+0561 ; [.26E5.0020.0002] # ARMENIAN SMALL LETTER AYB
+0531 ; [.26E5.0020.0008] # ARMENIAN CAPITAL LETTER AYB
+0560 ; [.26E6.0020.0002] # ARMENIAN SMALL LETTER TURNED AYB
+0562 ; [.26E7.0020.0002] # ARMENIAN SMALL LETTER BEN
+0532 ; [.26E7.0020.0008] # ARMENIAN CAPITAL LETTER BEN
+0563 ; [.26E8.0020.0002] # ARMENIAN SMALL LETTER GIM
+0533 ; [.26E8.0020.0008] # ARMENIAN CAPITAL LETTER GIM
+0564 ; [.26E9.0020.0002] # ARMENIAN SMALL LETTER DA
+0534 ; [.26E9.0020.0008] # ARMENIAN CAPITAL LETTER DA
+0565 ; [.26EA.0020.0002] # ARMENIAN SMALL LETTER ECH
+0535 ; [.26EA.0020.0008] # ARMENIAN CAPITAL LETTER ECH
+0587 ; [.26EA.0020.0004][.2708.0020.0004] # ARMENIAN SMALL LIGATURE ECH YIWN
+0566 ; [.26EB.0020.0002] # ARMENIAN SMALL LETTER ZA
+0536 ; [.26EB.0020.0008] # ARMENIAN CAPITAL LETTER ZA
+0567 ; [.26EC.0020.0002] # ARMENIAN SMALL LETTER EH
+0537 ; [.26EC.0020.0008] # ARMENIAN CAPITAL LETTER EH
+0568 ; [.26ED.0020.0002] # ARMENIAN SMALL LETTER ET
+0538 ; [.26ED.0020.0008] # ARMENIAN CAPITAL LETTER ET
+0569 ; [.26EE.0020.0002] # ARMENIAN SMALL LETTER TO
+0539 ; [.26EE.0020.0008] # ARMENIAN CAPITAL LETTER TO
+056A ; [.26EF.0020.0002] # ARMENIAN SMALL LETTER ZHE
+053A ; [.26EF.0020.0008] # ARMENIAN CAPITAL LETTER ZHE
+056B ; [.26F0.0020.0002] # ARMENIAN SMALL LETTER INI
+053B ; [.26F0.0020.0008] # ARMENIAN CAPITAL LETTER INI
+056C ; [.26F1.0020.0002] # ARMENIAN SMALL LETTER LIWN
+053C ; [.26F1.0020.0008] # ARMENIAN CAPITAL LETTER LIWN
+056D ; [.26F2.0020.0002] # ARMENIAN SMALL LETTER XEH
+053D ; [.26F2.0020.0008] # ARMENIAN CAPITAL LETTER XEH
+056E ; [.26F3.0020.0002] # ARMENIAN SMALL LETTER CA
+053E ; [.26F3.0020.0008] # ARMENIAN CAPITAL LETTER CA
+056F ; [.26F4.0020.0002] # ARMENIAN SMALL LETTER KEN
+053F ; [.26F4.0020.0008] # ARMENIAN CAPITAL LETTER KEN
+0570 ; [.26F5.0020.0002] # ARMENIAN SMALL LETTER HO
+0540 ; [.26F5.0020.0008] # ARMENIAN CAPITAL LETTER HO
+0571 ; [.26F6.0020.0002] # ARMENIAN SMALL LETTER JA
+0541 ; [.26F6.0020.0008] # ARMENIAN CAPITAL LETTER JA
+0572 ; [.26F7.0020.0002] # ARMENIAN SMALL LETTER GHAD
+0542 ; [.26F7.0020.0008] # ARMENIAN CAPITAL LETTER GHAD
+0573 ; [.26F8.0020.0002] # ARMENIAN SMALL LETTER CHEH
+0543 ; [.26F8.0020.0008] # ARMENIAN CAPITAL LETTER CHEH
+0574 ; [.26F9.0020.0002] # ARMENIAN SMALL LETTER MEN
+0544 ; [.26F9.0020.0008] # ARMENIAN CAPITAL LETTER MEN
+FB14 ; [.26F9.0020.0004][.26EA.0020.0004] # ARMENIAN SMALL LIGATURE MEN ECH
+FB15 ; [.26F9.0020.0004][.26F0.0020.0004] # ARMENIAN SMALL LIGATURE MEN INI
+FB17 ; [.26F9.0020.0004][.26F2.0020.0004] # ARMENIAN SMALL LIGATURE MEN XEH
+FB13 ; [.26F9.0020.0004][.26FC.0020.0004] # ARMENIAN SMALL LIGATURE MEN NOW
+0575 ; [.26FA.0020.0002] # ARMENIAN SMALL LETTER YI
+0545 ; [.26FA.0020.0008] # ARMENIAN CAPITAL LETTER YI
+0588 ; [.26FB.0020.0002] # ARMENIAN SMALL LETTER YI WITH STROKE
+0576 ; [.26FC.0020.0002] # ARMENIAN SMALL LETTER NOW
+0546 ; [.26FC.0020.0008] # ARMENIAN CAPITAL LETTER NOW
+0577 ; [.26FD.0020.0002] # ARMENIAN SMALL LETTER SHA
+0547 ; [.26FD.0020.0008] # ARMENIAN CAPITAL LETTER SHA
+0578 ; [.26FE.0020.0002] # ARMENIAN SMALL LETTER VO
+0548 ; [.26FE.0020.0008] # ARMENIAN CAPITAL LETTER VO
+0579 ; [.26FF.0020.0002] # ARMENIAN SMALL LETTER CHA
+0549 ; [.26FF.0020.0008] # ARMENIAN CAPITAL LETTER CHA
+057A ; [.2700.0020.0002] # ARMENIAN SMALL LETTER PEH
+054A ; [.2700.0020.0008] # ARMENIAN CAPITAL LETTER PEH
+057B ; [.2701.0020.0002] # ARMENIAN SMALL LETTER JHEH
+054B ; [.2701.0020.0008] # ARMENIAN CAPITAL LETTER JHEH
+057C ; [.2702.0020.0002] # ARMENIAN SMALL LETTER RA
+054C ; [.2702.0020.0008] # ARMENIAN CAPITAL LETTER RA
+057D ; [.2703.0020.0002] # ARMENIAN SMALL LETTER SEH
+054D ; [.2703.0020.0008] # ARMENIAN CAPITAL LETTER SEH
+057E ; [.2704.0020.0002] # ARMENIAN SMALL LETTER VEW
+054E ; [.2704.0020.0008] # ARMENIAN CAPITAL LETTER VEW
+FB16 ; [.2704.0020.0004][.26FC.0020.0004] # ARMENIAN SMALL LIGATURE VEW NOW
+057F ; [.2705.0020.0002] # ARMENIAN SMALL LETTER TIWN
+054F ; [.2705.0020.0008] # ARMENIAN CAPITAL LETTER TIWN
+0580 ; [.2706.0020.0002] # ARMENIAN SMALL LETTER REH
+0550 ; [.2706.0020.0008] # ARMENIAN CAPITAL LETTER REH
+0581 ; [.2707.0020.0002] # ARMENIAN SMALL LETTER CO
+0551 ; [.2707.0020.0008] # ARMENIAN CAPITAL LETTER CO
+0582 ; [.2708.0020.0002] # ARMENIAN SMALL LETTER YIWN
+0552 ; [.2708.0020.0008] # ARMENIAN CAPITAL LETTER YIWN
+0583 ; [.2709.0020.0002] # ARMENIAN SMALL LETTER PIWR
+0553 ; [.2709.0020.0008] # ARMENIAN CAPITAL LETTER PIWR
+0584 ; [.270A.0020.0002] # ARMENIAN SMALL LETTER KEH
+0554 ; [.270A.0020.0008] # ARMENIAN CAPITAL LETTER KEH
+0585 ; [.270B.0020.0002] # ARMENIAN SMALL LETTER OH
+0555 ; [.270B.0020.0008] # ARMENIAN CAPITAL LETTER OH
+0586 ; [.270C.0020.0002] # ARMENIAN SMALL LETTER FEH
+0556 ; [.270C.0020.0008] # ARMENIAN CAPITAL LETTER FEH
+0559 ; [.270D.0020.0002] # ARMENIAN MODIFIER LETTER LEFT HALF RING
+05D0 ; [.270E.0020.0002] # HEBREW LETTER ALEF
+2135 ; [.270E.0020.0004] # ALEF SYMBOL
+FB21 ; [.270E.0020.0005] # HEBREW LETTER WIDE ALEF
+FB2E ; [.270E.0020.0002][.0000.0059.0002] # HEBREW LETTER ALEF WITH PATAH
+FB2F ; [.270E.0020.0002][.0000.005A.0002] # HEBREW LETTER ALEF WITH QAMATS
+FB30 ; [.270E.0020.0002][.0000.005F.0002] # HEBREW LETTER ALEF WITH MAPIQ
+FB4F ; [.270E.0020.0004][.2719.0020.0004] # HEBREW LIGATURE ALEF LAMED
+05D1 ; [.270F.0020.0002] # HEBREW LETTER BET
+2136 ; [.270F.0020.0004] # BET SYMBOL
+FB31 ; [.270F.0020.0002][.0000.005F.0002] # HEBREW LETTER BET WITH DAGESH
+FB4C ; [.270F.0020.0002][.0000.0060.0002] # HEBREW LETTER BET WITH RAFE
+05D2 ; [.2710.0020.0002] # HEBREW LETTER GIMEL
+2137 ; [.2710.0020.0004] # GIMEL SYMBOL
+FB32 ; [.2710.0020.0002][.0000.005F.0002] # HEBREW LETTER GIMEL WITH DAGESH
+05D3 ; [.2711.0020.0002] # HEBREW LETTER DALET
+2138 ; [.2711.0020.0004] # DALET SYMBOL
+FB22 ; [.2711.0020.0005] # HEBREW LETTER WIDE DALET
+FB33 ; [.2711.0020.0002][.0000.005F.0002] # HEBREW LETTER DALET WITH DAGESH
+05D4 ; [.2712.0020.0002] # HEBREW LETTER HE
+FB23 ; [.2712.0020.0005] # HEBREW LETTER WIDE HE
+FB34 ; [.2712.0020.0002][.0000.005F.0002] # HEBREW LETTER HE WITH MAPIQ
+05D5 ; [.2713.0020.0002] # HEBREW LETTER VAV
+FB4B ; [.2713.0020.0002][.0000.005B.0002] # HEBREW LETTER VAV WITH HOLAM
+FB35 ; [.2713.0020.0002][.0000.005F.0002] # HEBREW LETTER VAV WITH DAGESH
+05F0 ; [.2713.0020.0004][.2713.0020.0004] # HEBREW LIGATURE YIDDISH DOUBLE VAV
+05F1 ; [.2713.0020.0004][.2717.0020.0004] # HEBREW LIGATURE YIDDISH VAV YOD
+05D6 ; [.2714.0020.0002] # HEBREW LETTER ZAYIN
+FB36 ; [.2714.0020.0002][.0000.005F.0002] # HEBREW LETTER ZAYIN WITH DAGESH
+05D7 ; [.2715.0020.0002] # HEBREW LETTER HET
+05D8 ; [.2716.0020.0002] # HEBREW LETTER TET
+FB38 ; [.2716.0020.0002][.0000.005F.0002] # HEBREW LETTER TET WITH DAGESH
+05D9 ; [.2717.0020.0002] # HEBREW LETTER YOD
+FB1D ; [.2717.0020.0002][.0000.0056.0002] # HEBREW LETTER YOD WITH HIRIQ
+FB39 ; [.2717.0020.0002][.0000.005F.0002] # HEBREW LETTER YOD WITH DAGESH
+05EF ; [.2717.0020.0004][.2712.0020.0004][.2713.0020.0004][.2712.0020.0004] # HEBREW YOD TRIANGLE
+05F2 ; [.2717.0020.0004][.2717.0020.0004] # HEBREW LIGATURE YIDDISH DOUBLE YOD
+FB1F ; [.2717.0020.0004][.2717.0020.0004][.0000.0059.0002] # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+05DB ; [.2718.0020.0002] # HEBREW LETTER KAF
+FB24 ; [.2718.0020.0005] # HEBREW LETTER WIDE KAF
+05DA ; [.2718.0020.0019] # HEBREW LETTER FINAL KAF
+FB3B ; [.2718.0020.0002][.0000.005F.0002] # HEBREW LETTER KAF WITH DAGESH
+FB3A ; [.2718.0020.0019][.0000.005F.0002] # HEBREW LETTER FINAL KAF WITH DAGESH
+FB4D ; [.2718.0020.0002][.0000.0060.0002] # HEBREW LETTER KAF WITH RAFE
+05DC ; [.2719.0020.0002] # HEBREW LETTER LAMED
+FB25 ; [.2719.0020.0005] # HEBREW LETTER WIDE LAMED
+FB3C ; [.2719.0020.0002][.0000.005F.0002] # HEBREW LETTER LAMED WITH DAGESH
+05DE ; [.271A.0020.0002] # HEBREW LETTER MEM
+FB26 ; [.271A.0020.0005] # HEBREW LETTER WIDE FINAL MEM
+05DD ; [.271A.0020.0019] # HEBREW LETTER FINAL MEM
+FB3E ; [.271A.0020.0002][.0000.005F.0002] # HEBREW LETTER MEM WITH DAGESH
+05E0 ; [.271B.0020.0002] # HEBREW LETTER NUN
+05DF ; [.271B.0020.0019] # HEBREW LETTER FINAL NUN
+FB40 ; [.271B.0020.0002][.0000.005F.0002] # HEBREW LETTER NUN WITH DAGESH
+05E1 ; [.271C.0020.0002] # HEBREW LETTER SAMEKH
+FB41 ; [.271C.0020.0002][.0000.005F.0002] # HEBREW LETTER SAMEKH WITH DAGESH
+05E2 ; [.271D.0020.0002] # HEBREW LETTER AYIN
+FB20 ; [.271D.0020.0005] # HEBREW LETTER ALTERNATIVE AYIN
+05E4 ; [.271E.0020.0002] # HEBREW LETTER PE
+05E3 ; [.271E.0020.0019] # HEBREW LETTER FINAL PE
+FB44 ; [.271E.0020.0002][.0000.005F.0002] # HEBREW LETTER PE WITH DAGESH
+FB43 ; [.271E.0020.0019][.0000.005F.0002] # HEBREW LETTER FINAL PE WITH DAGESH
+FB4E ; [.271E.0020.0002][.0000.0060.0002] # HEBREW LETTER PE WITH RAFE
+05E6 ; [.271F.0020.0002] # HEBREW LETTER TSADI
+05E5 ; [.271F.0020.0019] # HEBREW LETTER FINAL TSADI
+FB46 ; [.271F.0020.0002][.0000.005F.0002] # HEBREW LETTER TSADI WITH DAGESH
+05E7 ; [.2720.0020.0002] # HEBREW LETTER QOF
+FB47 ; [.2720.0020.0002][.0000.005F.0002] # HEBREW LETTER QOF WITH DAGESH
+05E8 ; [.2721.0020.0002] # HEBREW LETTER RESH
+FB27 ; [.2721.0020.0005] # HEBREW LETTER WIDE RESH
+FB48 ; [.2721.0020.0002][.0000.005F.0002] # HEBREW LETTER RESH WITH DAGESH
+05E9 ; [.2722.0020.0002] # HEBREW LETTER SHIN
+FB2B ; [.2722.0020.0002][.0000.005D.0002] # HEBREW LETTER SHIN WITH SIN DOT
+FB2A ; [.2722.0020.0002][.0000.005E.0002] # HEBREW LETTER SHIN WITH SHIN DOT
+FB49 ; [.2722.0020.0002][.0000.005F.0002] # HEBREW LETTER SHIN WITH DAGESH
+FB2D ; [.2722.0020.0002][.0000.005F.0002][.0000.005D.0002] # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2C ; [.2722.0020.0002][.0000.005F.0002][.0000.005E.0002] # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+05EA ; [.2723.0020.0002] # HEBREW LETTER TAV
+FB28 ; [.2723.0020.0005] # HEBREW LETTER WIDE TAV
+FB4A ; [.2723.0020.0002][.0000.005F.0002] # HEBREW LETTER TAV WITH DAGESH
+10900 ; [.2724.0020.0002] # PHOENICIAN LETTER ALF
+10901 ; [.2725.0020.0002] # PHOENICIAN LETTER BET
+10902 ; [.2726.0020.0002] # PHOENICIAN LETTER GAML
+10903 ; [.2727.0020.0002] # PHOENICIAN LETTER DELT
+10904 ; [.2728.0020.0002] # PHOENICIAN LETTER HE
+10905 ; [.2729.0020.0002] # PHOENICIAN LETTER WAU
+10906 ; [.272A.0020.0002] # PHOENICIAN LETTER ZAI
+10907 ; [.272B.0020.0002] # PHOENICIAN LETTER HET
+10908 ; [.272C.0020.0002] # PHOENICIAN LETTER TET
+10909 ; [.272D.0020.0002] # PHOENICIAN LETTER YOD
+1090A ; [.272E.0020.0002] # PHOENICIAN LETTER KAF
+1090B ; [.272F.0020.0002] # PHOENICIAN LETTER LAMD
+1090C ; [.2730.0020.0002] # PHOENICIAN LETTER MEM
+1090D ; [.2731.0020.0002] # PHOENICIAN LETTER NUN
+1090E ; [.2732.0020.0002] # PHOENICIAN LETTER SEMK
+1090F ; [.2733.0020.0002] # PHOENICIAN LETTER AIN
+10910 ; [.2734.0020.0002] # PHOENICIAN LETTER PE
+10911 ; [.2735.0020.0002] # PHOENICIAN LETTER SADE
+10912 ; [.2736.0020.0002] # PHOENICIAN LETTER QOF
+10913 ; [.2737.0020.0002] # PHOENICIAN LETTER ROSH
+10914 ; [.2738.0020.0002] # PHOENICIAN LETTER SHIN
+10915 ; [.2739.0020.0002] # PHOENICIAN LETTER TAU
+0800 ; [.273A.0020.0002] # SAMARITAN LETTER ALAF
+0801 ; [.273B.0020.0002] # SAMARITAN LETTER BIT
+0802 ; [.273C.0020.0002] # SAMARITAN LETTER GAMAN
+0803 ; [.273D.0020.0002] # SAMARITAN LETTER DALAT
+0804 ; [.273E.0020.0002] # SAMARITAN LETTER IY
+0805 ; [.273F.0020.0002] # SAMARITAN LETTER BAA
+0806 ; [.2740.0020.0002] # SAMARITAN LETTER ZEN
+0807 ; [.2741.0020.0002] # SAMARITAN LETTER IT
+0808 ; [.2742.0020.0002] # SAMARITAN LETTER TIT
+0809 ; [.2743.0020.0002] # SAMARITAN LETTER YUT
+080A ; [.2744.0020.0002] # SAMARITAN LETTER KAAF
+080B ; [.2745.0020.0002] # SAMARITAN LETTER LABAT
+080C ; [.2746.0020.0002] # SAMARITAN LETTER MIM
+080D ; [.2747.0020.0002] # SAMARITAN LETTER NUN
+080E ; [.2748.0020.0002] # SAMARITAN LETTER SINGAAT
+080F ; [.2749.0020.0002] # SAMARITAN LETTER IN
+0810 ; [.274A.0020.0002] # SAMARITAN LETTER FI
+0811 ; [.274B.0020.0002] # SAMARITAN LETTER TSAADIY
+0812 ; [.274C.0020.0002] # SAMARITAN LETTER QUF
+0813 ; [.274D.0020.0002] # SAMARITAN LETTER RISH
+0814 ; [.274E.0020.0002] # SAMARITAN LETTER SHAN
+0815 ; [.274F.0020.0002] # SAMARITAN LETTER TAAF
+0816 ; [.2750.0020.0002] # SAMARITAN MARK IN
+0817 ; [.2751.0020.0002] # SAMARITAN MARK IN-ALAF
+081A ; [.2752.0020.0002] # SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+081B ; [.2753.0020.0002] # SAMARITAN MARK EPENTHETIC YUT
+0621 ; [.2754.0020.0002] # ARABIC LETTER HAMZA
+0674 ; [.2754.0020.0004] # ARABIC LETTER HIGH HAMZA
+0883 ; [.2754.0020.0004] # ARABIC TATWEEL WITH OVERSTRUCK HAMZA
+0887 ; [.2754.0020.0004] # ARABIC BASELINE ROUND DOT
+FE80 ; [.2754.0020.001A] # ARABIC LETTER HAMZA ISOLATED FORM
+06FD ; [.2754.0020.0004][.0000.0119.0004] # ARABIC SIGN SINDHI AMPERSAND
+0675 ; [.2754.0020.0004][.2762.0020.0004] # ARABIC LETTER HIGH HAMZA ALEF
+0676 ; [.2754.0020.0004][.281F.0020.0004] # ARABIC LETTER HIGH HAMZA WAW
+0677 ; [.2754.0020.0004][.2823.0020.0004] # ARABIC LETTER U WITH HAMZA ABOVE
+FBDD ; [.2754.0020.001A][.2823.0020.001A] # ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+0678 ; [.2754.0020.0004][.282E.0020.0004] # ARABIC LETTER HIGH HAMZA YEH
+0622 ; [.2755.0020.0002] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0627 0653 ; [.2755.0020.0002] # ARABIC LETTER ALEF WITH MADDA ABOVE
+FE82 ; [.2755.0020.0019] # ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+FE81 ; [.2755.0020.001A] # ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+0623 ; [.2756.0020.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0627 0654 ; [.2756.0020.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+FE84 ; [.2756.0020.0019] # ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+FE83 ; [.2756.0020.001A] # ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+0672 ; [.2757.0020.0002] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+0671 ; [.2758.0020.0002] # ARABIC LETTER ALEF WASLA
+FB51 ; [.2758.0020.0019] # ARABIC LETTER ALEF WASLA FINAL FORM
+FB50 ; [.2758.0020.001A] # ARABIC LETTER ALEF WASLA ISOLATED FORM
+0624 ; [.2759.0020.0002] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 0654 ; [.2759.0020.0002] # ARABIC LETTER WAW WITH HAMZA ABOVE
+FE86 ; [.2759.0020.0019] # ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+FE85 ; [.2759.0020.001A] # ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+0625 ; [.275A.0020.0002] # ARABIC LETTER ALEF WITH HAMZA BELOW
+0627 0655 ; [.275A.0020.0002] # ARABIC LETTER ALEF WITH HAMZA BELOW
+FE88 ; [.275A.0020.0019] # ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+FE87 ; [.275A.0020.001A] # ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM
+0673 ; [.275B.0020.0002] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+0773 ; [.275C.0020.0002] # ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
+0774 ; [.275D.0020.0002] # ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
+0626 ; [.275E.0020.0002] # ARABIC LETTER YEH WITH HAMZA ABOVE
+064A 0654 ; [.275E.0020.0002] # ARABIC LETTER YEH WITH HAMZA ABOVE
+FE8B ; [.275E.0020.0017] # ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+FE8C ; [.275E.0020.0018] # ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FE8A ; [.275E.0020.0019] # ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+FE89 ; [.275E.0020.001A] # ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+FBEB ; [.275E.0020.0019][.2762.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+FBEA ; [.275E.0020.001A][.2762.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM
+FC97 ; [.275E.0020.0017][.277F.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+FC00 ; [.275E.0020.001A][.277F.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+FC98 ; [.275E.0020.0017][.278A.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+FC01 ; [.275E.0020.001A][.278A.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+FC99 ; [.275E.0020.0017][.278B.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+FC64 ; [.275E.0020.0019][.27A4.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+FC65 ; [.275E.0020.0019][.27A5.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+FC9A ; [.275E.0020.0017][.280A.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+FCDF ; [.275E.0020.0018][.280A.0020.0018] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+FC66 ; [.275E.0020.0019][.280A.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+FC02 ; [.275E.0020.001A][.280A.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+FC67 ; [.275E.0020.0019][.280E.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+FC9B ; [.275E.0020.0017][.2819.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+FCE0 ; [.275E.0020.0018][.2819.0020.0018] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+FBED ; [.275E.0020.0019][.281E.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+FBEC ; [.275E.0020.001A][.281E.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM
+FBEF ; [.275E.0020.0019][.281F.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+FBEE ; [.275E.0020.001A][.281F.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM
+FBF3 ; [.275E.0020.0019][.2822.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+FBF2 ; [.275E.0020.001A][.2822.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM
+FBF1 ; [.275E.0020.0019][.2823.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+FBF0 ; [.275E.0020.001A][.2823.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM
+FBF5 ; [.275E.0020.0019][.2824.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+FBF4 ; [.275E.0020.001A][.2824.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM
+FBFB ; [.275E.0020.0017][.282D.0020.0017] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FBFA ; [.275E.0020.0019][.282D.0020.0019] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FC68 ; [.275E.0020.0019][.282D.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+FBF9 ; [.275E.0020.001A][.282D.0020.001A] # ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FC03 ; [.275E.0020.001A][.282D.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+FC69 ; [.275E.0020.0019][.282E.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+FC04 ; [.275E.0020.001A][.282E.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+FBF8 ; [.275E.0020.0017][.2832.0020.0017] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+FBF7 ; [.275E.0020.0019][.2832.0020.0019] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM
+FBF6 ; [.275E.0020.001A][.2832.0020.001A] # ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM
+08A8 ; [.275F.0020.0002] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND HAMZA ABOVE
+08A9 ; [.2760.0020.0002] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND DOT ABOVE
+08AC ; [.2761.0020.0002] # ARABIC LETTER ROHINGYA YEH
+0627 ; [.2762.0020.0002] # ARABIC LETTER ALEF
+0870 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED FATHA
+0871 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA
+0872 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE
+0873 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH LEFT MIDDLE STROKE
+0874 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED KASRA
+0875 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA
+0876 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED ROUND DOT ABOVE
+0877 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED RIGHT ROUND DOT
+0878 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED LEFT ROUND DOT
+0879 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED ROUND DOT BELOW
+087A ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH DOT ABOVE
+087B ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND DOT ABOVE
+087C ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND DOT ABOVE
+087D ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND DOT ABOVE
+087E ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND LEFT RING
+087F ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND LEFT RING
+0880 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND LEFT RING
+0881 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED RIGHT HAMZA
+0882 ; [.2762.0020.0004] # ARABIC LETTER ALEF WITH ATTACHED LEFT HAMZA
+08AD ; [.2762.0020.0004] # ARABIC LETTER LOW ALEF
+1EE00 ; [.2762.0020.0005] # ARABIC MATHEMATICAL ALEF
+1EE80 ; [.2762.0020.0005] # ARABIC MATHEMATICAL LOOPED ALEF
+FE8E ; [.2762.0020.0019] # ARABIC LETTER ALEF FINAL FORM
+FE8D ; [.2762.0020.001A] # ARABIC LETTER ALEF ISOLATED FORM
+FD3C ; [.2762.0020.0019][.0000.006D.0019] # ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM
+FD3D ; [.2762.0020.001A][.0000.006D.001A] # ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FDF3 ; [.2762.0020.001A][.27EA.0020.001A][.2764.0020.001A][.27A4.0020.001A] # ARABIC LIGATURE AKBAR ISOLATED FORM
+FDF2 ; [.2762.0020.001A][.2802.0020.001A][.2802.0020.001A][.2819.0020.001A] # ARABIC LIGATURE ALLAH ISOLATED FORM
+066E ; [.2763.0020.0002] # ARABIC LETTER DOTLESS BEH
+1EE1C ; [.2763.0020.0005] # ARABIC MATHEMATICAL DOTLESS BEH
+1EE7C ; [.2763.0020.0005] # ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+0628 ; [.2764.0020.0002] # ARABIC LETTER BEH
+1EE01 ; [.2764.0020.0005] # ARABIC MATHEMATICAL BEH
+1EE21 ; [.2764.0020.0005] # ARABIC MATHEMATICAL INITIAL BEH
+1EE61 ; [.2764.0020.0005] # ARABIC MATHEMATICAL STRETCHED BEH
+1EE81 ; [.2764.0020.0005] # ARABIC MATHEMATICAL LOOPED BEH
+1EEA1 ; [.2764.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK BEH
+FE91 ; [.2764.0020.0017] # ARABIC LETTER BEH INITIAL FORM
+FE92 ; [.2764.0020.0018] # ARABIC LETTER BEH MEDIAL FORM
+FE90 ; [.2764.0020.0019] # ARABIC LETTER BEH FINAL FORM
+FE8F ; [.2764.0020.001A] # ARABIC LETTER BEH ISOLATED FORM
+FC9C ; [.2764.0020.0017][.277F.0020.0017] # ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+FC05 ; [.2764.0020.001A][.277F.0020.001A] # ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+FC9D ; [.2764.0020.0017][.278A.0020.0017] # ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+FC06 ; [.2764.0020.001A][.278A.0020.001A] # ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+FDC2 ; [.2764.0020.0019][.278A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+FC9E ; [.2764.0020.0017][.278B.0020.0017] # ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+FC07 ; [.2764.0020.001A][.278B.0020.001A] # ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+FD9E ; [.2764.0020.0019][.278B.0020.0019][.282E.0020.0019] # ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+FC6A ; [.2764.0020.0019][.27A4.0020.0019] # ARABIC LIGATURE BEH WITH REH FINAL FORM
+FC6B ; [.2764.0020.0019][.27A5.0020.0019] # ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+FC9F ; [.2764.0020.0017][.280A.0020.0017] # ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+FCE1 ; [.2764.0020.0018][.280A.0020.0018] # ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+FC6C ; [.2764.0020.0019][.280A.0020.0019] # ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+FC08 ; [.2764.0020.001A][.280A.0020.001A] # ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+FC6D ; [.2764.0020.0019][.280E.0020.0019] # ARABIC LIGATURE BEH WITH NOON FINAL FORM
+FCA0 ; [.2764.0020.0017][.2819.0020.0017] # ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+FCE2 ; [.2764.0020.0018][.2819.0020.0018] # ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+FC6E ; [.2764.0020.0019][.282D.0020.0019] # ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+FC09 ; [.2764.0020.001A][.282D.0020.001A] # ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+FC6F ; [.2764.0020.0019][.282E.0020.0019] # ARABIC LIGATURE BEH WITH YEH FINAL FORM
+FC0A ; [.2764.0020.001A][.282E.0020.001A] # ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+067B ; [.2765.0020.0002] # ARABIC LETTER BEEH
+FB54 ; [.2765.0020.0017] # ARABIC LETTER BEEH INITIAL FORM
+FB55 ; [.2765.0020.0018] # ARABIC LETTER BEEH MEDIAL FORM
+FB53 ; [.2765.0020.0019] # ARABIC LETTER BEEH FINAL FORM
+FB52 ; [.2765.0020.001A] # ARABIC LETTER BEEH ISOLATED FORM
+067E ; [.2766.0020.0002] # ARABIC LETTER PEH
+FB58 ; [.2766.0020.0017] # ARABIC LETTER PEH INITIAL FORM
+FB59 ; [.2766.0020.0018] # ARABIC LETTER PEH MEDIAL FORM
+FB57 ; [.2766.0020.0019] # ARABIC LETTER PEH FINAL FORM
+FB56 ; [.2766.0020.001A] # ARABIC LETTER PEH ISOLATED FORM
+0680 ; [.2767.0020.0002] # ARABIC LETTER BEHEH
+FB5C ; [.2767.0020.0017] # ARABIC LETTER BEHEH INITIAL FORM
+FB5D ; [.2767.0020.0018] # ARABIC LETTER BEHEH MEDIAL FORM
+FB5B ; [.2767.0020.0019] # ARABIC LETTER BEHEH FINAL FORM
+FB5A ; [.2767.0020.001A] # ARABIC LETTER BEHEH ISOLATED FORM
+0750 ; [.2768.0020.0002] # ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW
+0751 ; [.2769.0020.0002] # ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE
+0752 ; [.276A.0020.0002] # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW
+0753 ; [.276B.0020.0002] # ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE
+0754 ; [.276C.0020.0002] # ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE
+0755 ; [.276D.0020.0002] # ARABIC LETTER BEH WITH INVERTED SMALL V BELOW
+08A0 ; [.276E.0020.0002] # ARABIC LETTER BEH WITH SMALL V BELOW
+0756 ; [.276F.0020.0002] # ARABIC LETTER BEH WITH SMALL V
+08BE ; [.2770.0020.0002] # ARABIC LETTER PEH WITH SMALL V
+08A1 ; [.2771.0020.0002] # ARABIC LETTER BEH WITH HAMZA ABOVE
+08B6 ; [.2772.0020.0002] # ARABIC LETTER BEH WITH SMALL MEEM ABOVE
+08B7 ; [.2773.0020.0002] # ARABIC LETTER PEH WITH SMALL MEEM ABOVE
+0629 ; [.2774.0020.0002] # ARABIC LETTER TEH MARBUTA
+FE94 ; [.2774.0020.0019] # ARABIC LETTER TEH MARBUTA FINAL FORM
+FE93 ; [.2774.0020.001A] # ARABIC LETTER TEH MARBUTA ISOLATED FORM
+062A ; [.2775.0020.0002] # ARABIC LETTER TEH
+1EE15 ; [.2775.0020.0005] # ARABIC MATHEMATICAL TEH
+1EE35 ; [.2775.0020.0005] # ARABIC MATHEMATICAL INITIAL TEH
+1EE75 ; [.2775.0020.0005] # ARABIC MATHEMATICAL STRETCHED TEH
+1EE95 ; [.2775.0020.0005] # ARABIC MATHEMATICAL LOOPED TEH
+1EEB5 ; [.2775.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK TEH
+FE97 ; [.2775.0020.0017] # ARABIC LETTER TEH INITIAL FORM
+FE98 ; [.2775.0020.0018] # ARABIC LETTER TEH MEDIAL FORM
+FE96 ; [.2775.0020.0019] # ARABIC LETTER TEH FINAL FORM
+FE95 ; [.2775.0020.001A] # ARABIC LETTER TEH ISOLATED FORM
+FCA1 ; [.2775.0020.0017][.277F.0020.0017] # ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+FC0B ; [.2775.0020.001A][.277F.0020.001A] # ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+FD50 ; [.2775.0020.0017][.277F.0020.0017][.280A.0020.0017] # ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+FDA0 ; [.2775.0020.0019][.277F.0020.0019][.282D.0020.0019] # ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FD9F ; [.2775.0020.0019][.277F.0020.0019][.282E.0020.0019] # ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+FCA2 ; [.2775.0020.0017][.278A.0020.0017] # ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+FC0C ; [.2775.0020.001A][.278A.0020.001A] # ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+FD52 ; [.2775.0020.0017][.278A.0020.0017][.277F.0020.0017] # ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+FD51 ; [.2775.0020.0019][.278A.0020.0019][.277F.0020.0019] # ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM
+FD53 ; [.2775.0020.0017][.278A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+FCA3 ; [.2775.0020.0017][.278B.0020.0017] # ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+FC0D ; [.2775.0020.001A][.278B.0020.001A] # ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+FD54 ; [.2775.0020.0017][.278B.0020.0017][.280A.0020.0017] # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+FDA2 ; [.2775.0020.0019][.278B.0020.0019][.282D.0020.0019] # ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDA1 ; [.2775.0020.0019][.278B.0020.0019][.282E.0020.0019] # ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+FC70 ; [.2775.0020.0019][.27A4.0020.0019] # ARABIC LIGATURE TEH WITH REH FINAL FORM
+FC71 ; [.2775.0020.0019][.27A5.0020.0019] # ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+FCA4 ; [.2775.0020.0017][.280A.0020.0017] # ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+FCE3 ; [.2775.0020.0018][.280A.0020.0018] # ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+FC72 ; [.2775.0020.0019][.280A.0020.0019] # ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+FC0E ; [.2775.0020.001A][.280A.0020.001A] # ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+FD55 ; [.2775.0020.0017][.280A.0020.0017][.277F.0020.0017] # ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+FD56 ; [.2775.0020.0017][.280A.0020.0017][.278A.0020.0017] # ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+FD57 ; [.2775.0020.0017][.280A.0020.0017][.278B.0020.0017] # ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+FDA4 ; [.2775.0020.0019][.280A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA3 ; [.2775.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+FC73 ; [.2775.0020.0019][.280E.0020.0019] # ARABIC LIGATURE TEH WITH NOON FINAL FORM
+FCA5 ; [.2775.0020.0017][.2819.0020.0017] # ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+FCE4 ; [.2775.0020.0018][.2819.0020.0018] # ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+FC74 ; [.2775.0020.0019][.282D.0020.0019] # ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+FC0F ; [.2775.0020.001A][.282D.0020.001A] # ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+FC75 ; [.2775.0020.0019][.282E.0020.0019] # ARABIC LIGATURE TEH WITH YEH FINAL FORM
+FC10 ; [.2775.0020.001A][.282E.0020.001A] # ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+062B ; [.2776.0020.0002] # ARABIC LETTER THEH
+1EE16 ; [.2776.0020.0005] # ARABIC MATHEMATICAL THEH
+1EE36 ; [.2776.0020.0005] # ARABIC MATHEMATICAL INITIAL THEH
+1EE76 ; [.2776.0020.0005] # ARABIC MATHEMATICAL STRETCHED THEH
+1EE96 ; [.2776.0020.0005] # ARABIC MATHEMATICAL LOOPED THEH
+1EEB6 ; [.2776.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK THEH
+FE9B ; [.2776.0020.0017] # ARABIC LETTER THEH INITIAL FORM
+FE9C ; [.2776.0020.0018] # ARABIC LETTER THEH MEDIAL FORM
+FE9A ; [.2776.0020.0019] # ARABIC LETTER THEH FINAL FORM
+FE99 ; [.2776.0020.001A] # ARABIC LETTER THEH ISOLATED FORM
+FC11 ; [.2776.0020.001A][.277F.0020.001A] # ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+FC76 ; [.2776.0020.0019][.27A4.0020.0019] # ARABIC LIGATURE THEH WITH REH FINAL FORM
+FC77 ; [.2776.0020.0019][.27A5.0020.0019] # ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+FCA6 ; [.2776.0020.0017][.280A.0020.0017] # ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+FCE5 ; [.2776.0020.0018][.280A.0020.0018] # ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+FC78 ; [.2776.0020.0019][.280A.0020.0019] # ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+FC12 ; [.2776.0020.001A][.280A.0020.001A] # ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+FC79 ; [.2776.0020.0019][.280E.0020.0019] # ARABIC LIGATURE THEH WITH NOON FINAL FORM
+FCE6 ; [.2776.0020.0018][.2819.0020.0018] # ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+FC7A ; [.2776.0020.0019][.282D.0020.0019] # ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+FC13 ; [.2776.0020.001A][.282D.0020.001A] # ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+FC7B ; [.2776.0020.0019][.282E.0020.0019] # ARABIC LIGATURE THEH WITH YEH FINAL FORM
+FC14 ; [.2776.0020.001A][.282E.0020.001A] # ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+0679 ; [.2777.0020.0002] # ARABIC LETTER TTEH
+FB68 ; [.2777.0020.0017] # ARABIC LETTER TTEH INITIAL FORM
+FB69 ; [.2777.0020.0018] # ARABIC LETTER TTEH MEDIAL FORM
+FB67 ; [.2777.0020.0019] # ARABIC LETTER TTEH FINAL FORM
+FB66 ; [.2777.0020.001A] # ARABIC LETTER TTEH ISOLATED FORM
+067A ; [.2778.0020.0002] # ARABIC LETTER TTEHEH
+FB60 ; [.2778.0020.0017] # ARABIC LETTER TTEHEH INITIAL FORM
+FB61 ; [.2778.0020.0018] # ARABIC LETTER TTEHEH MEDIAL FORM
+FB5F ; [.2778.0020.0019] # ARABIC LETTER TTEHEH FINAL FORM
+FB5E ; [.2778.0020.001A] # ARABIC LETTER TTEHEH ISOLATED FORM
+067C ; [.2779.0020.0002] # ARABIC LETTER TEH WITH RING
+067D ; [.277A.0020.0002] # ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS
+067F ; [.277B.0020.0002] # ARABIC LETTER TEHEH
+FB64 ; [.277B.0020.0017] # ARABIC LETTER TEHEH INITIAL FORM
+FB65 ; [.277B.0020.0018] # ARABIC LETTER TEHEH MEDIAL FORM
+FB63 ; [.277B.0020.0019] # ARABIC LETTER TEHEH FINAL FORM
+FB62 ; [.277B.0020.001A] # ARABIC LETTER TEHEH ISOLATED FORM
+08B8 ; [.277C.0020.0002] # ARABIC LETTER TEH WITH SMALL TEH ABOVE
+08BF ; [.277D.0020.0002] # ARABIC LETTER TEH WITH SMALL V
+08C0 ; [.277E.0020.0002] # ARABIC LETTER TTEH WITH SMALL V
+062C ; [.277F.0020.0002] # ARABIC LETTER JEEM
+1EE02 ; [.277F.0020.0005] # ARABIC MATHEMATICAL JEEM
+1EE22 ; [.277F.0020.0005] # ARABIC MATHEMATICAL INITIAL JEEM
+1EE42 ; [.277F.0020.0005] # ARABIC MATHEMATICAL TAILED JEEM
+1EE62 ; [.277F.0020.0005] # ARABIC MATHEMATICAL STRETCHED JEEM
+1EE82 ; [.277F.0020.0005] # ARABIC MATHEMATICAL LOOPED JEEM
+1EEA2 ; [.277F.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM
+FE9F ; [.277F.0020.0017] # ARABIC LETTER JEEM INITIAL FORM
+FEA0 ; [.277F.0020.0018] # ARABIC LETTER JEEM MEDIAL FORM
+FE9E ; [.277F.0020.0019] # ARABIC LETTER JEEM FINAL FORM
+FE9D ; [.277F.0020.001A] # ARABIC LETTER JEEM ISOLATED FORM
+FCA7 ; [.277F.0020.0017][.278A.0020.0017] # ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+FC15 ; [.277F.0020.001A][.278A.0020.001A] # ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+FDA6 ; [.277F.0020.0019][.278A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDBE ; [.277F.0020.0019][.278A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+FDFB ; [.277F.0020.001A][.2802.0020.001A][*0209.0020.001A][.277F.0020.001A][.2802.0020.001A][.2762.0020.001A][.2802.0020.001A][.2819.0020.001A] # ARABIC LIGATURE JALLAJALALOUHOU
+FCA8 ; [.277F.0020.0017][.280A.0020.0017] # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+FC16 ; [.277F.0020.001A][.280A.0020.001A] # ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+FD59 ; [.277F.0020.0017][.280A.0020.0017][.278A.0020.0017] # ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+FD58 ; [.277F.0020.0019][.280A.0020.0019][.278A.0020.0019] # ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM
+FDA7 ; [.277F.0020.0019][.280A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDA5 ; [.277F.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+FD1D ; [.277F.0020.0019][.282D.0020.0019] # ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+FD01 ; [.277F.0020.001A][.282D.0020.001A] # ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+FD1E ; [.277F.0020.0019][.282E.0020.0019] # ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+FD02 ; [.277F.0020.001A][.282E.0020.001A] # ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+0683 ; [.2780.0020.0002] # ARABIC LETTER NYEH
+FB78 ; [.2780.0020.0017] # ARABIC LETTER NYEH INITIAL FORM
+FB79 ; [.2780.0020.0018] # ARABIC LETTER NYEH MEDIAL FORM
+FB77 ; [.2780.0020.0019] # ARABIC LETTER NYEH FINAL FORM
+FB76 ; [.2780.0020.001A] # ARABIC LETTER NYEH ISOLATED FORM
+0684 ; [.2781.0020.0002] # ARABIC LETTER DYEH
+FB74 ; [.2781.0020.0017] # ARABIC LETTER DYEH INITIAL FORM
+FB75 ; [.2781.0020.0018] # ARABIC LETTER DYEH MEDIAL FORM
+FB73 ; [.2781.0020.0019] # ARABIC LETTER DYEH FINAL FORM
+FB72 ; [.2781.0020.001A] # ARABIC LETTER DYEH ISOLATED FORM
+088A ; [.2782.0020.0002] # ARABIC LETTER HAH WITH INVERTED SMALL V BELOW
+0686 ; [.2783.0020.0002] # ARABIC LETTER TCHEH
+FB7C ; [.2783.0020.0017] # ARABIC LETTER TCHEH INITIAL FORM
+FB7D ; [.2783.0020.0018] # ARABIC LETTER TCHEH MEDIAL FORM
+FB7B ; [.2783.0020.0019] # ARABIC LETTER TCHEH FINAL FORM
+FB7A ; [.2783.0020.001A] # ARABIC LETTER TCHEH ISOLATED FORM
+06BF ; [.2784.0020.0002] # ARABIC LETTER TCHEH WITH DOT ABOVE
+0687 ; [.2785.0020.0002] # ARABIC LETTER TCHEHEH
+FB80 ; [.2785.0020.0017] # ARABIC LETTER TCHEHEH INITIAL FORM
+FB81 ; [.2785.0020.0018] # ARABIC LETTER TCHEHEH MEDIAL FORM
+FB7F ; [.2785.0020.0019] # ARABIC LETTER TCHEHEH FINAL FORM
+FB7E ; [.2785.0020.001A] # ARABIC LETTER TCHEHEH ISOLATED FORM
+08A2 ; [.2786.0020.0002] # ARABIC LETTER JEEM WITH TWO DOTS ABOVE
+08C1 ; [.2787.0020.0002] # ARABIC LETTER TCHEH WITH SMALL V
+08C5 ; [.2788.0020.0002] # ARABIC LETTER JEEM WITH THREE DOTS ABOVE
+08C6 ; [.2789.0020.0002] # ARABIC LETTER JEEM WITH THREE DOTS BELOW
+062D ; [.278A.0020.0002] # ARABIC LETTER HAH
+1EE07 ; [.278A.0020.0005] # ARABIC MATHEMATICAL HAH
+1EE27 ; [.278A.0020.0005] # ARABIC MATHEMATICAL INITIAL HAH
+1EE47 ; [.278A.0020.0005] # ARABIC MATHEMATICAL TAILED HAH
+1EE67 ; [.278A.0020.0005] # ARABIC MATHEMATICAL STRETCHED HAH
+1EE87 ; [.278A.0020.0005] # ARABIC MATHEMATICAL LOOPED HAH
+1EEA7 ; [.278A.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK HAH
+FEA3 ; [.278A.0020.0017] # ARABIC LETTER HAH INITIAL FORM
+FEA4 ; [.278A.0020.0018] # ARABIC LETTER HAH MEDIAL FORM
+FEA2 ; [.278A.0020.0019] # ARABIC LETTER HAH FINAL FORM
+FEA1 ; [.278A.0020.001A] # ARABIC LETTER HAH ISOLATED FORM
+FCA9 ; [.278A.0020.0017][.277F.0020.0017] # ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+FC17 ; [.278A.0020.001A][.277F.0020.001A] # ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+FDBF ; [.278A.0020.0019][.277F.0020.0019][.282E.0020.0019] # ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+FCAA ; [.278A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+FC18 ; [.278A.0020.001A][.280A.0020.001A] # ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+FD5B ; [.278A.0020.0019][.280A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD5A ; [.278A.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+FD1B ; [.278A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+FCFF ; [.278A.0020.001A][.282D.0020.001A] # ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+FD1C ; [.278A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE HAH WITH YEH FINAL FORM
+FD00 ; [.278A.0020.001A][.282E.0020.001A] # ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+062E ; [.278B.0020.0002] # ARABIC LETTER KHAH
+1EE17 ; [.278B.0020.0005] # ARABIC MATHEMATICAL KHAH
+1EE37 ; [.278B.0020.0005] # ARABIC MATHEMATICAL INITIAL KHAH
+1EE57 ; [.278B.0020.0005] # ARABIC MATHEMATICAL TAILED KHAH
+1EE77 ; [.278B.0020.0005] # ARABIC MATHEMATICAL STRETCHED KHAH
+1EE97 ; [.278B.0020.0005] # ARABIC MATHEMATICAL LOOPED KHAH
+1EEB7 ; [.278B.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH
+FEA7 ; [.278B.0020.0017] # ARABIC LETTER KHAH INITIAL FORM
+FEA8 ; [.278B.0020.0018] # ARABIC LETTER KHAH MEDIAL FORM
+FEA6 ; [.278B.0020.0019] # ARABIC LETTER KHAH FINAL FORM
+FEA5 ; [.278B.0020.001A] # ARABIC LETTER KHAH ISOLATED FORM
+FCAB ; [.278B.0020.0017][.277F.0020.0017] # ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+FC19 ; [.278B.0020.001A][.277F.0020.001A] # ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+FC1A ; [.278B.0020.001A][.278A.0020.001A] # ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+FCAC ; [.278B.0020.0017][.280A.0020.0017] # ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+FC1B ; [.278B.0020.001A][.280A.0020.001A] # ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+FD1F ; [.278B.0020.0019][.282D.0020.0019] # ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+FD03 ; [.278B.0020.001A][.282D.0020.001A] # ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+FD20 ; [.278B.0020.0019][.282E.0020.0019] # ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+FD04 ; [.278B.0020.001A][.282E.0020.001A] # ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+0681 ; [.278C.0020.0002] # ARABIC LETTER HAH WITH HAMZA ABOVE
+0682 ; [.278D.0020.0002] # ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE
+0685 ; [.278E.0020.0002] # ARABIC LETTER HAH WITH THREE DOTS ABOVE
+0757 ; [.278F.0020.0002] # ARABIC LETTER HAH WITH TWO DOTS ABOVE
+0758 ; [.2790.0020.0002] # ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW
+076E ; [.2791.0020.0002] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW
+076F ; [.2792.0020.0002] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS
+0772 ; [.2793.0020.0002] # ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE
+077C ; [.2794.0020.0002] # ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW
+062F ; [.2795.0020.0002] # ARABIC LETTER DAL
+1EE03 ; [.2795.0020.0005] # ARABIC MATHEMATICAL DAL
+1EE83 ; [.2795.0020.0005] # ARABIC MATHEMATICAL LOOPED DAL
+1EEA3 ; [.2795.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+FEAA ; [.2795.0020.0019] # ARABIC LETTER DAL FINAL FORM
+FEA9 ; [.2795.0020.001A] # ARABIC LETTER DAL ISOLATED FORM
+0630 ; [.2796.0020.0002] # ARABIC LETTER THAL
+1EE18 ; [.2796.0020.0005] # ARABIC MATHEMATICAL THAL
+1EE98 ; [.2796.0020.0005] # ARABIC MATHEMATICAL LOOPED THAL
+1EEB8 ; [.2796.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK THAL
+FEAC ; [.2796.0020.0019] # ARABIC LETTER THAL FINAL FORM
+FEAB ; [.2796.0020.001A] # ARABIC LETTER THAL ISOLATED FORM
+FC5B ; [.2796.0020.001A][.0000.0098.001A] # ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+0688 ; [.2797.0020.0002] # ARABIC LETTER DDAL
+FB89 ; [.2797.0020.0019] # ARABIC LETTER DDAL FINAL FORM
+FB88 ; [.2797.0020.001A] # ARABIC LETTER DDAL ISOLATED FORM
+0689 ; [.2798.0020.0002] # ARABIC LETTER DAL WITH RING
+068A ; [.2799.0020.0002] # ARABIC LETTER DAL WITH DOT BELOW
+068B ; [.279A.0020.0002] # ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH
+068C ; [.279B.0020.0002] # ARABIC LETTER DAHAL
+FB85 ; [.279B.0020.0019] # ARABIC LETTER DAHAL FINAL FORM
+FB84 ; [.279B.0020.001A] # ARABIC LETTER DAHAL ISOLATED FORM
+068D ; [.279C.0020.0002] # ARABIC LETTER DDAHAL
+FB83 ; [.279C.0020.0019] # ARABIC LETTER DDAHAL FINAL FORM
+FB82 ; [.279C.0020.001A] # ARABIC LETTER DDAHAL ISOLATED FORM
+08AE ; [.279D.0020.0002] # ARABIC LETTER DAL WITH THREE DOTS BELOW
+068E ; [.279E.0020.0002] # ARABIC LETTER DUL
+FB87 ; [.279E.0020.0019] # ARABIC LETTER DUL FINAL FORM
+FB86 ; [.279E.0020.001A] # ARABIC LETTER DUL ISOLATED FORM
+068F ; [.279F.0020.0002] # ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS
+0690 ; [.27A0.0020.0002] # ARABIC LETTER DAL WITH FOUR DOTS ABOVE
+06EE ; [.27A1.0020.0002] # ARABIC LETTER DAL WITH INVERTED V
+0759 ; [.27A2.0020.0002] # ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH
+075A ; [.27A3.0020.0002] # ARABIC LETTER DAL WITH INVERTED SMALL V BELOW
+0631 ; [.27A4.0020.0002] # ARABIC LETTER REH
+1EE13 ; [.27A4.0020.0005] # ARABIC MATHEMATICAL REH
+1EE93 ; [.27A4.0020.0005] # ARABIC MATHEMATICAL LOOPED REH
+1EEB3 ; [.27A4.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK REH
+FEAE ; [.27A4.0020.0019] # ARABIC LETTER REH FINAL FORM
+FEAD ; [.27A4.0020.001A] # ARABIC LETTER REH ISOLATED FORM
+FC5C ; [.27A4.0020.001A][.0000.0098.001A] # ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+FDF6 ; [.27A4.0020.001A][.27B7.0020.001A][.281F.0020.001A][.2802.0020.001A] # ARABIC LIGATURE RASOUL ISOLATED FORM
+FDFC ; [.27A4.0020.001A][.282F.0020.001A][.2762.0020.001A][.2802.0020.001A] # RIAL SIGN
+0632 ; [.27A5.0020.0002] # ARABIC LETTER ZAIN
+1EE06 ; [.27A5.0020.0005] # ARABIC MATHEMATICAL ZAIN
+1EE86 ; [.27A5.0020.0005] # ARABIC MATHEMATICAL LOOPED ZAIN
+1EEA6 ; [.27A5.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN
+FEB0 ; [.27A5.0020.0019] # ARABIC LETTER ZAIN FINAL FORM
+FEAF ; [.27A5.0020.001A] # ARABIC LETTER ZAIN ISOLATED FORM
+0691 ; [.27A6.0020.0002] # ARABIC LETTER RREH
+FB8D ; [.27A6.0020.0019] # ARABIC LETTER RREH FINAL FORM
+FB8C ; [.27A6.0020.001A] # ARABIC LETTER RREH ISOLATED FORM
+0692 ; [.27A7.0020.0002] # ARABIC LETTER REH WITH SMALL V
+0693 ; [.27A8.0020.0002] # ARABIC LETTER REH WITH RING
+0694 ; [.27A9.0020.0002] # ARABIC LETTER REH WITH DOT BELOW
+0695 ; [.27AA.0020.0002] # ARABIC LETTER REH WITH SMALL V BELOW
+0696 ; [.27AB.0020.0002] # ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE
+0697 ; [.27AC.0020.0002] # ARABIC LETTER REH WITH TWO DOTS ABOVE
+0698 ; [.27AD.0020.0002] # ARABIC LETTER JEH
+FB8B ; [.27AD.0020.0019] # ARABIC LETTER JEH FINAL FORM
+FB8A ; [.27AD.0020.001A] # ARABIC LETTER JEH ISOLATED FORM
+0699 ; [.27AE.0020.0002] # ARABIC LETTER REH WITH FOUR DOTS ABOVE
+06EF ; [.27AF.0020.0002] # ARABIC LETTER REH WITH INVERTED V
+075B ; [.27B0.0020.0002] # ARABIC LETTER REH WITH STROKE
+076B ; [.27B1.0020.0002] # ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE
+076C ; [.27B2.0020.0002] # ARABIC LETTER REH WITH HAMZA ABOVE
+0771 ; [.27B3.0020.0002] # ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS
+08AA ; [.27B4.0020.0002] # ARABIC LETTER REH WITH LOOP
+08B2 ; [.27B5.0020.0002] # ARABIC LETTER ZAIN WITH INVERTED V ABOVE
+08B9 ; [.27B6.0020.0002] # ARABIC LETTER REH WITH SMALL NOON ABOVE
+0633 ; [.27B7.0020.0002] # ARABIC LETTER SEEN
+1EE0E ; [.27B7.0020.0005] # ARABIC MATHEMATICAL SEEN
+1EE2E ; [.27B7.0020.0005] # ARABIC MATHEMATICAL INITIAL SEEN
+1EE4E ; [.27B7.0020.0005] # ARABIC MATHEMATICAL TAILED SEEN
+1EE6E ; [.27B7.0020.0005] # ARABIC MATHEMATICAL STRETCHED SEEN
+1EE8E ; [.27B7.0020.0005] # ARABIC MATHEMATICAL LOOPED SEEN
+1EEAE ; [.27B7.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN
+FEB3 ; [.27B7.0020.0017] # ARABIC LETTER SEEN INITIAL FORM
+FEB4 ; [.27B7.0020.0018] # ARABIC LETTER SEEN MEDIAL FORM
+FEB2 ; [.27B7.0020.0019] # ARABIC LETTER SEEN FINAL FORM
+FEB1 ; [.27B7.0020.001A] # ARABIC LETTER SEEN ISOLATED FORM
+FCAD ; [.27B7.0020.0017][.277F.0020.0017] # ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+FD34 ; [.27B7.0020.0018][.277F.0020.0018] # ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+FC1C ; [.27B7.0020.001A][.277F.0020.001A] # ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+FD5D ; [.27B7.0020.0017][.277F.0020.0017][.278A.0020.0017] # ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+FD5E ; [.27B7.0020.0019][.277F.0020.0019][.282D.0020.0019] # ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FCAE ; [.27B7.0020.0017][.278A.0020.0017] # ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+FD35 ; [.27B7.0020.0018][.278A.0020.0018] # ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+FC1D ; [.27B7.0020.001A][.278A.0020.001A] # ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+FD5C ; [.27B7.0020.0017][.278A.0020.0017][.277F.0020.0017] # ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+FCAF ; [.27B7.0020.0017][.278B.0020.0017] # ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+FD36 ; [.27B7.0020.0018][.278B.0020.0018] # ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+FC1E ; [.27B7.0020.001A][.278B.0020.001A] # ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+FDA8 ; [.27B7.0020.0019][.278B.0020.0019][.282D.0020.0019] # ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+FDC6 ; [.27B7.0020.0019][.278B.0020.0019][.282E.0020.0019] # ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+FD2A ; [.27B7.0020.0019][.27A4.0020.0019] # ARABIC LIGATURE SEEN WITH REH FINAL FORM
+FD0E ; [.27B7.0020.001A][.27A4.0020.001A] # ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+FCB0 ; [.27B7.0020.0017][.280A.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+FCE7 ; [.27B7.0020.0018][.280A.0020.0018] # ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+FC1F ; [.27B7.0020.001A][.280A.0020.001A] # ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+FD61 ; [.27B7.0020.0017][.280A.0020.0017][.277F.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+FD60 ; [.27B7.0020.0017][.280A.0020.0017][.278A.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+FD5F ; [.27B7.0020.0019][.280A.0020.0019][.278A.0020.0019] # ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM
+FD63 ; [.27B7.0020.0017][.280A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+FD62 ; [.27B7.0020.0019][.280A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM
+FD31 ; [.27B7.0020.0017][.2819.0020.0017] # ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+FCE8 ; [.27B7.0020.0018][.2819.0020.0018] # ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+FD17 ; [.27B7.0020.0019][.282D.0020.0019] # ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+FCFB ; [.27B7.0020.001A][.282D.0020.001A] # ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+FD18 ; [.27B7.0020.0019][.282E.0020.0019] # ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+FCFC ; [.27B7.0020.001A][.282E.0020.001A] # ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+0634 ; [.27B8.0020.0002] # ARABIC LETTER SHEEN
+1EE14 ; [.27B8.0020.0005] # ARABIC MATHEMATICAL SHEEN
+1EE34 ; [.27B8.0020.0005] # ARABIC MATHEMATICAL INITIAL SHEEN
+1EE54 ; [.27B8.0020.0005] # ARABIC MATHEMATICAL TAILED SHEEN
+1EE74 ; [.27B8.0020.0005] # ARABIC MATHEMATICAL STRETCHED SHEEN
+1EE94 ; [.27B8.0020.0005] # ARABIC MATHEMATICAL LOOPED SHEEN
+1EEB4 ; [.27B8.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN
+FEB7 ; [.27B8.0020.0017] # ARABIC LETTER SHEEN INITIAL FORM
+FEB8 ; [.27B8.0020.0018] # ARABIC LETTER SHEEN MEDIAL FORM
+FEB6 ; [.27B8.0020.0019] # ARABIC LETTER SHEEN FINAL FORM
+FEB5 ; [.27B8.0020.001A] # ARABIC LETTER SHEEN ISOLATED FORM
+FD2D ; [.27B8.0020.0017][.277F.0020.0017] # ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+FD37 ; [.27B8.0020.0018][.277F.0020.0018] # ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+FD25 ; [.27B8.0020.0019][.277F.0020.0019] # ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+FD09 ; [.27B8.0020.001A][.277F.0020.001A] # ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+FD69 ; [.27B8.0020.0019][.277F.0020.0019][.282E.0020.0019] # ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+FD2E ; [.27B8.0020.0017][.278A.0020.0017] # ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+FD38 ; [.27B8.0020.0018][.278A.0020.0018] # ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+FD26 ; [.27B8.0020.0019][.278A.0020.0019] # ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+FD0A ; [.27B8.0020.001A][.278A.0020.001A] # ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+FD68 ; [.27B8.0020.0017][.278A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+FD67 ; [.27B8.0020.0019][.278A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM
+FDAA ; [.27B8.0020.0019][.278A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+FD2F ; [.27B8.0020.0017][.278B.0020.0017] # ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+FD39 ; [.27B8.0020.0018][.278B.0020.0018] # ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+FD27 ; [.27B8.0020.0019][.278B.0020.0019] # ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+FD0B ; [.27B8.0020.001A][.278B.0020.001A] # ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+FD29 ; [.27B8.0020.0019][.27A4.0020.0019] # ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+FD0D ; [.27B8.0020.001A][.27A4.0020.001A] # ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+FD30 ; [.27B8.0020.0017][.280A.0020.0017] # ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+FCE9 ; [.27B8.0020.0018][.280A.0020.0018] # ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+FD28 ; [.27B8.0020.0019][.280A.0020.0019] # ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+FD0C ; [.27B8.0020.001A][.280A.0020.001A] # ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+FD6B ; [.27B8.0020.0017][.280A.0020.0017][.278B.0020.0017] # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+FD6A ; [.27B8.0020.0019][.280A.0020.0019][.278B.0020.0019] # ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM
+FD6D ; [.27B8.0020.0017][.280A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+FD6C ; [.27B8.0020.0019][.280A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM
+FD32 ; [.27B8.0020.0017][.2819.0020.0017] # ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+FCEA ; [.27B8.0020.0018][.2819.0020.0018] # ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+FD19 ; [.27B8.0020.0019][.282D.0020.0019] # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+FCFD ; [.27B8.0020.001A][.282D.0020.001A] # ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+FD1A ; [.27B8.0020.0019][.282E.0020.0019] # ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+FCFE ; [.27B8.0020.001A][.282E.0020.001A] # ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+069A ; [.27B9.0020.0002] # ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE
+069B ; [.27BA.0020.0002] # ARABIC LETTER SEEN WITH THREE DOTS BELOW
+069C ; [.27BB.0020.0002] # ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE
+06FA ; [.27BC.0020.0002] # ARABIC LETTER SHEEN WITH DOT BELOW
+075C ; [.27BD.0020.0002] # ARABIC LETTER SEEN WITH FOUR DOTS ABOVE
+076D ; [.27BE.0020.0002] # ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
+0770 ; [.27BF.0020.0002] # ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS
+077D ; [.27C0.0020.0002] # ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE
+077E ; [.27C1.0020.0002] # ARABIC LETTER SEEN WITH INVERTED V
+0635 ; [.27C2.0020.0002] # ARABIC LETTER SAD
+1EE11 ; [.27C2.0020.0005] # ARABIC MATHEMATICAL SAD
+1EE31 ; [.27C2.0020.0005] # ARABIC MATHEMATICAL INITIAL SAD
+1EE51 ; [.27C2.0020.0005] # ARABIC MATHEMATICAL TAILED SAD
+1EE71 ; [.27C2.0020.0005] # ARABIC MATHEMATICAL STRETCHED SAD
+1EE91 ; [.27C2.0020.0005] # ARABIC MATHEMATICAL LOOPED SAD
+1EEB1 ; [.27C2.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK SAD
+FEBB ; [.27C2.0020.0017] # ARABIC LETTER SAD INITIAL FORM
+FEBC ; [.27C2.0020.0018] # ARABIC LETTER SAD MEDIAL FORM
+FEBA ; [.27C2.0020.0019] # ARABIC LETTER SAD FINAL FORM
+FEB9 ; [.27C2.0020.001A] # ARABIC LETTER SAD ISOLATED FORM
+FCB1 ; [.27C2.0020.0017][.278A.0020.0017] # ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+FC20 ; [.27C2.0020.001A][.278A.0020.001A] # ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+FD65 ; [.27C2.0020.0017][.278A.0020.0017][.278A.0020.0017] # ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+FD64 ; [.27C2.0020.0019][.278A.0020.0019][.278A.0020.0019] # ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM
+FDA9 ; [.27C2.0020.0019][.278A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+FCB2 ; [.27C2.0020.0017][.278B.0020.0017] # ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+FD2B ; [.27C2.0020.0019][.27A4.0020.0019] # ARABIC LIGATURE SAD WITH REH FINAL FORM
+FD0F ; [.27C2.0020.001A][.27A4.0020.001A] # ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+FDF5 ; [.27C2.0020.001A][.2802.0020.001A][.27CE.0020.001A][.280A.0020.001A] # ARABIC LIGATURE SALAM ISOLATED FORM
+FDF9 ; [.27C2.0020.001A][.2802.0020.001A][.282D.0020.001A] # ARABIC LIGATURE SALLA ISOLATED FORM
+FDFA ; [.27C2.0020.001A][.2802.0020.001A][.282D.0020.001A][*0209.0020.001A][.2762.0020.001A][.2802.0020.001A][.2802.0020.001A][.2819.0020.001A][*0209.0020.001A][.27CE.0020.001A][.2802.0020.001A][.282E.0020.001A][.2819.0020.001A][*0209.0020.001A][.281F.0020.001A][.27B7.0020.001A][.2802.0020.001A][.280A.0020.001A] # ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+FDF0 ; [.27C2.0020.001A][.2802.0020.001A][.283C.0020.001A] # ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+FCB3 ; [.27C2.0020.0017][.280A.0020.0017] # ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+FC21 ; [.27C2.0020.001A][.280A.0020.001A] # ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+FDC5 ; [.27C2.0020.0017][.280A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+FD66 ; [.27C2.0020.0019][.280A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+FD21 ; [.27C2.0020.0019][.282D.0020.0019] # ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+FD05 ; [.27C2.0020.001A][.282D.0020.001A] # ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+FD22 ; [.27C2.0020.0019][.282E.0020.0019] # ARABIC LIGATURE SAD WITH YEH FINAL FORM
+FD06 ; [.27C2.0020.001A][.282E.0020.001A] # ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+0636 ; [.27C3.0020.0002] # ARABIC LETTER DAD
+1EE19 ; [.27C3.0020.0005] # ARABIC MATHEMATICAL DAD
+1EE39 ; [.27C3.0020.0005] # ARABIC MATHEMATICAL INITIAL DAD
+1EE59 ; [.27C3.0020.0005] # ARABIC MATHEMATICAL TAILED DAD
+1EE79 ; [.27C3.0020.0005] # ARABIC MATHEMATICAL STRETCHED DAD
+1EE99 ; [.27C3.0020.0005] # ARABIC MATHEMATICAL LOOPED DAD
+1EEB9 ; [.27C3.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK DAD
+FEBF ; [.27C3.0020.0017] # ARABIC LETTER DAD INITIAL FORM
+FEC0 ; [.27C3.0020.0018] # ARABIC LETTER DAD MEDIAL FORM
+FEBE ; [.27C3.0020.0019] # ARABIC LETTER DAD FINAL FORM
+FEBD ; [.27C3.0020.001A] # ARABIC LETTER DAD ISOLATED FORM
+FCB4 ; [.27C3.0020.0017][.277F.0020.0017] # ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+FC22 ; [.27C3.0020.001A][.277F.0020.001A] # ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+FCB5 ; [.27C3.0020.0017][.278A.0020.0017] # ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+FC23 ; [.27C3.0020.001A][.278A.0020.001A] # ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+FD6E ; [.27C3.0020.0019][.278A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDAB ; [.27C3.0020.0019][.278A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+FCB6 ; [.27C3.0020.0017][.278B.0020.0017] # ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+FC24 ; [.27C3.0020.001A][.278B.0020.001A] # ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+FD70 ; [.27C3.0020.0017][.278B.0020.0017][.280A.0020.0017] # ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+FD6F ; [.27C3.0020.0019][.278B.0020.0019][.280A.0020.0019] # ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM
+FD2C ; [.27C3.0020.0019][.27A4.0020.0019] # ARABIC LIGATURE DAD WITH REH FINAL FORM
+FD10 ; [.27C3.0020.001A][.27A4.0020.001A] # ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+FCB7 ; [.27C3.0020.0017][.280A.0020.0017] # ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+FC25 ; [.27C3.0020.001A][.280A.0020.001A] # ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+FD23 ; [.27C3.0020.0019][.282D.0020.0019] # ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+FD07 ; [.27C3.0020.001A][.282D.0020.001A] # ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+FD24 ; [.27C3.0020.0019][.282E.0020.0019] # ARABIC LIGATURE DAD WITH YEH FINAL FORM
+FD08 ; [.27C3.0020.001A][.282E.0020.001A] # ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+069D ; [.27C4.0020.0002] # ARABIC LETTER SAD WITH TWO DOTS BELOW
+08AF ; [.27C5.0020.0002] # ARABIC LETTER SAD WITH THREE DOTS BELOW
+069E ; [.27C6.0020.0002] # ARABIC LETTER SAD WITH THREE DOTS ABOVE
+06FB ; [.27C7.0020.0002] # ARABIC LETTER DAD WITH DOT BELOW
+0637 ; [.27C8.0020.0002] # ARABIC LETTER TAH
+1EE08 ; [.27C8.0020.0005] # ARABIC MATHEMATICAL TAH
+1EE68 ; [.27C8.0020.0005] # ARABIC MATHEMATICAL STRETCHED TAH
+1EE88 ; [.27C8.0020.0005] # ARABIC MATHEMATICAL LOOPED TAH
+1EEA8 ; [.27C8.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK TAH
+FEC3 ; [.27C8.0020.0017] # ARABIC LETTER TAH INITIAL FORM
+FEC4 ; [.27C8.0020.0018] # ARABIC LETTER TAH MEDIAL FORM
+FEC2 ; [.27C8.0020.0019] # ARABIC LETTER TAH FINAL FORM
+FEC1 ; [.27C8.0020.001A] # ARABIC LETTER TAH ISOLATED FORM
+FCB8 ; [.27C8.0020.0017][.278A.0020.0017] # ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+FC26 ; [.27C8.0020.001A][.278A.0020.001A] # ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+FD33 ; [.27C8.0020.0017][.280A.0020.0017] # ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+FD3A ; [.27C8.0020.0018][.280A.0020.0018] # ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+FC27 ; [.27C8.0020.001A][.280A.0020.001A] # ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+FD72 ; [.27C8.0020.0017][.280A.0020.0017][.278A.0020.0017] # ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+FD71 ; [.27C8.0020.0019][.280A.0020.0019][.278A.0020.0019] # ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM
+FD73 ; [.27C8.0020.0017][.280A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+FD74 ; [.27C8.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+FD11 ; [.27C8.0020.0019][.282D.0020.0019] # ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+FCF5 ; [.27C8.0020.001A][.282D.0020.001A] # ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+FD12 ; [.27C8.0020.0019][.282E.0020.0019] # ARABIC LIGATURE TAH WITH YEH FINAL FORM
+FCF6 ; [.27C8.0020.001A][.282E.0020.001A] # ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+0638 ; [.27C9.0020.0002] # ARABIC LETTER ZAH
+1EE1A ; [.27C9.0020.0005] # ARABIC MATHEMATICAL ZAH
+1EE7A ; [.27C9.0020.0005] # ARABIC MATHEMATICAL STRETCHED ZAH
+1EE9A ; [.27C9.0020.0005] # ARABIC MATHEMATICAL LOOPED ZAH
+1EEBA ; [.27C9.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH
+FEC7 ; [.27C9.0020.0017] # ARABIC LETTER ZAH INITIAL FORM
+FEC8 ; [.27C9.0020.0018] # ARABIC LETTER ZAH MEDIAL FORM
+FEC6 ; [.27C9.0020.0019] # ARABIC LETTER ZAH FINAL FORM
+FEC5 ; [.27C9.0020.001A] # ARABIC LETTER ZAH ISOLATED FORM
+FCB9 ; [.27C9.0020.0017][.280A.0020.0017] # ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+FD3B ; [.27C9.0020.0018][.280A.0020.0018] # ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+FC28 ; [.27C9.0020.001A][.280A.0020.001A] # ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+069F ; [.27CA.0020.0002] # ARABIC LETTER TAH WITH THREE DOTS ABOVE
+08A3 ; [.27CB.0020.0002] # ARABIC LETTER TAH WITH TWO DOTS ABOVE
+088B ; [.27CC.0020.0002] # ARABIC LETTER TAH WITH DOT BELOW
+088C ; [.27CD.0020.0002] # ARABIC LETTER TAH WITH THREE DOTS BELOW
+0639 ; [.27CE.0020.0002] # ARABIC LETTER AIN
+1EE0F ; [.27CE.0020.0005] # ARABIC MATHEMATICAL AIN
+1EE2F ; [.27CE.0020.0005] # ARABIC MATHEMATICAL INITIAL AIN
+1EE4F ; [.27CE.0020.0005] # ARABIC MATHEMATICAL TAILED AIN
+1EE6F ; [.27CE.0020.0005] # ARABIC MATHEMATICAL STRETCHED AIN
+1EE8F ; [.27CE.0020.0005] # ARABIC MATHEMATICAL LOOPED AIN
+1EEAF ; [.27CE.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK AIN
+FECB ; [.27CE.0020.0017] # ARABIC LETTER AIN INITIAL FORM
+FECC ; [.27CE.0020.0018] # ARABIC LETTER AIN MEDIAL FORM
+FECA ; [.27CE.0020.0019] # ARABIC LETTER AIN FINAL FORM
+FEC9 ; [.27CE.0020.001A] # ARABIC LETTER AIN ISOLATED FORM
+FCBA ; [.27CE.0020.0017][.277F.0020.0017] # ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+FC29 ; [.27CE.0020.001A][.277F.0020.001A] # ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+FDC4 ; [.27CE.0020.0017][.277F.0020.0017][.280A.0020.0017] # ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+FD75 ; [.27CE.0020.0019][.277F.0020.0019][.280A.0020.0019] # ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+FDF7 ; [.27CE.0020.001A][.2802.0020.001A][.282E.0020.001A][.2819.0020.001A] # ARABIC LIGATURE ALAYHE ISOLATED FORM
+FCBB ; [.27CE.0020.0017][.280A.0020.0017] # ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+FC2A ; [.27CE.0020.001A][.280A.0020.001A] # ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+FD77 ; [.27CE.0020.0017][.280A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+FD76 ; [.27CE.0020.0019][.280A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM
+FD78 ; [.27CE.0020.0019][.280A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FDB6 ; [.27CE.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+FD13 ; [.27CE.0020.0019][.282D.0020.0019] # ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+FCF7 ; [.27CE.0020.001A][.282D.0020.001A] # ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+FD14 ; [.27CE.0020.0019][.282E.0020.0019] # ARABIC LIGATURE AIN WITH YEH FINAL FORM
+FCF8 ; [.27CE.0020.001A][.282E.0020.001A] # ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+063A ; [.27CF.0020.0002] # ARABIC LETTER GHAIN
+1EE1B ; [.27CF.0020.0005] # ARABIC MATHEMATICAL GHAIN
+1EE3B ; [.27CF.0020.0005] # ARABIC MATHEMATICAL INITIAL GHAIN
+1EE5B ; [.27CF.0020.0005] # ARABIC MATHEMATICAL TAILED GHAIN
+1EE7B ; [.27CF.0020.0005] # ARABIC MATHEMATICAL STRETCHED GHAIN
+1EE9B ; [.27CF.0020.0005] # ARABIC MATHEMATICAL LOOPED GHAIN
+1EEBB ; [.27CF.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+FECF ; [.27CF.0020.0017] # ARABIC LETTER GHAIN INITIAL FORM
+FED0 ; [.27CF.0020.0018] # ARABIC LETTER GHAIN MEDIAL FORM
+FECE ; [.27CF.0020.0019] # ARABIC LETTER GHAIN FINAL FORM
+FECD ; [.27CF.0020.001A] # ARABIC LETTER GHAIN ISOLATED FORM
+FCBC ; [.27CF.0020.0017][.277F.0020.0017] # ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+FC2B ; [.27CF.0020.001A][.277F.0020.001A] # ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+FCBD ; [.27CF.0020.0017][.280A.0020.0017] # ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+FC2C ; [.27CF.0020.001A][.280A.0020.001A] # ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+FD79 ; [.27CF.0020.0019][.280A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+FD7B ; [.27CF.0020.0019][.280A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD7A ; [.27CF.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+FD15 ; [.27CF.0020.0019][.282D.0020.0019] # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+FCF9 ; [.27CF.0020.001A][.282D.0020.001A] # ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+FD16 ; [.27CF.0020.0019][.282E.0020.0019] # ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+FCFA ; [.27CF.0020.001A][.282E.0020.001A] # ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+06A0 ; [.27D0.0020.0002] # ARABIC LETTER AIN WITH THREE DOTS ABOVE
+08C3 ; [.27D1.0020.0002] # ARABIC LETTER GHAIN WITH THREE DOTS ABOVE
+06FC ; [.27D2.0020.0002] # ARABIC LETTER GHAIN WITH DOT BELOW
+075D ; [.27D3.0020.0002] # ARABIC LETTER AIN WITH TWO DOTS ABOVE
+075E ; [.27D4.0020.0002] # ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE
+075F ; [.27D5.0020.0002] # ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE
+08B3 ; [.27D6.0020.0002] # ARABIC LETTER AIN WITH THREE DOTS BELOW
+0641 ; [.27D7.0020.0002] # ARABIC LETTER FEH
+1EE10 ; [.27D7.0020.0005] # ARABIC MATHEMATICAL FEH
+1EE30 ; [.27D7.0020.0005] # ARABIC MATHEMATICAL INITIAL FEH
+1EE70 ; [.27D7.0020.0005] # ARABIC MATHEMATICAL STRETCHED FEH
+1EE90 ; [.27D7.0020.0005] # ARABIC MATHEMATICAL LOOPED FEH
+1EEB0 ; [.27D7.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK FEH
+FED3 ; [.27D7.0020.0017] # ARABIC LETTER FEH INITIAL FORM
+FED4 ; [.27D7.0020.0018] # ARABIC LETTER FEH MEDIAL FORM
+FED2 ; [.27D7.0020.0019] # ARABIC LETTER FEH FINAL FORM
+FED1 ; [.27D7.0020.001A] # ARABIC LETTER FEH ISOLATED FORM
+FCBE ; [.27D7.0020.0017][.277F.0020.0017] # ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+FC2D ; [.27D7.0020.001A][.277F.0020.001A] # ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+FCBF ; [.27D7.0020.0017][.278A.0020.0017] # ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+FC2E ; [.27D7.0020.001A][.278A.0020.001A] # ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+FCC0 ; [.27D7.0020.0017][.278B.0020.0017] # ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+FC2F ; [.27D7.0020.001A][.278B.0020.001A] # ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+FD7D ; [.27D7.0020.0017][.278B.0020.0017][.280A.0020.0017] # ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+FD7C ; [.27D7.0020.0019][.278B.0020.0019][.280A.0020.0019] # ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM
+FCC1 ; [.27D7.0020.0017][.280A.0020.0017] # ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+FC30 ; [.27D7.0020.001A][.280A.0020.001A] # ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+FDC1 ; [.27D7.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+FC7C ; [.27D7.0020.0019][.282D.0020.0019] # ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+FC31 ; [.27D7.0020.001A][.282D.0020.001A] # ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+FC7D ; [.27D7.0020.0019][.282E.0020.0019] # ARABIC LIGATURE FEH WITH YEH FINAL FORM
+FC32 ; [.27D7.0020.001A][.282E.0020.001A] # ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+06A1 ; [.27D8.0020.0002] # ARABIC LETTER DOTLESS FEH
+1EE1E ; [.27D8.0020.0005] # ARABIC MATHEMATICAL DOTLESS FEH
+1EE7E ; [.27D8.0020.0005] # ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+06A2 ; [.27D9.0020.0002] # ARABIC LETTER FEH WITH DOT MOVED BELOW
+08BB ; [.27DA.0020.0002] # ARABIC LETTER AFRICAN FEH
+06A3 ; [.27DB.0020.0002] # ARABIC LETTER FEH WITH DOT BELOW
+06A4 ; [.27DC.0020.0002] # ARABIC LETTER VEH
+FB6C ; [.27DC.0020.0017] # ARABIC LETTER VEH INITIAL FORM
+FB6D ; [.27DC.0020.0018] # ARABIC LETTER VEH MEDIAL FORM
+FB6B ; [.27DC.0020.0019] # ARABIC LETTER VEH FINAL FORM
+FB6A ; [.27DC.0020.001A] # ARABIC LETTER VEH ISOLATED FORM
+08A4 ; [.27DD.0020.0002] # ARABIC LETTER FEH WITH DOT BELOW AND THREE DOTS ABOVE
+06A5 ; [.27DE.0020.0002] # ARABIC LETTER FEH WITH THREE DOTS BELOW
+06A6 ; [.27DF.0020.0002] # ARABIC LETTER PEHEH
+FB70 ; [.27DF.0020.0017] # ARABIC LETTER PEHEH INITIAL FORM
+FB71 ; [.27DF.0020.0018] # ARABIC LETTER PEHEH MEDIAL FORM
+FB6F ; [.27DF.0020.0019] # ARABIC LETTER PEHEH FINAL FORM
+FB6E ; [.27DF.0020.001A] # ARABIC LETTER PEHEH ISOLATED FORM
+0760 ; [.27E0.0020.0002] # ARABIC LETTER FEH WITH TWO DOTS BELOW
+0761 ; [.27E1.0020.0002] # ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW
+066F ; [.27E2.0020.0002] # ARABIC LETTER DOTLESS QAF
+1EE1F ; [.27E2.0020.0005] # ARABIC MATHEMATICAL DOTLESS QAF
+1EE5F ; [.27E2.0020.0005] # ARABIC MATHEMATICAL TAILED DOTLESS QAF
+0642 ; [.27E3.0020.0002] # ARABIC LETTER QAF
+1EE12 ; [.27E3.0020.0005] # ARABIC MATHEMATICAL QAF
+1EE32 ; [.27E3.0020.0005] # ARABIC MATHEMATICAL INITIAL QAF
+1EE52 ; [.27E3.0020.0005] # ARABIC MATHEMATICAL TAILED QAF
+1EE72 ; [.27E3.0020.0005] # ARABIC MATHEMATICAL STRETCHED QAF
+1EE92 ; [.27E3.0020.0005] # ARABIC MATHEMATICAL LOOPED QAF
+1EEB2 ; [.27E3.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK QAF
+FED7 ; [.27E3.0020.0017] # ARABIC LETTER QAF INITIAL FORM
+FED8 ; [.27E3.0020.0018] # ARABIC LETTER QAF MEDIAL FORM
+FED6 ; [.27E3.0020.0019] # ARABIC LETTER QAF FINAL FORM
+FED5 ; [.27E3.0020.001A] # ARABIC LETTER QAF ISOLATED FORM
+FCC2 ; [.27E3.0020.0017][.278A.0020.0017] # ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+FC33 ; [.27E3.0020.001A][.278A.0020.001A] # ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+FDF1 ; [.27E3.0020.001A][.2802.0020.001A][.283C.0020.001A] # ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+FCC3 ; [.27E3.0020.0017][.280A.0020.0017] # ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+FC34 ; [.27E3.0020.001A][.280A.0020.001A] # ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+FDB4 ; [.27E3.0020.0017][.280A.0020.0017][.278A.0020.0017] # ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+FD7E ; [.27E3.0020.0019][.280A.0020.0019][.278A.0020.0019] # ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+FD7F ; [.27E3.0020.0019][.280A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+FDB2 ; [.27E3.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+FC7E ; [.27E3.0020.0019][.282D.0020.0019] # ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+FC35 ; [.27E3.0020.001A][.282D.0020.001A] # ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+FC7F ; [.27E3.0020.0019][.282E.0020.0019] # ARABIC LIGATURE QAF WITH YEH FINAL FORM
+FC36 ; [.27E3.0020.001A][.282E.0020.001A] # ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+06A7 ; [.27E4.0020.0002] # ARABIC LETTER QAF WITH DOT ABOVE
+08BC ; [.27E5.0020.0002] # ARABIC LETTER AFRICAN QAF
+06A8 ; [.27E6.0020.0002] # ARABIC LETTER QAF WITH THREE DOTS ABOVE
+08C4 ; [.27E7.0020.0002] # ARABIC LETTER AFRICAN QAF WITH THREE DOTS ABOVE
+08A5 ; [.27E8.0020.0002] # ARABIC LETTER QAF WITH DOT BELOW
+08B5 ; [.27E9.0020.0002] # ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE
+0643 ; [.27EA.0020.0002] # ARABIC LETTER KAF
+1EE0A ; [.27EA.0020.0005] # ARABIC MATHEMATICAL KAF
+1EE2A ; [.27EA.0020.0005] # ARABIC MATHEMATICAL INITIAL KAF
+1EE6A ; [.27EA.0020.0005] # ARABIC MATHEMATICAL STRETCHED KAF
+FEDB ; [.27EA.0020.0017] # ARABIC LETTER KAF INITIAL FORM
+FEDC ; [.27EA.0020.0018] # ARABIC LETTER KAF MEDIAL FORM
+FEDA ; [.27EA.0020.0019] # ARABIC LETTER KAF FINAL FORM
+FED9 ; [.27EA.0020.001A] # ARABIC LETTER KAF ISOLATED FORM
+FC80 ; [.27EA.0020.0019][.2762.0020.0019] # ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+FC37 ; [.27EA.0020.001A][.2762.0020.001A] # ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+FCC4 ; [.27EA.0020.0017][.277F.0020.0017] # ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+FC38 ; [.27EA.0020.001A][.277F.0020.001A] # ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+FCC5 ; [.27EA.0020.0017][.278A.0020.0017] # ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+FC39 ; [.27EA.0020.001A][.278A.0020.001A] # ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+FCC6 ; [.27EA.0020.0017][.278B.0020.0017] # ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+FC3A ; [.27EA.0020.001A][.278B.0020.001A] # ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+FCC7 ; [.27EA.0020.0017][.2802.0020.0017] # ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+FCEB ; [.27EA.0020.0018][.2802.0020.0018] # ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+FC81 ; [.27EA.0020.0019][.2802.0020.0019] # ARABIC LIGATURE KAF WITH LAM FINAL FORM
+FC3B ; [.27EA.0020.001A][.2802.0020.001A] # ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+FCC8 ; [.27EA.0020.0017][.280A.0020.0017] # ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+FCEC ; [.27EA.0020.0018][.280A.0020.0018] # ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+FC82 ; [.27EA.0020.0019][.280A.0020.0019] # ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+FC3C ; [.27EA.0020.001A][.280A.0020.001A] # ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+FDC3 ; [.27EA.0020.0017][.280A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+FDBB ; [.27EA.0020.0019][.280A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+FDB7 ; [.27EA.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+FC83 ; [.27EA.0020.0019][.282D.0020.0019] # ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+FC3D ; [.27EA.0020.001A][.282D.0020.001A] # ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+FC84 ; [.27EA.0020.0019][.282E.0020.0019] # ARABIC LIGATURE KAF WITH YEH FINAL FORM
+FC3E ; [.27EA.0020.001A][.282E.0020.001A] # ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+06A9 ; [.27EB.0020.0002] # ARABIC LETTER KEHEH
+FB90 ; [.27EB.0020.0017] # ARABIC LETTER KEHEH INITIAL FORM
+FB91 ; [.27EB.0020.0018] # ARABIC LETTER KEHEH MEDIAL FORM
+FB8F ; [.27EB.0020.0019] # ARABIC LETTER KEHEH FINAL FORM
+FB8E ; [.27EB.0020.001A] # ARABIC LETTER KEHEH ISOLATED FORM
+06AA ; [.27EC.0020.0002] # ARABIC LETTER SWASH KAF
+06AB ; [.27ED.0020.0002] # ARABIC LETTER KAF WITH RING
+06AC ; [.27EE.0020.0002] # ARABIC LETTER KAF WITH DOT ABOVE
+077F ; [.27EF.0020.0002] # ARABIC LETTER KAF WITH TWO DOTS ABOVE
+06AD ; [.27F0.0020.0002] # ARABIC LETTER NG
+FBD5 ; [.27F0.0020.0017] # ARABIC LETTER NG INITIAL FORM
+FBD6 ; [.27F0.0020.0018] # ARABIC LETTER NG MEDIAL FORM
+FBD4 ; [.27F0.0020.0019] # ARABIC LETTER NG FINAL FORM
+FBD3 ; [.27F0.0020.001A] # ARABIC LETTER NG ISOLATED FORM
+06AE ; [.27F1.0020.0002] # ARABIC LETTER KAF WITH THREE DOTS BELOW
+08B4 ; [.27F2.0020.0002] # ARABIC LETTER KAF WITH DOT BELOW
+06AF ; [.27F3.0020.0002] # ARABIC LETTER GAF
+FB94 ; [.27F3.0020.0017] # ARABIC LETTER GAF INITIAL FORM
+FB95 ; [.27F3.0020.0018] # ARABIC LETTER GAF MEDIAL FORM
+FB93 ; [.27F3.0020.0019] # ARABIC LETTER GAF FINAL FORM
+FB92 ; [.27F3.0020.001A] # ARABIC LETTER GAF ISOLATED FORM
+08B0 ; [.27F4.0020.0002] # ARABIC LETTER GAF WITH INVERTED STROKE
+08C8 ; [.27F5.0020.0002] # ARABIC LETTER GRAF
+06B0 ; [.27F6.0020.0002] # ARABIC LETTER GAF WITH RING
+06B1 ; [.27F7.0020.0002] # ARABIC LETTER NGOEH
+FB9C ; [.27F7.0020.0017] # ARABIC LETTER NGOEH INITIAL FORM
+FB9D ; [.27F7.0020.0018] # ARABIC LETTER NGOEH MEDIAL FORM
+FB9B ; [.27F7.0020.0019] # ARABIC LETTER NGOEH FINAL FORM
+FB9A ; [.27F7.0020.001A] # ARABIC LETTER NGOEH ISOLATED FORM
+06B2 ; [.27F8.0020.0002] # ARABIC LETTER GAF WITH TWO DOTS BELOW
+06B3 ; [.27F9.0020.0002] # ARABIC LETTER GUEH
+FB98 ; [.27F9.0020.0017] # ARABIC LETTER GUEH INITIAL FORM
+FB99 ; [.27F9.0020.0018] # ARABIC LETTER GUEH MEDIAL FORM
+FB97 ; [.27F9.0020.0019] # ARABIC LETTER GUEH FINAL FORM
+FB96 ; [.27F9.0020.001A] # ARABIC LETTER GUEH ISOLATED FORM
+06B4 ; [.27FA.0020.0002] # ARABIC LETTER GAF WITH THREE DOTS ABOVE
+0762 ; [.27FB.0020.0002] # ARABIC LETTER KEHEH WITH DOT ABOVE
+063B ; [.27FC.0020.0002] # ARABIC LETTER KEHEH WITH TWO DOTS ABOVE
+088D ; [.27FD.0020.0002] # ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW
+063C ; [.27FE.0020.0002] # ARABIC LETTER KEHEH WITH THREE DOTS BELOW
+0763 ; [.27FF.0020.0002] # ARABIC LETTER KEHEH WITH THREE DOTS ABOVE
+0764 ; [.2800.0020.0002] # ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW
+08C2 ; [.2801.0020.0002] # ARABIC LETTER KEHEH WITH SMALL V
+0644 ; [.2802.0020.0002] # ARABIC LETTER LAM
+1EE0B ; [.2802.0020.0005] # ARABIC MATHEMATICAL LAM
+1EE2B ; [.2802.0020.0005] # ARABIC MATHEMATICAL INITIAL LAM
+1EE4B ; [.2802.0020.0005] # ARABIC MATHEMATICAL TAILED LAM
+1EE8B ; [.2802.0020.0005] # ARABIC MATHEMATICAL LOOPED LAM
+1EEAB ; [.2802.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK LAM
+FEDF ; [.2802.0020.0017] # ARABIC LETTER LAM INITIAL FORM
+FEE0 ; [.2802.0020.0018] # ARABIC LETTER LAM MEDIAL FORM
+FEDE ; [.2802.0020.0019] # ARABIC LETTER LAM FINAL FORM
+FEDD ; [.2802.0020.001A] # ARABIC LETTER LAM ISOLATED FORM
+FEF6 ; [.2802.0020.0019][.2755.0020.0019] # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+FEF5 ; [.2802.0020.001A][.2755.0020.001A] # ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+FEF8 ; [.2802.0020.0019][.2756.0020.0019] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+FEF7 ; [.2802.0020.001A][.2756.0020.001A] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+FEFA ; [.2802.0020.0019][.275A.0020.0019] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+FEF9 ; [.2802.0020.001A][.275A.0020.001A] # ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM
+FEFC ; [.2802.0020.0019][.2762.0020.0019] # ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FEFB ; [.2802.0020.001A][.2762.0020.001A] # ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+FCC9 ; [.2802.0020.0017][.277F.0020.0017] # ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+FC3F ; [.2802.0020.001A][.277F.0020.001A] # ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+FD83 ; [.2802.0020.0017][.277F.0020.0017][.277F.0020.0017] # ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM
+FD84 ; [.2802.0020.0019][.277F.0020.0019][.277F.0020.0019] # ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+FDBA ; [.2802.0020.0017][.277F.0020.0017][.280A.0020.0017] # ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+FDBC ; [.2802.0020.0019][.277F.0020.0019][.280A.0020.0019] # ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+FDAC ; [.2802.0020.0019][.277F.0020.0019][.282E.0020.0019] # ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+FCCA ; [.2802.0020.0017][.278A.0020.0017] # ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+FC40 ; [.2802.0020.001A][.278A.0020.001A] # ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+FDB5 ; [.2802.0020.0017][.278A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+FD80 ; [.2802.0020.0019][.278A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+FD82 ; [.2802.0020.0019][.278A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+FD81 ; [.2802.0020.0019][.278A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+FCCB ; [.2802.0020.0017][.278B.0020.0017] # ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+FC41 ; [.2802.0020.001A][.278B.0020.001A] # ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+FD86 ; [.2802.0020.0017][.278B.0020.0017][.280A.0020.0017] # ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+FD85 ; [.2802.0020.0019][.278B.0020.0019][.280A.0020.0019] # ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM
+FCCC ; [.2802.0020.0017][.280A.0020.0017] # ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+FCED ; [.2802.0020.0018][.280A.0020.0018] # ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+FC85 ; [.2802.0020.0019][.280A.0020.0019] # ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+FC42 ; [.2802.0020.001A][.280A.0020.001A] # ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+FD88 ; [.2802.0020.0017][.280A.0020.0017][.278A.0020.0017] # ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+FD87 ; [.2802.0020.0019][.280A.0020.0019][.278A.0020.0019] # ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM
+FDAD ; [.2802.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+FCCD ; [.2802.0020.0017][.2819.0020.0017] # ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+FC86 ; [.2802.0020.0019][.282D.0020.0019] # ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+FC43 ; [.2802.0020.001A][.282D.0020.001A] # ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+FC87 ; [.2802.0020.0019][.282E.0020.0019] # ARABIC LIGATURE LAM WITH YEH FINAL FORM
+FC44 ; [.2802.0020.001A][.282E.0020.001A] # ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+06B5 ; [.2803.0020.0002] # ARABIC LETTER LAM WITH SMALL V
+06B6 ; [.2804.0020.0002] # ARABIC LETTER LAM WITH DOT ABOVE
+06B7 ; [.2805.0020.0002] # ARABIC LETTER LAM WITH THREE DOTS ABOVE
+06B8 ; [.2806.0020.0002] # ARABIC LETTER LAM WITH THREE DOTS BELOW
+076A ; [.2807.0020.0002] # ARABIC LETTER LAM WITH BAR
+08A6 ; [.2808.0020.0002] # ARABIC LETTER LAM WITH DOUBLE BAR
+08C7 ; [.2809.0020.0002] # ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
+0645 ; [.280A.0020.0002] # ARABIC LETTER MEEM
+1EE0C ; [.280A.0020.0005] # ARABIC MATHEMATICAL MEEM
+1EE2C ; [.280A.0020.0005] # ARABIC MATHEMATICAL INITIAL MEEM
+1EE6C ; [.280A.0020.0005] # ARABIC MATHEMATICAL STRETCHED MEEM
+1EE8C ; [.280A.0020.0005] # ARABIC MATHEMATICAL LOOPED MEEM
+1EEAC ; [.280A.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM
+FEE3 ; [.280A.0020.0017] # ARABIC LETTER MEEM INITIAL FORM
+FEE4 ; [.280A.0020.0018] # ARABIC LETTER MEEM MEDIAL FORM
+FEE2 ; [.280A.0020.0019] # ARABIC LETTER MEEM FINAL FORM
+FEE1 ; [.280A.0020.001A] # ARABIC LETTER MEEM ISOLATED FORM
+06FE ; [.280A.0020.0004][.0000.0119.0004] # ARABIC SIGN SINDHI POSTPOSITION MEN
+FC88 ; [.280A.0020.0019][.2762.0020.0019] # ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+FCCE ; [.280A.0020.0017][.277F.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+FC45 ; [.280A.0020.001A][.277F.0020.001A] # ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+FD8C ; [.280A.0020.0017][.277F.0020.0017][.278A.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+FD92 ; [.280A.0020.0017][.277F.0020.0017][.278B.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+FD8D ; [.280A.0020.0017][.277F.0020.0017][.280A.0020.0017] # ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+FDC0 ; [.280A.0020.0019][.277F.0020.0019][.282E.0020.0019] # ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+FCCF ; [.280A.0020.0017][.278A.0020.0017] # ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+FC46 ; [.280A.0020.001A][.278A.0020.001A] # ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+FD89 ; [.280A.0020.0017][.278A.0020.0017][.277F.0020.0017] # ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+FD8A ; [.280A.0020.0017][.278A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+FDF4 ; [.280A.0020.001A][.278A.0020.001A][.280A.0020.001A][.2795.0020.001A] # ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+FD8B ; [.280A.0020.0019][.278A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+FCD0 ; [.280A.0020.0017][.278B.0020.0017] # ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+FC47 ; [.280A.0020.001A][.278B.0020.001A] # ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+FD8E ; [.280A.0020.0017][.278B.0020.0017][.277F.0020.0017] # ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+FD8F ; [.280A.0020.0017][.278B.0020.0017][.280A.0020.0017] # ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FDB9 ; [.280A.0020.0019][.278B.0020.0019][.282E.0020.0019] # ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+FCD1 ; [.280A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+FC89 ; [.280A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+FC48 ; [.280A.0020.001A][.280A.0020.001A] # ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+FDB1 ; [.280A.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+FC49 ; [.280A.0020.001A][.282D.0020.001A] # ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+FC4A ; [.280A.0020.001A][.282E.0020.001A] # ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+0765 ; [.280B.0020.0002] # ARABIC LETTER MEEM WITH DOT ABOVE
+0766 ; [.280C.0020.0002] # ARABIC LETTER MEEM WITH DOT BELOW
+08A7 ; [.280D.0020.0002] # ARABIC LETTER MEEM WITH THREE DOTS ABOVE
+0646 ; [.280E.0020.0002] # ARABIC LETTER NOON
+1EE0D ; [.280E.0020.0005] # ARABIC MATHEMATICAL NOON
+1EE2D ; [.280E.0020.0005] # ARABIC MATHEMATICAL INITIAL NOON
+1EE4D ; [.280E.0020.0005] # ARABIC MATHEMATICAL TAILED NOON
+1EE6D ; [.280E.0020.0005] # ARABIC MATHEMATICAL STRETCHED NOON
+1EE8D ; [.280E.0020.0005] # ARABIC MATHEMATICAL LOOPED NOON
+1EEAD ; [.280E.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK NOON
+FEE7 ; [.280E.0020.0017] # ARABIC LETTER NOON INITIAL FORM
+FEE8 ; [.280E.0020.0018] # ARABIC LETTER NOON MEDIAL FORM
+FEE6 ; [.280E.0020.0019] # ARABIC LETTER NOON FINAL FORM
+FEE5 ; [.280E.0020.001A] # ARABIC LETTER NOON ISOLATED FORM
+FCD2 ; [.280E.0020.0017][.277F.0020.0017] # ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+FC4B ; [.280E.0020.001A][.277F.0020.001A] # ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+FDB8 ; [.280E.0020.0017][.277F.0020.0017][.278A.0020.0017] # ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+FDBD ; [.280E.0020.0019][.277F.0020.0019][.278A.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+FD98 ; [.280E.0020.0017][.277F.0020.0017][.280A.0020.0017] # ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+FD97 ; [.280E.0020.0019][.277F.0020.0019][.280A.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM
+FD99 ; [.280E.0020.0019][.277F.0020.0019][.282D.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+FDC7 ; [.280E.0020.0019][.277F.0020.0019][.282E.0020.0019] # ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FCD3 ; [.280E.0020.0017][.278A.0020.0017] # ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+FC4C ; [.280E.0020.001A][.278A.0020.001A] # ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+FD95 ; [.280E.0020.0017][.278A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+FD96 ; [.280E.0020.0019][.278A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+FDB3 ; [.280E.0020.0019][.278A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+FCD4 ; [.280E.0020.0017][.278B.0020.0017] # ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+FC4D ; [.280E.0020.001A][.278B.0020.001A] # ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+FC8A ; [.280E.0020.0019][.27A4.0020.0019] # ARABIC LIGATURE NOON WITH REH FINAL FORM
+FC8B ; [.280E.0020.0019][.27A5.0020.0019] # ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+FCD5 ; [.280E.0020.0017][.280A.0020.0017] # ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+FCEE ; [.280E.0020.0018][.280A.0020.0018] # ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+FC8C ; [.280E.0020.0019][.280A.0020.0019] # ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+FC4E ; [.280E.0020.001A][.280A.0020.001A] # ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+FD9B ; [.280E.0020.0019][.280A.0020.0019][.282D.0020.0019] # ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+FD9A ; [.280E.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+FC8D ; [.280E.0020.0019][.280E.0020.0019] # ARABIC LIGATURE NOON WITH NOON FINAL FORM
+FCD6 ; [.280E.0020.0017][.2819.0020.0017] # ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+FCEF ; [.280E.0020.0018][.2819.0020.0018] # ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+FC8E ; [.280E.0020.0019][.282D.0020.0019] # ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+FC4F ; [.280E.0020.001A][.282D.0020.001A] # ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+FC8F ; [.280E.0020.0019][.282E.0020.0019] # ARABIC LIGATURE NOON WITH YEH FINAL FORM
+FC50 ; [.280E.0020.001A][.282E.0020.001A] # ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+06BA ; [.280F.0020.0002] # ARABIC LETTER NOON GHUNNA
+1EE1D ; [.280F.0020.0005] # ARABIC MATHEMATICAL DOTLESS NOON
+1EE5D ; [.280F.0020.0005] # ARABIC MATHEMATICAL TAILED DOTLESS NOON
+FB9F ; [.280F.0020.0019] # ARABIC LETTER NOON GHUNNA FINAL FORM
+FB9E ; [.280F.0020.001A] # ARABIC LETTER NOON GHUNNA ISOLATED FORM
+08BD ; [.2810.0020.0002] # ARABIC LETTER AFRICAN NOON
+06BB ; [.2811.0020.0002] # ARABIC LETTER RNOON
+FBA2 ; [.2811.0020.0017] # ARABIC LETTER RNOON INITIAL FORM
+FBA3 ; [.2811.0020.0018] # ARABIC LETTER RNOON MEDIAL FORM
+FBA1 ; [.2811.0020.0019] # ARABIC LETTER RNOON FINAL FORM
+FBA0 ; [.2811.0020.001A] # ARABIC LETTER RNOON ISOLATED FORM
+06BC ; [.2812.0020.0002] # ARABIC LETTER NOON WITH RING
+06BD ; [.2813.0020.0002] # ARABIC LETTER NOON WITH THREE DOTS ABOVE
+06B9 ; [.2814.0020.0002] # ARABIC LETTER NOON WITH DOT BELOW
+0767 ; [.2815.0020.0002] # ARABIC LETTER NOON WITH TWO DOTS BELOW
+0768 ; [.2816.0020.0002] # ARABIC LETTER NOON WITH SMALL TAH
+0769 ; [.2817.0020.0002] # ARABIC LETTER NOON WITH SMALL V
+0889 ; [.2818.0020.0002] # ARABIC LETTER NOON WITH INVERTED SMALL V
+0647 ; [.2819.0020.0002] # ARABIC LETTER HEH
+1EE24 ; [.2819.0020.0005] # ARABIC MATHEMATICAL INITIAL HEH
+1EE64 ; [.2819.0020.0005] # ARABIC MATHEMATICAL STRETCHED HEH
+1EE84 ; [.2819.0020.0005] # ARABIC MATHEMATICAL LOOPED HEH
+FEEB ; [.2819.0020.0017] # ARABIC LETTER HEH INITIAL FORM
+FEEC ; [.2819.0020.0018] # ARABIC LETTER HEH MEDIAL FORM
+FEEA ; [.2819.0020.0019] # ARABIC LETTER HEH FINAL FORM
+FEE9 ; [.2819.0020.001A] # ARABIC LETTER HEH ISOLATED FORM
+FCD9 ; [.2819.0020.0017][.0000.0098.0017] # ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+FCD7 ; [.2819.0020.0017][.277F.0020.0017] # ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+FC51 ; [.2819.0020.001A][.277F.0020.001A] # ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+FCD8 ; [.2819.0020.0017][.280A.0020.0017] # ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+FC52 ; [.2819.0020.001A][.280A.0020.001A] # ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+FD93 ; [.2819.0020.0017][.280A.0020.0017][.277F.0020.0017] # ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+FD94 ; [.2819.0020.0017][.280A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+FC53 ; [.2819.0020.001A][.282D.0020.001A] # ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+FC54 ; [.2819.0020.001A][.282E.0020.001A] # ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+06BE ; [.281A.0020.0002] # ARABIC LETTER HEH DOACHASHMEE
+FBAC ; [.281A.0020.0017] # ARABIC LETTER HEH DOACHASHMEE INITIAL FORM
+FBAD ; [.281A.0020.0018] # ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+FBAB ; [.281A.0020.0019] # ARABIC LETTER HEH DOACHASHMEE FINAL FORM
+FBAA ; [.281A.0020.001A] # ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+06C1 ; [.281B.0020.0002] # ARABIC LETTER HEH GOAL
+FBA8 ; [.281B.0020.0017] # ARABIC LETTER HEH GOAL INITIAL FORM
+FBA9 ; [.281B.0020.0018] # ARABIC LETTER HEH GOAL MEDIAL FORM
+FBA7 ; [.281B.0020.0019] # ARABIC LETTER HEH GOAL FINAL FORM
+FBA6 ; [.281B.0020.001A] # ARABIC LETTER HEH GOAL ISOLATED FORM
+06C2 ; [.281B.0020.0002][.0000.0083.0002] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06C3 ; [.281C.0020.0002] # ARABIC LETTER TEH MARBUTA GOAL
+06FF ; [.281D.0020.0002] # ARABIC LETTER HEH WITH INVERTED V
+06D5 ; [.281E.0020.0002] # ARABIC LETTER AE
+06C0 ; [.281E.0020.0002][.0000.0083.0002] # ARABIC LETTER HEH WITH YEH ABOVE
+FBA5 ; [.281E.0020.0019][.0000.0083.0019] # ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBA4 ; [.281E.0020.001A][.0000.0083.001A] # ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM
+0648 ; [.281F.0020.0002] # ARABIC LETTER WAW
+06E5 ; [.281F.0020.0004] # ARABIC SMALL WAW
+0884 ; [.281F.0020.0004] # ARABIC TATWEEL WITH OVERSTRUCK WAW
+1EE05 ; [.281F.0020.0005] # ARABIC MATHEMATICAL WAW
+1EE85 ; [.281F.0020.0005] # ARABIC MATHEMATICAL LOOPED WAW
+1EEA5 ; [.281F.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK WAW
+FEEE ; [.281F.0020.0019] # ARABIC LETTER WAW FINAL FORM
+FEED ; [.281F.0020.001A] # ARABIC LETTER WAW ISOLATED FORM
+FDF8 ; [.281F.0020.001A][.27B7.0020.001A][.2802.0020.001A][.280A.0020.001A] # ARABIC LIGATURE WASALLAM ISOLATED FORM
+06C4 ; [.2820.0020.0002] # ARABIC LETTER WAW WITH RING
+06C5 ; [.2821.0020.0002] # ARABIC LETTER KIRGHIZ OE
+FBE1 ; [.2821.0020.0019] # ARABIC LETTER KIRGHIZ OE FINAL FORM
+FBE0 ; [.2821.0020.001A] # ARABIC LETTER KIRGHIZ OE ISOLATED FORM
+06C6 ; [.2822.0020.0002] # ARABIC LETTER OE
+FBDA ; [.2822.0020.0019] # ARABIC LETTER OE FINAL FORM
+FBD9 ; [.2822.0020.001A] # ARABIC LETTER OE ISOLATED FORM
+06C7 ; [.2823.0020.0002] # ARABIC LETTER U
+FBD8 ; [.2823.0020.0019] # ARABIC LETTER U FINAL FORM
+FBD7 ; [.2823.0020.001A] # ARABIC LETTER U ISOLATED FORM
+06C8 ; [.2824.0020.0002] # ARABIC LETTER YU
+FBDC ; [.2824.0020.0019] # ARABIC LETTER YU FINAL FORM
+FBDB ; [.2824.0020.001A] # ARABIC LETTER YU ISOLATED FORM
+06C9 ; [.2825.0020.0002] # ARABIC LETTER KIRGHIZ YU
+FBE3 ; [.2825.0020.0019] # ARABIC LETTER KIRGHIZ YU FINAL FORM
+FBE2 ; [.2825.0020.001A] # ARABIC LETTER KIRGHIZ YU ISOLATED FORM
+06CA ; [.2826.0020.0002] # ARABIC LETTER WAW WITH TWO DOTS ABOVE
+06CB ; [.2827.0020.0002] # ARABIC LETTER VE
+FBDF ; [.2827.0020.0019] # ARABIC LETTER VE FINAL FORM
+FBDE ; [.2827.0020.001A] # ARABIC LETTER VE ISOLATED FORM
+08B1 ; [.2828.0020.0002] # ARABIC LETTER STRAIGHT WAW
+06CF ; [.2829.0020.0002] # ARABIC LETTER WAW WITH DOT ABOVE
+0778 ; [.282A.0020.0002] # ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
+0779 ; [.282B.0020.0002] # ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
+08AB ; [.282C.0020.0002] # ARABIC LETTER WAW WITH DOT WITHIN
+0649 ; [.282D.0020.0002] # ARABIC LETTER ALEF MAKSURA
+FBE8 ; [.282D.0020.0017] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM
+FBE9 ; [.282D.0020.0018] # ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+FEF0 ; [.282D.0020.0019] # ARABIC LETTER ALEF MAKSURA FINAL FORM
+FEEF ; [.282D.0020.001A] # ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+FC90 ; [.282D.0020.0019][.0000.0098.0019] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+FC5D ; [.282D.0020.001A][.0000.0098.001A] # ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+064A ; [.282E.0020.0002] # ARABIC LETTER YEH
+06E6 ; [.282E.0020.0004] # ARABIC SMALL YEH
+0885 ; [.282E.0020.0004] # ARABIC TATWEEL WITH TWO DOTS BELOW
+0886 ; [.282E.0020.0004] # ARABIC LETTER THIN YEH
+1EE09 ; [.282E.0020.0005] # ARABIC MATHEMATICAL YEH
+1EE29 ; [.282E.0020.0005] # ARABIC MATHEMATICAL INITIAL YEH
+1EE49 ; [.282E.0020.0005] # ARABIC MATHEMATICAL TAILED YEH
+1EE69 ; [.282E.0020.0005] # ARABIC MATHEMATICAL STRETCHED YEH
+1EE89 ; [.282E.0020.0005] # ARABIC MATHEMATICAL LOOPED YEH
+1EEA9 ; [.282E.0020.0005] # ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+FEF3 ; [.282E.0020.0017] # ARABIC LETTER YEH INITIAL FORM
+FEF4 ; [.282E.0020.0018] # ARABIC LETTER YEH MEDIAL FORM
+FEF2 ; [.282E.0020.0019] # ARABIC LETTER YEH FINAL FORM
+FEF1 ; [.282E.0020.001A] # ARABIC LETTER YEH ISOLATED FORM
+FCDA ; [.282E.0020.0017][.277F.0020.0017] # ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+FC55 ; [.282E.0020.001A][.277F.0020.001A] # ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+FDAF ; [.282E.0020.0019][.277F.0020.0019][.282E.0020.0019] # ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+FCDB ; [.282E.0020.0017][.278A.0020.0017] # ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+FC56 ; [.282E.0020.001A][.278A.0020.001A] # ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+FDAE ; [.282E.0020.0019][.278A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+FCDC ; [.282E.0020.0017][.278B.0020.0017] # ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+FC57 ; [.282E.0020.001A][.278B.0020.001A] # ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+FC91 ; [.282E.0020.0019][.27A4.0020.0019] # ARABIC LIGATURE YEH WITH REH FINAL FORM
+FC92 ; [.282E.0020.0019][.27A5.0020.0019] # ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+FCDD ; [.282E.0020.0017][.280A.0020.0017] # ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+FCF0 ; [.282E.0020.0018][.280A.0020.0018] # ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+FC93 ; [.282E.0020.0019][.280A.0020.0019] # ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+FC58 ; [.282E.0020.001A][.280A.0020.001A] # ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+FD9D ; [.282E.0020.0017][.280A.0020.0017][.280A.0020.0017] # ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+FD9C ; [.282E.0020.0019][.280A.0020.0019][.280A.0020.0019] # ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM
+FDB0 ; [.282E.0020.0019][.280A.0020.0019][.282E.0020.0019] # ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+FC94 ; [.282E.0020.0019][.280E.0020.0019] # ARABIC LIGATURE YEH WITH NOON FINAL FORM
+FCDE ; [.282E.0020.0017][.2819.0020.0017] # ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+FCF1 ; [.282E.0020.0018][.2819.0020.0018] # ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+FC95 ; [.282E.0020.0019][.282D.0020.0019] # ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+FC59 ; [.282E.0020.001A][.282D.0020.001A] # ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+FC96 ; [.282E.0020.0019][.282E.0020.0019] # ARABIC LIGATURE YEH WITH YEH FINAL FORM
+FC5A ; [.282E.0020.001A][.282E.0020.001A] # ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+06CC ; [.282F.0020.0002] # ARABIC LETTER FARSI YEH
+08C9 ; [.282F.0020.0004] # ARABIC SMALL FARSI YEH
+FBFE ; [.282F.0020.0017] # ARABIC LETTER FARSI YEH INITIAL FORM
+FBFF ; [.282F.0020.0018] # ARABIC LETTER FARSI YEH MEDIAL FORM
+FBFD ; [.282F.0020.0019] # ARABIC LETTER FARSI YEH FINAL FORM
+FBFC ; [.282F.0020.001A] # ARABIC LETTER FARSI YEH ISOLATED FORM
+06CD ; [.2830.0020.0002] # ARABIC LETTER YEH WITH TAIL
+06CE ; [.2831.0020.0002] # ARABIC LETTER YEH WITH SMALL V
+06D0 ; [.2832.0020.0002] # ARABIC LETTER E
+FBE6 ; [.2832.0020.0017] # ARABIC LETTER E INITIAL FORM
+FBE7 ; [.2832.0020.0018] # ARABIC LETTER E MEDIAL FORM
+FBE5 ; [.2832.0020.0019] # ARABIC LETTER E FINAL FORM
+FBE4 ; [.2832.0020.001A] # ARABIC LETTER E ISOLATED FORM
+06D1 ; [.2833.0020.0002] # ARABIC LETTER YEH WITH THREE DOTS BELOW
+063D ; [.2834.0020.0002] # ARABIC LETTER FARSI YEH WITH INVERTED V
+063E ; [.2835.0020.0002] # ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE
+063F ; [.2836.0020.0002] # ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+0620 ; [.2837.0020.0002] # ARABIC LETTER KASHMIRI YEH
+0775 ; [.2838.0020.0002] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
+0776 ; [.2839.0020.0002] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
+0777 ; [.283A.0020.0002] # ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW
+08BA ; [.283B.0020.0002] # ARABIC LETTER YEH WITH TWO DOTS BELOW AND SMALL NOON ABOVE
+06D2 ; [.283C.0020.0002] # ARABIC LETTER YEH BARREE
+FBAF ; [.283C.0020.0019] # ARABIC LETTER YEH BARREE FINAL FORM
+FBAE ; [.283C.0020.001A] # ARABIC LETTER YEH BARREE ISOLATED FORM
+06D3 ; [.283C.0020.0002][.0000.0083.0002] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+FBB1 ; [.283C.0020.0019][.0000.0083.0019] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBB0 ; [.283C.0020.001A][.0000.0083.001A] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+077A ; [.283D.0020.0002] # ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE
+077B ; [.283E.0020.0002] # ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE
+088E ; [.283F.0020.0002] # ARABIC VERTICAL TAIL
+0710 ; [.2840.0020.0002] # SYRIAC LETTER ALAPH
+0712 ; [.2841.0020.0002] # SYRIAC LETTER BETH
+072D ; [.2841.0020.0004][.0000.011A.0004] # SYRIAC LETTER PERSIAN BHETH
+0713 ; [.2842.0020.0002] # SYRIAC LETTER GAMAL
+0714 ; [.2842.0020.0004][.0000.0119.0004] # SYRIAC LETTER GAMAL GARSHUNI
+072E ; [.2842.0020.0004][.0000.011A.0004] # SYRIAC LETTER PERSIAN GHAMAL
+0716 ; [.2843.0020.0002] # SYRIAC LETTER DOTLESS DALATH RISH
+0715 ; [.2844.0020.0002] # SYRIAC LETTER DALATH
+072F ; [.2844.0020.0004][.0000.011A.0004] # SYRIAC LETTER PERSIAN DHALATH
+0717 ; [.2845.0020.0002] # SYRIAC LETTER HE
+0718 ; [.2846.0020.0002] # SYRIAC LETTER WAW
+0719 ; [.2847.0020.0002] # SYRIAC LETTER ZAIN
+074D ; [.2848.0020.0002] # SYRIAC LETTER SOGDIAN ZHAIN
+071A ; [.2849.0020.0002] # SYRIAC LETTER HETH
+071B ; [.284A.0020.0002] # SYRIAC LETTER TETH
+071C ; [.284A.0020.0004][.0000.0119.0004] # SYRIAC LETTER TETH GARSHUNI
+071D ; [.284B.0020.0002] # SYRIAC LETTER YUDH
+071E ; [.284C.0020.0002] # SYRIAC LETTER YUDH HE
+071F ; [.284D.0020.0002] # SYRIAC LETTER KAPH
+074E ; [.284E.0020.0002] # SYRIAC LETTER SOGDIAN KHAPH
+0720 ; [.284F.0020.0002] # SYRIAC LETTER LAMADH
+0721 ; [.2850.0020.0002] # SYRIAC LETTER MIM
+0722 ; [.2851.0020.0002] # SYRIAC LETTER NUN
+0723 ; [.2852.0020.0002] # SYRIAC LETTER SEMKATH
+0724 ; [.2852.0020.0019] # SYRIAC LETTER FINAL SEMKATH
+0725 ; [.2853.0020.0002] # SYRIAC LETTER E
+0726 ; [.2854.0020.0002] # SYRIAC LETTER PE
+0727 ; [.2854.0020.0004][.0000.0119.0004] # SYRIAC LETTER REVERSED PE
+074F ; [.2855.0020.0002] # SYRIAC LETTER SOGDIAN FE
+0728 ; [.2856.0020.0002] # SYRIAC LETTER SADHE
+0729 ; [.2857.0020.0002] # SYRIAC LETTER QAPH
+072A ; [.2858.0020.0002] # SYRIAC LETTER RISH
+072B ; [.2859.0020.0002] # SYRIAC LETTER SHIN
+072C ; [.285A.0020.0002] # SYRIAC LETTER TAW
+0860 ; [.285B.0020.0002] # SYRIAC LETTER MALAYALAM NGA
+0861 ; [.285C.0020.0002] # SYRIAC LETTER MALAYALAM JA
+0862 ; [.285D.0020.0002] # SYRIAC LETTER MALAYALAM NYA
+0863 ; [.285E.0020.0002] # SYRIAC LETTER MALAYALAM TTA
+0864 ; [.285F.0020.0002] # SYRIAC LETTER MALAYALAM NNA
+0865 ; [.2860.0020.0002] # SYRIAC LETTER MALAYALAM NNNA
+0866 ; [.2861.0020.0002] # SYRIAC LETTER MALAYALAM BHA
+0867 ; [.2862.0020.0002] # SYRIAC LETTER MALAYALAM RA
+0868 ; [.2863.0020.0002] # SYRIAC LETTER MALAYALAM LLA
+0869 ; [.2864.0020.0002] # SYRIAC LETTER MALAYALAM LLLA
+086A ; [.2865.0020.0002] # SYRIAC LETTER MALAYALAM SSA
+0840 ; [.2866.0020.0002] # MANDAIC LETTER HALQA
+0841 ; [.2867.0020.0002] # MANDAIC LETTER AB
+0842 ; [.2868.0020.0002] # MANDAIC LETTER AG
+0843 ; [.2869.0020.0002] # MANDAIC LETTER AD
+0844 ; [.286A.0020.0002] # MANDAIC LETTER AH
+0845 ; [.286B.0020.0002] # MANDAIC LETTER USHENNA
+0846 ; [.286C.0020.0002] # MANDAIC LETTER AZ
+0847 ; [.286D.0020.0002] # MANDAIC LETTER IT
+0848 ; [.286E.0020.0002] # MANDAIC LETTER ATT
+0849 ; [.286F.0020.0002] # MANDAIC LETTER AKSA
+084A ; [.2870.0020.0002] # MANDAIC LETTER AK
+084B ; [.2871.0020.0002] # MANDAIC LETTER AL
+084C ; [.2872.0020.0002] # MANDAIC LETTER AM
+084D ; [.2873.0020.0002] # MANDAIC LETTER AN
+084E ; [.2874.0020.0002] # MANDAIC LETTER AS
+084F ; [.2875.0020.0002] # MANDAIC LETTER IN
+0850 ; [.2876.0020.0002] # MANDAIC LETTER AP
+0851 ; [.2877.0020.0002] # MANDAIC LETTER ASZ
+0852 ; [.2878.0020.0002] # MANDAIC LETTER AQ
+0853 ; [.2879.0020.0002] # MANDAIC LETTER AR
+0854 ; [.287A.0020.0002] # MANDAIC LETTER ASH
+0855 ; [.287B.0020.0002] # MANDAIC LETTER AT
+0856 ; [.287C.0020.0002] # MANDAIC LETTER DUSHENNA
+0857 ; [.287D.0020.0002] # MANDAIC LETTER KAD
+0858 ; [.287E.0020.0002] # MANDAIC LETTER AIN
+0780 ; [.287F.0020.0002] # THAANA LETTER HAA
+0799 ; [.2880.0020.0002] # THAANA LETTER HHAA
+079A ; [.2881.0020.0002] # THAANA LETTER KHAA
+0781 ; [.2882.0020.0002] # THAANA LETTER SHAVIYANI
+0782 ; [.2883.0020.0002] # THAANA LETTER NOONU
+0783 ; [.2884.0020.0002] # THAANA LETTER RAA
+079C ; [.2885.0020.0002] # THAANA LETTER ZAA
+0784 ; [.2886.0020.0002] # THAANA LETTER BAA
+0785 ; [.2887.0020.0002] # THAANA LETTER LHAVIYANI
+0786 ; [.2888.0020.0002] # THAANA LETTER KAAFU
+0787 ; [.2889.0020.0002] # THAANA LETTER ALIFU
+07A2 ; [.288A.0020.0002] # THAANA LETTER AINU
+07A3 ; [.288B.0020.0002] # THAANA LETTER GHAINU
+0788 ; [.288C.0020.0002] # THAANA LETTER VAAVU
+07A5 ; [.288D.0020.0002] # THAANA LETTER WAAVU
+0789 ; [.288E.0020.0002] # THAANA LETTER MEEMU
+078A ; [.288F.0020.0002] # THAANA LETTER FAAFU
+078B ; [.2890.0020.0002] # THAANA LETTER DHAALU
+079B ; [.2891.0020.0002] # THAANA LETTER THAALU
+078C ; [.2892.0020.0002] # THAANA LETTER THAA
+0798 ; [.2893.0020.0002] # THAANA LETTER TTAA
+07A0 ; [.2894.0020.0002] # THAANA LETTER TO
+07A1 ; [.2895.0020.0002] # THAANA LETTER ZO
+078D ; [.2896.0020.0002] # THAANA LETTER LAAMU
+078E ; [.2897.0020.0002] # THAANA LETTER GAAFU
+07A4 ; [.2898.0020.0002] # THAANA LETTER QAAFU
+078F ; [.2899.0020.0002] # THAANA LETTER GNAVIYANI
+0790 ; [.289A.0020.0002] # THAANA LETTER SEENU
+079D ; [.289B.0020.0002] # THAANA LETTER SHEENU
+079E ; [.289C.0020.0002] # THAANA LETTER SAADHU
+079F ; [.289D.0020.0002] # THAANA LETTER DAADHU
+0791 ; [.289E.0020.0002] # THAANA LETTER DAVIYANI
+0792 ; [.289F.0020.0002] # THAANA LETTER ZAVIYANI
+0793 ; [.28A0.0020.0002] # THAANA LETTER TAVIYANI
+0794 ; [.28A1.0020.0002] # THAANA LETTER YAA
+0795 ; [.28A2.0020.0002] # THAANA LETTER PAVIYANI
+0796 ; [.28A3.0020.0002] # THAANA LETTER JAVIYANI
+0797 ; [.28A4.0020.0002] # THAANA LETTER CHAVIYANI
+07B1 ; [.28A5.0020.0002] # THAANA LETTER NAA
+07A6 ; [.28A6.0020.0002] # THAANA ABAFILI
+07A7 ; [.28A7.0020.0002] # THAANA AABAAFILI
+07A8 ; [.28A8.0020.0002] # THAANA IBIFILI
+07A9 ; [.28A9.0020.0002] # THAANA EEBEEFILI
+07AA ; [.28AA.0020.0002] # THAANA UBUFILI
+07AB ; [.28AB.0020.0002] # THAANA OOBOOFILI
+07AC ; [.28AC.0020.0002] # THAANA EBEFILI
+07AD ; [.28AD.0020.0002] # THAANA EYBEYFILI
+07AE ; [.28AE.0020.0002] # THAANA OBOFILI
+07AF ; [.28AF.0020.0002] # THAANA OABOAFILI
+07B0 ; [.28B0.0020.0002] # THAANA SUKUN
+07CA ; [.28B1.0020.0002] # NKO LETTER A
+07CB ; [.28B2.0020.0002] # NKO LETTER EE
+07CC ; [.28B3.0020.0002] # NKO LETTER I
+07CD ; [.28B4.0020.0002] # NKO LETTER E
+07CE ; [.28B5.0020.0002] # NKO LETTER U
+07CF ; [.28B6.0020.0002] # NKO LETTER OO
+07D0 ; [.28B7.0020.0002] # NKO LETTER O
+07D1 ; [.28B8.0020.0002] # NKO LETTER DAGBASINNA
+07D2 ; [.28B9.0020.0002] # NKO LETTER N
+07D3 ; [.28BA.0020.0002] # NKO LETTER BA
+07D4 ; [.28BB.0020.0002] # NKO LETTER PA
+07D5 ; [.28BC.0020.0002] # NKO LETTER TA
+07D6 ; [.28BD.0020.0002] # NKO LETTER JA
+07E8 ; [.28BD.0020.0004][.0000.0118.0004] # NKO LETTER JONA JA
+07D7 ; [.28BE.0020.0002] # NKO LETTER CHA
+07E9 ; [.28BE.0020.0004][.0000.0118.0004] # NKO LETTER JONA CHA
+07D8 ; [.28BF.0020.0002] # NKO LETTER DA
+07D9 ; [.28C0.0020.0002] # NKO LETTER RA
+07EA ; [.28C0.0020.0004][.0000.0118.0004] # NKO LETTER JONA RA
+07DA ; [.28C1.0020.0002] # NKO LETTER RRA
+07DB ; [.28C2.0020.0002] # NKO LETTER SA
+07DC ; [.28C3.0020.0002] # NKO LETTER GBA
+07DD ; [.28C4.0020.0002] # NKO LETTER FA
+07DE ; [.28C5.0020.0002] # NKO LETTER KA
+07DF ; [.28C6.0020.0002] # NKO LETTER LA
+07E0 ; [.28C7.0020.0002] # NKO LETTER NA WOLOSO
+07E1 ; [.28C8.0020.0002] # NKO LETTER MA
+07E2 ; [.28C9.0020.0002] # NKO LETTER NYA
+07E3 ; [.28CA.0020.0002] # NKO LETTER NA
+07E4 ; [.28CB.0020.0002] # NKO LETTER HA
+07E5 ; [.28CC.0020.0002] # NKO LETTER WA
+07E6 ; [.28CD.0020.0002] # NKO LETTER YA
+07E7 ; [.28CE.0020.0002] # NKO LETTER NYA WOLOSO
+07F4 ; [.28CF.0020.0002] # NKO HIGH TONE APOSTROPHE
+07F5 ; [.28D0.0020.0002] # NKO LOW TONE APOSTROPHE
+2D30 ; [.28D1.0020.0002] # TIFINAGH LETTER YA
+2D31 ; [.28D2.0020.0002] # TIFINAGH LETTER YAB
+2D32 ; [.28D3.0020.0002] # TIFINAGH LETTER YABH
+2D33 ; [.28D4.0020.0002] # TIFINAGH LETTER YAG
+2D34 ; [.28D5.0020.0002] # TIFINAGH LETTER YAGHH
+2D35 ; [.28D6.0020.0002] # TIFINAGH LETTER BERBER ACADEMY YAJ
+2D36 ; [.28D7.0020.0002] # TIFINAGH LETTER YAJ
+2D37 ; [.28D8.0020.0002] # TIFINAGH LETTER YAD
+2D38 ; [.28D9.0020.0002] # TIFINAGH LETTER YADH
+2D39 ; [.28DA.0020.0002] # TIFINAGH LETTER YADD
+2D3A ; [.28DB.0020.0002] # TIFINAGH LETTER YADDH
+2D3B ; [.28DC.0020.0002] # TIFINAGH LETTER YEY
+2D66 ; [.28DD.0020.0002] # TIFINAGH LETTER YE
+2D3C ; [.28DE.0020.0002] # TIFINAGH LETTER YAF
+2D3D ; [.28DF.0020.0002] # TIFINAGH LETTER YAK
+2D3E ; [.28E0.0020.0002] # TIFINAGH LETTER TUAREG YAK
+2D3F ; [.28E1.0020.0002] # TIFINAGH LETTER YAKHH
+2D40 ; [.28E2.0020.0002] # TIFINAGH LETTER YAH
+2D41 ; [.28E3.0020.0002] # TIFINAGH LETTER BERBER ACADEMY YAH
+2D42 ; [.28E4.0020.0002] # TIFINAGH LETTER TUAREG YAH
+2D43 ; [.28E5.0020.0002] # TIFINAGH LETTER YAHH
+2D44 ; [.28E6.0020.0002] # TIFINAGH LETTER YAA
+2D45 ; [.28E7.0020.0002] # TIFINAGH LETTER YAKH
+2D46 ; [.28E8.0020.0002] # TIFINAGH LETTER TUAREG YAKH
+2D47 ; [.28E9.0020.0002] # TIFINAGH LETTER YAQ
+2D48 ; [.28EA.0020.0002] # TIFINAGH LETTER TUAREG YAQ
+2D49 ; [.28EB.0020.0002] # TIFINAGH LETTER YI
+2D4A ; [.28EC.0020.0002] # TIFINAGH LETTER YAZH
+2D4B ; [.28ED.0020.0002] # TIFINAGH LETTER AHAGGAR YAZH
+2D4C ; [.28EE.0020.0002] # TIFINAGH LETTER TUAREG YAZH
+2D4D ; [.28EF.0020.0002] # TIFINAGH LETTER YAL
+2D4E ; [.28F0.0020.0002] # TIFINAGH LETTER YAM
+2D4F ; [.28F1.0020.0002] # TIFINAGH LETTER YAN
+2D50 ; [.28F2.0020.0002] # TIFINAGH LETTER TUAREG YAGN
+2D51 ; [.28F3.0020.0002] # TIFINAGH LETTER TUAREG YANG
+2D52 ; [.28F4.0020.0002] # TIFINAGH LETTER YAP
+2D53 ; [.28F5.0020.0002] # TIFINAGH LETTER YU
+2D67 ; [.28F6.0020.0002] # TIFINAGH LETTER YO
+2D54 ; [.28F7.0020.0002] # TIFINAGH LETTER YAR
+2D55 ; [.28F8.0020.0002] # TIFINAGH LETTER YARR
+2D56 ; [.28F9.0020.0002] # TIFINAGH LETTER YAGH
+2D57 ; [.28FA.0020.0002] # TIFINAGH LETTER TUAREG YAGH
+2D58 ; [.28FB.0020.0002] # TIFINAGH LETTER AYER YAGH
+2D59 ; [.28FC.0020.0002] # TIFINAGH LETTER YAS
+2D5A ; [.28FD.0020.0002] # TIFINAGH LETTER YASS
+2D5B ; [.28FE.0020.0002] # TIFINAGH LETTER YASH
+2D5C ; [.28FF.0020.0002] # TIFINAGH LETTER YAT
+2D5D ; [.2900.0020.0002] # TIFINAGH LETTER YATH
+2D5E ; [.2901.0020.0002] # TIFINAGH LETTER YACH
+2D5F ; [.2902.0020.0002] # TIFINAGH LETTER YATT
+2D60 ; [.2903.0020.0002] # TIFINAGH LETTER YAV
+2D61 ; [.2904.0020.0002] # TIFINAGH LETTER YAW
+2D62 ; [.2905.0020.0002] # TIFINAGH LETTER YAY
+2D63 ; [.2906.0020.0002] # TIFINAGH LETTER YAZ
+2D64 ; [.2907.0020.0002] # TIFINAGH LETTER TAWELLEMET YAZ
+2D65 ; [.2908.0020.0002] # TIFINAGH LETTER YAZZ
+2D6F ; [.2909.0020.0002] # TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+1200 ; [.290A.0020.0002] # ETHIOPIC SYLLABLE HA
+1201 ; [.290B.0020.0002] # ETHIOPIC SYLLABLE HU
+1202 ; [.290C.0020.0002] # ETHIOPIC SYLLABLE HI
+1203 ; [.290D.0020.0002] # ETHIOPIC SYLLABLE HAA
+1204 ; [.290E.0020.0002] # ETHIOPIC SYLLABLE HEE
+1205 ; [.290F.0020.0002] # ETHIOPIC SYLLABLE HE
+1206 ; [.2910.0020.0002] # ETHIOPIC SYLLABLE HO
+1207 ; [.2911.0020.0002] # ETHIOPIC SYLLABLE HOA
+1208 ; [.2912.0020.0002] # ETHIOPIC SYLLABLE LA
+1209 ; [.2913.0020.0002] # ETHIOPIC SYLLABLE LU
+120A ; [.2914.0020.0002] # ETHIOPIC SYLLABLE LI
+120B ; [.2915.0020.0002] # ETHIOPIC SYLLABLE LAA
+120C ; [.2916.0020.0002] # ETHIOPIC SYLLABLE LEE
+120D ; [.2917.0020.0002] # ETHIOPIC SYLLABLE LE
+120E ; [.2918.0020.0002] # ETHIOPIC SYLLABLE LO
+120F ; [.2919.0020.0002] # ETHIOPIC SYLLABLE LWA
+2D80 ; [.291A.0020.0002] # ETHIOPIC SYLLABLE LOA
+1210 ; [.291B.0020.0002] # ETHIOPIC SYLLABLE HHA
+1211 ; [.291C.0020.0002] # ETHIOPIC SYLLABLE HHU
+1212 ; [.291D.0020.0002] # ETHIOPIC SYLLABLE HHI
+1213 ; [.291E.0020.0002] # ETHIOPIC SYLLABLE HHAA
+1214 ; [.291F.0020.0002] # ETHIOPIC SYLLABLE HHEE
+1215 ; [.2920.0020.0002] # ETHIOPIC SYLLABLE HHE
+1216 ; [.2921.0020.0002] # ETHIOPIC SYLLABLE HHO
+1217 ; [.2922.0020.0002] # ETHIOPIC SYLLABLE HHWA
+1218 ; [.2923.0020.0002] # ETHIOPIC SYLLABLE MA
+1219 ; [.2924.0020.0002] # ETHIOPIC SYLLABLE MU
+121A ; [.2925.0020.0002] # ETHIOPIC SYLLABLE MI
+121B ; [.2926.0020.0002] # ETHIOPIC SYLLABLE MAA
+121C ; [.2927.0020.0002] # ETHIOPIC SYLLABLE MEE
+121D ; [.2928.0020.0002] # ETHIOPIC SYLLABLE ME
+121E ; [.2929.0020.0002] # ETHIOPIC SYLLABLE MO
+121F ; [.292A.0020.0002] # ETHIOPIC SYLLABLE MWA
+1380 ; [.292B.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT MWA
+1E7ED ; [.292C.0020.0002] # ETHIOPIC SYLLABLE GURAGE MWI
+1381 ; [.292D.0020.0002] # ETHIOPIC SYLLABLE MWI
+1E7EE ; [.292E.0020.0002] # ETHIOPIC SYLLABLE GURAGE MWEE
+1382 ; [.292F.0020.0002] # ETHIOPIC SYLLABLE MWEE
+1383 ; [.2930.0020.0002] # ETHIOPIC SYLLABLE MWE
+2D81 ; [.2931.0020.0002] # ETHIOPIC SYLLABLE MOA
+1220 ; [.2932.0020.0002] # ETHIOPIC SYLLABLE SZA
+1221 ; [.2933.0020.0002] # ETHIOPIC SYLLABLE SZU
+1222 ; [.2934.0020.0002] # ETHIOPIC SYLLABLE SZI
+1223 ; [.2935.0020.0002] # ETHIOPIC SYLLABLE SZAA
+1224 ; [.2936.0020.0002] # ETHIOPIC SYLLABLE SZEE
+1225 ; [.2937.0020.0002] # ETHIOPIC SYLLABLE SZE
+1226 ; [.2938.0020.0002] # ETHIOPIC SYLLABLE SZO
+1227 ; [.2939.0020.0002] # ETHIOPIC SYLLABLE SZWA
+1228 ; [.293A.0020.0002] # ETHIOPIC SYLLABLE RA
+1229 ; [.293B.0020.0002] # ETHIOPIC SYLLABLE RU
+122A ; [.293C.0020.0002] # ETHIOPIC SYLLABLE RI
+122B ; [.293D.0020.0002] # ETHIOPIC SYLLABLE RAA
+122C ; [.293E.0020.0002] # ETHIOPIC SYLLABLE REE
+122D ; [.293F.0020.0002] # ETHIOPIC SYLLABLE RE
+122E ; [.2940.0020.0002] # ETHIOPIC SYLLABLE RO
+122F ; [.2941.0020.0002] # ETHIOPIC SYLLABLE RWA
+2D82 ; [.2942.0020.0002] # ETHIOPIC SYLLABLE ROA
+1230 ; [.2943.0020.0002] # ETHIOPIC SYLLABLE SA
+1231 ; [.2944.0020.0002] # ETHIOPIC SYLLABLE SU
+1232 ; [.2945.0020.0002] # ETHIOPIC SYLLABLE SI
+1233 ; [.2946.0020.0002] # ETHIOPIC SYLLABLE SAA
+1234 ; [.2947.0020.0002] # ETHIOPIC SYLLABLE SEE
+1235 ; [.2948.0020.0002] # ETHIOPIC SYLLABLE SE
+1236 ; [.2949.0020.0002] # ETHIOPIC SYLLABLE SO
+1237 ; [.294A.0020.0002] # ETHIOPIC SYLLABLE SWA
+2D83 ; [.294B.0020.0002] # ETHIOPIC SYLLABLE SOA
+AB01 ; [.294C.0020.0002] # ETHIOPIC SYLLABLE TTHU
+AB02 ; [.294D.0020.0002] # ETHIOPIC SYLLABLE TTHI
+AB03 ; [.294E.0020.0002] # ETHIOPIC SYLLABLE TTHAA
+AB04 ; [.294F.0020.0002] # ETHIOPIC SYLLABLE TTHEE
+AB05 ; [.2950.0020.0002] # ETHIOPIC SYLLABLE TTHE
+AB06 ; [.2951.0020.0002] # ETHIOPIC SYLLABLE TTHO
+1238 ; [.2952.0020.0002] # ETHIOPIC SYLLABLE SHA
+1239 ; [.2953.0020.0002] # ETHIOPIC SYLLABLE SHU
+123A ; [.2954.0020.0002] # ETHIOPIC SYLLABLE SHI
+123B ; [.2955.0020.0002] # ETHIOPIC SYLLABLE SHAA
+123C ; [.2956.0020.0002] # ETHIOPIC SYLLABLE SHEE
+123D ; [.2957.0020.0002] # ETHIOPIC SYLLABLE SHE
+123E ; [.2958.0020.0002] # ETHIOPIC SYLLABLE SHO
+123F ; [.2959.0020.0002] # ETHIOPIC SYLLABLE SHWA
+2D84 ; [.295A.0020.0002] # ETHIOPIC SYLLABLE SHOA
+1240 ; [.295B.0020.0002] # ETHIOPIC SYLLABLE QA
+1241 ; [.295C.0020.0002] # ETHIOPIC SYLLABLE QU
+1242 ; [.295D.0020.0002] # ETHIOPIC SYLLABLE QI
+1243 ; [.295E.0020.0002] # ETHIOPIC SYLLABLE QAA
+1244 ; [.295F.0020.0002] # ETHIOPIC SYLLABLE QEE
+1245 ; [.2960.0020.0002] # ETHIOPIC SYLLABLE QE
+1246 ; [.2961.0020.0002] # ETHIOPIC SYLLABLE QO
+1247 ; [.2962.0020.0002] # ETHIOPIC SYLLABLE QOA
+1248 ; [.2963.0020.0002] # ETHIOPIC SYLLABLE QWA
+1E7F0 ; [.2964.0020.0002] # ETHIOPIC SYLLABLE GURAGE QWI
+124A ; [.2965.0020.0002] # ETHIOPIC SYLLABLE QWI
+124B ; [.2966.0020.0002] # ETHIOPIC SYLLABLE QWAA
+1E7F1 ; [.2967.0020.0002] # ETHIOPIC SYLLABLE GURAGE QWEE
+124C ; [.2968.0020.0002] # ETHIOPIC SYLLABLE QWEE
+1E7F2 ; [.2969.0020.0002] # ETHIOPIC SYLLABLE GURAGE QWE
+124D ; [.296A.0020.0002] # ETHIOPIC SYLLABLE QWE
+1250 ; [.296B.0020.0002] # ETHIOPIC SYLLABLE QHA
+1251 ; [.296C.0020.0002] # ETHIOPIC SYLLABLE QHU
+1252 ; [.296D.0020.0002] # ETHIOPIC SYLLABLE QHI
+1253 ; [.296E.0020.0002] # ETHIOPIC SYLLABLE QHAA
+1254 ; [.296F.0020.0002] # ETHIOPIC SYLLABLE QHEE
+1255 ; [.2970.0020.0002] # ETHIOPIC SYLLABLE QHE
+1256 ; [.2971.0020.0002] # ETHIOPIC SYLLABLE QHO
+1258 ; [.2972.0020.0002] # ETHIOPIC SYLLABLE QHWA
+125A ; [.2973.0020.0002] # ETHIOPIC SYLLABLE QHWI
+125B ; [.2974.0020.0002] # ETHIOPIC SYLLABLE QHWAA
+125C ; [.2975.0020.0002] # ETHIOPIC SYLLABLE QHWEE
+125D ; [.2976.0020.0002] # ETHIOPIC SYLLABLE QHWE
+1260 ; [.2977.0020.0002] # ETHIOPIC SYLLABLE BA
+1261 ; [.2978.0020.0002] # ETHIOPIC SYLLABLE BU
+1262 ; [.2979.0020.0002] # ETHIOPIC SYLLABLE BI
+1263 ; [.297A.0020.0002] # ETHIOPIC SYLLABLE BAA
+1264 ; [.297B.0020.0002] # ETHIOPIC SYLLABLE BEE
+1265 ; [.297C.0020.0002] # ETHIOPIC SYLLABLE BE
+1266 ; [.297D.0020.0002] # ETHIOPIC SYLLABLE BO
+1267 ; [.297E.0020.0002] # ETHIOPIC SYLLABLE BWA
+1384 ; [.297F.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT BWA
+1E7F3 ; [.2980.0020.0002] # ETHIOPIC SYLLABLE GURAGE BWI
+1385 ; [.2981.0020.0002] # ETHIOPIC SYLLABLE BWI
+1E7F4 ; [.2982.0020.0002] # ETHIOPIC SYLLABLE GURAGE BWEE
+1386 ; [.2983.0020.0002] # ETHIOPIC SYLLABLE BWEE
+1387 ; [.2984.0020.0002] # ETHIOPIC SYLLABLE BWE
+2D85 ; [.2985.0020.0002] # ETHIOPIC SYLLABLE BOA
+1268 ; [.2986.0020.0002] # ETHIOPIC SYLLABLE VA
+1269 ; [.2987.0020.0002] # ETHIOPIC SYLLABLE VU
+126A ; [.2988.0020.0002] # ETHIOPIC SYLLABLE VI
+126B ; [.2989.0020.0002] # ETHIOPIC SYLLABLE VAA
+126C ; [.298A.0020.0002] # ETHIOPIC SYLLABLE VEE
+126D ; [.298B.0020.0002] # ETHIOPIC SYLLABLE VE
+126E ; [.298C.0020.0002] # ETHIOPIC SYLLABLE VO
+126F ; [.298D.0020.0002] # ETHIOPIC SYLLABLE VWA
+1270 ; [.298E.0020.0002] # ETHIOPIC SYLLABLE TA
+1271 ; [.298F.0020.0002] # ETHIOPIC SYLLABLE TU
+1272 ; [.2990.0020.0002] # ETHIOPIC SYLLABLE TI
+1273 ; [.2991.0020.0002] # ETHIOPIC SYLLABLE TAA
+1274 ; [.2992.0020.0002] # ETHIOPIC SYLLABLE TEE
+1275 ; [.2993.0020.0002] # ETHIOPIC SYLLABLE TE
+1276 ; [.2994.0020.0002] # ETHIOPIC SYLLABLE TO
+1277 ; [.2995.0020.0002] # ETHIOPIC SYLLABLE TWA
+2D86 ; [.2996.0020.0002] # ETHIOPIC SYLLABLE TOA
+1278 ; [.2997.0020.0002] # ETHIOPIC SYLLABLE CA
+1279 ; [.2998.0020.0002] # ETHIOPIC SYLLABLE CU
+127A ; [.2999.0020.0002] # ETHIOPIC SYLLABLE CI
+127B ; [.299A.0020.0002] # ETHIOPIC SYLLABLE CAA
+127C ; [.299B.0020.0002] # ETHIOPIC SYLLABLE CEE
+127D ; [.299C.0020.0002] # ETHIOPIC SYLLABLE CE
+127E ; [.299D.0020.0002] # ETHIOPIC SYLLABLE CO
+127F ; [.299E.0020.0002] # ETHIOPIC SYLLABLE CWA
+2D87 ; [.299F.0020.0002] # ETHIOPIC SYLLABLE COA
+1280 ; [.29A0.0020.0002] # ETHIOPIC SYLLABLE XA
+1281 ; [.29A1.0020.0002] # ETHIOPIC SYLLABLE XU
+1282 ; [.29A2.0020.0002] # ETHIOPIC SYLLABLE XI
+1283 ; [.29A3.0020.0002] # ETHIOPIC SYLLABLE XAA
+1284 ; [.29A4.0020.0002] # ETHIOPIC SYLLABLE XEE
+1285 ; [.29A5.0020.0002] # ETHIOPIC SYLLABLE XE
+1286 ; [.29A6.0020.0002] # ETHIOPIC SYLLABLE XO
+1287 ; [.29A7.0020.0002] # ETHIOPIC SYLLABLE XOA
+1288 ; [.29A8.0020.0002] # ETHIOPIC SYLLABLE XWA
+128A ; [.29A9.0020.0002] # ETHIOPIC SYLLABLE XWI
+128B ; [.29AA.0020.0002] # ETHIOPIC SYLLABLE XWAA
+128C ; [.29AB.0020.0002] # ETHIOPIC SYLLABLE XWEE
+128D ; [.29AC.0020.0002] # ETHIOPIC SYLLABLE XWE
+1290 ; [.29AD.0020.0002] # ETHIOPIC SYLLABLE NA
+1291 ; [.29AE.0020.0002] # ETHIOPIC SYLLABLE NU
+1292 ; [.29AF.0020.0002] # ETHIOPIC SYLLABLE NI
+1293 ; [.29B0.0020.0002] # ETHIOPIC SYLLABLE NAA
+1294 ; [.29B1.0020.0002] # ETHIOPIC SYLLABLE NEE
+1295 ; [.29B2.0020.0002] # ETHIOPIC SYLLABLE NE
+1296 ; [.29B3.0020.0002] # ETHIOPIC SYLLABLE NO
+1297 ; [.29B4.0020.0002] # ETHIOPIC SYLLABLE NWA
+2D88 ; [.29B5.0020.0002] # ETHIOPIC SYLLABLE NOA
+1298 ; [.29B6.0020.0002] # ETHIOPIC SYLLABLE NYA
+1299 ; [.29B7.0020.0002] # ETHIOPIC SYLLABLE NYU
+129A ; [.29B8.0020.0002] # ETHIOPIC SYLLABLE NYI
+129B ; [.29B9.0020.0002] # ETHIOPIC SYLLABLE NYAA
+129C ; [.29BA.0020.0002] # ETHIOPIC SYLLABLE NYEE
+129D ; [.29BB.0020.0002] # ETHIOPIC SYLLABLE NYE
+129E ; [.29BC.0020.0002] # ETHIOPIC SYLLABLE NYO
+129F ; [.29BD.0020.0002] # ETHIOPIC SYLLABLE NYWA
+2D89 ; [.29BE.0020.0002] # ETHIOPIC SYLLABLE NYOA
+12A0 ; [.29BF.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL A
+12A1 ; [.29C0.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL U
+12A2 ; [.29C1.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL I
+12A3 ; [.29C2.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL AA
+12A4 ; [.29C3.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL EE
+12A5 ; [.29C4.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL E
+12A6 ; [.29C5.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL O
+12A7 ; [.29C6.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL WA
+2D8A ; [.29C7.0020.0002] # ETHIOPIC SYLLABLE GLOTTAL OA
+12A8 ; [.29C8.0020.0002] # ETHIOPIC SYLLABLE KA
+12A9 ; [.29C9.0020.0002] # ETHIOPIC SYLLABLE KU
+12AA ; [.29CA.0020.0002] # ETHIOPIC SYLLABLE KI
+12AB ; [.29CB.0020.0002] # ETHIOPIC SYLLABLE KAA
+12AC ; [.29CC.0020.0002] # ETHIOPIC SYLLABLE KEE
+12AD ; [.29CD.0020.0002] # ETHIOPIC SYLLABLE KE
+12AE ; [.29CE.0020.0002] # ETHIOPIC SYLLABLE KO
+12AF ; [.29CF.0020.0002] # ETHIOPIC SYLLABLE KOA
+12B0 ; [.29D0.0020.0002] # ETHIOPIC SYLLABLE KWA
+1E7F5 ; [.29D1.0020.0002] # ETHIOPIC SYLLABLE GURAGE KWI
+12B2 ; [.29D2.0020.0002] # ETHIOPIC SYLLABLE KWI
+12B3 ; [.29D3.0020.0002] # ETHIOPIC SYLLABLE KWAA
+1E7F6 ; [.29D4.0020.0002] # ETHIOPIC SYLLABLE GURAGE KWEE
+12B4 ; [.29D5.0020.0002] # ETHIOPIC SYLLABLE KWEE
+1E7F7 ; [.29D6.0020.0002] # ETHIOPIC SYLLABLE GURAGE KWE
+12B5 ; [.29D7.0020.0002] # ETHIOPIC SYLLABLE KWE
+12B8 ; [.29D8.0020.0002] # ETHIOPIC SYLLABLE KXA
+12B9 ; [.29D9.0020.0002] # ETHIOPIC SYLLABLE KXU
+12BA ; [.29DA.0020.0002] # ETHIOPIC SYLLABLE KXI
+12BB ; [.29DB.0020.0002] # ETHIOPIC SYLLABLE KXAA
+12BC ; [.29DC.0020.0002] # ETHIOPIC SYLLABLE KXEE
+12BD ; [.29DD.0020.0002] # ETHIOPIC SYLLABLE KXE
+12BE ; [.29DE.0020.0002] # ETHIOPIC SYLLABLE KXO
+1E7E8 ; [.29DF.0020.0002] # ETHIOPIC SYLLABLE GURAGE HHWA
+12C0 ; [.29E0.0020.0002] # ETHIOPIC SYLLABLE KXWA
+1E7E9 ; [.29E1.0020.0002] # ETHIOPIC SYLLABLE HHWI
+12C2 ; [.29E2.0020.0002] # ETHIOPIC SYLLABLE KXWI
+12C3 ; [.29E3.0020.0002] # ETHIOPIC SYLLABLE KXWAA
+1E7EA ; [.29E4.0020.0002] # ETHIOPIC SYLLABLE HHWEE
+12C4 ; [.29E5.0020.0002] # ETHIOPIC SYLLABLE KXWEE
+1E7EB ; [.29E6.0020.0002] # ETHIOPIC SYLLABLE HHWE
+12C5 ; [.29E7.0020.0002] # ETHIOPIC SYLLABLE KXWE
+12C8 ; [.29E8.0020.0002] # ETHIOPIC SYLLABLE WA
+12C9 ; [.29E9.0020.0002] # ETHIOPIC SYLLABLE WU
+12CA ; [.29EA.0020.0002] # ETHIOPIC SYLLABLE WI
+12CB ; [.29EB.0020.0002] # ETHIOPIC SYLLABLE WAA
+12CC ; [.29EC.0020.0002] # ETHIOPIC SYLLABLE WEE
+12CD ; [.29ED.0020.0002] # ETHIOPIC SYLLABLE WE
+12CE ; [.29EE.0020.0002] # ETHIOPIC SYLLABLE WO
+12CF ; [.29EF.0020.0002] # ETHIOPIC SYLLABLE WOA
+12D0 ; [.29F0.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL A
+12D1 ; [.29F1.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL U
+12D2 ; [.29F2.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL I
+12D3 ; [.29F3.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL AA
+12D4 ; [.29F4.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL EE
+12D5 ; [.29F5.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL E
+12D6 ; [.29F6.0020.0002] # ETHIOPIC SYLLABLE PHARYNGEAL O
+12D8 ; [.29F7.0020.0002] # ETHIOPIC SYLLABLE ZA
+12D9 ; [.29F8.0020.0002] # ETHIOPIC SYLLABLE ZU
+12DA ; [.29F9.0020.0002] # ETHIOPIC SYLLABLE ZI
+12DB ; [.29FA.0020.0002] # ETHIOPIC SYLLABLE ZAA
+12DC ; [.29FB.0020.0002] # ETHIOPIC SYLLABLE ZEE
+12DD ; [.29FC.0020.0002] # ETHIOPIC SYLLABLE ZE
+12DE ; [.29FD.0020.0002] # ETHIOPIC SYLLABLE ZO
+12DF ; [.29FE.0020.0002] # ETHIOPIC SYLLABLE ZWA
+2D8B ; [.29FF.0020.0002] # ETHIOPIC SYLLABLE ZOA
+AB11 ; [.2A00.0020.0002] # ETHIOPIC SYLLABLE DZU
+AB12 ; [.2A01.0020.0002] # ETHIOPIC SYLLABLE DZI
+AB13 ; [.2A02.0020.0002] # ETHIOPIC SYLLABLE DZAA
+AB14 ; [.2A03.0020.0002] # ETHIOPIC SYLLABLE DZEE
+AB15 ; [.2A04.0020.0002] # ETHIOPIC SYLLABLE DZE
+AB16 ; [.2A05.0020.0002] # ETHIOPIC SYLLABLE DZO
+12E0 ; [.2A06.0020.0002] # ETHIOPIC SYLLABLE ZHA
+12E1 ; [.2A07.0020.0002] # ETHIOPIC SYLLABLE ZHU
+12E2 ; [.2A08.0020.0002] # ETHIOPIC SYLLABLE ZHI
+12E3 ; [.2A09.0020.0002] # ETHIOPIC SYLLABLE ZHAA
+12E4 ; [.2A0A.0020.0002] # ETHIOPIC SYLLABLE ZHEE
+12E5 ; [.2A0B.0020.0002] # ETHIOPIC SYLLABLE ZHE
+12E6 ; [.2A0C.0020.0002] # ETHIOPIC SYLLABLE ZHO
+12E7 ; [.2A0D.0020.0002] # ETHIOPIC SYLLABLE ZHWA
+12E8 ; [.2A0E.0020.0002] # ETHIOPIC SYLLABLE YA
+12E9 ; [.2A0F.0020.0002] # ETHIOPIC SYLLABLE YU
+12EA ; [.2A10.0020.0002] # ETHIOPIC SYLLABLE YI
+12EB ; [.2A11.0020.0002] # ETHIOPIC SYLLABLE YAA
+12EC ; [.2A12.0020.0002] # ETHIOPIC SYLLABLE YEE
+12ED ; [.2A13.0020.0002] # ETHIOPIC SYLLABLE YE
+12EE ; [.2A14.0020.0002] # ETHIOPIC SYLLABLE YO
+12EF ; [.2A15.0020.0002] # ETHIOPIC SYLLABLE YOA
+12F0 ; [.2A16.0020.0002] # ETHIOPIC SYLLABLE DA
+12F1 ; [.2A17.0020.0002] # ETHIOPIC SYLLABLE DU
+12F2 ; [.2A18.0020.0002] # ETHIOPIC SYLLABLE DI
+12F3 ; [.2A19.0020.0002] # ETHIOPIC SYLLABLE DAA
+12F4 ; [.2A1A.0020.0002] # ETHIOPIC SYLLABLE DEE
+12F5 ; [.2A1B.0020.0002] # ETHIOPIC SYLLABLE DE
+12F6 ; [.2A1C.0020.0002] # ETHIOPIC SYLLABLE DO
+12F7 ; [.2A1D.0020.0002] # ETHIOPIC SYLLABLE DWA
+2D8C ; [.2A1E.0020.0002] # ETHIOPIC SYLLABLE DOA
+AB09 ; [.2A1F.0020.0002] # ETHIOPIC SYLLABLE DDHU
+AB0A ; [.2A20.0020.0002] # ETHIOPIC SYLLABLE DDHI
+AB0B ; [.2A21.0020.0002] # ETHIOPIC SYLLABLE DDHAA
+AB0C ; [.2A22.0020.0002] # ETHIOPIC SYLLABLE DDHEE
+AB0D ; [.2A23.0020.0002] # ETHIOPIC SYLLABLE DDHE
+AB0E ; [.2A24.0020.0002] # ETHIOPIC SYLLABLE DDHO
+12F8 ; [.2A25.0020.0002] # ETHIOPIC SYLLABLE DDA
+12F9 ; [.2A26.0020.0002] # ETHIOPIC SYLLABLE DDU
+12FA ; [.2A27.0020.0002] # ETHIOPIC SYLLABLE DDI
+12FB ; [.2A28.0020.0002] # ETHIOPIC SYLLABLE DDAA
+12FC ; [.2A29.0020.0002] # ETHIOPIC SYLLABLE DDEE
+12FD ; [.2A2A.0020.0002] # ETHIOPIC SYLLABLE DDE
+12FE ; [.2A2B.0020.0002] # ETHIOPIC SYLLABLE DDO
+12FF ; [.2A2C.0020.0002] # ETHIOPIC SYLLABLE DDWA
+2D8D ; [.2A2D.0020.0002] # ETHIOPIC SYLLABLE DDOA
+1300 ; [.2A2E.0020.0002] # ETHIOPIC SYLLABLE JA
+1301 ; [.2A2F.0020.0002] # ETHIOPIC SYLLABLE JU
+1302 ; [.2A30.0020.0002] # ETHIOPIC SYLLABLE JI
+1303 ; [.2A31.0020.0002] # ETHIOPIC SYLLABLE JAA
+1304 ; [.2A32.0020.0002] # ETHIOPIC SYLLABLE JEE
+1305 ; [.2A33.0020.0002] # ETHIOPIC SYLLABLE JE
+1306 ; [.2A34.0020.0002] # ETHIOPIC SYLLABLE JO
+1307 ; [.2A35.0020.0002] # ETHIOPIC SYLLABLE JWA
+2D8E ; [.2A36.0020.0002] # ETHIOPIC SYLLABLE JOA
+1308 ; [.2A37.0020.0002] # ETHIOPIC SYLLABLE GA
+1309 ; [.2A38.0020.0002] # ETHIOPIC SYLLABLE GU
+130A ; [.2A39.0020.0002] # ETHIOPIC SYLLABLE GI
+130B ; [.2A3A.0020.0002] # ETHIOPIC SYLLABLE GAA
+130C ; [.2A3B.0020.0002] # ETHIOPIC SYLLABLE GEE
+130D ; [.2A3C.0020.0002] # ETHIOPIC SYLLABLE GE
+130E ; [.2A3D.0020.0002] # ETHIOPIC SYLLABLE GO
+130F ; [.2A3E.0020.0002] # ETHIOPIC SYLLABLE GOA
+1310 ; [.2A3F.0020.0002] # ETHIOPIC SYLLABLE GWA
+1E7F8 ; [.2A40.0020.0002] # ETHIOPIC SYLLABLE GURAGE GWI
+1312 ; [.2A41.0020.0002] # ETHIOPIC SYLLABLE GWI
+1313 ; [.2A42.0020.0002] # ETHIOPIC SYLLABLE GWAA
+1E7F9 ; [.2A43.0020.0002] # ETHIOPIC SYLLABLE GURAGE GWEE
+1314 ; [.2A44.0020.0002] # ETHIOPIC SYLLABLE GWEE
+1E7FA ; [.2A45.0020.0002] # ETHIOPIC SYLLABLE GURAGE GWE
+1315 ; [.2A46.0020.0002] # ETHIOPIC SYLLABLE GWE
+1318 ; [.2A47.0020.0002] # ETHIOPIC SYLLABLE GGA
+1319 ; [.2A48.0020.0002] # ETHIOPIC SYLLABLE GGU
+131A ; [.2A49.0020.0002] # ETHIOPIC SYLLABLE GGI
+131B ; [.2A4A.0020.0002] # ETHIOPIC SYLLABLE GGAA
+131C ; [.2A4B.0020.0002] # ETHIOPIC SYLLABLE GGEE
+131D ; [.2A4C.0020.0002] # ETHIOPIC SYLLABLE GGE
+131E ; [.2A4D.0020.0002] # ETHIOPIC SYLLABLE GGO
+131F ; [.2A4E.0020.0002] # ETHIOPIC SYLLABLE GGWAA
+2D93 ; [.2A4F.0020.0002] # ETHIOPIC SYLLABLE GGWA
+2D94 ; [.2A50.0020.0002] # ETHIOPIC SYLLABLE GGWI
+2D95 ; [.2A51.0020.0002] # ETHIOPIC SYLLABLE GGWEE
+2D96 ; [.2A52.0020.0002] # ETHIOPIC SYLLABLE GGWE
+1320 ; [.2A53.0020.0002] # ETHIOPIC SYLLABLE THA
+1321 ; [.2A54.0020.0002] # ETHIOPIC SYLLABLE THU
+1322 ; [.2A55.0020.0002] # ETHIOPIC SYLLABLE THI
+1323 ; [.2A56.0020.0002] # ETHIOPIC SYLLABLE THAA
+1324 ; [.2A57.0020.0002] # ETHIOPIC SYLLABLE THEE
+1325 ; [.2A58.0020.0002] # ETHIOPIC SYLLABLE THE
+1326 ; [.2A59.0020.0002] # ETHIOPIC SYLLABLE THO
+1327 ; [.2A5A.0020.0002] # ETHIOPIC SYLLABLE THWA
+2D8F ; [.2A5B.0020.0002] # ETHIOPIC SYLLABLE THOA
+1328 ; [.2A5C.0020.0002] # ETHIOPIC SYLLABLE CHA
+1329 ; [.2A5D.0020.0002] # ETHIOPIC SYLLABLE CHU
+132A ; [.2A5E.0020.0002] # ETHIOPIC SYLLABLE CHI
+132B ; [.2A5F.0020.0002] # ETHIOPIC SYLLABLE CHAA
+132C ; [.2A60.0020.0002] # ETHIOPIC SYLLABLE CHEE
+132D ; [.2A61.0020.0002] # ETHIOPIC SYLLABLE CHE
+132E ; [.2A62.0020.0002] # ETHIOPIC SYLLABLE CHO
+132F ; [.2A63.0020.0002] # ETHIOPIC SYLLABLE CHWA
+2D90 ; [.2A64.0020.0002] # ETHIOPIC SYLLABLE CHOA
+AB20 ; [.2A65.0020.0002] # ETHIOPIC SYLLABLE CCHHA
+AB21 ; [.2A66.0020.0002] # ETHIOPIC SYLLABLE CCHHU
+AB22 ; [.2A67.0020.0002] # ETHIOPIC SYLLABLE CCHHI
+AB23 ; [.2A68.0020.0002] # ETHIOPIC SYLLABLE CCHHAA
+AB24 ; [.2A69.0020.0002] # ETHIOPIC SYLLABLE CCHHEE
+AB25 ; [.2A6A.0020.0002] # ETHIOPIC SYLLABLE CCHHE
+AB26 ; [.2A6B.0020.0002] # ETHIOPIC SYLLABLE CCHHO
+1330 ; [.2A6C.0020.0002] # ETHIOPIC SYLLABLE PHA
+1331 ; [.2A6D.0020.0002] # ETHIOPIC SYLLABLE PHU
+1332 ; [.2A6E.0020.0002] # ETHIOPIC SYLLABLE PHI
+1333 ; [.2A6F.0020.0002] # ETHIOPIC SYLLABLE PHAA
+1334 ; [.2A70.0020.0002] # ETHIOPIC SYLLABLE PHEE
+1335 ; [.2A71.0020.0002] # ETHIOPIC SYLLABLE PHE
+1336 ; [.2A72.0020.0002] # ETHIOPIC SYLLABLE PHO
+1337 ; [.2A73.0020.0002] # ETHIOPIC SYLLABLE PHWA
+2D91 ; [.2A74.0020.0002] # ETHIOPIC SYLLABLE PHOA
+1338 ; [.2A75.0020.0002] # ETHIOPIC SYLLABLE TSA
+1339 ; [.2A76.0020.0002] # ETHIOPIC SYLLABLE TSU
+133A ; [.2A77.0020.0002] # ETHIOPIC SYLLABLE TSI
+133B ; [.2A78.0020.0002] # ETHIOPIC SYLLABLE TSAA
+133C ; [.2A79.0020.0002] # ETHIOPIC SYLLABLE TSEE
+133D ; [.2A7A.0020.0002] # ETHIOPIC SYLLABLE TSE
+133E ; [.2A7B.0020.0002] # ETHIOPIC SYLLABLE TSO
+133F ; [.2A7C.0020.0002] # ETHIOPIC SYLLABLE TSWA
+AB28 ; [.2A7D.0020.0002] # ETHIOPIC SYLLABLE BBA
+AB29 ; [.2A7E.0020.0002] # ETHIOPIC SYLLABLE BBU
+AB2A ; [.2A7F.0020.0002] # ETHIOPIC SYLLABLE BBI
+AB2B ; [.2A80.0020.0002] # ETHIOPIC SYLLABLE BBAA
+AB2C ; [.2A81.0020.0002] # ETHIOPIC SYLLABLE BBEE
+AB2D ; [.2A82.0020.0002] # ETHIOPIC SYLLABLE BBE
+AB2E ; [.2A83.0020.0002] # ETHIOPIC SYLLABLE BBO
+1340 ; [.2A84.0020.0002] # ETHIOPIC SYLLABLE TZA
+1341 ; [.2A85.0020.0002] # ETHIOPIC SYLLABLE TZU
+1342 ; [.2A86.0020.0002] # ETHIOPIC SYLLABLE TZI
+1343 ; [.2A87.0020.0002] # ETHIOPIC SYLLABLE TZAA
+1344 ; [.2A88.0020.0002] # ETHIOPIC SYLLABLE TZEE
+1345 ; [.2A89.0020.0002] # ETHIOPIC SYLLABLE TZE
+1346 ; [.2A8A.0020.0002] # ETHIOPIC SYLLABLE TZO
+1347 ; [.2A8B.0020.0002] # ETHIOPIC SYLLABLE TZOA
+1348 ; [.2A8C.0020.0002] # ETHIOPIC SYLLABLE FA
+1349 ; [.2A8D.0020.0002] # ETHIOPIC SYLLABLE FU
+134A ; [.2A8E.0020.0002] # ETHIOPIC SYLLABLE FI
+134B ; [.2A8F.0020.0002] # ETHIOPIC SYLLABLE FAA
+134C ; [.2A90.0020.0002] # ETHIOPIC SYLLABLE FEE
+134D ; [.2A91.0020.0002] # ETHIOPIC SYLLABLE FE
+134E ; [.2A92.0020.0002] # ETHIOPIC SYLLABLE FO
+134F ; [.2A93.0020.0002] # ETHIOPIC SYLLABLE FWA
+1388 ; [.2A94.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT FWA
+1E7FB ; [.2A95.0020.0002] # ETHIOPIC SYLLABLE GURAGE FWI
+1389 ; [.2A96.0020.0002] # ETHIOPIC SYLLABLE FWI
+1E7FC ; [.2A97.0020.0002] # ETHIOPIC SYLLABLE GURAGE FWEE
+138A ; [.2A98.0020.0002] # ETHIOPIC SYLLABLE FWEE
+138B ; [.2A99.0020.0002] # ETHIOPIC SYLLABLE FWE
+1350 ; [.2A9A.0020.0002] # ETHIOPIC SYLLABLE PA
+1351 ; [.2A9B.0020.0002] # ETHIOPIC SYLLABLE PU
+1352 ; [.2A9C.0020.0002] # ETHIOPIC SYLLABLE PI
+1353 ; [.2A9D.0020.0002] # ETHIOPIC SYLLABLE PAA
+1354 ; [.2A9E.0020.0002] # ETHIOPIC SYLLABLE PEE
+1355 ; [.2A9F.0020.0002] # ETHIOPIC SYLLABLE PE
+1356 ; [.2AA0.0020.0002] # ETHIOPIC SYLLABLE PO
+1357 ; [.2AA1.0020.0002] # ETHIOPIC SYLLABLE PWA
+138C ; [.2AA2.0020.0002] # ETHIOPIC SYLLABLE SEBATBEIT PWA
+1E7FD ; [.2AA3.0020.0002] # ETHIOPIC SYLLABLE GURAGE PWI
+138D ; [.2AA4.0020.0002] # ETHIOPIC SYLLABLE PWI
+1E7FE ; [.2AA5.0020.0002] # ETHIOPIC SYLLABLE GURAGE PWEE
+138E ; [.2AA6.0020.0002] # ETHIOPIC SYLLABLE PWEE
+138F ; [.2AA7.0020.0002] # ETHIOPIC SYLLABLE PWE
+2D92 ; [.2AA8.0020.0002] # ETHIOPIC SYLLABLE POA
+1358 ; [.2AA9.0020.0002] # ETHIOPIC SYLLABLE RYA
+1359 ; [.2AAA.0020.0002] # ETHIOPIC SYLLABLE MYA
+135A ; [.2AAB.0020.0002] # ETHIOPIC SYLLABLE FYA
+2DA0 ; [.2AAC.0020.0002] # ETHIOPIC SYLLABLE SSA
+2DA1 ; [.2AAD.0020.0002] # ETHIOPIC SYLLABLE SSU
+2DA2 ; [.2AAE.0020.0002] # ETHIOPIC SYLLABLE SSI
+2DA3 ; [.2AAF.0020.0002] # ETHIOPIC SYLLABLE SSAA
+2DA4 ; [.2AB0.0020.0002] # ETHIOPIC SYLLABLE SSEE
+2DA5 ; [.2AB1.0020.0002] # ETHIOPIC SYLLABLE SSE
+2DA6 ; [.2AB2.0020.0002] # ETHIOPIC SYLLABLE SSO
+2DA8 ; [.2AB3.0020.0002] # ETHIOPIC SYLLABLE CCA
+2DA9 ; [.2AB4.0020.0002] # ETHIOPIC SYLLABLE CCU
+2DAA ; [.2AB5.0020.0002] # ETHIOPIC SYLLABLE CCI
+2DAB ; [.2AB6.0020.0002] # ETHIOPIC SYLLABLE CCAA
+2DAC ; [.2AB7.0020.0002] # ETHIOPIC SYLLABLE CCEE
+2DAD ; [.2AB8.0020.0002] # ETHIOPIC SYLLABLE CCE
+2DAE ; [.2AB9.0020.0002] # ETHIOPIC SYLLABLE CCO
+2DB0 ; [.2ABA.0020.0002] # ETHIOPIC SYLLABLE ZZA
+2DB1 ; [.2ABB.0020.0002] # ETHIOPIC SYLLABLE ZZU
+2DB2 ; [.2ABC.0020.0002] # ETHIOPIC SYLLABLE ZZI
+2DB3 ; [.2ABD.0020.0002] # ETHIOPIC SYLLABLE ZZAA
+2DB4 ; [.2ABE.0020.0002] # ETHIOPIC SYLLABLE ZZEE
+2DB5 ; [.2ABF.0020.0002] # ETHIOPIC SYLLABLE ZZE
+2DB6 ; [.2AC0.0020.0002] # ETHIOPIC SYLLABLE ZZO
+2DB8 ; [.2AC1.0020.0002] # ETHIOPIC SYLLABLE CCHA
+2DB9 ; [.2AC2.0020.0002] # ETHIOPIC SYLLABLE CCHU
+2DBA ; [.2AC3.0020.0002] # ETHIOPIC SYLLABLE CCHI
+2DBB ; [.2AC4.0020.0002] # ETHIOPIC SYLLABLE CCHAA
+2DBC ; [.2AC5.0020.0002] # ETHIOPIC SYLLABLE CCHEE
+2DBD ; [.2AC6.0020.0002] # ETHIOPIC SYLLABLE CCHE
+2DBE ; [.2AC7.0020.0002] # ETHIOPIC SYLLABLE CCHO
+2DC0 ; [.2AC8.0020.0002] # ETHIOPIC SYLLABLE QYA
+2DC1 ; [.2AC9.0020.0002] # ETHIOPIC SYLLABLE QYU
+2DC2 ; [.2ACA.0020.0002] # ETHIOPIC SYLLABLE QYI
+2DC3 ; [.2ACB.0020.0002] # ETHIOPIC SYLLABLE QYAA
+2DC4 ; [.2ACC.0020.0002] # ETHIOPIC SYLLABLE QYEE
+2DC5 ; [.2ACD.0020.0002] # ETHIOPIC SYLLABLE QYE
+2DC6 ; [.2ACE.0020.0002] # ETHIOPIC SYLLABLE QYO
+2DC8 ; [.2ACF.0020.0002] # ETHIOPIC SYLLABLE KYA
+2DC9 ; [.2AD0.0020.0002] # ETHIOPIC SYLLABLE KYU
+2DCA ; [.2AD1.0020.0002] # ETHIOPIC SYLLABLE KYI
+2DCB ; [.2AD2.0020.0002] # ETHIOPIC SYLLABLE KYAA
+2DCC ; [.2AD3.0020.0002] # ETHIOPIC SYLLABLE KYEE
+2DCD ; [.2AD4.0020.0002] # ETHIOPIC SYLLABLE KYE
+2DCE ; [.2AD5.0020.0002] # ETHIOPIC SYLLABLE KYO
+1E7E0 ; [.2AD6.0020.0002] # ETHIOPIC SYLLABLE HHYA
+2DD0 ; [.2AD7.0020.0002] # ETHIOPIC SYLLABLE XYA
+1E7E1 ; [.2AD8.0020.0002] # ETHIOPIC SYLLABLE HHYU
+2DD1 ; [.2AD9.0020.0002] # ETHIOPIC SYLLABLE XYU
+1E7E2 ; [.2ADA.0020.0002] # ETHIOPIC SYLLABLE HHYI
+2DD2 ; [.2ADB.0020.0002] # ETHIOPIC SYLLABLE XYI
+1E7E3 ; [.2ADC.0020.0002] # ETHIOPIC SYLLABLE HHYAA
+2DD3 ; [.2ADD.0020.0002] # ETHIOPIC SYLLABLE XYAA
+1E7E4 ; [.2ADE.0020.0002] # ETHIOPIC SYLLABLE HHYEE
+2DD4 ; [.2ADF.0020.0002] # ETHIOPIC SYLLABLE XYEE
+1E7E5 ; [.2AE0.0020.0002] # ETHIOPIC SYLLABLE HHYE
+2DD5 ; [.2AE1.0020.0002] # ETHIOPIC SYLLABLE XYE
+1E7E6 ; [.2AE2.0020.0002] # ETHIOPIC SYLLABLE HHYO
+2DD6 ; [.2AE3.0020.0002] # ETHIOPIC SYLLABLE XYO
+2DD8 ; [.2AE4.0020.0002] # ETHIOPIC SYLLABLE GYA
+2DD9 ; [.2AE5.0020.0002] # ETHIOPIC SYLLABLE GYU
+2DDA ; [.2AE6.0020.0002] # ETHIOPIC SYLLABLE GYI
+2DDB ; [.2AE7.0020.0002] # ETHIOPIC SYLLABLE GYAA
+2DDC ; [.2AE8.0020.0002] # ETHIOPIC SYLLABLE GYEE
+2DDD ; [.2AE9.0020.0002] # ETHIOPIC SYLLABLE GYE
+2DDE ; [.2AEA.0020.0002] # ETHIOPIC SYLLABLE GYO
+0950 ; [.2AEB.0020.0002] # DEVANAGARI OM
+A8FD ; [.2AEC.0020.0002] # DEVANAGARI JAIN OM
+0972 ; [.2AED.0020.0002] # DEVANAGARI LETTER CANDRA A
+0904 ; [.2AEE.0020.0002] # DEVANAGARI LETTER SHORT A
+0905 ; [.2AEF.0020.0002] # DEVANAGARI LETTER A
+0906 ; [.2AF0.0020.0002] # DEVANAGARI LETTER AA
+0973 ; [.2AF1.0020.0002] # DEVANAGARI LETTER OE
+0974 ; [.2AF2.0020.0002] # DEVANAGARI LETTER OOE
+0975 ; [.2AF3.0020.0002] # DEVANAGARI LETTER AW
+0976 ; [.2AF4.0020.0002] # DEVANAGARI LETTER UE
+0977 ; [.2AF5.0020.0002] # DEVANAGARI LETTER UUE
+0907 ; [.2AF6.0020.0002] # DEVANAGARI LETTER I
+0908 ; [.2AF7.0020.0002] # DEVANAGARI LETTER II
+0909 ; [.2AF8.0020.0002] # DEVANAGARI LETTER U
+090A ; [.2AF9.0020.0002] # DEVANAGARI LETTER UU
+090B ; [.2AFA.0020.0002] # DEVANAGARI LETTER VOCALIC R
+0960 ; [.2AFB.0020.0002] # DEVANAGARI LETTER VOCALIC RR
+090C ; [.2AFC.0020.0002] # DEVANAGARI LETTER VOCALIC L
+0961 ; [.2AFD.0020.0002] # DEVANAGARI LETTER VOCALIC LL
+090D ; [.2AFE.0020.0002] # DEVANAGARI LETTER CANDRA E
+090E ; [.2AFF.0020.0002] # DEVANAGARI LETTER SHORT E
+090F ; [.2B00.0020.0002] # DEVANAGARI LETTER E
+0910 ; [.2B01.0020.0002] # DEVANAGARI LETTER AI
+A8FE ; [.2B02.0020.0002] # DEVANAGARI LETTER AY
+0911 ; [.2B03.0020.0002] # DEVANAGARI LETTER CANDRA O
+0912 ; [.2B04.0020.0002] # DEVANAGARI LETTER SHORT O
+0913 ; [.2B05.0020.0002] # DEVANAGARI LETTER O
+0914 ; [.2B06.0020.0002] # DEVANAGARI LETTER AU
+0915 ; [.2B07.0020.0002] # DEVANAGARI LETTER KA
+0958 ; [.2B07.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER QA
+0916 ; [.2B08.0020.0002] # DEVANAGARI LETTER KHA
+0959 ; [.2B08.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER KHHA
+0917 ; [.2B09.0020.0002] # DEVANAGARI LETTER GA
+095A ; [.2B09.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER GHHA
+097B ; [.2B0A.0020.0002] # DEVANAGARI LETTER GGA
+0918 ; [.2B0B.0020.0002] # DEVANAGARI LETTER GHA
+0919 ; [.2B0C.0020.0002] # DEVANAGARI LETTER NGA
+091A ; [.2B0D.0020.0002] # DEVANAGARI LETTER CA
+091B ; [.2B0E.0020.0002] # DEVANAGARI LETTER CHA
+091C ; [.2B0F.0020.0002] # DEVANAGARI LETTER JA
+095B ; [.2B0F.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER ZA
+0979 ; [.2B10.0020.0002] # DEVANAGARI LETTER ZHA
+097C ; [.2B11.0020.0002] # DEVANAGARI LETTER JJA
+091D ; [.2B12.0020.0002] # DEVANAGARI LETTER JHA
+091E ; [.2B13.0020.0002] # DEVANAGARI LETTER NYA
+091F ; [.2B14.0020.0002] # DEVANAGARI LETTER TTA
+0920 ; [.2B15.0020.0002] # DEVANAGARI LETTER TTHA
+0978 ; [.2B16.0020.0002] # DEVANAGARI LETTER MARWARI DDA
+0921 ; [.2B17.0020.0002] # DEVANAGARI LETTER DDA
+095C ; [.2B17.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER DDDHA
+097E ; [.2B18.0020.0002] # DEVANAGARI LETTER DDDA
+0922 ; [.2B19.0020.0002] # DEVANAGARI LETTER DDHA
+095D ; [.2B19.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER RHA
+0923 ; [.2B1A.0020.0002] # DEVANAGARI LETTER NNA
+0924 ; [.2B1B.0020.0002] # DEVANAGARI LETTER TA
+0925 ; [.2B1C.0020.0002] # DEVANAGARI LETTER THA
+0926 ; [.2B1D.0020.0002] # DEVANAGARI LETTER DA
+0927 ; [.2B1E.0020.0002] # DEVANAGARI LETTER DHA
+0928 ; [.2B1F.0020.0002] # DEVANAGARI LETTER NA
+0929 ; [.2B1F.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER NNNA
+092A ; [.2B20.0020.0002] # DEVANAGARI LETTER PA
+092B ; [.2B21.0020.0002] # DEVANAGARI LETTER PHA
+095E ; [.2B21.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER FA
+092C ; [.2B22.0020.0002] # DEVANAGARI LETTER BA
+097F ; [.2B23.0020.0002] # DEVANAGARI LETTER BBA
+092D ; [.2B24.0020.0002] # DEVANAGARI LETTER BHA
+092E ; [.2B25.0020.0002] # DEVANAGARI LETTER MA
+092F ; [.2B26.0020.0002] # DEVANAGARI LETTER YA
+095F ; [.2B26.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER YYA
+097A ; [.2B27.0020.0002] # DEVANAGARI LETTER HEAVY YA
+0930 ; [.2B28.0020.0002] # DEVANAGARI LETTER RA
+0931 ; [.2B28.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER RRA
+0932 ; [.2B29.0020.0002] # DEVANAGARI LETTER LA
+0933 ; [.2B2A.0020.0002] # DEVANAGARI LETTER LLA
+0934 ; [.2B2A.0020.0002][.0000.00C2.0002] # DEVANAGARI LETTER LLLA
+0935 ; [.2B2B.0020.0002] # DEVANAGARI LETTER VA
+0936 ; [.2B2C.0020.0002] # DEVANAGARI LETTER SHA
+0937 ; [.2B2D.0020.0002] # DEVANAGARI LETTER SSA
+0938 ; [.2B2E.0020.0002] # DEVANAGARI LETTER SA
+0939 ; [.2B2F.0020.0002] # DEVANAGARI LETTER HA
+093D ; [.2B30.0020.0002] # DEVANAGARI SIGN AVAGRAHA
+097D ; [.2B31.0020.0002] # DEVANAGARI LETTER GLOTTAL STOP
+1CE9 ; [.2B32.0020.0002] # VEDIC SIGN ANUSVARA ANTARGOMUKHA
+1CEA ; [.2B32.0020.0004] # VEDIC SIGN ANUSVARA BAHIRGOMUKHA
+1CEB ; [.2B32.0020.0004] # VEDIC SIGN ANUSVARA VAMAGOMUKHA
+1CEC ; [.2B32.0020.0004] # VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
+1CEE ; [.2B32.0020.0004] # VEDIC SIGN HEXIFORM LONG ANUSVARA
+1CEF ; [.2B32.0020.0004] # VEDIC SIGN LONG ANUSVARA
+1CF0 ; [.2B32.0020.0004] # VEDIC SIGN RTHANG LONG ANUSVARA
+1CF1 ; [.2B32.0020.0004] # VEDIC SIGN ANUSVARA UBHAYATO MUKHA
+1CFA ; [.2B32.0020.0004] # VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
+1CF5 ; [.2B33.0020.0002] # VEDIC SIGN JIHVAMULIYA
+1CF6 ; [.2B34.0020.0002] # VEDIC SIGN UPADHMANIYA
+A8F2 ; [.2B35.0020.0002] # DEVANAGARI SIGN SPACING CANDRABINDU
+A8F3 ; [.2B35.0020.0004] # DEVANAGARI SIGN CANDRABINDU VIRAMA
+A8F4 ; [.2B35.0020.0004] # DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA
+A8F5 ; [.2B35.0020.0004] # DEVANAGARI SIGN CANDRABINDU TWO
+A8F6 ; [.2B35.0020.0004] # DEVANAGARI SIGN CANDRABINDU THREE
+A8F7 ; [.2B35.0020.0004] # DEVANAGARI SIGN CANDRABINDU AVAGRAHA
+A8FB ; [.2B36.0020.0002] # DEVANAGARI HEADSTROKE
+093E ; [.2B37.0020.0002] # DEVANAGARI VOWEL SIGN AA
+093A ; [.2B38.0020.0002] # DEVANAGARI VOWEL SIGN OE
+093B ; [.2B39.0020.0002] # DEVANAGARI VOWEL SIGN OOE
+094F ; [.2B3A.0020.0002] # DEVANAGARI VOWEL SIGN AW
+0956 ; [.2B3B.0020.0002] # DEVANAGARI VOWEL SIGN UE
+0957 ; [.2B3C.0020.0002] # DEVANAGARI VOWEL SIGN UUE
+093F ; [.2B3D.0020.0002] # DEVANAGARI VOWEL SIGN I
+0940 ; [.2B3E.0020.0002] # DEVANAGARI VOWEL SIGN II
+0941 ; [.2B3F.0020.0002] # DEVANAGARI VOWEL SIGN U
+0942 ; [.2B40.0020.0002] # DEVANAGARI VOWEL SIGN UU
+0943 ; [.2B41.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC R
+0944 ; [.2B42.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC RR
+0962 ; [.2B43.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC L
+0963 ; [.2B44.0020.0002] # DEVANAGARI VOWEL SIGN VOCALIC LL
+0945 ; [.2B45.0020.0002] # DEVANAGARI VOWEL SIGN CANDRA E
+0955 ; [.2B46.0020.0002] # DEVANAGARI VOWEL SIGN CANDRA LONG E
+0946 ; [.2B47.0020.0002] # DEVANAGARI VOWEL SIGN SHORT E
+0947 ; [.2B48.0020.0002] # DEVANAGARI VOWEL SIGN E
+094E ; [.2B49.0020.0002] # DEVANAGARI VOWEL SIGN PRISHTHAMATRA E
+0948 ; [.2B4A.0020.0002] # DEVANAGARI VOWEL SIGN AI
+A8FF ; [.2B4B.0020.0002] # DEVANAGARI VOWEL SIGN AY
+0949 ; [.2B4C.0020.0002] # DEVANAGARI VOWEL SIGN CANDRA O
+094A ; [.2B4D.0020.0002] # DEVANAGARI VOWEL SIGN SHORT O
+094B ; [.2B4E.0020.0002] # DEVANAGARI VOWEL SIGN O
+094C ; [.2B4F.0020.0002] # DEVANAGARI VOWEL SIGN AU
+094D ; [.2B50.0020.0002] # DEVANAGARI SIGN VIRAMA
+0980 ; [.2B51.0020.0002] # BENGALI ANJI
+0985 ; [.2B52.0020.0002] # BENGALI LETTER A
+0986 ; [.2B53.0020.0002] # BENGALI LETTER AA
+0987 ; [.2B54.0020.0002] # BENGALI LETTER I
+0988 ; [.2B55.0020.0002] # BENGALI LETTER II
+0989 ; [.2B56.0020.0002] # BENGALI LETTER U
+098A ; [.2B57.0020.0002] # BENGALI LETTER UU
+098B ; [.2B58.0020.0002] # BENGALI LETTER VOCALIC R
+09E0 ; [.2B59.0020.0002] # BENGALI LETTER VOCALIC RR
+098C ; [.2B5A.0020.0002] # BENGALI LETTER VOCALIC L
+09E1 ; [.2B5B.0020.0002] # BENGALI LETTER VOCALIC LL
+098F ; [.2B5C.0020.0002] # BENGALI LETTER E
+0990 ; [.2B5D.0020.0002] # BENGALI LETTER AI
+0993 ; [.2B5E.0020.0002] # BENGALI LETTER O
+0994 ; [.2B5F.0020.0002] # BENGALI LETTER AU
+0995 ; [.2B60.0020.0002] # BENGALI LETTER KA
+0996 ; [.2B61.0020.0002] # BENGALI LETTER KHA
+0997 ; [.2B62.0020.0002] # BENGALI LETTER GA
+0998 ; [.2B63.0020.0002] # BENGALI LETTER GHA
+0999 ; [.2B64.0020.0002] # BENGALI LETTER NGA
+099A ; [.2B65.0020.0002] # BENGALI LETTER CA
+099B ; [.2B66.0020.0002] # BENGALI LETTER CHA
+099C ; [.2B67.0020.0002] # BENGALI LETTER JA
+099D ; [.2B68.0020.0002] # BENGALI LETTER JHA
+099E ; [.2B69.0020.0002] # BENGALI LETTER NYA
+099F ; [.2B6A.0020.0002] # BENGALI LETTER TTA
+09A0 ; [.2B6B.0020.0002] # BENGALI LETTER TTHA
+09A1 ; [.2B6C.0020.0002] # BENGALI LETTER DDA
+09DC ; [.2B6C.0020.0002][.0000.00C2.0002] # BENGALI LETTER RRA
+09A2 ; [.2B6D.0020.0002] # BENGALI LETTER DDHA
+09DD ; [.2B6D.0020.0002][.0000.00C2.0002] # BENGALI LETTER RHA
+09A3 ; [.2B6E.0020.0002] # BENGALI LETTER NNA
+09A4 ; [.2B6F.0020.0002] # BENGALI LETTER TA
+09CE ; [.2B6F.0020.0004][.2B90.0020.0004] # BENGALI LETTER KHANDA TA
+09A5 ; [.2B70.0020.0002] # BENGALI LETTER THA
+09A6 ; [.2B71.0020.0002] # BENGALI LETTER DA
+09A7 ; [.2B72.0020.0002] # BENGALI LETTER DHA
+09A8 ; [.2B73.0020.0002] # BENGALI LETTER NA
+09AA ; [.2B74.0020.0002] # BENGALI LETTER PA
+09AB ; [.2B75.0020.0002] # BENGALI LETTER PHA
+09AC ; [.2B76.0020.0002] # BENGALI LETTER BA
+09AD ; [.2B77.0020.0002] # BENGALI LETTER BHA
+09AE ; [.2B78.0020.0002] # BENGALI LETTER MA
+09AF ; [.2B79.0020.0002] # BENGALI LETTER YA
+09DF ; [.2B79.0020.0002][.0000.00C2.0002] # BENGALI LETTER YYA
+09B0 ; [.2B7A.0020.0002] # BENGALI LETTER RA
+09F0 ; [.2B7B.0020.0002] # BENGALI LETTER RA WITH MIDDLE DIAGONAL
+09B2 ; [.2B7C.0020.0002] # BENGALI LETTER LA
+09F1 ; [.2B7D.0020.0002] # BENGALI LETTER RA WITH LOWER DIAGONAL
+09B6 ; [.2B7E.0020.0002] # BENGALI LETTER SHA
+09B7 ; [.2B7F.0020.0002] # BENGALI LETTER SSA
+09B8 ; [.2B80.0020.0002] # BENGALI LETTER SA
+09B9 ; [.2B81.0020.0002] # BENGALI LETTER HA
+09BD ; [.2B82.0020.0002] # BENGALI SIGN AVAGRAHA
+09BE ; [.2B83.0020.0002] # BENGALI VOWEL SIGN AA
+09BF ; [.2B84.0020.0002] # BENGALI VOWEL SIGN I
+09C0 ; [.2B85.0020.0002] # BENGALI VOWEL SIGN II
+09C1 ; [.2B86.0020.0002] # BENGALI VOWEL SIGN U
+09C2 ; [.2B87.0020.0002] # BENGALI VOWEL SIGN UU
+09C3 ; [.2B88.0020.0002] # BENGALI VOWEL SIGN VOCALIC R
+09C4 ; [.2B89.0020.0002] # BENGALI VOWEL SIGN VOCALIC RR
+09E2 ; [.2B8A.0020.0002] # BENGALI VOWEL SIGN VOCALIC L
+09E3 ; [.2B8B.0020.0002] # BENGALI VOWEL SIGN VOCALIC LL
+09C7 ; [.2B8C.0020.0002] # BENGALI VOWEL SIGN E
+09C8 ; [.2B8D.0020.0002] # BENGALI VOWEL SIGN AI
+09CB ; [.2B8E.0020.0002] # BENGALI VOWEL SIGN O
+09C7 09BE ; [.2B8E.0020.0002] # BENGALI VOWEL SIGN O
+09CC ; [.2B8F.0020.0002] # BENGALI VOWEL SIGN AU
+09C7 09D7 ; [.2B8F.0020.0002] # BENGALI VOWEL SIGN AU
+09CD ; [.2B90.0020.0002] # BENGALI SIGN VIRAMA
+09D7 ; [.2B91.0020.0002] # BENGALI AU LENGTH MARK
+09FC ; [.2B92.0020.0002] # BENGALI LETTER VEDIC ANUSVARA
+0A74 ; [.2B93.0020.0002] # GURMUKHI EK ONKAR
+0A73 ; [.2B94.0020.0002] # GURMUKHI URA
+0A09 ; [.2B95.0020.0002] # GURMUKHI LETTER U
+0A0A ; [.2B96.0020.0002] # GURMUKHI LETTER UU
+0A13 ; [.2B97.0020.0002] # GURMUKHI LETTER OO
+0A05 ; [.2B98.0020.0002] # GURMUKHI LETTER A
+0A06 ; [.2B99.0020.0002] # GURMUKHI LETTER AA
+0A10 ; [.2B9A.0020.0002] # GURMUKHI LETTER AI
+0A14 ; [.2B9B.0020.0002] # GURMUKHI LETTER AU
+0A72 ; [.2B9C.0020.0002] # GURMUKHI IRI
+0A07 ; [.2B9D.0020.0002] # GURMUKHI LETTER I
+0A08 ; [.2B9E.0020.0002] # GURMUKHI LETTER II
+0A0F ; [.2B9F.0020.0002] # GURMUKHI LETTER EE
+0A38 ; [.2BA0.0020.0002] # GURMUKHI LETTER SA
+0A36 ; [.2BA0.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER SHA
+0A39 ; [.2BA1.0020.0002] # GURMUKHI LETTER HA
+0A51 ; [.2BA2.0020.0002] # GURMUKHI SIGN UDAAT
+0A15 ; [.2BA3.0020.0002] # GURMUKHI LETTER KA
+0A16 ; [.2BA4.0020.0002] # GURMUKHI LETTER KHA
+0A59 ; [.2BA4.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER KHHA
+0A17 ; [.2BA5.0020.0002] # GURMUKHI LETTER GA
+0A5A ; [.2BA5.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER GHHA
+0A18 ; [.2BA6.0020.0002] # GURMUKHI LETTER GHA
+0A19 ; [.2BA7.0020.0002] # GURMUKHI LETTER NGA
+0A1A ; [.2BA8.0020.0002] # GURMUKHI LETTER CA
+0A1B ; [.2BA9.0020.0002] # GURMUKHI LETTER CHA
+0A1C ; [.2BAA.0020.0002] # GURMUKHI LETTER JA
+0A5B ; [.2BAA.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER ZA
+0A1D ; [.2BAB.0020.0002] # GURMUKHI LETTER JHA
+0A1E ; [.2BAC.0020.0002] # GURMUKHI LETTER NYA
+0A1F ; [.2BAD.0020.0002] # GURMUKHI LETTER TTA
+0A20 ; [.2BAE.0020.0002] # GURMUKHI LETTER TTHA
+0A21 ; [.2BAF.0020.0002] # GURMUKHI LETTER DDA
+0A22 ; [.2BB0.0020.0002] # GURMUKHI LETTER DDHA
+0A23 ; [.2BB1.0020.0002] # GURMUKHI LETTER NNA
+0A24 ; [.2BB2.0020.0002] # GURMUKHI LETTER TA
+0A25 ; [.2BB3.0020.0002] # GURMUKHI LETTER THA
+0A26 ; [.2BB4.0020.0002] # GURMUKHI LETTER DA
+0A27 ; [.2BB5.0020.0002] # GURMUKHI LETTER DHA
+0A28 ; [.2BB6.0020.0002] # GURMUKHI LETTER NA
+0A2A ; [.2BB7.0020.0002] # GURMUKHI LETTER PA
+0A2B ; [.2BB8.0020.0002] # GURMUKHI LETTER PHA
+0A5E ; [.2BB8.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER FA
+0A2C ; [.2BB9.0020.0002] # GURMUKHI LETTER BA
+0A2D ; [.2BBA.0020.0002] # GURMUKHI LETTER BHA
+0A2E ; [.2BBB.0020.0002] # GURMUKHI LETTER MA
+0A2F ; [.2BBC.0020.0002] # GURMUKHI LETTER YA
+0A75 ; [.2BBD.0020.0002] # GURMUKHI SIGN YAKASH
+0A30 ; [.2BBE.0020.0002] # GURMUKHI LETTER RA
+0A32 ; [.2BBF.0020.0002] # GURMUKHI LETTER LA
+0A33 ; [.2BBF.0020.0002][.0000.00C2.0002] # GURMUKHI LETTER LLA
+0A35 ; [.2BC0.0020.0002] # GURMUKHI LETTER VA
+0A5C ; [.2BC1.0020.0002] # GURMUKHI LETTER RRA
+0A3E ; [.2BC2.0020.0002] # GURMUKHI VOWEL SIGN AA
+0A3F ; [.2BC3.0020.0002] # GURMUKHI VOWEL SIGN I
+0A40 ; [.2BC4.0020.0002] # GURMUKHI VOWEL SIGN II
+0A41 ; [.2BC5.0020.0002] # GURMUKHI VOWEL SIGN U
+0A42 ; [.2BC6.0020.0002] # GURMUKHI VOWEL SIGN UU
+0A47 ; [.2BC7.0020.0002] # GURMUKHI VOWEL SIGN EE
+0A48 ; [.2BC8.0020.0002] # GURMUKHI VOWEL SIGN AI
+0A4B ; [.2BC9.0020.0002] # GURMUKHI VOWEL SIGN OO
+0A4C ; [.2BCA.0020.0002] # GURMUKHI VOWEL SIGN AU
+0A4D ; [.2BCB.0020.0002] # GURMUKHI SIGN VIRAMA
+0AD0 ; [.2BCC.0020.0002] # GUJARATI OM
+0A85 ; [.2BCD.0020.0002] # GUJARATI LETTER A
+0A86 ; [.2BCE.0020.0002] # GUJARATI LETTER AA
+0A87 ; [.2BCF.0020.0002] # GUJARATI LETTER I
+0A88 ; [.2BD0.0020.0002] # GUJARATI LETTER II
+0A89 ; [.2BD1.0020.0002] # GUJARATI LETTER U
+0A8A ; [.2BD2.0020.0002] # GUJARATI LETTER UU
+0A8B ; [.2BD3.0020.0002] # GUJARATI LETTER VOCALIC R
+0AE0 ; [.2BD4.0020.0002] # GUJARATI LETTER VOCALIC RR
+0A8C ; [.2BD5.0020.0002] # GUJARATI LETTER VOCALIC L
+0AE1 ; [.2BD6.0020.0002] # GUJARATI LETTER VOCALIC LL
+0A8D ; [.2BD7.0020.0002] # GUJARATI VOWEL CANDRA E
+0A8F ; [.2BD8.0020.0002] # GUJARATI LETTER E
+0A90 ; [.2BD9.0020.0002] # GUJARATI LETTER AI
+0A91 ; [.2BDA.0020.0002] # GUJARATI VOWEL CANDRA O
+0A93 ; [.2BDB.0020.0002] # GUJARATI LETTER O
+0A94 ; [.2BDC.0020.0002] # GUJARATI LETTER AU
+0A95 ; [.2BDD.0020.0002] # GUJARATI LETTER KA
+0A96 ; [.2BDE.0020.0002] # GUJARATI LETTER KHA
+0A97 ; [.2BDF.0020.0002] # GUJARATI LETTER GA
+0A98 ; [.2BE0.0020.0002] # GUJARATI LETTER GHA
+0A99 ; [.2BE1.0020.0002] # GUJARATI LETTER NGA
+0A9A ; [.2BE2.0020.0002] # GUJARATI LETTER CA
+0A9B ; [.2BE3.0020.0002] # GUJARATI LETTER CHA
+0A9C ; [.2BE4.0020.0002] # GUJARATI LETTER JA
+0AF9 ; [.2BE5.0020.0002] # GUJARATI LETTER ZHA
+0A9D ; [.2BE6.0020.0002] # GUJARATI LETTER JHA
+0A9E ; [.2BE7.0020.0002] # GUJARATI LETTER NYA
+0A9F ; [.2BE8.0020.0002] # GUJARATI LETTER TTA
+0AA0 ; [.2BE9.0020.0002] # GUJARATI LETTER TTHA
+0AA1 ; [.2BEA.0020.0002] # GUJARATI LETTER DDA
+0AA2 ; [.2BEB.0020.0002] # GUJARATI LETTER DDHA
+0AA3 ; [.2BEC.0020.0002] # GUJARATI LETTER NNA
+0AA4 ; [.2BED.0020.0002] # GUJARATI LETTER TA
+0AA5 ; [.2BEE.0020.0002] # GUJARATI LETTER THA
+0AA6 ; [.2BEF.0020.0002] # GUJARATI LETTER DA
+0AA7 ; [.2BF0.0020.0002] # GUJARATI LETTER DHA
+0AA8 ; [.2BF1.0020.0002] # GUJARATI LETTER NA
+0AAA ; [.2BF2.0020.0002] # GUJARATI LETTER PA
+0AAB ; [.2BF3.0020.0002] # GUJARATI LETTER PHA
+0AAC ; [.2BF4.0020.0002] # GUJARATI LETTER BA
+0AAD ; [.2BF5.0020.0002] # GUJARATI LETTER BHA
+0AAE ; [.2BF6.0020.0002] # GUJARATI LETTER MA
+0AAF ; [.2BF7.0020.0002] # GUJARATI LETTER YA
+0AB0 ; [.2BF8.0020.0002] # GUJARATI LETTER RA
+0AB2 ; [.2BF9.0020.0002] # GUJARATI LETTER LA
+0AB5 ; [.2BFA.0020.0002] # GUJARATI LETTER VA
+0AB6 ; [.2BFB.0020.0002] # GUJARATI LETTER SHA
+0AB7 ; [.2BFC.0020.0002] # GUJARATI LETTER SSA
+0AB8 ; [.2BFD.0020.0002] # GUJARATI LETTER SA
+0AB9 ; [.2BFE.0020.0002] # GUJARATI LETTER HA
+0AB3 ; [.2BFF.0020.0002] # GUJARATI LETTER LLA
+0ABD ; [.2C00.0020.0002] # GUJARATI SIGN AVAGRAHA
+0ABE ; [.2C01.0020.0002] # GUJARATI VOWEL SIGN AA
+0ABF ; [.2C02.0020.0002] # GUJARATI VOWEL SIGN I
+0AC0 ; [.2C03.0020.0002] # GUJARATI VOWEL SIGN II
+0AC1 ; [.2C04.0020.0002] # GUJARATI VOWEL SIGN U
+0AC2 ; [.2C05.0020.0002] # GUJARATI VOWEL SIGN UU
+0AC3 ; [.2C06.0020.0002] # GUJARATI VOWEL SIGN VOCALIC R
+0AC4 ; [.2C07.0020.0002] # GUJARATI VOWEL SIGN VOCALIC RR
+0AE2 ; [.2C08.0020.0002] # GUJARATI VOWEL SIGN VOCALIC L
+0AE3 ; [.2C09.0020.0002] # GUJARATI VOWEL SIGN VOCALIC LL
+0AC5 ; [.2C0A.0020.0002] # GUJARATI VOWEL SIGN CANDRA E
+0AC7 ; [.2C0B.0020.0002] # GUJARATI VOWEL SIGN E
+0AC8 ; [.2C0C.0020.0002] # GUJARATI VOWEL SIGN AI
+0AC9 ; [.2C0D.0020.0002] # GUJARATI VOWEL SIGN CANDRA O
+0ACB ; [.2C0E.0020.0002] # GUJARATI VOWEL SIGN O
+0ACC ; [.2C0F.0020.0002] # GUJARATI VOWEL SIGN AU
+0ACD ; [.2C10.0020.0002] # GUJARATI SIGN VIRAMA
+0B05 ; [.2C11.0020.0002] # ORIYA LETTER A
+0B06 ; [.2C12.0020.0002] # ORIYA LETTER AA
+0B07 ; [.2C13.0020.0002] # ORIYA LETTER I
+0B08 ; [.2C14.0020.0002] # ORIYA LETTER II
+0B09 ; [.2C15.0020.0002] # ORIYA LETTER U
+0B0A ; [.2C16.0020.0002] # ORIYA LETTER UU
+0B0B ; [.2C17.0020.0002] # ORIYA LETTER VOCALIC R
+0B60 ; [.2C18.0020.0002] # ORIYA LETTER VOCALIC RR
+0B0C ; [.2C19.0020.0002] # ORIYA LETTER VOCALIC L
+0B61 ; [.2C1A.0020.0002] # ORIYA LETTER VOCALIC LL
+0B0F ; [.2C1B.0020.0002] # ORIYA LETTER E
+0B10 ; [.2C1C.0020.0002] # ORIYA LETTER AI
+0B13 ; [.2C1D.0020.0002] # ORIYA LETTER O
+0B14 ; [.2C1E.0020.0002] # ORIYA LETTER AU
+0B15 ; [.2C1F.0020.0002] # ORIYA LETTER KA
+0B16 ; [.2C20.0020.0002] # ORIYA LETTER KHA
+0B17 ; [.2C21.0020.0002] # ORIYA LETTER GA
+0B18 ; [.2C22.0020.0002] # ORIYA LETTER GHA
+0B19 ; [.2C23.0020.0002] # ORIYA LETTER NGA
+0B1A ; [.2C24.0020.0002] # ORIYA LETTER CA
+0B1B ; [.2C25.0020.0002] # ORIYA LETTER CHA
+0B1C ; [.2C26.0020.0002] # ORIYA LETTER JA
+0B1D ; [.2C27.0020.0002] # ORIYA LETTER JHA
+0B1E ; [.2C28.0020.0002] # ORIYA LETTER NYA
+0B1F ; [.2C29.0020.0002] # ORIYA LETTER TTA
+0B20 ; [.2C2A.0020.0002] # ORIYA LETTER TTHA
+0B21 ; [.2C2B.0020.0002] # ORIYA LETTER DDA
+0B5C ; [.2C2B.0020.0002][.0000.00C2.0002] # ORIYA LETTER RRA
+0B22 ; [.2C2C.0020.0002] # ORIYA LETTER DDHA
+0B5D ; [.2C2C.0020.0002][.0000.00C2.0002] # ORIYA LETTER RHA
+0B23 ; [.2C2D.0020.0002] # ORIYA LETTER NNA
+0B24 ; [.2C2E.0020.0002] # ORIYA LETTER TA
+0B25 ; [.2C2F.0020.0002] # ORIYA LETTER THA
+0B26 ; [.2C30.0020.0002] # ORIYA LETTER DA
+0B27 ; [.2C31.0020.0002] # ORIYA LETTER DHA
+0B28 ; [.2C32.0020.0002] # ORIYA LETTER NA
+0B2A ; [.2C33.0020.0002] # ORIYA LETTER PA
+0B2B ; [.2C34.0020.0002] # ORIYA LETTER PHA
+0B2C ; [.2C35.0020.0002] # ORIYA LETTER BA
+0B2D ; [.2C36.0020.0002] # ORIYA LETTER BHA
+0B2E ; [.2C37.0020.0002] # ORIYA LETTER MA
+0B2F ; [.2C38.0020.0002] # ORIYA LETTER YA
+0B5F ; [.2C39.0020.0002] # ORIYA LETTER YYA
+0B30 ; [.2C3A.0020.0002] # ORIYA LETTER RA
+0B32 ; [.2C3B.0020.0002] # ORIYA LETTER LA
+0B33 ; [.2C3C.0020.0002] # ORIYA LETTER LLA
+0B35 ; [.2C3D.0020.0002] # ORIYA LETTER VA
+0B71 ; [.2C3E.0020.0002] # ORIYA LETTER WA
+0B36 ; [.2C3F.0020.0002] # ORIYA LETTER SHA
+0B37 ; [.2C40.0020.0002] # ORIYA LETTER SSA
+0B38 ; [.2C41.0020.0002] # ORIYA LETTER SA
+0B39 ; [.2C42.0020.0002] # ORIYA LETTER HA
+0B3D ; [.2C43.0020.0002] # ORIYA SIGN AVAGRAHA
+0B3E ; [.2C44.0020.0002] # ORIYA VOWEL SIGN AA
+0B3F ; [.2C45.0020.0002] # ORIYA VOWEL SIGN I
+0B40 ; [.2C46.0020.0002] # ORIYA VOWEL SIGN II
+0B41 ; [.2C47.0020.0002] # ORIYA VOWEL SIGN U
+0B42 ; [.2C48.0020.0002] # ORIYA VOWEL SIGN UU
+0B43 ; [.2C49.0020.0002] # ORIYA VOWEL SIGN VOCALIC R
+0B44 ; [.2C4A.0020.0002] # ORIYA VOWEL SIGN VOCALIC RR
+0B62 ; [.2C4B.0020.0002] # ORIYA VOWEL SIGN VOCALIC L
+0B63 ; [.2C4C.0020.0002] # ORIYA VOWEL SIGN VOCALIC LL
+0B47 ; [.2C4D.0020.0002] # ORIYA VOWEL SIGN E
+0B48 ; [.2C4E.0020.0002] # ORIYA VOWEL SIGN AI
+0B47 0B56 ; [.2C4E.0020.0002] # ORIYA VOWEL SIGN AI
+0B4B ; [.2C4F.0020.0002] # ORIYA VOWEL SIGN O
+0B47 0B3E ; [.2C4F.0020.0002] # ORIYA VOWEL SIGN O
+0B4C ; [.2C50.0020.0002] # ORIYA VOWEL SIGN AU
+0B47 0B57 ; [.2C50.0020.0002] # ORIYA VOWEL SIGN AU
+0B4D ; [.2C51.0020.0002] # ORIYA SIGN VIRAMA
+0B56 ; [.2C52.0020.0002] # ORIYA AI LENGTH MARK
+0B57 ; [.2C53.0020.0002] # ORIYA AU LENGTH MARK
+0BD0 ; [.2C54.0020.0002] # TAMIL OM
+0B85 ; [.2C55.0020.0002] # TAMIL LETTER A
+0B86 ; [.2C56.0020.0002] # TAMIL LETTER AA
+0B87 ; [.2C57.0020.0002] # TAMIL LETTER I
+0B88 ; [.2C58.0020.0002] # TAMIL LETTER II
+0B89 ; [.2C59.0020.0002] # TAMIL LETTER U
+0B8A ; [.2C5A.0020.0002] # TAMIL LETTER UU
+0B8E ; [.2C5B.0020.0002] # TAMIL LETTER E
+0B8F ; [.2C5C.0020.0002] # TAMIL LETTER EE
+0B90 ; [.2C5D.0020.0002] # TAMIL LETTER AI
+0B92 ; [.2C5E.0020.0002] # TAMIL LETTER O
+0B93 ; [.2C5F.0020.0002] # TAMIL LETTER OO
+0B94 ; [.2C60.0020.0002] # TAMIL LETTER AU
+0B92 0BD7 ; [.2C60.0020.0002] # TAMIL LETTER AU
+0B83 ; [.2C61.0020.0002] # TAMIL SIGN VISARGA
+0B95 ; [.2C62.0020.0002] # TAMIL LETTER KA
+0B99 ; [.2C63.0020.0002] # TAMIL LETTER NGA
+0B9A ; [.2C64.0020.0002] # TAMIL LETTER CA
+0B9E ; [.2C65.0020.0002] # TAMIL LETTER NYA
+0B9F ; [.2C66.0020.0002] # TAMIL LETTER TTA
+0BA3 ; [.2C67.0020.0002] # TAMIL LETTER NNA
+0BA4 ; [.2C68.0020.0002] # TAMIL LETTER TA
+0BA8 ; [.2C69.0020.0002] # TAMIL LETTER NA
+0BAA ; [.2C6A.0020.0002] # TAMIL LETTER PA
+0BAE ; [.2C6B.0020.0002] # TAMIL LETTER MA
+0BAF ; [.2C6C.0020.0002] # TAMIL LETTER YA
+0BB0 ; [.2C6D.0020.0002] # TAMIL LETTER RA
+0BB2 ; [.2C6E.0020.0002] # TAMIL LETTER LA
+0BB5 ; [.2C6F.0020.0002] # TAMIL LETTER VA
+0BB4 ; [.2C70.0020.0002] # TAMIL LETTER LLLA
+0BB3 ; [.2C71.0020.0002] # TAMIL LETTER LLA
+0BB1 ; [.2C72.0020.0002] # TAMIL LETTER RRA
+0BA9 ; [.2C73.0020.0002] # TAMIL LETTER NNNA
+0B9C ; [.2C74.0020.0002] # TAMIL LETTER JA
+0BB6 ; [.2C75.0020.0002] # TAMIL LETTER SHA
+0BB7 ; [.2C76.0020.0002] # TAMIL LETTER SSA
+0BB8 ; [.2C77.0020.0002] # TAMIL LETTER SA
+0BB9 ; [.2C78.0020.0002] # TAMIL LETTER HA
+0BBE ; [.2C79.0020.0002] # TAMIL VOWEL SIGN AA
+0BBF ; [.2C7A.0020.0002] # TAMIL VOWEL SIGN I
+0BC0 ; [.2C7B.0020.0002] # TAMIL VOWEL SIGN II
+0BC1 ; [.2C7C.0020.0002] # TAMIL VOWEL SIGN U
+0BC2 ; [.2C7D.0020.0002] # TAMIL VOWEL SIGN UU
+0BC6 ; [.2C7E.0020.0002] # TAMIL VOWEL SIGN E
+0BC7 ; [.2C7F.0020.0002] # TAMIL VOWEL SIGN EE
+0BC8 ; [.2C80.0020.0002] # TAMIL VOWEL SIGN AI
+0BCA ; [.2C81.0020.0002] # TAMIL VOWEL SIGN O
+0BC6 0BBE ; [.2C81.0020.0002] # TAMIL VOWEL SIGN O
+0BCB ; [.2C82.0020.0002] # TAMIL VOWEL SIGN OO
+0BC7 0BBE ; [.2C82.0020.0002] # TAMIL VOWEL SIGN OO
+0BCC ; [.2C83.0020.0002] # TAMIL VOWEL SIGN AU
+0BC6 0BD7 ; [.2C83.0020.0002] # TAMIL VOWEL SIGN AU
+0BCD ; [.2C84.0020.0002] # TAMIL SIGN VIRAMA
+0BD7 ; [.2C85.0020.0002] # TAMIL AU LENGTH MARK
+0C05 ; [.2C86.0020.0002] # TELUGU LETTER A
+0C06 ; [.2C87.0020.0002] # TELUGU LETTER AA
+0C07 ; [.2C88.0020.0002] # TELUGU LETTER I
+0C08 ; [.2C89.0020.0002] # TELUGU LETTER II
+0C09 ; [.2C8A.0020.0002] # TELUGU LETTER U
+0C0A ; [.2C8B.0020.0002] # TELUGU LETTER UU
+0C0B ; [.2C8C.0020.0002] # TELUGU LETTER VOCALIC R
+0C60 ; [.2C8D.0020.0002] # TELUGU LETTER VOCALIC RR
+0C0C ; [.2C8E.0020.0002] # TELUGU LETTER VOCALIC L
+0C61 ; [.2C8F.0020.0002] # TELUGU LETTER VOCALIC LL
+0C0E ; [.2C90.0020.0002] # TELUGU LETTER E
+0C0F ; [.2C91.0020.0002] # TELUGU LETTER EE
+0C10 ; [.2C92.0020.0002] # TELUGU LETTER AI
+0C12 ; [.2C93.0020.0002] # TELUGU LETTER O
+0C13 ; [.2C94.0020.0002] # TELUGU LETTER OO
+0C14 ; [.2C95.0020.0002] # TELUGU LETTER AU
+0C15 ; [.2C96.0020.0002] # TELUGU LETTER KA
+0C16 ; [.2C97.0020.0002] # TELUGU LETTER KHA
+0C17 ; [.2C98.0020.0002] # TELUGU LETTER GA
+0C18 ; [.2C99.0020.0002] # TELUGU LETTER GHA
+0C19 ; [.2C9A.0020.0002] # TELUGU LETTER NGA
+0C1A ; [.2C9B.0020.0002] # TELUGU LETTER CA
+0C58 ; [.2C9C.0020.0002] # TELUGU LETTER TSA
+0C1B ; [.2C9D.0020.0002] # TELUGU LETTER CHA
+0C1C ; [.2C9E.0020.0002] # TELUGU LETTER JA
+0C59 ; [.2C9F.0020.0002] # TELUGU LETTER DZA
+0C1D ; [.2CA0.0020.0002] # TELUGU LETTER JHA
+0C1E ; [.2CA1.0020.0002] # TELUGU LETTER NYA
+0C1F ; [.2CA2.0020.0002] # TELUGU LETTER TTA
+0C20 ; [.2CA3.0020.0002] # TELUGU LETTER TTHA
+0C21 ; [.2CA4.0020.0002] # TELUGU LETTER DDA
+0C22 ; [.2CA5.0020.0002] # TELUGU LETTER DDHA
+0C23 ; [.2CA6.0020.0002] # TELUGU LETTER NNA
+0C24 ; [.2CA7.0020.0002] # TELUGU LETTER TA
+0C25 ; [.2CA8.0020.0002] # TELUGU LETTER THA
+0C26 ; [.2CA9.0020.0002] # TELUGU LETTER DA
+0C27 ; [.2CAA.0020.0002] # TELUGU LETTER DHA
+0C28 ; [.2CAB.0020.0002] # TELUGU LETTER NA
+0C5D ; [.2CAB.0020.0004][.2CCD.0020.0004] # TELUGU LETTER NAKAARA POLLU
+0C2A ; [.2CAC.0020.0002] # TELUGU LETTER PA
+0C2B ; [.2CAD.0020.0002] # TELUGU LETTER PHA
+0C2C ; [.2CAE.0020.0002] # TELUGU LETTER BA
+0C2D ; [.2CAF.0020.0002] # TELUGU LETTER BHA
+0C2E ; [.2CB0.0020.0002] # TELUGU LETTER MA
+0C2F ; [.2CB1.0020.0002] # TELUGU LETTER YA
+0C30 ; [.2CB2.0020.0002] # TELUGU LETTER RA
+0C31 ; [.2CB3.0020.0002] # TELUGU LETTER RRA
+0C32 ; [.2CB4.0020.0002] # TELUGU LETTER LA
+0C35 ; [.2CB5.0020.0002] # TELUGU LETTER VA
+0C36 ; [.2CB6.0020.0002] # TELUGU LETTER SHA
+0C37 ; [.2CB7.0020.0002] # TELUGU LETTER SSA
+0C38 ; [.2CB8.0020.0002] # TELUGU LETTER SA
+0C39 ; [.2CB9.0020.0002] # TELUGU LETTER HA
+0C33 ; [.2CBA.0020.0002] # TELUGU LETTER LLA
+0C34 ; [.2CBB.0020.0002] # TELUGU LETTER LLLA
+0C5A ; [.2CBC.0020.0002] # TELUGU LETTER RRRA
+0C3D ; [.2CBD.0020.0002] # TELUGU SIGN AVAGRAHA
+0C3E ; [.2CBE.0020.0002] # TELUGU VOWEL SIGN AA
+0C3F ; [.2CBF.0020.0002] # TELUGU VOWEL SIGN I
+0C40 ; [.2CC0.0020.0002] # TELUGU VOWEL SIGN II
+0C41 ; [.2CC1.0020.0002] # TELUGU VOWEL SIGN U
+0C42 ; [.2CC2.0020.0002] # TELUGU VOWEL SIGN UU
+0C43 ; [.2CC3.0020.0002] # TELUGU VOWEL SIGN VOCALIC R
+0C44 ; [.2CC4.0020.0002] # TELUGU VOWEL SIGN VOCALIC RR
+0C62 ; [.2CC5.0020.0002] # TELUGU VOWEL SIGN VOCALIC L
+0C63 ; [.2CC6.0020.0002] # TELUGU VOWEL SIGN VOCALIC LL
+0C46 ; [.2CC7.0020.0002] # TELUGU VOWEL SIGN E
+0C47 ; [.2CC8.0020.0002] # TELUGU VOWEL SIGN EE
+0C48 ; [.2CC9.0020.0002] # TELUGU VOWEL SIGN AI
+0C46 0C56 ; [.2CC9.0020.0002] # TELUGU VOWEL SIGN AI
+0C4A ; [.2CCA.0020.0002] # TELUGU VOWEL SIGN O
+0C4B ; [.2CCB.0020.0002] # TELUGU VOWEL SIGN OO
+0C4C ; [.2CCC.0020.0002] # TELUGU VOWEL SIGN AU
+0C4D ; [.2CCD.0020.0002] # TELUGU SIGN VIRAMA
+0C55 ; [.2CCE.0020.0002] # TELUGU LENGTH MARK
+0C56 ; [.2CCF.0020.0002] # TELUGU AI LENGTH MARK
+0C85 ; [.2CD0.0020.0002] # KANNADA LETTER A
+0C86 ; [.2CD1.0020.0002] # KANNADA LETTER AA
+0C87 ; [.2CD2.0020.0002] # KANNADA LETTER I
+0C88 ; [.2CD3.0020.0002] # KANNADA LETTER II
+0C89 ; [.2CD4.0020.0002] # KANNADA LETTER U
+0C8A ; [.2CD5.0020.0002] # KANNADA LETTER UU
+0C8B ; [.2CD6.0020.0002] # KANNADA LETTER VOCALIC R
+0CE0 ; [.2CD7.0020.0002] # KANNADA LETTER VOCALIC RR
+0C8C ; [.2CD8.0020.0002] # KANNADA LETTER VOCALIC L
+0CE1 ; [.2CD9.0020.0002] # KANNADA LETTER VOCALIC LL
+0C8E ; [.2CDA.0020.0002] # KANNADA LETTER E
+0C8F ; [.2CDB.0020.0002] # KANNADA LETTER EE
+0C90 ; [.2CDC.0020.0002] # KANNADA LETTER AI
+0C92 ; [.2CDD.0020.0002] # KANNADA LETTER O
+0C93 ; [.2CDE.0020.0002] # KANNADA LETTER OO
+0C94 ; [.2CDF.0020.0002] # KANNADA LETTER AU
+0C95 ; [.2CE0.0020.0002] # KANNADA LETTER KA
+0C96 ; [.2CE1.0020.0002] # KANNADA LETTER KHA
+0C97 ; [.2CE2.0020.0002] # KANNADA LETTER GA
+0C98 ; [.2CE3.0020.0002] # KANNADA LETTER GHA
+0C99 ; [.2CE4.0020.0002] # KANNADA LETTER NGA
+0C9A ; [.2CE5.0020.0002] # KANNADA LETTER CA
+0C9B ; [.2CE6.0020.0002] # KANNADA LETTER CHA
+0C9C ; [.2CE7.0020.0002] # KANNADA LETTER JA
+0C9D ; [.2CE8.0020.0002] # KANNADA LETTER JHA
+0C9E ; [.2CE9.0020.0002] # KANNADA LETTER NYA
+0C9F ; [.2CEA.0020.0002] # KANNADA LETTER TTA
+0CA0 ; [.2CEB.0020.0002] # KANNADA LETTER TTHA
+0CA1 ; [.2CEC.0020.0002] # KANNADA LETTER DDA
+0CA2 ; [.2CED.0020.0002] # KANNADA LETTER DDHA
+0CA3 ; [.2CEE.0020.0002] # KANNADA LETTER NNA
+0CA4 ; [.2CEF.0020.0002] # KANNADA LETTER TA
+0CA5 ; [.2CF0.0020.0002] # KANNADA LETTER THA
+0CA6 ; [.2CF1.0020.0002] # KANNADA LETTER DA
+0CA7 ; [.2CF2.0020.0002] # KANNADA LETTER DHA
+0CA8 ; [.2CF3.0020.0002] # KANNADA LETTER NA
+0CDD ; [.2CF3.0020.0004][.2D17.0020.0004] # KANNADA LETTER NAKAARA POLLU
+0CAA ; [.2CF4.0020.0002] # KANNADA LETTER PA
+0CAB ; [.2CF5.0020.0002] # KANNADA LETTER PHA
+0CAC ; [.2CF6.0020.0002] # KANNADA LETTER BA
+0CAD ; [.2CF7.0020.0002] # KANNADA LETTER BHA
+0CAE ; [.2CF8.0020.0002] # KANNADA LETTER MA
+0CAF ; [.2CF9.0020.0002] # KANNADA LETTER YA
+0CB0 ; [.2CFA.0020.0002] # KANNADA LETTER RA
+0CB1 ; [.2CFB.0020.0002] # KANNADA LETTER RRA
+0CB2 ; [.2CFC.0020.0002] # KANNADA LETTER LA
+0CB5 ; [.2CFD.0020.0002] # KANNADA LETTER VA
+0CB6 ; [.2CFE.0020.0002] # KANNADA LETTER SHA
+0CB7 ; [.2CFF.0020.0002] # KANNADA LETTER SSA
+0CB8 ; [.2D00.0020.0002] # KANNADA LETTER SA
+0CB9 ; [.2D01.0020.0002] # KANNADA LETTER HA
+0CB3 ; [.2D02.0020.0002] # KANNADA LETTER LLA
+0CDE ; [.2D03.0020.0002] # KANNADA LETTER FA
+0CBD ; [.2D04.0020.0002] # KANNADA SIGN AVAGRAHA
+0CF1 ; [.2D05.0020.0002] # KANNADA SIGN JIHVAMULIYA
+0CF2 ; [.2D06.0020.0002] # KANNADA SIGN UPADHMANIYA
+0C80 ; [.2D07.0020.0002] # KANNADA SIGN SPACING CANDRABINDU
+0CBE ; [.2D08.0020.0002] # KANNADA VOWEL SIGN AA
+0CBF ; [.2D09.0020.0002] # KANNADA VOWEL SIGN I
+0CC0 ; [.2D0A.0020.0002] # KANNADA VOWEL SIGN II
+0CBF 0CD5 ; [.2D0A.0020.0002] # KANNADA VOWEL SIGN II
+0CC1 ; [.2D0B.0020.0002] # KANNADA VOWEL SIGN U
+0CC2 ; [.2D0C.0020.0002] # KANNADA VOWEL SIGN UU
+0CC3 ; [.2D0D.0020.0002] # KANNADA VOWEL SIGN VOCALIC R
+0CC4 ; [.2D0E.0020.0002] # KANNADA VOWEL SIGN VOCALIC RR
+0CE2 ; [.2D0F.0020.0002] # KANNADA VOWEL SIGN VOCALIC L
+0CE3 ; [.2D10.0020.0002] # KANNADA VOWEL SIGN VOCALIC LL
+0CC6 ; [.2D11.0020.0002] # KANNADA VOWEL SIGN E
+0CC7 ; [.2D12.0020.0002] # KANNADA VOWEL SIGN EE
+0CC6 0CD5 ; [.2D12.0020.0002] # KANNADA VOWEL SIGN EE
+0CC8 ; [.2D13.0020.0002] # KANNADA VOWEL SIGN AI
+0CC6 0CD6 ; [.2D13.0020.0002] # KANNADA VOWEL SIGN AI
+0CCA ; [.2D14.0020.0002] # KANNADA VOWEL SIGN O
+0CC6 0CC2 ; [.2D14.0020.0002] # KANNADA VOWEL SIGN O
+0CCB ; [.2D15.0020.0002] # KANNADA VOWEL SIGN OO
+0CC6 0CC2 0CD5 ; [.2D15.0020.0002] # KANNADA VOWEL SIGN OO
+0CCA 0CD5 ; [.2D15.0020.0002] # KANNADA VOWEL SIGN OO
+0CCC ; [.2D16.0020.0002] # KANNADA VOWEL SIGN AU
+0CCD ; [.2D17.0020.0002] # KANNADA SIGN VIRAMA
+0CD5 ; [.2D18.0020.0002] # KANNADA LENGTH MARK
+0CD6 ; [.2D19.0020.0002] # KANNADA AI LENGTH MARK
+0D05 ; [.2D1A.0020.0002] # MALAYALAM LETTER A
+0D06 ; [.2D1B.0020.0002] # MALAYALAM LETTER AA
+0D07 ; [.2D1C.0020.0002] # MALAYALAM LETTER I
+0D08 ; [.2D1D.0020.0002] # MALAYALAM LETTER II
+0D5F ; [.2D1E.0020.0002] # MALAYALAM LETTER ARCHAIC II
+0D09 ; [.2D1F.0020.0002] # MALAYALAM LETTER U
+0D0A ; [.2D20.0020.0002] # MALAYALAM LETTER UU
+0D0B ; [.2D21.0020.0002] # MALAYALAM LETTER VOCALIC R
+0D60 ; [.2D22.0020.0002] # MALAYALAM LETTER VOCALIC RR
+0D0C ; [.2D23.0020.0002] # MALAYALAM LETTER VOCALIC L
+0D61 ; [.2D24.0020.0002] # MALAYALAM LETTER VOCALIC LL
+0D0E ; [.2D25.0020.0002] # MALAYALAM LETTER E
+0D0F ; [.2D26.0020.0002] # MALAYALAM LETTER EE
+0D10 ; [.2D27.0020.0002] # MALAYALAM LETTER AI
+0D12 ; [.2D28.0020.0002] # MALAYALAM LETTER O
+0D13 ; [.2D29.0020.0002] # MALAYALAM LETTER OO
+0D14 ; [.2D2A.0020.0002] # MALAYALAM LETTER AU
+0D15 ; [.2D2B.0020.0002] # MALAYALAM LETTER KA
+0D7F ; [.2D2B.0020.0004][.2D63.0020.0004] # MALAYALAM LETTER CHILLU K
+0D16 ; [.2D2C.0020.0002] # MALAYALAM LETTER KHA
+0D17 ; [.2D2D.0020.0002] # MALAYALAM LETTER GA
+0D18 ; [.2D2E.0020.0002] # MALAYALAM LETTER GHA
+0D19 ; [.2D2F.0020.0002] # MALAYALAM LETTER NGA
+0D1A ; [.2D30.0020.0002] # MALAYALAM LETTER CA
+0D1B ; [.2D31.0020.0002] # MALAYALAM LETTER CHA
+0D1C ; [.2D32.0020.0002] # MALAYALAM LETTER JA
+0D1D ; [.2D33.0020.0002] # MALAYALAM LETTER JHA
+0D1E ; [.2D34.0020.0002] # MALAYALAM LETTER NYA
+0D1F ; [.2D35.0020.0002] # MALAYALAM LETTER TTA
+0D20 ; [.2D36.0020.0002] # MALAYALAM LETTER TTHA
+0D21 ; [.2D37.0020.0002] # MALAYALAM LETTER DDA
+0D22 ; [.2D38.0020.0002] # MALAYALAM LETTER DDHA
+0D23 ; [.2D39.0020.0002] # MALAYALAM LETTER NNA
+0D7A ; [.2D39.0020.0004][.2D63.0020.0004] # MALAYALAM LETTER CHILLU NN
+0D24 ; [.2D3A.0020.0002] # MALAYALAM LETTER TA
+0D25 ; [.2D3B.0020.0002] # MALAYALAM LETTER THA
+0D26 ; [.2D3C.0020.0002] # MALAYALAM LETTER DA
+0D27 ; [.2D3D.0020.0002] # MALAYALAM LETTER DHA
+0D28 ; [.2D3E.0020.0002] # MALAYALAM LETTER NA
+0D7B ; [.2D3E.0020.0004][.2D63.0020.0004] # MALAYALAM LETTER CHILLU N
+0D29 ; [.2D3F.0020.0002] # MALAYALAM LETTER NNNA
+0D2A ; [.2D40.0020.0002] # MALAYALAM LETTER PA
+0D2B ; [.2D41.0020.0002] # MALAYALAM LETTER PHA
+0D2C ; [.2D42.0020.0002] # MALAYALAM LETTER BA
+0D2D ; [.2D43.0020.0002] # MALAYALAM LETTER BHA
+0D2E ; [.2D44.0020.0002] # MALAYALAM LETTER MA
+0D54 ; [.2D44.0020.0004][.2D63.0020.0004] # MALAYALAM LETTER CHILLU M
+0D2F ; [.2D45.0020.0002] # MALAYALAM LETTER YA
+0D55 ; [.2D45.0020.0004][.2D63.0020.0004] # MALAYALAM LETTER CHILLU Y
+0D30 ; [.2D46.0020.0002] # MALAYALAM LETTER RA
+0D4E ; [.2D46.0020.0004][.2D63.0020.0004] # MALAYALAM LETTER DOT REPH
+0D7C ; [.2D46.0020.0004][.2D63.0020.0004] # MALAYALAM LETTER CHILLU RR
+0D32 ; [.2D47.0020.0002] # MALAYALAM LETTER LA
+0D7D ; [.2D47.0020.0004][.2D63.0020.0004] # MALAYALAM LETTER CHILLU L
+0D35 ; [.2D48.0020.0002] # MALAYALAM LETTER VA
+0D36 ; [.2D49.0020.0002] # MALAYALAM LETTER SHA
+0D37 ; [.2D4A.0020.0002] # MALAYALAM LETTER SSA
+0D38 ; [.2D4B.0020.0002] # MALAYALAM LETTER SA
+0D39 ; [.2D4C.0020.0002] # MALAYALAM LETTER HA
+0D33 ; [.2D4D.0020.0002] # MALAYALAM LETTER LLA
+0D7E ; [.2D4D.0020.0004][.2D63.0020.0004] # MALAYALAM LETTER CHILLU LL
+0D34 ; [.2D4E.0020.0002] # MALAYALAM LETTER LLLA
+0D56 ; [.2D4E.0020.0004][.2D63.0020.0004] # MALAYALAM LETTER CHILLU LLL
+0D31 ; [.2D4F.0020.0002] # MALAYALAM LETTER RRA
+0D3A ; [.2D50.0020.0002] # MALAYALAM LETTER TTTA
+0D3D ; [.2D51.0020.0002] # MALAYALAM SIGN AVAGRAHA
+0D04 ; [.2D52.0020.0002] # MALAYALAM LETTER VEDIC ANUSVARA
+0D3E ; [.2D53.0020.0002] # MALAYALAM VOWEL SIGN AA
+0D3F ; [.2D54.0020.0002] # MALAYALAM VOWEL SIGN I
+0D40 ; [.2D55.0020.0002] # MALAYALAM VOWEL SIGN II
+0D41 ; [.2D56.0020.0002] # MALAYALAM VOWEL SIGN U
+0D42 ; [.2D57.0020.0002] # MALAYALAM VOWEL SIGN UU
+0D43 ; [.2D58.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC R
+0D44 ; [.2D59.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC RR
+0D62 ; [.2D5A.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC L
+0D63 ; [.2D5B.0020.0002] # MALAYALAM VOWEL SIGN VOCALIC LL
+0D46 ; [.2D5C.0020.0002] # MALAYALAM VOWEL SIGN E
+0D47 ; [.2D5D.0020.0002] # MALAYALAM VOWEL SIGN EE
+0D48 ; [.2D5E.0020.0002] # MALAYALAM VOWEL SIGN AI
+0D4A ; [.2D5F.0020.0002] # MALAYALAM VOWEL SIGN O
+0D46 0D3E ; [.2D5F.0020.0002] # MALAYALAM VOWEL SIGN O
+0D4B ; [.2D60.0020.0002] # MALAYALAM VOWEL SIGN OO
+0D47 0D3E ; [.2D60.0020.0002] # MALAYALAM VOWEL SIGN OO
+0D4C ; [.2D61.0020.0002] # MALAYALAM VOWEL SIGN AU
+0D46 0D57 ; [.2D61.0020.0002] # MALAYALAM VOWEL SIGN AU
+0D57 ; [.2D62.0020.0002] # MALAYALAM AU LENGTH MARK
+0D4D ; [.2D63.0020.0002] # MALAYALAM SIGN VIRAMA
+0D3B ; [.2D63.0020.0004] # MALAYALAM SIGN VERTICAL BAR VIRAMA
+0D3C ; [.2D63.0020.0004] # MALAYALAM SIGN CIRCULAR VIRAMA
+0D85 ; [.2D64.0020.0002] # SINHALA LETTER AYANNA
+0D86 ; [.2D65.0020.0002] # SINHALA LETTER AAYANNA
+0D87 ; [.2D66.0020.0002] # SINHALA LETTER AEYANNA
+0D88 ; [.2D67.0020.0002] # SINHALA LETTER AEEYANNA
+0D89 ; [.2D68.0020.0002] # SINHALA LETTER IYANNA
+0D8A ; [.2D69.0020.0002] # SINHALA LETTER IIYANNA
+0D8B ; [.2D6A.0020.0002] # SINHALA LETTER UYANNA
+0D8C ; [.2D6B.0020.0002] # SINHALA LETTER UUYANNA
+0D8D ; [.2D6C.0020.0002] # SINHALA LETTER IRUYANNA
+0D8E ; [.2D6D.0020.0002] # SINHALA LETTER IRUUYANNA
+0D8F ; [.2D6E.0020.0002] # SINHALA LETTER ILUYANNA
+0D90 ; [.2D6F.0020.0002] # SINHALA LETTER ILUUYANNA
+0D91 ; [.2D70.0020.0002] # SINHALA LETTER EYANNA
+0D92 ; [.2D71.0020.0002] # SINHALA LETTER EEYANNA
+0D93 ; [.2D72.0020.0002] # SINHALA LETTER AIYANNA
+0D94 ; [.2D73.0020.0002] # SINHALA LETTER OYANNA
+0D95 ; [.2D74.0020.0002] # SINHALA LETTER OOYANNA
+0D96 ; [.2D75.0020.0002] # SINHALA LETTER AUYANNA
+0D9A ; [.2D76.0020.0002] # SINHALA LETTER ALPAPRAANA KAYANNA
+0D9B ; [.2D77.0020.0002] # SINHALA LETTER MAHAAPRAANA KAYANNA
+0D9C ; [.2D78.0020.0002] # SINHALA LETTER ALPAPRAANA GAYANNA
+0D9D ; [.2D79.0020.0002] # SINHALA LETTER MAHAAPRAANA GAYANNA
+0D9E ; [.2D7A.0020.0002] # SINHALA LETTER KANTAJA NAASIKYAYA
+0D9F ; [.2D7B.0020.0002] # SINHALA LETTER SANYAKA GAYANNA
+0DA0 ; [.2D7C.0020.0002] # SINHALA LETTER ALPAPRAANA CAYANNA
+0DA1 ; [.2D7D.0020.0002] # SINHALA LETTER MAHAAPRAANA CAYANNA
+0DA2 ; [.2D7E.0020.0002] # SINHALA LETTER ALPAPRAANA JAYANNA
+0DA3 ; [.2D7F.0020.0002] # SINHALA LETTER MAHAAPRAANA JAYANNA
+0DA4 ; [.2D80.0020.0002] # SINHALA LETTER TAALUJA NAASIKYAYA
+0DA5 ; [.2D81.0020.0002] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+0DA6 ; [.2D82.0020.0002] # SINHALA LETTER SANYAKA JAYANNA
+0DA7 ; [.2D83.0020.0002] # SINHALA LETTER ALPAPRAANA TTAYANNA
+0DA8 ; [.2D84.0020.0002] # SINHALA LETTER MAHAAPRAANA TTAYANNA
+0DA9 ; [.2D85.0020.0002] # SINHALA LETTER ALPAPRAANA DDAYANNA
+0DAA ; [.2D86.0020.0002] # SINHALA LETTER MAHAAPRAANA DDAYANNA
+0DAB ; [.2D87.0020.0002] # SINHALA LETTER MUURDHAJA NAYANNA
+0DAC ; [.2D88.0020.0002] # SINHALA LETTER SANYAKA DDAYANNA
+0DAD ; [.2D89.0020.0002] # SINHALA LETTER ALPAPRAANA TAYANNA
+0DAE ; [.2D8A.0020.0002] # SINHALA LETTER MAHAAPRAANA TAYANNA
+0DAF ; [.2D8B.0020.0002] # SINHALA LETTER ALPAPRAANA DAYANNA
+0DB0 ; [.2D8C.0020.0002] # SINHALA LETTER MAHAAPRAANA DAYANNA
+0DB1 ; [.2D8D.0020.0002] # SINHALA LETTER DANTAJA NAYANNA
+0DB3 ; [.2D8E.0020.0002] # SINHALA LETTER SANYAKA DAYANNA
+0DB4 ; [.2D8F.0020.0002] # SINHALA LETTER ALPAPRAANA PAYANNA
+0DB5 ; [.2D90.0020.0002] # SINHALA LETTER MAHAAPRAANA PAYANNA
+0DB6 ; [.2D91.0020.0002] # SINHALA LETTER ALPAPRAANA BAYANNA
+0DB7 ; [.2D92.0020.0002] # SINHALA LETTER MAHAAPRAANA BAYANNA
+0DB8 ; [.2D93.0020.0002] # SINHALA LETTER MAYANNA
+0DB9 ; [.2D94.0020.0002] # SINHALA LETTER AMBA BAYANNA
+0DBA ; [.2D95.0020.0002] # SINHALA LETTER YAYANNA
+0DBB ; [.2D96.0020.0002] # SINHALA LETTER RAYANNA
+0DBD ; [.2D97.0020.0002] # SINHALA LETTER DANTAJA LAYANNA
+0DC0 ; [.2D98.0020.0002] # SINHALA LETTER VAYANNA
+0DC1 ; [.2D99.0020.0002] # SINHALA LETTER TAALUJA SAYANNA
+0DC2 ; [.2D9A.0020.0002] # SINHALA LETTER MUURDHAJA SAYANNA
+0DC3 ; [.2D9B.0020.0002] # SINHALA LETTER DANTAJA SAYANNA
+0DC4 ; [.2D9C.0020.0002] # SINHALA LETTER HAYANNA
+0DC5 ; [.2D9D.0020.0002] # SINHALA LETTER MUURDHAJA LAYANNA
+0DC6 ; [.2D9E.0020.0002] # SINHALA LETTER FAYANNA
+0DCF ; [.2D9F.0020.0002] # SINHALA VOWEL SIGN AELA-PILLA
+0DD0 ; [.2DA0.0020.0002] # SINHALA VOWEL SIGN KETTI AEDA-PILLA
+0DD1 ; [.2DA1.0020.0002] # SINHALA VOWEL SIGN DIGA AEDA-PILLA
+0DD2 ; [.2DA2.0020.0002] # SINHALA VOWEL SIGN KETTI IS-PILLA
+0DD3 ; [.2DA3.0020.0002] # SINHALA VOWEL SIGN DIGA IS-PILLA
+0DD4 ; [.2DA4.0020.0002] # SINHALA VOWEL SIGN KETTI PAA-PILLA
+0DD6 ; [.2DA5.0020.0002] # SINHALA VOWEL SIGN DIGA PAA-PILLA
+0DD8 ; [.2DA6.0020.0002] # SINHALA VOWEL SIGN GAETTA-PILLA
+0DF2 ; [.2DA7.0020.0002] # SINHALA VOWEL SIGN DIGA GAETTA-PILLA
+0DDF ; [.2DA8.0020.0002] # SINHALA VOWEL SIGN GAYANUKITTA
+0DF3 ; [.2DA9.0020.0002] # SINHALA VOWEL SIGN DIGA GAYANUKITTA
+0DD9 ; [.2DAA.0020.0002] # SINHALA VOWEL SIGN KOMBUVA
+0DDA ; [.2DAB.0020.0002] # SINHALA VOWEL SIGN DIGA KOMBUVA
+0DD9 0DCA ; [.2DAB.0020.0002] # SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDB ; [.2DAC.0020.0002] # SINHALA VOWEL SIGN KOMBU DEKA
+0DDC ; [.2DAD.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0DD9 0DCF ; [.2DAD.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA
+0DDD ; [.2DAE.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DD9 0DCF 0DCA ; [.2DAE.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DDC 0DCA ; [.2DAE.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA
+0DDE ; [.2DAF.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DD9 0DDF ; [.2DAF.0020.0002] # SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0DCA ; [.2DB0.0020.0002] # SINHALA SIGN AL-LAKUNA
+AAF2 ; [.2DB1.0020.0002] # MEETEI MAYEK ANJI
+ABC0 ; [.2DB2.0020.0002] # MEETEI MAYEK LETTER KOK
+ABC1 ; [.2DB3.0020.0002] # MEETEI MAYEK LETTER SAM
+ABC2 ; [.2DB4.0020.0002] # MEETEI MAYEK LETTER LAI
+ABC3 ; [.2DB5.0020.0002] # MEETEI MAYEK LETTER MIT
+ABC4 ; [.2DB6.0020.0002] # MEETEI MAYEK LETTER PA
+ABC5 ; [.2DB7.0020.0002] # MEETEI MAYEK LETTER NA
+ABC6 ; [.2DB8.0020.0002] # MEETEI MAYEK LETTER CHIL
+ABC7 ; [.2DB9.0020.0002] # MEETEI MAYEK LETTER TIL
+ABC8 ; [.2DBA.0020.0002] # MEETEI MAYEK LETTER KHOU
+ABC9 ; [.2DBB.0020.0002] # MEETEI MAYEK LETTER NGOU
+ABCA ; [.2DBC.0020.0002] # MEETEI MAYEK LETTER THOU
+ABCB ; [.2DBD.0020.0002] # MEETEI MAYEK LETTER WAI
+ABCC ; [.2DBE.0020.0002] # MEETEI MAYEK LETTER YANG
+ABCD ; [.2DBF.0020.0002] # MEETEI MAYEK LETTER HUK
+ABCE ; [.2DC0.0020.0002] # MEETEI MAYEK LETTER UN
+ABCF ; [.2DC1.0020.0002] # MEETEI MAYEK LETTER I
+ABD0 ; [.2DC2.0020.0002] # MEETEI MAYEK LETTER PHAM
+ABD1 ; [.2DC3.0020.0002] # MEETEI MAYEK LETTER ATIYA
+ABD2 ; [.2DC4.0020.0002] # MEETEI MAYEK LETTER GOK
+ABD3 ; [.2DC5.0020.0002] # MEETEI MAYEK LETTER JHAM
+ABD4 ; [.2DC6.0020.0002] # MEETEI MAYEK LETTER RAI
+ABD5 ; [.2DC7.0020.0002] # MEETEI MAYEK LETTER BA
+ABD6 ; [.2DC8.0020.0002] # MEETEI MAYEK LETTER JIL
+ABD7 ; [.2DC9.0020.0002] # MEETEI MAYEK LETTER DIL
+ABD8 ; [.2DCA.0020.0002] # MEETEI MAYEK LETTER GHOU
+ABD9 ; [.2DCB.0020.0002] # MEETEI MAYEK LETTER DHOU
+ABDA ; [.2DCC.0020.0002] # MEETEI MAYEK LETTER BHAM
+AAE0 ; [.2DCD.0020.0002] # MEETEI MAYEK LETTER E
+AAE1 ; [.2DCE.0020.0002] # MEETEI MAYEK LETTER O
+AAE2 ; [.2DCF.0020.0002] # MEETEI MAYEK LETTER CHA
+AAE3 ; [.2DD0.0020.0002] # MEETEI MAYEK LETTER NYA
+AAE4 ; [.2DD1.0020.0002] # MEETEI MAYEK LETTER TTA
+AAE5 ; [.2DD2.0020.0002] # MEETEI MAYEK LETTER TTHA
+AAE6 ; [.2DD3.0020.0002] # MEETEI MAYEK LETTER DDA
+AAE7 ; [.2DD4.0020.0002] # MEETEI MAYEK LETTER DDHA
+AAE8 ; [.2DD5.0020.0002] # MEETEI MAYEK LETTER NNA
+AAE9 ; [.2DD6.0020.0002] # MEETEI MAYEK LETTER SHA
+AAEA ; [.2DD7.0020.0002] # MEETEI MAYEK LETTER SSA
+ABE3 ; [.2DD8.0020.0002] # MEETEI MAYEK VOWEL SIGN ONAP
+ABE4 ; [.2DD9.0020.0002] # MEETEI MAYEK VOWEL SIGN INAP
+ABE5 ; [.2DDA.0020.0002] # MEETEI MAYEK VOWEL SIGN ANAP
+ABE6 ; [.2DDB.0020.0002] # MEETEI MAYEK VOWEL SIGN YENAP
+ABE7 ; [.2DDC.0020.0002] # MEETEI MAYEK VOWEL SIGN SOUNAP
+ABE8 ; [.2DDD.0020.0002] # MEETEI MAYEK VOWEL SIGN UNAP
+ABE9 ; [.2DDE.0020.0002] # MEETEI MAYEK VOWEL SIGN CHEINAP
+ABEA ; [.2DDF.0020.0002] # MEETEI MAYEK VOWEL SIGN NUNG
+AAEB ; [.2DE0.0020.0002] # MEETEI MAYEK VOWEL SIGN II
+AAEC ; [.2DE1.0020.0002] # MEETEI MAYEK VOWEL SIGN UU
+AAED ; [.2DE2.0020.0002] # MEETEI MAYEK VOWEL SIGN AAI
+AAEE ; [.2DE3.0020.0002] # MEETEI MAYEK VOWEL SIGN AU
+AAEF ; [.2DE4.0020.0002] # MEETEI MAYEK VOWEL SIGN AAU
+AAF5 ; [.2DE5.0020.0002] # MEETEI MAYEK VOWEL SIGN VISARGA
+ABDB ; [.2DE6.0020.0002] # MEETEI MAYEK LETTER KOK LONSUM
+ABDC ; [.2DE7.0020.0002] # MEETEI MAYEK LETTER LAI LONSUM
+ABDD ; [.2DE8.0020.0002] # MEETEI MAYEK LETTER MIT LONSUM
+ABDE ; [.2DE9.0020.0002] # MEETEI MAYEK LETTER PA LONSUM
+ABDF ; [.2DEA.0020.0002] # MEETEI MAYEK LETTER NA LONSUM
+ABE0 ; [.2DEB.0020.0002] # MEETEI MAYEK LETTER TIL LONSUM
+ABE1 ; [.2DEC.0020.0002] # MEETEI MAYEK LETTER NGOU LONSUM
+ABE2 ; [.2DED.0020.0002] # MEETEI MAYEK LETTER I LONSUM
+ABED ; [.2DEE.0020.0002] # MEETEI MAYEK APUN IYEK
+AAF6 ; [.2DEF.0020.0002] # MEETEI MAYEK VIRAMA
+A800 ; [.2DF0.0020.0002] # SYLOTI NAGRI LETTER A
+A801 ; [.2DF1.0020.0002] # SYLOTI NAGRI LETTER I
+A802 ; [.2DF2.0020.0002] # SYLOTI NAGRI SIGN DVISVARA
+A803 ; [.2DF3.0020.0002] # SYLOTI NAGRI LETTER U
+A804 ; [.2DF4.0020.0002] # SYLOTI NAGRI LETTER E
+A805 ; [.2DF5.0020.0002] # SYLOTI NAGRI LETTER O
+A806 ; [.2DF6.0020.0002] # SYLOTI NAGRI SIGN HASANTA
+A82C ; [.2DF7.0020.0002] # SYLOTI NAGRI SIGN ALTERNATE HASANTA
+A807 ; [.2DF8.0020.0002] # SYLOTI NAGRI LETTER KO
+A808 ; [.2DF9.0020.0002] # SYLOTI NAGRI LETTER KHO
+A809 ; [.2DFA.0020.0002] # SYLOTI NAGRI LETTER GO
+A80A ; [.2DFB.0020.0002] # SYLOTI NAGRI LETTER GHO
+A80C ; [.2DFC.0020.0002] # SYLOTI NAGRI LETTER CO
+A80D ; [.2DFD.0020.0002] # SYLOTI NAGRI LETTER CHO
+A80E ; [.2DFE.0020.0002] # SYLOTI NAGRI LETTER JO
+A80F ; [.2DFF.0020.0002] # SYLOTI NAGRI LETTER JHO
+A810 ; [.2E00.0020.0002] # SYLOTI NAGRI LETTER TTO
+A811 ; [.2E01.0020.0002] # SYLOTI NAGRI LETTER TTHO
+A812 ; [.2E02.0020.0002] # SYLOTI NAGRI LETTER DDO
+A813 ; [.2E03.0020.0002] # SYLOTI NAGRI LETTER DDHO
+A814 ; [.2E04.0020.0002] # SYLOTI NAGRI LETTER TO
+A815 ; [.2E05.0020.0002] # SYLOTI NAGRI LETTER THO
+A816 ; [.2E06.0020.0002] # SYLOTI NAGRI LETTER DO
+A817 ; [.2E07.0020.0002] # SYLOTI NAGRI LETTER DHO
+A818 ; [.2E08.0020.0002] # SYLOTI NAGRI LETTER NO
+A819 ; [.2E09.0020.0002] # SYLOTI NAGRI LETTER PO
+A81A ; [.2E0A.0020.0002] # SYLOTI NAGRI LETTER PHO
+A81B ; [.2E0B.0020.0002] # SYLOTI NAGRI LETTER BO
+A81C ; [.2E0C.0020.0002] # SYLOTI NAGRI LETTER BHO
+A81D ; [.2E0D.0020.0002] # SYLOTI NAGRI LETTER MO
+A81E ; [.2E0E.0020.0002] # SYLOTI NAGRI LETTER RO
+A81F ; [.2E0F.0020.0002] # SYLOTI NAGRI LETTER LO
+A820 ; [.2E10.0020.0002] # SYLOTI NAGRI LETTER RRO
+A821 ; [.2E11.0020.0002] # SYLOTI NAGRI LETTER SO
+A822 ; [.2E12.0020.0002] # SYLOTI NAGRI LETTER HO
+A823 ; [.2E13.0020.0002] # SYLOTI NAGRI VOWEL SIGN A
+A824 ; [.2E14.0020.0002] # SYLOTI NAGRI VOWEL SIGN I
+A825 ; [.2E15.0020.0002] # SYLOTI NAGRI VOWEL SIGN U
+A826 ; [.2E16.0020.0002] # SYLOTI NAGRI VOWEL SIGN E
+A827 ; [.2E17.0020.0002] # SYLOTI NAGRI VOWEL SIGN OO
+A882 ; [.2E18.0020.0002] # SAURASHTRA LETTER A
+A883 ; [.2E19.0020.0002] # SAURASHTRA LETTER AA
+A884 ; [.2E1A.0020.0002] # SAURASHTRA LETTER I
+A885 ; [.2E1B.0020.0002] # SAURASHTRA LETTER II
+A886 ; [.2E1C.0020.0002] # SAURASHTRA LETTER U
+A887 ; [.2E1D.0020.0002] # SAURASHTRA LETTER UU
+A888 ; [.2E1E.0020.0002] # SAURASHTRA LETTER VOCALIC R
+A889 ; [.2E1F.0020.0002] # SAURASHTRA LETTER VOCALIC RR
+A88A ; [.2E20.0020.0002] # SAURASHTRA LETTER VOCALIC L
+A88B ; [.2E21.0020.0002] # SAURASHTRA LETTER VOCALIC LL
+A88C ; [.2E22.0020.0002] # SAURASHTRA LETTER E
+A88D ; [.2E23.0020.0002] # SAURASHTRA LETTER EE
+A88E ; [.2E24.0020.0002] # SAURASHTRA LETTER AI
+A88F ; [.2E25.0020.0002] # SAURASHTRA LETTER O
+A890 ; [.2E26.0020.0002] # SAURASHTRA LETTER OO
+A891 ; [.2E27.0020.0002] # SAURASHTRA LETTER AU
+A892 ; [.2E28.0020.0002] # SAURASHTRA LETTER KA
+A893 ; [.2E29.0020.0002] # SAURASHTRA LETTER KHA
+A894 ; [.2E2A.0020.0002] # SAURASHTRA LETTER GA
+A895 ; [.2E2B.0020.0002] # SAURASHTRA LETTER GHA
+A896 ; [.2E2C.0020.0002] # SAURASHTRA LETTER NGA
+A897 ; [.2E2D.0020.0002] # SAURASHTRA LETTER CA
+A898 ; [.2E2E.0020.0002] # SAURASHTRA LETTER CHA
+A899 ; [.2E2F.0020.0002] # SAURASHTRA LETTER JA
+A89A ; [.2E30.0020.0002] # SAURASHTRA LETTER JHA
+A89B ; [.2E31.0020.0002] # SAURASHTRA LETTER NYA
+A89C ; [.2E32.0020.0002] # SAURASHTRA LETTER TTA
+A89D ; [.2E33.0020.0002] # SAURASHTRA LETTER TTHA
+A89E ; [.2E34.0020.0002] # SAURASHTRA LETTER DDA
+A89F ; [.2E35.0020.0002] # SAURASHTRA LETTER DDHA
+A8A0 ; [.2E36.0020.0002] # SAURASHTRA LETTER NNA
+A8A1 ; [.2E37.0020.0002] # SAURASHTRA LETTER TA
+A8A2 ; [.2E38.0020.0002] # SAURASHTRA LETTER THA
+A8A3 ; [.2E39.0020.0002] # SAURASHTRA LETTER DA
+A8A4 ; [.2E3A.0020.0002] # SAURASHTRA LETTER DHA
+A8A5 ; [.2E3B.0020.0002] # SAURASHTRA LETTER NA
+A8A6 ; [.2E3C.0020.0002] # SAURASHTRA LETTER PA
+A8A7 ; [.2E3D.0020.0002] # SAURASHTRA LETTER PHA
+A8A8 ; [.2E3E.0020.0002] # SAURASHTRA LETTER BA
+A8A9 ; [.2E3F.0020.0002] # SAURASHTRA LETTER BHA
+A8AA ; [.2E40.0020.0002] # SAURASHTRA LETTER MA
+A8AB ; [.2E41.0020.0002] # SAURASHTRA LETTER YA
+A8AC ; [.2E42.0020.0002] # SAURASHTRA LETTER RA
+A8AD ; [.2E43.0020.0002] # SAURASHTRA LETTER LA
+A8AE ; [.2E44.0020.0002] # SAURASHTRA LETTER VA
+A8AF ; [.2E45.0020.0002] # SAURASHTRA LETTER SHA
+A8B0 ; [.2E46.0020.0002] # SAURASHTRA LETTER SSA
+A8B1 ; [.2E47.0020.0002] # SAURASHTRA LETTER SA
+A8B2 ; [.2E48.0020.0002] # SAURASHTRA LETTER HA
+A8B3 ; [.2E49.0020.0002] # SAURASHTRA LETTER LLA
+A8B4 ; [.2E4A.0020.0002] # SAURASHTRA CONSONANT SIGN HAARU
+A8B5 ; [.2E4B.0020.0002] # SAURASHTRA VOWEL SIGN AA
+A8B6 ; [.2E4C.0020.0002] # SAURASHTRA VOWEL SIGN I
+A8B7 ; [.2E4D.0020.0002] # SAURASHTRA VOWEL SIGN II
+A8B8 ; [.2E4E.0020.0002] # SAURASHTRA VOWEL SIGN U
+A8B9 ; [.2E4F.0020.0002] # SAURASHTRA VOWEL SIGN UU
+A8BA ; [.2E50.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC R
+A8BB ; [.2E51.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC RR
+A8BC ; [.2E52.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC L
+A8BD ; [.2E53.0020.0002] # SAURASHTRA VOWEL SIGN VOCALIC LL
+A8BE ; [.2E54.0020.0002] # SAURASHTRA VOWEL SIGN E
+A8BF ; [.2E55.0020.0002] # SAURASHTRA VOWEL SIGN EE
+A8C0 ; [.2E56.0020.0002] # SAURASHTRA VOWEL SIGN AI
+A8C1 ; [.2E57.0020.0002] # SAURASHTRA VOWEL SIGN O
+A8C2 ; [.2E58.0020.0002] # SAURASHTRA VOWEL SIGN OO
+A8C3 ; [.2E59.0020.0002] # SAURASHTRA VOWEL SIGN AU
+A8C4 ; [.2E5A.0020.0002] # SAURASHTRA SIGN VIRAMA
+11083 ; [.2E5B.0020.0002] # KAITHI LETTER A
+11084 ; [.2E5C.0020.0002] # KAITHI LETTER AA
+11085 ; [.2E5D.0020.0002] # KAITHI LETTER I
+11086 ; [.2E5E.0020.0002] # KAITHI LETTER II
+11087 ; [.2E5F.0020.0002] # KAITHI LETTER U
+11088 ; [.2E60.0020.0002] # KAITHI LETTER UU
+11089 ; [.2E61.0020.0002] # KAITHI LETTER E
+1108A ; [.2E62.0020.0002] # KAITHI LETTER AI
+1108B ; [.2E63.0020.0002] # KAITHI LETTER O
+1108C ; [.2E64.0020.0002] # KAITHI LETTER AU
+1108D ; [.2E65.0020.0002] # KAITHI LETTER KA
+1108E ; [.2E66.0020.0002] # KAITHI LETTER KHA
+1108F ; [.2E67.0020.0002] # KAITHI LETTER GA
+11090 ; [.2E68.0020.0002] # KAITHI LETTER GHA
+11091 ; [.2E69.0020.0002] # KAITHI LETTER NGA
+11092 ; [.2E6A.0020.0002] # KAITHI LETTER CA
+11093 ; [.2E6B.0020.0002] # KAITHI LETTER CHA
+11094 ; [.2E6C.0020.0002] # KAITHI LETTER JA
+11095 ; [.2E6D.0020.0002] # KAITHI LETTER JHA
+11096 ; [.2E6E.0020.0002] # KAITHI LETTER NYA
+11097 ; [.2E6F.0020.0002] # KAITHI LETTER TTA
+11098 ; [.2E70.0020.0002] # KAITHI LETTER TTHA
+11099 ; [.2E71.0020.0002] # KAITHI LETTER DDA
+1109A ; [.2E71.0020.0002][.0000.00C2.0002] # KAITHI LETTER DDDHA
+1109B ; [.2E72.0020.0002] # KAITHI LETTER DDHA
+1109C ; [.2E72.0020.0002][.0000.00C2.0002] # KAITHI LETTER RHA
+1109D ; [.2E73.0020.0002] # KAITHI LETTER NNA
+1109E ; [.2E74.0020.0002] # KAITHI LETTER TA
+1109F ; [.2E75.0020.0002] # KAITHI LETTER THA
+110A0 ; [.2E76.0020.0002] # KAITHI LETTER DA
+110A1 ; [.2E77.0020.0002] # KAITHI LETTER DHA
+110A2 ; [.2E78.0020.0002] # KAITHI LETTER NA
+110A3 ; [.2E79.0020.0002] # KAITHI LETTER PA
+110A4 ; [.2E7A.0020.0002] # KAITHI LETTER PHA
+110A5 ; [.2E7B.0020.0002] # KAITHI LETTER BA
+110AB ; [.2E7B.0020.0002][.0000.00C2.0002] # KAITHI LETTER VA
+110A6 ; [.2E7C.0020.0002] # KAITHI LETTER BHA
+110A7 ; [.2E7D.0020.0002] # KAITHI LETTER MA
+110A8 ; [.2E7E.0020.0002] # KAITHI LETTER YA
+110A9 ; [.2E7F.0020.0002] # KAITHI LETTER RA
+110AA ; [.2E80.0020.0002] # KAITHI LETTER LA
+110AC ; [.2E81.0020.0002] # KAITHI LETTER SHA
+110AD ; [.2E82.0020.0002] # KAITHI LETTER SSA
+110AE ; [.2E83.0020.0002] # KAITHI LETTER SA
+110AF ; [.2E84.0020.0002] # KAITHI LETTER HA
+110B0 ; [.2E85.0020.0002] # KAITHI VOWEL SIGN AA
+110B1 ; [.2E86.0020.0002] # KAITHI VOWEL SIGN I
+110B2 ; [.2E87.0020.0002] # KAITHI VOWEL SIGN II
+110B3 ; [.2E88.0020.0002] # KAITHI VOWEL SIGN U
+110B4 ; [.2E89.0020.0002] # KAITHI VOWEL SIGN UU
+110C2 ; [.2E8A.0020.0002] # KAITHI VOWEL SIGN VOCALIC R
+110B5 ; [.2E8B.0020.0002] # KAITHI VOWEL SIGN E
+110B6 ; [.2E8C.0020.0002] # KAITHI VOWEL SIGN AI
+110B7 ; [.2E8D.0020.0002] # KAITHI VOWEL SIGN O
+110B8 ; [.2E8E.0020.0002] # KAITHI VOWEL SIGN AU
+110B9 ; [.2E8F.0020.0002] # KAITHI SIGN VIRAMA
+11150 ; [.2E90.0020.0002] # MAHAJANI LETTER A
+11151 ; [.2E91.0020.0002] # MAHAJANI LETTER I
+11152 ; [.2E92.0020.0002] # MAHAJANI LETTER U
+11153 ; [.2E93.0020.0002] # MAHAJANI LETTER E
+11154 ; [.2E94.0020.0002] # MAHAJANI LETTER O
+11155 ; [.2E95.0020.0002] # MAHAJANI LETTER KA
+11156 ; [.2E96.0020.0002] # MAHAJANI LETTER KHA
+11157 ; [.2E97.0020.0002] # MAHAJANI LETTER GA
+11158 ; [.2E98.0020.0002] # MAHAJANI LETTER GHA
+11159 ; [.2E99.0020.0002] # MAHAJANI LETTER CA
+1115A ; [.2E9A.0020.0002] # MAHAJANI LETTER CHA
+1115B ; [.2E9B.0020.0002] # MAHAJANI LETTER JA
+1115C ; [.2E9C.0020.0002] # MAHAJANI LETTER JHA
+1115D ; [.2E9D.0020.0002] # MAHAJANI LETTER NYA
+1115E ; [.2E9E.0020.0002] # MAHAJANI LETTER TTA
+1115F ; [.2E9F.0020.0002] # MAHAJANI LETTER TTHA
+11160 ; [.2EA0.0020.0002] # MAHAJANI LETTER DDA
+11161 ; [.2EA1.0020.0002] # MAHAJANI LETTER DDHA
+11162 ; [.2EA2.0020.0002] # MAHAJANI LETTER NNA
+11163 ; [.2EA3.0020.0002] # MAHAJANI LETTER TA
+11164 ; [.2EA4.0020.0002] # MAHAJANI LETTER THA
+11165 ; [.2EA5.0020.0002] # MAHAJANI LETTER DA
+11166 ; [.2EA6.0020.0002] # MAHAJANI LETTER DHA
+11167 ; [.2EA7.0020.0002] # MAHAJANI LETTER NA
+11168 ; [.2EA8.0020.0002] # MAHAJANI LETTER PA
+11169 ; [.2EA9.0020.0002] # MAHAJANI LETTER PHA
+1116A ; [.2EAA.0020.0002] # MAHAJANI LETTER BA
+1116B ; [.2EAB.0020.0002] # MAHAJANI LETTER BHA
+1116C ; [.2EAC.0020.0002] # MAHAJANI LETTER MA
+1116D ; [.2EAD.0020.0002] # MAHAJANI LETTER RA
+1116E ; [.2EAE.0020.0002] # MAHAJANI LETTER LA
+1116F ; [.2EAF.0020.0002] # MAHAJANI LETTER VA
+11176 ; [.2EB0.0020.0002] # MAHAJANI LIGATURE SHRI
+11170 ; [.2EB1.0020.0002] # MAHAJANI LETTER SA
+11171 ; [.2EB2.0020.0002] # MAHAJANI LETTER HA
+11172 ; [.2EB3.0020.0002] # MAHAJANI LETTER RRA
+111C4 ; [.2EB4.0020.0002] # SHARADA OM
+111DA ; [.2EB5.0020.0002] # SHARADA EKAM
+11183 ; [.2EB6.0020.0002] # SHARADA LETTER A
+11184 ; [.2EB7.0020.0002] # SHARADA LETTER AA
+11185 ; [.2EB8.0020.0002] # SHARADA LETTER I
+11186 ; [.2EB9.0020.0002] # SHARADA LETTER II
+11187 ; [.2EBA.0020.0002] # SHARADA LETTER U
+11188 ; [.2EBB.0020.0002] # SHARADA LETTER UU
+11189 ; [.2EBC.0020.0002] # SHARADA LETTER VOCALIC R
+1118A ; [.2EBD.0020.0002] # SHARADA LETTER VOCALIC RR
+1118B ; [.2EBE.0020.0002] # SHARADA LETTER VOCALIC L
+1118C ; [.2EBF.0020.0002] # SHARADA LETTER VOCALIC LL
+1118D ; [.2EC0.0020.0002] # SHARADA LETTER E
+1118E ; [.2EC1.0020.0002] # SHARADA LETTER AI
+1118F ; [.2EC2.0020.0002] # SHARADA LETTER O
+11190 ; [.2EC3.0020.0002] # SHARADA LETTER AU
+11191 ; [.2EC4.0020.0002] # SHARADA LETTER KA
+11192 ; [.2EC5.0020.0002] # SHARADA LETTER KHA
+11193 ; [.2EC6.0020.0002] # SHARADA LETTER GA
+11194 ; [.2EC7.0020.0002] # SHARADA LETTER GHA
+11195 ; [.2EC8.0020.0002] # SHARADA LETTER NGA
+11196 ; [.2EC9.0020.0002] # SHARADA LETTER CA
+11197 ; [.2ECA.0020.0002] # SHARADA LETTER CHA
+11198 ; [.2ECB.0020.0002] # SHARADA LETTER JA
+11199 ; [.2ECC.0020.0002] # SHARADA LETTER JHA
+1119A ; [.2ECD.0020.0002] # SHARADA LETTER NYA
+1119B ; [.2ECE.0020.0002] # SHARADA LETTER TTA
+1119C ; [.2ECF.0020.0002] # SHARADA LETTER TTHA
+1119D ; [.2ED0.0020.0002] # SHARADA LETTER DDA
+1119E ; [.2ED1.0020.0002] # SHARADA LETTER DDHA
+1119F ; [.2ED2.0020.0002] # SHARADA LETTER NNA
+111A0 ; [.2ED3.0020.0002] # SHARADA LETTER TA
+111A1 ; [.2ED4.0020.0002] # SHARADA LETTER THA
+111A2 ; [.2ED5.0020.0002] # SHARADA LETTER DA
+111A3 ; [.2ED6.0020.0002] # SHARADA LETTER DHA
+111A4 ; [.2ED7.0020.0002] # SHARADA LETTER NA
+111A5 ; [.2ED8.0020.0002] # SHARADA LETTER PA
+111A6 ; [.2ED9.0020.0002] # SHARADA LETTER PHA
+111A7 ; [.2EDA.0020.0002] # SHARADA LETTER BA
+111A8 ; [.2EDB.0020.0002] # SHARADA LETTER BHA
+111A9 ; [.2EDC.0020.0002] # SHARADA LETTER MA
+111AA ; [.2EDD.0020.0002] # SHARADA LETTER YA
+111AB ; [.2EDE.0020.0002] # SHARADA LETTER RA
+111AC ; [.2EDF.0020.0002] # SHARADA LETTER LA
+111AD ; [.2EE0.0020.0002] # SHARADA LETTER LLA
+111AE ; [.2EE1.0020.0002] # SHARADA LETTER VA
+111AF ; [.2EE2.0020.0002] # SHARADA LETTER SHA
+111B0 ; [.2EE3.0020.0002] # SHARADA LETTER SSA
+111B1 ; [.2EE4.0020.0002] # SHARADA LETTER SA
+111B2 ; [.2EE5.0020.0002] # SHARADA LETTER HA
+111C1 ; [.2EE6.0020.0002] # SHARADA SIGN AVAGRAHA
+111C2 ; [.2EE7.0020.0002] # SHARADA SIGN JIHVAMULIYA
+111C3 ; [.2EE8.0020.0002] # SHARADA SIGN UPADHMANIYA
+111DC ; [.2EE9.0020.0002] # SHARADA HEADSTROKE
+111B3 ; [.2EEA.0020.0002] # SHARADA VOWEL SIGN AA
+111B4 ; [.2EEB.0020.0002] # SHARADA VOWEL SIGN I
+111B5 ; [.2EEC.0020.0002] # SHARADA VOWEL SIGN II
+111B6 ; [.2EED.0020.0002] # SHARADA VOWEL SIGN U
+111B7 ; [.2EEE.0020.0002] # SHARADA VOWEL SIGN UU
+111B8 ; [.2EEF.0020.0002] # SHARADA VOWEL SIGN VOCALIC R
+111B9 ; [.2EF0.0020.0002] # SHARADA VOWEL SIGN VOCALIC RR
+111BA ; [.2EF1.0020.0002] # SHARADA VOWEL SIGN VOCALIC L
+111BB ; [.2EF2.0020.0002] # SHARADA VOWEL SIGN VOCALIC LL
+111BC ; [.2EF3.0020.0002] # SHARADA VOWEL SIGN E
+111CE ; [.2EF4.0020.0002] # SHARADA VOWEL SIGN PRISHTHAMATRA E
+111BD ; [.2EF5.0020.0002] # SHARADA VOWEL SIGN AI
+111BE ; [.2EF6.0020.0002] # SHARADA VOWEL SIGN O
+111BF ; [.2EF7.0020.0002] # SHARADA VOWEL SIGN AU
+111C0 ; [.2EF8.0020.0002] # SHARADA SIGN VIRAMA
+11200 ; [.2EF9.0020.0002] # KHOJKI LETTER A
+11201 ; [.2EFA.0020.0002] # KHOJKI LETTER AA
+11202 ; [.2EFB.0020.0002] # KHOJKI LETTER I
+11203 ; [.2EFC.0020.0002] # KHOJKI LETTER U
+11204 ; [.2EFD.0020.0002] # KHOJKI LETTER E
+11205 ; [.2EFE.0020.0002] # KHOJKI LETTER AI
+11206 ; [.2EFF.0020.0002] # KHOJKI LETTER O
+11207 ; [.2F00.0020.0002] # KHOJKI LETTER AU
+11208 ; [.2F01.0020.0002] # KHOJKI LETTER KA
+11209 ; [.2F02.0020.0002] # KHOJKI LETTER KHA
+1120A ; [.2F03.0020.0002] # KHOJKI LETTER GA
+1120B ; [.2F04.0020.0002] # KHOJKI LETTER GGA
+1120C ; [.2F05.0020.0002] # KHOJKI LETTER GHA
+1120D ; [.2F06.0020.0002] # KHOJKI LETTER NGA
+1120E ; [.2F07.0020.0002] # KHOJKI LETTER CA
+1120F ; [.2F08.0020.0002] # KHOJKI LETTER CHA
+11210 ; [.2F09.0020.0002] # KHOJKI LETTER JA
+11211 ; [.2F0A.0020.0002] # KHOJKI LETTER JJA
+11213 ; [.2F0B.0020.0002] # KHOJKI LETTER NYA
+11214 ; [.2F0C.0020.0002] # KHOJKI LETTER TTA
+11215 ; [.2F0D.0020.0002] # KHOJKI LETTER TTHA
+11216 ; [.2F0E.0020.0002] # KHOJKI LETTER DDA
+11217 ; [.2F0F.0020.0002] # KHOJKI LETTER DDHA
+11218 ; [.2F10.0020.0002] # KHOJKI LETTER NNA
+11219 ; [.2F11.0020.0002] # KHOJKI LETTER TA
+1121A ; [.2F12.0020.0002] # KHOJKI LETTER THA
+1121B ; [.2F13.0020.0002] # KHOJKI LETTER DA
+1121C ; [.2F14.0020.0002] # KHOJKI LETTER DDDA
+1121D ; [.2F15.0020.0002] # KHOJKI LETTER DHA
+1121E ; [.2F16.0020.0002] # KHOJKI LETTER NA
+1121F ; [.2F17.0020.0002] # KHOJKI LETTER PA
+11220 ; [.2F18.0020.0002] # KHOJKI LETTER PHA
+11221 ; [.2F19.0020.0002] # KHOJKI LETTER BA
+11222 ; [.2F1A.0020.0002] # KHOJKI LETTER BBA
+11223 ; [.2F1B.0020.0002] # KHOJKI LETTER BHA
+11224 ; [.2F1C.0020.0002] # KHOJKI LETTER MA
+11225 ; [.2F1D.0020.0002] # KHOJKI LETTER YA
+11226 ; [.2F1E.0020.0002] # KHOJKI LETTER RA
+11227 ; [.2F1F.0020.0002] # KHOJKI LETTER LA
+11228 ; [.2F20.0020.0002] # KHOJKI LETTER VA
+11229 ; [.2F21.0020.0002] # KHOJKI LETTER SA
+1122A ; [.2F22.0020.0002] # KHOJKI LETTER HA
+1122B ; [.2F23.0020.0002] # KHOJKI LETTER LLA
+1122C ; [.2F24.0020.0002] # KHOJKI VOWEL SIGN AA
+1122D ; [.2F25.0020.0002] # KHOJKI VOWEL SIGN I
+1122E ; [.2F26.0020.0002] # KHOJKI VOWEL SIGN II
+1122F ; [.2F27.0020.0002] # KHOJKI VOWEL SIGN U
+11230 ; [.2F28.0020.0002] # KHOJKI VOWEL SIGN E
+11231 ; [.2F29.0020.0002] # KHOJKI VOWEL SIGN AI
+11232 ; [.2F2A.0020.0002] # KHOJKI VOWEL SIGN O
+11233 ; [.2F2B.0020.0002] # KHOJKI VOWEL SIGN AU
+11235 ; [.2F2C.0020.0002] # KHOJKI SIGN VIRAMA
+112B0 ; [.2F2D.0020.0002] # KHUDAWADI LETTER A
+112B1 ; [.2F2E.0020.0002] # KHUDAWADI LETTER AA
+112B2 ; [.2F2F.0020.0002] # KHUDAWADI LETTER I
+112B3 ; [.2F30.0020.0002] # KHUDAWADI LETTER II
+112B4 ; [.2F31.0020.0002] # KHUDAWADI LETTER U
+112B5 ; [.2F32.0020.0002] # KHUDAWADI LETTER UU
+112B6 ; [.2F33.0020.0002] # KHUDAWADI LETTER E
+112B7 ; [.2F34.0020.0002] # KHUDAWADI LETTER AI
+112B8 ; [.2F35.0020.0002] # KHUDAWADI LETTER O
+112B9 ; [.2F36.0020.0002] # KHUDAWADI LETTER AU
+112BA ; [.2F37.0020.0002] # KHUDAWADI LETTER KA
+112BB ; [.2F38.0020.0002] # KHUDAWADI LETTER KHA
+112BC ; [.2F39.0020.0002] # KHUDAWADI LETTER GA
+112BD ; [.2F3A.0020.0002] # KHUDAWADI LETTER GGA
+112BE ; [.2F3B.0020.0002] # KHUDAWADI LETTER GHA
+112BF ; [.2F3C.0020.0002] # KHUDAWADI LETTER NGA
+112C0 ; [.2F3D.0020.0002] # KHUDAWADI LETTER CA
+112C1 ; [.2F3E.0020.0002] # KHUDAWADI LETTER CHA
+112C2 ; [.2F3F.0020.0002] # KHUDAWADI LETTER JA
+112C3 ; [.2F40.0020.0002] # KHUDAWADI LETTER JJA
+112C4 ; [.2F41.0020.0002] # KHUDAWADI LETTER JHA
+112C5 ; [.2F42.0020.0002] # KHUDAWADI LETTER NYA
+112C6 ; [.2F43.0020.0002] # KHUDAWADI LETTER TTA
+112C7 ; [.2F44.0020.0002] # KHUDAWADI LETTER TTHA
+112C8 ; [.2F45.0020.0002] # KHUDAWADI LETTER DDA
+112C9 ; [.2F46.0020.0002] # KHUDAWADI LETTER DDDA
+112CA ; [.2F47.0020.0002] # KHUDAWADI LETTER RRA
+112CB ; [.2F48.0020.0002] # KHUDAWADI LETTER DDHA
+112CC ; [.2F49.0020.0002] # KHUDAWADI LETTER NNA
+112CD ; [.2F4A.0020.0002] # KHUDAWADI LETTER TA
+112CE ; [.2F4B.0020.0002] # KHUDAWADI LETTER THA
+112CF ; [.2F4C.0020.0002] # KHUDAWADI LETTER DA
+112D0 ; [.2F4D.0020.0002] # KHUDAWADI LETTER DHA
+112D1 ; [.2F4E.0020.0002] # KHUDAWADI LETTER NA
+112D2 ; [.2F4F.0020.0002] # KHUDAWADI LETTER PA
+112D3 ; [.2F50.0020.0002] # KHUDAWADI LETTER PHA
+112D4 ; [.2F51.0020.0002] # KHUDAWADI LETTER BA
+112D5 ; [.2F52.0020.0002] # KHUDAWADI LETTER BBA
+112D6 ; [.2F53.0020.0002] # KHUDAWADI LETTER BHA
+112D7 ; [.2F54.0020.0002] # KHUDAWADI LETTER MA
+112D8 ; [.2F55.0020.0002] # KHUDAWADI LETTER YA
+112D9 ; [.2F56.0020.0002] # KHUDAWADI LETTER RA
+112DA ; [.2F57.0020.0002] # KHUDAWADI LETTER LA
+112DB ; [.2F58.0020.0002] # KHUDAWADI LETTER VA
+112DC ; [.2F59.0020.0002] # KHUDAWADI LETTER SHA
+112DD ; [.2F5A.0020.0002] # KHUDAWADI LETTER SA
+112DE ; [.2F5B.0020.0002] # KHUDAWADI LETTER HA
+112E0 ; [.2F5C.0020.0002] # KHUDAWADI VOWEL SIGN AA
+112E1 ; [.2F5D.0020.0002] # KHUDAWADI VOWEL SIGN I
+112E2 ; [.2F5E.0020.0002] # KHUDAWADI VOWEL SIGN II
+112E3 ; [.2F5F.0020.0002] # KHUDAWADI VOWEL SIGN U
+112E4 ; [.2F60.0020.0002] # KHUDAWADI VOWEL SIGN UU
+112E5 ; [.2F61.0020.0002] # KHUDAWADI VOWEL SIGN E
+112E6 ; [.2F62.0020.0002] # KHUDAWADI VOWEL SIGN AI
+112E7 ; [.2F63.0020.0002] # KHUDAWADI VOWEL SIGN O
+112E8 ; [.2F64.0020.0002] # KHUDAWADI VOWEL SIGN AU
+112EA ; [.2F65.0020.0002] # KHUDAWADI SIGN VIRAMA
+11280 ; [.2F66.0020.0002] # MULTANI LETTER A
+11281 ; [.2F67.0020.0002] # MULTANI LETTER I
+11282 ; [.2F68.0020.0002] # MULTANI LETTER U
+11283 ; [.2F69.0020.0002] # MULTANI LETTER E
+112A5 ; [.2F6A.0020.0002] # MULTANI LETTER SA
+112A6 ; [.2F6B.0020.0002] # MULTANI LETTER HA
+11284 ; [.2F6C.0020.0002] # MULTANI LETTER KA
+11285 ; [.2F6D.0020.0002] # MULTANI LETTER KHA
+11286 ; [.2F6E.0020.0002] # MULTANI LETTER GA
+11288 ; [.2F6F.0020.0002] # MULTANI LETTER GHA
+1128A ; [.2F70.0020.0002] # MULTANI LETTER CA
+1128B ; [.2F71.0020.0002] # MULTANI LETTER CHA
+1128C ; [.2F72.0020.0002] # MULTANI LETTER JA
+1128D ; [.2F73.0020.0002] # MULTANI LETTER JJA
+1128F ; [.2F74.0020.0002] # MULTANI LETTER NYA
+11290 ; [.2F75.0020.0002] # MULTANI LETTER TTA
+11291 ; [.2F76.0020.0002] # MULTANI LETTER TTHA
+11292 ; [.2F77.0020.0002] # MULTANI LETTER DDA
+11293 ; [.2F78.0020.0002] # MULTANI LETTER DDDA
+11294 ; [.2F79.0020.0002] # MULTANI LETTER DDHA
+11295 ; [.2F7A.0020.0002] # MULTANI LETTER NNA
+11296 ; [.2F7B.0020.0002] # MULTANI LETTER TA
+11297 ; [.2F7C.0020.0002] # MULTANI LETTER THA
+11298 ; [.2F7D.0020.0002] # MULTANI LETTER DA
+11299 ; [.2F7E.0020.0002] # MULTANI LETTER DHA
+1129A ; [.2F7F.0020.0002] # MULTANI LETTER NA
+1129B ; [.2F80.0020.0002] # MULTANI LETTER PA
+1129C ; [.2F81.0020.0002] # MULTANI LETTER PHA
+1129D ; [.2F82.0020.0002] # MULTANI LETTER BA
+1129F ; [.2F83.0020.0002] # MULTANI LETTER BHA
+112A0 ; [.2F84.0020.0002] # MULTANI LETTER MA
+112A1 ; [.2F85.0020.0002] # MULTANI LETTER YA
+112A2 ; [.2F86.0020.0002] # MULTANI LETTER RA
+112A3 ; [.2F87.0020.0002] # MULTANI LETTER LA
+112A4 ; [.2F88.0020.0002] # MULTANI LETTER VA
+112A7 ; [.2F89.0020.0002] # MULTANI LETTER RRA
+112A8 ; [.2F8A.0020.0002] # MULTANI LETTER RHA
+11350 ; [.2F8B.0020.0002] # GRANTHA OM
+11305 ; [.2F8C.0020.0002] # GRANTHA LETTER A
+11306 ; [.2F8D.0020.0002] # GRANTHA LETTER AA
+11307 ; [.2F8E.0020.0002] # GRANTHA LETTER I
+11308 ; [.2F8F.0020.0002] # GRANTHA LETTER II
+11309 ; [.2F90.0020.0002] # GRANTHA LETTER U
+1130A ; [.2F91.0020.0002] # GRANTHA LETTER UU
+1130B ; [.2F92.0020.0002] # GRANTHA LETTER VOCALIC R
+11360 ; [.2F93.0020.0002] # GRANTHA LETTER VOCALIC RR
+1130C ; [.2F94.0020.0002] # GRANTHA LETTER VOCALIC L
+11361 ; [.2F95.0020.0002] # GRANTHA LETTER VOCALIC LL
+1130F ; [.2F96.0020.0002] # GRANTHA LETTER EE
+11310 ; [.2F97.0020.0002] # GRANTHA LETTER AI
+11313 ; [.2F98.0020.0002] # GRANTHA LETTER OO
+11314 ; [.2F99.0020.0002] # GRANTHA LETTER AU
+11315 ; [.2F9A.0020.0002] # GRANTHA LETTER KA
+11316 ; [.2F9B.0020.0002] # GRANTHA LETTER KHA
+11317 ; [.2F9C.0020.0002] # GRANTHA LETTER GA
+11318 ; [.2F9D.0020.0002] # GRANTHA LETTER GHA
+11319 ; [.2F9E.0020.0002] # GRANTHA LETTER NGA
+1131A ; [.2F9F.0020.0002] # GRANTHA LETTER CA
+1131B ; [.2FA0.0020.0002] # GRANTHA LETTER CHA
+1131C ; [.2FA1.0020.0002] # GRANTHA LETTER JA
+1131D ; [.2FA2.0020.0002] # GRANTHA LETTER JHA
+1131E ; [.2FA3.0020.0002] # GRANTHA LETTER NYA
+1131F ; [.2FA4.0020.0002] # GRANTHA LETTER TTA
+11320 ; [.2FA5.0020.0002] # GRANTHA LETTER TTHA
+11321 ; [.2FA6.0020.0002] # GRANTHA LETTER DDA
+11322 ; [.2FA7.0020.0002] # GRANTHA LETTER DDHA
+11323 ; [.2FA8.0020.0002] # GRANTHA LETTER NNA
+11324 ; [.2FA9.0020.0002] # GRANTHA LETTER TA
+11325 ; [.2FAA.0020.0002] # GRANTHA LETTER THA
+11326 ; [.2FAB.0020.0002] # GRANTHA LETTER DA
+11327 ; [.2FAC.0020.0002] # GRANTHA LETTER DHA
+11328 ; [.2FAD.0020.0002] # GRANTHA LETTER NA
+1132A ; [.2FAE.0020.0002] # GRANTHA LETTER PA
+1132B ; [.2FAF.0020.0002] # GRANTHA LETTER PHA
+1132C ; [.2FB0.0020.0002] # GRANTHA LETTER BA
+1132D ; [.2FB1.0020.0002] # GRANTHA LETTER BHA
+1132E ; [.2FB2.0020.0002] # GRANTHA LETTER MA
+1132F ; [.2FB3.0020.0002] # GRANTHA LETTER YA
+11330 ; [.2FB4.0020.0002] # GRANTHA LETTER RA
+11332 ; [.2FB5.0020.0002] # GRANTHA LETTER LA
+11333 ; [.2FB6.0020.0002] # GRANTHA LETTER LLA
+11335 ; [.2FB7.0020.0002] # GRANTHA LETTER VA
+11336 ; [.2FB8.0020.0002] # GRANTHA LETTER SHA
+11337 ; [.2FB9.0020.0002] # GRANTHA LETTER SSA
+11338 ; [.2FBA.0020.0002] # GRANTHA LETTER SA
+11339 ; [.2FBB.0020.0002] # GRANTHA LETTER HA
+1133D ; [.2FBC.0020.0002] # GRANTHA SIGN AVAGRAHA
+1135E ; [.2FBD.0020.0002] # GRANTHA LETTER VEDIC ANUSVARA
+1135F ; [.2FBE.0020.0002] # GRANTHA LETTER VEDIC DOUBLE ANUSVARA
+1133E ; [.2FBF.0020.0002] # GRANTHA VOWEL SIGN AA
+1133F ; [.2FC0.0020.0002] # GRANTHA VOWEL SIGN I
+11340 ; [.2FC1.0020.0002] # GRANTHA VOWEL SIGN II
+11341 ; [.2FC2.0020.0002] # GRANTHA VOWEL SIGN U
+11342 ; [.2FC3.0020.0002] # GRANTHA VOWEL SIGN UU
+11343 ; [.2FC4.0020.0002] # GRANTHA VOWEL SIGN VOCALIC R
+11344 ; [.2FC5.0020.0002] # GRANTHA VOWEL SIGN VOCALIC RR
+11362 ; [.2FC6.0020.0002] # GRANTHA VOWEL SIGN VOCALIC L
+11363 ; [.2FC7.0020.0002] # GRANTHA VOWEL SIGN VOCALIC LL
+11347 ; [.2FC8.0020.0002] # GRANTHA VOWEL SIGN EE
+11348 ; [.2FC9.0020.0002] # GRANTHA VOWEL SIGN AI
+1134B ; [.2FCA.0020.0002] # GRANTHA VOWEL SIGN OO
+11347 1133E ; [.2FCA.0020.0002] # GRANTHA VOWEL SIGN OO
+1134C ; [.2FCB.0020.0002] # GRANTHA VOWEL SIGN AU
+11347 11357 ; [.2FCB.0020.0002] # GRANTHA VOWEL SIGN AU
+1134D ; [.2FCC.0020.0002] # GRANTHA SIGN VIRAMA
+11357 ; [.2FCD.0020.0002] # GRANTHA AU LENGTH MARK
+1135D ; [.2FCE.0020.0002] # GRANTHA SIGN PLUTA
+11449 ; [.2FCF.0020.0002] # NEWA OM
+1144A ; [.2FD0.0020.0002] # NEWA SIDDHI
+11400 ; [.2FD1.0020.0002] # NEWA LETTER A
+11401 ; [.2FD2.0020.0002] # NEWA LETTER AA
+11402 ; [.2FD3.0020.0002] # NEWA LETTER I
+11403 ; [.2FD4.0020.0002] # NEWA LETTER II
+11404 ; [.2FD5.0020.0002] # NEWA LETTER U
+11405 ; [.2FD6.0020.0002] # NEWA LETTER UU
+11406 ; [.2FD7.0020.0002] # NEWA LETTER VOCALIC R
+11407 ; [.2FD8.0020.0002] # NEWA LETTER VOCALIC RR
+11408 ; [.2FD9.0020.0002] # NEWA LETTER VOCALIC L
+11409 ; [.2FDA.0020.0002] # NEWA LETTER VOCALIC LL
+1140A ; [.2FDB.0020.0002] # NEWA LETTER E
+1140B ; [.2FDC.0020.0002] # NEWA LETTER AI
+1140C ; [.2FDD.0020.0002] # NEWA LETTER O
+1140D ; [.2FDE.0020.0002] # NEWA LETTER AU
+1140E ; [.2FDF.0020.0002] # NEWA LETTER KA
+1140F ; [.2FE0.0020.0002] # NEWA LETTER KHA
+11410 ; [.2FE1.0020.0002] # NEWA LETTER GA
+11411 ; [.2FE2.0020.0002] # NEWA LETTER GHA
+11412 ; [.2FE3.0020.0002] # NEWA LETTER NGA
+11413 ; [.2FE4.0020.0002] # NEWA LETTER NGHA
+11414 ; [.2FE5.0020.0002] # NEWA LETTER CA
+11415 ; [.2FE6.0020.0002] # NEWA LETTER CHA
+11416 ; [.2FE7.0020.0002] # NEWA LETTER JA
+11417 ; [.2FE8.0020.0002] # NEWA LETTER JHA
+11418 ; [.2FE9.0020.0002] # NEWA LETTER NYA
+11419 ; [.2FEA.0020.0002] # NEWA LETTER NYHA
+1141A ; [.2FEB.0020.0002] # NEWA LETTER TTA
+1141B ; [.2FEC.0020.0002] # NEWA LETTER TTHA
+1141C ; [.2FED.0020.0002] # NEWA LETTER DDA
+1141D ; [.2FEE.0020.0002] # NEWA LETTER DDHA
+1141E ; [.2FEF.0020.0002] # NEWA LETTER NNA
+1141F ; [.2FF0.0020.0002] # NEWA LETTER TA
+11420 ; [.2FF1.0020.0002] # NEWA LETTER THA
+11421 ; [.2FF2.0020.0002] # NEWA LETTER DA
+11422 ; [.2FF3.0020.0002] # NEWA LETTER DHA
+11423 ; [.2FF4.0020.0002] # NEWA LETTER NA
+11424 ; [.2FF5.0020.0002] # NEWA LETTER NHA
+11425 ; [.2FF6.0020.0002] # NEWA LETTER PA
+11426 ; [.2FF7.0020.0002] # NEWA LETTER PHA
+11427 ; [.2FF8.0020.0002] # NEWA LETTER BA
+11428 ; [.2FF9.0020.0002] # NEWA LETTER BHA
+11429 ; [.2FFA.0020.0002] # NEWA LETTER MA
+1142A ; [.2FFB.0020.0002] # NEWA LETTER MHA
+1142B ; [.2FFC.0020.0002] # NEWA LETTER YA
+1142C ; [.2FFD.0020.0002] # NEWA LETTER RA
+1142D ; [.2FFE.0020.0002] # NEWA LETTER RHA
+1142E ; [.2FFF.0020.0002] # NEWA LETTER LA
+1142F ; [.3000.0020.0002] # NEWA LETTER LHA
+11430 ; [.3001.0020.0002] # NEWA LETTER WA
+11431 ; [.3002.0020.0002] # NEWA LETTER SHA
+11432 ; [.3003.0020.0002] # NEWA LETTER SSA
+11433 ; [.3004.0020.0002] # NEWA LETTER SA
+11434 ; [.3005.0020.0002] # NEWA LETTER HA
+11447 ; [.3006.0020.0002] # NEWA SIGN AVAGRAHA
+11460 ; [.3007.0020.0002] # NEWA SIGN JIHVAMULIYA
+11461 ; [.3008.0020.0002] # NEWA SIGN UPADHMANIYA
+11448 ; [.3009.0020.0002] # NEWA SIGN FINAL ANUSVARA
+1145F ; [.300A.0020.0002] # NEWA LETTER VEDIC ANUSVARA
+11435 ; [.300B.0020.0002] # NEWA VOWEL SIGN AA
+11436 ; [.300C.0020.0002] # NEWA VOWEL SIGN I
+11437 ; [.300D.0020.0002] # NEWA VOWEL SIGN II
+11438 ; [.300E.0020.0002] # NEWA VOWEL SIGN U
+11439 ; [.300F.0020.0002] # NEWA VOWEL SIGN UU
+1143A ; [.3010.0020.0002] # NEWA VOWEL SIGN VOCALIC R
+1143B ; [.3011.0020.0002] # NEWA VOWEL SIGN VOCALIC RR
+1143C ; [.3012.0020.0002] # NEWA VOWEL SIGN VOCALIC L
+1143D ; [.3013.0020.0002] # NEWA VOWEL SIGN VOCALIC LL
+1143E ; [.3014.0020.0002] # NEWA VOWEL SIGN E
+1143F ; [.3015.0020.0002] # NEWA VOWEL SIGN AI
+11440 ; [.3016.0020.0002] # NEWA VOWEL SIGN O
+11441 ; [.3017.0020.0002] # NEWA VOWEL SIGN AU
+11442 ; [.3018.0020.0002] # NEWA SIGN VIRAMA
+114C7 ; [.3019.0020.0002] # TIRHUTA OM
+11480 ; [.301A.0020.0002] # TIRHUTA ANJI
+11481 ; [.301B.0020.0002] # TIRHUTA LETTER A
+11482 ; [.301C.0020.0002] # TIRHUTA LETTER AA
+11483 ; [.301D.0020.0002] # TIRHUTA LETTER I
+11484 ; [.301E.0020.0002] # TIRHUTA LETTER II
+11485 ; [.301F.0020.0002] # TIRHUTA LETTER U
+11486 ; [.3020.0020.0002] # TIRHUTA LETTER UU
+11487 ; [.3021.0020.0002] # TIRHUTA LETTER VOCALIC R
+11488 ; [.3022.0020.0002] # TIRHUTA LETTER VOCALIC RR
+11489 ; [.3023.0020.0002] # TIRHUTA LETTER VOCALIC L
+1148A ; [.3024.0020.0002] # TIRHUTA LETTER VOCALIC LL
+1148B ; [.3025.0020.0002] # TIRHUTA LETTER E
+1148C ; [.3026.0020.0002] # TIRHUTA LETTER AI
+1148D ; [.3027.0020.0002] # TIRHUTA LETTER O
+1148E ; [.3028.0020.0002] # TIRHUTA LETTER AU
+1148F ; [.3029.0020.0002] # TIRHUTA LETTER KA
+11490 ; [.302A.0020.0002] # TIRHUTA LETTER KHA
+11491 ; [.302B.0020.0002] # TIRHUTA LETTER GA
+11492 ; [.302C.0020.0002] # TIRHUTA LETTER GHA
+11493 ; [.302D.0020.0002] # TIRHUTA LETTER NGA
+11494 ; [.302E.0020.0002] # TIRHUTA LETTER CA
+11495 ; [.302F.0020.0002] # TIRHUTA LETTER CHA
+11496 ; [.3030.0020.0002] # TIRHUTA LETTER JA
+11497 ; [.3031.0020.0002] # TIRHUTA LETTER JHA
+11498 ; [.3032.0020.0002] # TIRHUTA LETTER NYA
+11499 ; [.3033.0020.0002] # TIRHUTA LETTER TTA
+1149A ; [.3034.0020.0002] # TIRHUTA LETTER TTHA
+1149B ; [.3035.0020.0002] # TIRHUTA LETTER DDA
+1149C ; [.3036.0020.0002] # TIRHUTA LETTER DDHA
+1149D ; [.3037.0020.0002] # TIRHUTA LETTER NNA
+1149E ; [.3038.0020.0002] # TIRHUTA LETTER TA
+1149F ; [.3039.0020.0002] # TIRHUTA LETTER THA
+114A0 ; [.303A.0020.0002] # TIRHUTA LETTER DA
+114A1 ; [.303B.0020.0002] # TIRHUTA LETTER DHA
+114A2 ; [.303C.0020.0002] # TIRHUTA LETTER NA
+114A3 ; [.303D.0020.0002] # TIRHUTA LETTER PA
+114A4 ; [.303E.0020.0002] # TIRHUTA LETTER PHA
+114A5 ; [.303F.0020.0002] # TIRHUTA LETTER BA
+114A6 ; [.3040.0020.0002] # TIRHUTA LETTER BHA
+114A7 ; [.3041.0020.0002] # TIRHUTA LETTER MA
+114A8 ; [.3042.0020.0002] # TIRHUTA LETTER YA
+114A9 ; [.3043.0020.0002] # TIRHUTA LETTER RA
+114AA ; [.3044.0020.0002] # TIRHUTA LETTER LA
+114AB ; [.3045.0020.0002] # TIRHUTA LETTER VA
+114AC ; [.3046.0020.0002] # TIRHUTA LETTER SHA
+114AD ; [.3047.0020.0002] # TIRHUTA LETTER SSA
+114AE ; [.3048.0020.0002] # TIRHUTA LETTER SA
+114AF ; [.3049.0020.0002] # TIRHUTA LETTER HA
+114C4 ; [.304A.0020.0002] # TIRHUTA SIGN AVAGRAHA
+114C5 ; [.304B.0020.0002] # TIRHUTA GVANG
+114B0 ; [.304C.0020.0002] # TIRHUTA VOWEL SIGN AA
+114B1 ; [.304D.0020.0002] # TIRHUTA VOWEL SIGN I
+114B2 ; [.304E.0020.0002] # TIRHUTA VOWEL SIGN II
+114B3 ; [.304F.0020.0002] # TIRHUTA VOWEL SIGN U
+114B4 ; [.3050.0020.0002] # TIRHUTA VOWEL SIGN UU
+114B5 ; [.3051.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC R
+114B6 ; [.3052.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC RR
+114B7 ; [.3053.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC L
+114B8 ; [.3054.0020.0002] # TIRHUTA VOWEL SIGN VOCALIC LL
+114B9 ; [.3055.0020.0002] # TIRHUTA VOWEL SIGN E
+114BA ; [.3056.0020.0002] # TIRHUTA VOWEL SIGN SHORT E
+114BB ; [.3057.0020.0002] # TIRHUTA VOWEL SIGN AI
+114B9 114BA ; [.3057.0020.0002] # TIRHUTA VOWEL SIGN AI
+114BC ; [.3058.0020.0002] # TIRHUTA VOWEL SIGN O
+114B9 114B0 ; [.3058.0020.0002] # TIRHUTA VOWEL SIGN O
+114BD ; [.3059.0020.0002] # TIRHUTA VOWEL SIGN SHORT O
+114BE ; [.305A.0020.0002] # TIRHUTA VOWEL SIGN AU
+114B9 114BD ; [.305A.0020.0002] # TIRHUTA VOWEL SIGN AU
+114C2 ; [.305B.0020.0002] # TIRHUTA SIGN VIRAMA
+11580 ; [.305C.0020.0002] # SIDDHAM LETTER A
+11581 ; [.305D.0020.0002] # SIDDHAM LETTER AA
+11582 ; [.305E.0020.0002] # SIDDHAM LETTER I
+115D8 ; [.305E.0020.0004][.0000.0118.0004] # SIDDHAM LETTER THREE-CIRCLE ALTERNATE I
+115D9 ; [.305E.0020.0004][.0000.0119.0004] # SIDDHAM LETTER TWO-CIRCLE ALTERNATE I
+11583 ; [.305F.0020.0002] # SIDDHAM LETTER II
+115DA ; [.305F.0020.0004][.0000.0118.0004] # SIDDHAM LETTER TWO-CIRCLE ALTERNATE II
+11584 ; [.3060.0020.0002] # SIDDHAM LETTER U
+115DB ; [.3060.0020.0004][.0000.0118.0004] # SIDDHAM LETTER ALTERNATE U
+11585 ; [.3061.0020.0002] # SIDDHAM LETTER UU
+11586 ; [.3062.0020.0002] # SIDDHAM LETTER VOCALIC R
+11587 ; [.3063.0020.0002] # SIDDHAM LETTER VOCALIC RR
+11588 ; [.3064.0020.0002] # SIDDHAM LETTER VOCALIC L
+11589 ; [.3065.0020.0002] # SIDDHAM LETTER VOCALIC LL
+1158A ; [.3066.0020.0002] # SIDDHAM LETTER E
+1158B ; [.3067.0020.0002] # SIDDHAM LETTER AI
+1158C ; [.3068.0020.0002] # SIDDHAM LETTER O
+1158D ; [.3069.0020.0002] # SIDDHAM LETTER AU
+1158E ; [.306A.0020.0002] # SIDDHAM LETTER KA
+1158F ; [.306B.0020.0002] # SIDDHAM LETTER KHA
+11590 ; [.306C.0020.0002] # SIDDHAM LETTER GA
+11591 ; [.306D.0020.0002] # SIDDHAM LETTER GHA
+11592 ; [.306E.0020.0002] # SIDDHAM LETTER NGA
+11593 ; [.306F.0020.0002] # SIDDHAM LETTER CA
+11594 ; [.3070.0020.0002] # SIDDHAM LETTER CHA
+11595 ; [.3071.0020.0002] # SIDDHAM LETTER JA
+11596 ; [.3072.0020.0002] # SIDDHAM LETTER JHA
+11597 ; [.3073.0020.0002] # SIDDHAM LETTER NYA
+11598 ; [.3074.0020.0002] # SIDDHAM LETTER TTA
+11599 ; [.3075.0020.0002] # SIDDHAM LETTER TTHA
+1159A ; [.3076.0020.0002] # SIDDHAM LETTER DDA
+1159B ; [.3077.0020.0002] # SIDDHAM LETTER DDHA
+1159C ; [.3078.0020.0002] # SIDDHAM LETTER NNA
+1159D ; [.3079.0020.0002] # SIDDHAM LETTER TA
+1159E ; [.307A.0020.0002] # SIDDHAM LETTER THA
+1159F ; [.307B.0020.0002] # SIDDHAM LETTER DA
+115A0 ; [.307C.0020.0002] # SIDDHAM LETTER DHA
+115A1 ; [.307D.0020.0002] # SIDDHAM LETTER NA
+115A2 ; [.307E.0020.0002] # SIDDHAM LETTER PA
+115A3 ; [.307F.0020.0002] # SIDDHAM LETTER PHA
+115A4 ; [.3080.0020.0002] # SIDDHAM LETTER BA
+115A5 ; [.3081.0020.0002] # SIDDHAM LETTER BHA
+115A6 ; [.3082.0020.0002] # SIDDHAM LETTER MA
+115A7 ; [.3083.0020.0002] # SIDDHAM LETTER YA
+115A8 ; [.3084.0020.0002] # SIDDHAM LETTER RA
+115A9 ; [.3085.0020.0002] # SIDDHAM LETTER LA
+115AA ; [.3086.0020.0002] # SIDDHAM LETTER VA
+115AB ; [.3087.0020.0002] # SIDDHAM LETTER SHA
+115AC ; [.3088.0020.0002] # SIDDHAM LETTER SSA
+115AD ; [.3089.0020.0002] # SIDDHAM LETTER SA
+115AE ; [.308A.0020.0002] # SIDDHAM LETTER HA
+115AF ; [.308B.0020.0002] # SIDDHAM VOWEL SIGN AA
+115B0 ; [.308C.0020.0002] # SIDDHAM VOWEL SIGN I
+115B1 ; [.308D.0020.0002] # SIDDHAM VOWEL SIGN II
+115B2 ; [.308E.0020.0002] # SIDDHAM VOWEL SIGN U
+115DC ; [.308E.0020.0004][.0000.0118.0004] # SIDDHAM VOWEL SIGN ALTERNATE U
+115B3 ; [.308F.0020.0002] # SIDDHAM VOWEL SIGN UU
+115DD ; [.308F.0020.0004][.0000.0118.0004] # SIDDHAM VOWEL SIGN ALTERNATE UU
+115B4 ; [.3090.0020.0002] # SIDDHAM VOWEL SIGN VOCALIC R
+115B5 ; [.3091.0020.0002] # SIDDHAM VOWEL SIGN VOCALIC RR
+115B8 ; [.3092.0020.0002] # SIDDHAM VOWEL SIGN E
+115B9 ; [.3093.0020.0002] # SIDDHAM VOWEL SIGN AI
+115BA ; [.3094.0020.0002] # SIDDHAM VOWEL SIGN O
+115B8 115AF ; [.3094.0020.0002] # SIDDHAM VOWEL SIGN O
+115BB ; [.3095.0020.0002] # SIDDHAM VOWEL SIGN AU
+115B9 115AF ; [.3095.0020.0002] # SIDDHAM VOWEL SIGN AU
+115BF ; [.3096.0020.0002] # SIDDHAM SIGN VIRAMA
+11600 ; [.3097.0020.0002] # MODI LETTER A
+11601 ; [.3098.0020.0002] # MODI LETTER AA
+11602 ; [.3099.0020.0002] # MODI LETTER I
+11603 ; [.309A.0020.0002] # MODI LETTER II
+11604 ; [.309B.0020.0002] # MODI LETTER U
+11605 ; [.309C.0020.0002] # MODI LETTER UU
+11606 ; [.309D.0020.0002] # MODI LETTER VOCALIC R
+11607 ; [.309E.0020.0002] # MODI LETTER VOCALIC RR
+11608 ; [.309F.0020.0002] # MODI LETTER VOCALIC L
+11609 ; [.30A0.0020.0002] # MODI LETTER VOCALIC LL
+1160A ; [.30A1.0020.0002] # MODI LETTER E
+1160B ; [.30A2.0020.0002] # MODI LETTER AI
+1160C ; [.30A3.0020.0002] # MODI LETTER O
+1160D ; [.30A4.0020.0002] # MODI LETTER AU
+1160E ; [.30A5.0020.0002] # MODI LETTER KA
+1160F ; [.30A6.0020.0002] # MODI LETTER KHA
+11610 ; [.30A7.0020.0002] # MODI LETTER GA
+11611 ; [.30A8.0020.0002] # MODI LETTER GHA
+11612 ; [.30A9.0020.0002] # MODI LETTER NGA
+11613 ; [.30AA.0020.0002] # MODI LETTER CA
+11614 ; [.30AB.0020.0002] # MODI LETTER CHA
+11615 ; [.30AC.0020.0002] # MODI LETTER JA
+11616 ; [.30AD.0020.0002] # MODI LETTER JHA
+11617 ; [.30AE.0020.0002] # MODI LETTER NYA
+11618 ; [.30AF.0020.0002] # MODI LETTER TTA
+11619 ; [.30B0.0020.0002] # MODI LETTER TTHA
+1161A ; [.30B1.0020.0002] # MODI LETTER DDA
+1161B ; [.30B2.0020.0002] # MODI LETTER DDHA
+1161C ; [.30B3.0020.0002] # MODI LETTER NNA
+1161D ; [.30B4.0020.0002] # MODI LETTER TA
+1161E ; [.30B5.0020.0002] # MODI LETTER THA
+1161F ; [.30B6.0020.0002] # MODI LETTER DA
+11620 ; [.30B7.0020.0002] # MODI LETTER DHA
+11621 ; [.30B8.0020.0002] # MODI LETTER NA
+11622 ; [.30B9.0020.0002] # MODI LETTER PA
+11623 ; [.30BA.0020.0002] # MODI LETTER PHA
+11624 ; [.30BB.0020.0002] # MODI LETTER BA
+11625 ; [.30BC.0020.0002] # MODI LETTER BHA
+11626 ; [.30BD.0020.0002] # MODI LETTER MA
+11627 ; [.30BE.0020.0002] # MODI LETTER YA
+11628 ; [.30BF.0020.0002] # MODI LETTER RA
+11629 ; [.30C0.0020.0002] # MODI LETTER LA
+1162A ; [.30C1.0020.0002] # MODI LETTER VA
+1162B ; [.30C2.0020.0002] # MODI LETTER SHA
+1162C ; [.30C3.0020.0002] # MODI LETTER SSA
+1162D ; [.30C4.0020.0002] # MODI LETTER SA
+1162E ; [.30C5.0020.0002] # MODI LETTER HA
+1162F ; [.30C6.0020.0002] # MODI LETTER LLA
+11630 ; [.30C7.0020.0002] # MODI VOWEL SIGN AA
+11631 ; [.30C8.0020.0002] # MODI VOWEL SIGN I
+11632 ; [.30C9.0020.0002] # MODI VOWEL SIGN II
+11633 ; [.30CA.0020.0002] # MODI VOWEL SIGN U
+11634 ; [.30CB.0020.0002] # MODI VOWEL SIGN UU
+11635 ; [.30CC.0020.0002] # MODI VOWEL SIGN VOCALIC R
+11636 ; [.30CD.0020.0002] # MODI VOWEL SIGN VOCALIC RR
+11637 ; [.30CE.0020.0002] # MODI VOWEL SIGN VOCALIC L
+11638 ; [.30CF.0020.0002] # MODI VOWEL SIGN VOCALIC LL
+11639 ; [.30D0.0020.0002] # MODI VOWEL SIGN E
+1163A ; [.30D1.0020.0002] # MODI VOWEL SIGN AI
+1163B ; [.30D2.0020.0002] # MODI VOWEL SIGN O
+1163C ; [.30D3.0020.0002] # MODI VOWEL SIGN AU
+1163F ; [.30D4.0020.0002] # MODI SIGN VIRAMA
+11644 ; [.30D5.0020.0002] # MODI SIGN HUVA
+11680 ; [.30D6.0020.0002] # TAKRI LETTER A
+11681 ; [.30D7.0020.0002] # TAKRI LETTER AA
+11682 ; [.30D8.0020.0002] # TAKRI LETTER I
+11683 ; [.30D9.0020.0002] # TAKRI LETTER II
+11684 ; [.30DA.0020.0002] # TAKRI LETTER U
+11685 ; [.30DB.0020.0002] # TAKRI LETTER UU
+11686 ; [.30DC.0020.0002] # TAKRI LETTER E
+11687 ; [.30DD.0020.0002] # TAKRI LETTER AI
+11688 ; [.30DE.0020.0002] # TAKRI LETTER O
+11689 ; [.30DF.0020.0002] # TAKRI LETTER AU
+116A8 ; [.30E0.0020.0002] # TAKRI LETTER SA
+116A7 ; [.30E1.0020.0002] # TAKRI LETTER SHA
+116A9 ; [.30E2.0020.0002] # TAKRI LETTER HA
+1168A ; [.30E3.0020.0002] # TAKRI LETTER KA
+1168B ; [.30E4.0020.0002] # TAKRI LETTER KHA
+116B8 ; [.30E5.0020.0002] # TAKRI LETTER ARCHAIC KHA
+1168C ; [.30E6.0020.0002] # TAKRI LETTER GA
+1168D ; [.30E7.0020.0002] # TAKRI LETTER GHA
+1168E ; [.30E8.0020.0002] # TAKRI LETTER NGA
+1168F ; [.30E9.0020.0002] # TAKRI LETTER CA
+11690 ; [.30EA.0020.0002] # TAKRI LETTER CHA
+11691 ; [.30EB.0020.0002] # TAKRI LETTER JA
+11692 ; [.30EC.0020.0002] # TAKRI LETTER JHA
+11693 ; [.30ED.0020.0002] # TAKRI LETTER NYA
+11694 ; [.30EE.0020.0002] # TAKRI LETTER TTA
+11695 ; [.30EF.0020.0002] # TAKRI LETTER TTHA
+11696 ; [.30F0.0020.0002] # TAKRI LETTER DDA
+11697 ; [.30F1.0020.0002] # TAKRI LETTER DDHA
+11698 ; [.30F2.0020.0002] # TAKRI LETTER NNA
+11699 ; [.30F3.0020.0002] # TAKRI LETTER TA
+1169A ; [.30F4.0020.0002] # TAKRI LETTER THA
+1169B ; [.30F5.0020.0002] # TAKRI LETTER DA
+1169C ; [.30F6.0020.0002] # TAKRI LETTER DHA
+1169D ; [.30F7.0020.0002] # TAKRI LETTER NA
+1169E ; [.30F8.0020.0002] # TAKRI LETTER PA
+1169F ; [.30F9.0020.0002] # TAKRI LETTER PHA
+116A0 ; [.30FA.0020.0002] # TAKRI LETTER BA
+116A1 ; [.30FB.0020.0002] # TAKRI LETTER BHA
+116A2 ; [.30FC.0020.0002] # TAKRI LETTER MA
+116A3 ; [.30FD.0020.0002] # TAKRI LETTER YA
+116A4 ; [.30FE.0020.0002] # TAKRI LETTER RA
+116A5 ; [.30FF.0020.0002] # TAKRI LETTER LA
+116A6 ; [.3100.0020.0002] # TAKRI LETTER VA
+116AA ; [.3101.0020.0002] # TAKRI LETTER RRA
+116AD ; [.3102.0020.0002] # TAKRI VOWEL SIGN AA
+116AE ; [.3103.0020.0002] # TAKRI VOWEL SIGN I
+116AF ; [.3104.0020.0002] # TAKRI VOWEL SIGN II
+116B0 ; [.3105.0020.0002] # TAKRI VOWEL SIGN U
+116B1 ; [.3106.0020.0002] # TAKRI VOWEL SIGN UU
+116B2 ; [.3107.0020.0002] # TAKRI VOWEL SIGN E
+116B3 ; [.3108.0020.0002] # TAKRI VOWEL SIGN AI
+116B4 ; [.3109.0020.0002] # TAKRI VOWEL SIGN O
+116B5 ; [.310A.0020.0002] # TAKRI VOWEL SIGN AU
+116B6 ; [.310B.0020.0002] # TAKRI SIGN VIRAMA
+11900 ; [.310C.0020.0002] # DIVES AKURU LETTER A
+11901 ; [.310D.0020.0002] # DIVES AKURU LETTER AA
+11902 ; [.310E.0020.0002] # DIVES AKURU LETTER I
+11903 ; [.310F.0020.0002] # DIVES AKURU LETTER II
+11904 ; [.3110.0020.0002] # DIVES AKURU LETTER U
+11905 ; [.3111.0020.0002] # DIVES AKURU LETTER UU
+11906 ; [.3112.0020.0002] # DIVES AKURU LETTER E
+11909 ; [.3113.0020.0002] # DIVES AKURU LETTER O
+1190C ; [.3114.0020.0002] # DIVES AKURU LETTER KA
+1190D ; [.3115.0020.0002] # DIVES AKURU LETTER KHA
+1190E ; [.3116.0020.0002] # DIVES AKURU LETTER GA
+1190F ; [.3117.0020.0002] # DIVES AKURU LETTER GHA
+11910 ; [.3118.0020.0002] # DIVES AKURU LETTER NGA
+1193F ; [.3119.0020.0002] # DIVES AKURU PREFIXED NASAL SIGN
+11911 ; [.311A.0020.0002] # DIVES AKURU LETTER CA
+11912 ; [.311B.0020.0002] # DIVES AKURU LETTER CHA
+11913 ; [.311C.0020.0002] # DIVES AKURU LETTER JA
+11915 ; [.311D.0020.0002] # DIVES AKURU LETTER NYA
+11916 ; [.311E.0020.0002] # DIVES AKURU LETTER TTA
+11918 ; [.311F.0020.0002] # DIVES AKURU LETTER DDA
+11919 ; [.3120.0020.0002] # DIVES AKURU LETTER DDHA
+1191A ; [.3121.0020.0002] # DIVES AKURU LETTER NNA
+1191B ; [.3122.0020.0002] # DIVES AKURU LETTER TA
+1191C ; [.3123.0020.0002] # DIVES AKURU LETTER THA
+1191D ; [.3124.0020.0002] # DIVES AKURU LETTER DA
+1191E ; [.3125.0020.0002] # DIVES AKURU LETTER DHA
+1191F ; [.3126.0020.0002] # DIVES AKURU LETTER NA
+11920 ; [.3127.0020.0002] # DIVES AKURU LETTER PA
+11921 ; [.3128.0020.0002] # DIVES AKURU LETTER PHA
+11922 ; [.3129.0020.0002] # DIVES AKURU LETTER BA
+11923 ; [.312A.0020.0002] # DIVES AKURU LETTER BHA
+11924 ; [.312B.0020.0002] # DIVES AKURU LETTER MA
+11925 ; [.312C.0020.0002] # DIVES AKURU LETTER YA
+11940 ; [.312D.0020.0002] # DIVES AKURU MEDIAL YA
+11926 ; [.312E.0020.0002] # DIVES AKURU LETTER YYA
+11941 ; [.312F.0020.0002] # DIVES AKURU INITIAL RA
+11927 ; [.3130.0020.0002] # DIVES AKURU LETTER RA
+11942 ; [.3131.0020.0002] # DIVES AKURU MEDIAL RA
+11928 ; [.3132.0020.0002] # DIVES AKURU LETTER LA
+11929 ; [.3133.0020.0002] # DIVES AKURU LETTER VA
+1192A ; [.3134.0020.0002] # DIVES AKURU LETTER SHA
+1192B ; [.3135.0020.0002] # DIVES AKURU LETTER SSA
+1192C ; [.3136.0020.0002] # DIVES AKURU LETTER SA
+1192D ; [.3137.0020.0002] # DIVES AKURU LETTER HA
+1192E ; [.3138.0020.0002] # DIVES AKURU LETTER LLA
+1192F ; [.3139.0020.0002] # DIVES AKURU LETTER ZA
+11930 ; [.313A.0020.0002] # DIVES AKURU VOWEL SIGN AA
+11931 ; [.313B.0020.0002] # DIVES AKURU VOWEL SIGN I
+11932 ; [.313C.0020.0002] # DIVES AKURU VOWEL SIGN II
+11933 ; [.313D.0020.0002] # DIVES AKURU VOWEL SIGN U
+11934 ; [.313E.0020.0002] # DIVES AKURU VOWEL SIGN UU
+11935 ; [.313F.0020.0002] # DIVES AKURU VOWEL SIGN E
+11937 ; [.3140.0020.0002] # DIVES AKURU VOWEL SIGN AI
+11938 ; [.3141.0020.0002] # DIVES AKURU VOWEL SIGN O
+11935 11930 ; [.3141.0020.0002] # DIVES AKURU VOWEL SIGN O
+1193D ; [.3142.0020.0002] # DIVES AKURU SIGN HALANTA
+1193E ; [.3143.0020.0002] # DIVES AKURU VIRAMA
+119A0 ; [.3144.0020.0002] # NANDINAGARI LETTER A
+119A1 ; [.3145.0020.0002] # NANDINAGARI LETTER AA
+119A2 ; [.3146.0020.0002] # NANDINAGARI LETTER I
+119A3 ; [.3147.0020.0002] # NANDINAGARI LETTER II
+119A4 ; [.3148.0020.0002] # NANDINAGARI LETTER U
+119A5 ; [.3149.0020.0002] # NANDINAGARI LETTER UU
+119A6 ; [.314A.0020.0002] # NANDINAGARI LETTER VOCALIC R
+119A7 ; [.314B.0020.0002] # NANDINAGARI LETTER VOCALIC RR
+119AA ; [.314C.0020.0002] # NANDINAGARI LETTER E
+119AB ; [.314D.0020.0002] # NANDINAGARI LETTER AI
+119AC ; [.314E.0020.0002] # NANDINAGARI LETTER O
+119AD ; [.314F.0020.0002] # NANDINAGARI LETTER AU
+119AE ; [.3150.0020.0002] # NANDINAGARI LETTER KA
+119AF ; [.3151.0020.0002] # NANDINAGARI LETTER KHA
+119B0 ; [.3152.0020.0002] # NANDINAGARI LETTER GA
+119B1 ; [.3153.0020.0002] # NANDINAGARI LETTER GHA
+119B2 ; [.3154.0020.0002] # NANDINAGARI LETTER NGA
+119B3 ; [.3155.0020.0002] # NANDINAGARI LETTER CA
+119B4 ; [.3156.0020.0002] # NANDINAGARI LETTER CHA
+119B5 ; [.3157.0020.0002] # NANDINAGARI LETTER JA
+119B6 ; [.3158.0020.0002] # NANDINAGARI LETTER JHA
+119B7 ; [.3159.0020.0002] # NANDINAGARI LETTER NYA
+119B8 ; [.315A.0020.0002] # NANDINAGARI LETTER TTA
+119B9 ; [.315B.0020.0002] # NANDINAGARI LETTER TTHA
+119BA ; [.315C.0020.0002] # NANDINAGARI LETTER DDA
+119BB ; [.315D.0020.0002] # NANDINAGARI LETTER DDHA
+119BC ; [.315E.0020.0002] # NANDINAGARI LETTER NNA
+119BD ; [.315F.0020.0002] # NANDINAGARI LETTER TA
+119BE ; [.3160.0020.0002] # NANDINAGARI LETTER THA
+119BF ; [.3161.0020.0002] # NANDINAGARI LETTER DA
+119C0 ; [.3162.0020.0002] # NANDINAGARI LETTER DHA
+119C1 ; [.3163.0020.0002] # NANDINAGARI LETTER NA
+119C2 ; [.3164.0020.0002] # NANDINAGARI LETTER PA
+119C3 ; [.3165.0020.0002] # NANDINAGARI LETTER PHA
+119C4 ; [.3166.0020.0002] # NANDINAGARI LETTER BA
+119C5 ; [.3167.0020.0002] # NANDINAGARI LETTER BHA
+119C6 ; [.3168.0020.0002] # NANDINAGARI LETTER MA
+119C7 ; [.3169.0020.0002] # NANDINAGARI LETTER YA
+119C8 ; [.316A.0020.0002] # NANDINAGARI LETTER RA
+119C9 ; [.316B.0020.0002] # NANDINAGARI LETTER LA
+119CA ; [.316C.0020.0002] # NANDINAGARI LETTER VA
+119CB ; [.316D.0020.0002] # NANDINAGARI LETTER SHA
+119CC ; [.316E.0020.0002] # NANDINAGARI LETTER SSA
+119CD ; [.316F.0020.0002] # NANDINAGARI LETTER SA
+119CE ; [.3170.0020.0002] # NANDINAGARI LETTER HA
+119CF ; [.3171.0020.0002] # NANDINAGARI LETTER LLA
+119D0 ; [.3172.0020.0002] # NANDINAGARI LETTER RRA
+119E1 ; [.3173.0020.0002] # NANDINAGARI SIGN AVAGRAHA
+119E3 ; [.3174.0020.0002] # NANDINAGARI HEADSTROKE
+119D1 ; [.3175.0020.0002] # NANDINAGARI VOWEL SIGN AA
+119D2 ; [.3176.0020.0002] # NANDINAGARI VOWEL SIGN I
+119D3 ; [.3177.0020.0002] # NANDINAGARI VOWEL SIGN II
+119D4 ; [.3178.0020.0002] # NANDINAGARI VOWEL SIGN U
+119D5 ; [.3179.0020.0002] # NANDINAGARI VOWEL SIGN UU
+119D6 ; [.317A.0020.0002] # NANDINAGARI VOWEL SIGN VOCALIC R
+119D7 ; [.317B.0020.0002] # NANDINAGARI VOWEL SIGN VOCALIC RR
+119DA ; [.317C.0020.0002] # NANDINAGARI VOWEL SIGN E
+119E4 ; [.317D.0020.0002] # NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
+119DB ; [.317E.0020.0002] # NANDINAGARI VOWEL SIGN AI
+119DC ; [.317F.0020.0002] # NANDINAGARI VOWEL SIGN O
+119DD ; [.3180.0020.0002] # NANDINAGARI VOWEL SIGN AU
+119E0 ; [.3181.0020.0002] # NANDINAGARI SIGN VIRAMA
+11800 ; [.3182.0020.0002] # DOGRA LETTER A
+11801 ; [.3183.0020.0002] # DOGRA LETTER AA
+11802 ; [.3184.0020.0002] # DOGRA LETTER I
+11803 ; [.3185.0020.0002] # DOGRA LETTER II
+11804 ; [.3186.0020.0002] # DOGRA LETTER U
+11805 ; [.3187.0020.0002] # DOGRA LETTER UU
+11806 ; [.3188.0020.0002] # DOGRA LETTER E
+11807 ; [.3189.0020.0002] # DOGRA LETTER AI
+11808 ; [.318A.0020.0002] # DOGRA LETTER O
+11809 ; [.318B.0020.0002] # DOGRA LETTER AU
+1180A ; [.318C.0020.0002] # DOGRA LETTER KA
+1180B ; [.318D.0020.0002] # DOGRA LETTER KHA
+1180C ; [.318E.0020.0002] # DOGRA LETTER GA
+1180D ; [.318F.0020.0002] # DOGRA LETTER GHA
+1180E ; [.3190.0020.0002] # DOGRA LETTER NGA
+1180F ; [.3191.0020.0002] # DOGRA LETTER CA
+11810 ; [.3192.0020.0002] # DOGRA LETTER CHA
+11811 ; [.3193.0020.0002] # DOGRA LETTER JA
+11812 ; [.3194.0020.0002] # DOGRA LETTER JHA
+11813 ; [.3195.0020.0002] # DOGRA LETTER NYA
+11814 ; [.3196.0020.0002] # DOGRA LETTER TTA
+11815 ; [.3197.0020.0002] # DOGRA LETTER TTHA
+11816 ; [.3198.0020.0002] # DOGRA LETTER DDA
+11817 ; [.3199.0020.0002] # DOGRA LETTER DDHA
+11818 ; [.319A.0020.0002] # DOGRA LETTER NNA
+11819 ; [.319B.0020.0002] # DOGRA LETTER TA
+1181A ; [.319C.0020.0002] # DOGRA LETTER THA
+1181B ; [.319D.0020.0002] # DOGRA LETTER DA
+1181C ; [.319E.0020.0002] # DOGRA LETTER DHA
+1181D ; [.319F.0020.0002] # DOGRA LETTER NA
+1181E ; [.31A0.0020.0002] # DOGRA LETTER PA
+1181F ; [.31A1.0020.0002] # DOGRA LETTER PHA
+11820 ; [.31A2.0020.0002] # DOGRA LETTER BA
+11821 ; [.31A3.0020.0002] # DOGRA LETTER BHA
+11822 ; [.31A4.0020.0002] # DOGRA LETTER MA
+11823 ; [.31A5.0020.0002] # DOGRA LETTER YA
+11824 ; [.31A6.0020.0002] # DOGRA LETTER RA
+11825 ; [.31A7.0020.0002] # DOGRA LETTER LA
+11826 ; [.31A8.0020.0002] # DOGRA LETTER VA
+11827 ; [.31A9.0020.0002] # DOGRA LETTER SHA
+11828 ; [.31AA.0020.0002] # DOGRA LETTER SSA
+11829 ; [.31AB.0020.0002] # DOGRA LETTER SA
+1182A ; [.31AC.0020.0002] # DOGRA LETTER HA
+1182B ; [.31AD.0020.0002] # DOGRA LETTER RRA
+1182C ; [.31AE.0020.0002] # DOGRA VOWEL SIGN AA
+1182D ; [.31AF.0020.0002] # DOGRA VOWEL SIGN I
+1182E ; [.31B0.0020.0002] # DOGRA VOWEL SIGN II
+1182F ; [.31B1.0020.0002] # DOGRA VOWEL SIGN U
+11830 ; [.31B2.0020.0002] # DOGRA VOWEL SIGN UU
+11831 ; [.31B3.0020.0002] # DOGRA VOWEL SIGN VOCALIC R
+11832 ; [.31B4.0020.0002] # DOGRA VOWEL SIGN VOCALIC RR
+11833 ; [.31B5.0020.0002] # DOGRA VOWEL SIGN E
+11834 ; [.31B6.0020.0002] # DOGRA VOWEL SIGN AI
+11835 ; [.31B7.0020.0002] # DOGRA VOWEL SIGN O
+11836 ; [.31B8.0020.0002] # DOGRA VOWEL SIGN AU
+11839 ; [.31B9.0020.0002] # DOGRA SIGN VIRAMA
+11700 ; [.31BA.0020.0002] # AHOM LETTER KA
+11701 ; [.31BB.0020.0002] # AHOM LETTER KHA
+11702 ; [.31BC.0020.0002] # AHOM LETTER NGA
+11703 ; [.31BD.0020.0002] # AHOM LETTER NA
+11704 ; [.31BE.0020.0002] # AHOM LETTER TA
+11705 ; [.31BE.0020.0004][.0000.0118.0004] # AHOM LETTER ALTERNATE TA
+11706 ; [.31BF.0020.0002] # AHOM LETTER PA
+11707 ; [.31C0.0020.0002] # AHOM LETTER PHA
+11708 ; [.31C1.0020.0002] # AHOM LETTER BA
+1171A ; [.31C1.0020.0004][.0000.0118.0004] # AHOM LETTER ALTERNATE BA
+11709 ; [.31C2.0020.0002] # AHOM LETTER MA
+1170A ; [.31C3.0020.0002] # AHOM LETTER JA
+1170B ; [.31C4.0020.0002] # AHOM LETTER CHA
+1170C ; [.31C5.0020.0002] # AHOM LETTER THA
+1170D ; [.31C6.0020.0002] # AHOM LETTER RA
+1170E ; [.31C7.0020.0002] # AHOM LETTER LA
+1170F ; [.31C8.0020.0002] # AHOM LETTER SA
+11710 ; [.31C9.0020.0002] # AHOM LETTER NYA
+11711 ; [.31CA.0020.0002] # AHOM LETTER HA
+11712 ; [.31CB.0020.0002] # AHOM LETTER A
+11713 ; [.31CC.0020.0002] # AHOM LETTER DA
+11714 ; [.31CD.0020.0002] # AHOM LETTER DHA
+11715 ; [.31CE.0020.0002] # AHOM LETTER GA
+11716 ; [.31CE.0020.0004][.0000.0118.0004] # AHOM LETTER ALTERNATE GA
+11717 ; [.31CF.0020.0002] # AHOM LETTER GHA
+11718 ; [.31D0.0020.0002] # AHOM LETTER BHA
+11719 ; [.31D1.0020.0002] # AHOM LETTER JHA
+11740 ; [.31D2.0020.0002] # AHOM LETTER CA
+11741 ; [.31D3.0020.0002] # AHOM LETTER TTA
+11742 ; [.31D4.0020.0002] # AHOM LETTER TTHA
+11743 ; [.31D5.0020.0002] # AHOM LETTER DDA
+11744 ; [.31D6.0020.0002] # AHOM LETTER DDHA
+11745 ; [.31D7.0020.0002] # AHOM LETTER NNA
+11746 ; [.31D8.0020.0002] # AHOM LETTER LLA
+11720 ; [.31D9.0020.0002] # AHOM VOWEL SIGN A
+11721 ; [.31DA.0020.0002] # AHOM VOWEL SIGN AA
+11722 ; [.31DB.0020.0002] # AHOM VOWEL SIGN I
+11723 ; [.31DC.0020.0002] # AHOM VOWEL SIGN II
+11724 ; [.31DD.0020.0002] # AHOM VOWEL SIGN U
+11725 ; [.31DE.0020.0002] # AHOM VOWEL SIGN UU
+11726 ; [.31DF.0020.0002] # AHOM VOWEL SIGN E
+11727 ; [.31E0.0020.0002] # AHOM VOWEL SIGN AW
+11728 ; [.31E1.0020.0002] # AHOM VOWEL SIGN O
+11729 ; [.31E2.0020.0002] # AHOM VOWEL SIGN AI
+1172A ; [.31E3.0020.0002] # AHOM VOWEL SIGN AM
+1172B ; [.31E4.0020.0002] # AHOM SIGN KILLER
+1171D ; [.31E5.0020.0002] # AHOM CONSONANT SIGN MEDIAL LA
+1171E ; [.31E6.0020.0002] # AHOM CONSONANT SIGN MEDIAL RA
+1171F ; [.31E7.0020.0002] # AHOM CONSONANT SIGN MEDIAL LIGATING RA
+11D00 ; [.31E8.0020.0002] # MASARAM GONDI LETTER A
+11D01 ; [.31E9.0020.0002] # MASARAM GONDI LETTER AA
+11D02 ; [.31EA.0020.0002] # MASARAM GONDI LETTER I
+11D03 ; [.31EB.0020.0002] # MASARAM GONDI LETTER II
+11D04 ; [.31EC.0020.0002] # MASARAM GONDI LETTER U
+11D05 ; [.31ED.0020.0002] # MASARAM GONDI LETTER UU
+11D06 ; [.31EE.0020.0002] # MASARAM GONDI LETTER E
+11D08 ; [.31EF.0020.0002] # MASARAM GONDI LETTER AI
+11D09 ; [.31F0.0020.0002] # MASARAM GONDI LETTER O
+11D0B ; [.31F1.0020.0002] # MASARAM GONDI LETTER AU
+11D0C ; [.31F2.0020.0002] # MASARAM GONDI LETTER KA
+11D0D ; [.31F3.0020.0002] # MASARAM GONDI LETTER KHA
+11D0E ; [.31F4.0020.0002] # MASARAM GONDI LETTER GA
+11D0F ; [.31F5.0020.0002] # MASARAM GONDI LETTER GHA
+11D10 ; [.31F6.0020.0002] # MASARAM GONDI LETTER NGA
+11D11 ; [.31F7.0020.0002] # MASARAM GONDI LETTER CA
+11D12 ; [.31F8.0020.0002] # MASARAM GONDI LETTER CHA
+11D13 ; [.31F9.0020.0002] # MASARAM GONDI LETTER JA
+11D14 ; [.31FA.0020.0002] # MASARAM GONDI LETTER JHA
+11D15 ; [.31FB.0020.0002] # MASARAM GONDI LETTER NYA
+11D16 ; [.31FC.0020.0002] # MASARAM GONDI LETTER TTA
+11D17 ; [.31FD.0020.0002] # MASARAM GONDI LETTER TTHA
+11D18 ; [.31FE.0020.0002] # MASARAM GONDI LETTER DDA
+11D19 ; [.31FF.0020.0002] # MASARAM GONDI LETTER DDHA
+11D1A ; [.3200.0020.0002] # MASARAM GONDI LETTER NNA
+11D1B ; [.3201.0020.0002] # MASARAM GONDI LETTER TA
+11D1C ; [.3202.0020.0002] # MASARAM GONDI LETTER THA
+11D1D ; [.3203.0020.0002] # MASARAM GONDI LETTER DA
+11D1E ; [.3204.0020.0002] # MASARAM GONDI LETTER DHA
+11D1F ; [.3205.0020.0002] # MASARAM GONDI LETTER NA
+11D20 ; [.3206.0020.0002] # MASARAM GONDI LETTER PA
+11D21 ; [.3207.0020.0002] # MASARAM GONDI LETTER PHA
+11D22 ; [.3208.0020.0002] # MASARAM GONDI LETTER BA
+11D23 ; [.3209.0020.0002] # MASARAM GONDI LETTER BHA
+11D24 ; [.320A.0020.0002] # MASARAM GONDI LETTER MA
+11D25 ; [.320B.0020.0002] # MASARAM GONDI LETTER YA
+11D26 ; [.320C.0020.0002] # MASARAM GONDI LETTER RA
+11D46 ; [.320C.0020.0017] # MASARAM GONDI REPHA
+11D47 ; [.320C.0020.0019] # MASARAM GONDI RA-KARA
+11D27 ; [.320D.0020.0002] # MASARAM GONDI LETTER LA
+11D28 ; [.320E.0020.0002] # MASARAM GONDI LETTER VA
+11D29 ; [.320F.0020.0002] # MASARAM GONDI LETTER SHA
+11D2A ; [.3210.0020.0002] # MASARAM GONDI LETTER SSA
+11D2B ; [.3211.0020.0002] # MASARAM GONDI LETTER SA
+11D2C ; [.3212.0020.0002] # MASARAM GONDI LETTER HA
+11D2D ; [.3213.0020.0002] # MASARAM GONDI LETTER LLA
+11D2E ; [.3214.0020.0002] # MASARAM GONDI LETTER KSSA
+11D2F ; [.3215.0020.0002] # MASARAM GONDI LETTER JNYA
+11D30 ; [.3216.0020.0002] # MASARAM GONDI LETTER TRA
+11D31 ; [.3217.0020.0002] # MASARAM GONDI VOWEL SIGN AA
+11D32 ; [.3218.0020.0002] # MASARAM GONDI VOWEL SIGN I
+11D33 ; [.3219.0020.0002] # MASARAM GONDI VOWEL SIGN II
+11D34 ; [.321A.0020.0002] # MASARAM GONDI VOWEL SIGN U
+11D35 ; [.321B.0020.0002] # MASARAM GONDI VOWEL SIGN UU
+11D36 ; [.321C.0020.0002] # MASARAM GONDI VOWEL SIGN VOCALIC R
+11D3A ; [.321D.0020.0002] # MASARAM GONDI VOWEL SIGN E
+11D3C ; [.321E.0020.0002] # MASARAM GONDI VOWEL SIGN AI
+11D3D ; [.321F.0020.0002] # MASARAM GONDI VOWEL SIGN O
+11D3F ; [.3220.0020.0002] # MASARAM GONDI VOWEL SIGN AU
+11D44 ; [.3221.0020.0002] # MASARAM GONDI SIGN HALANTA
+11D45 ; [.3222.0020.0002] # MASARAM GONDI VIRAMA
+11D98 ; [.3223.0020.0002] # GUNJALA GONDI OM
+11D60 ; [.3224.0020.0002] # GUNJALA GONDI LETTER A
+11D61 ; [.3225.0020.0002] # GUNJALA GONDI LETTER AA
+11D62 ; [.3226.0020.0002] # GUNJALA GONDI LETTER I
+11D63 ; [.3227.0020.0002] # GUNJALA GONDI LETTER II
+11D64 ; [.3228.0020.0002] # GUNJALA GONDI LETTER U
+11D65 ; [.3229.0020.0002] # GUNJALA GONDI LETTER UU
+11D67 ; [.322A.0020.0002] # GUNJALA GONDI LETTER EE
+11D68 ; [.322B.0020.0002] # GUNJALA GONDI LETTER AI
+11D6A ; [.322C.0020.0002] # GUNJALA GONDI LETTER OO
+11D6B ; [.322D.0020.0002] # GUNJALA GONDI LETTER AU
+11D6C ; [.322E.0020.0002] # GUNJALA GONDI LETTER YA
+11D6D ; [.322F.0020.0002] # GUNJALA GONDI LETTER VA
+11D6E ; [.3230.0020.0002] # GUNJALA GONDI LETTER BA
+11D6F ; [.3231.0020.0002] # GUNJALA GONDI LETTER BHA
+11D70 ; [.3232.0020.0002] # GUNJALA GONDI LETTER MA
+11D71 ; [.3233.0020.0002] # GUNJALA GONDI LETTER KA
+11D72 ; [.3234.0020.0002] # GUNJALA GONDI LETTER KHA
+11D73 ; [.3235.0020.0002] # GUNJALA GONDI LETTER TA
+11D74 ; [.3236.0020.0002] # GUNJALA GONDI LETTER THA
+11D75 ; [.3237.0020.0002] # GUNJALA GONDI LETTER LA
+11D76 ; [.3238.0020.0002] # GUNJALA GONDI LETTER GA
+11D77 ; [.3239.0020.0002] # GUNJALA GONDI LETTER GHA
+11D78 ; [.323A.0020.0002] # GUNJALA GONDI LETTER DA
+11D79 ; [.323B.0020.0002] # GUNJALA GONDI LETTER DHA
+11D7A ; [.323C.0020.0002] # GUNJALA GONDI LETTER NA
+11D7B ; [.323D.0020.0002] # GUNJALA GONDI LETTER CA
+11D7C ; [.323E.0020.0002] # GUNJALA GONDI LETTER CHA
+11D7D ; [.323F.0020.0002] # GUNJALA GONDI LETTER TTA
+11D7E ; [.3240.0020.0002] # GUNJALA GONDI LETTER TTHA
+11D7F ; [.3241.0020.0002] # GUNJALA GONDI LETTER LLA
+11D80 ; [.3242.0020.0002] # GUNJALA GONDI LETTER JA
+11D81 ; [.3243.0020.0002] # GUNJALA GONDI LETTER JHA
+11D82 ; [.3244.0020.0002] # GUNJALA GONDI LETTER DDA
+11D83 ; [.3245.0020.0002] # GUNJALA GONDI LETTER DDHA
+11D84 ; [.3246.0020.0002] # GUNJALA GONDI LETTER NGA
+11D85 ; [.3247.0020.0002] # GUNJALA GONDI LETTER PA
+11D86 ; [.3248.0020.0002] # GUNJALA GONDI LETTER PHA
+11D87 ; [.3249.0020.0002] # GUNJALA GONDI LETTER HA
+11D88 ; [.324A.0020.0002] # GUNJALA GONDI LETTER RA
+11D89 ; [.324B.0020.0002] # GUNJALA GONDI LETTER SA
+11D8A ; [.324C.0020.0002] # GUNJALA GONDI VOWEL SIGN AA
+11D8B ; [.324D.0020.0002] # GUNJALA GONDI VOWEL SIGN I
+11D8C ; [.324E.0020.0002] # GUNJALA GONDI VOWEL SIGN II
+11D8D ; [.324F.0020.0002] # GUNJALA GONDI VOWEL SIGN U
+11D8E ; [.3250.0020.0002] # GUNJALA GONDI VOWEL SIGN UU
+11D90 ; [.3251.0020.0002] # GUNJALA GONDI VOWEL SIGN EE
+11D91 ; [.3252.0020.0002] # GUNJALA GONDI VOWEL SIGN AI
+11D93 ; [.3253.0020.0002] # GUNJALA GONDI VOWEL SIGN OO
+11D94 ; [.3254.0020.0002] # GUNJALA GONDI VOWEL SIGN AU
+11D97 ; [.3255.0020.0002] # GUNJALA GONDI VIRAMA
+1B83 ; [.3256.0020.0002] # SUNDANESE LETTER A
+1BBA ; [.3256.0020.0004] # SUNDANESE AVAGRAHA
+1B84 ; [.3257.0020.0002] # SUNDANESE LETTER I
+1B85 ; [.3258.0020.0002] # SUNDANESE LETTER U
+1B86 ; [.3259.0020.0002] # SUNDANESE LETTER AE
+1B87 ; [.325A.0020.0002] # SUNDANESE LETTER O
+1B88 ; [.325B.0020.0002] # SUNDANESE LETTER E
+1B89 ; [.325C.0020.0002] # SUNDANESE LETTER EU
+1B8A ; [.325D.0020.0002] # SUNDANESE LETTER KA
+1BBE ; [.325D.0020.0019] # SUNDANESE LETTER FINAL K
+1BAE ; [.325E.0020.0002] # SUNDANESE LETTER KHA
+1B8B ; [.325F.0020.0002] # SUNDANESE LETTER QA
+1B8C ; [.3260.0020.0002] # SUNDANESE LETTER GA
+1B8D ; [.3261.0020.0002] # SUNDANESE LETTER NGA
+1B8E ; [.3262.0020.0002] # SUNDANESE LETTER CA
+1B8F ; [.3263.0020.0002] # SUNDANESE LETTER JA
+1B90 ; [.3264.0020.0002] # SUNDANESE LETTER ZA
+1B91 ; [.3265.0020.0002] # SUNDANESE LETTER NYA
+1B92 ; [.3266.0020.0002] # SUNDANESE LETTER TA
+1B93 ; [.3267.0020.0002] # SUNDANESE LETTER DA
+1B94 ; [.3268.0020.0002] # SUNDANESE LETTER NA
+1B95 ; [.3269.0020.0002] # SUNDANESE LETTER PA
+1B96 ; [.326A.0020.0002] # SUNDANESE LETTER FA
+1B97 ; [.326B.0020.0002] # SUNDANESE LETTER VA
+1B98 ; [.326C.0020.0002] # SUNDANESE LETTER BA
+1BBD ; [.326D.0020.0002] # SUNDANESE LETTER BHA
+1B99 ; [.326E.0020.0002] # SUNDANESE LETTER MA
+1BBF ; [.326E.0020.0019] # SUNDANESE LETTER FINAL M
+1BAC ; [.326F.0020.0002] # SUNDANESE CONSONANT SIGN PASANGAN MA
+1B9A ; [.3270.0020.0002] # SUNDANESE LETTER YA
+1BA1 ; [.3271.0020.0002] # SUNDANESE CONSONANT SIGN PAMINGKAL
+1B9B ; [.3272.0020.0002] # SUNDANESE LETTER RA
+1BA2 ; [.3273.0020.0002] # SUNDANESE CONSONANT SIGN PANYAKRA
+1BBB ; [.3274.0020.0002] # SUNDANESE LETTER REU
+1B9C ; [.3275.0020.0002] # SUNDANESE LETTER LA
+1BA3 ; [.3276.0020.0002] # SUNDANESE CONSONANT SIGN PANYIKU
+1BBC ; [.3277.0020.0002] # SUNDANESE LETTER LEU
+1B9D ; [.3278.0020.0002] # SUNDANESE LETTER WA
+1BAD ; [.3279.0020.0002] # SUNDANESE CONSONANT SIGN PASANGAN WA
+1B9E ; [.327A.0020.0002] # SUNDANESE LETTER SA
+1B9F ; [.327B.0020.0002] # SUNDANESE LETTER XA
+1BAF ; [.327C.0020.0002] # SUNDANESE LETTER SYA
+1BA0 ; [.327D.0020.0002] # SUNDANESE LETTER HA
+1BA4 ; [.327E.0020.0002] # SUNDANESE VOWEL SIGN PANGHULU
+1BA5 ; [.327F.0020.0002] # SUNDANESE VOWEL SIGN PANYUKU
+1BA6 ; [.3280.0020.0002] # SUNDANESE VOWEL SIGN PANAELAENG
+1BA7 ; [.3281.0020.0002] # SUNDANESE VOWEL SIGN PANOLONG
+1BA8 ; [.3282.0020.0002] # SUNDANESE VOWEL SIGN PAMEPET
+1BA9 ; [.3283.0020.0002] # SUNDANESE VOWEL SIGN PANEULEUNG
+1BAA ; [.3284.0020.0002] # SUNDANESE SIGN PAMAAEH
+1BAB ; [.3285.0020.0002] # SUNDANESE SIGN VIRAMA
+11005 ; [.3286.0020.0002] # BRAHMI LETTER A
+11006 ; [.3287.0020.0002] # BRAHMI LETTER AA
+11007 ; [.3288.0020.0002] # BRAHMI LETTER I
+11008 ; [.3289.0020.0002] # BRAHMI LETTER II
+11009 ; [.328A.0020.0002] # BRAHMI LETTER U
+1100A ; [.328B.0020.0002] # BRAHMI LETTER UU
+1100B ; [.328C.0020.0002] # BRAHMI LETTER VOCALIC R
+1100C ; [.328D.0020.0002] # BRAHMI LETTER VOCALIC RR
+1100D ; [.328E.0020.0002] # BRAHMI LETTER VOCALIC L
+1100E ; [.328F.0020.0002] # BRAHMI LETTER VOCALIC LL
+11071 ; [.3290.0020.0002] # BRAHMI LETTER OLD TAMIL SHORT E
+1100F ; [.3291.0020.0002] # BRAHMI LETTER E
+11010 ; [.3292.0020.0002] # BRAHMI LETTER AI
+11072 ; [.3293.0020.0002] # BRAHMI LETTER OLD TAMIL SHORT O
+11011 ; [.3294.0020.0002] # BRAHMI LETTER O
+11012 ; [.3295.0020.0002] # BRAHMI LETTER AU
+11013 ; [.3296.0020.0002] # BRAHMI LETTER KA
+11014 ; [.3297.0020.0002] # BRAHMI LETTER KHA
+11015 ; [.3298.0020.0002] # BRAHMI LETTER GA
+11016 ; [.3299.0020.0002] # BRAHMI LETTER GHA
+11017 ; [.329A.0020.0002] # BRAHMI LETTER NGA
+11018 ; [.329B.0020.0002] # BRAHMI LETTER CA
+11019 ; [.329C.0020.0002] # BRAHMI LETTER CHA
+1101A ; [.329D.0020.0002] # BRAHMI LETTER JA
+1101B ; [.329E.0020.0002] # BRAHMI LETTER JHA
+1101C ; [.329F.0020.0002] # BRAHMI LETTER NYA
+1101D ; [.32A0.0020.0002] # BRAHMI LETTER TTA
+1101E ; [.32A1.0020.0002] # BRAHMI LETTER TTHA
+1101F ; [.32A2.0020.0002] # BRAHMI LETTER DDA
+11020 ; [.32A3.0020.0002] # BRAHMI LETTER DDHA
+11021 ; [.32A4.0020.0002] # BRAHMI LETTER NNA
+11022 ; [.32A5.0020.0002] # BRAHMI LETTER TA
+11023 ; [.32A6.0020.0002] # BRAHMI LETTER THA
+11024 ; [.32A7.0020.0002] # BRAHMI LETTER DA
+11025 ; [.32A8.0020.0002] # BRAHMI LETTER DHA
+11026 ; [.32A9.0020.0002] # BRAHMI LETTER NA
+11027 ; [.32AA.0020.0002] # BRAHMI LETTER PA
+11028 ; [.32AB.0020.0002] # BRAHMI LETTER PHA
+11029 ; [.32AC.0020.0002] # BRAHMI LETTER BA
+1102A ; [.32AD.0020.0002] # BRAHMI LETTER BHA
+1102B ; [.32AE.0020.0002] # BRAHMI LETTER MA
+1102C ; [.32AF.0020.0002] # BRAHMI LETTER YA
+1102D ; [.32B0.0020.0002] # BRAHMI LETTER RA
+1102E ; [.32B1.0020.0002] # BRAHMI LETTER LA
+1102F ; [.32B2.0020.0002] # BRAHMI LETTER VA
+11030 ; [.32B3.0020.0002] # BRAHMI LETTER SHA
+11031 ; [.32B4.0020.0002] # BRAHMI LETTER SSA
+11032 ; [.32B5.0020.0002] # BRAHMI LETTER SA
+11033 ; [.32B6.0020.0002] # BRAHMI LETTER HA
+11003 ; [.32B7.0020.0002] # BRAHMI SIGN JIHVAMULIYA
+11004 ; [.32B8.0020.0002] # BRAHMI SIGN UPADHMANIYA
+11034 ; [.32B9.0020.0002] # BRAHMI LETTER LLA
+11035 ; [.32BA.0020.0002] # BRAHMI LETTER OLD TAMIL LLLA
+11075 ; [.32BB.0020.0002] # BRAHMI LETTER OLD TAMIL LLA
+11036 ; [.32BC.0020.0002] # BRAHMI LETTER OLD TAMIL RRA
+11037 ; [.32BD.0020.0002] # BRAHMI LETTER OLD TAMIL NNNA
+11038 ; [.32BE.0020.0002] # BRAHMI VOWEL SIGN AA
+11039 ; [.32BF.0020.0002] # BRAHMI VOWEL SIGN BHATTIPROLU AA
+1103A ; [.32C0.0020.0002] # BRAHMI VOWEL SIGN I
+1103B ; [.32C1.0020.0002] # BRAHMI VOWEL SIGN II
+1103C ; [.32C2.0020.0002] # BRAHMI VOWEL SIGN U
+1103D ; [.32C3.0020.0002] # BRAHMI VOWEL SIGN UU
+1103E ; [.32C4.0020.0002] # BRAHMI VOWEL SIGN VOCALIC R
+1103F ; [.32C5.0020.0002] # BRAHMI VOWEL SIGN VOCALIC RR
+11040 ; [.32C6.0020.0002] # BRAHMI VOWEL SIGN VOCALIC L
+11041 ; [.32C7.0020.0002] # BRAHMI VOWEL SIGN VOCALIC LL
+11073 ; [.32C8.0020.0002] # BRAHMI VOWEL SIGN OLD TAMIL SHORT E
+11042 ; [.32C9.0020.0002] # BRAHMI VOWEL SIGN E
+11043 ; [.32CA.0020.0002] # BRAHMI VOWEL SIGN AI
+11074 ; [.32CB.0020.0002] # BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+11044 ; [.32CC.0020.0002] # BRAHMI VOWEL SIGN O
+11045 ; [.32CD.0020.0002] # BRAHMI VOWEL SIGN AU
+11046 ; [.32CE.0020.0002] # BRAHMI VIRAMA
+1107F ; [.32CF.0020.0002] # BRAHMI NUMBER JOINER
+11070 ; [.32D0.0020.0002] # BRAHMI SIGN OLD TAMIL VIRAMA
+10A00 ; [.32D1.0020.0002] # KHAROSHTHI LETTER A
+10A01 ; [.32D2.0020.0002] # KHAROSHTHI VOWEL SIGN I
+10A02 ; [.32D3.0020.0002] # KHAROSHTHI VOWEL SIGN U
+10A03 ; [.32D4.0020.0002] # KHAROSHTHI VOWEL SIGN VOCALIC R
+10A05 ; [.32D5.0020.0002] # KHAROSHTHI VOWEL SIGN E
+10A06 ; [.32D6.0020.0002] # KHAROSHTHI VOWEL SIGN O
+10A0C ; [.32D7.0020.0002] # KHAROSHTHI VOWEL LENGTH MARK
+10A10 ; [.32D8.0020.0002] # KHAROSHTHI LETTER KA
+10A32 ; [.32D9.0020.0002] # KHAROSHTHI LETTER KKA
+10A11 ; [.32DA.0020.0002] # KHAROSHTHI LETTER KHA
+10A12 ; [.32DB.0020.0002] # KHAROSHTHI LETTER GA
+10A13 ; [.32DC.0020.0002] # KHAROSHTHI LETTER GHA
+10A15 ; [.32DD.0020.0002] # KHAROSHTHI LETTER CA
+10A16 ; [.32DE.0020.0002] # KHAROSHTHI LETTER CHA
+10A17 ; [.32DF.0020.0002] # KHAROSHTHI LETTER JA
+10A19 ; [.32E0.0020.0002] # KHAROSHTHI LETTER NYA
+10A1A ; [.32E1.0020.0002] # KHAROSHTHI LETTER TTA
+10A34 ; [.32E2.0020.0002] # KHAROSHTHI LETTER TTTA
+10A1B ; [.32E3.0020.0002] # KHAROSHTHI LETTER TTHA
+10A33 ; [.32E4.0020.0002] # KHAROSHTHI LETTER TTTHA
+10A1C ; [.32E5.0020.0002] # KHAROSHTHI LETTER DDA
+10A1D ; [.32E6.0020.0002] # KHAROSHTHI LETTER DDHA
+10A1E ; [.32E7.0020.0002] # KHAROSHTHI LETTER NNA
+10A1F ; [.32E8.0020.0002] # KHAROSHTHI LETTER TA
+10A20 ; [.32E9.0020.0002] # KHAROSHTHI LETTER THA
+10A21 ; [.32EA.0020.0002] # KHAROSHTHI LETTER DA
+10A22 ; [.32EB.0020.0002] # KHAROSHTHI LETTER DHA
+10A23 ; [.32EC.0020.0002] # KHAROSHTHI LETTER NA
+10A24 ; [.32ED.0020.0002] # KHAROSHTHI LETTER PA
+10A25 ; [.32EE.0020.0002] # KHAROSHTHI LETTER PHA
+10A26 ; [.32EF.0020.0002] # KHAROSHTHI LETTER BA
+10A27 ; [.32F0.0020.0002] # KHAROSHTHI LETTER BHA
+10A28 ; [.32F1.0020.0002] # KHAROSHTHI LETTER MA
+10A29 ; [.32F2.0020.0002] # KHAROSHTHI LETTER YA
+10A2A ; [.32F3.0020.0002] # KHAROSHTHI LETTER RA
+10A2B ; [.32F4.0020.0002] # KHAROSHTHI LETTER LA
+10A2C ; [.32F5.0020.0002] # KHAROSHTHI LETTER VA
+10A35 ; [.32F6.0020.0002] # KHAROSHTHI LETTER VHA
+10A2D ; [.32F7.0020.0002] # KHAROSHTHI LETTER SHA
+10A2E ; [.32F8.0020.0002] # KHAROSHTHI LETTER SSA
+10A2F ; [.32F9.0020.0002] # KHAROSHTHI LETTER SA
+10A30 ; [.32FA.0020.0002] # KHAROSHTHI LETTER ZA
+10A31 ; [.32FB.0020.0002] # KHAROSHTHI LETTER HA
+10A3F ; [.32FC.0020.0002] # KHAROSHTHI VIRAMA
+11C00 ; [.32FD.0020.0002] # BHAIKSUKI LETTER A
+11C01 ; [.32FE.0020.0002] # BHAIKSUKI LETTER AA
+11C02 ; [.32FF.0020.0002] # BHAIKSUKI LETTER I
+11C03 ; [.3300.0020.0002] # BHAIKSUKI LETTER II
+11C04 ; [.3301.0020.0002] # BHAIKSUKI LETTER U
+11C05 ; [.3302.0020.0002] # BHAIKSUKI LETTER UU
+11C06 ; [.3303.0020.0002] # BHAIKSUKI LETTER VOCALIC R
+11C07 ; [.3304.0020.0002] # BHAIKSUKI LETTER VOCALIC RR
+11C08 ; [.3305.0020.0002] # BHAIKSUKI LETTER VOCALIC L
+11C0A ; [.3306.0020.0002] # BHAIKSUKI LETTER E
+11C0B ; [.3307.0020.0002] # BHAIKSUKI LETTER AI
+11C0C ; [.3308.0020.0002] # BHAIKSUKI LETTER O
+11C0D ; [.3309.0020.0002] # BHAIKSUKI LETTER AU
+11C0E ; [.330A.0020.0002] # BHAIKSUKI LETTER KA
+11C0F ; [.330B.0020.0002] # BHAIKSUKI LETTER KHA
+11C10 ; [.330C.0020.0002] # BHAIKSUKI LETTER GA
+11C11 ; [.330D.0020.0002] # BHAIKSUKI LETTER GHA
+11C12 ; [.330E.0020.0002] # BHAIKSUKI LETTER NGA
+11C13 ; [.330F.0020.0002] # BHAIKSUKI LETTER CA
+11C14 ; [.3310.0020.0002] # BHAIKSUKI LETTER CHA
+11C15 ; [.3311.0020.0002] # BHAIKSUKI LETTER JA
+11C16 ; [.3312.0020.0002] # BHAIKSUKI LETTER JHA
+11C17 ; [.3313.0020.0002] # BHAIKSUKI LETTER NYA
+11C18 ; [.3314.0020.0002] # BHAIKSUKI LETTER TTA
+11C19 ; [.3315.0020.0002] # BHAIKSUKI LETTER TTHA
+11C1A ; [.3316.0020.0002] # BHAIKSUKI LETTER DDA
+11C1B ; [.3317.0020.0002] # BHAIKSUKI LETTER DDHA
+11C1C ; [.3318.0020.0002] # BHAIKSUKI LETTER NNA
+11C1D ; [.3319.0020.0002] # BHAIKSUKI LETTER TA
+11C1E ; [.331A.0020.0002] # BHAIKSUKI LETTER THA
+11C1F ; [.331B.0020.0002] # BHAIKSUKI LETTER DA
+11C20 ; [.331C.0020.0002] # BHAIKSUKI LETTER DHA
+11C21 ; [.331D.0020.0002] # BHAIKSUKI LETTER NA
+11C22 ; [.331E.0020.0002] # BHAIKSUKI LETTER PA
+11C23 ; [.331F.0020.0002] # BHAIKSUKI LETTER PHA
+11C24 ; [.3320.0020.0002] # BHAIKSUKI LETTER BA
+11C25 ; [.3321.0020.0002] # BHAIKSUKI LETTER BHA
+11C26 ; [.3322.0020.0002] # BHAIKSUKI LETTER MA
+11C27 ; [.3323.0020.0002] # BHAIKSUKI LETTER YA
+11C28 ; [.3324.0020.0002] # BHAIKSUKI LETTER RA
+11C29 ; [.3325.0020.0002] # BHAIKSUKI LETTER LA
+11C2A ; [.3326.0020.0002] # BHAIKSUKI LETTER VA
+11C2B ; [.3327.0020.0002] # BHAIKSUKI LETTER SHA
+11C2C ; [.3328.0020.0002] # BHAIKSUKI LETTER SSA
+11C2D ; [.3329.0020.0002] # BHAIKSUKI LETTER SA
+11C2E ; [.332A.0020.0002] # BHAIKSUKI LETTER HA
+11C40 ; [.332B.0020.0002] # BHAIKSUKI SIGN AVAGRAHA
+11C2F ; [.332C.0020.0002] # BHAIKSUKI VOWEL SIGN AA
+11C30 ; [.332D.0020.0002] # BHAIKSUKI VOWEL SIGN I
+11C31 ; [.332E.0020.0002] # BHAIKSUKI VOWEL SIGN II
+11C32 ; [.332F.0020.0002] # BHAIKSUKI VOWEL SIGN U
+11C33 ; [.3330.0020.0002] # BHAIKSUKI VOWEL SIGN UU
+11C34 ; [.3331.0020.0002] # BHAIKSUKI VOWEL SIGN VOCALIC R
+11C35 ; [.3332.0020.0002] # BHAIKSUKI VOWEL SIGN VOCALIC RR
+11C36 ; [.3333.0020.0002] # BHAIKSUKI VOWEL SIGN VOCALIC L
+11C38 ; [.3334.0020.0002] # BHAIKSUKI VOWEL SIGN E
+11C39 ; [.3335.0020.0002] # BHAIKSUKI VOWEL SIGN AI
+11C3A ; [.3336.0020.0002] # BHAIKSUKI VOWEL SIGN O
+11C3B ; [.3337.0020.0002] # BHAIKSUKI VOWEL SIGN AU
+11C3F ; [.3338.0020.0002] # BHAIKSUKI SIGN VIRAMA
+0E01 ; [.3339.0020.0002] # THAI CHARACTER KO KAI
+0E40 0E01 ; [.3339.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER KO KAI>
+0E41 0E01 ; [.3339.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER KO KAI>
+0E42 0E01 ; [.3339.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER KO KAI>
+0E43 0E01 ; [.3339.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KO KAI>
+0E44 0E01 ; [.3339.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KO KAI>
+0E02 ; [.333A.0020.0002] # THAI CHARACTER KHO KHAI
+0E40 0E02 ; [.333A.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHAI>
+0E41 0E02 ; [.333A.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHAI>
+0E42 0E02 ; [.333A.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHAI>
+0E43 0E02 ; [.333A.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHAI>
+0E44 0E02 ; [.333A.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHAI>
+0E03 ; [.333B.0020.0002] # THAI CHARACTER KHO KHUAT
+0E40 0E03 ; [.333B.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHUAT>
+0E41 0E03 ; [.333B.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHUAT>
+0E42 0E03 ; [.333B.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHUAT>
+0E43 0E03 ; [.333B.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHUAT>
+0E44 0E03 ; [.333B.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHUAT>
+0E04 ; [.333C.0020.0002] # THAI CHARACTER KHO KHWAI
+0E40 0E04 ; [.333C.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHWAI>
+0E41 0E04 ; [.333C.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHWAI>
+0E42 0E04 ; [.333C.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHWAI>
+0E43 0E04 ; [.333C.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHWAI>
+0E44 0E04 ; [.333C.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHWAI>
+0E05 ; [.333D.0020.0002] # THAI CHARACTER KHO KHON
+0E40 0E05 ; [.333D.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER KHO KHON>
+0E41 0E05 ; [.333D.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO KHON>
+0E42 0E05 ; [.333D.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER KHO KHON>
+0E43 0E05 ; [.333D.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO KHON>
+0E44 0E05 ; [.333D.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO KHON>
+0E06 ; [.333E.0020.0002] # THAI CHARACTER KHO RAKHANG
+0E40 0E06 ; [.333E.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER KHO RAKHANG>
+0E41 0E06 ; [.333E.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER KHO RAKHANG>
+0E42 0E06 ; [.333E.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER KHO RAKHANG>
+0E43 0E06 ; [.333E.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER KHO RAKHANG>
+0E44 0E06 ; [.333E.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER KHO RAKHANG>
+0E07 ; [.333F.0020.0002] # THAI CHARACTER NGO NGU
+0E40 0E07 ; [.333F.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER NGO NGU>
+0E41 0E07 ; [.333F.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER NGO NGU>
+0E42 0E07 ; [.333F.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER NGO NGU>
+0E43 0E07 ; [.333F.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER NGO NGU>
+0E44 0E07 ; [.333F.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER NGO NGU>
+0E08 ; [.3340.0020.0002] # THAI CHARACTER CHO CHAN
+0E40 0E08 ; [.3340.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHAN>
+0E41 0E08 ; [.3340.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHAN>
+0E42 0E08 ; [.3340.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHAN>
+0E43 0E08 ; [.3340.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHAN>
+0E44 0E08 ; [.3340.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHAN>
+0E09 ; [.3341.0020.0002] # THAI CHARACTER CHO CHING
+0E40 0E09 ; [.3341.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHING>
+0E41 0E09 ; [.3341.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHING>
+0E42 0E09 ; [.3341.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHING>
+0E43 0E09 ; [.3341.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHING>
+0E44 0E09 ; [.3341.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHING>
+0E0A ; [.3342.0020.0002] # THAI CHARACTER CHO CHANG
+0E40 0E0A ; [.3342.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHANG>
+0E41 0E0A ; [.3342.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHANG>
+0E42 0E0A ; [.3342.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHANG>
+0E43 0E0A ; [.3342.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHANG>
+0E44 0E0A ; [.3342.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHANG>
+0E0B ; [.3343.0020.0002] # THAI CHARACTER SO SO
+0E40 0E0B ; [.3343.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER SO SO>
+0E41 0E0B ; [.3343.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER SO SO>
+0E42 0E0B ; [.3343.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER SO SO>
+0E43 0E0B ; [.3343.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO SO>
+0E44 0E0B ; [.3343.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO SO>
+0E0C ; [.3344.0020.0002] # THAI CHARACTER CHO CHOE
+0E40 0E0C ; [.3344.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER CHO CHOE>
+0E41 0E0C ; [.3344.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER CHO CHOE>
+0E42 0E0C ; [.3344.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER CHO CHOE>
+0E43 0E0C ; [.3344.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER CHO CHOE>
+0E44 0E0C ; [.3344.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER CHO CHOE>
+0E0D ; [.3345.0020.0002] # THAI CHARACTER YO YING
+0E40 0E0D ; [.3345.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER YO YING>
+0E41 0E0D ; [.3345.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER YO YING>
+0E42 0E0D ; [.3345.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER YO YING>
+0E43 0E0D ; [.3345.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER YO YING>
+0E44 0E0D ; [.3345.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER YO YING>
+0E0E ; [.3346.0020.0002] # THAI CHARACTER DO CHADA
+0E40 0E0E ; [.3346.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER DO CHADA>
+0E41 0E0E ; [.3346.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER DO CHADA>
+0E42 0E0E ; [.3346.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER DO CHADA>
+0E43 0E0E ; [.3346.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER DO CHADA>
+0E44 0E0E ; [.3346.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER DO CHADA>
+0E0F ; [.3347.0020.0002] # THAI CHARACTER TO PATAK
+0E40 0E0F ; [.3347.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER TO PATAK>
+0E41 0E0F ; [.3347.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER TO PATAK>
+0E42 0E0F ; [.3347.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER TO PATAK>
+0E43 0E0F ; [.3347.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER TO PATAK>
+0E44 0E0F ; [.3347.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER TO PATAK>
+0E10 ; [.3348.0020.0002] # THAI CHARACTER THO THAN
+0E40 0E10 ; [.3348.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER THO THAN>
+0E41 0E10 ; [.3348.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THAN>
+0E42 0E10 ; [.3348.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER THO THAN>
+0E43 0E10 ; [.3348.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THAN>
+0E44 0E10 ; [.3348.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THAN>
+0E11 ; [.3349.0020.0002] # THAI CHARACTER THO NANGMONTHO
+0E40 0E11 ; [.3349.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER THO NANGMONTHO>
+0E41 0E11 ; [.3349.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER THO NANGMONTHO>
+0E42 0E11 ; [.3349.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER THO NANGMONTHO>
+0E43 0E11 ; [.3349.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO NANGMONTHO>
+0E44 0E11 ; [.3349.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO NANGMONTHO>
+0E12 ; [.334A.0020.0002] # THAI CHARACTER THO PHUTHAO
+0E40 0E12 ; [.334A.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER THO PHUTHAO>
+0E41 0E12 ; [.334A.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER THO PHUTHAO>
+0E42 0E12 ; [.334A.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER THO PHUTHAO>
+0E43 0E12 ; [.334A.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO PHUTHAO>
+0E44 0E12 ; [.334A.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO PHUTHAO>
+0E13 ; [.334B.0020.0002] # THAI CHARACTER NO NEN
+0E40 0E13 ; [.334B.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER NO NEN>
+0E41 0E13 ; [.334B.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER NO NEN>
+0E42 0E13 ; [.334B.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER NO NEN>
+0E43 0E13 ; [.334B.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER NO NEN>
+0E44 0E13 ; [.334B.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER NO NEN>
+0E14 ; [.334C.0020.0002] # THAI CHARACTER DO DEK
+0E40 0E14 ; [.334C.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER DO DEK>
+0E41 0E14 ; [.334C.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER DO DEK>
+0E42 0E14 ; [.334C.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER DO DEK>
+0E43 0E14 ; [.334C.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER DO DEK>
+0E44 0E14 ; [.334C.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER DO DEK>
+0E15 ; [.334D.0020.0002] # THAI CHARACTER TO TAO
+0E40 0E15 ; [.334D.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER TO TAO>
+0E41 0E15 ; [.334D.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER TO TAO>
+0E42 0E15 ; [.334D.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER TO TAO>
+0E43 0E15 ; [.334D.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER TO TAO>
+0E44 0E15 ; [.334D.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER TO TAO>
+0E16 ; [.334E.0020.0002] # THAI CHARACTER THO THUNG
+0E40 0E16 ; [.334E.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER THO THUNG>
+0E41 0E16 ; [.334E.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THUNG>
+0E42 0E16 ; [.334E.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER THO THUNG>
+0E43 0E16 ; [.334E.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THUNG>
+0E44 0E16 ; [.334E.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THUNG>
+0E17 ; [.334F.0020.0002] # THAI CHARACTER THO THAHAN
+0E40 0E17 ; [.334F.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER THO THAHAN>
+0E41 0E17 ; [.334F.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THAHAN>
+0E42 0E17 ; [.334F.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER THO THAHAN>
+0E43 0E17 ; [.334F.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THAHAN>
+0E44 0E17 ; [.334F.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THAHAN>
+0E18 ; [.3350.0020.0002] # THAI CHARACTER THO THONG
+0E40 0E18 ; [.3350.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER THO THONG>
+0E41 0E18 ; [.3350.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER THO THONG>
+0E42 0E18 ; [.3350.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER THO THONG>
+0E43 0E18 ; [.3350.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER THO THONG>
+0E44 0E18 ; [.3350.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER THO THONG>
+0E19 ; [.3351.0020.0002] # THAI CHARACTER NO NU
+0E40 0E19 ; [.3351.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER NO NU>
+0E41 0E19 ; [.3351.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER NO NU>
+0E42 0E19 ; [.3351.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER NO NU>
+0E43 0E19 ; [.3351.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER NO NU>
+0E44 0E19 ; [.3351.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER NO NU>
+0E1A ; [.3352.0020.0002] # THAI CHARACTER BO BAIMAI
+0E40 0E1A ; [.3352.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER BO BAIMAI>
+0E41 0E1A ; [.3352.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER BO BAIMAI>
+0E42 0E1A ; [.3352.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER BO BAIMAI>
+0E43 0E1A ; [.3352.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER BO BAIMAI>
+0E44 0E1A ; [.3352.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER BO BAIMAI>
+0E1B ; [.3353.0020.0002] # THAI CHARACTER PO PLA
+0E40 0E1B ; [.3353.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER PO PLA>
+0E41 0E1B ; [.3353.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER PO PLA>
+0E42 0E1B ; [.3353.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER PO PLA>
+0E43 0E1B ; [.3353.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PO PLA>
+0E44 0E1B ; [.3353.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PO PLA>
+0E1C ; [.3354.0020.0002] # THAI CHARACTER PHO PHUNG
+0E40 0E1C ; [.3354.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER PHO PHUNG>
+0E41 0E1C ; [.3354.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER PHO PHUNG>
+0E42 0E1C ; [.3354.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER PHO PHUNG>
+0E43 0E1C ; [.3354.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PHO PHUNG>
+0E44 0E1C ; [.3354.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PHO PHUNG>
+0E1D ; [.3355.0020.0002] # THAI CHARACTER FO FA
+0E40 0E1D ; [.3355.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER FO FA>
+0E41 0E1D ; [.3355.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER FO FA>
+0E42 0E1D ; [.3355.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER FO FA>
+0E43 0E1D ; [.3355.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER FO FA>
+0E44 0E1D ; [.3355.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER FO FA>
+0E1E ; [.3356.0020.0002] # THAI CHARACTER PHO PHAN
+0E40 0E1E ; [.3356.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER PHO PHAN>
+0E41 0E1E ; [.3356.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER PHO PHAN>
+0E42 0E1E ; [.3356.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER PHO PHAN>
+0E43 0E1E ; [.3356.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PHO PHAN>
+0E44 0E1E ; [.3356.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PHO PHAN>
+0E1F ; [.3357.0020.0002] # THAI CHARACTER FO FAN
+0E40 0E1F ; [.3357.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER FO FAN>
+0E41 0E1F ; [.3357.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER FO FAN>
+0E42 0E1F ; [.3357.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER FO FAN>
+0E43 0E1F ; [.3357.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER FO FAN>
+0E44 0E1F ; [.3357.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER FO FAN>
+0E20 ; [.3358.0020.0002] # THAI CHARACTER PHO SAMPHAO
+0E40 0E20 ; [.3358.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER PHO SAMPHAO>
+0E41 0E20 ; [.3358.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER PHO SAMPHAO>
+0E42 0E20 ; [.3358.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER PHO SAMPHAO>
+0E43 0E20 ; [.3358.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER PHO SAMPHAO>
+0E44 0E20 ; [.3358.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER PHO SAMPHAO>
+0E21 ; [.3359.0020.0002] # THAI CHARACTER MO MA
+0E40 0E21 ; [.3359.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER MO MA>
+0E41 0E21 ; [.3359.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER MO MA>
+0E42 0E21 ; [.3359.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER MO MA>
+0E43 0E21 ; [.3359.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER MO MA>
+0E44 0E21 ; [.3359.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER MO MA>
+0E22 ; [.335A.0020.0002] # THAI CHARACTER YO YAK
+0E40 0E22 ; [.335A.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER YO YAK>
+0E41 0E22 ; [.335A.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER YO YAK>
+0E42 0E22 ; [.335A.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER YO YAK>
+0E43 0E22 ; [.335A.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER YO YAK>
+0E44 0E22 ; [.335A.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER YO YAK>
+0E23 ; [.335B.0020.0002] # THAI CHARACTER RO RUA
+0E40 0E23 ; [.335B.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER RO RUA>
+0E41 0E23 ; [.335B.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER RO RUA>
+0E42 0E23 ; [.335B.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER RO RUA>
+0E43 0E23 ; [.335B.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER RO RUA>
+0E44 0E23 ; [.335B.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER RO RUA>
+0E24 ; [.335C.0020.0002] # THAI CHARACTER RU
+0E40 0E24 ; [.335C.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER RU>
+0E41 0E24 ; [.335C.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER RU>
+0E42 0E24 ; [.335C.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER RU>
+0E43 0E24 ; [.335C.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER RU>
+0E44 0E24 ; [.335C.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER RU>
+0E25 ; [.335D.0020.0002] # THAI CHARACTER LO LING
+0E40 0E25 ; [.335D.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER LO LING>
+0E41 0E25 ; [.335D.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER LO LING>
+0E42 0E25 ; [.335D.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER LO LING>
+0E43 0E25 ; [.335D.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER LO LING>
+0E44 0E25 ; [.335D.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER LO LING>
+0E26 ; [.335E.0020.0002] # THAI CHARACTER LU
+0E40 0E26 ; [.335E.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER LU>
+0E41 0E26 ; [.335E.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER LU>
+0E42 0E26 ; [.335E.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER LU>
+0E43 0E26 ; [.335E.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER LU>
+0E44 0E26 ; [.335E.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER LU>
+0E27 ; [.335F.0020.0002] # THAI CHARACTER WO WAEN
+0E40 0E27 ; [.335F.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER WO WAEN>
+0E41 0E27 ; [.335F.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER WO WAEN>
+0E42 0E27 ; [.335F.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER WO WAEN>
+0E43 0E27 ; [.335F.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER WO WAEN>
+0E44 0E27 ; [.335F.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER WO WAEN>
+0E28 ; [.3360.0020.0002] # THAI CHARACTER SO SALA
+0E40 0E28 ; [.3360.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER SO SALA>
+0E41 0E28 ; [.3360.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER SO SALA>
+0E42 0E28 ; [.3360.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER SO SALA>
+0E43 0E28 ; [.3360.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO SALA>
+0E44 0E28 ; [.3360.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO SALA>
+0E29 ; [.3361.0020.0002] # THAI CHARACTER SO RUSI
+0E40 0E29 ; [.3361.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER SO RUSI>
+0E41 0E29 ; [.3361.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER SO RUSI>
+0E42 0E29 ; [.3361.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER SO RUSI>
+0E43 0E29 ; [.3361.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO RUSI>
+0E44 0E29 ; [.3361.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO RUSI>
+0E2A ; [.3362.0020.0002] # THAI CHARACTER SO SUA
+0E40 0E2A ; [.3362.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER SO SUA>
+0E41 0E2A ; [.3362.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER SO SUA>
+0E42 0E2A ; [.3362.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER SO SUA>
+0E43 0E2A ; [.3362.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER SO SUA>
+0E44 0E2A ; [.3362.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER SO SUA>
+0E2B ; [.3363.0020.0002] # THAI CHARACTER HO HIP
+0E40 0E2B ; [.3363.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER HO HIP>
+0E41 0E2B ; [.3363.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER HO HIP>
+0E42 0E2B ; [.3363.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER HO HIP>
+0E43 0E2B ; [.3363.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER HO HIP>
+0E44 0E2B ; [.3363.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER HO HIP>
+0E2C ; [.3364.0020.0002] # THAI CHARACTER LO CHULA
+0E40 0E2C ; [.3364.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER LO CHULA>
+0E41 0E2C ; [.3364.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER LO CHULA>
+0E42 0E2C ; [.3364.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER LO CHULA>
+0E43 0E2C ; [.3364.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER LO CHULA>
+0E44 0E2C ; [.3364.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER LO CHULA>
+0E2D ; [.3365.0020.0002] # THAI CHARACTER O ANG
+0E40 0E2D ; [.3365.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER O ANG>
+0E41 0E2D ; [.3365.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER O ANG>
+0E42 0E2D ; [.3365.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER O ANG>
+0E43 0E2D ; [.3365.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER O ANG>
+0E44 0E2D ; [.3365.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER O ANG>
+0E2E ; [.3366.0020.0002] # THAI CHARACTER HO NOKHUK
+0E40 0E2E ; [.3366.0020.0002][.3373.0020.0002] # <THAI CHARACTER SARA E, THAI CHARACTER HO NOKHUK>
+0E41 0E2E ; [.3366.0020.0002][.3374.0020.0002] # <THAI CHARACTER SARA AE, THAI CHARACTER HO NOKHUK>
+0E42 0E2E ; [.3366.0020.0002][.3375.0020.0002] # <THAI CHARACTER SARA O, THAI CHARACTER HO NOKHUK>
+0E43 0E2E ; [.3366.0020.0002][.3376.0020.0002] # <THAI CHARACTER SARA AI MAIMUAN, THAI CHARACTER HO NOKHUK>
+0E44 0E2E ; [.3366.0020.0002][.3377.0020.0002] # <THAI CHARACTER SARA AI MAIMALAI, THAI CHARACTER HO NOKHUK>
+0E2F ; [.3367.0020.0002] # THAI CHARACTER PAIYANNOI
+0E30 ; [.3368.0020.0002] # THAI CHARACTER SARA A
+0E31 ; [.3369.0020.0002] # THAI CHARACTER MAI HAN-AKAT
+0E32 ; [.336A.0020.0002] # THAI CHARACTER SARA AA
+0E33 ; [.336B.0020.0002] # THAI CHARACTER SARA AM
+0E4D 0E32 ; [.336B.0020.0002] # THAI CHARACTER SARA AM
+0E34 ; [.336C.0020.0002] # THAI CHARACTER SARA I
+0E35 ; [.336D.0020.0002] # THAI CHARACTER SARA II
+0E36 ; [.336E.0020.0002] # THAI CHARACTER SARA UE
+0E37 ; [.336F.0020.0002] # THAI CHARACTER SARA UEE
+0E38 ; [.3370.0020.0002] # THAI CHARACTER SARA U
+0E39 ; [.3371.0020.0002] # THAI CHARACTER SARA UU
+0E3A ; [.3372.0020.0002] # THAI CHARACTER PHINTHU
+0E40 ; [.3373.0020.0002] # THAI CHARACTER SARA E
+0E41 ; [.3374.0020.0002] # THAI CHARACTER SARA AE
+0E42 ; [.3375.0020.0002] # THAI CHARACTER SARA O
+0E43 ; [.3376.0020.0002] # THAI CHARACTER SARA AI MAIMUAN
+0E44 ; [.3377.0020.0002] # THAI CHARACTER SARA AI MAIMALAI
+0E45 ; [.3378.0020.0002] # THAI CHARACTER LAKKHANGYAO
+0EDE ; [.3379.0020.0002] # LAO LETTER KHMU GO
+0EC0 0EDE ; [.3379.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER KHMU GO>
+0EC1 0EDE ; [.3379.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER KHMU GO>
+0EC2 0EDE ; [.3379.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER KHMU GO>
+0EC3 0EDE ; [.3379.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER KHMU GO>
+0EC4 0EDE ; [.3379.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER KHMU GO>
+0E81 ; [.337A.0020.0002] # LAO LETTER KO
+0EC0 0E81 ; [.337A.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER KO>
+0EC1 0E81 ; [.337A.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER KO>
+0EC2 0E81 ; [.337A.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER KO>
+0EC3 0E81 ; [.337A.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER KO>
+0EC4 0E81 ; [.337A.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER KO>
+0E82 ; [.337B.0020.0002] # LAO LETTER KHO SUNG
+0EC0 0E82 ; [.337B.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER KHO SUNG>
+0EC1 0E82 ; [.337B.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER KHO SUNG>
+0EC2 0E82 ; [.337B.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER KHO SUNG>
+0EC3 0E82 ; [.337B.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER KHO SUNG>
+0EC4 0E82 ; [.337B.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER KHO SUNG>
+0E84 ; [.337C.0020.0002] # LAO LETTER KHO TAM
+0EC0 0E84 ; [.337C.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER KHO TAM>
+0EC1 0E84 ; [.337C.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER KHO TAM>
+0EC2 0E84 ; [.337C.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER KHO TAM>
+0EC3 0E84 ; [.337C.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER KHO TAM>
+0EC4 0E84 ; [.337C.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER KHO TAM>
+0E86 ; [.337D.0020.0002] # LAO LETTER PALI GHA
+0EC0 0E86 ; [.337D.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI GHA>
+0EC1 0E86 ; [.337D.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI GHA>
+0EC2 0E86 ; [.337D.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI GHA>
+0EC3 0E86 ; [.337D.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI GHA>
+0EC4 0E86 ; [.337D.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI GHA>
+0E87 ; [.337E.0020.0002] # LAO LETTER NGO
+0EC0 0E87 ; [.337E.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER NGO>
+0EC1 0E87 ; [.337E.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER NGO>
+0EC2 0E87 ; [.337E.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER NGO>
+0EC3 0E87 ; [.337E.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER NGO>
+0EC4 0E87 ; [.337E.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER NGO>
+0E88 ; [.337F.0020.0002] # LAO LETTER CO
+0EC0 0E88 ; [.337F.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER CO>
+0EC1 0E88 ; [.337F.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER CO>
+0EC2 0E88 ; [.337F.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER CO>
+0EC3 0E88 ; [.337F.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER CO>
+0EC4 0E88 ; [.337F.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER CO>
+0E89 ; [.3380.0020.0002] # LAO LETTER PALI CHA
+0EC0 0E89 ; [.3380.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI CHA>
+0EC1 0E89 ; [.3380.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI CHA>
+0EC2 0E89 ; [.3380.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI CHA>
+0EC3 0E89 ; [.3380.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI CHA>
+0EC4 0E89 ; [.3380.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI CHA>
+0EAA ; [.3381.0020.0002] # LAO LETTER SO SUNG
+0EC0 0EAA ; [.3381.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER SO SUNG>
+0EC1 0EAA ; [.3381.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER SO SUNG>
+0EC2 0EAA ; [.3381.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER SO SUNG>
+0EC3 0EAA ; [.3381.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER SO SUNG>
+0EC4 0EAA ; [.3381.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER SO SUNG>
+0E8A ; [.3382.0020.0002] # LAO LETTER SO TAM
+0EC0 0E8A ; [.3382.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER SO TAM>
+0EC1 0E8A ; [.3382.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER SO TAM>
+0EC2 0E8A ; [.3382.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER SO TAM>
+0EC3 0E8A ; [.3382.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER SO TAM>
+0EC4 0E8A ; [.3382.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER SO TAM>
+0E8C ; [.3383.0020.0002] # LAO LETTER PALI JHA
+0EC0 0E8C ; [.3383.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI JHA>
+0EC1 0E8C ; [.3383.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI JHA>
+0EC2 0E8C ; [.3383.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI JHA>
+0EC3 0E8C ; [.3383.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI JHA>
+0EC4 0E8C ; [.3383.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI JHA>
+0E8E ; [.3384.0020.0002] # LAO LETTER PALI NYA
+0EC0 0E8E ; [.3384.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI NYA>
+0EC1 0E8E ; [.3384.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI NYA>
+0EC2 0E8E ; [.3384.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI NYA>
+0EC3 0E8E ; [.3384.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI NYA>
+0EC4 0E8E ; [.3384.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI NYA>
+0EDF ; [.3385.0020.0002] # LAO LETTER KHMU NYO
+0EC0 0EDF ; [.3385.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER KHMU NYO>
+0EC1 0EDF ; [.3385.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER KHMU NYO>
+0EC2 0EDF ; [.3385.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER KHMU NYO>
+0EC3 0EDF ; [.3385.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER KHMU NYO>
+0EC4 0EDF ; [.3385.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER KHMU NYO>
+0E8D ; [.3386.0020.0002] # LAO LETTER NYO
+0EC0 0E8D ; [.3386.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER NYO>
+0EC1 0E8D ; [.3386.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER NYO>
+0EC2 0E8D ; [.3386.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER NYO>
+0EC3 0E8D ; [.3386.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER NYO>
+0EC4 0E8D ; [.3386.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER NYO>
+0E8F ; [.3387.0020.0002] # LAO LETTER PALI TTA
+0EC0 0E8F ; [.3387.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI TTA>
+0EC1 0E8F ; [.3387.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI TTA>
+0EC2 0E8F ; [.3387.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI TTA>
+0EC3 0E8F ; [.3387.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI TTA>
+0EC4 0E8F ; [.3387.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI TTA>
+0E90 ; [.3388.0020.0002] # LAO LETTER PALI TTHA
+0EC0 0E90 ; [.3388.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI TTHA>
+0EC1 0E90 ; [.3388.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI TTHA>
+0EC2 0E90 ; [.3388.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI TTHA>
+0EC3 0E90 ; [.3388.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI TTHA>
+0EC4 0E90 ; [.3388.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI TTHA>
+0E91 ; [.3389.0020.0002] # LAO LETTER PALI DDA
+0EC0 0E91 ; [.3389.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI DDA>
+0EC1 0E91 ; [.3389.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI DDA>
+0EC2 0E91 ; [.3389.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI DDA>
+0EC3 0E91 ; [.3389.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI DDA>
+0EC4 0E91 ; [.3389.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI DDA>
+0E92 ; [.338A.0020.0002] # LAO LETTER PALI DDHA
+0EC0 0E92 ; [.338A.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI DDHA>
+0EC1 0E92 ; [.338A.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI DDHA>
+0EC2 0E92 ; [.338A.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI DDHA>
+0EC3 0E92 ; [.338A.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI DDHA>
+0EC4 0E92 ; [.338A.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI DDHA>
+0E93 ; [.338B.0020.0002] # LAO LETTER PALI NNA
+0EC0 0E93 ; [.338B.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI NNA>
+0EC1 0E93 ; [.338B.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI NNA>
+0EC2 0E93 ; [.338B.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI NNA>
+0EC3 0E93 ; [.338B.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI NNA>
+0EC4 0E93 ; [.338B.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI NNA>
+0E94 ; [.338C.0020.0002] # LAO LETTER DO
+0EC0 0E94 ; [.338C.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER DO>
+0EC1 0E94 ; [.338C.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER DO>
+0EC2 0E94 ; [.338C.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER DO>
+0EC3 0E94 ; [.338C.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER DO>
+0EC4 0E94 ; [.338C.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER DO>
+0E95 ; [.338D.0020.0002] # LAO LETTER TO
+0EC0 0E95 ; [.338D.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER TO>
+0EC1 0E95 ; [.338D.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER TO>
+0EC2 0E95 ; [.338D.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER TO>
+0EC3 0E95 ; [.338D.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER TO>
+0EC4 0E95 ; [.338D.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER TO>
+0E96 ; [.338E.0020.0002] # LAO LETTER THO SUNG
+0EC0 0E96 ; [.338E.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER THO SUNG>
+0EC1 0E96 ; [.338E.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER THO SUNG>
+0EC2 0E96 ; [.338E.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER THO SUNG>
+0EC3 0E96 ; [.338E.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER THO SUNG>
+0EC4 0E96 ; [.338E.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER THO SUNG>
+0E97 ; [.338F.0020.0002] # LAO LETTER THO TAM
+0EC0 0E97 ; [.338F.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER THO TAM>
+0EC1 0E97 ; [.338F.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER THO TAM>
+0EC2 0E97 ; [.338F.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER THO TAM>
+0EC3 0E97 ; [.338F.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER THO TAM>
+0EC4 0E97 ; [.338F.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER THO TAM>
+0E98 ; [.3390.0020.0002] # LAO LETTER PALI DHA
+0EC0 0E98 ; [.3390.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI DHA>
+0EC1 0E98 ; [.3390.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI DHA>
+0EC2 0E98 ; [.3390.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI DHA>
+0EC3 0E98 ; [.3390.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI DHA>
+0EC4 0E98 ; [.3390.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI DHA>
+0E99 ; [.3391.0020.0002] # LAO LETTER NO
+0EC0 0E99 ; [.3391.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER NO>
+0EC1 0E99 ; [.3391.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER NO>
+0EC2 0E99 ; [.3391.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER NO>
+0EC3 0E99 ; [.3391.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER NO>
+0EC4 0E99 ; [.3391.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER NO>
+0E9A ; [.3392.0020.0002] # LAO LETTER BO
+0EC0 0E9A ; [.3392.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER BO>
+0EC1 0E9A ; [.3392.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER BO>
+0EC2 0E9A ; [.3392.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER BO>
+0EC3 0E9A ; [.3392.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER BO>
+0EC4 0E9A ; [.3392.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER BO>
+0E9B ; [.3393.0020.0002] # LAO LETTER PO
+0EC0 0E9B ; [.3393.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PO>
+0EC1 0E9B ; [.3393.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PO>
+0EC2 0E9B ; [.3393.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PO>
+0EC3 0E9B ; [.3393.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PO>
+0EC4 0E9B ; [.3393.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PO>
+0E9C ; [.3394.0020.0002] # LAO LETTER PHO SUNG
+0EC0 0E9C ; [.3394.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PHO SUNG>
+0EC1 0E9C ; [.3394.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PHO SUNG>
+0EC2 0E9C ; [.3394.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PHO SUNG>
+0EC3 0E9C ; [.3394.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PHO SUNG>
+0EC4 0E9C ; [.3394.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PHO SUNG>
+0E9D ; [.3395.0020.0002] # LAO LETTER FO TAM
+0EC0 0E9D ; [.3395.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER FO TAM>
+0EC1 0E9D ; [.3395.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER FO TAM>
+0EC2 0E9D ; [.3395.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER FO TAM>
+0EC3 0E9D ; [.3395.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER FO TAM>
+0EC4 0E9D ; [.3395.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER FO TAM>
+0E9E ; [.3396.0020.0002] # LAO LETTER PHO TAM
+0EC0 0E9E ; [.3396.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PHO TAM>
+0EC1 0E9E ; [.3396.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PHO TAM>
+0EC2 0E9E ; [.3396.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PHO TAM>
+0EC3 0E9E ; [.3396.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PHO TAM>
+0EC4 0E9E ; [.3396.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PHO TAM>
+0E9F ; [.3397.0020.0002] # LAO LETTER FO SUNG
+0EC0 0E9F ; [.3397.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER FO SUNG>
+0EC1 0E9F ; [.3397.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER FO SUNG>
+0EC2 0E9F ; [.3397.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER FO SUNG>
+0EC3 0E9F ; [.3397.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER FO SUNG>
+0EC4 0E9F ; [.3397.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER FO SUNG>
+0EA0 ; [.3398.0020.0002] # LAO LETTER PALI BHA
+0EC0 0EA0 ; [.3398.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI BHA>
+0EC1 0EA0 ; [.3398.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI BHA>
+0EC2 0EA0 ; [.3398.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI BHA>
+0EC3 0EA0 ; [.3398.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI BHA>
+0EC4 0EA0 ; [.3398.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI BHA>
+0EA1 ; [.3399.0020.0002] # LAO LETTER MO
+0EC0 0EA1 ; [.3399.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER MO>
+0EC1 0EA1 ; [.3399.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER MO>
+0EC2 0EA1 ; [.3399.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER MO>
+0EC3 0EA1 ; [.3399.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER MO>
+0EC4 0EA1 ; [.3399.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER MO>
+0EA2 ; [.339A.0020.0002] # LAO LETTER YO
+0EC0 0EA2 ; [.339A.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER YO>
+0EC1 0EA2 ; [.339A.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER YO>
+0EC2 0EA2 ; [.339A.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER YO>
+0EC3 0EA2 ; [.339A.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER YO>
+0EC4 0EA2 ; [.339A.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER YO>
+0EA3 ; [.339B.0020.0002] # LAO LETTER LO LING
+0EC0 0EA3 ; [.339B.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER LO LING>
+0EC1 0EA3 ; [.339B.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER LO LING>
+0EC2 0EA3 ; [.339B.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER LO LING>
+0EC3 0EA3 ; [.339B.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER LO LING>
+0EC4 0EA3 ; [.339B.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER LO LING>
+0EA5 ; [.339C.0020.0002] # LAO LETTER LO LOOT
+0EC0 0EA5 ; [.339C.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER LO LOOT>
+0EC1 0EA5 ; [.339C.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER LO LOOT>
+0EC2 0EA5 ; [.339C.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER LO LOOT>
+0EC3 0EA5 ; [.339C.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER LO LOOT>
+0EC4 0EA5 ; [.339C.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER LO LOOT>
+0EA7 ; [.339D.0020.0002] # LAO LETTER WO
+0EC0 0EA7 ; [.339D.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER WO>
+0EC1 0EA7 ; [.339D.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER WO>
+0EC2 0EA7 ; [.339D.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER WO>
+0EC3 0EA7 ; [.339D.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER WO>
+0EC4 0EA7 ; [.339D.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER WO>
+0EA8 ; [.339E.0020.0002] # LAO LETTER SANSKRIT SHA
+0EC0 0EA8 ; [.339E.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER SANSKRIT SHA>
+0EC1 0EA8 ; [.339E.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER SANSKRIT SHA>
+0EC2 0EA8 ; [.339E.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER SANSKRIT SHA>
+0EC3 0EA8 ; [.339E.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER SANSKRIT SHA>
+0EC4 0EA8 ; [.339E.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER SANSKRIT SHA>
+0EA9 ; [.339F.0020.0002] # LAO LETTER SANSKRIT SSA
+0EC0 0EA9 ; [.339F.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER SANSKRIT SSA>
+0EC1 0EA9 ; [.339F.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER SANSKRIT SSA>
+0EC2 0EA9 ; [.339F.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER SANSKRIT SSA>
+0EC3 0EA9 ; [.339F.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER SANSKRIT SSA>
+0EC4 0EA9 ; [.339F.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER SANSKRIT SSA>
+0EAB ; [.33A0.0020.0002] # LAO LETTER HO SUNG
+0EDC ; [.33A0.0020.0004][.3391.0020.0004] # LAO HO NO
+0EC0 0EDC ; [.33A0.0020.0004][.3391.0020.0004][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO HO NO>
+0EC1 0EDC ; [.33A0.0020.0004][.3391.0020.0004][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO HO NO>
+0EC2 0EDC ; [.33A0.0020.0004][.3391.0020.0004][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO HO NO>
+0EC3 0EDC ; [.33A0.0020.0004][.3391.0020.0004][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO HO NO>
+0EC4 0EDC ; [.33A0.0020.0004][.3391.0020.0004][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO HO NO>
+0EDD ; [.33A0.0020.0004][.3399.0020.0004] # LAO HO MO
+0EC0 0EDD ; [.33A0.0020.0004][.3399.0020.0004][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO HO MO>
+0EC1 0EDD ; [.33A0.0020.0004][.3399.0020.0004][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO HO MO>
+0EC2 0EDD ; [.33A0.0020.0004][.3399.0020.0004][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO HO MO>
+0EC3 0EDD ; [.33A0.0020.0004][.3399.0020.0004][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO HO MO>
+0EC4 0EDD ; [.33A0.0020.0004][.3399.0020.0004][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO HO MO>
+0EC0 0EAB ; [.33A0.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER HO SUNG>
+0EC1 0EAB ; [.33A0.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER HO SUNG>
+0EC2 0EAB ; [.33A0.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER HO SUNG>
+0EC3 0EAB ; [.33A0.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER HO SUNG>
+0EC4 0EAB ; [.33A0.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER HO SUNG>
+0EAC ; [.33A1.0020.0002] # LAO LETTER PALI LLA
+0EC0 0EAC ; [.33A1.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER PALI LLA>
+0EC1 0EAC ; [.33A1.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER PALI LLA>
+0EC2 0EAC ; [.33A1.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER PALI LLA>
+0EC3 0EAC ; [.33A1.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER PALI LLA>
+0EC4 0EAC ; [.33A1.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER PALI LLA>
+0EAD ; [.33A2.0020.0002] # LAO LETTER O
+0EC0 0EAD ; [.33A2.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER O>
+0EC1 0EAD ; [.33A2.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER O>
+0EC2 0EAD ; [.33A2.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER O>
+0EC3 0EAD ; [.33A2.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER O>
+0EC4 0EAD ; [.33A2.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER O>
+0EAE ; [.33A3.0020.0002] # LAO LETTER HO TAM
+0EC0 0EAE ; [.33A3.0020.0002][.33B3.0020.0002] # <LAO VOWEL SIGN E, LAO LETTER HO TAM>
+0EC1 0EAE ; [.33A3.0020.0002][.33B4.0020.0002] # <LAO VOWEL SIGN EI, LAO LETTER HO TAM>
+0EC2 0EAE ; [.33A3.0020.0002][.33B5.0020.0002] # <LAO VOWEL SIGN O, LAO LETTER HO TAM>
+0EC3 0EAE ; [.33A3.0020.0002][.33B6.0020.0002] # <LAO VOWEL SIGN AY, LAO LETTER HO TAM>
+0EC4 0EAE ; [.33A3.0020.0002][.33B7.0020.0002] # <LAO VOWEL SIGN AI, LAO LETTER HO TAM>
+0EAF ; [.33A4.0020.0002] # LAO ELLIPSIS
+0EB0 ; [.33A5.0020.0002] # LAO VOWEL SIGN A
+0EB1 ; [.33A6.0020.0002] # LAO VOWEL SIGN MAI KAN
+0EB2 ; [.33A7.0020.0002] # LAO VOWEL SIGN AA
+0EB3 ; [.33A8.0020.0002] # LAO VOWEL SIGN AM
+0ECD 0EB2 ; [.33A8.0020.0002] # LAO VOWEL SIGN AM
+0EB4 ; [.33A9.0020.0002] # LAO VOWEL SIGN I
+0EB5 ; [.33AA.0020.0002] # LAO VOWEL SIGN II
+0EB6 ; [.33AB.0020.0002] # LAO VOWEL SIGN Y
+0EB7 ; [.33AC.0020.0002] # LAO VOWEL SIGN YY
+0EB8 ; [.33AD.0020.0002] # LAO VOWEL SIGN U
+0EB9 ; [.33AE.0020.0002] # LAO VOWEL SIGN UU
+0EBA ; [.33AF.0020.0002] # LAO SIGN PALI VIRAMA
+0EBB ; [.33B0.0020.0002] # LAO VOWEL SIGN MAI KON
+0EBC ; [.33B1.0020.0002] # LAO SEMIVOWEL SIGN LO
+0EBD ; [.33B2.0020.0002] # LAO SEMIVOWEL SIGN NYO
+0EC0 ; [.33B3.0020.0002] # LAO VOWEL SIGN E
+0EC1 ; [.33B4.0020.0002] # LAO VOWEL SIGN EI
+0EC2 ; [.33B5.0020.0002] # LAO VOWEL SIGN O
+0EC3 ; [.33B6.0020.0002] # LAO VOWEL SIGN AY
+0EC4 ; [.33B7.0020.0002] # LAO VOWEL SIGN AI
+AA80 ; [.33B8.0020.0002] # TAI VIET LETTER LOW KO
+AAB5 AA80 ; [.33B8.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW KO>
+AAB6 AA80 ; [.33B8.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW KO>
+AAB9 AA80 ; [.33B8.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW KO>
+AABB AA80 ; [.33B8.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW KO>
+AABC AA80 ; [.33B8.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW KO>
+AA81 ; [.33B9.0020.0002] # TAI VIET LETTER HIGH KO
+AAB5 AA81 ; [.33B9.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH KO>
+AAB6 AA81 ; [.33B9.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH KO>
+AAB9 AA81 ; [.33B9.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH KO>
+AABB AA81 ; [.33B9.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH KO>
+AABC AA81 ; [.33B9.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH KO>
+AA82 ; [.33BA.0020.0002] # TAI VIET LETTER LOW KHO
+AAB5 AA82 ; [.33BA.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW KHO>
+AAB6 AA82 ; [.33BA.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW KHO>
+AAB9 AA82 ; [.33BA.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW KHO>
+AABB AA82 ; [.33BA.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW KHO>
+AABC AA82 ; [.33BA.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW KHO>
+AA83 ; [.33BB.0020.0002] # TAI VIET LETTER HIGH KHO
+AAB5 AA83 ; [.33BB.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH KHO>
+AAB6 AA83 ; [.33BB.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH KHO>
+AAB9 AA83 ; [.33BB.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH KHO>
+AABB AA83 ; [.33BB.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH KHO>
+AABC AA83 ; [.33BB.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH KHO>
+AA84 ; [.33BC.0020.0002] # TAI VIET LETTER LOW KHHO
+AAB5 AA84 ; [.33BC.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW KHHO>
+AAB6 AA84 ; [.33BC.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW KHHO>
+AAB9 AA84 ; [.33BC.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW KHHO>
+AABB AA84 ; [.33BC.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW KHHO>
+AABC AA84 ; [.33BC.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW KHHO>
+AA85 ; [.33BD.0020.0002] # TAI VIET LETTER HIGH KHHO
+AAB5 AA85 ; [.33BD.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH KHHO>
+AAB6 AA85 ; [.33BD.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH KHHO>
+AAB9 AA85 ; [.33BD.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH KHHO>
+AABB AA85 ; [.33BD.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH KHHO>
+AABC AA85 ; [.33BD.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH KHHO>
+AA86 ; [.33BE.0020.0002] # TAI VIET LETTER LOW GO
+AAB5 AA86 ; [.33BE.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW GO>
+AAB6 AA86 ; [.33BE.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW GO>
+AAB9 AA86 ; [.33BE.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW GO>
+AABB AA86 ; [.33BE.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW GO>
+AABC AA86 ; [.33BE.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW GO>
+AA87 ; [.33BF.0020.0002] # TAI VIET LETTER HIGH GO
+AAB5 AA87 ; [.33BF.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH GO>
+AAB6 AA87 ; [.33BF.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH GO>
+AAB9 AA87 ; [.33BF.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH GO>
+AABB AA87 ; [.33BF.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH GO>
+AABC AA87 ; [.33BF.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH GO>
+AA88 ; [.33C0.0020.0002] # TAI VIET LETTER LOW NGO
+AAB5 AA88 ; [.33C0.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW NGO>
+AAB6 AA88 ; [.33C0.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW NGO>
+AAB9 AA88 ; [.33C0.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW NGO>
+AABB AA88 ; [.33C0.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW NGO>
+AABC AA88 ; [.33C0.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW NGO>
+AA89 ; [.33C1.0020.0002] # TAI VIET LETTER HIGH NGO
+AAB5 AA89 ; [.33C1.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH NGO>
+AAB6 AA89 ; [.33C1.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH NGO>
+AAB9 AA89 ; [.33C1.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH NGO>
+AABB AA89 ; [.33C1.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH NGO>
+AABC AA89 ; [.33C1.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH NGO>
+AA8A ; [.33C2.0020.0002] # TAI VIET LETTER LOW CO
+AAB5 AA8A ; [.33C2.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW CO>
+AAB6 AA8A ; [.33C2.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW CO>
+AAB9 AA8A ; [.33C2.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW CO>
+AABB AA8A ; [.33C2.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW CO>
+AABC AA8A ; [.33C2.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW CO>
+AA8B ; [.33C3.0020.0002] # TAI VIET LETTER HIGH CO
+AAB5 AA8B ; [.33C3.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH CO>
+AAB6 AA8B ; [.33C3.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH CO>
+AAB9 AA8B ; [.33C3.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH CO>
+AABB AA8B ; [.33C3.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH CO>
+AABC AA8B ; [.33C3.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH CO>
+AA8C ; [.33C4.0020.0002] # TAI VIET LETTER LOW CHO
+AAB5 AA8C ; [.33C4.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW CHO>
+AAB6 AA8C ; [.33C4.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW CHO>
+AAB9 AA8C ; [.33C4.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW CHO>
+AABB AA8C ; [.33C4.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW CHO>
+AABC AA8C ; [.33C4.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW CHO>
+AA8D ; [.33C5.0020.0002] # TAI VIET LETTER HIGH CHO
+AAB5 AA8D ; [.33C5.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH CHO>
+AAB6 AA8D ; [.33C5.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH CHO>
+AAB9 AA8D ; [.33C5.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH CHO>
+AABB AA8D ; [.33C5.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH CHO>
+AABC AA8D ; [.33C5.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH CHO>
+AA8E ; [.33C6.0020.0002] # TAI VIET LETTER LOW SO
+AAB5 AA8E ; [.33C6.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW SO>
+AAB6 AA8E ; [.33C6.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW SO>
+AAB9 AA8E ; [.33C6.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW SO>
+AABB AA8E ; [.33C6.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW SO>
+AABC AA8E ; [.33C6.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW SO>
+AA8F ; [.33C7.0020.0002] # TAI VIET LETTER HIGH SO
+AAB5 AA8F ; [.33C7.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH SO>
+AAB6 AA8F ; [.33C7.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH SO>
+AAB9 AA8F ; [.33C7.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH SO>
+AABB AA8F ; [.33C7.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH SO>
+AABC AA8F ; [.33C7.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH SO>
+AA90 ; [.33C8.0020.0002] # TAI VIET LETTER LOW NYO
+AAB5 AA90 ; [.33C8.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW NYO>
+AAB6 AA90 ; [.33C8.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW NYO>
+AAB9 AA90 ; [.33C8.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW NYO>
+AABB AA90 ; [.33C8.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW NYO>
+AABC AA90 ; [.33C8.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW NYO>
+AA91 ; [.33C9.0020.0002] # TAI VIET LETTER HIGH NYO
+AAB5 AA91 ; [.33C9.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH NYO>
+AAB6 AA91 ; [.33C9.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH NYO>
+AAB9 AA91 ; [.33C9.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH NYO>
+AABB AA91 ; [.33C9.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH NYO>
+AABC AA91 ; [.33C9.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH NYO>
+AA92 ; [.33CA.0020.0002] # TAI VIET LETTER LOW DO
+AAB5 AA92 ; [.33CA.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW DO>
+AAB6 AA92 ; [.33CA.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW DO>
+AAB9 AA92 ; [.33CA.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW DO>
+AABB AA92 ; [.33CA.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW DO>
+AABC AA92 ; [.33CA.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW DO>
+AA93 ; [.33CB.0020.0002] # TAI VIET LETTER HIGH DO
+AAB5 AA93 ; [.33CB.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH DO>
+AAB6 AA93 ; [.33CB.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH DO>
+AAB9 AA93 ; [.33CB.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH DO>
+AABB AA93 ; [.33CB.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH DO>
+AABC AA93 ; [.33CB.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH DO>
+AA94 ; [.33CC.0020.0002] # TAI VIET LETTER LOW TO
+AAB5 AA94 ; [.33CC.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW TO>
+AAB6 AA94 ; [.33CC.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW TO>
+AAB9 AA94 ; [.33CC.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW TO>
+AABB AA94 ; [.33CC.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW TO>
+AABC AA94 ; [.33CC.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW TO>
+AA95 ; [.33CD.0020.0002] # TAI VIET LETTER HIGH TO
+AAB5 AA95 ; [.33CD.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH TO>
+AAB6 AA95 ; [.33CD.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH TO>
+AAB9 AA95 ; [.33CD.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH TO>
+AABB AA95 ; [.33CD.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH TO>
+AABC AA95 ; [.33CD.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH TO>
+AA96 ; [.33CE.0020.0002] # TAI VIET LETTER LOW THO
+AAB5 AA96 ; [.33CE.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW THO>
+AAB6 AA96 ; [.33CE.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW THO>
+AAB9 AA96 ; [.33CE.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW THO>
+AABB AA96 ; [.33CE.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW THO>
+AABC AA96 ; [.33CE.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW THO>
+AA97 ; [.33CF.0020.0002] # TAI VIET LETTER HIGH THO
+AAB5 AA97 ; [.33CF.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH THO>
+AAB6 AA97 ; [.33CF.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH THO>
+AAB9 AA97 ; [.33CF.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH THO>
+AABB AA97 ; [.33CF.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH THO>
+AABC AA97 ; [.33CF.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH THO>
+AA98 ; [.33D0.0020.0002] # TAI VIET LETTER LOW NO
+AAB5 AA98 ; [.33D0.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW NO>
+AAB6 AA98 ; [.33D0.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW NO>
+AAB9 AA98 ; [.33D0.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW NO>
+AABB AA98 ; [.33D0.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW NO>
+AABC AA98 ; [.33D0.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW NO>
+AA99 ; [.33D1.0020.0002] # TAI VIET LETTER HIGH NO
+AAB5 AA99 ; [.33D1.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH NO>
+AAB6 AA99 ; [.33D1.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH NO>
+AAB9 AA99 ; [.33D1.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH NO>
+AABB AA99 ; [.33D1.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH NO>
+AABC AA99 ; [.33D1.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH NO>
+AA9A ; [.33D2.0020.0002] # TAI VIET LETTER LOW BO
+AAB5 AA9A ; [.33D2.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW BO>
+AAB6 AA9A ; [.33D2.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW BO>
+AAB9 AA9A ; [.33D2.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW BO>
+AABB AA9A ; [.33D2.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW BO>
+AABC AA9A ; [.33D2.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW BO>
+AA9B ; [.33D3.0020.0002] # TAI VIET LETTER HIGH BO
+AAB5 AA9B ; [.33D3.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH BO>
+AAB6 AA9B ; [.33D3.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH BO>
+AAB9 AA9B ; [.33D3.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH BO>
+AABB AA9B ; [.33D3.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH BO>
+AABC AA9B ; [.33D3.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH BO>
+AA9C ; [.33D4.0020.0002] # TAI VIET LETTER LOW PO
+AAB5 AA9C ; [.33D4.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW PO>
+AAB6 AA9C ; [.33D4.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW PO>
+AAB9 AA9C ; [.33D4.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW PO>
+AABB AA9C ; [.33D4.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW PO>
+AABC AA9C ; [.33D4.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW PO>
+AA9D ; [.33D5.0020.0002] # TAI VIET LETTER HIGH PO
+AAB5 AA9D ; [.33D5.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH PO>
+AAB6 AA9D ; [.33D5.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH PO>
+AAB9 AA9D ; [.33D5.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH PO>
+AABB AA9D ; [.33D5.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH PO>
+AABC AA9D ; [.33D5.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH PO>
+AA9E ; [.33D6.0020.0002] # TAI VIET LETTER LOW PHO
+AAB5 AA9E ; [.33D6.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW PHO>
+AAB6 AA9E ; [.33D6.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW PHO>
+AAB9 AA9E ; [.33D6.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW PHO>
+AABB AA9E ; [.33D6.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW PHO>
+AABC AA9E ; [.33D6.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW PHO>
+AA9F ; [.33D7.0020.0002] # TAI VIET LETTER HIGH PHO
+AAB5 AA9F ; [.33D7.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH PHO>
+AAB6 AA9F ; [.33D7.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH PHO>
+AAB9 AA9F ; [.33D7.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH PHO>
+AABB AA9F ; [.33D7.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH PHO>
+AABC AA9F ; [.33D7.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH PHO>
+AAA0 ; [.33D8.0020.0002] # TAI VIET LETTER LOW FO
+AAB5 AAA0 ; [.33D8.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW FO>
+AAB6 AAA0 ; [.33D8.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW FO>
+AAB9 AAA0 ; [.33D8.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW FO>
+AABB AAA0 ; [.33D8.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW FO>
+AABC AAA0 ; [.33D8.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW FO>
+AAA1 ; [.33D9.0020.0002] # TAI VIET LETTER HIGH FO
+AAB5 AAA1 ; [.33D9.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH FO>
+AAB6 AAA1 ; [.33D9.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH FO>
+AAB9 AAA1 ; [.33D9.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH FO>
+AABB AAA1 ; [.33D9.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH FO>
+AABC AAA1 ; [.33D9.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH FO>
+AAA2 ; [.33DA.0020.0002] # TAI VIET LETTER LOW MO
+AAB5 AAA2 ; [.33DA.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW MO>
+AAB6 AAA2 ; [.33DA.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW MO>
+AAB9 AAA2 ; [.33DA.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW MO>
+AABB AAA2 ; [.33DA.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW MO>
+AABC AAA2 ; [.33DA.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW MO>
+AAA3 ; [.33DB.0020.0002] # TAI VIET LETTER HIGH MO
+AAB5 AAA3 ; [.33DB.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH MO>
+AAB6 AAA3 ; [.33DB.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH MO>
+AAB9 AAA3 ; [.33DB.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH MO>
+AABB AAA3 ; [.33DB.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH MO>
+AABC AAA3 ; [.33DB.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH MO>
+AAA4 ; [.33DC.0020.0002] # TAI VIET LETTER LOW YO
+AAB5 AAA4 ; [.33DC.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW YO>
+AAB6 AAA4 ; [.33DC.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW YO>
+AAB9 AAA4 ; [.33DC.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW YO>
+AABB AAA4 ; [.33DC.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW YO>
+AABC AAA4 ; [.33DC.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW YO>
+AAA5 ; [.33DD.0020.0002] # TAI VIET LETTER HIGH YO
+AAB5 AAA5 ; [.33DD.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH YO>
+AAB6 AAA5 ; [.33DD.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH YO>
+AAB9 AAA5 ; [.33DD.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH YO>
+AABB AAA5 ; [.33DD.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH YO>
+AABC AAA5 ; [.33DD.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH YO>
+AAA6 ; [.33DE.0020.0002] # TAI VIET LETTER LOW RO
+AAB5 AAA6 ; [.33DE.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW RO>
+AAB6 AAA6 ; [.33DE.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW RO>
+AAB9 AAA6 ; [.33DE.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW RO>
+AABB AAA6 ; [.33DE.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW RO>
+AABC AAA6 ; [.33DE.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW RO>
+AAA7 ; [.33DF.0020.0002] # TAI VIET LETTER HIGH RO
+AAB5 AAA7 ; [.33DF.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH RO>
+AAB6 AAA7 ; [.33DF.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH RO>
+AAB9 AAA7 ; [.33DF.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH RO>
+AABB AAA7 ; [.33DF.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH RO>
+AABC AAA7 ; [.33DF.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH RO>
+AAA8 ; [.33E0.0020.0002] # TAI VIET LETTER LOW LO
+AAB5 AAA8 ; [.33E0.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW LO>
+AAB6 AAA8 ; [.33E0.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW LO>
+AAB9 AAA8 ; [.33E0.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW LO>
+AABB AAA8 ; [.33E0.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW LO>
+AABC AAA8 ; [.33E0.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW LO>
+AAA9 ; [.33E1.0020.0002] # TAI VIET LETTER HIGH LO
+AAB5 AAA9 ; [.33E1.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH LO>
+AAB6 AAA9 ; [.33E1.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH LO>
+AAB9 AAA9 ; [.33E1.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH LO>
+AABB AAA9 ; [.33E1.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH LO>
+AABC AAA9 ; [.33E1.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH LO>
+AAAA ; [.33E2.0020.0002] # TAI VIET LETTER LOW VO
+AAB5 AAAA ; [.33E2.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW VO>
+AAB6 AAAA ; [.33E2.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW VO>
+AAB9 AAAA ; [.33E2.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW VO>
+AABB AAAA ; [.33E2.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW VO>
+AABC AAAA ; [.33E2.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW VO>
+AAAB ; [.33E3.0020.0002] # TAI VIET LETTER HIGH VO
+AAB5 AAAB ; [.33E3.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH VO>
+AAB6 AAAB ; [.33E3.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH VO>
+AAB9 AAAB ; [.33E3.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH VO>
+AABB AAAB ; [.33E3.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH VO>
+AABC AAAB ; [.33E3.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH VO>
+AAAC ; [.33E4.0020.0002] # TAI VIET LETTER LOW HO
+AAB5 AAAC ; [.33E4.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW HO>
+AAB6 AAAC ; [.33E4.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW HO>
+AAB9 AAAC ; [.33E4.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW HO>
+AABB AAAC ; [.33E4.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW HO>
+AABC AAAC ; [.33E4.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW HO>
+AAAD ; [.33E5.0020.0002] # TAI VIET LETTER HIGH HO
+AAB5 AAAD ; [.33E5.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH HO>
+AAB6 AAAD ; [.33E5.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH HO>
+AAB9 AAAD ; [.33E5.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH HO>
+AABB AAAD ; [.33E5.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH HO>
+AABC AAAD ; [.33E5.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH HO>
+AAAE ; [.33E6.0020.0002] # TAI VIET LETTER LOW O
+AAB5 AAAE ; [.33E6.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER LOW O>
+AAB6 AAAE ; [.33E6.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER LOW O>
+AAB9 AAAE ; [.33E6.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER LOW O>
+AABB AAAE ; [.33E6.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER LOW O>
+AABC AAAE ; [.33E6.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER LOW O>
+AAAF ; [.33E7.0020.0002] # TAI VIET LETTER HIGH O
+AAB5 AAAF ; [.33E7.0020.0002][.33ED.0020.0002] # <TAI VIET VOWEL E, TAI VIET LETTER HIGH O>
+AAB6 AAAF ; [.33E7.0020.0002][.33EE.0020.0002] # <TAI VIET VOWEL O, TAI VIET LETTER HIGH O>
+AAB9 AAAF ; [.33E7.0020.0002][.33F1.0020.0002] # <TAI VIET VOWEL UEA, TAI VIET LETTER HIGH O>
+AABB AAAF ; [.33E7.0020.0002][.33F3.0020.0002] # <TAI VIET VOWEL AUE, TAI VIET LETTER HIGH O>
+AABC AAAF ; [.33E7.0020.0002][.33F4.0020.0002] # <TAI VIET VOWEL AY, TAI VIET LETTER HIGH O>
+AAB0 ; [.33E8.0020.0002] # TAI VIET MAI KANG
+AAB1 ; [.33E9.0020.0002] # TAI VIET VOWEL AA
+AAB2 ; [.33EA.0020.0002] # TAI VIET VOWEL I
+AAB3 ; [.33EB.0020.0002] # TAI VIET VOWEL UE
+AAB4 ; [.33EC.0020.0002] # TAI VIET VOWEL U
+AAB5 ; [.33ED.0020.0002] # TAI VIET VOWEL E
+AAB6 ; [.33EE.0020.0002] # TAI VIET VOWEL O
+AAB7 ; [.33EF.0020.0002] # TAI VIET MAI KHIT
+AAB8 ; [.33F0.0020.0002] # TAI VIET VOWEL IA
+AAB9 ; [.33F1.0020.0002] # TAI VIET VOWEL UEA
+AABA ; [.33F2.0020.0002] # TAI VIET VOWEL UA
+AABB ; [.33F3.0020.0002] # TAI VIET VOWEL AUE
+AABC ; [.33F4.0020.0002] # TAI VIET VOWEL AY
+AABD ; [.33F5.0020.0002] # TAI VIET VOWEL AN
+AABE ; [.33F6.0020.0002] # TAI VIET VOWEL AM
+AAC0 ; [.33F7.0020.0002] # TAI VIET TONE MAI NUENG
+AAC2 ; [.33F8.0020.0002] # TAI VIET TONE MAI SONG
+AADB ; [.33F9.0020.0002] # TAI VIET SYMBOL KON
+AADC ; [.33FA.0020.0002] # TAI VIET SYMBOL NUENG
+0F40 ; [.33FB.0020.0002] # TIBETAN LETTER KA
+0F69 ; [.33FB.0020.0002][.343C.0020.0002] # TIBETAN LETTER KSSA
+0F90 ; [.33FC.0020.0002] # TIBETAN SUBJOINED LETTER KA
+0FB9 ; [.33FC.0020.0002][.343C.0020.0002] # TIBETAN SUBJOINED LETTER KSSA
+0F6B ; [.33FD.0020.0002] # TIBETAN LETTER KKA
+0F41 ; [.33FE.0020.0002] # TIBETAN LETTER KHA
+0F91 ; [.33FF.0020.0002] # TIBETAN SUBJOINED LETTER KHA
+0F42 ; [.3400.0020.0002] # TIBETAN LETTER GA
+0F43 ; [.3400.0020.0002][.3440.0020.0002] # TIBETAN LETTER GHA
+0F92 ; [.3401.0020.0002] # TIBETAN SUBJOINED LETTER GA
+0F93 ; [.3401.0020.0002][.3440.0020.0002] # TIBETAN SUBJOINED LETTER GHA
+0F44 ; [.3402.0020.0002] # TIBETAN LETTER NGA
+0F94 ; [.3403.0020.0002] # TIBETAN SUBJOINED LETTER NGA
+0F45 ; [.3404.0020.0002] # TIBETAN LETTER CA
+0F95 ; [.3405.0020.0002] # TIBETAN SUBJOINED LETTER CA
+0F46 ; [.3406.0020.0002] # TIBETAN LETTER CHA
+0F96 ; [.3407.0020.0002] # TIBETAN SUBJOINED LETTER CHA
+0F47 ; [.3408.0020.0002] # TIBETAN LETTER JA
+0F97 ; [.3409.0020.0002] # TIBETAN SUBJOINED LETTER JA
+0F49 ; [.340A.0020.0002] # TIBETAN LETTER NYA
+0F99 ; [.340B.0020.0002] # TIBETAN SUBJOINED LETTER NYA
+0F4A ; [.340C.0020.0002] # TIBETAN LETTER TTA
+0F9A ; [.340D.0020.0002] # TIBETAN SUBJOINED LETTER TTA
+0F4B ; [.340E.0020.0002] # TIBETAN LETTER TTHA
+0F9B ; [.340F.0020.0002] # TIBETAN SUBJOINED LETTER TTHA
+0F4C ; [.3410.0020.0002] # TIBETAN LETTER DDA
+0F4D ; [.3410.0020.0002][.3440.0020.0002] # TIBETAN LETTER DDHA
+0F9C ; [.3411.0020.0002] # TIBETAN SUBJOINED LETTER DDA
+0F9D ; [.3411.0020.0002][.3440.0020.0002] # TIBETAN SUBJOINED LETTER DDHA
+0F4E ; [.3412.0020.0002] # TIBETAN LETTER NNA
+0F9E ; [.3413.0020.0002] # TIBETAN SUBJOINED LETTER NNA
+0F4F ; [.3414.0020.0002] # TIBETAN LETTER TA
+0F9F ; [.3415.0020.0002] # TIBETAN SUBJOINED LETTER TA
+0F50 ; [.3416.0020.0002] # TIBETAN LETTER THA
+0FA0 ; [.3417.0020.0002] # TIBETAN SUBJOINED LETTER THA
+0F51 ; [.3418.0020.0002] # TIBETAN LETTER DA
+0F52 ; [.3418.0020.0002][.3440.0020.0002] # TIBETAN LETTER DHA
+0FA1 ; [.3419.0020.0002] # TIBETAN SUBJOINED LETTER DA
+0FA2 ; [.3419.0020.0002][.3440.0020.0002] # TIBETAN SUBJOINED LETTER DHA
+0F53 ; [.341A.0020.0002] # TIBETAN LETTER NA
+0FA3 ; [.341B.0020.0002] # TIBETAN SUBJOINED LETTER NA
+0F54 ; [.341C.0020.0002] # TIBETAN LETTER PA
+0FA4 ; [.341D.0020.0002] # TIBETAN SUBJOINED LETTER PA
+0F55 ; [.341E.0020.0002] # TIBETAN LETTER PHA
+0FA5 ; [.341F.0020.0002] # TIBETAN SUBJOINED LETTER PHA
+0F56 ; [.3420.0020.0002] # TIBETAN LETTER BA
+0F57 ; [.3420.0020.0002][.3440.0020.0002] # TIBETAN LETTER BHA
+0FA6 ; [.3421.0020.0002] # TIBETAN SUBJOINED LETTER BA
+0FA7 ; [.3421.0020.0002][.3440.0020.0002] # TIBETAN SUBJOINED LETTER BHA
+0F58 ; [.3422.0020.0002] # TIBETAN LETTER MA
+0FA8 ; [.3423.0020.0002] # TIBETAN SUBJOINED LETTER MA
+0F59 ; [.3424.0020.0002] # TIBETAN LETTER TSA
+0FA9 ; [.3425.0020.0002] # TIBETAN SUBJOINED LETTER TSA
+0F5A ; [.3426.0020.0002] # TIBETAN LETTER TSHA
+0FAA ; [.3427.0020.0002] # TIBETAN SUBJOINED LETTER TSHA
+0F5B ; [.3428.0020.0002] # TIBETAN LETTER DZA
+0F5C ; [.3428.0020.0002][.3440.0020.0002] # TIBETAN LETTER DZHA
+0FAB ; [.3429.0020.0002] # TIBETAN SUBJOINED LETTER DZA
+0FAC ; [.3429.0020.0002][.3440.0020.0002] # TIBETAN SUBJOINED LETTER DZHA
+0F5D ; [.342A.0020.0002] # TIBETAN LETTER WA
+0FAD ; [.342B.0020.0002] # TIBETAN SUBJOINED LETTER WA
+0FBA ; [.342B.0020.0004][.0000.0119.0004] # TIBETAN SUBJOINED LETTER FIXED-FORM WA
+0F5E ; [.342C.0020.0002] # TIBETAN LETTER ZHA
+0FAE ; [.342D.0020.0002] # TIBETAN SUBJOINED LETTER ZHA
+0F5F ; [.342E.0020.0002] # TIBETAN LETTER ZA
+0FAF ; [.342F.0020.0002] # TIBETAN SUBJOINED LETTER ZA
+0F60 ; [.3430.0020.0002] # TIBETAN LETTER -A
+0FB0 ; [.3431.0020.0002] # TIBETAN SUBJOINED LETTER -A
+0F61 ; [.3432.0020.0002] # TIBETAN LETTER YA
+0FB1 ; [.3433.0020.0002] # TIBETAN SUBJOINED LETTER YA
+0FBB ; [.3433.0020.0004][.0000.0119.0004] # TIBETAN SUBJOINED LETTER FIXED-FORM YA
+0F62 ; [.3434.0020.0002] # TIBETAN LETTER RA
+0F6A ; [.3434.0020.0004][.0000.0119.0004] # TIBETAN LETTER FIXED-FORM RA
+0FB2 ; [.3435.0020.0002] # TIBETAN SUBJOINED LETTER RA
+0FBC ; [.3435.0020.0004][.0000.0119.0004] # TIBETAN SUBJOINED LETTER FIXED-FORM RA
+0F6C ; [.3436.0020.0002] # TIBETAN LETTER RRA
+0F63 ; [.3437.0020.0002] # TIBETAN LETTER LA
+0FB3 ; [.3438.0020.0002] # TIBETAN SUBJOINED LETTER LA
+0F64 ; [.3439.0020.0002] # TIBETAN LETTER SHA
+0FB4 ; [.343A.0020.0002] # TIBETAN SUBJOINED LETTER SHA
+0F65 ; [.343B.0020.0002] # TIBETAN LETTER SSA
+0FB5 ; [.343C.0020.0002] # TIBETAN SUBJOINED LETTER SSA
+0F66 ; [.343D.0020.0002] # TIBETAN LETTER SA
+0FB6 ; [.343E.0020.0002] # TIBETAN SUBJOINED LETTER SA
+0F67 ; [.343F.0020.0002] # TIBETAN LETTER HA
+0FB7 ; [.3440.0020.0002] # TIBETAN SUBJOINED LETTER HA
+0F68 ; [.3441.0020.0002] # TIBETAN LETTER A
+0F00 ; [.3441.0020.0004][.3458.0020.0004][.0000.00C4.0004] # TIBETAN SYLLABLE OM
+0FB8 ; [.3442.0020.0002] # TIBETAN SUBJOINED LETTER A
+0F88 ; [.3443.0020.0002] # TIBETAN SIGN LCE TSA CAN
+0F8D ; [.3444.0020.0002] # TIBETAN SUBJOINED SIGN LCE TSA CAN
+0F89 ; [.3445.0020.0002] # TIBETAN SIGN MCHU CAN
+0F8E ; [.3446.0020.0002] # TIBETAN SUBJOINED SIGN MCHU CAN
+0F8C ; [.3447.0020.0002] # TIBETAN SIGN INVERTED MCHU CAN
+0F8F ; [.3448.0020.0002] # TIBETAN SUBJOINED SIGN INVERTED MCHU CAN
+0F8A ; [.3449.0020.0002] # TIBETAN SIGN GRU CAN RGYINGS
+0F8B ; [.344A.0020.0002] # TIBETAN SIGN GRU MED RGYINGS
+0F71 ; [.344B.0020.0002] # TIBETAN VOWEL SIGN AA
+0F72 ; [.344C.0020.0002] # TIBETAN VOWEL SIGN I
+0F73 ; [.344D.0020.0002] # TIBETAN VOWEL SIGN II
+0F71 0F72 ; [.344D.0020.0002] # TIBETAN VOWEL SIGN II
+0F80 ; [.344E.0020.0002] # TIBETAN VOWEL SIGN REVERSED I
+0F81 ; [.344F.0020.0002] # TIBETAN VOWEL SIGN REVERSED II
+0F71 0F80 ; [.344F.0020.0002] # TIBETAN VOWEL SIGN REVERSED II
+0F74 ; [.3450.0020.0002] # TIBETAN VOWEL SIGN U
+0F75 ; [.3451.0020.0002] # TIBETAN VOWEL SIGN UU
+0F71 0F74 ; [.3451.0020.0002] # TIBETAN VOWEL SIGN UU
+0F76 ; [.3452.0020.0002] # TIBETAN VOWEL SIGN VOCALIC R
+0FB2 0F80 ; [.3452.0020.0002] # TIBETAN VOWEL SIGN VOCALIC R
+0F77 ; [.3453.0020.0002] # TIBETAN VOWEL SIGN VOCALIC RR
+0FB2 0F71 0F80 ; [.3453.0020.0002] # TIBETAN VOWEL SIGN VOCALIC RR
+0FB2 0F81 ; [.3453.0020.0002] # TIBETAN VOWEL SIGN VOCALIC RR
+0F78 ; [.3454.0020.0002] # TIBETAN VOWEL SIGN VOCALIC L
+0FB3 0F80 ; [.3454.0020.0002] # TIBETAN VOWEL SIGN VOCALIC L
+0F79 ; [.3455.0020.0002] # TIBETAN VOWEL SIGN VOCALIC LL
+0FB3 0F71 0F80 ; [.3455.0020.0002] # TIBETAN VOWEL SIGN VOCALIC LL
+0FB3 0F81 ; [.3455.0020.0002] # TIBETAN VOWEL SIGN VOCALIC LL
+0F7A ; [.3456.0020.0002] # TIBETAN VOWEL SIGN E
+0F7B ; [.3457.0020.0002] # TIBETAN VOWEL SIGN EE
+0F7C ; [.3458.0020.0002] # TIBETAN VOWEL SIGN O
+0F7D ; [.3459.0020.0002] # TIBETAN VOWEL SIGN OO
+0F84 ; [.345A.0020.0002] # TIBETAN MARK HALANTA
+11A0B ; [.345B.0020.0002] # ZANABAZAR SQUARE LETTER KA
+11A32 ; [.345C.0020.0002] # ZANABAZAR SQUARE LETTER KSSA
+11A0C ; [.345D.0020.0002] # ZANABAZAR SQUARE LETTER KHA
+11A0D ; [.345E.0020.0002] # ZANABAZAR SQUARE LETTER GA
+11A0E ; [.345F.0020.0002] # ZANABAZAR SQUARE LETTER GHA
+11A0F ; [.3460.0020.0002] # ZANABAZAR SQUARE LETTER NGA
+11A10 ; [.3461.0020.0002] # ZANABAZAR SQUARE LETTER CA
+11A11 ; [.3462.0020.0002] # ZANABAZAR SQUARE LETTER CHA
+11A12 ; [.3463.0020.0002] # ZANABAZAR SQUARE LETTER JA
+11A13 ; [.3464.0020.0002] # ZANABAZAR SQUARE LETTER NYA
+11A14 ; [.3465.0020.0002] # ZANABAZAR SQUARE LETTER TTA
+11A15 ; [.3466.0020.0002] # ZANABAZAR SQUARE LETTER TTHA
+11A16 ; [.3467.0020.0002] # ZANABAZAR SQUARE LETTER DDA
+11A17 ; [.3468.0020.0002] # ZANABAZAR SQUARE LETTER DDHA
+11A18 ; [.3469.0020.0002] # ZANABAZAR SQUARE LETTER NNA
+11A19 ; [.346A.0020.0002] # ZANABAZAR SQUARE LETTER TA
+11A1A ; [.346B.0020.0002] # ZANABAZAR SQUARE LETTER THA
+11A1B ; [.346C.0020.0002] # ZANABAZAR SQUARE LETTER DA
+11A1C ; [.346D.0020.0002] # ZANABAZAR SQUARE LETTER DHA
+11A1D ; [.346E.0020.0002] # ZANABAZAR SQUARE LETTER NA
+11A1E ; [.346F.0020.0002] # ZANABAZAR SQUARE LETTER PA
+11A1F ; [.3470.0020.0002] # ZANABAZAR SQUARE LETTER PHA
+11A20 ; [.3471.0020.0002] # ZANABAZAR SQUARE LETTER BA
+11A21 ; [.3472.0020.0002] # ZANABAZAR SQUARE LETTER BHA
+11A22 ; [.3473.0020.0002] # ZANABAZAR SQUARE LETTER MA
+11A23 ; [.3474.0020.0002] # ZANABAZAR SQUARE LETTER TSA
+11A24 ; [.3475.0020.0002] # ZANABAZAR SQUARE LETTER TSHA
+11A25 ; [.3476.0020.0002] # ZANABAZAR SQUARE LETTER DZA
+11A26 ; [.3477.0020.0002] # ZANABAZAR SQUARE LETTER DZHA
+11A27 ; [.3478.0020.0002] # ZANABAZAR SQUARE LETTER ZHA
+11A28 ; [.3479.0020.0002] # ZANABAZAR SQUARE LETTER ZA
+11A29 ; [.347A.0020.0002] # ZANABAZAR SQUARE LETTER -A
+11A2A ; [.347B.0020.0002] # ZANABAZAR SQUARE LETTER YA
+11A3B ; [.347B.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA
+11A2B ; [.347C.0020.0002] # ZANABAZAR SQUARE LETTER RA
+11A3A ; [.347C.0020.0017] # ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+11A3C ; [.347C.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER RA
+11A2C ; [.347D.0020.0002] # ZANABAZAR SQUARE LETTER LA
+11A3D ; [.347D.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER LA
+11A2D ; [.347E.0020.0002] # ZANABAZAR SQUARE LETTER VA
+11A3E ; [.347E.0020.0019] # ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
+11A2E ; [.347F.0020.0002] # ZANABAZAR SQUARE LETTER SHA
+11A2F ; [.3480.0020.0002] # ZANABAZAR SQUARE LETTER SSA
+11A30 ; [.3481.0020.0002] # ZANABAZAR SQUARE LETTER SA
+11A31 ; [.3482.0020.0002] # ZANABAZAR SQUARE LETTER HA
+11A00 ; [.3483.0020.0002] # ZANABAZAR SQUARE LETTER A
+11A01 ; [.3484.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN I
+11A02 ; [.3485.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN UE
+11A03 ; [.3486.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN U
+11A04 ; [.3487.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN E
+11A05 ; [.3488.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN OE
+11A06 ; [.3489.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN O
+11A07 ; [.348A.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN AI
+11A08 ; [.348B.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN AU
+11A09 ; [.348C.0020.0002] # ZANABAZAR SQUARE VOWEL SIGN REVERSED I
+11A0A ; [.348D.0020.0002] # ZANABAZAR SQUARE VOWEL LENGTH MARK
+11A34 ; [.348E.0020.0002] # ZANABAZAR SQUARE SIGN VIRAMA
+11A47 ; [.348F.0020.0002] # ZANABAZAR SQUARE SUBJOINER
+11A50 ; [.3490.0020.0002] # SOYOMBO LETTER A
+11A51 ; [.3491.0020.0002] # SOYOMBO VOWEL SIGN I
+11A52 ; [.3492.0020.0002] # SOYOMBO VOWEL SIGN UE
+11A53 ; [.3493.0020.0002] # SOYOMBO VOWEL SIGN U
+11A59 ; [.3494.0020.0002] # SOYOMBO VOWEL SIGN VOCALIC R
+11A5A ; [.3495.0020.0002] # SOYOMBO VOWEL SIGN VOCALIC L
+11A54 ; [.3496.0020.0002] # SOYOMBO VOWEL SIGN E
+11A56 ; [.3497.0020.0002] # SOYOMBO VOWEL SIGN OE
+11A55 ; [.3498.0020.0002] # SOYOMBO VOWEL SIGN O
+11A57 ; [.3499.0020.0002] # SOYOMBO VOWEL SIGN AI
+11A58 ; [.349A.0020.0002] # SOYOMBO VOWEL SIGN AU
+11A5B ; [.349B.0020.0002] # SOYOMBO VOWEL LENGTH MARK
+11A5C ; [.349C.0020.0002] # SOYOMBO LETTER KA
+11A8A ; [.349C.0020.0019] # SOYOMBO FINAL CONSONANT SIGN G
+11A83 ; [.349D.0020.0002] # SOYOMBO LETTER KSSA
+11A5D ; [.349E.0020.0002] # SOYOMBO LETTER KHA
+11A8B ; [.349E.0020.0019] # SOYOMBO FINAL CONSONANT SIGN K
+11A5E ; [.349F.0020.0002] # SOYOMBO LETTER GA
+11A5F ; [.34A0.0020.0002] # SOYOMBO LETTER GHA
+11A60 ; [.34A1.0020.0002] # SOYOMBO LETTER NGA
+11A8C ; [.34A1.0020.0019] # SOYOMBO FINAL CONSONANT SIGN NG
+11A61 ; [.34A2.0020.0002] # SOYOMBO LETTER CA
+11A62 ; [.34A3.0020.0002] # SOYOMBO LETTER CHA
+11A63 ; [.34A4.0020.0002] # SOYOMBO LETTER JA
+11A64 ; [.34A5.0020.0002] # SOYOMBO LETTER JHA
+11A65 ; [.34A6.0020.0002] # SOYOMBO LETTER NYA
+11A66 ; [.34A7.0020.0002] # SOYOMBO LETTER TTA
+11A67 ; [.34A8.0020.0002] # SOYOMBO LETTER TTHA
+11A68 ; [.34A9.0020.0002] # SOYOMBO LETTER DDA
+11A69 ; [.34AA.0020.0002] # SOYOMBO LETTER DDHA
+11A6A ; [.34AB.0020.0002] # SOYOMBO LETTER NNA
+11A6B ; [.34AC.0020.0002] # SOYOMBO LETTER TA
+11A8D ; [.34AC.0020.0019] # SOYOMBO FINAL CONSONANT SIGN D
+11A6C ; [.34AD.0020.0002] # SOYOMBO LETTER THA
+11A6D ; [.34AE.0020.0002] # SOYOMBO LETTER DA
+11A6E ; [.34AF.0020.0002] # SOYOMBO LETTER DHA
+11A6F ; [.34B0.0020.0002] # SOYOMBO LETTER NA
+11A8E ; [.34B0.0020.0019] # SOYOMBO FINAL CONSONANT SIGN N
+11A70 ; [.34B1.0020.0002] # SOYOMBO LETTER PA
+11A8F ; [.34B1.0020.0019] # SOYOMBO FINAL CONSONANT SIGN B
+11A71 ; [.34B2.0020.0002] # SOYOMBO LETTER PHA
+11A72 ; [.34B3.0020.0002] # SOYOMBO LETTER BA
+11A73 ; [.34B4.0020.0002] # SOYOMBO LETTER BHA
+11A74 ; [.34B5.0020.0002] # SOYOMBO LETTER MA
+11A90 ; [.34B5.0020.0019] # SOYOMBO FINAL CONSONANT SIGN M
+11A75 ; [.34B6.0020.0002] # SOYOMBO LETTER TSA
+11A76 ; [.34B7.0020.0002] # SOYOMBO LETTER TSHA
+11A77 ; [.34B8.0020.0002] # SOYOMBO LETTER DZA
+11A78 ; [.34B9.0020.0002] # SOYOMBO LETTER ZHA
+11A79 ; [.34BA.0020.0002] # SOYOMBO LETTER ZA
+11A7A ; [.34BB.0020.0002] # SOYOMBO LETTER -A
+11A95 ; [.34BB.0020.0019] # SOYOMBO FINAL CONSONANT SIGN -A
+11A7B ; [.34BC.0020.0002] # SOYOMBO LETTER YA
+11A7C ; [.34BD.0020.0002] # SOYOMBO LETTER RA
+11A86 ; [.34BD.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER RA
+11A91 ; [.34BD.0020.0019] # SOYOMBO FINAL CONSONANT SIGN R
+11A7D ; [.34BE.0020.0002] # SOYOMBO LETTER LA
+11A87 ; [.34BE.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER LA
+11A92 ; [.34BE.0020.0019] # SOYOMBO FINAL CONSONANT SIGN L
+11A7E ; [.34BF.0020.0002] # SOYOMBO LETTER VA
+11A7F ; [.34C0.0020.0002] # SOYOMBO LETTER SHA
+11A88 ; [.34C0.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER SHA
+11A93 ; [.34C0.0020.0019] # SOYOMBO FINAL CONSONANT SIGN SH
+11A80 ; [.34C1.0020.0002] # SOYOMBO LETTER SSA
+11A81 ; [.34C2.0020.0002] # SOYOMBO LETTER SA
+11A89 ; [.34C2.0020.0017] # SOYOMBO CLUSTER-INITIAL LETTER SA
+11A94 ; [.34C2.0020.0019] # SOYOMBO FINAL CONSONANT SIGN S
+11A82 ; [.34C3.0020.0002] # SOYOMBO LETTER HA
+11A84 ; [.34C4.0020.0002] # SOYOMBO SIGN JIHVAMULIYA
+11A85 ; [.34C5.0020.0002] # SOYOMBO SIGN UPADHMANIYA
+11A99 ; [.34C6.0020.0002] # SOYOMBO SUBJOINER
+11A9D ; [.34C7.0020.0002] # SOYOMBO MARK PLUTA
+11C72 ; [.34C8.0020.0002] # MARCHEN LETTER KA
+11C92 ; [.34C9.0020.0002] # MARCHEN SUBJOINED LETTER KA
+11C73 ; [.34CA.0020.0002] # MARCHEN LETTER KHA
+11C93 ; [.34CB.0020.0002] # MARCHEN SUBJOINED LETTER KHA
+11C74 ; [.34CC.0020.0002] # MARCHEN LETTER GA
+11C94 ; [.34CD.0020.0002] # MARCHEN SUBJOINED LETTER GA
+11C75 ; [.34CE.0020.0002] # MARCHEN LETTER NGA
+11C95 ; [.34CF.0020.0002] # MARCHEN SUBJOINED LETTER NGA
+11C76 ; [.34D0.0020.0002] # MARCHEN LETTER CA
+11C96 ; [.34D1.0020.0002] # MARCHEN SUBJOINED LETTER CA
+11C77 ; [.34D2.0020.0002] # MARCHEN LETTER CHA
+11C97 ; [.34D3.0020.0002] # MARCHEN SUBJOINED LETTER CHA
+11C78 ; [.34D4.0020.0002] # MARCHEN LETTER JA
+11C98 ; [.34D5.0020.0002] # MARCHEN SUBJOINED LETTER JA
+11C79 ; [.34D6.0020.0002] # MARCHEN LETTER NYA
+11C99 ; [.34D7.0020.0002] # MARCHEN SUBJOINED LETTER NYA
+11C7A ; [.34D8.0020.0002] # MARCHEN LETTER TA
+11C9A ; [.34D9.0020.0002] # MARCHEN SUBJOINED LETTER TA
+11C7B ; [.34DA.0020.0002] # MARCHEN LETTER THA
+11C9B ; [.34DB.0020.0002] # MARCHEN SUBJOINED LETTER THA
+11C7C ; [.34DC.0020.0002] # MARCHEN LETTER DA
+11C9C ; [.34DD.0020.0002] # MARCHEN SUBJOINED LETTER DA
+11C7D ; [.34DE.0020.0002] # MARCHEN LETTER NA
+11C9D ; [.34DF.0020.0002] # MARCHEN SUBJOINED LETTER NA
+11C7E ; [.34E0.0020.0002] # MARCHEN LETTER PA
+11C9E ; [.34E1.0020.0002] # MARCHEN SUBJOINED LETTER PA
+11C7F ; [.34E2.0020.0002] # MARCHEN LETTER PHA
+11C9F ; [.34E3.0020.0002] # MARCHEN SUBJOINED LETTER PHA
+11C80 ; [.34E4.0020.0002] # MARCHEN LETTER BA
+11CA0 ; [.34E5.0020.0002] # MARCHEN SUBJOINED LETTER BA
+11C81 ; [.34E6.0020.0002] # MARCHEN LETTER MA
+11CA1 ; [.34E7.0020.0002] # MARCHEN SUBJOINED LETTER MA
+11C82 ; [.34E8.0020.0002] # MARCHEN LETTER TSA
+11CA2 ; [.34E9.0020.0002] # MARCHEN SUBJOINED LETTER TSA
+11C83 ; [.34EA.0020.0002] # MARCHEN LETTER TSHA
+11CA3 ; [.34EB.0020.0002] # MARCHEN SUBJOINED LETTER TSHA
+11C84 ; [.34EC.0020.0002] # MARCHEN LETTER DZA
+11CA4 ; [.34ED.0020.0002] # MARCHEN SUBJOINED LETTER DZA
+11C85 ; [.34EE.0020.0002] # MARCHEN LETTER WA
+11CA5 ; [.34EF.0020.0002] # MARCHEN SUBJOINED LETTER WA
+11C86 ; [.34F0.0020.0002] # MARCHEN LETTER ZHA
+11CA6 ; [.34F1.0020.0002] # MARCHEN SUBJOINED LETTER ZHA
+11C87 ; [.34F2.0020.0002] # MARCHEN LETTER ZA
+11CA7 ; [.34F3.0020.0002] # MARCHEN SUBJOINED LETTER ZA
+11C88 ; [.34F4.0020.0002] # MARCHEN LETTER -A
+11C89 ; [.34F5.0020.0002] # MARCHEN LETTER YA
+11CA9 ; [.34F6.0020.0002] # MARCHEN SUBJOINED LETTER YA
+11C8A ; [.34F7.0020.0002] # MARCHEN LETTER RA
+11CAA ; [.34F8.0020.0002] # MARCHEN SUBJOINED LETTER RA
+11C8B ; [.34F9.0020.0002] # MARCHEN LETTER LA
+11CAB ; [.34FA.0020.0002] # MARCHEN SUBJOINED LETTER LA
+11C8C ; [.34FB.0020.0002] # MARCHEN LETTER SHA
+11CAC ; [.34FC.0020.0002] # MARCHEN SUBJOINED LETTER SHA
+11C8D ; [.34FD.0020.0002] # MARCHEN LETTER SA
+11CAD ; [.34FE.0020.0002] # MARCHEN SUBJOINED LETTER SA
+11C8E ; [.34FF.0020.0002] # MARCHEN LETTER HA
+11CAE ; [.3500.0020.0002] # MARCHEN SUBJOINED LETTER HA
+11C8F ; [.3501.0020.0002] # MARCHEN LETTER A
+11CAF ; [.3502.0020.0002] # MARCHEN SUBJOINED LETTER A
+11CB0 ; [.3503.0020.0002] # MARCHEN VOWEL SIGN AA
+11CB1 ; [.3504.0020.0002] # MARCHEN VOWEL SIGN I
+11CB2 ; [.3505.0020.0002] # MARCHEN VOWEL SIGN U
+11CB3 ; [.3506.0020.0002] # MARCHEN VOWEL SIGN E
+11CB4 ; [.3507.0020.0002] # MARCHEN VOWEL SIGN O
+1C00 ; [.3508.0020.0002] # LEPCHA LETTER KA
+1C01 ; [.3509.0020.0002] # LEPCHA LETTER KLA
+1C02 ; [.350A.0020.0002] # LEPCHA LETTER KHA
+1C03 ; [.350B.0020.0002] # LEPCHA LETTER GA
+1C04 ; [.350C.0020.0002] # LEPCHA LETTER GLA
+1C05 ; [.350D.0020.0002] # LEPCHA LETTER NGA
+1C06 ; [.350E.0020.0002] # LEPCHA LETTER CA
+1C07 ; [.350F.0020.0002] # LEPCHA LETTER CHA
+1C08 ; [.3510.0020.0002] # LEPCHA LETTER JA
+1C09 ; [.3511.0020.0002] # LEPCHA LETTER NYA
+1C4D ; [.3512.0020.0002] # LEPCHA LETTER TTA
+1C4E ; [.3513.0020.0002] # LEPCHA LETTER TTHA
+1C4F ; [.3514.0020.0002] # LEPCHA LETTER DDA
+1C0A ; [.3515.0020.0002] # LEPCHA LETTER TA
+1C0B ; [.3516.0020.0002] # LEPCHA LETTER THA
+1C0C ; [.3517.0020.0002] # LEPCHA LETTER DA
+1C0D ; [.3518.0020.0002] # LEPCHA LETTER NA
+1C0E ; [.3519.0020.0002] # LEPCHA LETTER PA
+1C0F ; [.351A.0020.0002] # LEPCHA LETTER PLA
+1C10 ; [.351B.0020.0002] # LEPCHA LETTER PHA
+1C11 ; [.351C.0020.0002] # LEPCHA LETTER FA
+1C12 ; [.351D.0020.0002] # LEPCHA LETTER FLA
+1C13 ; [.351E.0020.0002] # LEPCHA LETTER BA
+1C14 ; [.351F.0020.0002] # LEPCHA LETTER BLA
+1C15 ; [.3520.0020.0002] # LEPCHA LETTER MA
+1C16 ; [.3521.0020.0002] # LEPCHA LETTER MLA
+1C17 ; [.3522.0020.0002] # LEPCHA LETTER TSA
+1C18 ; [.3523.0020.0002] # LEPCHA LETTER TSHA
+1C19 ; [.3524.0020.0002] # LEPCHA LETTER DZA
+1C1A ; [.3525.0020.0002] # LEPCHA LETTER YA
+1C24 ; [.3526.0020.0002] # LEPCHA SUBJOINED LETTER YA
+1C1B ; [.3527.0020.0002] # LEPCHA LETTER RA
+1C25 ; [.3528.0020.0002] # LEPCHA SUBJOINED LETTER RA
+1C1C ; [.3529.0020.0002] # LEPCHA LETTER LA
+1C1D ; [.352A.0020.0002] # LEPCHA LETTER HA
+1C1E ; [.352B.0020.0002] # LEPCHA LETTER HLA
+1C1F ; [.352C.0020.0002] # LEPCHA LETTER VA
+1C20 ; [.352D.0020.0002] # LEPCHA LETTER SA
+1C21 ; [.352E.0020.0002] # LEPCHA LETTER SHA
+1C22 ; [.352F.0020.0002] # LEPCHA LETTER WA
+1C23 ; [.3530.0020.0002] # LEPCHA LETTER A
+1C36 ; [.3531.0020.0002] # LEPCHA SIGN RAN
+1C26 ; [.3532.0020.0002] # LEPCHA VOWEL SIGN AA
+1C27 ; [.3533.0020.0002] # LEPCHA VOWEL SIGN I
+1C28 ; [.3534.0020.0002] # LEPCHA VOWEL SIGN O
+1C29 ; [.3535.0020.0002] # LEPCHA VOWEL SIGN OO
+1C2A ; [.3536.0020.0002] # LEPCHA VOWEL SIGN U
+1C2B ; [.3537.0020.0002] # LEPCHA VOWEL SIGN UU
+1C2C ; [.3538.0020.0002] # LEPCHA VOWEL SIGN E
+1C2D ; [.3539.0020.0002] # LEPCHA CONSONANT SIGN K
+1C2E ; [.353A.0020.0002] # LEPCHA CONSONANT SIGN M
+1C2F ; [.353B.0020.0002] # LEPCHA CONSONANT SIGN L
+1C30 ; [.353C.0020.0002] # LEPCHA CONSONANT SIGN N
+1C31 ; [.353D.0020.0002] # LEPCHA CONSONANT SIGN P
+1C32 ; [.353E.0020.0002] # LEPCHA CONSONANT SIGN R
+1C33 ; [.353F.0020.0002] # LEPCHA CONSONANT SIGN T
+1C34 ; [.3540.0020.0002] # LEPCHA CONSONANT SIGN NYIN-DO
+1C35 ; [.3541.0020.0002] # LEPCHA CONSONANT SIGN KANG
+A840 ; [.3542.0020.0002] # PHAGS-PA LETTER KA
+A841 ; [.3543.0020.0002] # PHAGS-PA LETTER KHA
+A842 ; [.3544.0020.0002] # PHAGS-PA LETTER GA
+A843 ; [.3545.0020.0002] # PHAGS-PA LETTER NGA
+A844 ; [.3546.0020.0002] # PHAGS-PA LETTER CA
+A845 ; [.3547.0020.0002] # PHAGS-PA LETTER CHA
+A846 ; [.3548.0020.0002] # PHAGS-PA LETTER JA
+A847 ; [.3549.0020.0002] # PHAGS-PA LETTER NYA
+A869 ; [.354A.0020.0002] # PHAGS-PA LETTER TTA
+A86A ; [.354B.0020.0002] # PHAGS-PA LETTER TTHA
+A86B ; [.354C.0020.0002] # PHAGS-PA LETTER DDA
+A86C ; [.354D.0020.0002] # PHAGS-PA LETTER NNA
+A848 ; [.354E.0020.0002] # PHAGS-PA LETTER TA
+A849 ; [.354F.0020.0002] # PHAGS-PA LETTER THA
+A84A ; [.3550.0020.0002] # PHAGS-PA LETTER DA
+A84B ; [.3551.0020.0002] # PHAGS-PA LETTER NA
+A84C ; [.3552.0020.0002] # PHAGS-PA LETTER PA
+A84D ; [.3553.0020.0002] # PHAGS-PA LETTER PHA
+A84E ; [.3554.0020.0002] # PHAGS-PA LETTER BA
+A84F ; [.3555.0020.0002] # PHAGS-PA LETTER MA
+A850 ; [.3556.0020.0002] # PHAGS-PA LETTER TSA
+A851 ; [.3557.0020.0002] # PHAGS-PA LETTER TSHA
+A852 ; [.3558.0020.0002] # PHAGS-PA LETTER DZA
+A853 ; [.3559.0020.0002] # PHAGS-PA LETTER WA
+A867 ; [.355A.0020.0002] # PHAGS-PA SUBJOINED LETTER WA
+A854 ; [.355B.0020.0002] # PHAGS-PA LETTER ZHA
+A855 ; [.355C.0020.0002] # PHAGS-PA LETTER ZA
+A856 ; [.355D.0020.0002] # PHAGS-PA LETTER SMALL A
+A857 ; [.355E.0020.0002] # PHAGS-PA LETTER YA
+A868 ; [.355F.0020.0002] # PHAGS-PA SUBJOINED LETTER YA
+A86D ; [.3560.0020.0002] # PHAGS-PA LETTER ALTERNATE YA
+A858 ; [.3561.0020.0002] # PHAGS-PA LETTER RA
+A871 ; [.3562.0020.0002] # PHAGS-PA SUBJOINED LETTER RA
+A872 ; [.3563.0020.0002] # PHAGS-PA SUPERFIXED LETTER RA
+A859 ; [.3564.0020.0002] # PHAGS-PA LETTER LA
+A85A ; [.3565.0020.0002] # PHAGS-PA LETTER SHA
+A86E ; [.3566.0020.0002] # PHAGS-PA LETTER VOICELESS SHA
+A85B ; [.3567.0020.0002] # PHAGS-PA LETTER SA
+A85C ; [.3568.0020.0002] # PHAGS-PA LETTER HA
+A86F ; [.3569.0020.0002] # PHAGS-PA LETTER VOICED HA
+A870 ; [.356A.0020.0002] # PHAGS-PA LETTER ASPIRATED FA
+A85D ; [.356B.0020.0002] # PHAGS-PA LETTER A
+A862 ; [.356C.0020.0002] # PHAGS-PA LETTER QA
+A863 ; [.356D.0020.0002] # PHAGS-PA LETTER XA
+A864 ; [.356E.0020.0002] # PHAGS-PA LETTER FA
+A865 ; [.356F.0020.0002] # PHAGS-PA LETTER GGA
+A85E ; [.3570.0020.0002] # PHAGS-PA LETTER I
+A85F ; [.3571.0020.0002] # PHAGS-PA LETTER U
+A860 ; [.3572.0020.0002] # PHAGS-PA LETTER E
+A861 ; [.3573.0020.0002] # PHAGS-PA LETTER O
+A866 ; [.3574.0020.0002] # PHAGS-PA LETTER EE
+A873 ; [.3575.0020.0002] # PHAGS-PA LETTER CANDRABINDU
+1900 ; [.3576.0020.0002] # LIMBU VOWEL-CARRIER LETTER
+1901 ; [.3577.0020.0002] # LIMBU LETTER KA
+1902 ; [.3578.0020.0002] # LIMBU LETTER KHA
+1903 ; [.3579.0020.0002] # LIMBU LETTER GA
+1904 ; [.357A.0020.0002] # LIMBU LETTER GHA
+1905 ; [.357B.0020.0002] # LIMBU LETTER NGA
+1906 ; [.357C.0020.0002] # LIMBU LETTER CA
+1907 ; [.357D.0020.0002] # LIMBU LETTER CHA
+1908 ; [.357E.0020.0002] # LIMBU LETTER JA
+191D ; [.357E.0020.0004][.359C.0020.0004] # LIMBU LETTER GYAN
+1909 ; [.357F.0020.0002] # LIMBU LETTER JHA
+190A ; [.3580.0020.0002] # LIMBU LETTER YAN
+190B ; [.3581.0020.0002] # LIMBU LETTER TA
+191E ; [.3581.0020.0004][.359D.0020.0004] # LIMBU LETTER TRA
+190C ; [.3582.0020.0002] # LIMBU LETTER THA
+190D ; [.3583.0020.0002] # LIMBU LETTER DA
+190E ; [.3584.0020.0002] # LIMBU LETTER DHA
+190F ; [.3585.0020.0002] # LIMBU LETTER NA
+1910 ; [.3586.0020.0002] # LIMBU LETTER PA
+1911 ; [.3587.0020.0002] # LIMBU LETTER PHA
+1912 ; [.3588.0020.0002] # LIMBU LETTER BA
+1913 ; [.3589.0020.0002] # LIMBU LETTER BHA
+1914 ; [.358A.0020.0002] # LIMBU LETTER MA
+1915 ; [.358B.0020.0002] # LIMBU LETTER YA
+1916 ; [.358C.0020.0002] # LIMBU LETTER RA
+1917 ; [.358D.0020.0002] # LIMBU LETTER LA
+1918 ; [.358E.0020.0002] # LIMBU LETTER WA
+1919 ; [.358F.0020.0002] # LIMBU LETTER SHA
+191A ; [.3590.0020.0002] # LIMBU LETTER SSA
+191B ; [.3591.0020.0002] # LIMBU LETTER SA
+191C ; [.3592.0020.0002] # LIMBU LETTER HA
+1920 ; [.3593.0020.0002] # LIMBU VOWEL SIGN A
+1921 ; [.3594.0020.0002] # LIMBU VOWEL SIGN I
+1922 ; [.3595.0020.0002] # LIMBU VOWEL SIGN U
+1923 ; [.3596.0020.0002] # LIMBU VOWEL SIGN EE
+1924 ; [.3597.0020.0002] # LIMBU VOWEL SIGN AI
+1925 ; [.3598.0020.0002] # LIMBU VOWEL SIGN OO
+1926 ; [.3599.0020.0002] # LIMBU VOWEL SIGN AU
+1927 ; [.359A.0020.0002] # LIMBU VOWEL SIGN E
+1928 ; [.359B.0020.0002] # LIMBU VOWEL SIGN O
+1929 ; [.359C.0020.0002] # LIMBU SUBJOINED LETTER YA
+192A ; [.359D.0020.0002] # LIMBU SUBJOINED LETTER RA
+192B ; [.359E.0020.0002] # LIMBU SUBJOINED LETTER WA
+1930 ; [.359F.0020.0002] # LIMBU SMALL LETTER KA
+1931 ; [.35A0.0020.0002] # LIMBU SMALL LETTER NGA
+1932 ; [.35A1.0020.0002] # LIMBU SMALL LETTER ANUSVARA
+1933 ; [.35A2.0020.0002] # LIMBU SMALL LETTER TA
+1934 ; [.35A3.0020.0002] # LIMBU SMALL LETTER NA
+1935 ; [.35A4.0020.0002] # LIMBU SMALL LETTER PA
+1936 ; [.35A5.0020.0002] # LIMBU SMALL LETTER MA
+1937 ; [.35A6.0020.0002] # LIMBU SMALL LETTER RA
+1938 ; [.35A7.0020.0002] # LIMBU SMALL LETTER LA
+1700 ; [.35A8.0020.0002] # TAGALOG LETTER A
+1701 ; [.35A9.0020.0002] # TAGALOG LETTER I
+1702 ; [.35AA.0020.0002] # TAGALOG LETTER U
+1703 ; [.35AB.0020.0002] # TAGALOG LETTER KA
+1704 ; [.35AC.0020.0002] # TAGALOG LETTER GA
+1705 ; [.35AD.0020.0002] # TAGALOG LETTER NGA
+1706 ; [.35AE.0020.0002] # TAGALOG LETTER TA
+1707 ; [.35AF.0020.0002] # TAGALOG LETTER DA
+1708 ; [.35B0.0020.0002] # TAGALOG LETTER NA
+1709 ; [.35B1.0020.0002] # TAGALOG LETTER PA
+170A ; [.35B2.0020.0002] # TAGALOG LETTER BA
+170B ; [.35B3.0020.0002] # TAGALOG LETTER MA
+170C ; [.35B4.0020.0002] # TAGALOG LETTER YA
+170D ; [.35B5.0020.0002] # TAGALOG LETTER RA
+171F ; [.35B6.0020.0002] # TAGALOG LETTER ARCHAIC RA
+170E ; [.35B7.0020.0002] # TAGALOG LETTER LA
+170F ; [.35B8.0020.0002] # TAGALOG LETTER WA
+1710 ; [.35B9.0020.0002] # TAGALOG LETTER SA
+1711 ; [.35BA.0020.0002] # TAGALOG LETTER HA
+1712 ; [.35BB.0020.0002] # TAGALOG VOWEL SIGN I
+1713 ; [.35BC.0020.0002] # TAGALOG VOWEL SIGN U
+1714 ; [.35BD.0020.0002] # TAGALOG SIGN VIRAMA
+1715 ; [.35BE.0020.0002] # TAGALOG SIGN PAMUDPOD
+1720 ; [.35BF.0020.0002] # HANUNOO LETTER A
+1721 ; [.35C0.0020.0002] # HANUNOO LETTER I
+1722 ; [.35C1.0020.0002] # HANUNOO LETTER U
+1723 ; [.35C2.0020.0002] # HANUNOO LETTER KA
+1724 ; [.35C3.0020.0002] # HANUNOO LETTER GA
+1725 ; [.35C4.0020.0002] # HANUNOO LETTER NGA
+1726 ; [.35C5.0020.0002] # HANUNOO LETTER TA
+1727 ; [.35C6.0020.0002] # HANUNOO LETTER DA
+1728 ; [.35C7.0020.0002] # HANUNOO LETTER NA
+1729 ; [.35C8.0020.0002] # HANUNOO LETTER PA
+172A ; [.35C9.0020.0002] # HANUNOO LETTER BA
+172B ; [.35CA.0020.0002] # HANUNOO LETTER MA
+172C ; [.35CB.0020.0002] # HANUNOO LETTER YA
+172D ; [.35CC.0020.0002] # HANUNOO LETTER RA
+172E ; [.35CD.0020.0002] # HANUNOO LETTER LA
+172F ; [.35CE.0020.0002] # HANUNOO LETTER WA
+1730 ; [.35CF.0020.0002] # HANUNOO LETTER SA
+1731 ; [.35D0.0020.0002] # HANUNOO LETTER HA
+1732 ; [.35D1.0020.0002] # HANUNOO VOWEL SIGN I
+1733 ; [.35D2.0020.0002] # HANUNOO VOWEL SIGN U
+1734 ; [.35D3.0020.0002] # HANUNOO SIGN PAMUDPOD
+1740 ; [.35D4.0020.0002] # BUHID LETTER A
+1741 ; [.35D5.0020.0002] # BUHID LETTER I
+1742 ; [.35D6.0020.0002] # BUHID LETTER U
+1743 ; [.35D7.0020.0002] # BUHID LETTER KA
+1744 ; [.35D8.0020.0002] # BUHID LETTER GA
+1745 ; [.35D9.0020.0002] # BUHID LETTER NGA
+1746 ; [.35DA.0020.0002] # BUHID LETTER TA
+1747 ; [.35DB.0020.0002] # BUHID LETTER DA
+1748 ; [.35DC.0020.0002] # BUHID LETTER NA
+1749 ; [.35DD.0020.0002] # BUHID LETTER PA
+174A ; [.35DE.0020.0002] # BUHID LETTER BA
+174B ; [.35DF.0020.0002] # BUHID LETTER MA
+174C ; [.35E0.0020.0002] # BUHID LETTER YA
+174D ; [.35E1.0020.0002] # BUHID LETTER RA
+174E ; [.35E2.0020.0002] # BUHID LETTER LA
+174F ; [.35E3.0020.0002] # BUHID LETTER WA
+1750 ; [.35E4.0020.0002] # BUHID LETTER SA
+1751 ; [.35E5.0020.0002] # BUHID LETTER HA
+1752 ; [.35E6.0020.0002] # BUHID VOWEL SIGN I
+1753 ; [.35E7.0020.0002] # BUHID VOWEL SIGN U
+1760 ; [.35E8.0020.0002] # TAGBANWA LETTER A
+1761 ; [.35E9.0020.0002] # TAGBANWA LETTER I
+1762 ; [.35EA.0020.0002] # TAGBANWA LETTER U
+1763 ; [.35EB.0020.0002] # TAGBANWA LETTER KA
+1764 ; [.35EC.0020.0002] # TAGBANWA LETTER GA
+1765 ; [.35ED.0020.0002] # TAGBANWA LETTER NGA
+1766 ; [.35EE.0020.0002] # TAGBANWA LETTER TA
+1767 ; [.35EF.0020.0002] # TAGBANWA LETTER DA
+1768 ; [.35F0.0020.0002] # TAGBANWA LETTER NA
+1769 ; [.35F1.0020.0002] # TAGBANWA LETTER PA
+176A ; [.35F2.0020.0002] # TAGBANWA LETTER BA
+176B ; [.35F3.0020.0002] # TAGBANWA LETTER MA
+176C ; [.35F4.0020.0002] # TAGBANWA LETTER YA
+176E ; [.35F5.0020.0002] # TAGBANWA LETTER LA
+176F ; [.35F6.0020.0002] # TAGBANWA LETTER WA
+1770 ; [.35F7.0020.0002] # TAGBANWA LETTER SA
+1772 ; [.35F8.0020.0002] # TAGBANWA VOWEL SIGN I
+1773 ; [.35F9.0020.0002] # TAGBANWA VOWEL SIGN U
+1A00 ; [.35FA.0020.0002] # BUGINESE LETTER KA
+1A01 ; [.35FB.0020.0002] # BUGINESE LETTER GA
+1A02 ; [.35FC.0020.0002] # BUGINESE LETTER NGA
+1A03 ; [.35FD.0020.0002] # BUGINESE LETTER NGKA
+1A04 ; [.35FE.0020.0002] # BUGINESE LETTER PA
+1A05 ; [.35FF.0020.0002] # BUGINESE LETTER BA
+1A06 ; [.3600.0020.0002] # BUGINESE LETTER MA
+1A07 ; [.3601.0020.0002] # BUGINESE LETTER MPA
+1A08 ; [.3602.0020.0002] # BUGINESE LETTER TA
+1A09 ; [.3603.0020.0002] # BUGINESE LETTER DA
+1A0A ; [.3604.0020.0002] # BUGINESE LETTER NA
+1A0B ; [.3605.0020.0002] # BUGINESE LETTER NRA
+1A0C ; [.3606.0020.0002] # BUGINESE LETTER CA
+1A0D ; [.3607.0020.0002] # BUGINESE LETTER JA
+1A0E ; [.3608.0020.0002] # BUGINESE LETTER NYA
+1A0F ; [.3609.0020.0002] # BUGINESE LETTER NYCA
+1A10 ; [.360A.0020.0002] # BUGINESE LETTER YA
+1A11 ; [.360B.0020.0002] # BUGINESE LETTER RA
+1A12 ; [.360C.0020.0002] # BUGINESE LETTER LA
+1A13 ; [.360D.0020.0002] # BUGINESE LETTER VA
+1A14 ; [.360E.0020.0002] # BUGINESE LETTER SA
+1A15 ; [.360F.0020.0002] # BUGINESE LETTER A
+1A16 ; [.3610.0020.0002] # BUGINESE LETTER HA
+1A17 ; [.3611.0020.0002] # BUGINESE VOWEL SIGN I
+1A18 ; [.3612.0020.0002] # BUGINESE VOWEL SIGN U
+1A19 ; [.3613.0020.0002] # BUGINESE VOWEL SIGN E
+1A1A ; [.3614.0020.0002] # BUGINESE VOWEL SIGN O
+1A1B ; [.3615.0020.0002] # BUGINESE VOWEL SIGN AE
+11EE0 ; [.3616.0020.0002] # MAKASAR LETTER KA
+11EE1 ; [.3617.0020.0002] # MAKASAR LETTER GA
+11EE2 ; [.3618.0020.0002] # MAKASAR LETTER NGA
+11EE3 ; [.3619.0020.0002] # MAKASAR LETTER PA
+11EE4 ; [.361A.0020.0002] # MAKASAR LETTER BA
+11EE5 ; [.361B.0020.0002] # MAKASAR LETTER MA
+11EE6 ; [.361C.0020.0002] # MAKASAR LETTER TA
+11EE7 ; [.361D.0020.0002] # MAKASAR LETTER DA
+11EE8 ; [.361E.0020.0002] # MAKASAR LETTER NA
+11EE9 ; [.361F.0020.0002] # MAKASAR LETTER CA
+11EEA ; [.3620.0020.0002] # MAKASAR LETTER JA
+11EEB ; [.3621.0020.0002] # MAKASAR LETTER NYA
+11EEC ; [.3622.0020.0002] # MAKASAR LETTER YA
+11EED ; [.3623.0020.0002] # MAKASAR LETTER RA
+11EEE ; [.3624.0020.0002] # MAKASAR LETTER LA
+11EEF ; [.3625.0020.0002] # MAKASAR LETTER VA
+11EF0 ; [.3626.0020.0002] # MAKASAR LETTER SA
+11EF1 ; [.3627.0020.0002] # MAKASAR LETTER A
+11EF2 ; [.3628.0020.0002] # MAKASAR ANGKA
+11EF3 ; [.3629.0020.0002] # MAKASAR VOWEL SIGN I
+11EF4 ; [.362A.0020.0002] # MAKASAR VOWEL SIGN U
+11EF5 ; [.362B.0020.0002] # MAKASAR VOWEL SIGN E
+11EF6 ; [.362C.0020.0002] # MAKASAR VOWEL SIGN O
+1BC0 ; [.362D.0020.0002] # BATAK LETTER A
+1BC1 ; [.362D.0020.0004] # BATAK LETTER SIMALUNGUN A
+1BC2 ; [.362E.0020.0002] # BATAK LETTER HA
+1BC3 ; [.362E.0020.0004] # BATAK LETTER SIMALUNGUN HA
+1BC4 ; [.362E.0020.0004] # BATAK LETTER MANDAILING HA
+1BC5 ; [.362F.0020.0002] # BATAK LETTER BA
+1BC6 ; [.362F.0020.0004] # BATAK LETTER KARO BA
+1BC7 ; [.3630.0020.0002] # BATAK LETTER PA
+1BC8 ; [.3630.0020.0004] # BATAK LETTER SIMALUNGUN PA
+1BC9 ; [.3631.0020.0002] # BATAK LETTER NA
+1BCA ; [.3631.0020.0004] # BATAK LETTER MANDAILING NA
+1BCB ; [.3632.0020.0002] # BATAK LETTER WA
+1BCC ; [.3632.0020.0004] # BATAK LETTER SIMALUNGUN WA
+1BCD ; [.3632.0020.0004] # BATAK LETTER PAKPAK WA
+1BCE ; [.3633.0020.0002] # BATAK LETTER GA
+1BCF ; [.3633.0020.0004] # BATAK LETTER SIMALUNGUN GA
+1BD0 ; [.3634.0020.0002] # BATAK LETTER JA
+1BD1 ; [.3635.0020.0002] # BATAK LETTER DA
+1BD2 ; [.3636.0020.0002] # BATAK LETTER RA
+1BD3 ; [.3636.0020.0004] # BATAK LETTER SIMALUNGUN RA
+1BD4 ; [.3637.0020.0002] # BATAK LETTER MA
+1BD5 ; [.3637.0020.0004] # BATAK LETTER SIMALUNGUN MA
+1BD6 ; [.3638.0020.0002] # BATAK LETTER SOUTHERN TA
+1BD7 ; [.3638.0020.0004] # BATAK LETTER NORTHERN TA
+1BD8 ; [.3639.0020.0002] # BATAK LETTER SA
+1BD9 ; [.3639.0020.0004] # BATAK LETTER SIMALUNGUN SA
+1BDA ; [.3639.0020.0004] # BATAK LETTER MANDAILING SA
+1BDB ; [.363A.0020.0002] # BATAK LETTER YA
+1BDC ; [.363A.0020.0004] # BATAK LETTER SIMALUNGUN YA
+1BDD ; [.363B.0020.0002] # BATAK LETTER NGA
+1BDE ; [.363C.0020.0002] # BATAK LETTER LA
+1BDF ; [.363C.0020.0004] # BATAK LETTER SIMALUNGUN LA
+1BE0 ; [.363D.0020.0002] # BATAK LETTER NYA
+1BE1 ; [.363E.0020.0002] # BATAK LETTER CA
+1BE2 ; [.363F.0020.0002] # BATAK LETTER NDA
+1BE3 ; [.3640.0020.0002] # BATAK LETTER MBA
+1BE4 ; [.3641.0020.0002] # BATAK LETTER I
+1BE5 ; [.3642.0020.0002] # BATAK LETTER U
+1BE7 ; [.3643.0020.0002] # BATAK VOWEL SIGN E
+1BE8 ; [.3643.0020.0004] # BATAK VOWEL SIGN PAKPAK E
+1BE9 ; [.3644.0020.0002] # BATAK VOWEL SIGN EE
+1BEA ; [.3645.0020.0002] # BATAK VOWEL SIGN I
+1BEB ; [.3645.0020.0004] # BATAK VOWEL SIGN KARO I
+1BEC ; [.3646.0020.0002] # BATAK VOWEL SIGN O
+1BED ; [.3646.0020.0004] # BATAK VOWEL SIGN KARO O
+1BEE ; [.3647.0020.0002] # BATAK VOWEL SIGN U
+1BEF ; [.3647.0020.0004] # BATAK VOWEL SIGN U FOR SIMALUNGUN SA
+1BF0 ; [.3648.0020.0002] # BATAK CONSONANT SIGN NG
+1BF1 ; [.3649.0020.0002] # BATAK CONSONANT SIGN H
+1BF2 ; [.364A.0020.0002] # BATAK PANGOLAT
+1BF3 ; [.364B.0020.0002] # BATAK PANONGONAN
+A930 ; [.364C.0020.0002] # REJANG LETTER KA
+A931 ; [.364D.0020.0002] # REJANG LETTER GA
+A932 ; [.364E.0020.0002] # REJANG LETTER NGA
+A933 ; [.364F.0020.0002] # REJANG LETTER TA
+A934 ; [.3650.0020.0002] # REJANG LETTER DA
+A935 ; [.3651.0020.0002] # REJANG LETTER NA
+A936 ; [.3652.0020.0002] # REJANG LETTER PA
+A937 ; [.3653.0020.0002] # REJANG LETTER BA
+A938 ; [.3654.0020.0002] # REJANG LETTER MA
+A939 ; [.3655.0020.0002] # REJANG LETTER CA
+A93A ; [.3656.0020.0002] # REJANG LETTER JA
+A93B ; [.3657.0020.0002] # REJANG LETTER NYA
+A93C ; [.3658.0020.0002] # REJANG LETTER SA
+A93D ; [.3659.0020.0002] # REJANG LETTER RA
+A93E ; [.365A.0020.0002] # REJANG LETTER LA
+A93F ; [.365B.0020.0002] # REJANG LETTER YA
+A940 ; [.365C.0020.0002] # REJANG LETTER WA
+A941 ; [.365D.0020.0002] # REJANG LETTER HA
+A942 ; [.365E.0020.0002] # REJANG LETTER MBA
+A943 ; [.365F.0020.0002] # REJANG LETTER NGGA
+A944 ; [.3660.0020.0002] # REJANG LETTER NDA
+A945 ; [.3661.0020.0002] # REJANG LETTER NYJA
+A946 ; [.3662.0020.0002] # REJANG LETTER A
+A947 ; [.3663.0020.0002] # REJANG VOWEL SIGN I
+A948 ; [.3664.0020.0002] # REJANG VOWEL SIGN U
+A949 ; [.3665.0020.0002] # REJANG VOWEL SIGN E
+A94A ; [.3666.0020.0002] # REJANG VOWEL SIGN AI
+A94B ; [.3667.0020.0002] # REJANG VOWEL SIGN O
+A94C ; [.3668.0020.0002] # REJANG VOWEL SIGN AU
+A94D ; [.3669.0020.0002] # REJANG VOWEL SIGN EU
+A94E ; [.366A.0020.0002] # REJANG VOWEL SIGN EA
+A94F ; [.366B.0020.0002] # REJANG CONSONANT SIGN NG
+A950 ; [.366C.0020.0002] # REJANG CONSONANT SIGN N
+A951 ; [.366D.0020.0002] # REJANG CONSONANT SIGN R
+A952 ; [.366E.0020.0002] # REJANG CONSONANT SIGN H
+A953 ; [.366F.0020.0002] # REJANG VIRAMA
+A90A ; [.3670.0020.0002] # KAYAH LI LETTER KA
+A90B ; [.3671.0020.0002] # KAYAH LI LETTER KHA
+A90C ; [.3672.0020.0002] # KAYAH LI LETTER GA
+A90D ; [.3673.0020.0002] # KAYAH LI LETTER NGA
+A90E ; [.3674.0020.0002] # KAYAH LI LETTER SA
+A90F ; [.3675.0020.0002] # KAYAH LI LETTER SHA
+A910 ; [.3676.0020.0002] # KAYAH LI LETTER ZA
+A911 ; [.3677.0020.0002] # KAYAH LI LETTER NYA
+A912 ; [.3678.0020.0002] # KAYAH LI LETTER TA
+A913 ; [.3679.0020.0002] # KAYAH LI LETTER HTA
+A914 ; [.367A.0020.0002] # KAYAH LI LETTER NA
+A915 ; [.367B.0020.0002] # KAYAH LI LETTER PA
+A916 ; [.367C.0020.0002] # KAYAH LI LETTER PHA
+A917 ; [.367D.0020.0002] # KAYAH LI LETTER MA
+A918 ; [.367E.0020.0002] # KAYAH LI LETTER DA
+A919 ; [.367F.0020.0002] # KAYAH LI LETTER BA
+A91A ; [.3680.0020.0002] # KAYAH LI LETTER RA
+A91B ; [.3681.0020.0002] # KAYAH LI LETTER YA
+A91C ; [.3682.0020.0002] # KAYAH LI LETTER LA
+A91D ; [.3683.0020.0002] # KAYAH LI LETTER WA
+A91E ; [.3684.0020.0002] # KAYAH LI LETTER THA
+A91F ; [.3685.0020.0002] # KAYAH LI LETTER HA
+A920 ; [.3686.0020.0002] # KAYAH LI LETTER VA
+A921 ; [.3687.0020.0002] # KAYAH LI LETTER CA
+A922 ; [.3688.0020.0002] # KAYAH LI LETTER A
+A923 ; [.3689.0020.0002] # KAYAH LI LETTER OE
+A924 ; [.368A.0020.0002] # KAYAH LI LETTER I
+A925 ; [.368B.0020.0002] # KAYAH LI LETTER OO
+A926 ; [.368C.0020.0002] # KAYAH LI VOWEL UE
+A927 ; [.368D.0020.0002] # KAYAH LI VOWEL E
+A928 ; [.368E.0020.0002] # KAYAH LI VOWEL U
+A929 ; [.368F.0020.0002] # KAYAH LI VOWEL EE
+A92A ; [.3690.0020.0002] # KAYAH LI VOWEL O
+1000 ; [.3691.0020.0002] # MYANMAR LETTER KA
+1075 ; [.3692.0020.0002] # MYANMAR LETTER SHAN KA
+1001 ; [.3693.0020.0002] # MYANMAR LETTER KHA
+1076 ; [.3694.0020.0002] # MYANMAR LETTER SHAN KHA
+1002 ; [.3695.0020.0002] # MYANMAR LETTER GA
+1077 ; [.3696.0020.0002] # MYANMAR LETTER SHAN GA
+AA60 ; [.3697.0020.0002] # MYANMAR LETTER KHAMTI GA
+A9E9 ; [.3698.0020.0002] # MYANMAR LETTER TAI LAING GA
+1003 ; [.3699.0020.0002] # MYANMAR LETTER GHA
+A9E0 ; [.369A.0020.0002] # MYANMAR LETTER SHAN GHA
+A9EA ; [.369B.0020.0002] # MYANMAR LETTER TAI LAING GHA
+1004 ; [.369C.0020.0002] # MYANMAR LETTER NGA
+105A ; [.369D.0020.0002] # MYANMAR LETTER MON NGA
+1005 ; [.369E.0020.0002] # MYANMAR LETTER CA
+1078 ; [.369F.0020.0002] # MYANMAR LETTER SHAN CA
+AA61 ; [.36A0.0020.0002] # MYANMAR LETTER KHAMTI CA
+1006 ; [.36A1.0020.0002] # MYANMAR LETTER CHA
+A9E1 ; [.36A2.0020.0002] # MYANMAR LETTER SHAN CHA
+AA62 ; [.36A3.0020.0002] # MYANMAR LETTER KHAMTI CHA
+AA7E ; [.36A4.0020.0002] # MYANMAR LETTER SHWE PALAUNG CHA
+1007 ; [.36A5.0020.0002] # MYANMAR LETTER JA
+AA63 ; [.36A6.0020.0002] # MYANMAR LETTER KHAMTI JA
+A9EB ; [.36A7.0020.0002] # MYANMAR LETTER TAI LAING JA
+1079 ; [.36A8.0020.0002] # MYANMAR LETTER SHAN ZA
+AA72 ; [.36A9.0020.0002] # MYANMAR LETTER KHAMTI ZA
+1008 ; [.36AA.0020.0002] # MYANMAR LETTER JHA
+105B ; [.36AB.0020.0002] # MYANMAR LETTER MON JHA
+A9E2 ; [.36AC.0020.0002] # MYANMAR LETTER SHAN JHA
+AA64 ; [.36AD.0020.0002] # MYANMAR LETTER KHAMTI JHA
+A9EC ; [.36AE.0020.0002] # MYANMAR LETTER TAI LAING JHA
+1061 ; [.36AF.0020.0002] # MYANMAR LETTER SGAW KAREN SHA
+AA7F ; [.36B0.0020.0002] # MYANMAR LETTER SHWE PALAUNG SHA
+1009 ; [.36B1.0020.0002] # MYANMAR LETTER NYA
+107A ; [.36B2.0020.0002] # MYANMAR LETTER SHAN NYA
+AA65 ; [.36B3.0020.0002] # MYANMAR LETTER KHAMTI NYA
+A9E7 ; [.36B4.0020.0002] # MYANMAR LETTER TAI LAING NYA
+100A ; [.36B5.0020.0002] # MYANMAR LETTER NNYA
+100B ; [.36B6.0020.0002] # MYANMAR LETTER TTA
+AA66 ; [.36B7.0020.0002] # MYANMAR LETTER KHAMTI TTA
+100C ; [.36B8.0020.0002] # MYANMAR LETTER TTHA
+AA67 ; [.36B9.0020.0002] # MYANMAR LETTER KHAMTI TTHA
+100D ; [.36BA.0020.0002] # MYANMAR LETTER DDA
+AA68 ; [.36BB.0020.0002] # MYANMAR LETTER KHAMTI DDA
+A9ED ; [.36BC.0020.0002] # MYANMAR LETTER TAI LAING DDA
+100E ; [.36BD.0020.0002] # MYANMAR LETTER DDHA
+AA69 ; [.36BE.0020.0002] # MYANMAR LETTER KHAMTI DDHA
+A9EE ; [.36BF.0020.0002] # MYANMAR LETTER TAI LAING DDHA
+100F ; [.36C0.0020.0002] # MYANMAR LETTER NNA
+106E ; [.36C1.0020.0002] # MYANMAR LETTER EASTERN PWO KAREN NNA
+A9E3 ; [.36C2.0020.0002] # MYANMAR LETTER SHAN NNA
+A9EF ; [.36C3.0020.0002] # MYANMAR LETTER TAI LAING NNA
+1010 ; [.36C4.0020.0002] # MYANMAR LETTER TA
+1011 ; [.36C5.0020.0002] # MYANMAR LETTER THA
+1012 ; [.36C6.0020.0002] # MYANMAR LETTER DA
+107B ; [.36C7.0020.0002] # MYANMAR LETTER SHAN DA
+A9FB ; [.36C8.0020.0002] # MYANMAR LETTER TAI LAING DA
+1013 ; [.36C9.0020.0002] # MYANMAR LETTER DHA
+AA6A ; [.36CA.0020.0002] # MYANMAR LETTER KHAMTI DHA
+A9FC ; [.36CB.0020.0002] # MYANMAR LETTER TAI LAING DHA
+1014 ; [.36CC.0020.0002] # MYANMAR LETTER NA
+107C ; [.36CD.0020.0002] # MYANMAR LETTER SHAN NA
+AA6B ; [.36CE.0020.0002] # MYANMAR LETTER KHAMTI NA
+105E ; [.36CF.0020.0002] # MYANMAR CONSONANT SIGN MON MEDIAL NA
+1015 ; [.36D0.0020.0002] # MYANMAR LETTER PA
+1016 ; [.36D1.0020.0002] # MYANMAR LETTER PHA
+107D ; [.36D2.0020.0002] # MYANMAR LETTER SHAN PHA
+107E ; [.36D3.0020.0002] # MYANMAR LETTER SHAN FA
+AA6F ; [.36D4.0020.0002] # MYANMAR LETTER KHAMTI FA
+108E ; [.36D5.0020.0002] # MYANMAR LETTER RUMAI PALAUNG FA
+A9E8 ; [.36D6.0020.0002] # MYANMAR LETTER TAI LAING FA
+1017 ; [.36D7.0020.0002] # MYANMAR LETTER BA
+107F ; [.36D8.0020.0002] # MYANMAR LETTER SHAN BA
+A9FD ; [.36D9.0020.0002] # MYANMAR LETTER TAI LAING BA
+1018 ; [.36DA.0020.0002] # MYANMAR LETTER BHA
+A9E4 ; [.36DB.0020.0002] # MYANMAR LETTER SHAN BHA
+A9FE ; [.36DC.0020.0002] # MYANMAR LETTER TAI LAING BHA
+1019 ; [.36DD.0020.0002] # MYANMAR LETTER MA
+105F ; [.36DE.0020.0002] # MYANMAR CONSONANT SIGN MON MEDIAL MA
+101A ; [.36DF.0020.0002] # MYANMAR LETTER YA
+103B ; [.36E0.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL YA
+101B ; [.36E1.0020.0002] # MYANMAR LETTER RA
+AA73 ; [.36E2.0020.0002] # MYANMAR LETTER KHAMTI RA
+AA7A ; [.36E3.0020.0002] # MYANMAR LETTER AITON RA
+103C ; [.36E4.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL RA
+101C ; [.36E5.0020.0002] # MYANMAR LETTER LA
+1060 ; [.36E6.0020.0002] # MYANMAR CONSONANT SIGN MON MEDIAL LA
+101D ; [.36E7.0020.0002] # MYANMAR LETTER WA
+103D ; [.36E8.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL WA
+1082 ; [.36E9.0020.0002] # MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+1080 ; [.36EA.0020.0002] # MYANMAR LETTER SHAN THA
+1050 ; [.36EB.0020.0002] # MYANMAR LETTER SHA
+1051 ; [.36EC.0020.0002] # MYANMAR LETTER SSA
+1065 ; [.36ED.0020.0002] # MYANMAR LETTER WESTERN PWO KAREN THA
+101E ; [.36EE.0020.0002] # MYANMAR LETTER SA
+103F ; [.36EE.0020.0004][.3727.0020.0004][.36EE.0020.0004] # MYANMAR LETTER GREAT SA
+AA6C ; [.36EF.0020.0002] # MYANMAR LETTER KHAMTI SA
+101F ; [.36F0.0020.0002] # MYANMAR LETTER HA
+1081 ; [.36F1.0020.0002] # MYANMAR LETTER SHAN HA
+AA6D ; [.36F2.0020.0002] # MYANMAR LETTER KHAMTI HA
+103E ; [.36F3.0020.0002] # MYANMAR CONSONANT SIGN MEDIAL HA
+AA6E ; [.36F4.0020.0002] # MYANMAR LETTER KHAMTI HHA
+AA71 ; [.36F5.0020.0002] # MYANMAR LETTER KHAMTI XA
+1020 ; [.36F6.0020.0002] # MYANMAR LETTER LLA
+A9FA ; [.36F7.0020.0002] # MYANMAR LETTER TAI LAING LLA
+105C ; [.36F8.0020.0002] # MYANMAR LETTER MON BBA
+105D ; [.36F9.0020.0002] # MYANMAR LETTER MON BBE
+106F ; [.36FA.0020.0002] # MYANMAR LETTER EASTERN PWO KAREN YWA
+1070 ; [.36FB.0020.0002] # MYANMAR LETTER EASTERN PWO KAREN GHWA
+1066 ; [.36FC.0020.0002] # MYANMAR LETTER WESTERN PWO KAREN PWA
+1021 ; [.36FD.0020.0002] # MYANMAR LETTER A
+1022 ; [.36FE.0020.0002] # MYANMAR LETTER SHAN A
+1023 ; [.36FF.0020.0002] # MYANMAR LETTER I
+1024 ; [.3700.0020.0002] # MYANMAR LETTER II
+1025 ; [.3701.0020.0002] # MYANMAR LETTER U
+1026 ; [.3702.0020.0002] # MYANMAR LETTER UU
+1025 102E ; [.3702.0020.0002] # MYANMAR LETTER UU
+1052 ; [.3703.0020.0002] # MYANMAR LETTER VOCALIC R
+1053 ; [.3704.0020.0002] # MYANMAR LETTER VOCALIC RR
+1054 ; [.3705.0020.0002] # MYANMAR LETTER VOCALIC L
+1055 ; [.3706.0020.0002] # MYANMAR LETTER VOCALIC LL
+1027 ; [.3707.0020.0002] # MYANMAR LETTER E
+1028 ; [.3708.0020.0002] # MYANMAR LETTER MON E
+1029 ; [.3709.0020.0002] # MYANMAR LETTER O
+102A ; [.370A.0020.0002] # MYANMAR LETTER AU
+102C ; [.370B.0020.0002] # MYANMAR VOWEL SIGN AA
+102B ; [.370B.0020.0004] # MYANMAR VOWEL SIGN TALL AA
+1083 ; [.370C.0020.0002] # MYANMAR VOWEL SIGN SHAN AA
+1072 ; [.370D.0020.0002] # MYANMAR VOWEL SIGN KAYAH OE
+109C ; [.370E.0020.0002] # MYANMAR VOWEL SIGN AITON A
+102D ; [.370F.0020.0002] # MYANMAR VOWEL SIGN I
+1071 ; [.3710.0020.0002] # MYANMAR VOWEL SIGN GEBA KAREN I
+102E ; [.3711.0020.0002] # MYANMAR VOWEL SIGN II
+1033 ; [.3712.0020.0002] # MYANMAR VOWEL SIGN MON II
+102F ; [.3713.0020.0002] # MYANMAR VOWEL SIGN U
+1073 ; [.3714.0020.0002] # MYANMAR VOWEL SIGN KAYAH U
+1074 ; [.3715.0020.0002] # MYANMAR VOWEL SIGN KAYAH EE
+1030 ; [.3716.0020.0002] # MYANMAR VOWEL SIGN UU
+1056 ; [.3717.0020.0002] # MYANMAR VOWEL SIGN VOCALIC R
+1057 ; [.3718.0020.0002] # MYANMAR VOWEL SIGN VOCALIC RR
+1058 ; [.3719.0020.0002] # MYANMAR VOWEL SIGN VOCALIC L
+1059 ; [.371A.0020.0002] # MYANMAR VOWEL SIGN VOCALIC LL
+1031 ; [.371B.0020.0002] # MYANMAR VOWEL SIGN E
+1084 ; [.371C.0020.0002] # MYANMAR VOWEL SIGN SHAN E
+1035 ; [.371D.0020.0002] # MYANMAR VOWEL SIGN E ABOVE
+1085 ; [.371E.0020.0002] # MYANMAR VOWEL SIGN SHAN E ABOVE
+1032 ; [.371F.0020.0002] # MYANMAR VOWEL SIGN AI
+109D ; [.3720.0020.0002] # MYANMAR VOWEL SIGN AITON AI
+1086 ; [.3721.0020.0002] # MYANMAR VOWEL SIGN SHAN FINAL Y
+1034 ; [.3722.0020.0002] # MYANMAR VOWEL SIGN MON O
+1062 ; [.3723.0020.0002] # MYANMAR VOWEL SIGN SGAW KAREN EU
+1067 ; [.3724.0020.0002] # MYANMAR VOWEL SIGN WESTERN PWO KAREN EU
+1068 ; [.3725.0020.0002] # MYANMAR VOWEL SIGN WESTERN PWO KAREN UE
+A9E5 ; [.3726.0020.0002] # MYANMAR SIGN SHAN SAW
+1039 ; [.3727.0020.0002] # MYANMAR SIGN VIRAMA
+103A ; [.3728.0020.0002] # MYANMAR SIGN ASAT
+1063 ; [.3729.0020.0002] # MYANMAR TONE MARK SGAW KAREN HATHI
+1064 ; [.372A.0020.0002] # MYANMAR TONE MARK SGAW KAREN KE PHO
+1069 ; [.372B.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-1
+106A ; [.372C.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-2
+106B ; [.372D.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-3
+106C ; [.372E.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-4
+106D ; [.372F.0020.0002] # MYANMAR SIGN WESTERN PWO KAREN TONE-5
+1087 ; [.3730.0020.0002] # MYANMAR SIGN SHAN TONE-2
+108B ; [.3731.0020.0002] # MYANMAR SIGN SHAN COUNCIL TONE-2
+1088 ; [.3732.0020.0002] # MYANMAR SIGN SHAN TONE-3
+108C ; [.3733.0020.0002] # MYANMAR SIGN SHAN COUNCIL TONE-3
+108D ; [.3734.0020.0002] # MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+1089 ; [.3735.0020.0002] # MYANMAR SIGN SHAN TONE-5
+108A ; [.3736.0020.0002] # MYANMAR SIGN SHAN TONE-6
+108F ; [.3737.0020.0002] # MYANMAR SIGN RUMAI PALAUNG TONE-5
+109A ; [.3738.0020.0002] # MYANMAR SIGN KHAMTI TONE-1
+109B ; [.3739.0020.0002] # MYANMAR SIGN KHAMTI TONE-3
+AA7B ; [.373A.0020.0002] # MYANMAR SIGN PAO KAREN TONE
+AA7C ; [.373B.0020.0002] # MYANMAR SIGN TAI LAING TONE-2
+AA7D ; [.373C.0020.0002] # MYANMAR SIGN TAI LAING TONE-5
+AA74 ; [.373D.0020.0002] # MYANMAR LOGOGRAM KHAMTI OAY
+AA75 ; [.373E.0020.0002] # MYANMAR LOGOGRAM KHAMTI QN
+AA76 ; [.373F.0020.0002] # MYANMAR LOGOGRAM KHAMTI HM
+10D00 ; [.3740.0020.0002] # HANIFI ROHINGYA LETTER A
+10D1D ; [.3741.0020.0002] # HANIFI ROHINGYA VOWEL A
+10D1E ; [.3742.0020.0002] # HANIFI ROHINGYA VOWEL I
+10D1F ; [.3743.0020.0002] # HANIFI ROHINGYA VOWEL U
+10D20 ; [.3744.0020.0002] # HANIFI ROHINGYA VOWEL E
+10D21 ; [.3745.0020.0002] # HANIFI ROHINGYA VOWEL O
+10D01 ; [.3746.0020.0002] # HANIFI ROHINGYA LETTER BA
+10D02 ; [.3747.0020.0002] # HANIFI ROHINGYA LETTER PA
+10D03 ; [.3748.0020.0002] # HANIFI ROHINGYA LETTER TA
+10D04 ; [.3749.0020.0002] # HANIFI ROHINGYA LETTER TTA
+10D05 ; [.374A.0020.0002] # HANIFI ROHINGYA LETTER JA
+10D06 ; [.374B.0020.0002] # HANIFI ROHINGYA LETTER CA
+10D07 ; [.374C.0020.0002] # HANIFI ROHINGYA LETTER HA
+10D08 ; [.374D.0020.0002] # HANIFI ROHINGYA LETTER KHA
+10D09 ; [.374E.0020.0002] # HANIFI ROHINGYA LETTER FA
+10D0A ; [.374F.0020.0002] # HANIFI ROHINGYA LETTER DA
+10D0B ; [.3750.0020.0002] # HANIFI ROHINGYA LETTER DDA
+10D0C ; [.3751.0020.0002] # HANIFI ROHINGYA LETTER RA
+10D0D ; [.3752.0020.0002] # HANIFI ROHINGYA LETTER RRA
+10D0E ; [.3753.0020.0002] # HANIFI ROHINGYA LETTER ZA
+10D0F ; [.3754.0020.0002] # HANIFI ROHINGYA LETTER SA
+10D10 ; [.3755.0020.0002] # HANIFI ROHINGYA LETTER SHA
+10D11 ; [.3756.0020.0002] # HANIFI ROHINGYA LETTER KA
+10D12 ; [.3757.0020.0002] # HANIFI ROHINGYA LETTER GA
+10D13 ; [.3758.0020.0002] # HANIFI ROHINGYA LETTER LA
+10D14 ; [.3759.0020.0002] # HANIFI ROHINGYA LETTER MA
+10D15 ; [.375A.0020.0002] # HANIFI ROHINGYA LETTER NA
+10D16 ; [.375B.0020.0002] # HANIFI ROHINGYA LETTER WA
+10D17 ; [.375C.0020.0002] # HANIFI ROHINGYA LETTER KINNA WA
+10D18 ; [.375D.0020.0002] # HANIFI ROHINGYA LETTER YA
+10D19 ; [.375E.0020.0002] # HANIFI ROHINGYA LETTER KINNA YA
+10D1A ; [.375F.0020.0002] # HANIFI ROHINGYA LETTER NGA
+10D1B ; [.3760.0020.0002] # HANIFI ROHINGYA LETTER NYA
+10D1C ; [.3761.0020.0002] # HANIFI ROHINGYA LETTER VA
+10D22 ; [.3762.0020.0002] # HANIFI ROHINGYA MARK SAKIN
+10D23 ; [.3763.0020.0002] # HANIFI ROHINGYA MARK NA KHONNA
+11103 ; [.3764.0020.0002] # CHAKMA LETTER AA
+11104 ; [.3765.0020.0002] # CHAKMA LETTER I
+11105 ; [.3766.0020.0002] # CHAKMA LETTER U
+11106 ; [.3767.0020.0002] # CHAKMA LETTER E
+11107 ; [.3768.0020.0002] # CHAKMA LETTER KAA
+11108 ; [.3769.0020.0002] # CHAKMA LETTER KHAA
+11109 ; [.376A.0020.0002] # CHAKMA LETTER GAA
+1110A ; [.376B.0020.0002] # CHAKMA LETTER GHAA
+1110B ; [.376C.0020.0002] # CHAKMA LETTER NGAA
+1110C ; [.376D.0020.0002] # CHAKMA LETTER CAA
+1110D ; [.376E.0020.0002] # CHAKMA LETTER CHAA
+1110E ; [.376F.0020.0002] # CHAKMA LETTER JAA
+1110F ; [.3770.0020.0002] # CHAKMA LETTER JHAA
+11110 ; [.3771.0020.0002] # CHAKMA LETTER NYAA
+11111 ; [.3772.0020.0002] # CHAKMA LETTER TTAA
+11112 ; [.3773.0020.0002] # CHAKMA LETTER TTHAA
+11113 ; [.3774.0020.0002] # CHAKMA LETTER DDAA
+11114 ; [.3775.0020.0002] # CHAKMA LETTER DDHAA
+11115 ; [.3776.0020.0002] # CHAKMA LETTER NNAA
+11116 ; [.3777.0020.0002] # CHAKMA LETTER TAA
+11117 ; [.3778.0020.0002] # CHAKMA LETTER THAA
+11118 ; [.3779.0020.0002] # CHAKMA LETTER DAA
+11119 ; [.377A.0020.0002] # CHAKMA LETTER DHAA
+1111A ; [.377B.0020.0002] # CHAKMA LETTER NAA
+1111B ; [.377C.0020.0002] # CHAKMA LETTER PAA
+1111C ; [.377D.0020.0002] # CHAKMA LETTER PHAA
+1111D ; [.377E.0020.0002] # CHAKMA LETTER BAA
+1111E ; [.377F.0020.0002] # CHAKMA LETTER BHAA
+1111F ; [.3780.0020.0002] # CHAKMA LETTER MAA
+11120 ; [.3781.0020.0002] # CHAKMA LETTER YYAA
+11121 ; [.3782.0020.0002] # CHAKMA LETTER YAA
+11122 ; [.3783.0020.0002] # CHAKMA LETTER RAA
+11123 ; [.3784.0020.0002] # CHAKMA LETTER LAA
+11147 ; [.3785.0020.0002] # CHAKMA LETTER VAA
+11124 ; [.3786.0020.0002] # CHAKMA LETTER WAA
+11125 ; [.3787.0020.0002] # CHAKMA LETTER SAA
+11126 ; [.3788.0020.0002] # CHAKMA LETTER HAA
+11144 ; [.3789.0020.0002] # CHAKMA LETTER LHAA
+11127 ; [.378A.0020.0002] # CHAKMA VOWEL SIGN A
+11128 ; [.378B.0020.0002] # CHAKMA VOWEL SIGN I
+11129 ; [.378C.0020.0002] # CHAKMA VOWEL SIGN II
+1112A ; [.378D.0020.0002] # CHAKMA VOWEL SIGN U
+1112B ; [.378E.0020.0002] # CHAKMA VOWEL SIGN UU
+1112C ; [.378F.0020.0002] # CHAKMA VOWEL SIGN E
+1112D ; [.3790.0020.0002] # CHAKMA VOWEL SIGN AI
+1112E ; [.3791.0020.0002] # CHAKMA VOWEL SIGN O
+11131 11127 ; [.3791.0020.0002] # CHAKMA VOWEL SIGN O
+1112F ; [.3792.0020.0002] # CHAKMA VOWEL SIGN AU
+11132 11127 ; [.3792.0020.0002] # CHAKMA VOWEL SIGN AU
+11130 ; [.3793.0020.0002] # CHAKMA VOWEL SIGN OI
+11131 ; [.3794.0020.0002] # CHAKMA O MARK
+11132 ; [.3795.0020.0002] # CHAKMA AU MARK
+11145 ; [.3796.0020.0002] # CHAKMA VOWEL SIGN AA
+11146 ; [.3797.0020.0002] # CHAKMA VOWEL SIGN EI
+11133 ; [.3798.0020.0002] # CHAKMA VIRAMA
+11134 ; [.3799.0020.0002] # CHAKMA MAAYYAA
+1780 ; [.379A.0020.0002] # KHMER LETTER KA
+1781 ; [.379B.0020.0002] # KHMER LETTER KHA
+1782 ; [.379C.0020.0002] # KHMER LETTER KO
+1783 ; [.379D.0020.0002] # KHMER LETTER KHO
+1784 ; [.379E.0020.0002] # KHMER LETTER NGO
+1785 ; [.379F.0020.0002] # KHMER LETTER CA
+1786 ; [.37A0.0020.0002] # KHMER LETTER CHA
+1787 ; [.37A1.0020.0002] # KHMER LETTER CO
+1788 ; [.37A2.0020.0002] # KHMER LETTER CHO
+1789 ; [.37A3.0020.0002] # KHMER LETTER NYO
+178A ; [.37A4.0020.0002] # KHMER LETTER DA
+178B ; [.37A5.0020.0002] # KHMER LETTER TTHA
+178C ; [.37A6.0020.0002] # KHMER LETTER DO
+178D ; [.37A7.0020.0002] # KHMER LETTER TTHO
+178E ; [.37A8.0020.0002] # KHMER LETTER NNO
+178F ; [.37A9.0020.0002] # KHMER LETTER TA
+1790 ; [.37AA.0020.0002] # KHMER LETTER THA
+1791 ; [.37AB.0020.0002] # KHMER LETTER TO
+1792 ; [.37AC.0020.0002] # KHMER LETTER THO
+1793 ; [.37AD.0020.0002] # KHMER LETTER NO
+1794 ; [.37AE.0020.0002] # KHMER LETTER BA
+1795 ; [.37AF.0020.0002] # KHMER LETTER PHA
+1796 ; [.37B0.0020.0002] # KHMER LETTER PO
+1797 ; [.37B1.0020.0002] # KHMER LETTER PHO
+1798 ; [.37B2.0020.0002] # KHMER LETTER MO
+1799 ; [.37B3.0020.0002] # KHMER LETTER YO
+179A ; [.37B4.0020.0002] # KHMER LETTER RO
+179B ; [.37B5.0020.0002] # KHMER LETTER LO
+179C ; [.37B6.0020.0002] # KHMER LETTER VO
+179D ; [.37B7.0020.0002] # KHMER LETTER SHA
+179E ; [.37B8.0020.0002] # KHMER LETTER SSO
+179F ; [.37B9.0020.0002] # KHMER LETTER SA
+17A0 ; [.37BA.0020.0002] # KHMER LETTER HA
+17A1 ; [.37BB.0020.0002] # KHMER LETTER LA
+17A2 ; [.37BC.0020.0002] # KHMER LETTER QA
+17DC ; [.37BD.0020.0002] # KHMER SIGN AVAKRAHASANYA
+17A3 ; [.37BE.0020.0002] # KHMER INDEPENDENT VOWEL QAQ
+17A4 ; [.37BF.0020.0002] # KHMER INDEPENDENT VOWEL QAA
+17A5 ; [.37C0.0020.0002] # KHMER INDEPENDENT VOWEL QI
+17A6 ; [.37C1.0020.0002] # KHMER INDEPENDENT VOWEL QII
+17A7 ; [.37C2.0020.0002] # KHMER INDEPENDENT VOWEL QU
+17A8 ; [.37C3.0020.0002] # KHMER INDEPENDENT VOWEL QUK
+17A9 ; [.37C4.0020.0002] # KHMER INDEPENDENT VOWEL QUU
+17AA ; [.37C5.0020.0002] # KHMER INDEPENDENT VOWEL QUUV
+17AB ; [.37C6.0020.0002] # KHMER INDEPENDENT VOWEL RY
+17AC ; [.37C7.0020.0002] # KHMER INDEPENDENT VOWEL RYY
+17AD ; [.37C8.0020.0002] # KHMER INDEPENDENT VOWEL LY
+17AE ; [.37C9.0020.0002] # KHMER INDEPENDENT VOWEL LYY
+17AF ; [.37CA.0020.0002] # KHMER INDEPENDENT VOWEL QE
+17B0 ; [.37CB.0020.0002] # KHMER INDEPENDENT VOWEL QAI
+17B1 ; [.37CC.0020.0002] # KHMER INDEPENDENT VOWEL QOO TYPE ONE
+17B2 ; [.37CD.0020.0002] # KHMER INDEPENDENT VOWEL QOO TYPE TWO
+17B3 ; [.37CE.0020.0002] # KHMER INDEPENDENT VOWEL QAU
+17B6 ; [.37CF.0020.0002] # KHMER VOWEL SIGN AA
+17B7 ; [.37D0.0020.0002] # KHMER VOWEL SIGN I
+17B8 ; [.37D1.0020.0002] # KHMER VOWEL SIGN II
+17B9 ; [.37D2.0020.0002] # KHMER VOWEL SIGN Y
+17BA ; [.37D3.0020.0002] # KHMER VOWEL SIGN YY
+17BB ; [.37D4.0020.0002] # KHMER VOWEL SIGN U
+17BC ; [.37D5.0020.0002] # KHMER VOWEL SIGN UU
+17BD ; [.37D6.0020.0002] # KHMER VOWEL SIGN UA
+17BE ; [.37D7.0020.0002] # KHMER VOWEL SIGN OE
+17BF ; [.37D8.0020.0002] # KHMER VOWEL SIGN YA
+17C0 ; [.37D9.0020.0002] # KHMER VOWEL SIGN IE
+17C1 ; [.37DA.0020.0002] # KHMER VOWEL SIGN E
+17C2 ; [.37DB.0020.0002] # KHMER VOWEL SIGN AE
+17C3 ; [.37DC.0020.0002] # KHMER VOWEL SIGN AI
+17C4 ; [.37DD.0020.0002] # KHMER VOWEL SIGN OO
+17C5 ; [.37DE.0020.0002] # KHMER VOWEL SIGN AU
+17D2 ; [.37DF.0020.0002] # KHMER SIGN COENG
+1950 ; [.37E0.0020.0002] # TAI LE LETTER KA
+1951 ; [.37E1.0020.0002] # TAI LE LETTER XA
+1952 ; [.37E2.0020.0002] # TAI LE LETTER NGA
+1953 ; [.37E3.0020.0002] # TAI LE LETTER TSA
+1954 ; [.37E4.0020.0002] # TAI LE LETTER SA
+1955 ; [.37E5.0020.0002] # TAI LE LETTER YA
+1956 ; [.37E6.0020.0002] # TAI LE LETTER TA
+1957 ; [.37E7.0020.0002] # TAI LE LETTER THA
+1958 ; [.37E8.0020.0002] # TAI LE LETTER LA
+1959 ; [.37E9.0020.0002] # TAI LE LETTER PA
+195A ; [.37EA.0020.0002] # TAI LE LETTER PHA
+195B ; [.37EB.0020.0002] # TAI LE LETTER MA
+195C ; [.37EC.0020.0002] # TAI LE LETTER FA
+195D ; [.37ED.0020.0002] # TAI LE LETTER VA
+195E ; [.37EE.0020.0002] # TAI LE LETTER HA
+195F ; [.37EF.0020.0002] # TAI LE LETTER QA
+1960 ; [.37F0.0020.0002] # TAI LE LETTER KHA
+1961 ; [.37F1.0020.0002] # TAI LE LETTER TSHA
+1962 ; [.37F2.0020.0002] # TAI LE LETTER NA
+1963 ; [.37F3.0020.0002] # TAI LE LETTER A
+1964 ; [.37F4.0020.0002] # TAI LE LETTER I
+1965 ; [.37F5.0020.0002] # TAI LE LETTER EE
+1966 ; [.37F6.0020.0002] # TAI LE LETTER EH
+1967 ; [.37F7.0020.0002] # TAI LE LETTER U
+1968 ; [.37F8.0020.0002] # TAI LE LETTER OO
+1969 ; [.37F9.0020.0002] # TAI LE LETTER O
+196A ; [.37FA.0020.0002] # TAI LE LETTER UE
+196B ; [.37FB.0020.0002] # TAI LE LETTER E
+196C ; [.37FC.0020.0002] # TAI LE LETTER AUE
+196D ; [.37FD.0020.0002] # TAI LE LETTER AI
+1970 ; [.37FE.0020.0002] # TAI LE LETTER TONE-2
+1971 ; [.37FF.0020.0002] # TAI LE LETTER TONE-3
+1972 ; [.3800.0020.0002] # TAI LE LETTER TONE-4
+1973 ; [.3801.0020.0002] # TAI LE LETTER TONE-5
+1974 ; [.3802.0020.0002] # TAI LE LETTER TONE-6
+1980 ; [.3803.0020.0002] # NEW TAI LUE LETTER HIGH QA
+19B5 1980 ; [.3803.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH QA>
+19B6 1980 ; [.3803.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH QA>
+19B7 1980 ; [.3803.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH QA>
+19BA 1980 ; [.3803.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH QA>
+1981 ; [.3804.0020.0002] # NEW TAI LUE LETTER LOW QA
+19B5 1981 ; [.3804.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW QA>
+19B6 1981 ; [.3804.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW QA>
+19B7 1981 ; [.3804.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW QA>
+19BA 1981 ; [.3804.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW QA>
+1982 ; [.3805.0020.0002] # NEW TAI LUE LETTER HIGH KA
+19B5 1982 ; [.3805.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH KA>
+19B6 1982 ; [.3805.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH KA>
+19B7 1982 ; [.3805.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH KA>
+19BA 1982 ; [.3805.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH KA>
+1983 ; [.3806.0020.0002] # NEW TAI LUE LETTER HIGH XA
+19B5 1983 ; [.3806.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH XA>
+19B6 1983 ; [.3806.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH XA>
+19B7 1983 ; [.3806.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH XA>
+19BA 1983 ; [.3806.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH XA>
+1984 ; [.3807.0020.0002] # NEW TAI LUE LETTER HIGH NGA
+19B5 1984 ; [.3807.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH NGA>
+19B6 1984 ; [.3807.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH NGA>
+19B7 1984 ; [.3807.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH NGA>
+19BA 1984 ; [.3807.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH NGA>
+1985 ; [.3808.0020.0002] # NEW TAI LUE LETTER LOW KA
+19B5 1985 ; [.3808.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW KA>
+19B6 1985 ; [.3808.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW KA>
+19B7 1985 ; [.3808.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW KA>
+19BA 1985 ; [.3808.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW KA>
+1986 ; [.3809.0020.0002] # NEW TAI LUE LETTER LOW XA
+19B5 1986 ; [.3809.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW XA>
+19B6 1986 ; [.3809.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW XA>
+19B7 1986 ; [.3809.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW XA>
+19BA 1986 ; [.3809.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW XA>
+1987 ; [.380A.0020.0002] # NEW TAI LUE LETTER LOW NGA
+19B5 1987 ; [.380A.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW NGA>
+19B6 1987 ; [.380A.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW NGA>
+19B7 1987 ; [.380A.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW NGA>
+19BA 1987 ; [.380A.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW NGA>
+1988 ; [.380B.0020.0002] # NEW TAI LUE LETTER HIGH TSA
+19B5 1988 ; [.380B.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH TSA>
+19B6 1988 ; [.380B.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH TSA>
+19B7 1988 ; [.380B.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH TSA>
+19BA 1988 ; [.380B.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH TSA>
+1989 ; [.380C.0020.0002] # NEW TAI LUE LETTER HIGH SA
+19B5 1989 ; [.380C.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH SA>
+19B6 1989 ; [.380C.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH SA>
+19B7 1989 ; [.380C.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH SA>
+19BA 1989 ; [.380C.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH SA>
+198A ; [.380D.0020.0002] # NEW TAI LUE LETTER HIGH YA
+19B5 198A ; [.380D.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH YA>
+19B6 198A ; [.380D.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH YA>
+19B7 198A ; [.380D.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH YA>
+19BA 198A ; [.380D.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH YA>
+198B ; [.380E.0020.0002] # NEW TAI LUE LETTER LOW TSA
+19B5 198B ; [.380E.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW TSA>
+19B6 198B ; [.380E.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW TSA>
+19B7 198B ; [.380E.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW TSA>
+19BA 198B ; [.380E.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW TSA>
+198C ; [.380F.0020.0002] # NEW TAI LUE LETTER LOW SA
+19B5 198C ; [.380F.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW SA>
+19B6 198C ; [.380F.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW SA>
+19B7 198C ; [.380F.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW SA>
+19BA 198C ; [.380F.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW SA>
+198D ; [.3810.0020.0002] # NEW TAI LUE LETTER LOW YA
+19B5 198D ; [.3810.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW YA>
+19B6 198D ; [.3810.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW YA>
+19B7 198D ; [.3810.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW YA>
+19BA 198D ; [.3810.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW YA>
+198E ; [.3811.0020.0002] # NEW TAI LUE LETTER HIGH TA
+19B5 198E ; [.3811.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH TA>
+19B6 198E ; [.3811.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH TA>
+19B7 198E ; [.3811.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH TA>
+19BA 198E ; [.3811.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH TA>
+198F ; [.3812.0020.0002] # NEW TAI LUE LETTER HIGH THA
+19B5 198F ; [.3812.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH THA>
+19B6 198F ; [.3812.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH THA>
+19B7 198F ; [.3812.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH THA>
+19BA 198F ; [.3812.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH THA>
+1990 ; [.3813.0020.0002] # NEW TAI LUE LETTER HIGH NA
+19B5 1990 ; [.3813.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH NA>
+19B6 1990 ; [.3813.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH NA>
+19B7 1990 ; [.3813.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH NA>
+19BA 1990 ; [.3813.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH NA>
+1991 ; [.3814.0020.0002] # NEW TAI LUE LETTER LOW TA
+19B5 1991 ; [.3814.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW TA>
+19B6 1991 ; [.3814.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW TA>
+19B7 1991 ; [.3814.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW TA>
+19BA 1991 ; [.3814.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW TA>
+1992 ; [.3815.0020.0002] # NEW TAI LUE LETTER LOW THA
+19B5 1992 ; [.3815.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW THA>
+19B6 1992 ; [.3815.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW THA>
+19B7 1992 ; [.3815.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW THA>
+19BA 1992 ; [.3815.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW THA>
+1993 ; [.3816.0020.0002] # NEW TAI LUE LETTER LOW NA
+19B5 1993 ; [.3816.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW NA>
+19B6 1993 ; [.3816.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW NA>
+19B7 1993 ; [.3816.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW NA>
+19BA 1993 ; [.3816.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW NA>
+1994 ; [.3817.0020.0002] # NEW TAI LUE LETTER HIGH PA
+19B5 1994 ; [.3817.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH PA>
+19B6 1994 ; [.3817.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH PA>
+19B7 1994 ; [.3817.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH PA>
+19BA 1994 ; [.3817.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH PA>
+1995 ; [.3818.0020.0002] # NEW TAI LUE LETTER HIGH PHA
+19B5 1995 ; [.3818.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH PHA>
+19B6 1995 ; [.3818.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH PHA>
+19B7 1995 ; [.3818.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH PHA>
+19BA 1995 ; [.3818.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH PHA>
+1996 ; [.3819.0020.0002] # NEW TAI LUE LETTER HIGH MA
+19B5 1996 ; [.3819.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH MA>
+19B6 1996 ; [.3819.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH MA>
+19B7 1996 ; [.3819.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH MA>
+19BA 1996 ; [.3819.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH MA>
+1997 ; [.381A.0020.0002] # NEW TAI LUE LETTER LOW PA
+19B5 1997 ; [.381A.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW PA>
+19B6 1997 ; [.381A.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW PA>
+19B7 1997 ; [.381A.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW PA>
+19BA 1997 ; [.381A.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW PA>
+1998 ; [.381B.0020.0002] # NEW TAI LUE LETTER LOW PHA
+19B5 1998 ; [.381B.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW PHA>
+19B6 1998 ; [.381B.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW PHA>
+19B7 1998 ; [.381B.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW PHA>
+19BA 1998 ; [.381B.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW PHA>
+1999 ; [.381C.0020.0002] # NEW TAI LUE LETTER LOW MA
+19B5 1999 ; [.381C.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW MA>
+19B6 1999 ; [.381C.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW MA>
+19B7 1999 ; [.381C.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW MA>
+19BA 1999 ; [.381C.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW MA>
+199A ; [.381D.0020.0002] # NEW TAI LUE LETTER HIGH FA
+19B5 199A ; [.381D.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH FA>
+19B6 199A ; [.381D.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH FA>
+19B7 199A ; [.381D.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH FA>
+19BA 199A ; [.381D.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH FA>
+199B ; [.381E.0020.0002] # NEW TAI LUE LETTER HIGH VA
+19B5 199B ; [.381E.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH VA>
+19B6 199B ; [.381E.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH VA>
+19B7 199B ; [.381E.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH VA>
+19BA 199B ; [.381E.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH VA>
+199C ; [.381F.0020.0002] # NEW TAI LUE LETTER HIGH LA
+19B5 199C ; [.381F.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH LA>
+19B6 199C ; [.381F.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH LA>
+19DE ; [.381F.0020.0004][.3835.0020.0004] # NEW TAI LUE SIGN LAE
+19DF ; [.381F.0020.0004][.3835.0020.0004][.3840.0020.0004] # NEW TAI LUE SIGN LAEV
+19B7 199C ; [.381F.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH LA>
+19BA 199C ; [.381F.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH LA>
+199D ; [.3820.0020.0002] # NEW TAI LUE LETTER LOW FA
+19B5 199D ; [.3820.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW FA>
+19B6 199D ; [.3820.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW FA>
+19B7 199D ; [.3820.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW FA>
+19BA 199D ; [.3820.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW FA>
+199E ; [.3821.0020.0002] # NEW TAI LUE LETTER LOW VA
+19B5 199E ; [.3821.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW VA>
+19B6 199E ; [.3821.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW VA>
+19B7 199E ; [.3821.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW VA>
+19BA 199E ; [.3821.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW VA>
+199F ; [.3822.0020.0002] # NEW TAI LUE LETTER LOW LA
+19B5 199F ; [.3822.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW LA>
+19B6 199F ; [.3822.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW LA>
+19B7 199F ; [.3822.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW LA>
+19BA 199F ; [.3822.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW LA>
+19A0 ; [.3823.0020.0002] # NEW TAI LUE LETTER HIGH HA
+19B5 19A0 ; [.3823.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH HA>
+19B6 19A0 ; [.3823.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH HA>
+19B7 19A0 ; [.3823.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH HA>
+19BA 19A0 ; [.3823.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH HA>
+19A1 ; [.3824.0020.0002] # NEW TAI LUE LETTER HIGH DA
+19B5 19A1 ; [.3824.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH DA>
+19B6 19A1 ; [.3824.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH DA>
+19B7 19A1 ; [.3824.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH DA>
+19BA 19A1 ; [.3824.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH DA>
+19A2 ; [.3825.0020.0002] # NEW TAI LUE LETTER HIGH BA
+19B5 19A2 ; [.3825.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH BA>
+19B6 19A2 ; [.3825.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH BA>
+19B7 19A2 ; [.3825.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH BA>
+19BA 19A2 ; [.3825.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH BA>
+19A3 ; [.3826.0020.0002] # NEW TAI LUE LETTER LOW HA
+19B5 19A3 ; [.3826.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW HA>
+19B6 19A3 ; [.3826.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW HA>
+19B7 19A3 ; [.3826.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW HA>
+19BA 19A3 ; [.3826.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW HA>
+19A4 ; [.3827.0020.0002] # NEW TAI LUE LETTER LOW DA
+19B5 19A4 ; [.3827.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW DA>
+19B6 19A4 ; [.3827.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW DA>
+19B7 19A4 ; [.3827.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW DA>
+19BA 19A4 ; [.3827.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW DA>
+19A5 ; [.3828.0020.0002] # NEW TAI LUE LETTER LOW BA
+19B5 19A5 ; [.3828.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW BA>
+19B6 19A5 ; [.3828.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW BA>
+19B7 19A5 ; [.3828.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW BA>
+19BA 19A5 ; [.3828.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW BA>
+19A6 ; [.3829.0020.0002] # NEW TAI LUE LETTER HIGH KVA
+19B5 19A6 ; [.3829.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH KVA>
+19B6 19A6 ; [.3829.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH KVA>
+19B7 19A6 ; [.3829.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH KVA>
+19BA 19A6 ; [.3829.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH KVA>
+19A7 ; [.382A.0020.0002] # NEW TAI LUE LETTER HIGH XVA
+19B5 19A7 ; [.382A.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH XVA>
+19B6 19A7 ; [.382A.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH XVA>
+19B7 19A7 ; [.382A.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH XVA>
+19BA 19A7 ; [.382A.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH XVA>
+19A8 ; [.382B.0020.0002] # NEW TAI LUE LETTER LOW KVA
+19B5 19A8 ; [.382B.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW KVA>
+19B6 19A8 ; [.382B.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW KVA>
+19B7 19A8 ; [.382B.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW KVA>
+19BA 19A8 ; [.382B.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW KVA>
+19A9 ; [.382C.0020.0002] # NEW TAI LUE LETTER LOW XVA
+19B5 19A9 ; [.382C.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW XVA>
+19B6 19A9 ; [.382C.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW XVA>
+19B7 19A9 ; [.382C.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW XVA>
+19BA 19A9 ; [.382C.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW XVA>
+19AA ; [.382D.0020.0002] # NEW TAI LUE LETTER HIGH SUA
+19B5 19AA ; [.382D.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER HIGH SUA>
+19B6 19AA ; [.382D.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER HIGH SUA>
+19B7 19AA ; [.382D.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER HIGH SUA>
+19BA 19AA ; [.382D.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER HIGH SUA>
+19AB ; [.382E.0020.0002] # NEW TAI LUE LETTER LOW SUA
+19B5 19AB ; [.382E.0020.0002][.3834.0020.0002] # <NEW TAI LUE VOWEL SIGN E, NEW TAI LUE LETTER LOW SUA>
+19B6 19AB ; [.382E.0020.0002][.3835.0020.0002] # <NEW TAI LUE VOWEL SIGN AE, NEW TAI LUE LETTER LOW SUA>
+19B7 19AB ; [.382E.0020.0002][.3836.0020.0002] # <NEW TAI LUE VOWEL SIGN O, NEW TAI LUE LETTER LOW SUA>
+19BA 19AB ; [.382E.0020.0002][.3839.0020.0002] # <NEW TAI LUE VOWEL SIGN AY, NEW TAI LUE LETTER LOW SUA>
+19B0 ; [.382F.0020.0002] # NEW TAI LUE VOWEL SIGN VOWEL SHORTENER
+19B1 ; [.3830.0020.0002] # NEW TAI LUE VOWEL SIGN AA
+19B2 ; [.3831.0020.0002] # NEW TAI LUE VOWEL SIGN II
+19B3 ; [.3832.0020.0002] # NEW TAI LUE VOWEL SIGN U
+19B4 ; [.3833.0020.0002] # NEW TAI LUE VOWEL SIGN UU
+19B5 ; [.3834.0020.0002] # NEW TAI LUE VOWEL SIGN E
+19B6 ; [.3835.0020.0002] # NEW TAI LUE VOWEL SIGN AE
+19B7 ; [.3836.0020.0002] # NEW TAI LUE VOWEL SIGN O
+19B8 ; [.3837.0020.0002] # NEW TAI LUE VOWEL SIGN OA
+19B9 ; [.3838.0020.0002] # NEW TAI LUE VOWEL SIGN UE
+19BA ; [.3839.0020.0002] # NEW TAI LUE VOWEL SIGN AY
+19BB ; [.383A.0020.0002] # NEW TAI LUE VOWEL SIGN AAY
+19BC ; [.383B.0020.0002] # NEW TAI LUE VOWEL SIGN UY
+19BD ; [.383C.0020.0002] # NEW TAI LUE VOWEL SIGN OY
+19BE ; [.383D.0020.0002] # NEW TAI LUE VOWEL SIGN OAY
+19BF ; [.383E.0020.0002] # NEW TAI LUE VOWEL SIGN UEY
+19C0 ; [.383F.0020.0002] # NEW TAI LUE VOWEL SIGN IY
+19C1 ; [.3840.0020.0002] # NEW TAI LUE LETTER FINAL V
+19C2 ; [.3841.0020.0002] # NEW TAI LUE LETTER FINAL NG
+19C3 ; [.3842.0020.0002] # NEW TAI LUE LETTER FINAL N
+19C4 ; [.3843.0020.0002] # NEW TAI LUE LETTER FINAL M
+19C5 ; [.3844.0020.0002] # NEW TAI LUE LETTER FINAL K
+19C6 ; [.3845.0020.0002] # NEW TAI LUE LETTER FINAL D
+19C7 ; [.3846.0020.0002] # NEW TAI LUE LETTER FINAL B
+19C8 ; [.3847.0020.0002] # NEW TAI LUE TONE MARK-1
+19C9 ; [.3848.0020.0002] # NEW TAI LUE TONE MARK-2
+1A20 ; [.3849.0020.0002] # TAI THAM LETTER HIGH KA
+1A21 ; [.384A.0020.0002] # TAI THAM LETTER HIGH KHA
+1A22 ; [.384B.0020.0002] # TAI THAM LETTER HIGH KXA
+1A23 ; [.384C.0020.0002] # TAI THAM LETTER LOW KA
+1A24 ; [.384D.0020.0002] # TAI THAM LETTER LOW KXA
+1A25 ; [.384E.0020.0002] # TAI THAM LETTER LOW KHA
+1A26 ; [.384F.0020.0002] # TAI THAM LETTER NGA
+1A58 ; [.384F.0020.0004] # TAI THAM SIGN MAI KANG LAI
+1A59 ; [.384F.0020.0004] # TAI THAM CONSONANT SIGN FINAL NGA
+1A27 ; [.3850.0020.0002] # TAI THAM LETTER HIGH CA
+1A28 ; [.3851.0020.0002] # TAI THAM LETTER HIGH CHA
+1A29 ; [.3852.0020.0002] # TAI THAM LETTER LOW CA
+1A2A ; [.3853.0020.0002] # TAI THAM LETTER LOW SA
+1A2B ; [.3854.0020.0002] # TAI THAM LETTER LOW CHA
+1A2C ; [.3855.0020.0002] # TAI THAM LETTER NYA
+1A2D ; [.3856.0020.0002] # TAI THAM LETTER RATA
+1A2E ; [.3857.0020.0002] # TAI THAM LETTER HIGH RATHA
+1A2F ; [.3858.0020.0002] # TAI THAM LETTER DA
+1A30 ; [.3859.0020.0002] # TAI THAM LETTER LOW RATHA
+1A31 ; [.385A.0020.0002] # TAI THAM LETTER RANA
+1A32 ; [.385B.0020.0002] # TAI THAM LETTER HIGH TA
+1A33 ; [.385C.0020.0002] # TAI THAM LETTER HIGH THA
+1A34 ; [.385D.0020.0002] # TAI THAM LETTER LOW TA
+1A35 ; [.385E.0020.0002] # TAI THAM LETTER LOW THA
+1A36 ; [.385F.0020.0002] # TAI THAM LETTER NA
+1A37 ; [.3860.0020.0002] # TAI THAM LETTER BA
+1A38 ; [.3861.0020.0002] # TAI THAM LETTER HIGH PA
+1A39 ; [.3862.0020.0002] # TAI THAM LETTER HIGH PHA
+1A3A ; [.3863.0020.0002] # TAI THAM LETTER HIGH FA
+1A3B ; [.3864.0020.0002] # TAI THAM LETTER LOW PA
+1A5A ; [.3864.0020.0004] # TAI THAM CONSONANT SIGN LOW PA
+1A5B ; [.3864.0020.0004] # TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA
+1A3C ; [.3865.0020.0002] # TAI THAM LETTER LOW FA
+1A3D ; [.3866.0020.0002] # TAI THAM LETTER LOW PHA
+1A3E ; [.3867.0020.0002] # TAI THAM LETTER MA
+1A3F ; [.3868.0020.0002] # TAI THAM LETTER LOW YA
+1A40 ; [.3869.0020.0002] # TAI THAM LETTER HIGH YA
+1A41 ; [.386A.0020.0002] # TAI THAM LETTER RA
+1A42 ; [.386B.0020.0002] # TAI THAM LETTER RUE
+1A43 ; [.386C.0020.0002] # TAI THAM LETTER LA
+1A44 ; [.386D.0020.0002] # TAI THAM LETTER LUE
+1A45 ; [.386E.0020.0002] # TAI THAM LETTER WA
+1A46 ; [.386F.0020.0002] # TAI THAM LETTER HIGH SHA
+1A54 ; [.386F.0020.0004][.3895.0020.0004][.386F.0020.0004] # TAI THAM LETTER GREAT SA
+1A47 ; [.3870.0020.0002] # TAI THAM LETTER HIGH SSA
+1A48 ; [.3871.0020.0002] # TAI THAM LETTER HIGH SA
+1A49 ; [.3872.0020.0002] # TAI THAM LETTER HIGH HA
+1A4A ; [.3873.0020.0002] # TAI THAM LETTER LLA
+1A4B ; [.3874.0020.0002] # TAI THAM LETTER A
+1A4C ; [.3875.0020.0002] # TAI THAM LETTER LOW HA
+1A53 ; [.3876.0020.0002] # TAI THAM LETTER LAE
+1A6B ; [.3877.0020.0002] # TAI THAM VOWEL SIGN O
+1A55 ; [.3878.0020.0002] # TAI THAM CONSONANT SIGN MEDIAL RA
+1A56 ; [.3879.0020.0002] # TAI THAM CONSONANT SIGN MEDIAL LA
+1A57 ; [.387A.0020.0002] # TAI THAM CONSONANT SIGN LA TANG LAI
+1A5C ; [.387B.0020.0002] # TAI THAM CONSONANT SIGN MA
+1A5D ; [.387C.0020.0002] # TAI THAM CONSONANT SIGN BA
+1A5E ; [.387D.0020.0002] # TAI THAM CONSONANT SIGN SA
+1A4D ; [.387E.0020.0002] # TAI THAM LETTER I
+1A4E ; [.387F.0020.0002] # TAI THAM LETTER II
+1A4F ; [.3880.0020.0002] # TAI THAM LETTER U
+1A50 ; [.3881.0020.0002] # TAI THAM LETTER UU
+1A51 ; [.3882.0020.0002] # TAI THAM LETTER EE
+1A52 ; [.3883.0020.0002] # TAI THAM LETTER OO
+1A61 ; [.3884.0020.0002] # TAI THAM VOWEL SIGN A
+1A6C ; [.3885.0020.0002] # TAI THAM VOWEL SIGN OA BELOW
+1A62 ; [.3886.0020.0002] # TAI THAM VOWEL SIGN MAI SAT
+1A63 ; [.3887.0020.0002] # TAI THAM VOWEL SIGN AA
+1A64 ; [.3887.0020.0004] # TAI THAM VOWEL SIGN TALL AA
+1A65 ; [.3888.0020.0002] # TAI THAM VOWEL SIGN I
+1A66 ; [.3889.0020.0002] # TAI THAM VOWEL SIGN II
+1A67 ; [.388A.0020.0002] # TAI THAM VOWEL SIGN UE
+1A68 ; [.388B.0020.0002] # TAI THAM VOWEL SIGN UUE
+1A69 ; [.388C.0020.0002] # TAI THAM VOWEL SIGN U
+1A6A ; [.388D.0020.0002] # TAI THAM VOWEL SIGN UU
+1A6E ; [.388E.0020.0002] # TAI THAM VOWEL SIGN E
+1A6F ; [.388F.0020.0002] # TAI THAM VOWEL SIGN AE
+1A73 ; [.3890.0020.0002] # TAI THAM VOWEL SIGN OA ABOVE
+1A70 ; [.3891.0020.0002] # TAI THAM VOWEL SIGN OO
+1A71 ; [.3892.0020.0002] # TAI THAM VOWEL SIGN AI
+1A72 ; [.3893.0020.0002] # TAI THAM VOWEL SIGN THAM AI
+1A6D ; [.3894.0020.0002] # TAI THAM VOWEL SIGN OY
+1A60 ; [.3895.0020.0002] # TAI THAM SIGN SAKOT
+AA00 ; [.3896.0020.0002] # CHAM LETTER A
+AA01 ; [.3897.0020.0002] # CHAM LETTER I
+AA02 ; [.3898.0020.0002] # CHAM LETTER U
+AA03 ; [.3899.0020.0002] # CHAM LETTER E
+AA04 ; [.389A.0020.0002] # CHAM LETTER AI
+AA05 ; [.389B.0020.0002] # CHAM LETTER O
+AA06 ; [.389C.0020.0002] # CHAM LETTER KA
+AA07 ; [.389D.0020.0002] # CHAM LETTER KHA
+AA08 ; [.389E.0020.0002] # CHAM LETTER GA
+AA09 ; [.389F.0020.0002] # CHAM LETTER GHA
+AA0A ; [.38A0.0020.0002] # CHAM LETTER NGUE
+AA0B ; [.38A1.0020.0002] # CHAM LETTER NGA
+AA0C ; [.38A2.0020.0002] # CHAM LETTER CHA
+AA0D ; [.38A3.0020.0002] # CHAM LETTER CHHA
+AA0E ; [.38A4.0020.0002] # CHAM LETTER JA
+AA0F ; [.38A5.0020.0002] # CHAM LETTER JHA
+AA10 ; [.38A6.0020.0002] # CHAM LETTER NHUE
+AA11 ; [.38A7.0020.0002] # CHAM LETTER NHA
+AA12 ; [.38A8.0020.0002] # CHAM LETTER NHJA
+AA13 ; [.38A9.0020.0002] # CHAM LETTER TA
+AA14 ; [.38AA.0020.0002] # CHAM LETTER THA
+AA15 ; [.38AB.0020.0002] # CHAM LETTER DA
+AA16 ; [.38AC.0020.0002] # CHAM LETTER DHA
+AA17 ; [.38AD.0020.0002] # CHAM LETTER NUE
+AA18 ; [.38AE.0020.0002] # CHAM LETTER NA
+AA19 ; [.38AF.0020.0002] # CHAM LETTER DDA
+AA1A ; [.38B0.0020.0002] # CHAM LETTER PA
+AA1B ; [.38B1.0020.0002] # CHAM LETTER PPA
+AA1C ; [.38B2.0020.0002] # CHAM LETTER PHA
+AA1D ; [.38B3.0020.0002] # CHAM LETTER BA
+AA1E ; [.38B4.0020.0002] # CHAM LETTER BHA
+AA1F ; [.38B5.0020.0002] # CHAM LETTER MUE
+AA20 ; [.38B6.0020.0002] # CHAM LETTER MA
+AA21 ; [.38B7.0020.0002] # CHAM LETTER BBA
+AA22 ; [.38B8.0020.0002] # CHAM LETTER YA
+AA23 ; [.38B9.0020.0002] # CHAM LETTER RA
+AA24 ; [.38BA.0020.0002] # CHAM LETTER LA
+AA25 ; [.38BB.0020.0002] # CHAM LETTER VA
+AA26 ; [.38BC.0020.0002] # CHAM LETTER SSA
+AA27 ; [.38BD.0020.0002] # CHAM LETTER SA
+AA28 ; [.38BE.0020.0002] # CHAM LETTER HA
+AA33 ; [.38BF.0020.0002] # CHAM CONSONANT SIGN YA
+AA34 ; [.38C0.0020.0002] # CHAM CONSONANT SIGN RA
+AA35 ; [.38C1.0020.0002] # CHAM CONSONANT SIGN LA
+AA36 ; [.38C2.0020.0002] # CHAM CONSONANT SIGN WA
+AA29 ; [.38C3.0020.0002] # CHAM VOWEL SIGN AA
+AA2A ; [.38C4.0020.0002] # CHAM VOWEL SIGN I
+AA2B ; [.38C5.0020.0002] # CHAM VOWEL SIGN II
+AA2C ; [.38C6.0020.0002] # CHAM VOWEL SIGN EI
+AA2D ; [.38C7.0020.0002] # CHAM VOWEL SIGN U
+AA2E ; [.38C8.0020.0002] # CHAM VOWEL SIGN OE
+AA2F ; [.38C9.0020.0002] # CHAM VOWEL SIGN O
+AA30 ; [.38CA.0020.0002] # CHAM VOWEL SIGN AI
+AA31 ; [.38CB.0020.0002] # CHAM VOWEL SIGN AU
+AA32 ; [.38CC.0020.0002] # CHAM VOWEL SIGN UE
+AA40 ; [.38CD.0020.0002] # CHAM LETTER FINAL K
+AA41 ; [.38CE.0020.0002] # CHAM LETTER FINAL G
+AA42 ; [.38CF.0020.0002] # CHAM LETTER FINAL NG
+AA43 ; [.38D0.0020.0002] # CHAM CONSONANT SIGN FINAL NG
+AA44 ; [.38D1.0020.0002] # CHAM LETTER FINAL CH
+AA45 ; [.38D2.0020.0002] # CHAM LETTER FINAL T
+AA46 ; [.38D3.0020.0002] # CHAM LETTER FINAL N
+AA47 ; [.38D4.0020.0002] # CHAM LETTER FINAL P
+AA48 ; [.38D5.0020.0002] # CHAM LETTER FINAL Y
+AA49 ; [.38D6.0020.0002] # CHAM LETTER FINAL R
+AA4A ; [.38D7.0020.0002] # CHAM LETTER FINAL L
+AA4B ; [.38D8.0020.0002] # CHAM LETTER FINAL SS
+AA4C ; [.38D9.0020.0002] # CHAM CONSONANT SIGN FINAL M
+AA4D ; [.38DA.0020.0002] # CHAM CONSONANT SIGN FINAL H
+1B05 ; [.38DB.0020.0002] # BALINESE LETTER AKARA
+1B06 ; [.38DC.0020.0002] # BALINESE LETTER AKARA TEDUNG
+1B05 1B35 ; [.38DC.0020.0002] # BALINESE LETTER AKARA TEDUNG
+1B07 ; [.38DD.0020.0002] # BALINESE LETTER IKARA
+1B08 ; [.38DE.0020.0002] # BALINESE LETTER IKARA TEDUNG
+1B07 1B35 ; [.38DE.0020.0002] # BALINESE LETTER IKARA TEDUNG
+1B09 ; [.38DF.0020.0002] # BALINESE LETTER UKARA
+1B0A ; [.38E0.0020.0002] # BALINESE LETTER UKARA TEDUNG
+1B09 1B35 ; [.38E0.0020.0002] # BALINESE LETTER UKARA TEDUNG
+1B0B ; [.38E1.0020.0002] # BALINESE LETTER RA REPA
+1B0C ; [.38E2.0020.0002] # BALINESE LETTER RA REPA TEDUNG
+1B0B 1B35 ; [.38E2.0020.0002] # BALINESE LETTER RA REPA TEDUNG
+1B0D ; [.38E3.0020.0002] # BALINESE LETTER LA LENGA
+1B0E ; [.38E4.0020.0002] # BALINESE LETTER LA LENGA TEDUNG
+1B0D 1B35 ; [.38E4.0020.0002] # BALINESE LETTER LA LENGA TEDUNG
+1B0F ; [.38E5.0020.0002] # BALINESE LETTER EKARA
+1B10 ; [.38E6.0020.0002] # BALINESE LETTER AIKARA
+1B11 ; [.38E7.0020.0002] # BALINESE LETTER OKARA
+1B12 ; [.38E8.0020.0002] # BALINESE LETTER OKARA TEDUNG
+1B11 1B35 ; [.38E8.0020.0002] # BALINESE LETTER OKARA TEDUNG
+1B13 ; [.38E9.0020.0002] # BALINESE LETTER KA
+1B45 ; [.38EA.0020.0002] # BALINESE LETTER KAF SASAK
+1B46 ; [.38EB.0020.0002] # BALINESE LETTER KHOT SASAK
+1B14 ; [.38EC.0020.0002] # BALINESE LETTER KA MAHAPRANA
+1B15 ; [.38ED.0020.0002] # BALINESE LETTER GA
+1B16 ; [.38EE.0020.0002] # BALINESE LETTER GA GORA
+1B17 ; [.38EF.0020.0002] # BALINESE LETTER NGA
+1B18 ; [.38F0.0020.0002] # BALINESE LETTER CA
+1B19 ; [.38F1.0020.0002] # BALINESE LETTER CA LACA
+1B1A ; [.38F2.0020.0002] # BALINESE LETTER JA
+1B4C ; [.38F2.0020.0004][.3920.0020.0004][.38F4.0020.0004] # BALINESE LETTER ARCHAIC JNYA
+1B1B ; [.38F3.0020.0002] # BALINESE LETTER JA JERA
+1B1C ; [.38F4.0020.0002] # BALINESE LETTER NYA
+1B1D ; [.38F5.0020.0002] # BALINESE LETTER TA LATIK
+1B1E ; [.38F6.0020.0002] # BALINESE LETTER TA MURDA MAHAPRANA
+1B1F ; [.38F7.0020.0002] # BALINESE LETTER DA MURDA ALPAPRANA
+1B20 ; [.38F8.0020.0002] # BALINESE LETTER DA MURDA MAHAPRANA
+1B21 ; [.38F9.0020.0002] # BALINESE LETTER NA RAMBAT
+1B22 ; [.38FA.0020.0002] # BALINESE LETTER TA
+1B47 ; [.38FB.0020.0002] # BALINESE LETTER TZIR SASAK
+1B23 ; [.38FC.0020.0002] # BALINESE LETTER TA TAWA
+1B24 ; [.38FD.0020.0002] # BALINESE LETTER DA
+1B25 ; [.38FE.0020.0002] # BALINESE LETTER DA MADU
+1B26 ; [.38FF.0020.0002] # BALINESE LETTER NA
+1B27 ; [.3900.0020.0002] # BALINESE LETTER PA
+1B48 ; [.3901.0020.0002] # BALINESE LETTER EF SASAK
+1B28 ; [.3902.0020.0002] # BALINESE LETTER PA KAPAL
+1B29 ; [.3903.0020.0002] # BALINESE LETTER BA
+1B2A ; [.3904.0020.0002] # BALINESE LETTER BA KEMBANG
+1B2B ; [.3905.0020.0002] # BALINESE LETTER MA
+1B2C ; [.3906.0020.0002] # BALINESE LETTER YA
+1B2D ; [.3907.0020.0002] # BALINESE LETTER RA
+1B2E ; [.3908.0020.0002] # BALINESE LETTER LA
+1B2F ; [.3909.0020.0002] # BALINESE LETTER WA
+1B49 ; [.390A.0020.0002] # BALINESE LETTER VE SASAK
+1B30 ; [.390B.0020.0002] # BALINESE LETTER SA SAGA
+1B31 ; [.390C.0020.0002] # BALINESE LETTER SA SAPA
+1B32 ; [.390D.0020.0002] # BALINESE LETTER SA
+1B4A ; [.390E.0020.0002] # BALINESE LETTER ZAL SASAK
+1B4B ; [.390F.0020.0002] # BALINESE LETTER ASYURA SASAK
+1B33 ; [.3910.0020.0002] # BALINESE LETTER HA
+1B35 ; [.3911.0020.0002] # BALINESE VOWEL SIGN TEDUNG
+1B36 ; [.3912.0020.0002] # BALINESE VOWEL SIGN ULU
+1B37 ; [.3913.0020.0002] # BALINESE VOWEL SIGN ULU SARI
+1B38 ; [.3914.0020.0002] # BALINESE VOWEL SIGN SUKU
+1B39 ; [.3915.0020.0002] # BALINESE VOWEL SIGN SUKU ILUT
+1B3A ; [.3916.0020.0002] # BALINESE VOWEL SIGN RA REPA
+1B3B ; [.3917.0020.0002] # BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3A 1B35 ; [.3917.0020.0002] # BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3C ; [.3918.0020.0002] # BALINESE VOWEL SIGN LA LENGA
+1B3D ; [.3919.0020.0002] # BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B3C 1B35 ; [.3919.0020.0002] # BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B3E ; [.391A.0020.0002] # BALINESE VOWEL SIGN TALING
+1B3F ; [.391B.0020.0002] # BALINESE VOWEL SIGN TALING REPA
+1B40 ; [.391C.0020.0002] # BALINESE VOWEL SIGN TALING TEDUNG
+1B3E 1B35 ; [.391C.0020.0002] # BALINESE VOWEL SIGN TALING TEDUNG
+1B41 ; [.391D.0020.0002] # BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B3F 1B35 ; [.391D.0020.0002] # BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B42 ; [.391E.0020.0002] # BALINESE VOWEL SIGN PEPET
+1B43 ; [.391F.0020.0002] # BALINESE VOWEL SIGN PEPET TEDUNG
+1B42 1B35 ; [.391F.0020.0002] # BALINESE VOWEL SIGN PEPET TEDUNG
+1B44 ; [.3920.0020.0002] # BALINESE ADEG ADEG
+A984 ; [.3921.0020.0002] # JAVANESE LETTER A
+A985 ; [.3922.0020.0002] # JAVANESE LETTER I KAWI
+A986 ; [.3923.0020.0002] # JAVANESE LETTER I
+A987 ; [.3924.0020.0002] # JAVANESE LETTER II
+A988 ; [.3925.0020.0002] # JAVANESE LETTER U
+A989 ; [.3926.0020.0002] # JAVANESE LETTER PA CEREK
+A98A ; [.3927.0020.0002] # JAVANESE LETTER NGA LELET
+A98B ; [.3928.0020.0002] # JAVANESE LETTER NGA LELET RASWADI
+A98C ; [.3929.0020.0002] # JAVANESE LETTER E
+A98D ; [.392A.0020.0002] # JAVANESE LETTER AI
+A98E ; [.392B.0020.0002] # JAVANESE LETTER O
+A98F ; [.392C.0020.0002] # JAVANESE LETTER KA
+A990 ; [.392D.0020.0002] # JAVANESE LETTER KA SASAK
+A991 ; [.392E.0020.0002] # JAVANESE LETTER KA MURDA
+A992 ; [.392F.0020.0002] # JAVANESE LETTER GA
+A993 ; [.3930.0020.0002] # JAVANESE LETTER GA MURDA
+A994 ; [.3931.0020.0002] # JAVANESE LETTER NGA
+A995 ; [.3932.0020.0002] # JAVANESE LETTER CA
+A996 ; [.3933.0020.0002] # JAVANESE LETTER CA MURDA
+A997 ; [.3934.0020.0002] # JAVANESE LETTER JA
+A998 ; [.3935.0020.0002] # JAVANESE LETTER NYA MURDA
+A999 ; [.3936.0020.0002] # JAVANESE LETTER JA MAHAPRANA
+A99A ; [.3937.0020.0002] # JAVANESE LETTER NYA
+A99B ; [.3938.0020.0002] # JAVANESE LETTER TTA
+A99C ; [.3939.0020.0002] # JAVANESE LETTER TTA MAHAPRANA
+A99D ; [.393A.0020.0002] # JAVANESE LETTER DDA
+A99E ; [.393B.0020.0002] # JAVANESE LETTER DDA MAHAPRANA
+A99F ; [.393C.0020.0002] # JAVANESE LETTER NA MURDA
+A9A0 ; [.393D.0020.0002] # JAVANESE LETTER TA
+A9A1 ; [.393E.0020.0002] # JAVANESE LETTER TA MURDA
+A9A2 ; [.393F.0020.0002] # JAVANESE LETTER DA
+A9A3 ; [.3940.0020.0002] # JAVANESE LETTER DA MAHAPRANA
+A9A4 ; [.3941.0020.0002] # JAVANESE LETTER NA
+A9A5 ; [.3942.0020.0002] # JAVANESE LETTER PA
+A9A6 ; [.3943.0020.0002] # JAVANESE LETTER PA MURDA
+A9A7 ; [.3944.0020.0002] # JAVANESE LETTER BA
+A9A8 ; [.3945.0020.0002] # JAVANESE LETTER BA MURDA
+A9A9 ; [.3946.0020.0002] # JAVANESE LETTER MA
+A9AA ; [.3947.0020.0002] # JAVANESE LETTER YA
+A9BE ; [.3948.0020.0002] # JAVANESE CONSONANT SIGN PENGKAL
+A9AB ; [.3949.0020.0002] # JAVANESE LETTER RA
+A9AC ; [.3949.0020.0004] # JAVANESE LETTER RA AGUNG
+A9BF ; [.394A.0020.0002] # JAVANESE CONSONANT SIGN CAKRA
+A9AD ; [.394B.0020.0002] # JAVANESE LETTER LA
+A9AE ; [.394C.0020.0002] # JAVANESE LETTER WA
+A9AF ; [.394D.0020.0002] # JAVANESE LETTER SA MURDA
+A9B0 ; [.394E.0020.0002] # JAVANESE LETTER SA MAHAPRANA
+A9B1 ; [.394F.0020.0002] # JAVANESE LETTER SA
+A9B2 ; [.3950.0020.0002] # JAVANESE LETTER HA
+A9B4 ; [.3951.0020.0002] # JAVANESE VOWEL SIGN TARUNG
+A9B5 ; [.3951.0020.0004] # JAVANESE VOWEL SIGN TOLONG
+A9BC ; [.3952.0020.0002] # JAVANESE VOWEL SIGN PEPET
+A9B6 ; [.3953.0020.0002] # JAVANESE VOWEL SIGN WULU
+A9B7 ; [.3954.0020.0002] # JAVANESE VOWEL SIGN WULU MELIK
+A9B8 ; [.3955.0020.0002] # JAVANESE VOWEL SIGN SUKU
+A9B9 ; [.3956.0020.0002] # JAVANESE VOWEL SIGN SUKU MENDUT
+A9BD ; [.3957.0020.0002] # JAVANESE CONSONANT SIGN KERET
+A9BA ; [.3958.0020.0002] # JAVANESE VOWEL SIGN TALING
+A9BB ; [.3959.0020.0002] # JAVANESE VOWEL SIGN DIRGA MURE
+A9C0 ; [.395A.0020.0002] # JAVANESE PANGKON
+1880 ; [.395B.0020.0002] # MONGOLIAN LETTER ALI GALI ANUSVARA ONE
+1881 ; [.395C.0020.0002] # MONGOLIAN LETTER ALI GALI VISARGA ONE
+1882 ; [.395D.0020.0002] # MONGOLIAN LETTER ALI GALI DAMARU
+1883 ; [.395E.0020.0002] # MONGOLIAN LETTER ALI GALI UBADAMA
+1884 ; [.395F.0020.0002] # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+1885 ; [.3960.0020.0002] # MONGOLIAN LETTER ALI GALI BALUDA
+1886 ; [.3961.0020.0002] # MONGOLIAN LETTER ALI GALI THREE BALUDA
+1843 ; [.3962.0020.0002] # MONGOLIAN LETTER TODO LONG VOWEL SIGN
+1820 ; [.3963.0020.0002] # MONGOLIAN LETTER A
+1887 ; [.3964.0020.0002] # MONGOLIAN LETTER ALI GALI A
+1821 ; [.3965.0020.0002] # MONGOLIAN LETTER E
+1844 ; [.3966.0020.0002] # MONGOLIAN LETTER TODO E
+185D ; [.3967.0020.0002] # MONGOLIAN LETTER SIBE E
+1822 ; [.3968.0020.0002] # MONGOLIAN LETTER I
+1845 ; [.3969.0020.0002] # MONGOLIAN LETTER TODO I
+185E ; [.396A.0020.0002] # MONGOLIAN LETTER SIBE I
+1873 ; [.396B.0020.0002] # MONGOLIAN LETTER MANCHU I
+1888 ; [.396C.0020.0002] # MONGOLIAN LETTER ALI GALI I
+185F ; [.396D.0020.0002] # MONGOLIAN LETTER SIBE IY
+1823 ; [.396E.0020.0002] # MONGOLIAN LETTER O
+1846 ; [.396F.0020.0002] # MONGOLIAN LETTER TODO O
+1824 ; [.3970.0020.0002] # MONGOLIAN LETTER U
+1847 ; [.3971.0020.0002] # MONGOLIAN LETTER TODO U
+1861 ; [.3972.0020.0002] # MONGOLIAN LETTER SIBE U
+1825 ; [.3973.0020.0002] # MONGOLIAN LETTER OE
+1848 ; [.3974.0020.0002] # MONGOLIAN LETTER TODO OE
+1826 ; [.3975.0020.0002] # MONGOLIAN LETTER UE
+1849 ; [.3976.0020.0002] # MONGOLIAN LETTER TODO UE
+1860 ; [.3977.0020.0002] # MONGOLIAN LETTER SIBE UE
+1827 ; [.3978.0020.0002] # MONGOLIAN LETTER EE
+1828 ; [.3979.0020.0002] # MONGOLIAN LETTER NA
+1829 ; [.397A.0020.0002] # MONGOLIAN LETTER ANG
+184A ; [.397B.0020.0002] # MONGOLIAN LETTER TODO ANG
+1862 ; [.397C.0020.0002] # MONGOLIAN LETTER SIBE ANG
+188A ; [.397D.0020.0002] # MONGOLIAN LETTER ALI GALI NGA
+189B ; [.397E.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI NGA
+182A ; [.397F.0020.0002] # MONGOLIAN LETTER BA
+184B ; [.3980.0020.0002] # MONGOLIAN LETTER TODO BA
+182B ; [.3981.0020.0002] # MONGOLIAN LETTER PA
+184C ; [.3982.0020.0002] # MONGOLIAN LETTER TODO PA
+1866 ; [.3983.0020.0002] # MONGOLIAN LETTER SIBE PA
+182C ; [.3984.0020.0002] # MONGOLIAN LETTER QA
+184D ; [.3985.0020.0002] # MONGOLIAN LETTER TODO QA
+182D ; [.3986.0020.0002] # MONGOLIAN LETTER GA
+184E ; [.3987.0020.0002] # MONGOLIAN LETTER TODO GA
+1864 ; [.3988.0020.0002] # MONGOLIAN LETTER SIBE GA
+189A ; [.3989.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI GHA
+1865 ; [.398A.0020.0002] # MONGOLIAN LETTER SIBE HA
+182E ; [.398B.0020.0002] # MONGOLIAN LETTER MA
+184F ; [.398C.0020.0002] # MONGOLIAN LETTER TODO MA
+182F ; [.398D.0020.0002] # MONGOLIAN LETTER LA
+1830 ; [.398E.0020.0002] # MONGOLIAN LETTER SA
+1831 ; [.398F.0020.0002] # MONGOLIAN LETTER SHA
+1867 ; [.3990.0020.0002] # MONGOLIAN LETTER SIBE SHA
+189C ; [.3991.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI CA
+189D ; [.3992.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI JHA
+18A2 ; [.3993.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI SSA
+18A4 ; [.3994.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI ZHA
+18A5 ; [.3995.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI ZA
+1832 ; [.3996.0020.0002] # MONGOLIAN LETTER TA
+1850 ; [.3997.0020.0002] # MONGOLIAN LETTER TODO TA
+1868 ; [.3998.0020.0002] # MONGOLIAN LETTER SIBE TA
+1833 ; [.3999.0020.0002] # MONGOLIAN LETTER DA
+1851 ; [.399A.0020.0002] # MONGOLIAN LETTER TODO DA
+1869 ; [.399B.0020.0002] # MONGOLIAN LETTER SIBE DA
+1834 ; [.399C.0020.0002] # MONGOLIAN LETTER CHA
+1852 ; [.399D.0020.0002] # MONGOLIAN LETTER TODO CHA
+1871 ; [.399E.0020.0002] # MONGOLIAN LETTER SIBE CHA
+1878 ; [.399F.0020.0002] # MONGOLIAN LETTER CHA WITH TWO DOTS
+185C ; [.39A0.0020.0002] # MONGOLIAN LETTER TODO DZA
+188B ; [.39A1.0020.0002] # MONGOLIAN LETTER ALI GALI CA
+1835 ; [.39A2.0020.0002] # MONGOLIAN LETTER JA
+1853 ; [.39A3.0020.0002] # MONGOLIAN LETTER TODO JA
+186A ; [.39A4.0020.0002] # MONGOLIAN LETTER SIBE JA
+1877 ; [.39A5.0020.0002] # MONGOLIAN LETTER MANCHU ZHA
+1836 ; [.39A6.0020.0002] # MONGOLIAN LETTER YA
+1855 ; [.39A7.0020.0002] # MONGOLIAN LETTER TODO YA
+1872 ; [.39A8.0020.0002] # MONGOLIAN LETTER SIBE ZHA
+1837 ; [.39A9.0020.0002] # MONGOLIAN LETTER RA
+1875 ; [.39AA.0020.0002] # MONGOLIAN LETTER MANCHU RA
+1838 ; [.39AB.0020.0002] # MONGOLIAN LETTER WA
+1856 ; [.39AC.0020.0002] # MONGOLIAN LETTER TODO WA
+1839 ; [.39AD.0020.0002] # MONGOLIAN LETTER FA
+186B ; [.39AE.0020.0002] # MONGOLIAN LETTER SIBE FA
+1876 ; [.39AF.0020.0002] # MONGOLIAN LETTER MANCHU FA
+183A ; [.39B0.0020.0002] # MONGOLIAN LETTER KA
+1857 ; [.39B1.0020.0002] # MONGOLIAN LETTER TODO KA
+1863 ; [.39B2.0020.0002] # MONGOLIAN LETTER SIBE KA
+1874 ; [.39B3.0020.0002] # MONGOLIAN LETTER MANCHU KA
+1889 ; [.39B4.0020.0002] # MONGOLIAN LETTER ALI GALI KA
+183B ; [.39B5.0020.0002] # MONGOLIAN LETTER KHA
+183C ; [.39B6.0020.0002] # MONGOLIAN LETTER TSA
+1854 ; [.39B7.0020.0002] # MONGOLIAN LETTER TODO TSA
+186E ; [.39B8.0020.0002] # MONGOLIAN LETTER SIBE TSA
+183D ; [.39B9.0020.0002] # MONGOLIAN LETTER ZA
+186F ; [.39BA.0020.0002] # MONGOLIAN LETTER SIBE ZA
+1858 ; [.39BB.0020.0002] # MONGOLIAN LETTER TODO GAA
+186C ; [.39BC.0020.0002] # MONGOLIAN LETTER SIBE GAA
+183E ; [.39BD.0020.0002] # MONGOLIAN LETTER HAA
+1859 ; [.39BE.0020.0002] # MONGOLIAN LETTER TODO HAA
+186D ; [.39BF.0020.0002] # MONGOLIAN LETTER SIBE HAA
+183F ; [.39C0.0020.0002] # MONGOLIAN LETTER ZRA
+1840 ; [.39C1.0020.0002] # MONGOLIAN LETTER LHA
+1841 ; [.39C2.0020.0002] # MONGOLIAN LETTER ZHI
+1842 ; [.39C3.0020.0002] # MONGOLIAN LETTER CHI
+185A ; [.39C4.0020.0002] # MONGOLIAN LETTER TODO JIA
+185B ; [.39C5.0020.0002] # MONGOLIAN LETTER TODO NIA
+1870 ; [.39C6.0020.0002] # MONGOLIAN LETTER SIBE RAA
+188C ; [.39C7.0020.0002] # MONGOLIAN LETTER ALI GALI TTA
+189E ; [.39C8.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI TTA
+188D ; [.39C9.0020.0002] # MONGOLIAN LETTER ALI GALI TTHA
+188E ; [.39CA.0020.0002] # MONGOLIAN LETTER ALI GALI DDA
+189F ; [.39CB.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI DDHA
+188F ; [.39CC.0020.0002] # MONGOLIAN LETTER ALI GALI NNA
+1890 ; [.39CD.0020.0002] # MONGOLIAN LETTER ALI GALI TA
+1898 ; [.39CE.0020.0002] # MONGOLIAN LETTER TODO ALI GALI TA
+18A0 ; [.39CF.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI TA
+1891 ; [.39D0.0020.0002] # MONGOLIAN LETTER ALI GALI DA
+18A1 ; [.39D1.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI DHA
+1892 ; [.39D2.0020.0002] # MONGOLIAN LETTER ALI GALI PA
+1893 ; [.39D3.0020.0002] # MONGOLIAN LETTER ALI GALI PHA
+18A8 ; [.39D4.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI BHA
+1894 ; [.39D5.0020.0002] # MONGOLIAN LETTER ALI GALI SSA
+18A3 ; [.39D6.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI CYA
+1895 ; [.39D7.0020.0002] # MONGOLIAN LETTER ALI GALI ZHA
+1899 ; [.39D8.0020.0002] # MONGOLIAN LETTER TODO ALI GALI ZHA
+1896 ; [.39D9.0020.0002] # MONGOLIAN LETTER ALI GALI ZA
+1897 ; [.39DA.0020.0002] # MONGOLIAN LETTER ALI GALI AH
+18A6 ; [.39DB.0020.0002] # MONGOLIAN LETTER ALI GALI HALF U
+18A7 ; [.39DC.0020.0002] # MONGOLIAN LETTER ALI GALI HALF YA
+18AA ; [.39DD.0020.0002] # MONGOLIAN LETTER MANCHU ALI GALI LHA
+18A9 ; [.39DE.0020.0002] # MONGOLIAN LETTER ALI GALI DAGALGA
+1C5A ; [.39DF.0020.0002] # OL CHIKI LETTER LA
+1C5B ; [.39E0.0020.0002] # OL CHIKI LETTER AT
+1C5C ; [.39E1.0020.0002] # OL CHIKI LETTER AG
+1C5D ; [.39E2.0020.0002] # OL CHIKI LETTER ANG
+1C5E ; [.39E3.0020.0002] # OL CHIKI LETTER AL
+1C5F ; [.39E4.0020.0002] # OL CHIKI LETTER LAA
+1C60 ; [.39E5.0020.0002] # OL CHIKI LETTER AAK
+1C61 ; [.39E6.0020.0002] # OL CHIKI LETTER AAJ
+1C62 ; [.39E7.0020.0002] # OL CHIKI LETTER AAM
+1C63 ; [.39E8.0020.0002] # OL CHIKI LETTER AAW
+1C64 ; [.39E9.0020.0002] # OL CHIKI LETTER LI
+1C65 ; [.39EA.0020.0002] # OL CHIKI LETTER IS
+1C66 ; [.39EB.0020.0002] # OL CHIKI LETTER IH
+1C67 ; [.39EC.0020.0002] # OL CHIKI LETTER INY
+1C68 ; [.39ED.0020.0002] # OL CHIKI LETTER IR
+1C69 ; [.39EE.0020.0002] # OL CHIKI LETTER LU
+1C6A ; [.39EF.0020.0002] # OL CHIKI LETTER UC
+1C6B ; [.39F0.0020.0002] # OL CHIKI LETTER UD
+1C6C ; [.39F1.0020.0002] # OL CHIKI LETTER UNN
+1C6D ; [.39F2.0020.0002] # OL CHIKI LETTER UY
+1C6E ; [.39F3.0020.0002] # OL CHIKI LETTER LE
+1C6F ; [.39F4.0020.0002] # OL CHIKI LETTER EP
+1C70 ; [.39F5.0020.0002] # OL CHIKI LETTER EDD
+1C71 ; [.39F6.0020.0002] # OL CHIKI LETTER EN
+1C72 ; [.39F7.0020.0002] # OL CHIKI LETTER ERR
+1C73 ; [.39F8.0020.0002] # OL CHIKI LETTER LO
+1C74 ; [.39F9.0020.0002] # OL CHIKI LETTER OTT
+1C75 ; [.39FA.0020.0002] # OL CHIKI LETTER OB
+1C76 ; [.39FB.0020.0002] # OL CHIKI LETTER OV
+1C77 ; [.39FC.0020.0002] # OL CHIKI LETTER OH
+1C78 ; [.39FD.0020.0002] # OL CHIKI MU TTUDDAG
+1C79 ; [.39FE.0020.0002] # OL CHIKI GAAHLAA TTUDDAAG
+1C7A ; [.39FF.0020.0002] # OL CHIKI MU-GAAHLAA TTUDDAAG
+1C7B ; [.3A00.0020.0002] # OL CHIKI RELAA
+1C7C ; [.3A01.0020.0002] # OL CHIKI PHAARKAA
+1C7D ; [.3A02.0020.0002] # OL CHIKI AHAD
+AB70 ; [.3A03.0020.0002] # CHEROKEE SMALL LETTER A
+13A0 ; [.3A03.0020.0008] # CHEROKEE LETTER A
+AB71 ; [.3A04.0020.0002] # CHEROKEE SMALL LETTER E
+13A1 ; [.3A04.0020.0008] # CHEROKEE LETTER E
+AB72 ; [.3A05.0020.0002] # CHEROKEE SMALL LETTER I
+13A2 ; [.3A05.0020.0008] # CHEROKEE LETTER I
+AB73 ; [.3A06.0020.0002] # CHEROKEE SMALL LETTER O
+13A3 ; [.3A06.0020.0008] # CHEROKEE LETTER O
+AB74 ; [.3A07.0020.0002] # CHEROKEE SMALL LETTER U
+13A4 ; [.3A07.0020.0008] # CHEROKEE LETTER U
+AB75 ; [.3A08.0020.0002] # CHEROKEE SMALL LETTER V
+13A5 ; [.3A08.0020.0008] # CHEROKEE LETTER V
+AB76 ; [.3A09.0020.0002] # CHEROKEE SMALL LETTER GA
+13A6 ; [.3A09.0020.0008] # CHEROKEE LETTER GA
+AB77 ; [.3A0A.0020.0002] # CHEROKEE SMALL LETTER KA
+13A7 ; [.3A0A.0020.0008] # CHEROKEE LETTER KA
+AB78 ; [.3A0B.0020.0002] # CHEROKEE SMALL LETTER GE
+13A8 ; [.3A0B.0020.0008] # CHEROKEE LETTER GE
+AB79 ; [.3A0C.0020.0002] # CHEROKEE SMALL LETTER GI
+13A9 ; [.3A0C.0020.0008] # CHEROKEE LETTER GI
+AB7A ; [.3A0D.0020.0002] # CHEROKEE SMALL LETTER GO
+13AA ; [.3A0D.0020.0008] # CHEROKEE LETTER GO
+AB7B ; [.3A0E.0020.0002] # CHEROKEE SMALL LETTER GU
+13AB ; [.3A0E.0020.0008] # CHEROKEE LETTER GU
+AB7C ; [.3A0F.0020.0002] # CHEROKEE SMALL LETTER GV
+13AC ; [.3A0F.0020.0008] # CHEROKEE LETTER GV
+AB7D ; [.3A10.0020.0002] # CHEROKEE SMALL LETTER HA
+13AD ; [.3A10.0020.0008] # CHEROKEE LETTER HA
+AB7E ; [.3A11.0020.0002] # CHEROKEE SMALL LETTER HE
+13AE ; [.3A11.0020.0008] # CHEROKEE LETTER HE
+AB7F ; [.3A12.0020.0002] # CHEROKEE SMALL LETTER HI
+13AF ; [.3A12.0020.0008] # CHEROKEE LETTER HI
+AB80 ; [.3A13.0020.0002] # CHEROKEE SMALL LETTER HO
+13B0 ; [.3A13.0020.0008] # CHEROKEE LETTER HO
+AB81 ; [.3A14.0020.0002] # CHEROKEE SMALL LETTER HU
+13B1 ; [.3A14.0020.0008] # CHEROKEE LETTER HU
+AB82 ; [.3A15.0020.0002] # CHEROKEE SMALL LETTER HV
+13B2 ; [.3A15.0020.0008] # CHEROKEE LETTER HV
+AB83 ; [.3A16.0020.0002] # CHEROKEE SMALL LETTER LA
+13B3 ; [.3A16.0020.0008] # CHEROKEE LETTER LA
+AB84 ; [.3A17.0020.0002] # CHEROKEE SMALL LETTER LE
+13B4 ; [.3A17.0020.0008] # CHEROKEE LETTER LE
+AB85 ; [.3A18.0020.0002] # CHEROKEE SMALL LETTER LI
+13B5 ; [.3A18.0020.0008] # CHEROKEE LETTER LI
+AB86 ; [.3A19.0020.0002] # CHEROKEE SMALL LETTER LO
+13B6 ; [.3A19.0020.0008] # CHEROKEE LETTER LO
+AB87 ; [.3A1A.0020.0002] # CHEROKEE SMALL LETTER LU
+13B7 ; [.3A1A.0020.0008] # CHEROKEE LETTER LU
+AB88 ; [.3A1B.0020.0002] # CHEROKEE SMALL LETTER LV
+13B8 ; [.3A1B.0020.0008] # CHEROKEE LETTER LV
+AB89 ; [.3A1C.0020.0002] # CHEROKEE SMALL LETTER MA
+13B9 ; [.3A1C.0020.0008] # CHEROKEE LETTER MA
+AB8A ; [.3A1D.0020.0002] # CHEROKEE SMALL LETTER ME
+13BA ; [.3A1D.0020.0008] # CHEROKEE LETTER ME
+AB8B ; [.3A1E.0020.0002] # CHEROKEE SMALL LETTER MI
+13BB ; [.3A1E.0020.0008] # CHEROKEE LETTER MI
+AB8C ; [.3A1F.0020.0002] # CHEROKEE SMALL LETTER MO
+13BC ; [.3A1F.0020.0008] # CHEROKEE LETTER MO
+AB8D ; [.3A20.0020.0002] # CHEROKEE SMALL LETTER MU
+13BD ; [.3A20.0020.0008] # CHEROKEE LETTER MU
+AB8E ; [.3A21.0020.0002] # CHEROKEE SMALL LETTER NA
+13BE ; [.3A21.0020.0008] # CHEROKEE LETTER NA
+AB8F ; [.3A22.0020.0002] # CHEROKEE SMALL LETTER HNA
+13BF ; [.3A22.0020.0008] # CHEROKEE LETTER HNA
+AB90 ; [.3A23.0020.0002] # CHEROKEE SMALL LETTER NAH
+13C0 ; [.3A23.0020.0008] # CHEROKEE LETTER NAH
+AB91 ; [.3A24.0020.0002] # CHEROKEE SMALL LETTER NE
+13C1 ; [.3A24.0020.0008] # CHEROKEE LETTER NE
+AB92 ; [.3A25.0020.0002] # CHEROKEE SMALL LETTER NI
+13C2 ; [.3A25.0020.0008] # CHEROKEE LETTER NI
+AB93 ; [.3A26.0020.0002] # CHEROKEE SMALL LETTER NO
+13C3 ; [.3A26.0020.0008] # CHEROKEE LETTER NO
+AB94 ; [.3A27.0020.0002] # CHEROKEE SMALL LETTER NU
+13C4 ; [.3A27.0020.0008] # CHEROKEE LETTER NU
+AB95 ; [.3A28.0020.0002] # CHEROKEE SMALL LETTER NV
+13C5 ; [.3A28.0020.0008] # CHEROKEE LETTER NV
+AB96 ; [.3A29.0020.0002] # CHEROKEE SMALL LETTER QUA
+13C6 ; [.3A29.0020.0008] # CHEROKEE LETTER QUA
+AB97 ; [.3A2A.0020.0002] # CHEROKEE SMALL LETTER QUE
+13C7 ; [.3A2A.0020.0008] # CHEROKEE LETTER QUE
+AB98 ; [.3A2B.0020.0002] # CHEROKEE SMALL LETTER QUI
+13C8 ; [.3A2B.0020.0008] # CHEROKEE LETTER QUI
+AB99 ; [.3A2C.0020.0002] # CHEROKEE SMALL LETTER QUO
+13C9 ; [.3A2C.0020.0008] # CHEROKEE LETTER QUO
+AB9A ; [.3A2D.0020.0002] # CHEROKEE SMALL LETTER QUU
+13CA ; [.3A2D.0020.0008] # CHEROKEE LETTER QUU
+AB9B ; [.3A2E.0020.0002] # CHEROKEE SMALL LETTER QUV
+13CB ; [.3A2E.0020.0008] # CHEROKEE LETTER QUV
+AB9C ; [.3A2F.0020.0002] # CHEROKEE SMALL LETTER SA
+13CC ; [.3A2F.0020.0008] # CHEROKEE LETTER SA
+AB9D ; [.3A30.0020.0002] # CHEROKEE SMALL LETTER S
+13CD ; [.3A30.0020.0008] # CHEROKEE LETTER S
+AB9E ; [.3A31.0020.0002] # CHEROKEE SMALL LETTER SE
+13CE ; [.3A31.0020.0008] # CHEROKEE LETTER SE
+AB9F ; [.3A32.0020.0002] # CHEROKEE SMALL LETTER SI
+13CF ; [.3A32.0020.0008] # CHEROKEE LETTER SI
+ABA0 ; [.3A33.0020.0002] # CHEROKEE SMALL LETTER SO
+13D0 ; [.3A33.0020.0008] # CHEROKEE LETTER SO
+ABA1 ; [.3A34.0020.0002] # CHEROKEE SMALL LETTER SU
+13D1 ; [.3A34.0020.0008] # CHEROKEE LETTER SU
+ABA2 ; [.3A35.0020.0002] # CHEROKEE SMALL LETTER SV
+13D2 ; [.3A35.0020.0008] # CHEROKEE LETTER SV
+ABA3 ; [.3A36.0020.0002] # CHEROKEE SMALL LETTER DA
+13D3 ; [.3A36.0020.0008] # CHEROKEE LETTER DA
+ABA4 ; [.3A37.0020.0002] # CHEROKEE SMALL LETTER TA
+13D4 ; [.3A37.0020.0008] # CHEROKEE LETTER TA
+ABA5 ; [.3A38.0020.0002] # CHEROKEE SMALL LETTER DE
+13D5 ; [.3A38.0020.0008] # CHEROKEE LETTER DE
+ABA6 ; [.3A39.0020.0002] # CHEROKEE SMALL LETTER TE
+13D6 ; [.3A39.0020.0008] # CHEROKEE LETTER TE
+ABA7 ; [.3A3A.0020.0002] # CHEROKEE SMALL LETTER DI
+13D7 ; [.3A3A.0020.0008] # CHEROKEE LETTER DI
+ABA8 ; [.3A3B.0020.0002] # CHEROKEE SMALL LETTER TI
+13D8 ; [.3A3B.0020.0008] # CHEROKEE LETTER TI
+ABA9 ; [.3A3C.0020.0002] # CHEROKEE SMALL LETTER DO
+13D9 ; [.3A3C.0020.0008] # CHEROKEE LETTER DO
+ABAA ; [.3A3D.0020.0002] # CHEROKEE SMALL LETTER DU
+13DA ; [.3A3D.0020.0008] # CHEROKEE LETTER DU
+ABAB ; [.3A3E.0020.0002] # CHEROKEE SMALL LETTER DV
+13DB ; [.3A3E.0020.0008] # CHEROKEE LETTER DV
+ABAC ; [.3A3F.0020.0002] # CHEROKEE SMALL LETTER DLA
+13DC ; [.3A3F.0020.0008] # CHEROKEE LETTER DLA
+ABAD ; [.3A40.0020.0002] # CHEROKEE SMALL LETTER TLA
+13DD ; [.3A40.0020.0008] # CHEROKEE LETTER TLA
+ABAE ; [.3A41.0020.0002] # CHEROKEE SMALL LETTER TLE
+13DE ; [.3A41.0020.0008] # CHEROKEE LETTER TLE
+ABAF ; [.3A42.0020.0002] # CHEROKEE SMALL LETTER TLI
+13DF ; [.3A42.0020.0008] # CHEROKEE LETTER TLI
+ABB0 ; [.3A43.0020.0002] # CHEROKEE SMALL LETTER TLO
+13E0 ; [.3A43.0020.0008] # CHEROKEE LETTER TLO
+ABB1 ; [.3A44.0020.0002] # CHEROKEE SMALL LETTER TLU
+13E1 ; [.3A44.0020.0008] # CHEROKEE LETTER TLU
+ABB2 ; [.3A45.0020.0002] # CHEROKEE SMALL LETTER TLV
+13E2 ; [.3A45.0020.0008] # CHEROKEE LETTER TLV
+ABB3 ; [.3A46.0020.0002] # CHEROKEE SMALL LETTER TSA
+13E3 ; [.3A46.0020.0008] # CHEROKEE LETTER TSA
+ABB4 ; [.3A47.0020.0002] # CHEROKEE SMALL LETTER TSE
+13E4 ; [.3A47.0020.0008] # CHEROKEE LETTER TSE
+ABB5 ; [.3A48.0020.0002] # CHEROKEE SMALL LETTER TSI
+13E5 ; [.3A48.0020.0008] # CHEROKEE LETTER TSI
+ABB6 ; [.3A49.0020.0002] # CHEROKEE SMALL LETTER TSO
+13E6 ; [.3A49.0020.0008] # CHEROKEE LETTER TSO
+ABB7 ; [.3A4A.0020.0002] # CHEROKEE SMALL LETTER TSU
+13E7 ; [.3A4A.0020.0008] # CHEROKEE LETTER TSU
+ABB8 ; [.3A4B.0020.0002] # CHEROKEE SMALL LETTER TSV
+13E8 ; [.3A4B.0020.0008] # CHEROKEE LETTER TSV
+ABB9 ; [.3A4C.0020.0002] # CHEROKEE SMALL LETTER WA
+13E9 ; [.3A4C.0020.0008] # CHEROKEE LETTER WA
+ABBA ; [.3A4D.0020.0002] # CHEROKEE SMALL LETTER WE
+13EA ; [.3A4D.0020.0008] # CHEROKEE LETTER WE
+ABBB ; [.3A4E.0020.0002] # CHEROKEE SMALL LETTER WI
+13EB ; [.3A4E.0020.0008] # CHEROKEE LETTER WI
+ABBC ; [.3A4F.0020.0002] # CHEROKEE SMALL LETTER WO
+13EC ; [.3A4F.0020.0008] # CHEROKEE LETTER WO
+ABBD ; [.3A50.0020.0002] # CHEROKEE SMALL LETTER WU
+13ED ; [.3A50.0020.0008] # CHEROKEE LETTER WU
+ABBE ; [.3A51.0020.0002] # CHEROKEE SMALL LETTER WV
+13EE ; [.3A51.0020.0008] # CHEROKEE LETTER WV
+ABBF ; [.3A52.0020.0002] # CHEROKEE SMALL LETTER YA
+13EF ; [.3A52.0020.0008] # CHEROKEE LETTER YA
+13F8 ; [.3A53.0020.0002] # CHEROKEE SMALL LETTER YE
+13F0 ; [.3A53.0020.0008] # CHEROKEE LETTER YE
+13F9 ; [.3A54.0020.0002] # CHEROKEE SMALL LETTER YI
+13F1 ; [.3A54.0020.0008] # CHEROKEE LETTER YI
+13FA ; [.3A55.0020.0002] # CHEROKEE SMALL LETTER YO
+13F2 ; [.3A55.0020.0008] # CHEROKEE LETTER YO
+13FB ; [.3A56.0020.0002] # CHEROKEE SMALL LETTER YU
+13F3 ; [.3A56.0020.0008] # CHEROKEE LETTER YU
+13FC ; [.3A57.0020.0002] # CHEROKEE SMALL LETTER YV
+13F4 ; [.3A57.0020.0008] # CHEROKEE LETTER YV
+13FD ; [.3A58.0020.0002] # CHEROKEE SMALL LETTER MV
+13F5 ; [.3A58.0020.0008] # CHEROKEE LETTER MV
+104D8 ; [.3A59.0020.0002] # OSAGE SMALL LETTER A
+104B0 ; [.3A59.0020.0008] # OSAGE CAPITAL LETTER A
+104D9 ; [.3A5A.0020.0002] # OSAGE SMALL LETTER AI
+104B1 ; [.3A5A.0020.0008] # OSAGE CAPITAL LETTER AI
+104DA ; [.3A5B.0020.0002] # OSAGE SMALL LETTER AIN
+104B2 ; [.3A5B.0020.0008] # OSAGE CAPITAL LETTER AIN
+104DB ; [.3A5C.0020.0002] # OSAGE SMALL LETTER AH
+104B3 ; [.3A5C.0020.0008] # OSAGE CAPITAL LETTER AH
+104DC ; [.3A5D.0020.0002] # OSAGE SMALL LETTER BRA
+104B4 ; [.3A5D.0020.0008] # OSAGE CAPITAL LETTER BRA
+104DD ; [.3A5E.0020.0002] # OSAGE SMALL LETTER CHA
+104B5 ; [.3A5E.0020.0008] # OSAGE CAPITAL LETTER CHA
+104DE ; [.3A5F.0020.0002] # OSAGE SMALL LETTER EHCHA
+104B6 ; [.3A5F.0020.0008] # OSAGE CAPITAL LETTER EHCHA
+104DF ; [.3A60.0020.0002] # OSAGE SMALL LETTER E
+104B7 ; [.3A60.0020.0008] # OSAGE CAPITAL LETTER E
+104E0 ; [.3A61.0020.0002] # OSAGE SMALL LETTER EIN
+104B8 ; [.3A61.0020.0008] # OSAGE CAPITAL LETTER EIN
+104E1 ; [.3A62.0020.0002] # OSAGE SMALL LETTER HA
+104B9 ; [.3A62.0020.0008] # OSAGE CAPITAL LETTER HA
+104E2 ; [.3A63.0020.0002] # OSAGE SMALL LETTER HYA
+104BA ; [.3A63.0020.0008] # OSAGE CAPITAL LETTER HYA
+104E3 ; [.3A64.0020.0002] # OSAGE SMALL LETTER I
+104BB ; [.3A64.0020.0008] # OSAGE CAPITAL LETTER I
+104E4 ; [.3A65.0020.0002] # OSAGE SMALL LETTER KA
+104BC ; [.3A65.0020.0008] # OSAGE CAPITAL LETTER KA
+104E5 ; [.3A66.0020.0002] # OSAGE SMALL LETTER EHKA
+104BD ; [.3A66.0020.0008] # OSAGE CAPITAL LETTER EHKA
+104E6 ; [.3A67.0020.0002] # OSAGE SMALL LETTER KYA
+104BE ; [.3A67.0020.0008] # OSAGE CAPITAL LETTER KYA
+104E7 ; [.3A68.0020.0002] # OSAGE SMALL LETTER LA
+104BF ; [.3A68.0020.0008] # OSAGE CAPITAL LETTER LA
+104E8 ; [.3A69.0020.0002] # OSAGE SMALL LETTER MA
+104C0 ; [.3A69.0020.0008] # OSAGE CAPITAL LETTER MA
+104E9 ; [.3A6A.0020.0002] # OSAGE SMALL LETTER NA
+104C1 ; [.3A6A.0020.0008] # OSAGE CAPITAL LETTER NA
+104EA ; [.3A6B.0020.0002] # OSAGE SMALL LETTER O
+104C2 ; [.3A6B.0020.0008] # OSAGE CAPITAL LETTER O
+104EB ; [.3A6C.0020.0002] # OSAGE SMALL LETTER OIN
+104C3 ; [.3A6C.0020.0008] # OSAGE CAPITAL LETTER OIN
+104EC ; [.3A6D.0020.0002] # OSAGE SMALL LETTER PA
+104C4 ; [.3A6D.0020.0008] # OSAGE CAPITAL LETTER PA
+104ED ; [.3A6E.0020.0002] # OSAGE SMALL LETTER EHPA
+104C5 ; [.3A6E.0020.0008] # OSAGE CAPITAL LETTER EHPA
+104EE ; [.3A6F.0020.0002] # OSAGE SMALL LETTER SA
+104C6 ; [.3A6F.0020.0008] # OSAGE CAPITAL LETTER SA
+104EF ; [.3A70.0020.0002] # OSAGE SMALL LETTER SHA
+104C7 ; [.3A70.0020.0008] # OSAGE CAPITAL LETTER SHA
+104F0 ; [.3A71.0020.0002] # OSAGE SMALL LETTER TA
+104C8 ; [.3A71.0020.0008] # OSAGE CAPITAL LETTER TA
+104F1 ; [.3A72.0020.0002] # OSAGE SMALL LETTER EHTA
+104C9 ; [.3A72.0020.0008] # OSAGE CAPITAL LETTER EHTA
+104F2 ; [.3A73.0020.0002] # OSAGE SMALL LETTER TSA
+104CA ; [.3A73.0020.0008] # OSAGE CAPITAL LETTER TSA
+104F3 ; [.3A74.0020.0002] # OSAGE SMALL LETTER EHTSA
+104CB ; [.3A74.0020.0008] # OSAGE CAPITAL LETTER EHTSA
+104F4 ; [.3A75.0020.0002] # OSAGE SMALL LETTER TSHA
+104CC ; [.3A75.0020.0008] # OSAGE CAPITAL LETTER TSHA
+104F5 ; [.3A76.0020.0002] # OSAGE SMALL LETTER DHA
+104CD ; [.3A76.0020.0008] # OSAGE CAPITAL LETTER DHA
+104F6 ; [.3A77.0020.0002] # OSAGE SMALL LETTER U
+104CE ; [.3A77.0020.0008] # OSAGE CAPITAL LETTER U
+104F7 ; [.3A78.0020.0002] # OSAGE SMALL LETTER WA
+104CF ; [.3A78.0020.0008] # OSAGE CAPITAL LETTER WA
+104F8 ; [.3A79.0020.0002] # OSAGE SMALL LETTER KHA
+104D0 ; [.3A79.0020.0008] # OSAGE CAPITAL LETTER KHA
+104F9 ; [.3A7A.0020.0002] # OSAGE SMALL LETTER GHA
+104D1 ; [.3A7A.0020.0008] # OSAGE CAPITAL LETTER GHA
+104FA ; [.3A7B.0020.0002] # OSAGE SMALL LETTER ZA
+104D2 ; [.3A7B.0020.0008] # OSAGE CAPITAL LETTER ZA
+104FB ; [.3A7C.0020.0002] # OSAGE SMALL LETTER ZHA
+104D3 ; [.3A7C.0020.0008] # OSAGE CAPITAL LETTER ZHA
+1401 ; [.3A7D.0020.0002] # CANADIAN SYLLABICS E
+1402 ; [.3A7E.0020.0002] # CANADIAN SYLLABICS AAI
+1403 ; [.3A7F.0020.0002] # CANADIAN SYLLABICS I
+1404 ; [.3A80.0020.0002] # CANADIAN SYLLABICS II
+1405 ; [.3A81.0020.0002] # CANADIAN SYLLABICS O
+1406 ; [.3A82.0020.0002] # CANADIAN SYLLABICS OO
+1407 ; [.3A83.0020.0002] # CANADIAN SYLLABICS Y-CREE OO
+1408 ; [.3A84.0020.0002] # CANADIAN SYLLABICS CARRIER EE
+1409 ; [.3A85.0020.0002] # CANADIAN SYLLABICS CARRIER I
+140A ; [.3A86.0020.0002] # CANADIAN SYLLABICS A
+140B ; [.3A87.0020.0002] # CANADIAN SYLLABICS AA
+140C ; [.3A88.0020.0002] # CANADIAN SYLLABICS WE
+140D ; [.3A89.0020.0002] # CANADIAN SYLLABICS WEST-CREE WE
+140E ; [.3A8A.0020.0002] # CANADIAN SYLLABICS WI
+140F ; [.3A8B.0020.0002] # CANADIAN SYLLABICS WEST-CREE WI
+1410 ; [.3A8C.0020.0002] # CANADIAN SYLLABICS WII
+1411 ; [.3A8D.0020.0002] # CANADIAN SYLLABICS WEST-CREE WII
+1412 ; [.3A8E.0020.0002] # CANADIAN SYLLABICS WO
+1413 ; [.3A8F.0020.0002] # CANADIAN SYLLABICS WEST-CREE WO
+1414 ; [.3A90.0020.0002] # CANADIAN SYLLABICS WOO
+1415 ; [.3A91.0020.0002] # CANADIAN SYLLABICS WEST-CREE WOO
+1416 ; [.3A92.0020.0002] # CANADIAN SYLLABICS NASKAPI WOO
+1417 ; [.3A93.0020.0002] # CANADIAN SYLLABICS WA
+1418 ; [.3A94.0020.0002] # CANADIAN SYLLABICS WEST-CREE WA
+1419 ; [.3A95.0020.0002] # CANADIAN SYLLABICS WAA
+141A ; [.3A96.0020.0002] # CANADIAN SYLLABICS WEST-CREE WAA
+141B ; [.3A97.0020.0002] # CANADIAN SYLLABICS NASKAPI WAA
+141C ; [.3A98.0020.0002] # CANADIAN SYLLABICS AI
+141D ; [.3A99.0020.0002] # CANADIAN SYLLABICS Y-CREE W
+141E ; [.3A9A.0020.0002] # CANADIAN SYLLABICS GLOTTAL STOP
+141F ; [.3A9B.0020.0002] # CANADIAN SYLLABICS FINAL ACUTE
+1420 ; [.3A9C.0020.0002] # CANADIAN SYLLABICS FINAL GRAVE
+1421 ; [.3A9D.0020.0002] # CANADIAN SYLLABICS FINAL BOTTOM HALF RING
+1422 ; [.3A9E.0020.0002] # CANADIAN SYLLABICS FINAL TOP HALF RING
+1423 ; [.3A9F.0020.0002] # CANADIAN SYLLABICS FINAL RIGHT HALF RING
+1424 ; [.3AA0.0020.0002] # CANADIAN SYLLABICS FINAL RING
+1425 ; [.3AA1.0020.0002] # CANADIAN SYLLABICS FINAL DOUBLE ACUTE
+1426 ; [.3AA2.0020.0002] # CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES
+1427 ; [.3AA3.0020.0002] # CANADIAN SYLLABICS FINAL MIDDLE DOT
+1428 ; [.3AA4.0020.0002] # CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE
+1429 ; [.3AA5.0020.0002] # CANADIAN SYLLABICS FINAL PLUS
+142A ; [.3AA6.0020.0002] # CANADIAN SYLLABICS FINAL DOWN TACK
+142B ; [.3AA7.0020.0002] # CANADIAN SYLLABICS EN
+142C ; [.3AA8.0020.0002] # CANADIAN SYLLABICS IN
+142D ; [.3AA9.0020.0002] # CANADIAN SYLLABICS ON
+142E ; [.3AAA.0020.0002] # CANADIAN SYLLABICS AN
+142F ; [.3AAB.0020.0002] # CANADIAN SYLLABICS PE
+1430 ; [.3AAC.0020.0002] # CANADIAN SYLLABICS PAAI
+1431 ; [.3AAD.0020.0002] # CANADIAN SYLLABICS PI
+1432 ; [.3AAE.0020.0002] # CANADIAN SYLLABICS PII
+1433 ; [.3AAF.0020.0002] # CANADIAN SYLLABICS PO
+1434 ; [.3AB0.0020.0002] # CANADIAN SYLLABICS POO
+1435 ; [.3AB1.0020.0002] # CANADIAN SYLLABICS Y-CREE POO
+1436 ; [.3AB2.0020.0002] # CANADIAN SYLLABICS CARRIER HEE
+1437 ; [.3AB3.0020.0002] # CANADIAN SYLLABICS CARRIER HI
+1438 ; [.3AB4.0020.0002] # CANADIAN SYLLABICS PA
+1439 ; [.3AB5.0020.0002] # CANADIAN SYLLABICS PAA
+143A ; [.3AB6.0020.0002] # CANADIAN SYLLABICS PWE
+143B ; [.3AB7.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWE
+143C ; [.3AB8.0020.0002] # CANADIAN SYLLABICS PWI
+143D ; [.3AB9.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWI
+143E ; [.3ABA.0020.0002] # CANADIAN SYLLABICS PWII
+143F ; [.3ABB.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWII
+1440 ; [.3ABC.0020.0002] # CANADIAN SYLLABICS PWO
+1441 ; [.3ABD.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWO
+1442 ; [.3ABE.0020.0002] # CANADIAN SYLLABICS PWOO
+1443 ; [.3ABF.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWOO
+1444 ; [.3AC0.0020.0002] # CANADIAN SYLLABICS PWA
+1445 ; [.3AC1.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWA
+1446 ; [.3AC2.0020.0002] # CANADIAN SYLLABICS PWAA
+1447 ; [.3AC3.0020.0002] # CANADIAN SYLLABICS WEST-CREE PWAA
+1448 ; [.3AC4.0020.0002] # CANADIAN SYLLABICS Y-CREE PWAA
+1449 ; [.3AC5.0020.0002] # CANADIAN SYLLABICS P
+144A ; [.3AC6.0020.0002] # CANADIAN SYLLABICS WEST-CREE P
+144B ; [.3AC7.0020.0002] # CANADIAN SYLLABICS CARRIER H
+144C ; [.3AC8.0020.0002] # CANADIAN SYLLABICS TE
+144D ; [.3AC9.0020.0002] # CANADIAN SYLLABICS TAAI
+144E ; [.3ACA.0020.0002] # CANADIAN SYLLABICS TI
+144F ; [.3ACB.0020.0002] # CANADIAN SYLLABICS TII
+1450 ; [.3ACC.0020.0002] # CANADIAN SYLLABICS TO
+1451 ; [.3ACD.0020.0002] # CANADIAN SYLLABICS TOO
+1452 ; [.3ACE.0020.0002] # CANADIAN SYLLABICS Y-CREE TOO
+1453 ; [.3ACF.0020.0002] # CANADIAN SYLLABICS CARRIER DEE
+1454 ; [.3AD0.0020.0002] # CANADIAN SYLLABICS CARRIER DI
+1455 ; [.3AD1.0020.0002] # CANADIAN SYLLABICS TA
+1456 ; [.3AD2.0020.0002] # CANADIAN SYLLABICS TAA
+1457 ; [.3AD3.0020.0002] # CANADIAN SYLLABICS TWE
+1458 ; [.3AD4.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWE
+1459 ; [.3AD5.0020.0002] # CANADIAN SYLLABICS TWI
+145A ; [.3AD6.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWI
+145B ; [.3AD7.0020.0002] # CANADIAN SYLLABICS TWII
+145C ; [.3AD8.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWII
+145D ; [.3AD9.0020.0002] # CANADIAN SYLLABICS TWO
+145E ; [.3ADA.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWO
+145F ; [.3ADB.0020.0002] # CANADIAN SYLLABICS TWOO
+1460 ; [.3ADC.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWOO
+1461 ; [.3ADD.0020.0002] # CANADIAN SYLLABICS TWA
+1462 ; [.3ADE.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWA
+1463 ; [.3ADF.0020.0002] # CANADIAN SYLLABICS TWAA
+1464 ; [.3AE0.0020.0002] # CANADIAN SYLLABICS WEST-CREE TWAA
+1465 ; [.3AE1.0020.0002] # CANADIAN SYLLABICS NASKAPI TWAA
+1466 ; [.3AE2.0020.0002] # CANADIAN SYLLABICS T
+1467 ; [.3AE3.0020.0002] # CANADIAN SYLLABICS TTE
+1468 ; [.3AE4.0020.0002] # CANADIAN SYLLABICS TTI
+1469 ; [.3AE5.0020.0002] # CANADIAN SYLLABICS TTO
+146A ; [.3AE6.0020.0002] # CANADIAN SYLLABICS TTA
+146B ; [.3AE7.0020.0002] # CANADIAN SYLLABICS KE
+146C ; [.3AE8.0020.0002] # CANADIAN SYLLABICS KAAI
+146D ; [.3AE9.0020.0002] # CANADIAN SYLLABICS KI
+146E ; [.3AEA.0020.0002] # CANADIAN SYLLABICS KII
+146F ; [.3AEB.0020.0002] # CANADIAN SYLLABICS KO
+1470 ; [.3AEC.0020.0002] # CANADIAN SYLLABICS KOO
+1471 ; [.3AED.0020.0002] # CANADIAN SYLLABICS Y-CREE KOO
+1472 ; [.3AEE.0020.0002] # CANADIAN SYLLABICS KA
+1473 ; [.3AEF.0020.0002] # CANADIAN SYLLABICS KAA
+1474 ; [.3AF0.0020.0002] # CANADIAN SYLLABICS KWE
+1475 ; [.3AF1.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWE
+1476 ; [.3AF2.0020.0002] # CANADIAN SYLLABICS KWI
+1477 ; [.3AF3.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWI
+1478 ; [.3AF4.0020.0002] # CANADIAN SYLLABICS KWII
+1479 ; [.3AF5.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWII
+147A ; [.3AF6.0020.0002] # CANADIAN SYLLABICS KWO
+147B ; [.3AF7.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWO
+147C ; [.3AF8.0020.0002] # CANADIAN SYLLABICS KWOO
+147D ; [.3AF9.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWOO
+147E ; [.3AFA.0020.0002] # CANADIAN SYLLABICS KWA
+147F ; [.3AFB.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWA
+1480 ; [.3AFC.0020.0002] # CANADIAN SYLLABICS KWAA
+1481 ; [.3AFD.0020.0002] # CANADIAN SYLLABICS WEST-CREE KWAA
+1482 ; [.3AFE.0020.0002] # CANADIAN SYLLABICS NASKAPI KWAA
+1483 ; [.3AFF.0020.0002] # CANADIAN SYLLABICS K
+1484 ; [.3B00.0020.0002] # CANADIAN SYLLABICS KW
+1485 ; [.3B01.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KEH
+1486 ; [.3B02.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KIH
+1487 ; [.3B03.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KOH
+1488 ; [.3B04.0020.0002] # CANADIAN SYLLABICS SOUTH-SLAVEY KAH
+1489 ; [.3B05.0020.0002] # CANADIAN SYLLABICS CE
+148A ; [.3B06.0020.0002] # CANADIAN SYLLABICS CAAI
+148B ; [.3B07.0020.0002] # CANADIAN SYLLABICS CI
+148C ; [.3B08.0020.0002] # CANADIAN SYLLABICS CII
+148D ; [.3B09.0020.0002] # CANADIAN SYLLABICS CO
+148E ; [.3B0A.0020.0002] # CANADIAN SYLLABICS COO
+148F ; [.3B0B.0020.0002] # CANADIAN SYLLABICS Y-CREE COO
+1490 ; [.3B0C.0020.0002] # CANADIAN SYLLABICS CA
+1491 ; [.3B0D.0020.0002] # CANADIAN SYLLABICS CAA
+1492 ; [.3B0E.0020.0002] # CANADIAN SYLLABICS CWE
+1493 ; [.3B0F.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWE
+1494 ; [.3B10.0020.0002] # CANADIAN SYLLABICS CWI
+1495 ; [.3B11.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWI
+1496 ; [.3B12.0020.0002] # CANADIAN SYLLABICS CWII
+1497 ; [.3B13.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWII
+1498 ; [.3B14.0020.0002] # CANADIAN SYLLABICS CWO
+1499 ; [.3B15.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWO
+149A ; [.3B16.0020.0002] # CANADIAN SYLLABICS CWOO
+149B ; [.3B17.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWOO
+149C ; [.3B18.0020.0002] # CANADIAN SYLLABICS CWA
+149D ; [.3B19.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWA
+149E ; [.3B1A.0020.0002] # CANADIAN SYLLABICS CWAA
+149F ; [.3B1B.0020.0002] # CANADIAN SYLLABICS WEST-CREE CWAA
+14A0 ; [.3B1C.0020.0002] # CANADIAN SYLLABICS NASKAPI CWAA
+14A1 ; [.3B1D.0020.0002] # CANADIAN SYLLABICS C
+14A2 ; [.3B1E.0020.0002] # CANADIAN SYLLABICS SAYISI TH
+14A3 ; [.3B1F.0020.0002] # CANADIAN SYLLABICS ME
+14A4 ; [.3B20.0020.0002] # CANADIAN SYLLABICS MAAI
+14A5 ; [.3B21.0020.0002] # CANADIAN SYLLABICS MI
+14A6 ; [.3B22.0020.0002] # CANADIAN SYLLABICS MII
+14A7 ; [.3B23.0020.0002] # CANADIAN SYLLABICS MO
+14A8 ; [.3B24.0020.0002] # CANADIAN SYLLABICS MOO
+14A9 ; [.3B25.0020.0002] # CANADIAN SYLLABICS Y-CREE MOO
+14AA ; [.3B26.0020.0002] # CANADIAN SYLLABICS MA
+14AB ; [.3B27.0020.0002] # CANADIAN SYLLABICS MAA
+14AC ; [.3B28.0020.0002] # CANADIAN SYLLABICS MWE
+14AD ; [.3B29.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWE
+14AE ; [.3B2A.0020.0002] # CANADIAN SYLLABICS MWI
+14AF ; [.3B2B.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWI
+14B0 ; [.3B2C.0020.0002] # CANADIAN SYLLABICS MWII
+14B1 ; [.3B2D.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWII
+14B2 ; [.3B2E.0020.0002] # CANADIAN SYLLABICS MWO
+14B3 ; [.3B2F.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWO
+14B4 ; [.3B30.0020.0002] # CANADIAN SYLLABICS MWOO
+14B5 ; [.3B31.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWOO
+14B6 ; [.3B32.0020.0002] # CANADIAN SYLLABICS MWA
+14B7 ; [.3B33.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWA
+14B8 ; [.3B34.0020.0002] # CANADIAN SYLLABICS MWAA
+14B9 ; [.3B35.0020.0002] # CANADIAN SYLLABICS WEST-CREE MWAA
+14BA ; [.3B36.0020.0002] # CANADIAN SYLLABICS NASKAPI MWAA
+14BB ; [.3B37.0020.0002] # CANADIAN SYLLABICS M
+14BC ; [.3B38.0020.0002] # CANADIAN SYLLABICS WEST-CREE M
+14BD ; [.3B39.0020.0002] # CANADIAN SYLLABICS MH
+14BE ; [.3B3A.0020.0002] # CANADIAN SYLLABICS ATHAPASCAN M
+14BF ; [.3B3B.0020.0002] # CANADIAN SYLLABICS SAYISI M
+14C0 ; [.3B3C.0020.0002] # CANADIAN SYLLABICS NE
+14C1 ; [.3B3D.0020.0002] # CANADIAN SYLLABICS NAAI
+14C2 ; [.3B3E.0020.0002] # CANADIAN SYLLABICS NI
+14C3 ; [.3B3F.0020.0002] # CANADIAN SYLLABICS NII
+14C4 ; [.3B40.0020.0002] # CANADIAN SYLLABICS NO
+14C5 ; [.3B41.0020.0002] # CANADIAN SYLLABICS NOO
+14C6 ; [.3B42.0020.0002] # CANADIAN SYLLABICS Y-CREE NOO
+14C7 ; [.3B43.0020.0002] # CANADIAN SYLLABICS NA
+14C8 ; [.3B44.0020.0002] # CANADIAN SYLLABICS NAA
+14C9 ; [.3B45.0020.0002] # CANADIAN SYLLABICS NWE
+14CA ; [.3B46.0020.0002] # CANADIAN SYLLABICS WEST-CREE NWE
+14CB ; [.3B47.0020.0002] # CANADIAN SYLLABICS NWA
+14CC ; [.3B48.0020.0002] # CANADIAN SYLLABICS WEST-CREE NWA
+14CD ; [.3B49.0020.0002] # CANADIAN SYLLABICS NWAA
+14CE ; [.3B4A.0020.0002] # CANADIAN SYLLABICS WEST-CREE NWAA
+14CF ; [.3B4B.0020.0002] # CANADIAN SYLLABICS NASKAPI NWAA
+14D0 ; [.3B4C.0020.0002] # CANADIAN SYLLABICS N
+14D1 ; [.3B4D.0020.0002] # CANADIAN SYLLABICS CARRIER NG
+14D2 ; [.3B4E.0020.0002] # CANADIAN SYLLABICS NH
+14D3 ; [.3B4F.0020.0002] # CANADIAN SYLLABICS LE
+14D4 ; [.3B50.0020.0002] # CANADIAN SYLLABICS LAAI
+14D5 ; [.3B51.0020.0002] # CANADIAN SYLLABICS LI
+14D6 ; [.3B52.0020.0002] # CANADIAN SYLLABICS LII
+14D7 ; [.3B53.0020.0002] # CANADIAN SYLLABICS LO
+14D8 ; [.3B54.0020.0002] # CANADIAN SYLLABICS LOO
+14D9 ; [.3B55.0020.0002] # CANADIAN SYLLABICS Y-CREE LOO
+14DA ; [.3B56.0020.0002] # CANADIAN SYLLABICS LA
+14DB ; [.3B57.0020.0002] # CANADIAN SYLLABICS LAA
+14DC ; [.3B58.0020.0002] # CANADIAN SYLLABICS LWE
+14DD ; [.3B59.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWE
+14DE ; [.3B5A.0020.0002] # CANADIAN SYLLABICS LWI
+14DF ; [.3B5B.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWI
+14E0 ; [.3B5C.0020.0002] # CANADIAN SYLLABICS LWII
+14E1 ; [.3B5D.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWII
+14E2 ; [.3B5E.0020.0002] # CANADIAN SYLLABICS LWO
+14E3 ; [.3B5F.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWO
+14E4 ; [.3B60.0020.0002] # CANADIAN SYLLABICS LWOO
+14E5 ; [.3B61.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWOO
+14E6 ; [.3B62.0020.0002] # CANADIAN SYLLABICS LWA
+14E7 ; [.3B63.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWA
+14E8 ; [.3B64.0020.0002] # CANADIAN SYLLABICS LWAA
+14E9 ; [.3B65.0020.0002] # CANADIAN SYLLABICS WEST-CREE LWAA
+14EA ; [.3B66.0020.0002] # CANADIAN SYLLABICS L
+14EB ; [.3B67.0020.0002] # CANADIAN SYLLABICS WEST-CREE L
+14EC ; [.3B68.0020.0002] # CANADIAN SYLLABICS MEDIAL L
+14ED ; [.3B69.0020.0002] # CANADIAN SYLLABICS SE
+14EE ; [.3B6A.0020.0002] # CANADIAN SYLLABICS SAAI
+14EF ; [.3B6B.0020.0002] # CANADIAN SYLLABICS SI
+14F0 ; [.3B6C.0020.0002] # CANADIAN SYLLABICS SII
+14F1 ; [.3B6D.0020.0002] # CANADIAN SYLLABICS SO
+14F2 ; [.3B6E.0020.0002] # CANADIAN SYLLABICS SOO
+14F3 ; [.3B6F.0020.0002] # CANADIAN SYLLABICS Y-CREE SOO
+14F4 ; [.3B70.0020.0002] # CANADIAN SYLLABICS SA
+14F5 ; [.3B71.0020.0002] # CANADIAN SYLLABICS SAA
+14F6 ; [.3B72.0020.0002] # CANADIAN SYLLABICS SWE
+14F7 ; [.3B73.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWE
+14F8 ; [.3B74.0020.0002] # CANADIAN SYLLABICS SWI
+14F9 ; [.3B75.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWI
+14FA ; [.3B76.0020.0002] # CANADIAN SYLLABICS SWII
+14FB ; [.3B77.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWII
+14FC ; [.3B78.0020.0002] # CANADIAN SYLLABICS SWO
+14FD ; [.3B79.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWO
+14FE ; [.3B7A.0020.0002] # CANADIAN SYLLABICS SWOO
+14FF ; [.3B7B.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWOO
+1500 ; [.3B7C.0020.0002] # CANADIAN SYLLABICS SWA
+1501 ; [.3B7D.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWA
+1502 ; [.3B7E.0020.0002] # CANADIAN SYLLABICS SWAA
+1503 ; [.3B7F.0020.0002] # CANADIAN SYLLABICS WEST-CREE SWAA
+1504 ; [.3B80.0020.0002] # CANADIAN SYLLABICS NASKAPI SWAA
+1505 ; [.3B81.0020.0002] # CANADIAN SYLLABICS S
+1506 ; [.3B82.0020.0002] # CANADIAN SYLLABICS ATHAPASCAN S
+1507 ; [.3B83.0020.0002] # CANADIAN SYLLABICS SW
+1508 ; [.3B84.0020.0002] # CANADIAN SYLLABICS BLACKFOOT S
+1509 ; [.3B85.0020.0002] # CANADIAN SYLLABICS MOOSE-CREE SK
+150A ; [.3B86.0020.0002] # CANADIAN SYLLABICS NASKAPI SKW
+150B ; [.3B87.0020.0002] # CANADIAN SYLLABICS NASKAPI S-W
+150C ; [.3B88.0020.0002] # CANADIAN SYLLABICS NASKAPI SPWA
+150D ; [.3B89.0020.0002] # CANADIAN SYLLABICS NASKAPI STWA
+150E ; [.3B8A.0020.0002] # CANADIAN SYLLABICS NASKAPI SKWA
+150F ; [.3B8B.0020.0002] # CANADIAN SYLLABICS NASKAPI SCWA
+1510 ; [.3B8C.0020.0002] # CANADIAN SYLLABICS SHE
+1511 ; [.3B8D.0020.0002] # CANADIAN SYLLABICS SHI
+1512 ; [.3B8E.0020.0002] # CANADIAN SYLLABICS SHII
+1513 ; [.3B8F.0020.0002] # CANADIAN SYLLABICS SHO
+1514 ; [.3B90.0020.0002] # CANADIAN SYLLABICS SHOO
+1515 ; [.3B91.0020.0002] # CANADIAN SYLLABICS SHA
+1516 ; [.3B92.0020.0002] # CANADIAN SYLLABICS SHAA
+1517 ; [.3B93.0020.0002] # CANADIAN SYLLABICS SHWE
+1518 ; [.3B94.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWE
+1519 ; [.3B95.0020.0002] # CANADIAN SYLLABICS SHWI
+151A ; [.3B96.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWI
+151B ; [.3B97.0020.0002] # CANADIAN SYLLABICS SHWII
+151C ; [.3B98.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWII
+151D ; [.3B99.0020.0002] # CANADIAN SYLLABICS SHWO
+151E ; [.3B9A.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWO
+151F ; [.3B9B.0020.0002] # CANADIAN SYLLABICS SHWOO
+1520 ; [.3B9C.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWOO
+1521 ; [.3B9D.0020.0002] # CANADIAN SYLLABICS SHWA
+1522 ; [.3B9E.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWA
+1523 ; [.3B9F.0020.0002] # CANADIAN SYLLABICS SHWAA
+1524 ; [.3BA0.0020.0002] # CANADIAN SYLLABICS WEST-CREE SHWAA
+1525 ; [.3BA1.0020.0002] # CANADIAN SYLLABICS SH
+1526 ; [.3BA2.0020.0002] # CANADIAN SYLLABICS YE
+1527 ; [.3BA3.0020.0002] # CANADIAN SYLLABICS YAAI
+1528 ; [.3BA4.0020.0002] # CANADIAN SYLLABICS YI
+1529 ; [.3BA5.0020.0002] # CANADIAN SYLLABICS YII
+152A ; [.3BA6.0020.0002] # CANADIAN SYLLABICS YO
+152B ; [.3BA7.0020.0002] # CANADIAN SYLLABICS YOO
+152C ; [.3BA8.0020.0002] # CANADIAN SYLLABICS Y-CREE YOO
+152D ; [.3BA9.0020.0002] # CANADIAN SYLLABICS YA
+152E ; [.3BAA.0020.0002] # CANADIAN SYLLABICS YAA
+152F ; [.3BAB.0020.0002] # CANADIAN SYLLABICS YWE
+1530 ; [.3BAC.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWE
+1531 ; [.3BAD.0020.0002] # CANADIAN SYLLABICS YWI
+1532 ; [.3BAE.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWI
+1533 ; [.3BAF.0020.0002] # CANADIAN SYLLABICS YWII
+1534 ; [.3BB0.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWII
+1535 ; [.3BB1.0020.0002] # CANADIAN SYLLABICS YWO
+1536 ; [.3BB2.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWO
+1537 ; [.3BB3.0020.0002] # CANADIAN SYLLABICS YWOO
+1538 ; [.3BB4.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWOO
+1539 ; [.3BB5.0020.0002] # CANADIAN SYLLABICS YWA
+153A ; [.3BB6.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWA
+153B ; [.3BB7.0020.0002] # CANADIAN SYLLABICS YWAA
+153C ; [.3BB8.0020.0002] # CANADIAN SYLLABICS WEST-CREE YWAA
+153D ; [.3BB9.0020.0002] # CANADIAN SYLLABICS NASKAPI YWAA
+153E ; [.3BBA.0020.0002] # CANADIAN SYLLABICS Y
+153F ; [.3BBB.0020.0002] # CANADIAN SYLLABICS BIBLE-CREE Y
+1540 ; [.3BBC.0020.0002] # CANADIAN SYLLABICS WEST-CREE Y
+1541 ; [.3BBD.0020.0002] # CANADIAN SYLLABICS SAYISI YI
+1542 ; [.3BBE.0020.0002] # CANADIAN SYLLABICS RE
+1543 ; [.3BBF.0020.0002] # CANADIAN SYLLABICS R-CREE RE
+1544 ; [.3BC0.0020.0002] # CANADIAN SYLLABICS WEST-CREE LE
+1545 ; [.3BC1.0020.0002] # CANADIAN SYLLABICS RAAI
+1546 ; [.3BC2.0020.0002] # CANADIAN SYLLABICS RI
+1547 ; [.3BC3.0020.0002] # CANADIAN SYLLABICS RII
+1548 ; [.3BC4.0020.0002] # CANADIAN SYLLABICS RO
+1549 ; [.3BC5.0020.0002] # CANADIAN SYLLABICS ROO
+154A ; [.3BC6.0020.0002] # CANADIAN SYLLABICS WEST-CREE LO
+154B ; [.3BC7.0020.0002] # CANADIAN SYLLABICS RA
+154C ; [.3BC8.0020.0002] # CANADIAN SYLLABICS RAA
+154D ; [.3BC9.0020.0002] # CANADIAN SYLLABICS WEST-CREE LA
+154E ; [.3BCA.0020.0002] # CANADIAN SYLLABICS RWAA
+154F ; [.3BCB.0020.0002] # CANADIAN SYLLABICS WEST-CREE RWAA
+1550 ; [.3BCC.0020.0002] # CANADIAN SYLLABICS R
+1551 ; [.3BCD.0020.0002] # CANADIAN SYLLABICS WEST-CREE R
+1552 ; [.3BCE.0020.0002] # CANADIAN SYLLABICS MEDIAL R
+1553 ; [.3BCF.0020.0002] # CANADIAN SYLLABICS FE
+1554 ; [.3BD0.0020.0002] # CANADIAN SYLLABICS FAAI
+1555 ; [.3BD1.0020.0002] # CANADIAN SYLLABICS FI
+1556 ; [.3BD2.0020.0002] # CANADIAN SYLLABICS FII
+1557 ; [.3BD3.0020.0002] # CANADIAN SYLLABICS FO
+1558 ; [.3BD4.0020.0002] # CANADIAN SYLLABICS FOO
+1559 ; [.3BD5.0020.0002] # CANADIAN SYLLABICS FA
+155A ; [.3BD6.0020.0002] # CANADIAN SYLLABICS FAA
+155B ; [.3BD7.0020.0002] # CANADIAN SYLLABICS FWAA
+155C ; [.3BD8.0020.0002] # CANADIAN SYLLABICS WEST-CREE FWAA
+155D ; [.3BD9.0020.0002] # CANADIAN SYLLABICS F
+155E ; [.3BDA.0020.0002] # CANADIAN SYLLABICS THE
+155F ; [.3BDB.0020.0002] # CANADIAN SYLLABICS N-CREE THE
+1560 ; [.3BDC.0020.0002] # CANADIAN SYLLABICS THI
+1561 ; [.3BDD.0020.0002] # CANADIAN SYLLABICS N-CREE THI
+1562 ; [.3BDE.0020.0002] # CANADIAN SYLLABICS THII
+1563 ; [.3BDF.0020.0002] # CANADIAN SYLLABICS N-CREE THII
+1564 ; [.3BE0.0020.0002] # CANADIAN SYLLABICS THO
+1565 ; [.3BE1.0020.0002] # CANADIAN SYLLABICS THOO
+1566 ; [.3BE2.0020.0002] # CANADIAN SYLLABICS THA
+1567 ; [.3BE3.0020.0002] # CANADIAN SYLLABICS THAA
+1568 ; [.3BE4.0020.0002] # CANADIAN SYLLABICS THWAA
+1569 ; [.3BE5.0020.0002] # CANADIAN SYLLABICS WEST-CREE THWAA
+156A ; [.3BE6.0020.0002] # CANADIAN SYLLABICS TH
+156B ; [.3BE7.0020.0002] # CANADIAN SYLLABICS TTHE
+156C ; [.3BE8.0020.0002] # CANADIAN SYLLABICS TTHI
+156D ; [.3BE9.0020.0002] # CANADIAN SYLLABICS TTHO
+156E ; [.3BEA.0020.0002] # CANADIAN SYLLABICS TTHA
+156F ; [.3BEB.0020.0002] # CANADIAN SYLLABICS TTH
+1570 ; [.3BEC.0020.0002] # CANADIAN SYLLABICS TYE
+1571 ; [.3BED.0020.0002] # CANADIAN SYLLABICS TYI
+1572 ; [.3BEE.0020.0002] # CANADIAN SYLLABICS TYO
+1573 ; [.3BEF.0020.0002] # CANADIAN SYLLABICS TYA
+1574 ; [.3BF0.0020.0002] # CANADIAN SYLLABICS NUNAVIK HE
+1575 ; [.3BF1.0020.0002] # CANADIAN SYLLABICS NUNAVIK HI
+1576 ; [.3BF2.0020.0002] # CANADIAN SYLLABICS NUNAVIK HII
+1577 ; [.3BF3.0020.0002] # CANADIAN SYLLABICS NUNAVIK HO
+1578 ; [.3BF4.0020.0002] # CANADIAN SYLLABICS NUNAVIK HOO
+1579 ; [.3BF5.0020.0002] # CANADIAN SYLLABICS NUNAVIK HA
+157A ; [.3BF6.0020.0002] # CANADIAN SYLLABICS NUNAVIK HAA
+157B ; [.3BF7.0020.0002] # CANADIAN SYLLABICS NUNAVIK H
+157D ; [.3BF8.0020.0002] # CANADIAN SYLLABICS HK
+166F ; [.3BF9.0020.0002] # CANADIAN SYLLABICS QAI
+157E ; [.3BFA.0020.0002] # CANADIAN SYLLABICS QAAI
+157F ; [.3BFB.0020.0002] # CANADIAN SYLLABICS QI
+1580 ; [.3BFC.0020.0002] # CANADIAN SYLLABICS QII
+1581 ; [.3BFD.0020.0002] # CANADIAN SYLLABICS QO
+1582 ; [.3BFE.0020.0002] # CANADIAN SYLLABICS QOO
+1583 ; [.3BFF.0020.0002] # CANADIAN SYLLABICS QA
+1584 ; [.3C00.0020.0002] # CANADIAN SYLLABICS QAA
+1585 ; [.3C01.0020.0002] # CANADIAN SYLLABICS Q
+1586 ; [.3C02.0020.0002] # CANADIAN SYLLABICS TLHE
+1587 ; [.3C03.0020.0002] # CANADIAN SYLLABICS TLHI
+1588 ; [.3C04.0020.0002] # CANADIAN SYLLABICS TLHO
+1589 ; [.3C05.0020.0002] # CANADIAN SYLLABICS TLHA
+158A ; [.3C06.0020.0002] # CANADIAN SYLLABICS WEST-CREE RE
+158B ; [.3C07.0020.0002] # CANADIAN SYLLABICS WEST-CREE RI
+158C ; [.3C08.0020.0002] # CANADIAN SYLLABICS WEST-CREE RO
+158D ; [.3C09.0020.0002] # CANADIAN SYLLABICS WEST-CREE RA
+1670 ; [.3C0A.0020.0002] # CANADIAN SYLLABICS NGAI
+158E ; [.3C0B.0020.0002] # CANADIAN SYLLABICS NGAAI
+158F ; [.3C0C.0020.0002] # CANADIAN SYLLABICS NGI
+1590 ; [.3C0D.0020.0002] # CANADIAN SYLLABICS NGII
+1591 ; [.3C0E.0020.0002] # CANADIAN SYLLABICS NGO
+1592 ; [.3C0F.0020.0002] # CANADIAN SYLLABICS NGOO
+1593 ; [.3C10.0020.0002] # CANADIAN SYLLABICS NGA
+1594 ; [.3C11.0020.0002] # CANADIAN SYLLABICS NGAA
+1595 ; [.3C12.0020.0002] # CANADIAN SYLLABICS NG
+1671 ; [.3C13.0020.0002] # CANADIAN SYLLABICS NNGI
+1672 ; [.3C14.0020.0002] # CANADIAN SYLLABICS NNGII
+1673 ; [.3C15.0020.0002] # CANADIAN SYLLABICS NNGO
+1674 ; [.3C16.0020.0002] # CANADIAN SYLLABICS NNGOO
+1675 ; [.3C17.0020.0002] # CANADIAN SYLLABICS NNGA
+1676 ; [.3C18.0020.0002] # CANADIAN SYLLABICS NNGAA
+1596 ; [.3C19.0020.0002] # CANADIAN SYLLABICS NNG
+1597 ; [.3C1A.0020.0002] # CANADIAN SYLLABICS SAYISI SHE
+1598 ; [.3C1B.0020.0002] # CANADIAN SYLLABICS SAYISI SHI
+1599 ; [.3C1C.0020.0002] # CANADIAN SYLLABICS SAYISI SHO
+159A ; [.3C1D.0020.0002] # CANADIAN SYLLABICS SAYISI SHA
+159B ; [.3C1E.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THE
+159C ; [.3C1F.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THI
+159D ; [.3C20.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THO
+159E ; [.3C21.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THA
+159F ; [.3C22.0020.0002] # CANADIAN SYLLABICS WOODS-CREE TH
+15A0 ; [.3C23.0020.0002] # CANADIAN SYLLABICS LHI
+15A1 ; [.3C24.0020.0002] # CANADIAN SYLLABICS LHII
+15A2 ; [.3C25.0020.0002] # CANADIAN SYLLABICS LHO
+15A3 ; [.3C26.0020.0002] # CANADIAN SYLLABICS LHOO
+15A4 ; [.3C27.0020.0002] # CANADIAN SYLLABICS LHA
+15A5 ; [.3C28.0020.0002] # CANADIAN SYLLABICS LHAA
+15A6 ; [.3C29.0020.0002] # CANADIAN SYLLABICS LH
+157C ; [.3C2A.0020.0002] # CANADIAN SYLLABICS NUNAVUT H
+15A7 ; [.3C2B.0020.0002] # CANADIAN SYLLABICS TH-CREE THE
+15A8 ; [.3C2C.0020.0002] # CANADIAN SYLLABICS TH-CREE THI
+15A9 ; [.3C2D.0020.0002] # CANADIAN SYLLABICS TH-CREE THII
+15AA ; [.3C2E.0020.0002] # CANADIAN SYLLABICS TH-CREE THO
+15AB ; [.3C2F.0020.0002] # CANADIAN SYLLABICS TH-CREE THOO
+15AC ; [.3C30.0020.0002] # CANADIAN SYLLABICS TH-CREE THA
+15AD ; [.3C31.0020.0002] # CANADIAN SYLLABICS TH-CREE THAA
+15AE ; [.3C32.0020.0002] # CANADIAN SYLLABICS TH-CREE TH
+15AF ; [.3C33.0020.0002] # CANADIAN SYLLABICS AIVILIK B
+15B0 ; [.3C34.0020.0002] # CANADIAN SYLLABICS BLACKFOOT E
+15B1 ; [.3C35.0020.0002] # CANADIAN SYLLABICS BLACKFOOT I
+15B2 ; [.3C36.0020.0002] # CANADIAN SYLLABICS BLACKFOOT O
+15B3 ; [.3C37.0020.0002] # CANADIAN SYLLABICS BLACKFOOT A
+15B4 ; [.3C38.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WE
+15B5 ; [.3C39.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WI
+15B6 ; [.3C3A.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WO
+15B7 ; [.3C3B.0020.0002] # CANADIAN SYLLABICS BLACKFOOT WA
+15B8 ; [.3C3C.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NE
+15B9 ; [.3C3D.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NI
+15BA ; [.3C3E.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NO
+15BB ; [.3C3F.0020.0002] # CANADIAN SYLLABICS BLACKFOOT NA
+15BC ; [.3C40.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KE
+15BD ; [.3C41.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KI
+15BE ; [.3C42.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KO
+15BF ; [.3C43.0020.0002] # CANADIAN SYLLABICS BLACKFOOT KA
+15C0 ; [.3C44.0020.0002] # CANADIAN SYLLABICS SAYISI HE
+15C1 ; [.3C45.0020.0002] # CANADIAN SYLLABICS SAYISI HI
+15C2 ; [.3C46.0020.0002] # CANADIAN SYLLABICS SAYISI HO
+15C3 ; [.3C47.0020.0002] # CANADIAN SYLLABICS SAYISI HA
+15C4 ; [.3C48.0020.0002] # CANADIAN SYLLABICS CARRIER GHU
+15C5 ; [.3C49.0020.0002] # CANADIAN SYLLABICS CARRIER GHO
+15C6 ; [.3C4A.0020.0002] # CANADIAN SYLLABICS CARRIER GHE
+15C7 ; [.3C4B.0020.0002] # CANADIAN SYLLABICS CARRIER GHEE
+15C8 ; [.3C4C.0020.0002] # CANADIAN SYLLABICS CARRIER GHI
+15C9 ; [.3C4D.0020.0002] # CANADIAN SYLLABICS CARRIER GHA
+15CA ; [.3C4E.0020.0002] # CANADIAN SYLLABICS CARRIER RU
+15CB ; [.3C4F.0020.0002] # CANADIAN SYLLABICS CARRIER RO
+15CC ; [.3C50.0020.0002] # CANADIAN SYLLABICS CARRIER RE
+15CD ; [.3C51.0020.0002] # CANADIAN SYLLABICS CARRIER REE
+15CE ; [.3C52.0020.0002] # CANADIAN SYLLABICS CARRIER RI
+15CF ; [.3C53.0020.0002] # CANADIAN SYLLABICS CARRIER RA
+15D0 ; [.3C54.0020.0002] # CANADIAN SYLLABICS CARRIER WU
+15D1 ; [.3C55.0020.0002] # CANADIAN SYLLABICS CARRIER WO
+15D2 ; [.3C56.0020.0002] # CANADIAN SYLLABICS CARRIER WE
+15D3 ; [.3C57.0020.0002] # CANADIAN SYLLABICS CARRIER WEE
+15D4 ; [.3C58.0020.0002] # CANADIAN SYLLABICS CARRIER WI
+15D5 ; [.3C59.0020.0002] # CANADIAN SYLLABICS CARRIER WA
+15D6 ; [.3C5A.0020.0002] # CANADIAN SYLLABICS CARRIER HWU
+15D7 ; [.3C5B.0020.0002] # CANADIAN SYLLABICS CARRIER HWO
+15D8 ; [.3C5C.0020.0002] # CANADIAN SYLLABICS CARRIER HWE
+15D9 ; [.3C5D.0020.0002] # CANADIAN SYLLABICS CARRIER HWEE
+15DA ; [.3C5E.0020.0002] # CANADIAN SYLLABICS CARRIER HWI
+15DB ; [.3C5F.0020.0002] # CANADIAN SYLLABICS CARRIER HWA
+15DC ; [.3C60.0020.0002] # CANADIAN SYLLABICS CARRIER THU
+15DD ; [.3C61.0020.0002] # CANADIAN SYLLABICS CARRIER THO
+15DE ; [.3C62.0020.0002] # CANADIAN SYLLABICS CARRIER THE
+15DF ; [.3C63.0020.0002] # CANADIAN SYLLABICS CARRIER THEE
+15E0 ; [.3C64.0020.0002] # CANADIAN SYLLABICS CARRIER THI
+15E1 ; [.3C65.0020.0002] # CANADIAN SYLLABICS CARRIER THA
+15E2 ; [.3C66.0020.0002] # CANADIAN SYLLABICS CARRIER TTU
+15E3 ; [.3C67.0020.0002] # CANADIAN SYLLABICS CARRIER TTO
+15E4 ; [.3C68.0020.0002] # CANADIAN SYLLABICS CARRIER TTE
+15E5 ; [.3C69.0020.0002] # CANADIAN SYLLABICS CARRIER TTEE
+15E6 ; [.3C6A.0020.0002] # CANADIAN SYLLABICS CARRIER TTI
+15E7 ; [.3C6B.0020.0002] # CANADIAN SYLLABICS CARRIER TTA
+15E8 ; [.3C6C.0020.0002] # CANADIAN SYLLABICS CARRIER PU
+15E9 ; [.3C6D.0020.0002] # CANADIAN SYLLABICS CARRIER PO
+15EA ; [.3C6E.0020.0002] # CANADIAN SYLLABICS CARRIER PE
+15EB ; [.3C6F.0020.0002] # CANADIAN SYLLABICS CARRIER PEE
+15EC ; [.3C70.0020.0002] # CANADIAN SYLLABICS CARRIER PI
+15ED ; [.3C71.0020.0002] # CANADIAN SYLLABICS CARRIER PA
+15EE ; [.3C72.0020.0002] # CANADIAN SYLLABICS CARRIER P
+15EF ; [.3C73.0020.0002] # CANADIAN SYLLABICS CARRIER GU
+15F0 ; [.3C74.0020.0002] # CANADIAN SYLLABICS CARRIER GO
+15F1 ; [.3C75.0020.0002] # CANADIAN SYLLABICS CARRIER GE
+15F2 ; [.3C76.0020.0002] # CANADIAN SYLLABICS CARRIER GEE
+15F3 ; [.3C77.0020.0002] # CANADIAN SYLLABICS CARRIER GI
+15F4 ; [.3C78.0020.0002] # CANADIAN SYLLABICS CARRIER GA
+15F5 ; [.3C79.0020.0002] # CANADIAN SYLLABICS CARRIER KHU
+15F6 ; [.3C7A.0020.0002] # CANADIAN SYLLABICS CARRIER KHO
+15F7 ; [.3C7B.0020.0002] # CANADIAN SYLLABICS CARRIER KHE
+15F8 ; [.3C7C.0020.0002] # CANADIAN SYLLABICS CARRIER KHEE
+15F9 ; [.3C7D.0020.0002] # CANADIAN SYLLABICS CARRIER KHI
+15FA ; [.3C7E.0020.0002] # CANADIAN SYLLABICS CARRIER KHA
+15FB ; [.3C7F.0020.0002] # CANADIAN SYLLABICS CARRIER KKU
+15FC ; [.3C80.0020.0002] # CANADIAN SYLLABICS CARRIER KKO
+15FD ; [.3C81.0020.0002] # CANADIAN SYLLABICS CARRIER KKE
+15FE ; [.3C82.0020.0002] # CANADIAN SYLLABICS CARRIER KKEE
+15FF ; [.3C83.0020.0002] # CANADIAN SYLLABICS CARRIER KKI
+1600 ; [.3C84.0020.0002] # CANADIAN SYLLABICS CARRIER KKA
+1601 ; [.3C85.0020.0002] # CANADIAN SYLLABICS CARRIER KK
+1602 ; [.3C86.0020.0002] # CANADIAN SYLLABICS CARRIER NU
+1603 ; [.3C87.0020.0002] # CANADIAN SYLLABICS CARRIER NO
+1604 ; [.3C88.0020.0002] # CANADIAN SYLLABICS CARRIER NE
+1605 ; [.3C89.0020.0002] # CANADIAN SYLLABICS CARRIER NEE
+1606 ; [.3C8A.0020.0002] # CANADIAN SYLLABICS CARRIER NI
+1607 ; [.3C8B.0020.0002] # CANADIAN SYLLABICS CARRIER NA
+1608 ; [.3C8C.0020.0002] # CANADIAN SYLLABICS CARRIER MU
+1609 ; [.3C8D.0020.0002] # CANADIAN SYLLABICS CARRIER MO
+160A ; [.3C8E.0020.0002] # CANADIAN SYLLABICS CARRIER ME
+160B ; [.3C8F.0020.0002] # CANADIAN SYLLABICS CARRIER MEE
+160C ; [.3C90.0020.0002] # CANADIAN SYLLABICS CARRIER MI
+160D ; [.3C91.0020.0002] # CANADIAN SYLLABICS CARRIER MA
+160E ; [.3C92.0020.0002] # CANADIAN SYLLABICS CARRIER YU
+160F ; [.3C93.0020.0002] # CANADIAN SYLLABICS CARRIER YO
+1610 ; [.3C94.0020.0002] # CANADIAN SYLLABICS CARRIER YE
+1611 ; [.3C95.0020.0002] # CANADIAN SYLLABICS CARRIER YEE
+1612 ; [.3C96.0020.0002] # CANADIAN SYLLABICS CARRIER YI
+1613 ; [.3C97.0020.0002] # CANADIAN SYLLABICS CARRIER YA
+1614 ; [.3C98.0020.0002] # CANADIAN SYLLABICS CARRIER JU
+1615 ; [.3C99.0020.0002] # CANADIAN SYLLABICS SAYISI JU
+1616 ; [.3C9A.0020.0002] # CANADIAN SYLLABICS CARRIER JO
+1617 ; [.3C9B.0020.0002] # CANADIAN SYLLABICS CARRIER JE
+1618 ; [.3C9C.0020.0002] # CANADIAN SYLLABICS CARRIER JEE
+1619 ; [.3C9D.0020.0002] # CANADIAN SYLLABICS CARRIER JI
+161A ; [.3C9E.0020.0002] # CANADIAN SYLLABICS SAYISI JI
+161B ; [.3C9F.0020.0002] # CANADIAN SYLLABICS CARRIER JA
+161C ; [.3CA0.0020.0002] # CANADIAN SYLLABICS CARRIER JJU
+161D ; [.3CA1.0020.0002] # CANADIAN SYLLABICS CARRIER JJO
+161E ; [.3CA2.0020.0002] # CANADIAN SYLLABICS CARRIER JJE
+161F ; [.3CA3.0020.0002] # CANADIAN SYLLABICS CARRIER JJEE
+1620 ; [.3CA4.0020.0002] # CANADIAN SYLLABICS CARRIER JJI
+1621 ; [.3CA5.0020.0002] # CANADIAN SYLLABICS CARRIER JJA
+1622 ; [.3CA6.0020.0002] # CANADIAN SYLLABICS CARRIER LU
+1623 ; [.3CA7.0020.0002] # CANADIAN SYLLABICS CARRIER LO
+1624 ; [.3CA8.0020.0002] # CANADIAN SYLLABICS CARRIER LE
+1625 ; [.3CA9.0020.0002] # CANADIAN SYLLABICS CARRIER LEE
+1626 ; [.3CAA.0020.0002] # CANADIAN SYLLABICS CARRIER LI
+1627 ; [.3CAB.0020.0002] # CANADIAN SYLLABICS CARRIER LA
+1628 ; [.3CAC.0020.0002] # CANADIAN SYLLABICS CARRIER DLU
+1629 ; [.3CAD.0020.0002] # CANADIAN SYLLABICS CARRIER DLO
+162A ; [.3CAE.0020.0002] # CANADIAN SYLLABICS CARRIER DLE
+162B ; [.3CAF.0020.0002] # CANADIAN SYLLABICS CARRIER DLEE
+162C ; [.3CB0.0020.0002] # CANADIAN SYLLABICS CARRIER DLI
+162D ; [.3CB1.0020.0002] # CANADIAN SYLLABICS CARRIER DLA
+162E ; [.3CB2.0020.0002] # CANADIAN SYLLABICS CARRIER LHU
+162F ; [.3CB3.0020.0002] # CANADIAN SYLLABICS CARRIER LHO
+1630 ; [.3CB4.0020.0002] # CANADIAN SYLLABICS CARRIER LHE
+1631 ; [.3CB5.0020.0002] # CANADIAN SYLLABICS CARRIER LHEE
+1632 ; [.3CB6.0020.0002] # CANADIAN SYLLABICS CARRIER LHI
+1633 ; [.3CB7.0020.0002] # CANADIAN SYLLABICS CARRIER LHA
+1634 ; [.3CB8.0020.0002] # CANADIAN SYLLABICS CARRIER TLHU
+1635 ; [.3CB9.0020.0002] # CANADIAN SYLLABICS CARRIER TLHO
+1636 ; [.3CBA.0020.0002] # CANADIAN SYLLABICS CARRIER TLHE
+1637 ; [.3CBB.0020.0002] # CANADIAN SYLLABICS CARRIER TLHEE
+1638 ; [.3CBC.0020.0002] # CANADIAN SYLLABICS CARRIER TLHI
+1639 ; [.3CBD.0020.0002] # CANADIAN SYLLABICS CARRIER TLHA
+163A ; [.3CBE.0020.0002] # CANADIAN SYLLABICS CARRIER TLU
+163B ; [.3CBF.0020.0002] # CANADIAN SYLLABICS CARRIER TLO
+163C ; [.3CC0.0020.0002] # CANADIAN SYLLABICS CARRIER TLE
+163D ; [.3CC1.0020.0002] # CANADIAN SYLLABICS CARRIER TLEE
+163E ; [.3CC2.0020.0002] # CANADIAN SYLLABICS CARRIER TLI
+163F ; [.3CC3.0020.0002] # CANADIAN SYLLABICS CARRIER TLA
+1640 ; [.3CC4.0020.0002] # CANADIAN SYLLABICS CARRIER ZU
+1641 ; [.3CC5.0020.0002] # CANADIAN SYLLABICS CARRIER ZO
+1642 ; [.3CC6.0020.0002] # CANADIAN SYLLABICS CARRIER ZE
+1643 ; [.3CC7.0020.0002] # CANADIAN SYLLABICS CARRIER ZEE
+1644 ; [.3CC8.0020.0002] # CANADIAN SYLLABICS CARRIER ZI
+1645 ; [.3CC9.0020.0002] # CANADIAN SYLLABICS CARRIER ZA
+1646 ; [.3CCA.0020.0002] # CANADIAN SYLLABICS CARRIER Z
+1647 ; [.3CCB.0020.0002] # CANADIAN SYLLABICS CARRIER INITIAL Z
+1648 ; [.3CCC.0020.0002] # CANADIAN SYLLABICS CARRIER DZU
+1649 ; [.3CCD.0020.0002] # CANADIAN SYLLABICS CARRIER DZO
+164A ; [.3CCE.0020.0002] # CANADIAN SYLLABICS CARRIER DZE
+164B ; [.3CCF.0020.0002] # CANADIAN SYLLABICS CARRIER DZEE
+164C ; [.3CD0.0020.0002] # CANADIAN SYLLABICS CARRIER DZI
+164D ; [.3CD1.0020.0002] # CANADIAN SYLLABICS CARRIER DZA
+164E ; [.3CD2.0020.0002] # CANADIAN SYLLABICS CARRIER SU
+164F ; [.3CD3.0020.0002] # CANADIAN SYLLABICS CARRIER SO
+1650 ; [.3CD4.0020.0002] # CANADIAN SYLLABICS CARRIER SE
+1651 ; [.3CD5.0020.0002] # CANADIAN SYLLABICS CARRIER SEE
+1652 ; [.3CD6.0020.0002] # CANADIAN SYLLABICS CARRIER SI
+1653 ; [.3CD7.0020.0002] # CANADIAN SYLLABICS CARRIER SA
+1654 ; [.3CD8.0020.0002] # CANADIAN SYLLABICS CARRIER SHU
+1655 ; [.3CD9.0020.0002] # CANADIAN SYLLABICS CARRIER SHO
+1656 ; [.3CDA.0020.0002] # CANADIAN SYLLABICS CARRIER SHE
+1657 ; [.3CDB.0020.0002] # CANADIAN SYLLABICS CARRIER SHEE
+1658 ; [.3CDC.0020.0002] # CANADIAN SYLLABICS CARRIER SHI
+1659 ; [.3CDD.0020.0002] # CANADIAN SYLLABICS CARRIER SHA
+165A ; [.3CDE.0020.0002] # CANADIAN SYLLABICS CARRIER SH
+165B ; [.3CDF.0020.0002] # CANADIAN SYLLABICS CARRIER TSU
+165C ; [.3CE0.0020.0002] # CANADIAN SYLLABICS CARRIER TSO
+165D ; [.3CE1.0020.0002] # CANADIAN SYLLABICS CARRIER TSE
+165E ; [.3CE2.0020.0002] # CANADIAN SYLLABICS CARRIER TSEE
+165F ; [.3CE3.0020.0002] # CANADIAN SYLLABICS CARRIER TSI
+1660 ; [.3CE4.0020.0002] # CANADIAN SYLLABICS CARRIER TSA
+1661 ; [.3CE5.0020.0002] # CANADIAN SYLLABICS CARRIER CHU
+1662 ; [.3CE6.0020.0002] # CANADIAN SYLLABICS CARRIER CHO
+1663 ; [.3CE7.0020.0002] # CANADIAN SYLLABICS CARRIER CHE
+1664 ; [.3CE8.0020.0002] # CANADIAN SYLLABICS CARRIER CHEE
+1665 ; [.3CE9.0020.0002] # CANADIAN SYLLABICS CARRIER CHI
+1666 ; [.3CEA.0020.0002] # CANADIAN SYLLABICS CARRIER CHA
+1667 ; [.3CEB.0020.0002] # CANADIAN SYLLABICS CARRIER TTSU
+1668 ; [.3CEC.0020.0002] # CANADIAN SYLLABICS CARRIER TTSO
+1669 ; [.3CED.0020.0002] # CANADIAN SYLLABICS CARRIER TTSE
+166A ; [.3CEE.0020.0002] # CANADIAN SYLLABICS CARRIER TTSEE
+166B ; [.3CEF.0020.0002] # CANADIAN SYLLABICS CARRIER TTSI
+166C ; [.3CF0.0020.0002] # CANADIAN SYLLABICS CARRIER TTSA
+1677 ; [.3CF1.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWEE
+1678 ; [.3CF2.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWI
+1679 ; [.3CF3.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWII
+167A ; [.3CF4.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWO
+167B ; [.3CF5.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWOO
+167C ; [.3CF6.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWA
+167D ; [.3CF7.0020.0002] # CANADIAN SYLLABICS WOODS-CREE THWAA
+167E ; [.3CF8.0020.0002] # CANADIAN SYLLABICS WOODS-CREE FINAL TH
+167F ; [.3CF9.0020.0002] # CANADIAN SYLLABICS BLACKFOOT W
+18B0 ; [.3CFA.0020.0002] # CANADIAN SYLLABICS OY
+18B1 ; [.3CFB.0020.0002] # CANADIAN SYLLABICS AY
+18B2 ; [.3CFC.0020.0002] # CANADIAN SYLLABICS AAY
+18B3 ; [.3CFD.0020.0002] # CANADIAN SYLLABICS WAY
+18B4 ; [.3CFE.0020.0002] # CANADIAN SYLLABICS POY
+18B5 ; [.3CFF.0020.0002] # CANADIAN SYLLABICS PAY
+18B6 ; [.3D00.0020.0002] # CANADIAN SYLLABICS PWOY
+18B7 ; [.3D01.0020.0002] # CANADIAN SYLLABICS TAY
+18B8 ; [.3D02.0020.0002] # CANADIAN SYLLABICS KAY
+18B9 ; [.3D03.0020.0002] # CANADIAN SYLLABICS KWAY
+18BA ; [.3D04.0020.0002] # CANADIAN SYLLABICS MAY
+18BB ; [.3D05.0020.0002] # CANADIAN SYLLABICS NOY
+18BC ; [.3D06.0020.0002] # CANADIAN SYLLABICS NAY
+18BD ; [.3D07.0020.0002] # CANADIAN SYLLABICS LAY
+18BE ; [.3D08.0020.0002] # CANADIAN SYLLABICS SOY
+18BF ; [.3D09.0020.0002] # CANADIAN SYLLABICS SAY
+18C0 ; [.3D0A.0020.0002] # CANADIAN SYLLABICS SHOY
+18C1 ; [.3D0B.0020.0002] # CANADIAN SYLLABICS SHAY
+18C2 ; [.3D0C.0020.0002] # CANADIAN SYLLABICS SHWOY
+18C3 ; [.3D0D.0020.0002] # CANADIAN SYLLABICS YOY
+18C4 ; [.3D0E.0020.0002] # CANADIAN SYLLABICS YAY
+18C5 ; [.3D0F.0020.0002] # CANADIAN SYLLABICS RAY
+18C6 ; [.3D10.0020.0002] # CANADIAN SYLLABICS NWI
+18C7 ; [.3D11.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWI
+18C8 ; [.3D12.0020.0002] # CANADIAN SYLLABICS NWII
+18C9 ; [.3D13.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWII
+18CA ; [.3D14.0020.0002] # CANADIAN SYLLABICS NWO
+18CB ; [.3D15.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWO
+18CC ; [.3D16.0020.0002] # CANADIAN SYLLABICS NWOO
+18CD ; [.3D17.0020.0002] # CANADIAN SYLLABICS OJIBWAY NWOO
+18CE ; [.3D18.0020.0002] # CANADIAN SYLLABICS RWEE
+18CF ; [.3D19.0020.0002] # CANADIAN SYLLABICS RWI
+18D0 ; [.3D1A.0020.0002] # CANADIAN SYLLABICS RWII
+18D1 ; [.3D1B.0020.0002] # CANADIAN SYLLABICS RWO
+18D2 ; [.3D1C.0020.0002] # CANADIAN SYLLABICS RWOO
+18D3 ; [.3D1D.0020.0002] # CANADIAN SYLLABICS RWA
+18D4 ; [.3D1E.0020.0002] # CANADIAN SYLLABICS OJIBWAY P
+18D5 ; [.3D1F.0020.0002] # CANADIAN SYLLABICS OJIBWAY T
+18D6 ; [.3D20.0020.0002] # CANADIAN SYLLABICS OJIBWAY K
+18D7 ; [.3D21.0020.0002] # CANADIAN SYLLABICS OJIBWAY C
+18D8 ; [.3D22.0020.0002] # CANADIAN SYLLABICS OJIBWAY M
+18D9 ; [.3D23.0020.0002] # CANADIAN SYLLABICS OJIBWAY N
+18DA ; [.3D24.0020.0002] # CANADIAN SYLLABICS OJIBWAY S
+18DB ; [.3D25.0020.0002] # CANADIAN SYLLABICS OJIBWAY SH
+18DC ; [.3D26.0020.0002] # CANADIAN SYLLABICS EASTERN W
+18DD ; [.3D27.0020.0002] # CANADIAN SYLLABICS WESTERN W
+18DE ; [.3D28.0020.0002] # CANADIAN SYLLABICS FINAL SMALL RING
+18DF ; [.3D29.0020.0002] # CANADIAN SYLLABICS FINAL RAISED DOT
+18E0 ; [.3D2A.0020.0002] # CANADIAN SYLLABICS R-CREE RWE
+18E1 ; [.3D2B.0020.0002] # CANADIAN SYLLABICS WEST-CREE LOO
+18E2 ; [.3D2C.0020.0002] # CANADIAN SYLLABICS WEST-CREE LAA
+18E3 ; [.3D2D.0020.0002] # CANADIAN SYLLABICS THWE
+18E4 ; [.3D2E.0020.0002] # CANADIAN SYLLABICS THWA
+18E5 ; [.3D2F.0020.0002] # CANADIAN SYLLABICS TTHWE
+18E6 ; [.3D30.0020.0002] # CANADIAN SYLLABICS TTHOO
+18E7 ; [.3D31.0020.0002] # CANADIAN SYLLABICS TTHAA
+18E8 ; [.3D32.0020.0002] # CANADIAN SYLLABICS TLHWE
+18E9 ; [.3D33.0020.0002] # CANADIAN SYLLABICS TLHOO
+18EA ; [.3D34.0020.0002] # CANADIAN SYLLABICS SAYISI SHWE
+18EB ; [.3D35.0020.0002] # CANADIAN SYLLABICS SAYISI SHOO
+18EC ; [.3D36.0020.0002] # CANADIAN SYLLABICS SAYISI HOO
+18ED ; [.3D37.0020.0002] # CANADIAN SYLLABICS CARRIER GWU
+18EE ; [.3D38.0020.0002] # CANADIAN SYLLABICS CARRIER DENE GEE
+18EF ; [.3D39.0020.0002] # CANADIAN SYLLABICS CARRIER GAA
+18F0 ; [.3D3A.0020.0002] # CANADIAN SYLLABICS CARRIER GWA
+18F1 ; [.3D3B.0020.0002] # CANADIAN SYLLABICS SAYISI JUU
+18F2 ; [.3D3C.0020.0002] # CANADIAN SYLLABICS CARRIER JWA
+18F3 ; [.3D3D.0020.0002] # CANADIAN SYLLABICS BEAVER DENE L
+18F4 ; [.3D3E.0020.0002] # CANADIAN SYLLABICS BEAVER DENE R
+18F5 ; [.3D3F.0020.0002] # CANADIAN SYLLABICS CARRIER DENTAL S
+11AB0 ; [.3D40.0020.0002] # CANADIAN SYLLABICS NATTILIK HI
+11AB1 ; [.3D41.0020.0002] # CANADIAN SYLLABICS NATTILIK HII
+11AB2 ; [.3D42.0020.0002] # CANADIAN SYLLABICS NATTILIK HO
+11AB3 ; [.3D43.0020.0002] # CANADIAN SYLLABICS NATTILIK HOO
+11AB4 ; [.3D44.0020.0002] # CANADIAN SYLLABICS NATTILIK HA
+11AB5 ; [.3D45.0020.0002] # CANADIAN SYLLABICS NATTILIK HAA
+11AB6 ; [.3D46.0020.0002] # CANADIAN SYLLABICS NATTILIK SHRI
+11AB7 ; [.3D47.0020.0002] # CANADIAN SYLLABICS NATTILIK SHRII
+11AB8 ; [.3D48.0020.0002] # CANADIAN SYLLABICS NATTILIK SHRO
+11AB9 ; [.3D49.0020.0002] # CANADIAN SYLLABICS NATTILIK SHROO
+11ABA ; [.3D4A.0020.0002] # CANADIAN SYLLABICS NATTILIK SHRA
+11ABB ; [.3D4B.0020.0002] # CANADIAN SYLLABICS NATTILIK SHRAA
+11ABC ; [.3D4C.0020.0002] # CANADIAN SYLLABICS SPE
+11ABD ; [.3D4D.0020.0002] # CANADIAN SYLLABICS SPI
+11ABE ; [.3D4E.0020.0002] # CANADIAN SYLLABICS SPO
+11ABF ; [.3D4F.0020.0002] # CANADIAN SYLLABICS SPA
+1681 ; [.3D50.0020.0002] # OGHAM LETTER BEITH
+1682 ; [.3D51.0020.0002] # OGHAM LETTER LUIS
+1683 ; [.3D52.0020.0002] # OGHAM LETTER FEARN
+1684 ; [.3D53.0020.0002] # OGHAM LETTER SAIL
+1685 ; [.3D54.0020.0002] # OGHAM LETTER NION
+1686 ; [.3D55.0020.0002] # OGHAM LETTER UATH
+1687 ; [.3D56.0020.0002] # OGHAM LETTER DAIR
+1688 ; [.3D57.0020.0002] # OGHAM LETTER TINNE
+1689 ; [.3D58.0020.0002] # OGHAM LETTER COLL
+168A ; [.3D59.0020.0002] # OGHAM LETTER CEIRT
+168B ; [.3D5A.0020.0002] # OGHAM LETTER MUIN
+168C ; [.3D5B.0020.0002] # OGHAM LETTER GORT
+168D ; [.3D5C.0020.0002] # OGHAM LETTER NGEADAL
+168E ; [.3D5D.0020.0002] # OGHAM LETTER STRAIF
+168F ; [.3D5E.0020.0002] # OGHAM LETTER RUIS
+1690 ; [.3D5F.0020.0002] # OGHAM LETTER AILM
+1691 ; [.3D60.0020.0002] # OGHAM LETTER ONN
+1692 ; [.3D61.0020.0002] # OGHAM LETTER UR
+1693 ; [.3D62.0020.0002] # OGHAM LETTER EADHADH
+1694 ; [.3D63.0020.0002] # OGHAM LETTER IODHADH
+1695 ; [.3D64.0020.0002] # OGHAM LETTER EABHADH
+1696 ; [.3D65.0020.0002] # OGHAM LETTER OR
+1697 ; [.3D66.0020.0002] # OGHAM LETTER UILLEANN
+1698 ; [.3D67.0020.0002] # OGHAM LETTER IFIN
+1699 ; [.3D68.0020.0002] # OGHAM LETTER EAMHANCHOLL
+169A ; [.3D69.0020.0002] # OGHAM LETTER PEITH
+16A0 ; [.3D6A.0020.0002] # RUNIC LETTER FEHU FEOH FE F
+16A1 ; [.3D6A.0020.0004][.0000.0118.0004] # RUNIC LETTER V
+16A2 ; [.3D6B.0020.0002] # RUNIC LETTER URUZ UR U
+16A4 ; [.3D6B.0020.0004][.0000.0118.0004] # RUNIC LETTER Y
+16A5 ; [.3D6B.0020.0004][.0000.0119.0004] # RUNIC LETTER W
+16A6 ; [.3D6C.0020.0002] # RUNIC LETTER THURISAZ THURS THORN
+16A7 ; [.3D6C.0020.0004][.0000.0118.0004] # RUNIC LETTER ETH
+16F0 ; [.3D6C.0020.0004][.3D6C.0020.0004] # RUNIC BELGTHOR SYMBOL
+16A8 ; [.3D6D.0020.0002] # RUNIC LETTER ANSUZ A
+16A9 ; [.3D6D.0020.0004][.0000.0118.0004] # RUNIC LETTER OS O
+16AC ; [.3D6D.0020.0004][.0000.0119.0004] # RUNIC LETTER LONG-BRANCH-OSS O
+16AD ; [.3D6D.0020.0004][.0000.011A.0004] # RUNIC LETTER SHORT-TWIG-OSS O
+16AE ; [.3D6D.0020.0004][.0000.011B.0004] # RUNIC LETTER O
+16F4 ; [.3D6E.0020.0002] # RUNIC LETTER FRANKS CASKET OS
+16AF ; [.3D6F.0020.0002] # RUNIC LETTER OE
+16B0 ; [.3D70.0020.0002] # RUNIC LETTER ON
+16B1 ; [.3D71.0020.0002] # RUNIC LETTER RAIDO RAD REID R
+16B2 ; [.3D72.0020.0002] # RUNIC LETTER KAUNA
+16B3 ; [.3D72.0020.0004][.0000.0118.0004] # RUNIC LETTER CEN
+16B4 ; [.3D72.0020.0004][.0000.0119.0004] # RUNIC LETTER KAUN K
+16B5 ; [.3D72.0020.0004][.0000.011A.0004] # RUNIC LETTER G
+16B6 ; [.3D72.0020.0004][.0000.011B.0004] # RUNIC LETTER ENG
+16F1 ; [.3D73.0020.0002] # RUNIC LETTER K
+16B7 ; [.3D74.0020.0002] # RUNIC LETTER GEBO GYFU G
+16B9 ; [.3D75.0020.0002] # RUNIC LETTER WUNJO WYNN W
+16E9 ; [.3D75.0020.0004][.0000.0118.0004] # RUNIC LETTER Q
+16BA ; [.3D76.0020.0002] # RUNIC LETTER HAGLAZ H
+16BB ; [.3D76.0020.0004][.0000.0118.0004] # RUNIC LETTER HAEGL H
+16BC ; [.3D76.0020.0004][.0000.0119.0004] # RUNIC LETTER LONG-BRANCH-HAGALL H
+16BD ; [.3D76.0020.0004][.0000.011A.0004] # RUNIC LETTER SHORT-TWIG-HAGALL H
+16BE ; [.3D77.0020.0002] # RUNIC LETTER NAUDIZ NYD NAUD N
+16BF ; [.3D77.0020.0004][.0000.0118.0004] # RUNIC LETTER SHORT-TWIG-NAUD N
+16C0 ; [.3D77.0020.0004][.0000.0119.0004] # RUNIC LETTER DOTTED-N
+16C1 ; [.3D78.0020.0002] # RUNIC LETTER ISAZ IS ISS I
+16C2 ; [.3D78.0020.0004][.0000.0118.0004] # RUNIC LETTER E
+16F5 ; [.3D79.0020.0002] # RUNIC LETTER FRANKS CASKET IS
+16C3 ; [.3D7A.0020.0002] # RUNIC LETTER JERAN J
+16C4 ; [.3D7A.0020.0004][.0000.0118.0004] # RUNIC LETTER GER
+16C5 ; [.3D7B.0020.0002] # RUNIC LETTER LONG-BRANCH-AR AE
+16C6 ; [.3D7B.0020.0004][.0000.0118.0004] # RUNIC LETTER SHORT-TWIG-AR A
+16EE ; [.3D7B.0020.0004][.3D86.0020.0004] # RUNIC ARLAUG SYMBOL
+16C7 ; [.3D7C.0020.0002] # RUNIC LETTER IWAZ EOH
+16C8 ; [.3D7D.0020.0002] # RUNIC LETTER PERTHO PEORTH P
+16D5 ; [.3D7D.0020.0004][.0000.0118.0004] # RUNIC LETTER OPEN-P
+16C9 ; [.3D7E.0020.0002] # RUNIC LETTER ALGIZ EOLHX
+16CA ; [.3D7F.0020.0002] # RUNIC LETTER SOWILO S
+16CB ; [.3D7F.0020.0004][.0000.0118.0004] # RUNIC LETTER SIGEL LONG-BRANCH-SOL S
+16EA ; [.3D7F.0020.0004][.0000.0119.0004] # RUNIC LETTER X
+16CC ; [.3D7F.0020.0004][.0000.011A.0004] # RUNIC LETTER SHORT-TWIG-SOL S
+16CD ; [.3D7F.0020.0004][.0000.011B.0004] # RUNIC LETTER C
+16CE ; [.3D7F.0020.0004][.0000.011C.0004] # RUNIC LETTER Z
+16F2 ; [.3D80.0020.0002] # RUNIC LETTER SH
+16CF ; [.3D81.0020.0002] # RUNIC LETTER TIWAZ TIR TYR T
+16D0 ; [.3D81.0020.0004][.0000.0118.0004] # RUNIC LETTER SHORT-TWIG-TYR T
+16D1 ; [.3D81.0020.0004][.0000.0119.0004] # RUNIC LETTER D
+16D2 ; [.3D82.0020.0002] # RUNIC LETTER BERKANAN BEORC BJARKAN B
+16D3 ; [.3D82.0020.0004][.0000.0118.0004] # RUNIC LETTER SHORT-TWIG-BJARKAN B
+16D4 ; [.3D82.0020.0004][.0000.0119.0004] # RUNIC LETTER DOTTED-P
+16D6 ; [.3D83.0020.0002] # RUNIC LETTER EHWAZ EH E
+16F6 ; [.3D84.0020.0002] # RUNIC LETTER FRANKS CASKET EH
+16D7 ; [.3D85.0020.0002] # RUNIC LETTER MANNAZ MAN M
+16D8 ; [.3D85.0020.0004][.0000.0118.0004] # RUNIC LETTER LONG-BRANCH-MADR M
+16D9 ; [.3D85.0020.0004][.0000.0119.0004] # RUNIC LETTER SHORT-TWIG-MADR M
+16EF ; [.3D85.0020.0004][.0000.0118.0004][.3D85.0020.0004][.0000.0118.0004] # RUNIC TVIMADUR SYMBOL
+16DA ; [.3D86.0020.0002] # RUNIC LETTER LAUKAZ LAGU LOGR L
+16DB ; [.3D86.0020.0004][.0000.0118.0004] # RUNIC LETTER DOTTED-L
+16DC ; [.3D87.0020.0002] # RUNIC LETTER INGWAZ
+16DD ; [.3D87.0020.0004][.0000.0118.0004] # RUNIC LETTER ING
+16DE ; [.3D88.0020.0002] # RUNIC LETTER DAGAZ DAEG D
+16DF ; [.3D89.0020.0002] # RUNIC LETTER OTHALAN ETHEL O
+16F3 ; [.3D8A.0020.0002] # RUNIC LETTER OO
+16AA ; [.3D8B.0020.0002] # RUNIC LETTER AC A
+16F7 ; [.3D8C.0020.0002] # RUNIC LETTER FRANKS CASKET AC
+16AB ; [.3D8D.0020.0002] # RUNIC LETTER AESC
+16F8 ; [.3D8E.0020.0002] # RUNIC LETTER FRANKS CASKET AESC
+16A3 ; [.3D8F.0020.0002] # RUNIC LETTER YR
+16E0 ; [.3D90.0020.0002] # RUNIC LETTER EAR
+16E3 ; [.3D91.0020.0002] # RUNIC LETTER CALC
+16B8 ; [.3D92.0020.0002] # RUNIC LETTER GAR
+16E4 ; [.3D93.0020.0002] # RUNIC LETTER CEALC
+16E1 ; [.3D94.0020.0002] # RUNIC LETTER IOR
+16E2 ; [.3D95.0020.0002] # RUNIC LETTER CWEORTH
+16E5 ; [.3D96.0020.0002] # RUNIC LETTER STAN
+16E6 ; [.3D97.0020.0002] # RUNIC LETTER LONG-BRANCH-YR
+16E7 ; [.3D97.0020.0004][.0000.0118.0004] # RUNIC LETTER SHORT-TWIG-YR
+16E8 ; [.3D97.0020.0004][.0000.0119.0004] # RUNIC LETTER ICELANDIC-YR
+10CC0 ; [.3D98.0020.0002] # OLD HUNGARIAN SMALL LETTER A
+10C80 ; [.3D98.0020.0008] # OLD HUNGARIAN CAPITAL LETTER A
+10CC1 ; [.3D98.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER AA
+10C81 ; [.3D98.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER AA
+10CC2 ; [.3D99.0020.0002] # OLD HUNGARIAN SMALL LETTER EB
+10C82 ; [.3D99.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EB
+10CC3 ; [.3D9A.0020.0002] # OLD HUNGARIAN SMALL LETTER AMB
+10C83 ; [.3D9A.0020.0008] # OLD HUNGARIAN CAPITAL LETTER AMB
+10CC4 ; [.3D9B.0020.0002] # OLD HUNGARIAN SMALL LETTER EC
+10C84 ; [.3D9B.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EC
+10CC5 ; [.3D9C.0020.0002] # OLD HUNGARIAN SMALL LETTER ENC
+10C85 ; [.3D9C.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENC
+10CC6 ; [.3D9D.0020.0002] # OLD HUNGARIAN SMALL LETTER ECS
+10C86 ; [.3D9D.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ECS
+10CC7 ; [.3D9E.0020.0002] # OLD HUNGARIAN SMALL LETTER ED
+10C87 ; [.3D9E.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ED
+10CC8 ; [.3D9F.0020.0002] # OLD HUNGARIAN SMALL LETTER AND
+10C88 ; [.3D9F.0020.0008] # OLD HUNGARIAN CAPITAL LETTER AND
+10CC9 ; [.3DA0.0020.0002] # OLD HUNGARIAN SMALL LETTER E
+10C89 ; [.3DA0.0020.0008] # OLD HUNGARIAN CAPITAL LETTER E
+10CCA ; [.3DA0.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER CLOSE E
+10C8A ; [.3DA0.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER CLOSE E
+10CCB ; [.3DA0.0020.0004][.0000.0119.0004] # OLD HUNGARIAN SMALL LETTER EE
+10C8B ; [.3DA0.0020.000A][.0000.0119.0004] # OLD HUNGARIAN CAPITAL LETTER EE
+10CCC ; [.3DA1.0020.0002] # OLD HUNGARIAN SMALL LETTER EF
+10C8C ; [.3DA1.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EF
+10CCD ; [.3DA2.0020.0002] # OLD HUNGARIAN SMALL LETTER EG
+10C8D ; [.3DA2.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EG
+10CCE ; [.3DA3.0020.0002] # OLD HUNGARIAN SMALL LETTER EGY
+10C8E ; [.3DA3.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EGY
+10CCF ; [.3DA4.0020.0002] # OLD HUNGARIAN SMALL LETTER EH
+10C8F ; [.3DA4.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EH
+10CD0 ; [.3DA5.0020.0002] # OLD HUNGARIAN SMALL LETTER I
+10C90 ; [.3DA5.0020.0008] # OLD HUNGARIAN CAPITAL LETTER I
+10CD1 ; [.3DA5.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER II
+10C91 ; [.3DA5.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER II
+10CD2 ; [.3DA6.0020.0002] # OLD HUNGARIAN SMALL LETTER EJ
+10C92 ; [.3DA6.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EJ
+10CD3 ; [.3DA7.0020.0002] # OLD HUNGARIAN SMALL LETTER EK
+10C93 ; [.3DA7.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EK
+10CD4 ; [.3DA8.0020.0002] # OLD HUNGARIAN SMALL LETTER AK
+10C94 ; [.3DA8.0020.0008] # OLD HUNGARIAN CAPITAL LETTER AK
+10CD5 ; [.3DA9.0020.0002] # OLD HUNGARIAN SMALL LETTER UNK
+10C95 ; [.3DA9.0020.0008] # OLD HUNGARIAN CAPITAL LETTER UNK
+10CD6 ; [.3DAA.0020.0002] # OLD HUNGARIAN SMALL LETTER EL
+10C96 ; [.3DAA.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EL
+10CD7 ; [.3DAB.0020.0002] # OLD HUNGARIAN SMALL LETTER ELY
+10C97 ; [.3DAB.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ELY
+10CD8 ; [.3DAC.0020.0002] # OLD HUNGARIAN SMALL LETTER EM
+10C98 ; [.3DAC.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EM
+10CD9 ; [.3DAD.0020.0002] # OLD HUNGARIAN SMALL LETTER EN
+10C99 ; [.3DAD.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EN
+10CDA ; [.3DAE.0020.0002] # OLD HUNGARIAN SMALL LETTER ENY
+10C9A ; [.3DAE.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENY
+10CDB ; [.3DAF.0020.0002] # OLD HUNGARIAN SMALL LETTER O
+10C9B ; [.3DAF.0020.0008] # OLD HUNGARIAN CAPITAL LETTER O
+10CDC ; [.3DAF.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER OO
+10C9C ; [.3DAF.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER OO
+10CDD ; [.3DB0.0020.0002] # OLD HUNGARIAN SMALL LETTER NIKOLSBURG OE
+10C9D ; [.3DB0.0020.0008] # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE
+10CDE ; [.3DB0.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER RUDIMENTA OE
+10C9E ; [.3DB0.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE
+10CDF ; [.3DB0.0020.0004][.0000.0119.0004] # OLD HUNGARIAN SMALL LETTER OEE
+10C9F ; [.3DB0.0020.000A][.0000.0119.0004] # OLD HUNGARIAN CAPITAL LETTER OEE
+10CE0 ; [.3DB1.0020.0002] # OLD HUNGARIAN SMALL LETTER EP
+10CA0 ; [.3DB1.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EP
+10CE1 ; [.3DB2.0020.0002] # OLD HUNGARIAN SMALL LETTER EMP
+10CA1 ; [.3DB2.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EMP
+10CE2 ; [.3DB3.0020.0002] # OLD HUNGARIAN SMALL LETTER ER
+10CA2 ; [.3DB3.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ER
+10CE3 ; [.3DB3.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER SHORT ER
+10CA3 ; [.3DB3.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER SHORT ER
+10CE4 ; [.3DB4.0020.0002] # OLD HUNGARIAN SMALL LETTER ES
+10CA4 ; [.3DB4.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ES
+10CE5 ; [.3DB5.0020.0002] # OLD HUNGARIAN SMALL LETTER ESZ
+10CA5 ; [.3DB5.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ESZ
+10CE6 ; [.3DB6.0020.0002] # OLD HUNGARIAN SMALL LETTER ET
+10CA6 ; [.3DB6.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ET
+10CE7 ; [.3DB7.0020.0002] # OLD HUNGARIAN SMALL LETTER ENT
+10CA7 ; [.3DB7.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENT
+10CE8 ; [.3DB8.0020.0002] # OLD HUNGARIAN SMALL LETTER ETY
+10CA8 ; [.3DB8.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ETY
+10CE9 ; [.3DB9.0020.0002] # OLD HUNGARIAN SMALL LETTER ECH
+10CA9 ; [.3DB9.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ECH
+10CEA ; [.3DBA.0020.0002] # OLD HUNGARIAN SMALL LETTER U
+10CAA ; [.3DBA.0020.0008] # OLD HUNGARIAN CAPITAL LETTER U
+10CEB ; [.3DBA.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER UU
+10CAB ; [.3DBA.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER UU
+10CEC ; [.3DBB.0020.0002] # OLD HUNGARIAN SMALL LETTER NIKOLSBURG UE
+10CAC ; [.3DBB.0020.0008] # OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE
+10CED ; [.3DBB.0020.0004][.0000.0118.0004] # OLD HUNGARIAN SMALL LETTER RUDIMENTA UE
+10CAD ; [.3DBB.0020.000A][.0000.0118.0004] # OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE
+10CEE ; [.3DBC.0020.0002] # OLD HUNGARIAN SMALL LETTER EV
+10CAE ; [.3DBC.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EV
+10CEF ; [.3DBD.0020.0002] # OLD HUNGARIAN SMALL LETTER EZ
+10CAF ; [.3DBD.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EZ
+10CF0 ; [.3DBE.0020.0002] # OLD HUNGARIAN SMALL LETTER EZS
+10CB0 ; [.3DBE.0020.0008] # OLD HUNGARIAN CAPITAL LETTER EZS
+10CF1 ; [.3DBF.0020.0002] # OLD HUNGARIAN SMALL LETTER ENT-SHAPED SIGN
+10CB1 ; [.3DBF.0020.0008] # OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN
+10CF2 ; [.3DC0.0020.0002] # OLD HUNGARIAN SMALL LETTER US
+10CB2 ; [.3DC0.0020.0008] # OLD HUNGARIAN CAPITAL LETTER US
+10C00 ; [.3DC1.0020.0002] # OLD TURKIC LETTER ORKHON A
+10C01 ; [.3DC1.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI A
+10C02 ; [.3DC2.0020.0002] # OLD TURKIC LETTER YENISEI AE
+10C03 ; [.3DC3.0020.0002] # OLD TURKIC LETTER ORKHON I
+10C04 ; [.3DC3.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI I
+10C05 ; [.3DC4.0020.0002] # OLD TURKIC LETTER YENISEI E
+10C06 ; [.3DC5.0020.0002] # OLD TURKIC LETTER ORKHON O
+10C07 ; [.3DC6.0020.0002] # OLD TURKIC LETTER ORKHON OE
+10C08 ; [.3DC6.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI OE
+10C09 ; [.3DC7.0020.0002] # OLD TURKIC LETTER ORKHON AB
+10C0A ; [.3DC7.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AB
+10C0B ; [.3DC8.0020.0002] # OLD TURKIC LETTER ORKHON AEB
+10C0C ; [.3DC8.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AEB
+10C0D ; [.3DC9.0020.0002] # OLD TURKIC LETTER ORKHON AG
+10C0E ; [.3DC9.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AG
+10C0F ; [.3DCA.0020.0002] # OLD TURKIC LETTER ORKHON AEG
+10C10 ; [.3DCA.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AEG
+10C11 ; [.3DCB.0020.0002] # OLD TURKIC LETTER ORKHON AD
+10C12 ; [.3DCB.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AD
+10C13 ; [.3DCC.0020.0002] # OLD TURKIC LETTER ORKHON AED
+10C14 ; [.3DCD.0020.0002] # OLD TURKIC LETTER ORKHON EZ
+10C15 ; [.3DCD.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI EZ
+10C16 ; [.3DCE.0020.0002] # OLD TURKIC LETTER ORKHON AY
+10C17 ; [.3DCE.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AY
+10C18 ; [.3DCF.0020.0002] # OLD TURKIC LETTER ORKHON AEY
+10C19 ; [.3DCF.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AEY
+10C1A ; [.3DD0.0020.0002] # OLD TURKIC LETTER ORKHON AEK
+10C1B ; [.3DD0.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AEK
+10C1C ; [.3DD1.0020.0002] # OLD TURKIC LETTER ORKHON OEK
+10C1D ; [.3DD1.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI OEK
+10C1E ; [.3DD2.0020.0002] # OLD TURKIC LETTER ORKHON AL
+10C1F ; [.3DD2.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AL
+10C20 ; [.3DD3.0020.0002] # OLD TURKIC LETTER ORKHON AEL
+10C21 ; [.3DD4.0020.0002] # OLD TURKIC LETTER ORKHON ELT
+10C22 ; [.3DD5.0020.0002] # OLD TURKIC LETTER ORKHON EM
+10C23 ; [.3DD6.0020.0002] # OLD TURKIC LETTER ORKHON AN
+10C24 ; [.3DD7.0020.0002] # OLD TURKIC LETTER ORKHON AEN
+10C25 ; [.3DD7.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AEN
+10C26 ; [.3DD8.0020.0002] # OLD TURKIC LETTER ORKHON ENT
+10C27 ; [.3DD8.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI ENT
+10C28 ; [.3DD9.0020.0002] # OLD TURKIC LETTER ORKHON ENC
+10C29 ; [.3DD9.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI ENC
+10C2A ; [.3DDA.0020.0002] # OLD TURKIC LETTER ORKHON ENY
+10C2B ; [.3DDA.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI ENY
+10C2C ; [.3DDB.0020.0002] # OLD TURKIC LETTER YENISEI ANG
+10C2D ; [.3DDC.0020.0002] # OLD TURKIC LETTER ORKHON ENG
+10C2E ; [.3DDC.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AENG
+10C2F ; [.3DDD.0020.0002] # OLD TURKIC LETTER ORKHON EP
+10C30 ; [.3DDE.0020.0002] # OLD TURKIC LETTER ORKHON OP
+10C31 ; [.3DDF.0020.0002] # OLD TURKIC LETTER ORKHON IC
+10C32 ; [.3DE0.0020.0002] # OLD TURKIC LETTER ORKHON EC
+10C33 ; [.3DE0.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI EC
+10C34 ; [.3DE1.0020.0002] # OLD TURKIC LETTER ORKHON AQ
+10C35 ; [.3DE1.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AQ
+10C36 ; [.3DE2.0020.0002] # OLD TURKIC LETTER ORKHON IQ
+10C37 ; [.3DE2.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI IQ
+10C38 ; [.3DE3.0020.0002] # OLD TURKIC LETTER ORKHON OQ
+10C39 ; [.3DE3.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI OQ
+10C3A ; [.3DE4.0020.0002] # OLD TURKIC LETTER ORKHON AR
+10C3B ; [.3DE4.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AR
+10C3C ; [.3DE5.0020.0002] # OLD TURKIC LETTER ORKHON AER
+10C3D ; [.3DE6.0020.0002] # OLD TURKIC LETTER ORKHON AS
+10C3E ; [.3DE7.0020.0002] # OLD TURKIC LETTER ORKHON AES
+10C3F ; [.3DE8.0020.0002] # OLD TURKIC LETTER ORKHON ASH
+10C40 ; [.3DE8.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI ASH
+10C41 ; [.3DE9.0020.0002] # OLD TURKIC LETTER ORKHON ESH
+10C42 ; [.3DE9.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI ESH
+10C43 ; [.3DEA.0020.0002] # OLD TURKIC LETTER ORKHON AT
+10C44 ; [.3DEA.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AT
+10C45 ; [.3DEB.0020.0002] # OLD TURKIC LETTER ORKHON AET
+10C46 ; [.3DEB.0020.0004][.0000.0118.0004] # OLD TURKIC LETTER YENISEI AET
+10C47 ; [.3DEC.0020.0002] # OLD TURKIC LETTER ORKHON OT
+10C48 ; [.3DED.0020.0002] # OLD TURKIC LETTER ORKHON BASH
+A500 ; [.3DEE.0020.0002] # VAI SYLLABLE EE
+A501 ; [.3DEF.0020.0002] # VAI SYLLABLE EEN
+A502 ; [.3DF0.0020.0002] # VAI SYLLABLE HEE
+A503 ; [.3DF1.0020.0002] # VAI SYLLABLE WEE
+A504 ; [.3DF2.0020.0002] # VAI SYLLABLE WEEN
+A505 ; [.3DF3.0020.0002] # VAI SYLLABLE PEE
+A506 ; [.3DF4.0020.0002] # VAI SYLLABLE BHEE
+A507 ; [.3DF5.0020.0002] # VAI SYLLABLE BEE
+A508 ; [.3DF6.0020.0002] # VAI SYLLABLE MBEE
+A509 ; [.3DF7.0020.0002] # VAI SYLLABLE KPEE
+A50A ; [.3DF8.0020.0002] # VAI SYLLABLE MGBEE
+A50B ; [.3DF9.0020.0002] # VAI SYLLABLE GBEE
+A50C ; [.3DFA.0020.0002] # VAI SYLLABLE FEE
+A613 ; [.3DFA.0020.0004][.3EF9.0020.0004] # VAI SYMBOL FEENG
+A50D ; [.3DFB.0020.0002] # VAI SYLLABLE VEE
+A50E ; [.3DFC.0020.0002] # VAI SYLLABLE TEE
+A50F ; [.3DFD.0020.0002] # VAI SYLLABLE THEE
+A510 ; [.3DFE.0020.0002] # VAI SYLLABLE DHEE
+A511 ; [.3DFF.0020.0002] # VAI SYLLABLE DHHEE
+A512 ; [.3E00.0020.0002] # VAI SYLLABLE LEE
+A513 ; [.3E01.0020.0002] # VAI SYLLABLE REE
+A514 ; [.3E02.0020.0002] # VAI SYLLABLE DEE
+A515 ; [.3E03.0020.0002] # VAI SYLLABLE NDEE
+A516 ; [.3E04.0020.0002] # VAI SYLLABLE SEE
+A517 ; [.3E05.0020.0002] # VAI SYLLABLE SHEE
+A518 ; [.3E06.0020.0002] # VAI SYLLABLE ZEE
+A519 ; [.3E07.0020.0002] # VAI SYLLABLE ZHEE
+A51A ; [.3E08.0020.0002] # VAI SYLLABLE CEE
+A51B ; [.3E09.0020.0002] # VAI SYLLABLE JEE
+A51C ; [.3E0A.0020.0002] # VAI SYLLABLE NJEE
+A51D ; [.3E0B.0020.0002] # VAI SYLLABLE YEE
+A51E ; [.3E0C.0020.0002] # VAI SYLLABLE KEE
+A614 ; [.3E0C.0020.0004][.3EF9.0020.0004] # VAI SYMBOL KEENG
+A51F ; [.3E0D.0020.0002] # VAI SYLLABLE NGGEE
+A520 ; [.3E0E.0020.0002] # VAI SYLLABLE GEE
+A521 ; [.3E0F.0020.0002] # VAI SYLLABLE MEE
+A522 ; [.3E10.0020.0002] # VAI SYLLABLE NEE
+A523 ; [.3E11.0020.0002] # VAI SYLLABLE NYEE
+A524 ; [.3E12.0020.0002] # VAI SYLLABLE I
+A525 ; [.3E13.0020.0002] # VAI SYLLABLE IN
+A526 ; [.3E14.0020.0002] # VAI SYLLABLE HI
+A527 ; [.3E15.0020.0002] # VAI SYLLABLE HIN
+A528 ; [.3E16.0020.0002] # VAI SYLLABLE WI
+A529 ; [.3E17.0020.0002] # VAI SYLLABLE WIN
+A52A ; [.3E18.0020.0002] # VAI SYLLABLE PI
+A52B ; [.3E19.0020.0002] # VAI SYLLABLE BHI
+A52C ; [.3E1A.0020.0002] # VAI SYLLABLE BI
+A52D ; [.3E1B.0020.0002] # VAI SYLLABLE MBI
+A52E ; [.3E1C.0020.0002] # VAI SYLLABLE KPI
+A52F ; [.3E1D.0020.0002] # VAI SYLLABLE MGBI
+A530 ; [.3E1E.0020.0002] # VAI SYLLABLE GBI
+A531 ; [.3E1F.0020.0002] # VAI SYLLABLE FI
+A532 ; [.3E20.0020.0002] # VAI SYLLABLE VI
+A533 ; [.3E21.0020.0002] # VAI SYLLABLE TI
+A615 ; [.3E21.0020.0004][.3EF9.0020.0004] # VAI SYMBOL TING
+A534 ; [.3E22.0020.0002] # VAI SYLLABLE THI
+A535 ; [.3E23.0020.0002] # VAI SYLLABLE DHI
+A536 ; [.3E24.0020.0002] # VAI SYLLABLE DHHI
+A537 ; [.3E25.0020.0002] # VAI SYLLABLE LI
+A538 ; [.3E26.0020.0002] # VAI SYLLABLE RI
+A539 ; [.3E27.0020.0002] # VAI SYLLABLE DI
+A53A ; [.3E28.0020.0002] # VAI SYLLABLE NDI
+A53B ; [.3E29.0020.0002] # VAI SYLLABLE SI
+A53C ; [.3E2A.0020.0002] # VAI SYLLABLE SHI
+A53D ; [.3E2B.0020.0002] # VAI SYLLABLE ZI
+A53E ; [.3E2C.0020.0002] # VAI SYLLABLE ZHI
+A53F ; [.3E2D.0020.0002] # VAI SYLLABLE CI
+A540 ; [.3E2E.0020.0002] # VAI SYLLABLE JI
+A541 ; [.3E2F.0020.0002] # VAI SYLLABLE NJI
+A542 ; [.3E30.0020.0002] # VAI SYLLABLE YI
+A543 ; [.3E31.0020.0002] # VAI SYLLABLE KI
+A544 ; [.3E32.0020.0002] # VAI SYLLABLE NGGI
+A545 ; [.3E33.0020.0002] # VAI SYLLABLE GI
+A546 ; [.3E34.0020.0002] # VAI SYLLABLE MI
+A547 ; [.3E35.0020.0002] # VAI SYLLABLE NI
+A616 ; [.3E35.0020.0004][.3EFA.0020.0004] # VAI SYMBOL NII
+A548 ; [.3E36.0020.0002] # VAI SYLLABLE NYI
+A549 ; [.3E37.0020.0002] # VAI SYLLABLE A
+A54A ; [.3E38.0020.0002] # VAI SYLLABLE AN
+A54B ; [.3E39.0020.0002] # VAI SYLLABLE NGAN
+A54C ; [.3E3A.0020.0002] # VAI SYLLABLE HA
+A54D ; [.3E3B.0020.0002] # VAI SYLLABLE HAN
+A54E ; [.3E3C.0020.0002] # VAI SYLLABLE WA
+A54F ; [.3E3D.0020.0002] # VAI SYLLABLE WAN
+A550 ; [.3E3E.0020.0002] # VAI SYLLABLE PA
+A551 ; [.3E3F.0020.0002] # VAI SYLLABLE BHA
+A552 ; [.3E40.0020.0002] # VAI SYLLABLE BA
+A617 ; [.3E40.0020.0004][.3EF9.0020.0004] # VAI SYMBOL BANG
+A553 ; [.3E41.0020.0002] # VAI SYLLABLE MBA
+A554 ; [.3E42.0020.0002] # VAI SYLLABLE KPA
+A555 ; [.3E43.0020.0002] # VAI SYLLABLE KPAN
+A556 ; [.3E44.0020.0002] # VAI SYLLABLE MGBA
+A557 ; [.3E45.0020.0002] # VAI SYLLABLE GBA
+A558 ; [.3E46.0020.0002] # VAI SYLLABLE FA
+A610 ; [.3E46.0020.0004] # VAI SYLLABLE NDOLE FA
+A618 ; [.3E46.0020.0004][.3EFA.0020.0004] # VAI SYMBOL FAA
+A559 ; [.3E47.0020.0002] # VAI SYLLABLE VA
+A55A ; [.3E48.0020.0002] # VAI SYLLABLE TA
+A619 ; [.3E48.0020.0004][.3EFA.0020.0004] # VAI SYMBOL TAA
+A55B ; [.3E49.0020.0002] # VAI SYLLABLE THA
+A55C ; [.3E4A.0020.0002] # VAI SYLLABLE DHA
+A55D ; [.3E4B.0020.0002] # VAI SYLLABLE DHHA
+A55E ; [.3E4C.0020.0002] # VAI SYLLABLE LA
+A55F ; [.3E4D.0020.0002] # VAI SYLLABLE RA
+A560 ; [.3E4E.0020.0002] # VAI SYLLABLE DA
+A61A ; [.3E4E.0020.0004][.3EF9.0020.0004] # VAI SYMBOL DANG
+A561 ; [.3E4F.0020.0002] # VAI SYLLABLE NDA
+A562 ; [.3E50.0020.0002] # VAI SYLLABLE SA
+A563 ; [.3E51.0020.0002] # VAI SYLLABLE SHA
+A564 ; [.3E52.0020.0002] # VAI SYLLABLE ZA
+A565 ; [.3E53.0020.0002] # VAI SYLLABLE ZHA
+A566 ; [.3E54.0020.0002] # VAI SYLLABLE CA
+A567 ; [.3E55.0020.0002] # VAI SYLLABLE JA
+A568 ; [.3E56.0020.0002] # VAI SYLLABLE NJA
+A569 ; [.3E57.0020.0002] # VAI SYLLABLE YA
+A56A ; [.3E58.0020.0002] # VAI SYLLABLE KA
+A611 ; [.3E58.0020.0004] # VAI SYLLABLE NDOLE KA
+A56B ; [.3E59.0020.0002] # VAI SYLLABLE KAN
+A56C ; [.3E5A.0020.0002] # VAI SYLLABLE NGGA
+A56D ; [.3E5B.0020.0002] # VAI SYLLABLE GA
+A56E ; [.3E5C.0020.0002] # VAI SYLLABLE MA
+A62A ; [.3E5C.0020.0004] # VAI SYLLABLE NDOLE MA
+A56F ; [.3E5D.0020.0002] # VAI SYLLABLE NA
+A570 ; [.3E5E.0020.0002] # VAI SYLLABLE NYA
+A571 ; [.3E5F.0020.0002] # VAI SYLLABLE OO
+A572 ; [.3E60.0020.0002] # VAI SYLLABLE OON
+A573 ; [.3E61.0020.0002] # VAI SYLLABLE HOO
+A574 ; [.3E62.0020.0002] # VAI SYLLABLE WOO
+A575 ; [.3E63.0020.0002] # VAI SYLLABLE WOON
+A576 ; [.3E64.0020.0002] # VAI SYLLABLE POO
+A577 ; [.3E65.0020.0002] # VAI SYLLABLE BHOO
+A578 ; [.3E66.0020.0002] # VAI SYLLABLE BOO
+A579 ; [.3E67.0020.0002] # VAI SYLLABLE MBOO
+A57A ; [.3E68.0020.0002] # VAI SYLLABLE KPOO
+A57B ; [.3E69.0020.0002] # VAI SYLLABLE MGBOO
+A57C ; [.3E6A.0020.0002] # VAI SYLLABLE GBOO
+A57D ; [.3E6B.0020.0002] # VAI SYLLABLE FOO
+A57E ; [.3E6C.0020.0002] # VAI SYLLABLE VOO
+A57F ; [.3E6D.0020.0002] # VAI SYLLABLE TOO
+A580 ; [.3E6E.0020.0002] # VAI SYLLABLE THOO
+A581 ; [.3E6F.0020.0002] # VAI SYLLABLE DHOO
+A582 ; [.3E70.0020.0002] # VAI SYLLABLE DHHOO
+A583 ; [.3E71.0020.0002] # VAI SYLLABLE LOO
+A584 ; [.3E72.0020.0002] # VAI SYLLABLE ROO
+A585 ; [.3E73.0020.0002] # VAI SYLLABLE DOO
+A61B ; [.3E73.0020.0004][.3EF9.0020.0004] # VAI SYMBOL DOONG
+A586 ; [.3E74.0020.0002] # VAI SYLLABLE NDOO
+A587 ; [.3E75.0020.0002] # VAI SYLLABLE SOO
+A612 ; [.3E75.0020.0004] # VAI SYLLABLE NDOLE SOO
+A588 ; [.3E76.0020.0002] # VAI SYLLABLE SHOO
+A589 ; [.3E77.0020.0002] # VAI SYLLABLE ZOO
+A58A ; [.3E78.0020.0002] # VAI SYLLABLE ZHOO
+A58B ; [.3E79.0020.0002] # VAI SYLLABLE COO
+A58C ; [.3E7A.0020.0002] # VAI SYLLABLE JOO
+A58D ; [.3E7B.0020.0002] # VAI SYLLABLE NJOO
+A58E ; [.3E7C.0020.0002] # VAI SYLLABLE YOO
+A58F ; [.3E7D.0020.0002] # VAI SYLLABLE KOO
+A590 ; [.3E7E.0020.0002] # VAI SYLLABLE NGGOO
+A591 ; [.3E7F.0020.0002] # VAI SYLLABLE GOO
+A592 ; [.3E80.0020.0002] # VAI SYLLABLE MOO
+A593 ; [.3E81.0020.0002] # VAI SYLLABLE NOO
+A594 ; [.3E82.0020.0002] # VAI SYLLABLE NYOO
+A595 ; [.3E83.0020.0002] # VAI SYLLABLE U
+A596 ; [.3E84.0020.0002] # VAI SYLLABLE UN
+A597 ; [.3E85.0020.0002] # VAI SYLLABLE HU
+A598 ; [.3E86.0020.0002] # VAI SYLLABLE HUN
+A599 ; [.3E87.0020.0002] # VAI SYLLABLE WU
+A59A ; [.3E88.0020.0002] # VAI SYLLABLE WUN
+A59B ; [.3E89.0020.0002] # VAI SYLLABLE PU
+A59C ; [.3E8A.0020.0002] # VAI SYLLABLE BHU
+A59D ; [.3E8B.0020.0002] # VAI SYLLABLE BU
+A59E ; [.3E8C.0020.0002] # VAI SYLLABLE MBU
+A59F ; [.3E8D.0020.0002] # VAI SYLLABLE KPU
+A5A0 ; [.3E8E.0020.0002] # VAI SYLLABLE MGBU
+A5A1 ; [.3E8F.0020.0002] # VAI SYLLABLE GBU
+A5A2 ; [.3E90.0020.0002] # VAI SYLLABLE FU
+A5A3 ; [.3E91.0020.0002] # VAI SYLLABLE VU
+A5A4 ; [.3E92.0020.0002] # VAI SYLLABLE TU
+A5A5 ; [.3E93.0020.0002] # VAI SYLLABLE THU
+A5A6 ; [.3E94.0020.0002] # VAI SYLLABLE DHU
+A5A7 ; [.3E95.0020.0002] # VAI SYLLABLE DHHU
+A5A8 ; [.3E96.0020.0002] # VAI SYLLABLE LU
+A5A9 ; [.3E97.0020.0002] # VAI SYLLABLE RU
+A5AA ; [.3E98.0020.0002] # VAI SYLLABLE DU
+A5AB ; [.3E99.0020.0002] # VAI SYLLABLE NDU
+A5AC ; [.3E9A.0020.0002] # VAI SYLLABLE SU
+A5AD ; [.3E9B.0020.0002] # VAI SYLLABLE SHU
+A5AE ; [.3E9C.0020.0002] # VAI SYLLABLE ZU
+A5AF ; [.3E9D.0020.0002] # VAI SYLLABLE ZHU
+A5B0 ; [.3E9E.0020.0002] # VAI SYLLABLE CU
+A5B1 ; [.3E9F.0020.0002] # VAI SYLLABLE JU
+A5B2 ; [.3EA0.0020.0002] # VAI SYLLABLE NJU
+A5B3 ; [.3EA1.0020.0002] # VAI SYLLABLE YU
+A5B4 ; [.3EA2.0020.0002] # VAI SYLLABLE KU
+A61C ; [.3EA2.0020.0004][.3EF9.0020.0004] # VAI SYMBOL KUNG
+A5B5 ; [.3EA3.0020.0002] # VAI SYLLABLE NGGU
+A5B6 ; [.3EA4.0020.0002] # VAI SYLLABLE GU
+A5B7 ; [.3EA5.0020.0002] # VAI SYLLABLE MU
+A5B8 ; [.3EA6.0020.0002] # VAI SYLLABLE NU
+A5B9 ; [.3EA7.0020.0002] # VAI SYLLABLE NYU
+A5BA ; [.3EA8.0020.0002] # VAI SYLLABLE O
+A5BB ; [.3EA9.0020.0002] # VAI SYLLABLE ON
+A5BC ; [.3EAA.0020.0002] # VAI SYLLABLE NGON
+A5BD ; [.3EAB.0020.0002] # VAI SYLLABLE HO
+A5BE ; [.3EAC.0020.0002] # VAI SYLLABLE HON
+A5BF ; [.3EAD.0020.0002] # VAI SYLLABLE WO
+A5C0 ; [.3EAE.0020.0002] # VAI SYLLABLE WON
+A5C1 ; [.3EAF.0020.0002] # VAI SYLLABLE PO
+A5C2 ; [.3EB0.0020.0002] # VAI SYLLABLE BHO
+A5C3 ; [.3EB1.0020.0002] # VAI SYLLABLE BO
+A5C4 ; [.3EB2.0020.0002] # VAI SYLLABLE MBO
+A5C5 ; [.3EB3.0020.0002] # VAI SYLLABLE KPO
+A5C6 ; [.3EB4.0020.0002] # VAI SYLLABLE MGBO
+A5C7 ; [.3EB5.0020.0002] # VAI SYLLABLE GBO
+A5C8 ; [.3EB6.0020.0002] # VAI SYLLABLE GBON
+A5C9 ; [.3EB7.0020.0002] # VAI SYLLABLE FO
+A5CA ; [.3EB8.0020.0002] # VAI SYLLABLE VO
+A5CB ; [.3EB9.0020.0002] # VAI SYLLABLE TO
+A61D ; [.3EB9.0020.0004][.3EF9.0020.0004] # VAI SYMBOL TONG
+A5CC ; [.3EBA.0020.0002] # VAI SYLLABLE THO
+A5CD ; [.3EBB.0020.0002] # VAI SYLLABLE DHO
+A5CE ; [.3EBC.0020.0002] # VAI SYLLABLE DHHO
+A5CF ; [.3EBD.0020.0002] # VAI SYLLABLE LO
+A5D0 ; [.3EBE.0020.0002] # VAI SYLLABLE RO
+A5D1 ; [.3EBF.0020.0002] # VAI SYLLABLE DO
+A62B ; [.3EBF.0020.0004] # VAI SYLLABLE NDOLE DO
+A61E ; [.3EBF.0020.0004][.3EFA.0020.0004] # VAI SYMBOL DO-O
+A5D2 ; [.3EC0.0020.0002] # VAI SYLLABLE NDO
+A5D3 ; [.3EC1.0020.0002] # VAI SYLLABLE SO
+A5D4 ; [.3EC2.0020.0002] # VAI SYLLABLE SHO
+A5D5 ; [.3EC3.0020.0002] # VAI SYLLABLE ZO
+A5D6 ; [.3EC4.0020.0002] # VAI SYLLABLE ZHO
+A5D7 ; [.3EC5.0020.0002] # VAI SYLLABLE CO
+A5D8 ; [.3EC6.0020.0002] # VAI SYLLABLE JO
+A61F ; [.3EC6.0020.0004][.3EF9.0020.0004] # VAI SYMBOL JONG
+A5D9 ; [.3EC7.0020.0002] # VAI SYLLABLE NJO
+A5DA ; [.3EC8.0020.0002] # VAI SYLLABLE YO
+A5DB ; [.3EC9.0020.0002] # VAI SYLLABLE KO
+A5DC ; [.3ECA.0020.0002] # VAI SYLLABLE NGGO
+A5DD ; [.3ECB.0020.0002] # VAI SYLLABLE GO
+A5DE ; [.3ECC.0020.0002] # VAI SYLLABLE MO
+A5DF ; [.3ECD.0020.0002] # VAI SYLLABLE NO
+A5E0 ; [.3ECE.0020.0002] # VAI SYLLABLE NYO
+A5E1 ; [.3ECF.0020.0002] # VAI SYLLABLE E
+A5E2 ; [.3ED0.0020.0002] # VAI SYLLABLE EN
+A5E3 ; [.3ED1.0020.0002] # VAI SYLLABLE NGEN
+A5E4 ; [.3ED2.0020.0002] # VAI SYLLABLE HE
+A5E5 ; [.3ED3.0020.0002] # VAI SYLLABLE HEN
+A5E6 ; [.3ED4.0020.0002] # VAI SYLLABLE WE
+A5E7 ; [.3ED5.0020.0002] # VAI SYLLABLE WEN
+A5E8 ; [.3ED6.0020.0002] # VAI SYLLABLE PE
+A5E9 ; [.3ED7.0020.0002] # VAI SYLLABLE BHE
+A5EA ; [.3ED8.0020.0002] # VAI SYLLABLE BE
+A5EB ; [.3ED9.0020.0002] # VAI SYLLABLE MBE
+A5EC ; [.3EDA.0020.0002] # VAI SYLLABLE KPE
+A5ED ; [.3EDB.0020.0002] # VAI SYLLABLE KPEN
+A5EE ; [.3EDC.0020.0002] # VAI SYLLABLE MGBE
+A5EF ; [.3EDD.0020.0002] # VAI SYLLABLE GBE
+A5F0 ; [.3EDE.0020.0002] # VAI SYLLABLE GBEN
+A5F1 ; [.3EDF.0020.0002] # VAI SYLLABLE FE
+A5F2 ; [.3EE0.0020.0002] # VAI SYLLABLE VE
+A5F3 ; [.3EE1.0020.0002] # VAI SYLLABLE TE
+A5F4 ; [.3EE2.0020.0002] # VAI SYLLABLE THE
+A5F5 ; [.3EE3.0020.0002] # VAI SYLLABLE DHE
+A5F6 ; [.3EE4.0020.0002] # VAI SYLLABLE DHHE
+A5F7 ; [.3EE5.0020.0002] # VAI SYLLABLE LE
+A5F8 ; [.3EE6.0020.0002] # VAI SYLLABLE RE
+A5F9 ; [.3EE7.0020.0002] # VAI SYLLABLE DE
+A5FA ; [.3EE8.0020.0002] # VAI SYLLABLE NDE
+A5FB ; [.3EE9.0020.0002] # VAI SYLLABLE SE
+A5FC ; [.3EEA.0020.0002] # VAI SYLLABLE SHE
+A5FD ; [.3EEB.0020.0002] # VAI SYLLABLE ZE
+A5FE ; [.3EEC.0020.0002] # VAI SYLLABLE ZHE
+A5FF ; [.3EED.0020.0002] # VAI SYLLABLE CE
+A600 ; [.3EEE.0020.0002] # VAI SYLLABLE JE
+A601 ; [.3EEF.0020.0002] # VAI SYLLABLE NJE
+A602 ; [.3EF0.0020.0002] # VAI SYLLABLE YE
+A603 ; [.3EF1.0020.0002] # VAI SYLLABLE KE
+A604 ; [.3EF2.0020.0002] # VAI SYLLABLE NGGE
+A605 ; [.3EF3.0020.0002] # VAI SYLLABLE NGGEN
+A606 ; [.3EF4.0020.0002] # VAI SYLLABLE GE
+A607 ; [.3EF5.0020.0002] # VAI SYLLABLE GEN
+A608 ; [.3EF6.0020.0002] # VAI SYLLABLE ME
+A609 ; [.3EF7.0020.0002] # VAI SYLLABLE NE
+A60A ; [.3EF8.0020.0002] # VAI SYLLABLE NYE
+A60B ; [.3EF9.0020.0002] # VAI SYLLABLE NG
+A60C ; [.3EFA.0020.0002] # VAI SYLLABLE LENGTHENER
+A6A0 ; [.3EFB.0020.0002] # BAMUM LETTER A
+A6A1 ; [.3EFC.0020.0002] # BAMUM LETTER KA
+A6A2 ; [.3EFD.0020.0002] # BAMUM LETTER U
+A6A3 ; [.3EFE.0020.0002] # BAMUM LETTER KU
+A6A4 ; [.3EFF.0020.0002] # BAMUM LETTER EE
+A6A5 ; [.3F00.0020.0002] # BAMUM LETTER REE
+A6A6 ; [.3F01.0020.0002] # BAMUM LETTER TAE
+A6A7 ; [.3F02.0020.0002] # BAMUM LETTER O
+A6A8 ; [.3F03.0020.0002] # BAMUM LETTER NYI
+A6A9 ; [.3F04.0020.0002] # BAMUM LETTER I
+A6AA ; [.3F05.0020.0002] # BAMUM LETTER LA
+A6AB ; [.3F06.0020.0002] # BAMUM LETTER PA
+A6AC ; [.3F07.0020.0002] # BAMUM LETTER RII
+A6AD ; [.3F08.0020.0002] # BAMUM LETTER RIEE
+A6AE ; [.3F09.0020.0002] # BAMUM LETTER LEEEE
+A6AF ; [.3F0A.0020.0002] # BAMUM LETTER MEEEE
+A6B0 ; [.3F0B.0020.0002] # BAMUM LETTER TAA
+A6B1 ; [.3F0C.0020.0002] # BAMUM LETTER NDAA
+A6B2 ; [.3F0D.0020.0002] # BAMUM LETTER NJAEM
+A6B3 ; [.3F0E.0020.0002] # BAMUM LETTER M
+A6B4 ; [.3F0F.0020.0002] # BAMUM LETTER SUU
+A6B5 ; [.3F10.0020.0002] # BAMUM LETTER MU
+A6B6 ; [.3F11.0020.0002] # BAMUM LETTER SHII
+A6B7 ; [.3F12.0020.0002] # BAMUM LETTER SI
+A6B8 ; [.3F13.0020.0002] # BAMUM LETTER SHEUX
+A6B9 ; [.3F14.0020.0002] # BAMUM LETTER SEUX
+A6BA ; [.3F15.0020.0002] # BAMUM LETTER KYEE
+A6BB ; [.3F16.0020.0002] # BAMUM LETTER KET
+A6BC ; [.3F17.0020.0002] # BAMUM LETTER NUAE
+A6BD ; [.3F18.0020.0002] # BAMUM LETTER NU
+A6BE ; [.3F19.0020.0002] # BAMUM LETTER NJUAE
+A6BF ; [.3F1A.0020.0002] # BAMUM LETTER YOQ
+A6C0 ; [.3F1B.0020.0002] # BAMUM LETTER SHU
+A6C1 ; [.3F1C.0020.0002] # BAMUM LETTER YUQ
+A6C2 ; [.3F1D.0020.0002] # BAMUM LETTER YA
+A6C3 ; [.3F1E.0020.0002] # BAMUM LETTER NSHA
+A6C4 ; [.3F1F.0020.0002] # BAMUM LETTER KEUX
+A6C5 ; [.3F20.0020.0002] # BAMUM LETTER PEUX
+A6C6 ; [.3F21.0020.0002] # BAMUM LETTER NJEE
+A6C7 ; [.3F22.0020.0002] # BAMUM LETTER NTEE
+A6C8 ; [.3F23.0020.0002] # BAMUM LETTER PUE
+A6C9 ; [.3F24.0020.0002] # BAMUM LETTER WUE
+A6CA ; [.3F25.0020.0002] # BAMUM LETTER PEE
+A6CB ; [.3F26.0020.0002] # BAMUM LETTER FEE
+A6CC ; [.3F27.0020.0002] # BAMUM LETTER RU
+A6CD ; [.3F28.0020.0002] # BAMUM LETTER LU
+A6CE ; [.3F29.0020.0002] # BAMUM LETTER MI
+A6CF ; [.3F2A.0020.0002] # BAMUM LETTER NI
+A6D0 ; [.3F2B.0020.0002] # BAMUM LETTER REUX
+A6D1 ; [.3F2C.0020.0002] # BAMUM LETTER RAE
+A6D2 ; [.3F2D.0020.0002] # BAMUM LETTER KEN
+A6D3 ; [.3F2E.0020.0002] # BAMUM LETTER NGKWAEN
+A6D4 ; [.3F2F.0020.0002] # BAMUM LETTER NGGA
+A6D5 ; [.3F30.0020.0002] # BAMUM LETTER NGA
+A6D6 ; [.3F31.0020.0002] # BAMUM LETTER SHO
+A6D7 ; [.3F32.0020.0002] # BAMUM LETTER PUAE
+A6D8 ; [.3F33.0020.0002] # BAMUM LETTER FU
+A6D9 ; [.3F34.0020.0002] # BAMUM LETTER FOM
+A6DA ; [.3F35.0020.0002] # BAMUM LETTER WA
+A6DB ; [.3F36.0020.0002] # BAMUM LETTER NA
+A6DC ; [.3F37.0020.0002] # BAMUM LETTER LI
+A6DD ; [.3F38.0020.0002] # BAMUM LETTER PI
+A6DE ; [.3F39.0020.0002] # BAMUM LETTER LOQ
+A6DF ; [.3F3A.0020.0002] # BAMUM LETTER KO
+A6E0 ; [.3F3B.0020.0002] # BAMUM LETTER MBEN
+A6E1 ; [.3F3C.0020.0002] # BAMUM LETTER REN
+A6E2 ; [.3F3D.0020.0002] # BAMUM LETTER MEN
+A6E3 ; [.3F3E.0020.0002] # BAMUM LETTER MA
+A6E4 ; [.3F3F.0020.0002] # BAMUM LETTER TI
+A6E5 ; [.3F40.0020.0002] # BAMUM LETTER KI
+A6E6 ; [.3F41.0020.0002] # BAMUM LETTER MO
+A6E7 ; [.3F42.0020.0002] # BAMUM LETTER MBAA
+A6E8 ; [.3F43.0020.0002] # BAMUM LETTER TET
+A6E9 ; [.3F44.0020.0002] # BAMUM LETTER KPA
+A6EA ; [.3F45.0020.0002] # BAMUM LETTER TEN
+A6EB ; [.3F46.0020.0002] # BAMUM LETTER NTUU
+A6EC ; [.3F47.0020.0002] # BAMUM LETTER SAMBA
+A6ED ; [.3F48.0020.0002] # BAMUM LETTER FAAMAE
+A6EE ; [.3F49.0020.0002] # BAMUM LETTER KOVUU
+A6EF ; [.3F4A.0020.0002] # BAMUM LETTER KOGHOM
+16800 ; [.3F4B.0020.0002] # BAMUM LETTER PHASE-A NGKUE MFON
+16801 ; [.3F4C.0020.0002] # BAMUM LETTER PHASE-A GBIEE FON
+16802 ; [.3F4D.0020.0002] # BAMUM LETTER PHASE-A PON MFON PIPAEMGBIEE
+16803 ; [.3F4E.0020.0002] # BAMUM LETTER PHASE-A PON MFON PIPAEMBA
+16804 ; [.3F4F.0020.0002] # BAMUM LETTER PHASE-A NAA MFON
+16805 ; [.3F50.0020.0002] # BAMUM LETTER PHASE-A SHUENSHUET
+16806 ; [.3F51.0020.0002] # BAMUM LETTER PHASE-A TITA MFON
+16807 ; [.3F52.0020.0002] # BAMUM LETTER PHASE-A NZA MFON
+16808 ; [.3F53.0020.0002] # BAMUM LETTER PHASE-A SHINDA PA NJI
+16809 ; [.3F54.0020.0002] # BAMUM LETTER PHASE-A PON PA NJI PIPAEMGBIEE
+1680A ; [.3F55.0020.0002] # BAMUM LETTER PHASE-A PON PA NJI PIPAEMBA
+1680B ; [.3F56.0020.0002] # BAMUM LETTER PHASE-A MAEMBGBIEE
+1680C ; [.3F57.0020.0002] # BAMUM LETTER PHASE-A TU MAEMBA
+1680D ; [.3F58.0020.0002] # BAMUM LETTER PHASE-A NGANGU
+1680E ; [.3F59.0020.0002] # BAMUM LETTER PHASE-A MAEMVEUX
+1680F ; [.3F5A.0020.0002] # BAMUM LETTER PHASE-A MANSUAE
+16810 ; [.3F5B.0020.0002] # BAMUM LETTER PHASE-A MVEUAENGAM
+16811 ; [.3F5C.0020.0002] # BAMUM LETTER PHASE-A SEUNYAM
+16812 ; [.3F5D.0020.0002] # BAMUM LETTER PHASE-A NTOQPEN
+16813 ; [.3F5E.0020.0002] # BAMUM LETTER PHASE-A KEUKEUTNDA
+16814 ; [.3F5F.0020.0002] # BAMUM LETTER PHASE-A NKINDI
+16815 ; [.3F60.0020.0002] # BAMUM LETTER PHASE-A SUU
+16816 ; [.3F61.0020.0002] # BAMUM LETTER PHASE-A NGKUENZEUM
+16817 ; [.3F62.0020.0002] # BAMUM LETTER PHASE-A LAPAQ
+16818 ; [.3F63.0020.0002] # BAMUM LETTER PHASE-A LET KUT
+16819 ; [.3F64.0020.0002] # BAMUM LETTER PHASE-A NTAP MFAA
+1681A ; [.3F65.0020.0002] # BAMUM LETTER PHASE-A MAEKEUP
+1681B ; [.3F66.0020.0002] # BAMUM LETTER PHASE-A PASHAE
+1681C ; [.3F67.0020.0002] # BAMUM LETTER PHASE-A GHEUAERAE
+1681D ; [.3F68.0020.0002] # BAMUM LETTER PHASE-A PAMSHAE
+1681E ; [.3F69.0020.0002] # BAMUM LETTER PHASE-A MON NGGEUAET
+1681F ; [.3F6A.0020.0002] # BAMUM LETTER PHASE-A NZUN MEUT
+16820 ; [.3F6B.0020.0002] # BAMUM LETTER PHASE-A U YUQ NAE
+16821 ; [.3F6C.0020.0002] # BAMUM LETTER PHASE-A GHEUAEGHEUAE
+16822 ; [.3F6D.0020.0002] # BAMUM LETTER PHASE-A NTAP NTAA
+16823 ; [.3F6E.0020.0002] # BAMUM LETTER PHASE-A SISA
+16824 ; [.3F6F.0020.0002] # BAMUM LETTER PHASE-A MGBASA
+16825 ; [.3F70.0020.0002] # BAMUM LETTER PHASE-A MEUNJOMNDEUQ
+16826 ; [.3F71.0020.0002] # BAMUM LETTER PHASE-A MOOMPUQ
+16827 ; [.3F72.0020.0002] # BAMUM LETTER PHASE-A KAFA
+16828 ; [.3F73.0020.0002] # BAMUM LETTER PHASE-A PA LEERAEWA
+16829 ; [.3F74.0020.0002] # BAMUM LETTER PHASE-A NDA LEERAEWA
+1682A ; [.3F75.0020.0002] # BAMUM LETTER PHASE-A PET
+1682B ; [.3F76.0020.0002] # BAMUM LETTER PHASE-A MAEMKPEN
+1682C ; [.3F77.0020.0002] # BAMUM LETTER PHASE-A NIKA
+1682D ; [.3F78.0020.0002] # BAMUM LETTER PHASE-A PUP
+1682E ; [.3F79.0020.0002] # BAMUM LETTER PHASE-A TUAEP
+1682F ; [.3F7A.0020.0002] # BAMUM LETTER PHASE-A LUAEP
+16830 ; [.3F7B.0020.0002] # BAMUM LETTER PHASE-A SONJAM
+16831 ; [.3F7C.0020.0002] # BAMUM LETTER PHASE-A TEUTEUWEN
+16832 ; [.3F7D.0020.0002] # BAMUM LETTER PHASE-A MAENYI
+16833 ; [.3F7E.0020.0002] # BAMUM LETTER PHASE-A KET
+16834 ; [.3F7F.0020.0002] # BAMUM LETTER PHASE-A NDAANGGEUAET
+16835 ; [.3F80.0020.0002] # BAMUM LETTER PHASE-A KUOQ
+16836 ; [.3F81.0020.0002] # BAMUM LETTER PHASE-A MOOMEUT
+16837 ; [.3F82.0020.0002] # BAMUM LETTER PHASE-A SHUM
+16838 ; [.3F83.0020.0002] # BAMUM LETTER PHASE-A LOMMAE
+16839 ; [.3F84.0020.0002] # BAMUM LETTER PHASE-A FIRI
+1683A ; [.3F85.0020.0002] # BAMUM LETTER PHASE-A ROM
+1683B ; [.3F86.0020.0002] # BAMUM LETTER PHASE-A KPOQ
+1683C ; [.3F87.0020.0002] # BAMUM LETTER PHASE-A SOQ
+1683D ; [.3F88.0020.0002] # BAMUM LETTER PHASE-A MAP PIEET
+1683E ; [.3F89.0020.0002] # BAMUM LETTER PHASE-A SHIRAE
+1683F ; [.3F8A.0020.0002] # BAMUM LETTER PHASE-A NTAP
+16840 ; [.3F8B.0020.0002] # BAMUM LETTER PHASE-A SHOQ NSHUT YUM
+16841 ; [.3F8C.0020.0002] # BAMUM LETTER PHASE-A NYIT MONGKEUAEQ
+16842 ; [.3F8D.0020.0002] # BAMUM LETTER PHASE-A PAARAE
+16843 ; [.3F8E.0020.0002] # BAMUM LETTER PHASE-A NKAARAE
+16844 ; [.3F8F.0020.0002] # BAMUM LETTER PHASE-A UNKNOWN
+16845 ; [.3F90.0020.0002] # BAMUM LETTER PHASE-A NGGEN
+16846 ; [.3F91.0020.0002] # BAMUM LETTER PHASE-A MAESI
+16847 ; [.3F92.0020.0002] # BAMUM LETTER PHASE-A NJAM
+16848 ; [.3F93.0020.0002] # BAMUM LETTER PHASE-A MBANYI
+16849 ; [.3F94.0020.0002] # BAMUM LETTER PHASE-A NYET
+1684A ; [.3F95.0020.0002] # BAMUM LETTER PHASE-A TEUAEN
+1684B ; [.3F96.0020.0002] # BAMUM LETTER PHASE-A SOT
+1684C ; [.3F97.0020.0002] # BAMUM LETTER PHASE-A PAAM
+1684D ; [.3F98.0020.0002] # BAMUM LETTER PHASE-A NSHIEE
+1684E ; [.3F99.0020.0002] # BAMUM LETTER PHASE-A MAEM
+1684F ; [.3F9A.0020.0002] # BAMUM LETTER PHASE-A NYI
+16850 ; [.3F9B.0020.0002] # BAMUM LETTER PHASE-A KAQ
+16851 ; [.3F9C.0020.0002] # BAMUM LETTER PHASE-A NSHA
+16852 ; [.3F9D.0020.0002] # BAMUM LETTER PHASE-A VEE
+16853 ; [.3F9E.0020.0002] # BAMUM LETTER PHASE-A LU
+16854 ; [.3F9F.0020.0002] # BAMUM LETTER PHASE-A NEN
+16855 ; [.3FA0.0020.0002] # BAMUM LETTER PHASE-A NAQ
+16856 ; [.3FA1.0020.0002] # BAMUM LETTER PHASE-A MBAQ
+16857 ; [.3FA2.0020.0002] # BAMUM LETTER PHASE-B NSHUET
+16858 ; [.3FA3.0020.0002] # BAMUM LETTER PHASE-B TU MAEMGBIEE
+16859 ; [.3FA4.0020.0002] # BAMUM LETTER PHASE-B SIEE
+1685A ; [.3FA5.0020.0002] # BAMUM LETTER PHASE-B SET TU
+1685B ; [.3FA6.0020.0002] # BAMUM LETTER PHASE-B LOM NTEUM
+1685C ; [.3FA7.0020.0002] # BAMUM LETTER PHASE-B MBA MAELEE
+1685D ; [.3FA8.0020.0002] # BAMUM LETTER PHASE-B KIEEM
+1685E ; [.3FA9.0020.0002] # BAMUM LETTER PHASE-B YEURAE
+1685F ; [.3FAA.0020.0002] # BAMUM LETTER PHASE-B MBAARAE
+16860 ; [.3FAB.0020.0002] # BAMUM LETTER PHASE-B KAM
+16861 ; [.3FAC.0020.0002] # BAMUM LETTER PHASE-B PEESHI
+16862 ; [.3FAD.0020.0002] # BAMUM LETTER PHASE-B YAFU LEERAEWA
+16863 ; [.3FAE.0020.0002] # BAMUM LETTER PHASE-B LAM NSHUT NYAM
+16864 ; [.3FAF.0020.0002] # BAMUM LETTER PHASE-B NTIEE SHEUOQ
+16865 ; [.3FB0.0020.0002] # BAMUM LETTER PHASE-B NDU NJAA
+16866 ; [.3FB1.0020.0002] # BAMUM LETTER PHASE-B GHEUGHEUAEM
+16867 ; [.3FB2.0020.0002] # BAMUM LETTER PHASE-B PIT
+16868 ; [.3FB3.0020.0002] # BAMUM LETTER PHASE-B TU NSIEE
+16869 ; [.3FB4.0020.0002] # BAMUM LETTER PHASE-B SHET NJAQ
+1686A ; [.3FB5.0020.0002] # BAMUM LETTER PHASE-B SHEUAEQTU
+1686B ; [.3FB6.0020.0002] # BAMUM LETTER PHASE-B MFON TEUAEQ
+1686C ; [.3FB7.0020.0002] # BAMUM LETTER PHASE-B MBIT MBAAKET
+1686D ; [.3FB8.0020.0002] # BAMUM LETTER PHASE-B NYI NTEUM
+1686E ; [.3FB9.0020.0002] # BAMUM LETTER PHASE-B KEUPUQ
+1686F ; [.3FBA.0020.0002] # BAMUM LETTER PHASE-B GHEUGHEN
+16870 ; [.3FBB.0020.0002] # BAMUM LETTER PHASE-B KEUYEUX
+16871 ; [.3FBC.0020.0002] # BAMUM LETTER PHASE-B LAANAE
+16872 ; [.3FBD.0020.0002] # BAMUM LETTER PHASE-B PARUM
+16873 ; [.3FBE.0020.0002] # BAMUM LETTER PHASE-B VEUM
+16874 ; [.3FBF.0020.0002] # BAMUM LETTER PHASE-B NGKINDI MVOP
+16875 ; [.3FC0.0020.0002] # BAMUM LETTER PHASE-B NGGEU MBU
+16876 ; [.3FC1.0020.0002] # BAMUM LETTER PHASE-B WUAET
+16877 ; [.3FC2.0020.0002] # BAMUM LETTER PHASE-B SAKEUAE
+16878 ; [.3FC3.0020.0002] # BAMUM LETTER PHASE-B TAAM
+16879 ; [.3FC4.0020.0002] # BAMUM LETTER PHASE-B MEUQ
+1687A ; [.3FC5.0020.0002] # BAMUM LETTER PHASE-B NGGUOQ
+1687B ; [.3FC6.0020.0002] # BAMUM LETTER PHASE-B NGGUOQ LARGE
+1687C ; [.3FC7.0020.0002] # BAMUM LETTER PHASE-B MFIYAQ
+1687D ; [.3FC8.0020.0002] # BAMUM LETTER PHASE-B SUE
+1687E ; [.3FC9.0020.0002] # BAMUM LETTER PHASE-B MBEURI
+1687F ; [.3FCA.0020.0002] # BAMUM LETTER PHASE-B MONTIEEN
+16880 ; [.3FCB.0020.0002] # BAMUM LETTER PHASE-B NYAEMAE
+16881 ; [.3FCC.0020.0002] # BAMUM LETTER PHASE-B PUNGAAM
+16882 ; [.3FCD.0020.0002] # BAMUM LETTER PHASE-B MEUT NGGEET
+16883 ; [.3FCE.0020.0002] # BAMUM LETTER PHASE-B FEUX
+16884 ; [.3FCF.0020.0002] # BAMUM LETTER PHASE-B MBUOQ
+16885 ; [.3FD0.0020.0002] # BAMUM LETTER PHASE-B FEE
+16886 ; [.3FD1.0020.0002] # BAMUM LETTER PHASE-B KEUAEM
+16887 ; [.3FD2.0020.0002] # BAMUM LETTER PHASE-B MA NJEUAENA
+16888 ; [.3FD3.0020.0002] # BAMUM LETTER PHASE-B MA NJUQA
+16889 ; [.3FD4.0020.0002] # BAMUM LETTER PHASE-B LET
+1688A ; [.3FD5.0020.0002] # BAMUM LETTER PHASE-B NGGAAM
+1688B ; [.3FD6.0020.0002] # BAMUM LETTER PHASE-B NSEN
+1688C ; [.3FD7.0020.0002] # BAMUM LETTER PHASE-B MA
+1688D ; [.3FD8.0020.0002] # BAMUM LETTER PHASE-B KIQ
+1688E ; [.3FD9.0020.0002] # BAMUM LETTER PHASE-B NGOM
+1688F ; [.3FDA.0020.0002] # BAMUM LETTER PHASE-C NGKUE MAEMBA
+16890 ; [.3FDB.0020.0002] # BAMUM LETTER PHASE-C NZA
+16891 ; [.3FDC.0020.0002] # BAMUM LETTER PHASE-C YUM
+16892 ; [.3FDD.0020.0002] # BAMUM LETTER PHASE-C WANGKUOQ
+16893 ; [.3FDE.0020.0002] # BAMUM LETTER PHASE-C NGGEN
+16894 ; [.3FDF.0020.0002] # BAMUM LETTER PHASE-C NDEUAEREE
+16895 ; [.3FE0.0020.0002] # BAMUM LETTER PHASE-C NGKAQ
+16896 ; [.3FE1.0020.0002] # BAMUM LETTER PHASE-C GHARAE
+16897 ; [.3FE2.0020.0002] # BAMUM LETTER PHASE-C MBEEKEET
+16898 ; [.3FE3.0020.0002] # BAMUM LETTER PHASE-C GBAYI
+16899 ; [.3FE4.0020.0002] # BAMUM LETTER PHASE-C NYIR MKPARAQ MEUN
+1689A ; [.3FE5.0020.0002] # BAMUM LETTER PHASE-C NTU MBIT
+1689B ; [.3FE6.0020.0002] # BAMUM LETTER PHASE-C MBEUM
+1689C ; [.3FE7.0020.0002] # BAMUM LETTER PHASE-C PIRIEEN
+1689D ; [.3FE8.0020.0002] # BAMUM LETTER PHASE-C NDOMBU
+1689E ; [.3FE9.0020.0002] # BAMUM LETTER PHASE-C MBAA CABBAGE-TREE
+1689F ; [.3FEA.0020.0002] # BAMUM LETTER PHASE-C KEUSHEUAEP
+168A0 ; [.3FEB.0020.0002] # BAMUM LETTER PHASE-C GHAP
+168A1 ; [.3FEC.0020.0002] # BAMUM LETTER PHASE-C KEUKAQ
+168A2 ; [.3FED.0020.0002] # BAMUM LETTER PHASE-C YU MUOMAE
+168A3 ; [.3FEE.0020.0002] # BAMUM LETTER PHASE-C NZEUM
+168A4 ; [.3FEF.0020.0002] # BAMUM LETTER PHASE-C MBUE
+168A5 ; [.3FF0.0020.0002] # BAMUM LETTER PHASE-C NSEUAEN
+168A6 ; [.3FF1.0020.0002] # BAMUM LETTER PHASE-C MBIT
+168A7 ; [.3FF2.0020.0002] # BAMUM LETTER PHASE-C YEUQ
+168A8 ; [.3FF3.0020.0002] # BAMUM LETTER PHASE-C KPARAQ
+168A9 ; [.3FF4.0020.0002] # BAMUM LETTER PHASE-C KAA
+168AA ; [.3FF5.0020.0002] # BAMUM LETTER PHASE-C SEUX
+168AB ; [.3FF6.0020.0002] # BAMUM LETTER PHASE-C NDIDA
+168AC ; [.3FF7.0020.0002] # BAMUM LETTER PHASE-C TAASHAE
+168AD ; [.3FF8.0020.0002] # BAMUM LETTER PHASE-C NJUEQ
+168AE ; [.3FF9.0020.0002] # BAMUM LETTER PHASE-C TITA YUE
+168AF ; [.3FFA.0020.0002] # BAMUM LETTER PHASE-C SUAET
+168B0 ; [.3FFB.0020.0002] # BAMUM LETTER PHASE-C NGGUAEN NYAM
+168B1 ; [.3FFC.0020.0002] # BAMUM LETTER PHASE-C VEUX
+168B2 ; [.3FFD.0020.0002] # BAMUM LETTER PHASE-C NANSANAQ
+168B3 ; [.3FFE.0020.0002] # BAMUM LETTER PHASE-C MA KEUAERI
+168B4 ; [.3FFF.0020.0002] # BAMUM LETTER PHASE-C NTAA
+168B5 ; [.4000.0020.0002] # BAMUM LETTER PHASE-C NGGUON
+168B6 ; [.4001.0020.0002] # BAMUM LETTER PHASE-C LAP
+168B7 ; [.4002.0020.0002] # BAMUM LETTER PHASE-C MBIRIEEN
+168B8 ; [.4003.0020.0002] # BAMUM LETTER PHASE-C MGBASAQ
+168B9 ; [.4004.0020.0002] # BAMUM LETTER PHASE-C NTEUNGBA
+168BA ; [.4005.0020.0002] # BAMUM LETTER PHASE-C TEUTEUX
+168BB ; [.4006.0020.0002] # BAMUM LETTER PHASE-C NGGUM
+168BC ; [.4007.0020.0002] # BAMUM LETTER PHASE-C FUE
+168BD ; [.4008.0020.0002] # BAMUM LETTER PHASE-C NDEUT
+168BE ; [.4009.0020.0002] # BAMUM LETTER PHASE-C NSA
+168BF ; [.400A.0020.0002] # BAMUM LETTER PHASE-C NSHAQ
+168C0 ; [.400B.0020.0002] # BAMUM LETTER PHASE-C BUNG
+168C1 ; [.400C.0020.0002] # BAMUM LETTER PHASE-C VEUAEPEN
+168C2 ; [.400D.0020.0002] # BAMUM LETTER PHASE-C MBERAE
+168C3 ; [.400E.0020.0002] # BAMUM LETTER PHASE-C RU
+168C4 ; [.400F.0020.0002] # BAMUM LETTER PHASE-C NJAEM
+168C5 ; [.4010.0020.0002] # BAMUM LETTER PHASE-C LAM
+168C6 ; [.4011.0020.0002] # BAMUM LETTER PHASE-C TITUAEP
+168C7 ; [.4012.0020.0002] # BAMUM LETTER PHASE-C NSUOT NGOM
+168C8 ; [.4013.0020.0002] # BAMUM LETTER PHASE-C NJEEEE
+168C9 ; [.4014.0020.0002] # BAMUM LETTER PHASE-C KET
+168CA ; [.4015.0020.0002] # BAMUM LETTER PHASE-C NGGU
+168CB ; [.4016.0020.0002] # BAMUM LETTER PHASE-C MAESI
+168CC ; [.4017.0020.0002] # BAMUM LETTER PHASE-C MBUAEM
+168CD ; [.4018.0020.0002] # BAMUM LETTER PHASE-C LU
+168CE ; [.4019.0020.0002] # BAMUM LETTER PHASE-C KUT
+168CF ; [.401A.0020.0002] # BAMUM LETTER PHASE-C NJAM
+168D0 ; [.401B.0020.0002] # BAMUM LETTER PHASE-C NGOM
+168D1 ; [.401C.0020.0002] # BAMUM LETTER PHASE-C WUP
+168D2 ; [.401D.0020.0002] # BAMUM LETTER PHASE-C NGGUEET
+168D3 ; [.401E.0020.0002] # BAMUM LETTER PHASE-C NSOM
+168D4 ; [.401F.0020.0002] # BAMUM LETTER PHASE-C NTEN
+168D5 ; [.4020.0020.0002] # BAMUM LETTER PHASE-C KUOP NKAARAE
+168D6 ; [.4021.0020.0002] # BAMUM LETTER PHASE-C NSUN
+168D7 ; [.4022.0020.0002] # BAMUM LETTER PHASE-C NDAM
+168D8 ; [.4023.0020.0002] # BAMUM LETTER PHASE-C MA NSIEE
+168D9 ; [.4024.0020.0002] # BAMUM LETTER PHASE-C YAA
+168DA ; [.4025.0020.0002] # BAMUM LETTER PHASE-C NDAP
+168DB ; [.4026.0020.0002] # BAMUM LETTER PHASE-C SHUEQ
+168DC ; [.4027.0020.0002] # BAMUM LETTER PHASE-C SETFON
+168DD ; [.4028.0020.0002] # BAMUM LETTER PHASE-C MBI
+168DE ; [.4029.0020.0002] # BAMUM LETTER PHASE-C MAEMBA
+168DF ; [.402A.0020.0002] # BAMUM LETTER PHASE-C MBANYI
+168E0 ; [.402B.0020.0002] # BAMUM LETTER PHASE-C KEUSEUX
+168E1 ; [.402C.0020.0002] # BAMUM LETTER PHASE-C MBEUX
+168E2 ; [.402D.0020.0002] # BAMUM LETTER PHASE-C KEUM
+168E3 ; [.402E.0020.0002] # BAMUM LETTER PHASE-C MBAA PICKET
+168E4 ; [.402F.0020.0002] # BAMUM LETTER PHASE-C YUWOQ
+168E5 ; [.4030.0020.0002] # BAMUM LETTER PHASE-C NJEUX
+168E6 ; [.4031.0020.0002] # BAMUM LETTER PHASE-C MIEE
+168E7 ; [.4032.0020.0002] # BAMUM LETTER PHASE-C MUAE
+168E8 ; [.4033.0020.0002] # BAMUM LETTER PHASE-C SHIQ
+168E9 ; [.4034.0020.0002] # BAMUM LETTER PHASE-C KEN LAW
+168EA ; [.4035.0020.0002] # BAMUM LETTER PHASE-C KEN FATIGUE
+168EB ; [.4036.0020.0002] # BAMUM LETTER PHASE-C NGAQ
+168EC ; [.4037.0020.0002] # BAMUM LETTER PHASE-C NAQ
+168ED ; [.4038.0020.0002] # BAMUM LETTER PHASE-C LIQ
+168EE ; [.4039.0020.0002] # BAMUM LETTER PHASE-C PIN
+168EF ; [.403A.0020.0002] # BAMUM LETTER PHASE-C PEN
+168F0 ; [.403B.0020.0002] # BAMUM LETTER PHASE-C TET
+168F1 ; [.403C.0020.0002] # BAMUM LETTER PHASE-D MBUO
+168F2 ; [.403D.0020.0002] # BAMUM LETTER PHASE-D WAP
+168F3 ; [.403E.0020.0002] # BAMUM LETTER PHASE-D NJI
+168F4 ; [.403F.0020.0002] # BAMUM LETTER PHASE-D MFON
+168F5 ; [.4040.0020.0002] # BAMUM LETTER PHASE-D NJIEE
+168F6 ; [.4041.0020.0002] # BAMUM LETTER PHASE-D LIEE
+168F7 ; [.4042.0020.0002] # BAMUM LETTER PHASE-D NJEUT
+168F8 ; [.4043.0020.0002] # BAMUM LETTER PHASE-D NSHEE
+168F9 ; [.4044.0020.0002] # BAMUM LETTER PHASE-D NGGAAMAE
+168FA ; [.4045.0020.0002] # BAMUM LETTER PHASE-D NYAM
+168FB ; [.4046.0020.0002] # BAMUM LETTER PHASE-D WUAEN
+168FC ; [.4047.0020.0002] # BAMUM LETTER PHASE-D NGKUN
+168FD ; [.4048.0020.0002] # BAMUM LETTER PHASE-D SHEE
+168FE ; [.4049.0020.0002] # BAMUM LETTER PHASE-D NGKAP
+168FF ; [.404A.0020.0002] # BAMUM LETTER PHASE-D KEUAETMEUN
+16900 ; [.404B.0020.0002] # BAMUM LETTER PHASE-D TEUT
+16901 ; [.404C.0020.0002] # BAMUM LETTER PHASE-D SHEUAE
+16902 ; [.404D.0020.0002] # BAMUM LETTER PHASE-D NJAP
+16903 ; [.404E.0020.0002] # BAMUM LETTER PHASE-D SUE
+16904 ; [.404F.0020.0002] # BAMUM LETTER PHASE-D KET
+16905 ; [.4050.0020.0002] # BAMUM LETTER PHASE-D YAEMMAE
+16906 ; [.4051.0020.0002] # BAMUM LETTER PHASE-D KUOM
+16907 ; [.4052.0020.0002] # BAMUM LETTER PHASE-D SAP
+16908 ; [.4053.0020.0002] # BAMUM LETTER PHASE-D MFEUT
+16909 ; [.4054.0020.0002] # BAMUM LETTER PHASE-D NDEUX
+1690A ; [.4055.0020.0002] # BAMUM LETTER PHASE-D MALEERI
+1690B ; [.4056.0020.0002] # BAMUM LETTER PHASE-D MEUT
+1690C ; [.4057.0020.0002] # BAMUM LETTER PHASE-D SEUAEQ
+1690D ; [.4058.0020.0002] # BAMUM LETTER PHASE-D YEN
+1690E ; [.4059.0020.0002] # BAMUM LETTER PHASE-D NJEUAEM
+1690F ; [.405A.0020.0002] # BAMUM LETTER PHASE-D KEUOT MBUAE
+16910 ; [.405B.0020.0002] # BAMUM LETTER PHASE-D NGKEURI
+16911 ; [.405C.0020.0002] # BAMUM LETTER PHASE-D TU
+16912 ; [.405D.0020.0002] # BAMUM LETTER PHASE-D GHAA
+16913 ; [.405E.0020.0002] # BAMUM LETTER PHASE-D NGKYEE
+16914 ; [.405F.0020.0002] # BAMUM LETTER PHASE-D FEUFEUAET
+16915 ; [.4060.0020.0002] # BAMUM LETTER PHASE-D NDEE
+16916 ; [.4061.0020.0002] # BAMUM LETTER PHASE-D MGBOFUM
+16917 ; [.4062.0020.0002] # BAMUM LETTER PHASE-D LEUAEP
+16918 ; [.4063.0020.0002] # BAMUM LETTER PHASE-D NDON
+16919 ; [.4064.0020.0002] # BAMUM LETTER PHASE-D MONI
+1691A ; [.4065.0020.0002] # BAMUM LETTER PHASE-D MGBEUN
+1691B ; [.4066.0020.0002] # BAMUM LETTER PHASE-D PUUT
+1691C ; [.4067.0020.0002] # BAMUM LETTER PHASE-D MGBIEE
+1691D ; [.4068.0020.0002] # BAMUM LETTER PHASE-D MFO
+1691E ; [.4069.0020.0002] # BAMUM LETTER PHASE-D LUM
+1691F ; [.406A.0020.0002] # BAMUM LETTER PHASE-D NSIEEP
+16920 ; [.406B.0020.0002] # BAMUM LETTER PHASE-D MBAA
+16921 ; [.406C.0020.0002] # BAMUM LETTER PHASE-D KWAET
+16922 ; [.406D.0020.0002] # BAMUM LETTER PHASE-D NYET
+16923 ; [.406E.0020.0002] # BAMUM LETTER PHASE-D TEUAEN
+16924 ; [.406F.0020.0002] # BAMUM LETTER PHASE-D SOT
+16925 ; [.4070.0020.0002] # BAMUM LETTER PHASE-D YUWOQ
+16926 ; [.4071.0020.0002] # BAMUM LETTER PHASE-D KEUM
+16927 ; [.4072.0020.0002] # BAMUM LETTER PHASE-D RAEM
+16928 ; [.4073.0020.0002] # BAMUM LETTER PHASE-D TEEEE
+16929 ; [.4074.0020.0002] # BAMUM LETTER PHASE-D NGKEUAEQ
+1692A ; [.4075.0020.0002] # BAMUM LETTER PHASE-D MFEUAE
+1692B ; [.4076.0020.0002] # BAMUM LETTER PHASE-D NSIEET
+1692C ; [.4077.0020.0002] # BAMUM LETTER PHASE-D KEUP
+1692D ; [.4078.0020.0002] # BAMUM LETTER PHASE-D PIP
+1692E ; [.4079.0020.0002] # BAMUM LETTER PHASE-D PEUTAE
+1692F ; [.407A.0020.0002] # BAMUM LETTER PHASE-D NYUE
+16930 ; [.407B.0020.0002] # BAMUM LETTER PHASE-D LET
+16931 ; [.407C.0020.0002] # BAMUM LETTER PHASE-D NGGAAM
+16932 ; [.407D.0020.0002] # BAMUM LETTER PHASE-D MFIEE
+16933 ; [.407E.0020.0002] # BAMUM LETTER PHASE-D NGGWAEN
+16934 ; [.407F.0020.0002] # BAMUM LETTER PHASE-D YUOM
+16935 ; [.4080.0020.0002] # BAMUM LETTER PHASE-D PAP
+16936 ; [.4081.0020.0002] # BAMUM LETTER PHASE-D YUOP
+16937 ; [.4082.0020.0002] # BAMUM LETTER PHASE-D NDAM
+16938 ; [.4083.0020.0002] # BAMUM LETTER PHASE-D NTEUM
+16939 ; [.4084.0020.0002] # BAMUM LETTER PHASE-D SUAE
+1693A ; [.4085.0020.0002] # BAMUM LETTER PHASE-D KUN
+1693B ; [.4086.0020.0002] # BAMUM LETTER PHASE-D NGGEUX
+1693C ; [.4087.0020.0002] # BAMUM LETTER PHASE-D NGKIEE
+1693D ; [.4088.0020.0002] # BAMUM LETTER PHASE-D TUOT
+1693E ; [.4089.0020.0002] # BAMUM LETTER PHASE-D MEUN
+1693F ; [.408A.0020.0002] # BAMUM LETTER PHASE-D KUQ
+16940 ; [.408B.0020.0002] # BAMUM LETTER PHASE-D NSUM
+16941 ; [.408C.0020.0002] # BAMUM LETTER PHASE-D TEUN
+16942 ; [.408D.0020.0002] # BAMUM LETTER PHASE-D MAENJET
+16943 ; [.408E.0020.0002] # BAMUM LETTER PHASE-D NGGAP
+16944 ; [.408F.0020.0002] # BAMUM LETTER PHASE-D LEUM
+16945 ; [.4090.0020.0002] # BAMUM LETTER PHASE-D NGGUOM
+16946 ; [.4091.0020.0002] # BAMUM LETTER PHASE-D NSHUT
+16947 ; [.4092.0020.0002] # BAMUM LETTER PHASE-D NJUEQ
+16948 ; [.4093.0020.0002] # BAMUM LETTER PHASE-D GHEUAE
+16949 ; [.4094.0020.0002] # BAMUM LETTER PHASE-D KU
+1694A ; [.4095.0020.0002] # BAMUM LETTER PHASE-D REN OLD
+1694B ; [.4096.0020.0002] # BAMUM LETTER PHASE-D TAE
+1694C ; [.4097.0020.0002] # BAMUM LETTER PHASE-D TOQ
+1694D ; [.4098.0020.0002] # BAMUM LETTER PHASE-D NYI
+1694E ; [.4099.0020.0002] # BAMUM LETTER PHASE-D RII
+1694F ; [.409A.0020.0002] # BAMUM LETTER PHASE-D LEEEE
+16950 ; [.409B.0020.0002] # BAMUM LETTER PHASE-D MEEEE
+16951 ; [.409C.0020.0002] # BAMUM LETTER PHASE-D M
+16952 ; [.409D.0020.0002] # BAMUM LETTER PHASE-D SUU
+16953 ; [.409E.0020.0002] # BAMUM LETTER PHASE-D MU
+16954 ; [.409F.0020.0002] # BAMUM LETTER PHASE-D SHII
+16955 ; [.40A0.0020.0002] # BAMUM LETTER PHASE-D SHEUX
+16956 ; [.40A1.0020.0002] # BAMUM LETTER PHASE-D KYEE
+16957 ; [.40A2.0020.0002] # BAMUM LETTER PHASE-D NU
+16958 ; [.40A3.0020.0002] # BAMUM LETTER PHASE-D SHU
+16959 ; [.40A4.0020.0002] # BAMUM LETTER PHASE-D NTEE
+1695A ; [.40A5.0020.0002] # BAMUM LETTER PHASE-D PEE
+1695B ; [.40A6.0020.0002] # BAMUM LETTER PHASE-D NI
+1695C ; [.40A7.0020.0002] # BAMUM LETTER PHASE-D SHOQ
+1695D ; [.40A8.0020.0002] # BAMUM LETTER PHASE-D PUQ
+1695E ; [.40A9.0020.0002] # BAMUM LETTER PHASE-D MVOP
+1695F ; [.40AA.0020.0002] # BAMUM LETTER PHASE-D LOQ
+16960 ; [.40AB.0020.0002] # BAMUM LETTER PHASE-D REN MUCH
+16961 ; [.40AC.0020.0002] # BAMUM LETTER PHASE-D TI
+16962 ; [.40AD.0020.0002] # BAMUM LETTER PHASE-D NTUU
+16963 ; [.40AE.0020.0002] # BAMUM LETTER PHASE-D MBAA SEVEN
+16964 ; [.40AF.0020.0002] # BAMUM LETTER PHASE-D SAQ
+16965 ; [.40B0.0020.0002] # BAMUM LETTER PHASE-D FAA
+16966 ; [.40B1.0020.0002] # BAMUM LETTER PHASE-E NDAP
+16967 ; [.40B2.0020.0002] # BAMUM LETTER PHASE-E TOON
+16968 ; [.40B3.0020.0002] # BAMUM LETTER PHASE-E MBEUM
+16969 ; [.40B4.0020.0002] # BAMUM LETTER PHASE-E LAP
+1696A ; [.40B5.0020.0002] # BAMUM LETTER PHASE-E VOM
+1696B ; [.40B6.0020.0002] # BAMUM LETTER PHASE-E LOON
+1696C ; [.40B7.0020.0002] # BAMUM LETTER PHASE-E PAA
+1696D ; [.40B8.0020.0002] # BAMUM LETTER PHASE-E SOM
+1696E ; [.40B9.0020.0002] # BAMUM LETTER PHASE-E RAQ
+1696F ; [.40BA.0020.0002] # BAMUM LETTER PHASE-E NSHUOP
+16970 ; [.40BB.0020.0002] # BAMUM LETTER PHASE-E NDUN
+16971 ; [.40BC.0020.0002] # BAMUM LETTER PHASE-E PUAE
+16972 ; [.40BD.0020.0002] # BAMUM LETTER PHASE-E TAM
+16973 ; [.40BE.0020.0002] # BAMUM LETTER PHASE-E NGKA
+16974 ; [.40BF.0020.0002] # BAMUM LETTER PHASE-E KPEUX
+16975 ; [.40C0.0020.0002] # BAMUM LETTER PHASE-E WUO
+16976 ; [.40C1.0020.0002] # BAMUM LETTER PHASE-E SEE
+16977 ; [.40C2.0020.0002] # BAMUM LETTER PHASE-E NGGEUAET
+16978 ; [.40C3.0020.0002] # BAMUM LETTER PHASE-E PAAM
+16979 ; [.40C4.0020.0002] # BAMUM LETTER PHASE-E TOO
+1697A ; [.40C5.0020.0002] # BAMUM LETTER PHASE-E KUOP
+1697B ; [.40C6.0020.0002] # BAMUM LETTER PHASE-E LOM
+1697C ; [.40C7.0020.0002] # BAMUM LETTER PHASE-E NSHIEE
+1697D ; [.40C8.0020.0002] # BAMUM LETTER PHASE-E NGOP
+1697E ; [.40C9.0020.0002] # BAMUM LETTER PHASE-E MAEM
+1697F ; [.40CA.0020.0002] # BAMUM LETTER PHASE-E NGKEUX
+16980 ; [.40CB.0020.0002] # BAMUM LETTER PHASE-E NGOQ
+16981 ; [.40CC.0020.0002] # BAMUM LETTER PHASE-E NSHUE
+16982 ; [.40CD.0020.0002] # BAMUM LETTER PHASE-E RIMGBA
+16983 ; [.40CE.0020.0002] # BAMUM LETTER PHASE-E NJEUX
+16984 ; [.40CF.0020.0002] # BAMUM LETTER PHASE-E PEEM
+16985 ; [.40D0.0020.0002] # BAMUM LETTER PHASE-E SAA
+16986 ; [.40D1.0020.0002] # BAMUM LETTER PHASE-E NGGURAE
+16987 ; [.40D2.0020.0002] # BAMUM LETTER PHASE-E MGBA
+16988 ; [.40D3.0020.0002] # BAMUM LETTER PHASE-E GHEUX
+16989 ; [.40D4.0020.0002] # BAMUM LETTER PHASE-E NGKEUAEM
+1698A ; [.40D5.0020.0002] # BAMUM LETTER PHASE-E NJAEMLI
+1698B ; [.40D6.0020.0002] # BAMUM LETTER PHASE-E MAP
+1698C ; [.40D7.0020.0002] # BAMUM LETTER PHASE-E LOOT
+1698D ; [.40D8.0020.0002] # BAMUM LETTER PHASE-E NGGEEEE
+1698E ; [.40D9.0020.0002] # BAMUM LETTER PHASE-E NDIQ
+1698F ; [.40DA.0020.0002] # BAMUM LETTER PHASE-E TAEN NTEUM
+16990 ; [.40DB.0020.0002] # BAMUM LETTER PHASE-E SET
+16991 ; [.40DC.0020.0002] # BAMUM LETTER PHASE-E PUM
+16992 ; [.40DD.0020.0002] # BAMUM LETTER PHASE-E NDAA SOFTNESS
+16993 ; [.40DE.0020.0002] # BAMUM LETTER PHASE-E NGGUAESHAE NYAM
+16994 ; [.40DF.0020.0002] # BAMUM LETTER PHASE-E YIEE
+16995 ; [.40E0.0020.0002] # BAMUM LETTER PHASE-E GHEUN
+16996 ; [.40E1.0020.0002] # BAMUM LETTER PHASE-E TUAE
+16997 ; [.40E2.0020.0002] # BAMUM LETTER PHASE-E YEUAE
+16998 ; [.40E3.0020.0002] # BAMUM LETTER PHASE-E PO
+16999 ; [.40E4.0020.0002] # BAMUM LETTER PHASE-E TUMAE
+1699A ; [.40E5.0020.0002] # BAMUM LETTER PHASE-E KEUAE
+1699B ; [.40E6.0020.0002] # BAMUM LETTER PHASE-E SUAEN
+1699C ; [.40E7.0020.0002] # BAMUM LETTER PHASE-E TEUAEQ
+1699D ; [.40E8.0020.0002] # BAMUM LETTER PHASE-E VEUAE
+1699E ; [.40E9.0020.0002] # BAMUM LETTER PHASE-E WEUX
+1699F ; [.40EA.0020.0002] # BAMUM LETTER PHASE-E LAAM
+169A0 ; [.40EB.0020.0002] # BAMUM LETTER PHASE-E PU
+169A1 ; [.40EC.0020.0002] # BAMUM LETTER PHASE-E TAAQ
+169A2 ; [.40ED.0020.0002] # BAMUM LETTER PHASE-E GHAAMAE
+169A3 ; [.40EE.0020.0002] # BAMUM LETTER PHASE-E NGEUREUT
+169A4 ; [.40EF.0020.0002] # BAMUM LETTER PHASE-E SHEUAEQ
+169A5 ; [.40F0.0020.0002] # BAMUM LETTER PHASE-E MGBEN
+169A6 ; [.40F1.0020.0002] # BAMUM LETTER PHASE-E MBEE
+169A7 ; [.40F2.0020.0002] # BAMUM LETTER PHASE-E NZAQ
+169A8 ; [.40F3.0020.0002] # BAMUM LETTER PHASE-E NKOM
+169A9 ; [.40F4.0020.0002] # BAMUM LETTER PHASE-E GBET
+169AA ; [.40F5.0020.0002] # BAMUM LETTER PHASE-E TUM
+169AB ; [.40F6.0020.0002] # BAMUM LETTER PHASE-E KUET
+169AC ; [.40F7.0020.0002] # BAMUM LETTER PHASE-E YAP
+169AD ; [.40F8.0020.0002] # BAMUM LETTER PHASE-E NYI CLEAVER
+169AE ; [.40F9.0020.0002] # BAMUM LETTER PHASE-E YIT
+169AF ; [.40FA.0020.0002] # BAMUM LETTER PHASE-E MFEUQ
+169B0 ; [.40FB.0020.0002] # BAMUM LETTER PHASE-E NDIAQ
+169B1 ; [.40FC.0020.0002] # BAMUM LETTER PHASE-E PIEEQ
+169B2 ; [.40FD.0020.0002] # BAMUM LETTER PHASE-E YUEQ
+169B3 ; [.40FE.0020.0002] # BAMUM LETTER PHASE-E LEUAEM
+169B4 ; [.40FF.0020.0002] # BAMUM LETTER PHASE-E FUE
+169B5 ; [.4100.0020.0002] # BAMUM LETTER PHASE-E GBEUX
+169B6 ; [.4101.0020.0002] # BAMUM LETTER PHASE-E NGKUP
+169B7 ; [.4102.0020.0002] # BAMUM LETTER PHASE-E KET
+169B8 ; [.4103.0020.0002] # BAMUM LETTER PHASE-E MAE
+169B9 ; [.4104.0020.0002] # BAMUM LETTER PHASE-E NGKAAMI
+169BA ; [.4105.0020.0002] # BAMUM LETTER PHASE-E GHET
+169BB ; [.4106.0020.0002] # BAMUM LETTER PHASE-E FA
+169BC ; [.4107.0020.0002] # BAMUM LETTER PHASE-E NTUM
+169BD ; [.4108.0020.0002] # BAMUM LETTER PHASE-E PEUT
+169BE ; [.4109.0020.0002] # BAMUM LETTER PHASE-E YEUM
+169BF ; [.410A.0020.0002] # BAMUM LETTER PHASE-E NGGEUAE
+169C0 ; [.410B.0020.0002] # BAMUM LETTER PHASE-E NYI BETWEEN
+169C1 ; [.410C.0020.0002] # BAMUM LETTER PHASE-E NZUQ
+169C2 ; [.410D.0020.0002] # BAMUM LETTER PHASE-E POON
+169C3 ; [.410E.0020.0002] # BAMUM LETTER PHASE-E MIEE
+169C4 ; [.410F.0020.0002] # BAMUM LETTER PHASE-E FUET
+169C5 ; [.4110.0020.0002] # BAMUM LETTER PHASE-E NAE
+169C6 ; [.4111.0020.0002] # BAMUM LETTER PHASE-E MUAE
+169C7 ; [.4112.0020.0002] # BAMUM LETTER PHASE-E GHEUAE
+169C8 ; [.4113.0020.0002] # BAMUM LETTER PHASE-E FU I
+169C9 ; [.4114.0020.0002] # BAMUM LETTER PHASE-E MVI
+169CA ; [.4115.0020.0002] # BAMUM LETTER PHASE-E PUAQ
+169CB ; [.4116.0020.0002] # BAMUM LETTER PHASE-E NGKUM
+169CC ; [.4117.0020.0002] # BAMUM LETTER PHASE-E KUT
+169CD ; [.4118.0020.0002] # BAMUM LETTER PHASE-E PIET
+169CE ; [.4119.0020.0002] # BAMUM LETTER PHASE-E NTAP
+169CF ; [.411A.0020.0002] # BAMUM LETTER PHASE-E YEUAET
+169D0 ; [.411B.0020.0002] # BAMUM LETTER PHASE-E NGGUP
+169D1 ; [.411C.0020.0002] # BAMUM LETTER PHASE-E PA PEOPLE
+169D2 ; [.411D.0020.0002] # BAMUM LETTER PHASE-E FU CALL
+169D3 ; [.411E.0020.0002] # BAMUM LETTER PHASE-E FOM
+169D4 ; [.411F.0020.0002] # BAMUM LETTER PHASE-E NJEE
+169D5 ; [.4120.0020.0002] # BAMUM LETTER PHASE-E A
+169D6 ; [.4121.0020.0002] # BAMUM LETTER PHASE-E TOQ
+169D7 ; [.4122.0020.0002] # BAMUM LETTER PHASE-E O
+169D8 ; [.4123.0020.0002] # BAMUM LETTER PHASE-E I
+169D9 ; [.4124.0020.0002] # BAMUM LETTER PHASE-E LAQ
+169DA ; [.4125.0020.0002] # BAMUM LETTER PHASE-E PA PLURAL
+169DB ; [.4126.0020.0002] # BAMUM LETTER PHASE-E TAA
+169DC ; [.4127.0020.0002] # BAMUM LETTER PHASE-E TAQ
+169DD ; [.4128.0020.0002] # BAMUM LETTER PHASE-E NDAA MY HOUSE
+169DE ; [.4129.0020.0002] # BAMUM LETTER PHASE-E SHIQ
+169DF ; [.412A.0020.0002] # BAMUM LETTER PHASE-E YEUX
+169E0 ; [.412B.0020.0002] # BAMUM LETTER PHASE-E NGUAE
+169E1 ; [.412C.0020.0002] # BAMUM LETTER PHASE-E YUAEN
+169E2 ; [.412D.0020.0002] # BAMUM LETTER PHASE-E YOQ SWIMMING
+169E3 ; [.412E.0020.0002] # BAMUM LETTER PHASE-E YOQ COVER
+169E4 ; [.412F.0020.0002] # BAMUM LETTER PHASE-E YUQ
+169E5 ; [.4130.0020.0002] # BAMUM LETTER PHASE-E YUN
+169E6 ; [.4131.0020.0002] # BAMUM LETTER PHASE-E KEUX
+169E7 ; [.4132.0020.0002] # BAMUM LETTER PHASE-E PEUX
+169E8 ; [.4133.0020.0002] # BAMUM LETTER PHASE-E NJEE EPOCH
+169E9 ; [.4134.0020.0002] # BAMUM LETTER PHASE-E PUE
+169EA ; [.4135.0020.0002] # BAMUM LETTER PHASE-E WUE
+169EB ; [.4136.0020.0002] # BAMUM LETTER PHASE-E FEE
+169EC ; [.4137.0020.0002] # BAMUM LETTER PHASE-E VEE
+169ED ; [.4138.0020.0002] # BAMUM LETTER PHASE-E LU
+169EE ; [.4139.0020.0002] # BAMUM LETTER PHASE-E MI
+169EF ; [.413A.0020.0002] # BAMUM LETTER PHASE-E REUX
+169F0 ; [.413B.0020.0002] # BAMUM LETTER PHASE-E RAE
+169F1 ; [.413C.0020.0002] # BAMUM LETTER PHASE-E NGUAET
+169F2 ; [.413D.0020.0002] # BAMUM LETTER PHASE-E NGA
+169F3 ; [.413E.0020.0002] # BAMUM LETTER PHASE-E SHO
+169F4 ; [.413F.0020.0002] # BAMUM LETTER PHASE-E SHOQ
+169F5 ; [.4140.0020.0002] # BAMUM LETTER PHASE-E FU REMEDY
+169F6 ; [.4141.0020.0002] # BAMUM LETTER PHASE-E NA
+169F7 ; [.4142.0020.0002] # BAMUM LETTER PHASE-E PI
+169F8 ; [.4143.0020.0002] # BAMUM LETTER PHASE-E LOQ
+169F9 ; [.4144.0020.0002] # BAMUM LETTER PHASE-E KO
+169FA ; [.4145.0020.0002] # BAMUM LETTER PHASE-E MEN
+169FB ; [.4146.0020.0002] # BAMUM LETTER PHASE-E MA
+169FC ; [.4147.0020.0002] # BAMUM LETTER PHASE-E MAQ
+169FD ; [.4148.0020.0002] # BAMUM LETTER PHASE-E TEU
+169FE ; [.4149.0020.0002] # BAMUM LETTER PHASE-E KI
+169FF ; [.414A.0020.0002] # BAMUM LETTER PHASE-E MON
+16A00 ; [.414B.0020.0002] # BAMUM LETTER PHASE-E TEN
+16A01 ; [.414C.0020.0002] # BAMUM LETTER PHASE-E FAQ
+16A02 ; [.414D.0020.0002] # BAMUM LETTER PHASE-E GHOM
+16A03 ; [.414E.0020.0002] # BAMUM LETTER PHASE-F KA
+16A04 ; [.414F.0020.0002] # BAMUM LETTER PHASE-F U
+16A05 ; [.4150.0020.0002] # BAMUM LETTER PHASE-F KU
+16A06 ; [.4151.0020.0002] # BAMUM LETTER PHASE-F EE
+16A07 ; [.4152.0020.0002] # BAMUM LETTER PHASE-F REE
+16A08 ; [.4153.0020.0002] # BAMUM LETTER PHASE-F TAE
+16A09 ; [.4154.0020.0002] # BAMUM LETTER PHASE-F NYI
+16A0A ; [.4155.0020.0002] # BAMUM LETTER PHASE-F LA
+16A0B ; [.4156.0020.0002] # BAMUM LETTER PHASE-F RII
+16A0C ; [.4157.0020.0002] # BAMUM LETTER PHASE-F RIEE
+16A0D ; [.4158.0020.0002] # BAMUM LETTER PHASE-F MEEEE
+16A0E ; [.4159.0020.0002] # BAMUM LETTER PHASE-F TAA
+16A0F ; [.415A.0020.0002] # BAMUM LETTER PHASE-F NDAA
+16A10 ; [.415B.0020.0002] # BAMUM LETTER PHASE-F NJAEM
+16A11 ; [.415C.0020.0002] # BAMUM LETTER PHASE-F M
+16A12 ; [.415D.0020.0002] # BAMUM LETTER PHASE-F SUU
+16A13 ; [.415E.0020.0002] # BAMUM LETTER PHASE-F SHII
+16A14 ; [.415F.0020.0002] # BAMUM LETTER PHASE-F SI
+16A15 ; [.4160.0020.0002] # BAMUM LETTER PHASE-F SEUX
+16A16 ; [.4161.0020.0002] # BAMUM LETTER PHASE-F KYEE
+16A17 ; [.4162.0020.0002] # BAMUM LETTER PHASE-F KET
+16A18 ; [.4163.0020.0002] # BAMUM LETTER PHASE-F NUAE
+16A19 ; [.4164.0020.0002] # BAMUM LETTER PHASE-F NU
+16A1A ; [.4165.0020.0002] # BAMUM LETTER PHASE-F NJUAE
+16A1B ; [.4166.0020.0002] # BAMUM LETTER PHASE-F YOQ
+16A1C ; [.4167.0020.0002] # BAMUM LETTER PHASE-F SHU
+16A1D ; [.4168.0020.0002] # BAMUM LETTER PHASE-F YA
+16A1E ; [.4169.0020.0002] # BAMUM LETTER PHASE-F NSHA
+16A1F ; [.416A.0020.0002] # BAMUM LETTER PHASE-F PEUX
+16A20 ; [.416B.0020.0002] # BAMUM LETTER PHASE-F NTEE
+16A21 ; [.416C.0020.0002] # BAMUM LETTER PHASE-F WUE
+16A22 ; [.416D.0020.0002] # BAMUM LETTER PHASE-F PEE
+16A23 ; [.416E.0020.0002] # BAMUM LETTER PHASE-F RU
+16A24 ; [.416F.0020.0002] # BAMUM LETTER PHASE-F NI
+16A25 ; [.4170.0020.0002] # BAMUM LETTER PHASE-F REUX
+16A26 ; [.4171.0020.0002] # BAMUM LETTER PHASE-F KEN
+16A27 ; [.4172.0020.0002] # BAMUM LETTER PHASE-F NGKWAEN
+16A28 ; [.4173.0020.0002] # BAMUM LETTER PHASE-F NGGA
+16A29 ; [.4174.0020.0002] # BAMUM LETTER PHASE-F SHO
+16A2A ; [.4175.0020.0002] # BAMUM LETTER PHASE-F PUAE
+16A2B ; [.4176.0020.0002] # BAMUM LETTER PHASE-F FOM
+16A2C ; [.4177.0020.0002] # BAMUM LETTER PHASE-F WA
+16A2D ; [.4178.0020.0002] # BAMUM LETTER PHASE-F LI
+16A2E ; [.4179.0020.0002] # BAMUM LETTER PHASE-F LOQ
+16A2F ; [.417A.0020.0002] # BAMUM LETTER PHASE-F KO
+16A30 ; [.417B.0020.0002] # BAMUM LETTER PHASE-F MBEN
+16A31 ; [.417C.0020.0002] # BAMUM LETTER PHASE-F REN
+16A32 ; [.417D.0020.0002] # BAMUM LETTER PHASE-F MA
+16A33 ; [.417E.0020.0002] # BAMUM LETTER PHASE-F MO
+16A34 ; [.417F.0020.0002] # BAMUM LETTER PHASE-F MBAA
+16A35 ; [.4180.0020.0002] # BAMUM LETTER PHASE-F TET
+16A36 ; [.4181.0020.0002] # BAMUM LETTER PHASE-F KPA
+16A37 ; [.4182.0020.0002] # BAMUM LETTER PHASE-F SAMBA
+16A38 ; [.4183.0020.0002] # BAMUM LETTER PHASE-F VUEQ
+16AD0 ; [.4184.0020.0002] # BASSA VAH LETTER ENNI
+16AD1 ; [.4185.0020.0002] # BASSA VAH LETTER KA
+16AD2 ; [.4186.0020.0002] # BASSA VAH LETTER SE
+16AD3 ; [.4187.0020.0002] # BASSA VAH LETTER FA
+16AD4 ; [.4188.0020.0002] # BASSA VAH LETTER MBE
+16AD5 ; [.4189.0020.0002] # BASSA VAH LETTER YIE
+16AD6 ; [.418A.0020.0002] # BASSA VAH LETTER GAH
+16AD7 ; [.418B.0020.0002] # BASSA VAH LETTER DHII
+16AD8 ; [.418C.0020.0002] # BASSA VAH LETTER KPAH
+16AD9 ; [.418D.0020.0002] # BASSA VAH LETTER JO
+16ADA ; [.418E.0020.0002] # BASSA VAH LETTER HWAH
+16ADB ; [.418F.0020.0002] # BASSA VAH LETTER WA
+16ADC ; [.4190.0020.0002] # BASSA VAH LETTER ZO
+16ADD ; [.4191.0020.0002] # BASSA VAH LETTER GBU
+16ADE ; [.4192.0020.0002] # BASSA VAH LETTER DO
+16ADF ; [.4193.0020.0002] # BASSA VAH LETTER CE
+16AE0 ; [.4194.0020.0002] # BASSA VAH LETTER UWU
+16AE1 ; [.4195.0020.0002] # BASSA VAH LETTER TO
+16AE2 ; [.4196.0020.0002] # BASSA VAH LETTER BA
+16AE3 ; [.4197.0020.0002] # BASSA VAH LETTER VU
+16AE4 ; [.4198.0020.0002] # BASSA VAH LETTER YEIN
+16AE5 ; [.4199.0020.0002] # BASSA VAH LETTER PA
+16AE6 ; [.419A.0020.0002] # BASSA VAH LETTER WADDA
+16AE7 ; [.419B.0020.0002] # BASSA VAH LETTER A
+16AE8 ; [.419C.0020.0002] # BASSA VAH LETTER O
+16AE9 ; [.419D.0020.0002] # BASSA VAH LETTER OO
+16AEA ; [.419E.0020.0002] # BASSA VAH LETTER U
+16AEB ; [.419F.0020.0002] # BASSA VAH LETTER EE
+16AEC ; [.41A0.0020.0002] # BASSA VAH LETTER E
+16AED ; [.41A1.0020.0002] # BASSA VAH LETTER I
+1E800 ; [.41A2.0020.0002] # MENDE KIKAKUI SYLLABLE M001 KI
+1E801 ; [.41A3.0020.0002] # MENDE KIKAKUI SYLLABLE M002 KA
+1E802 ; [.41A4.0020.0002] # MENDE KIKAKUI SYLLABLE M003 KU
+1E803 ; [.41A5.0020.0002] # MENDE KIKAKUI SYLLABLE M065 KEE
+1E804 ; [.41A6.0020.0002] # MENDE KIKAKUI SYLLABLE M095 KE
+1E805 ; [.41A7.0020.0002] # MENDE KIKAKUI SYLLABLE M076 KOO
+1E806 ; [.41A8.0020.0002] # MENDE KIKAKUI SYLLABLE M048 KO
+1E807 ; [.41A9.0020.0002] # MENDE KIKAKUI SYLLABLE M179 KUA
+1E808 ; [.41AA.0020.0002] # MENDE KIKAKUI SYLLABLE M004 WI
+1E809 ; [.41AB.0020.0002] # MENDE KIKAKUI SYLLABLE M005 WA
+1E80A ; [.41AC.0020.0002] # MENDE KIKAKUI SYLLABLE M006 WU
+1E80B ; [.41AD.0020.0002] # MENDE KIKAKUI SYLLABLE M126 WEE
+1E80C ; [.41AE.0020.0002] # MENDE KIKAKUI SYLLABLE M118 WE
+1E80D ; [.41AF.0020.0002] # MENDE KIKAKUI SYLLABLE M114 WOO
+1E80E ; [.41B0.0020.0002] # MENDE KIKAKUI SYLLABLE M045 WO
+1E80F ; [.41B1.0020.0002] # MENDE KIKAKUI SYLLABLE M194 WUI
+1E810 ; [.41B2.0020.0002] # MENDE KIKAKUI SYLLABLE M143 WEI
+1E811 ; [.41B3.0020.0002] # MENDE KIKAKUI SYLLABLE M061 WVI
+1E812 ; [.41B4.0020.0002] # MENDE KIKAKUI SYLLABLE M049 WVA
+1E813 ; [.41B5.0020.0002] # MENDE KIKAKUI SYLLABLE M139 WVE
+1E814 ; [.41B6.0020.0002] # MENDE KIKAKUI SYLLABLE M007 MIN
+1E815 ; [.41B7.0020.0002] # MENDE KIKAKUI SYLLABLE M008 MAN
+1E816 ; [.41B8.0020.0002] # MENDE KIKAKUI SYLLABLE M009 MUN
+1E817 ; [.41B9.0020.0002] # MENDE KIKAKUI SYLLABLE M059 MEN
+1E818 ; [.41BA.0020.0002] # MENDE KIKAKUI SYLLABLE M094 MON
+1E819 ; [.41BB.0020.0002] # MENDE KIKAKUI SYLLABLE M154 MUAN
+1E81A ; [.41BC.0020.0002] # MENDE KIKAKUI SYLLABLE M189 MUEN
+1E81B ; [.41BD.0020.0002] # MENDE KIKAKUI SYLLABLE M010 BI
+1E81C ; [.41BE.0020.0002] # MENDE KIKAKUI SYLLABLE M011 BA
+1E81D ; [.41BF.0020.0002] # MENDE KIKAKUI SYLLABLE M012 BU
+1E81E ; [.41C0.0020.0002] # MENDE KIKAKUI SYLLABLE M150 BEE
+1E81F ; [.41C1.0020.0002] # MENDE KIKAKUI SYLLABLE M097 BE
+1E820 ; [.41C2.0020.0002] # MENDE KIKAKUI SYLLABLE M103 BOO
+1E821 ; [.41C3.0020.0002] # MENDE KIKAKUI SYLLABLE M138 BO
+1E822 ; [.41C4.0020.0002] # MENDE KIKAKUI SYLLABLE M013 I
+1E823 ; [.41C5.0020.0002] # MENDE KIKAKUI SYLLABLE M014 A
+1E824 ; [.41C6.0020.0002] # MENDE KIKAKUI SYLLABLE M015 U
+1E825 ; [.41C7.0020.0002] # MENDE KIKAKUI SYLLABLE M163 EE
+1E826 ; [.41C8.0020.0002] # MENDE KIKAKUI SYLLABLE M100 E
+1E827 ; [.41C9.0020.0002] # MENDE KIKAKUI SYLLABLE M165 OO
+1E828 ; [.41CA.0020.0002] # MENDE KIKAKUI SYLLABLE M147 O
+1E829 ; [.41CB.0020.0002] # MENDE KIKAKUI SYLLABLE M137 EI
+1E82A ; [.41CC.0020.0002] # MENDE KIKAKUI SYLLABLE M131 IN
+1E82B ; [.41CD.0020.0002] # MENDE KIKAKUI SYLLABLE M135 IN
+1E82C ; [.41CE.0020.0002] # MENDE KIKAKUI SYLLABLE M195 AN
+1E82D ; [.41CF.0020.0002] # MENDE KIKAKUI SYLLABLE M178 EN
+1E82E ; [.41D0.0020.0002] # MENDE KIKAKUI SYLLABLE M019 SI
+1E82F ; [.41D1.0020.0002] # MENDE KIKAKUI SYLLABLE M020 SA
+1E830 ; [.41D2.0020.0002] # MENDE KIKAKUI SYLLABLE M021 SU
+1E831 ; [.41D3.0020.0002] # MENDE KIKAKUI SYLLABLE M162 SEE
+1E832 ; [.41D4.0020.0002] # MENDE KIKAKUI SYLLABLE M116 SE
+1E833 ; [.41D5.0020.0002] # MENDE KIKAKUI SYLLABLE M136 SOO
+1E834 ; [.41D6.0020.0002] # MENDE KIKAKUI SYLLABLE M079 SO
+1E835 ; [.41D7.0020.0002] # MENDE KIKAKUI SYLLABLE M196 SIA
+1E836 ; [.41D8.0020.0002] # MENDE KIKAKUI SYLLABLE M025 LI
+1E837 ; [.41D9.0020.0002] # MENDE KIKAKUI SYLLABLE M026 LA
+1E838 ; [.41DA.0020.0002] # MENDE KIKAKUI SYLLABLE M027 LU
+1E839 ; [.41DB.0020.0002] # MENDE KIKAKUI SYLLABLE M084 LEE
+1E83A ; [.41DC.0020.0002] # MENDE KIKAKUI SYLLABLE M073 LE
+1E83B ; [.41DD.0020.0002] # MENDE KIKAKUI SYLLABLE M054 LOO
+1E83C ; [.41DE.0020.0002] # MENDE KIKAKUI SYLLABLE M153 LO
+1E83D ; [.41DF.0020.0002] # MENDE KIKAKUI SYLLABLE M110 LONG LE
+1E83E ; [.41E0.0020.0002] # MENDE KIKAKUI SYLLABLE M016 DI
+1E83F ; [.41E1.0020.0002] # MENDE KIKAKUI SYLLABLE M017 DA
+1E840 ; [.41E2.0020.0002] # MENDE KIKAKUI SYLLABLE M018 DU
+1E841 ; [.41E3.0020.0002] # MENDE KIKAKUI SYLLABLE M089 DEE
+1E842 ; [.41E4.0020.0002] # MENDE KIKAKUI SYLLABLE M180 DOO
+1E843 ; [.41E5.0020.0002] # MENDE KIKAKUI SYLLABLE M181 DO
+1E844 ; [.41E6.0020.0002] # MENDE KIKAKUI SYLLABLE M022 TI
+1E845 ; [.41E7.0020.0002] # MENDE KIKAKUI SYLLABLE M023 TA
+1E846 ; [.41E8.0020.0002] # MENDE KIKAKUI SYLLABLE M024 TU
+1E847 ; [.41E9.0020.0002] # MENDE KIKAKUI SYLLABLE M091 TEE
+1E848 ; [.41EA.0020.0002] # MENDE KIKAKUI SYLLABLE M055 TE
+1E849 ; [.41EB.0020.0002] # MENDE KIKAKUI SYLLABLE M104 TOO
+1E84A ; [.41EC.0020.0002] # MENDE KIKAKUI SYLLABLE M069 TO
+1E84B ; [.41ED.0020.0002] # MENDE KIKAKUI SYLLABLE M028 JI
+1E84C ; [.41EE.0020.0002] # MENDE KIKAKUI SYLLABLE M029 JA
+1E84D ; [.41EF.0020.0002] # MENDE KIKAKUI SYLLABLE M030 JU
+1E84E ; [.41F0.0020.0002] # MENDE KIKAKUI SYLLABLE M157 JEE
+1E84F ; [.41F1.0020.0002] # MENDE KIKAKUI SYLLABLE M113 JE
+1E850 ; [.41F2.0020.0002] # MENDE KIKAKUI SYLLABLE M160 JOO
+1E851 ; [.41F3.0020.0002] # MENDE KIKAKUI SYLLABLE M063 JO
+1E852 ; [.41F4.0020.0002] # MENDE KIKAKUI SYLLABLE M175 LONG JO
+1E853 ; [.41F5.0020.0002] # MENDE KIKAKUI SYLLABLE M031 YI
+1E854 ; [.41F6.0020.0002] # MENDE KIKAKUI SYLLABLE M032 YA
+1E855 ; [.41F7.0020.0002] # MENDE KIKAKUI SYLLABLE M033 YU
+1E856 ; [.41F8.0020.0002] # MENDE KIKAKUI SYLLABLE M109 YEE
+1E857 ; [.41F9.0020.0002] # MENDE KIKAKUI SYLLABLE M080 YE
+1E858 ; [.41FA.0020.0002] # MENDE KIKAKUI SYLLABLE M141 YOO
+1E859 ; [.41FB.0020.0002] # MENDE KIKAKUI SYLLABLE M121 YO
+1E85A ; [.41FC.0020.0002] # MENDE KIKAKUI SYLLABLE M034 FI
+1E85B ; [.41FD.0020.0002] # MENDE KIKAKUI SYLLABLE M035 FA
+1E85C ; [.41FE.0020.0002] # MENDE KIKAKUI SYLLABLE M036 FU
+1E85D ; [.41FF.0020.0002] # MENDE KIKAKUI SYLLABLE M078 FEE
+1E85E ; [.4200.0020.0002] # MENDE KIKAKUI SYLLABLE M075 FE
+1E85F ; [.4201.0020.0002] # MENDE KIKAKUI SYLLABLE M133 FOO
+1E860 ; [.4202.0020.0002] # MENDE KIKAKUI SYLLABLE M088 FO
+1E861 ; [.4203.0020.0002] # MENDE KIKAKUI SYLLABLE M197 FUA
+1E862 ; [.4204.0020.0002] # MENDE KIKAKUI SYLLABLE M101 FAN
+1E863 ; [.4205.0020.0002] # MENDE KIKAKUI SYLLABLE M037 NIN
+1E864 ; [.4206.0020.0002] # MENDE KIKAKUI SYLLABLE M038 NAN
+1E865 ; [.4207.0020.0002] # MENDE KIKAKUI SYLLABLE M039 NUN
+1E866 ; [.4208.0020.0002] # MENDE KIKAKUI SYLLABLE M117 NEN
+1E867 ; [.4209.0020.0002] # MENDE KIKAKUI SYLLABLE M169 NON
+1E868 ; [.420A.0020.0002] # MENDE KIKAKUI SYLLABLE M176 HI
+1E869 ; [.420B.0020.0002] # MENDE KIKAKUI SYLLABLE M041 HA
+1E86A ; [.420C.0020.0002] # MENDE KIKAKUI SYLLABLE M186 HU
+1E86B ; [.420D.0020.0002] # MENDE KIKAKUI SYLLABLE M040 HEE
+1E86C ; [.420E.0020.0002] # MENDE KIKAKUI SYLLABLE M096 HE
+1E86D ; [.420F.0020.0002] # MENDE KIKAKUI SYLLABLE M042 HOO
+1E86E ; [.4210.0020.0002] # MENDE KIKAKUI SYLLABLE M140 HO
+1E86F ; [.4211.0020.0002] # MENDE KIKAKUI SYLLABLE M083 HEEI
+1E870 ; [.4212.0020.0002] # MENDE KIKAKUI SYLLABLE M128 HOOU
+1E871 ; [.4213.0020.0002] # MENDE KIKAKUI SYLLABLE M053 HIN
+1E872 ; [.4214.0020.0002] # MENDE KIKAKUI SYLLABLE M130 HAN
+1E873 ; [.4215.0020.0002] # MENDE KIKAKUI SYLLABLE M087 HUN
+1E874 ; [.4216.0020.0002] # MENDE KIKAKUI SYLLABLE M052 HEN
+1E875 ; [.4217.0020.0002] # MENDE KIKAKUI SYLLABLE M193 HON
+1E876 ; [.4218.0020.0002] # MENDE KIKAKUI SYLLABLE M046 HUAN
+1E877 ; [.4219.0020.0002] # MENDE KIKAKUI SYLLABLE M090 NGGI
+1E878 ; [.421A.0020.0002] # MENDE KIKAKUI SYLLABLE M043 NGGA
+1E879 ; [.421B.0020.0002] # MENDE KIKAKUI SYLLABLE M082 NGGU
+1E87A ; [.421C.0020.0002] # MENDE KIKAKUI SYLLABLE M115 NGGEE
+1E87B ; [.421D.0020.0002] # MENDE KIKAKUI SYLLABLE M146 NGGE
+1E87C ; [.421E.0020.0002] # MENDE KIKAKUI SYLLABLE M156 NGGOO
+1E87D ; [.421F.0020.0002] # MENDE KIKAKUI SYLLABLE M120 NGGO
+1E87E ; [.4220.0020.0002] # MENDE KIKAKUI SYLLABLE M159 NGGAA
+1E87F ; [.4221.0020.0002] # MENDE KIKAKUI SYLLABLE M127 NGGUA
+1E880 ; [.4222.0020.0002] # MENDE KIKAKUI SYLLABLE M086 LONG NGGE
+1E881 ; [.4223.0020.0002] # MENDE KIKAKUI SYLLABLE M106 LONG NGGOO
+1E882 ; [.4224.0020.0002] # MENDE KIKAKUI SYLLABLE M183 LONG NGGO
+1E883 ; [.4225.0020.0002] # MENDE KIKAKUI SYLLABLE M155 GI
+1E884 ; [.4226.0020.0002] # MENDE KIKAKUI SYLLABLE M111 GA
+1E885 ; [.4227.0020.0002] # MENDE KIKAKUI SYLLABLE M168 GU
+1E886 ; [.4228.0020.0002] # MENDE KIKAKUI SYLLABLE M190 GEE
+1E887 ; [.4229.0020.0002] # MENDE KIKAKUI SYLLABLE M166 GUEI
+1E888 ; [.422A.0020.0002] # MENDE KIKAKUI SYLLABLE M167 GUAN
+1E889 ; [.422B.0020.0002] # MENDE KIKAKUI SYLLABLE M184 NGEN
+1E88A ; [.422C.0020.0002] # MENDE KIKAKUI SYLLABLE M057 NGON
+1E88B ; [.422D.0020.0002] # MENDE KIKAKUI SYLLABLE M177 NGUAN
+1E88C ; [.422E.0020.0002] # MENDE KIKAKUI SYLLABLE M068 PI
+1E88D ; [.422F.0020.0002] # MENDE KIKAKUI SYLLABLE M099 PA
+1E88E ; [.4230.0020.0002] # MENDE KIKAKUI SYLLABLE M050 PU
+1E88F ; [.4231.0020.0002] # MENDE KIKAKUI SYLLABLE M081 PEE
+1E890 ; [.4232.0020.0002] # MENDE KIKAKUI SYLLABLE M051 PE
+1E891 ; [.4233.0020.0002] # MENDE KIKAKUI SYLLABLE M102 POO
+1E892 ; [.4234.0020.0002] # MENDE KIKAKUI SYLLABLE M066 PO
+1E893 ; [.4235.0020.0002] # MENDE KIKAKUI SYLLABLE M145 MBI
+1E894 ; [.4236.0020.0002] # MENDE KIKAKUI SYLLABLE M062 MBA
+1E895 ; [.4237.0020.0002] # MENDE KIKAKUI SYLLABLE M122 MBU
+1E896 ; [.4238.0020.0002] # MENDE KIKAKUI SYLLABLE M047 MBEE
+1E897 ; [.4239.0020.0002] # MENDE KIKAKUI SYLLABLE M188 MBEE
+1E898 ; [.423A.0020.0002] # MENDE KIKAKUI SYLLABLE M072 MBE
+1E899 ; [.423B.0020.0002] # MENDE KIKAKUI SYLLABLE M172 MBOO
+1E89A ; [.423C.0020.0002] # MENDE KIKAKUI SYLLABLE M174 MBO
+1E89B ; [.423D.0020.0002] # MENDE KIKAKUI SYLLABLE M187 MBUU
+1E89C ; [.423E.0020.0002] # MENDE KIKAKUI SYLLABLE M161 LONG MBE
+1E89D ; [.423F.0020.0002] # MENDE KIKAKUI SYLLABLE M105 LONG MBOO
+1E89E ; [.4240.0020.0002] # MENDE KIKAKUI SYLLABLE M142 LONG MBO
+1E89F ; [.4241.0020.0002] # MENDE KIKAKUI SYLLABLE M132 KPI
+1E8A0 ; [.4242.0020.0002] # MENDE KIKAKUI SYLLABLE M092 KPA
+1E8A1 ; [.4243.0020.0002] # MENDE KIKAKUI SYLLABLE M074 KPU
+1E8A2 ; [.4244.0020.0002] # MENDE KIKAKUI SYLLABLE M044 KPEE
+1E8A3 ; [.4245.0020.0002] # MENDE KIKAKUI SYLLABLE M108 KPE
+1E8A4 ; [.4246.0020.0002] # MENDE KIKAKUI SYLLABLE M112 KPOO
+1E8A5 ; [.4247.0020.0002] # MENDE KIKAKUI SYLLABLE M158 KPO
+1E8A6 ; [.4248.0020.0002] # MENDE KIKAKUI SYLLABLE M124 GBI
+1E8A7 ; [.4249.0020.0002] # MENDE KIKAKUI SYLLABLE M056 GBA
+1E8A8 ; [.424A.0020.0002] # MENDE KIKAKUI SYLLABLE M148 GBU
+1E8A9 ; [.424B.0020.0002] # MENDE KIKAKUI SYLLABLE M093 GBEE
+1E8AA ; [.424C.0020.0002] # MENDE KIKAKUI SYLLABLE M107 GBE
+1E8AB ; [.424D.0020.0002] # MENDE KIKAKUI SYLLABLE M071 GBOO
+1E8AC ; [.424E.0020.0002] # MENDE KIKAKUI SYLLABLE M070 GBO
+1E8AD ; [.424F.0020.0002] # MENDE KIKAKUI SYLLABLE M171 RA
+1E8AE ; [.4250.0020.0002] # MENDE KIKAKUI SYLLABLE M123 NDI
+1E8AF ; [.4251.0020.0002] # MENDE KIKAKUI SYLLABLE M129 NDA
+1E8B0 ; [.4252.0020.0002] # MENDE KIKAKUI SYLLABLE M125 NDU
+1E8B1 ; [.4253.0020.0002] # MENDE KIKAKUI SYLLABLE M191 NDEE
+1E8B2 ; [.4254.0020.0002] # MENDE KIKAKUI SYLLABLE M119 NDE
+1E8B3 ; [.4255.0020.0002] # MENDE KIKAKUI SYLLABLE M067 NDOO
+1E8B4 ; [.4256.0020.0002] # MENDE KIKAKUI SYLLABLE M064 NDO
+1E8B5 ; [.4257.0020.0002] # MENDE KIKAKUI SYLLABLE M152 NJA
+1E8B6 ; [.4258.0020.0002] # MENDE KIKAKUI SYLLABLE M192 NJU
+1E8B7 ; [.4259.0020.0002] # MENDE KIKAKUI SYLLABLE M149 NJEE
+1E8B8 ; [.425A.0020.0002] # MENDE KIKAKUI SYLLABLE M134 NJOO
+1E8B9 ; [.425B.0020.0002] # MENDE KIKAKUI SYLLABLE M182 VI
+1E8BA ; [.425C.0020.0002] # MENDE KIKAKUI SYLLABLE M185 VA
+1E8BB ; [.425D.0020.0002] # MENDE KIKAKUI SYLLABLE M151 VU
+1E8BC ; [.425E.0020.0002] # MENDE KIKAKUI SYLLABLE M173 VEE
+1E8BD ; [.425F.0020.0002] # MENDE KIKAKUI SYLLABLE M085 VE
+1E8BE ; [.4260.0020.0002] # MENDE KIKAKUI SYLLABLE M144 VOO
+1E8BF ; [.4261.0020.0002] # MENDE KIKAKUI SYLLABLE M077 VO
+1E8C0 ; [.4262.0020.0002] # MENDE KIKAKUI SYLLABLE M164 NYIN
+1E8C1 ; [.4263.0020.0002] # MENDE KIKAKUI SYLLABLE M058 NYAN
+1E8C2 ; [.4264.0020.0002] # MENDE KIKAKUI SYLLABLE M170 NYUN
+1E8C3 ; [.4265.0020.0002] # MENDE KIKAKUI SYLLABLE M098 NYEN
+1E8C4 ; [.4266.0020.0002] # MENDE KIKAKUI SYLLABLE M060 NYON
+16E60 ; [.4267.0020.0002] # MEDEFAIDRIN SMALL LETTER M
+16E40 ; [.4267.0020.0008] # MEDEFAIDRIN CAPITAL LETTER M
+16E61 ; [.4268.0020.0002] # MEDEFAIDRIN SMALL LETTER S
+16E41 ; [.4268.0020.0008] # MEDEFAIDRIN CAPITAL LETTER S
+16E62 ; [.4269.0020.0002] # MEDEFAIDRIN SMALL LETTER V
+16E42 ; [.4269.0020.0008] # MEDEFAIDRIN CAPITAL LETTER V
+16E63 ; [.426A.0020.0002] # MEDEFAIDRIN SMALL LETTER W
+16E43 ; [.426A.0020.0008] # MEDEFAIDRIN CAPITAL LETTER W
+16E64 ; [.426B.0020.0002] # MEDEFAIDRIN SMALL LETTER ATIU
+16E44 ; [.426B.0020.0008] # MEDEFAIDRIN CAPITAL LETTER ATIU
+16E65 ; [.426C.0020.0002] # MEDEFAIDRIN SMALL LETTER Z
+16E45 ; [.426C.0020.0008] # MEDEFAIDRIN CAPITAL LETTER Z
+16E66 ; [.426D.0020.0002] # MEDEFAIDRIN SMALL LETTER KP
+16E46 ; [.426D.0020.0008] # MEDEFAIDRIN CAPITAL LETTER KP
+16E67 ; [.426E.0020.0002] # MEDEFAIDRIN SMALL LETTER P
+16E47 ; [.426E.0020.0008] # MEDEFAIDRIN CAPITAL LETTER P
+16E68 ; [.426F.0020.0002] # MEDEFAIDRIN SMALL LETTER T
+16E48 ; [.426F.0020.0008] # MEDEFAIDRIN CAPITAL LETTER T
+16E69 ; [.4270.0020.0002] # MEDEFAIDRIN SMALL LETTER G
+16E49 ; [.4270.0020.0008] # MEDEFAIDRIN CAPITAL LETTER G
+16E6A ; [.4271.0020.0002] # MEDEFAIDRIN SMALL LETTER F
+16E4A ; [.4271.0020.0008] # MEDEFAIDRIN CAPITAL LETTER F
+16E6B ; [.4272.0020.0002] # MEDEFAIDRIN SMALL LETTER I
+16E4B ; [.4272.0020.0008] # MEDEFAIDRIN CAPITAL LETTER I
+16E6C ; [.4273.0020.0002] # MEDEFAIDRIN SMALL LETTER K
+16E4C ; [.4273.0020.0008] # MEDEFAIDRIN CAPITAL LETTER K
+16E6D ; [.4274.0020.0002] # MEDEFAIDRIN SMALL LETTER A
+16E4D ; [.4274.0020.0008] # MEDEFAIDRIN CAPITAL LETTER A
+16E6E ; [.4275.0020.0002] # MEDEFAIDRIN SMALL LETTER J
+16E4E ; [.4275.0020.0008] # MEDEFAIDRIN CAPITAL LETTER J
+16E6F ; [.4276.0020.0002] # MEDEFAIDRIN SMALL LETTER E
+16E4F ; [.4276.0020.0008] # MEDEFAIDRIN CAPITAL LETTER E
+16E70 ; [.4277.0020.0002] # MEDEFAIDRIN SMALL LETTER B
+16E50 ; [.4277.0020.0008] # MEDEFAIDRIN CAPITAL LETTER B
+16E71 ; [.4278.0020.0002] # MEDEFAIDRIN SMALL LETTER C
+16E51 ; [.4278.0020.0008] # MEDEFAIDRIN CAPITAL LETTER C
+16E72 ; [.4279.0020.0002] # MEDEFAIDRIN SMALL LETTER U
+16E52 ; [.4279.0020.0008] # MEDEFAIDRIN CAPITAL LETTER U
+16E73 ; [.427A.0020.0002] # MEDEFAIDRIN SMALL LETTER YU
+16E53 ; [.427A.0020.0008] # MEDEFAIDRIN CAPITAL LETTER YU
+16E74 ; [.427B.0020.0002] # MEDEFAIDRIN SMALL LETTER L
+16E54 ; [.427B.0020.0008] # MEDEFAIDRIN CAPITAL LETTER L
+16E75 ; [.427C.0020.0002] # MEDEFAIDRIN SMALL LETTER Q
+16E55 ; [.427C.0020.0008] # MEDEFAIDRIN CAPITAL LETTER Q
+16E76 ; [.427D.0020.0002] # MEDEFAIDRIN SMALL LETTER HP
+16E56 ; [.427D.0020.0008] # MEDEFAIDRIN CAPITAL LETTER HP
+16E77 ; [.427E.0020.0002] # MEDEFAIDRIN SMALL LETTER NY
+16E57 ; [.427E.0020.0008] # MEDEFAIDRIN CAPITAL LETTER NY
+16E78 ; [.427F.0020.0002] # MEDEFAIDRIN SMALL LETTER X
+16E58 ; [.427F.0020.0008] # MEDEFAIDRIN CAPITAL LETTER X
+16E79 ; [.4280.0020.0002] # MEDEFAIDRIN SMALL LETTER D
+16E59 ; [.4280.0020.0008] # MEDEFAIDRIN CAPITAL LETTER D
+16E7A ; [.4281.0020.0002] # MEDEFAIDRIN SMALL LETTER OE
+16E5A ; [.4281.0020.0008] # MEDEFAIDRIN CAPITAL LETTER OE
+16E7B ; [.4282.0020.0002] # MEDEFAIDRIN SMALL LETTER N
+16E5B ; [.4282.0020.0008] # MEDEFAIDRIN CAPITAL LETTER N
+16E7C ; [.4283.0020.0002] # MEDEFAIDRIN SMALL LETTER R
+16E5C ; [.4283.0020.0008] # MEDEFAIDRIN CAPITAL LETTER R
+16E7D ; [.4284.0020.0002] # MEDEFAIDRIN SMALL LETTER O
+16E5D ; [.4284.0020.0008] # MEDEFAIDRIN CAPITAL LETTER O
+16E7E ; [.4285.0020.0002] # MEDEFAIDRIN SMALL LETTER AI
+16E5E ; [.4285.0020.0008] # MEDEFAIDRIN CAPITAL LETTER AI
+16E7F ; [.4286.0020.0002] # MEDEFAIDRIN SMALL LETTER Y
+16E5F ; [.4286.0020.0008] # MEDEFAIDRIN CAPITAL LETTER Y
+1E922 ; [.4287.0020.0002] # ADLAM SMALL LETTER ALIF
+1E900 ; [.4287.0020.0008] # ADLAM CAPITAL LETTER ALIF
+1E923 ; [.4288.0020.0002] # ADLAM SMALL LETTER DAALI
+1E901 ; [.4288.0020.0008] # ADLAM CAPITAL LETTER DAALI
+1E924 ; [.4289.0020.0002] # ADLAM SMALL LETTER LAAM
+1E902 ; [.4289.0020.0008] # ADLAM CAPITAL LETTER LAAM
+1E925 ; [.428A.0020.0002] # ADLAM SMALL LETTER MIIM
+1E903 ; [.428A.0020.0008] # ADLAM CAPITAL LETTER MIIM
+1E926 ; [.428B.0020.0002] # ADLAM SMALL LETTER BA
+1E904 ; [.428B.0020.0008] # ADLAM CAPITAL LETTER BA
+1E927 ; [.428C.0020.0002] # ADLAM SMALL LETTER SINNYIIYHE
+1E905 ; [.428C.0020.0008] # ADLAM CAPITAL LETTER SINNYIIYHE
+1E928 ; [.428D.0020.0002] # ADLAM SMALL LETTER PE
+1E906 ; [.428D.0020.0008] # ADLAM CAPITAL LETTER PE
+1E929 ; [.428E.0020.0002] # ADLAM SMALL LETTER BHE
+1E907 ; [.428E.0020.0008] # ADLAM CAPITAL LETTER BHE
+1E92A ; [.428F.0020.0002] # ADLAM SMALL LETTER RA
+1E908 ; [.428F.0020.0008] # ADLAM CAPITAL LETTER RA
+1E92B ; [.4290.0020.0002] # ADLAM SMALL LETTER E
+1E909 ; [.4290.0020.0008] # ADLAM CAPITAL LETTER E
+1E92C ; [.4291.0020.0002] # ADLAM SMALL LETTER FA
+1E90A ; [.4291.0020.0008] # ADLAM CAPITAL LETTER FA
+1E92D ; [.4292.0020.0002] # ADLAM SMALL LETTER I
+1E90B ; [.4292.0020.0008] # ADLAM CAPITAL LETTER I
+1E92E ; [.4293.0020.0002] # ADLAM SMALL LETTER O
+1E90C ; [.4293.0020.0008] # ADLAM CAPITAL LETTER O
+1E92F ; [.4294.0020.0002] # ADLAM SMALL LETTER DHA
+1E90D ; [.4294.0020.0008] # ADLAM CAPITAL LETTER DHA
+1E930 ; [.4295.0020.0002] # ADLAM SMALL LETTER YHE
+1E90E ; [.4295.0020.0008] # ADLAM CAPITAL LETTER YHE
+1E931 ; [.4296.0020.0002] # ADLAM SMALL LETTER WAW
+1E90F ; [.4296.0020.0008] # ADLAM CAPITAL LETTER WAW
+1E932 ; [.4297.0020.0002] # ADLAM SMALL LETTER NUN
+1E910 ; [.4297.0020.0008] # ADLAM CAPITAL LETTER NUN
+1E933 ; [.4298.0020.0002] # ADLAM SMALL LETTER KAF
+1E911 ; [.4298.0020.0008] # ADLAM CAPITAL LETTER KAF
+1E934 ; [.4299.0020.0002] # ADLAM SMALL LETTER YA
+1E912 ; [.4299.0020.0008] # ADLAM CAPITAL LETTER YA
+1E935 ; [.429A.0020.0002] # ADLAM SMALL LETTER U
+1E913 ; [.429A.0020.0008] # ADLAM CAPITAL LETTER U
+1E936 ; [.429B.0020.0002] # ADLAM SMALL LETTER JIIM
+1E914 ; [.429B.0020.0008] # ADLAM CAPITAL LETTER JIIM
+1E937 ; [.429C.0020.0002] # ADLAM SMALL LETTER CHI
+1E915 ; [.429C.0020.0008] # ADLAM CAPITAL LETTER CHI
+1E938 ; [.429D.0020.0002] # ADLAM SMALL LETTER HA
+1E916 ; [.429D.0020.0008] # ADLAM CAPITAL LETTER HA
+1E939 ; [.429E.0020.0002] # ADLAM SMALL LETTER QAAF
+1E917 ; [.429E.0020.0008] # ADLAM CAPITAL LETTER QAAF
+1E93A ; [.429F.0020.0002] # ADLAM SMALL LETTER GA
+1E918 ; [.429F.0020.0008] # ADLAM CAPITAL LETTER GA
+1E93B ; [.42A0.0020.0002] # ADLAM SMALL LETTER NYA
+1E919 ; [.42A0.0020.0008] # ADLAM CAPITAL LETTER NYA
+1E93C ; [.42A1.0020.0002] # ADLAM SMALL LETTER TU
+1E91A ; [.42A1.0020.0008] # ADLAM CAPITAL LETTER TU
+1E93D ; [.42A2.0020.0002] # ADLAM SMALL LETTER NHA
+1E91B ; [.42A2.0020.0008] # ADLAM CAPITAL LETTER NHA
+1E93E ; [.42A3.0020.0002] # ADLAM SMALL LETTER VA
+1E91C ; [.42A3.0020.0008] # ADLAM CAPITAL LETTER VA
+1E93F ; [.42A4.0020.0002] # ADLAM SMALL LETTER KHA
+1E91D ; [.42A4.0020.0008] # ADLAM CAPITAL LETTER KHA
+1E940 ; [.42A5.0020.0002] # ADLAM SMALL LETTER GBE
+1E91E ; [.42A5.0020.0008] # ADLAM CAPITAL LETTER GBE
+1E941 ; [.42A6.0020.0002] # ADLAM SMALL LETTER ZAL
+1E91F ; [.42A6.0020.0008] # ADLAM CAPITAL LETTER ZAL
+1E942 ; [.42A7.0020.0002] # ADLAM SMALL LETTER KPO
+1E920 ; [.42A7.0020.0008] # ADLAM CAPITAL LETTER KPO
+1E943 ; [.42A8.0020.0002] # ADLAM SMALL LETTER SHA
+1E921 ; [.42A8.0020.0008] # ADLAM CAPITAL LETTER SHA
+1E94B ; [.42A9.0020.0002] # ADLAM NASALIZATION MARK
+1100 ; [.42AA.0020.0002] # HANGUL CHOSEONG KIYEOK
+3131 ; [.42AA.0020.0004] # HANGUL LETTER KIYEOK
+3200 ; [*0334.0020.0004][.42AA.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL KIYEOK
+3260 ; [.42AA.0020.0006] # CIRCLED HANGUL KIYEOK
+FFA1 ; [.42AA.0020.0012] # HALFWIDTH HANGUL LETTER KIYEOK
+320E ; [*0334.0020.0004][.42AA.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL KIYEOK A
+326E ; [.42AA.0020.0006][.4328.0020.0006] # CIRCLED HANGUL KIYEOK A
+1101 ; [.42AB.0020.0002] # HANGUL CHOSEONG SSANGKIYEOK
+3132 ; [.42AB.0020.0004] # HANGUL LETTER SSANGKIYEOK
+FFA2 ; [.42AB.0020.0012] # HALFWIDTH HANGUL LETTER SSANGKIYEOK
+1102 ; [.42AC.0020.0002] # HANGUL CHOSEONG NIEUN
+3134 ; [.42AC.0020.0004] # HANGUL LETTER NIEUN
+3201 ; [*0334.0020.0004][.42AC.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL NIEUN
+3261 ; [.42AC.0020.0006] # CIRCLED HANGUL NIEUN
+FFA4 ; [.42AC.0020.0012] # HALFWIDTH HANGUL LETTER NIEUN
+320F ; [*0334.0020.0004][.42AC.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL NIEUN A
+326F ; [.42AC.0020.0006][.4328.0020.0006] # CIRCLED HANGUL NIEUN A
+1103 ; [.42AD.0020.0002] # HANGUL CHOSEONG TIKEUT
+3137 ; [.42AD.0020.0004] # HANGUL LETTER TIKEUT
+3202 ; [*0334.0020.0004][.42AD.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL TIKEUT
+3262 ; [.42AD.0020.0006] # CIRCLED HANGUL TIKEUT
+FFA7 ; [.42AD.0020.0012] # HALFWIDTH HANGUL LETTER TIKEUT
+3210 ; [*0334.0020.0004][.42AD.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL TIKEUT A
+3270 ; [.42AD.0020.0006][.4328.0020.0006] # CIRCLED HANGUL TIKEUT A
+1104 ; [.42AE.0020.0002] # HANGUL CHOSEONG SSANGTIKEUT
+3138 ; [.42AE.0020.0004] # HANGUL LETTER SSANGTIKEUT
+FFA8 ; [.42AE.0020.0012] # HALFWIDTH HANGUL LETTER SSANGTIKEUT
+1105 ; [.42AF.0020.0002] # HANGUL CHOSEONG RIEUL
+3139 ; [.42AF.0020.0004] # HANGUL LETTER RIEUL
+3203 ; [*0334.0020.0004][.42AF.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL RIEUL
+3263 ; [.42AF.0020.0006] # CIRCLED HANGUL RIEUL
+FFA9 ; [.42AF.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL
+3211 ; [*0334.0020.0004][.42AF.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL RIEUL A
+3271 ; [.42AF.0020.0006][.4328.0020.0006] # CIRCLED HANGUL RIEUL A
+1106 ; [.42B0.0020.0002] # HANGUL CHOSEONG MIEUM
+3141 ; [.42B0.0020.0004] # HANGUL LETTER MIEUM
+3204 ; [*0334.0020.0004][.42B0.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL MIEUM
+3264 ; [.42B0.0020.0006] # CIRCLED HANGUL MIEUM
+FFB1 ; [.42B0.0020.0012] # HALFWIDTH HANGUL LETTER MIEUM
+3212 ; [*0334.0020.0004][.42B0.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL MIEUM A
+3272 ; [.42B0.0020.0006][.4328.0020.0006] # CIRCLED HANGUL MIEUM A
+1107 ; [.42B1.0020.0002] # HANGUL CHOSEONG PIEUP
+3142 ; [.42B1.0020.0004] # HANGUL LETTER PIEUP
+3205 ; [*0334.0020.0004][.42B1.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL PIEUP
+3265 ; [.42B1.0020.0006] # CIRCLED HANGUL PIEUP
+FFB2 ; [.42B1.0020.0012] # HALFWIDTH HANGUL LETTER PIEUP
+3213 ; [*0334.0020.0004][.42B1.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL PIEUP A
+3273 ; [.42B1.0020.0006][.4328.0020.0006] # CIRCLED HANGUL PIEUP A
+1108 ; [.42B2.0020.0002] # HANGUL CHOSEONG SSANGPIEUP
+3143 ; [.42B2.0020.0004] # HANGUL LETTER SSANGPIEUP
+FFB3 ; [.42B2.0020.0012] # HALFWIDTH HANGUL LETTER SSANGPIEUP
+1109 ; [.42B3.0020.0002] # HANGUL CHOSEONG SIOS
+3145 ; [.42B3.0020.0004] # HANGUL LETTER SIOS
+3206 ; [*0334.0020.0004][.42B3.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL SIOS
+3266 ; [.42B3.0020.0006] # CIRCLED HANGUL SIOS
+FFB5 ; [.42B3.0020.0012] # HALFWIDTH HANGUL LETTER SIOS
+3214 ; [*0334.0020.0004][.42B3.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL SIOS A
+3274 ; [.42B3.0020.0006][.4328.0020.0006] # CIRCLED HANGUL SIOS A
+110A ; [.42B4.0020.0002] # HANGUL CHOSEONG SSANGSIOS
+3146 ; [.42B4.0020.0004] # HANGUL LETTER SSANGSIOS
+FFB6 ; [.42B4.0020.0012] # HALFWIDTH HANGUL LETTER SSANGSIOS
+110B ; [.42B5.0020.0002] # HANGUL CHOSEONG IEUNG
+3147 ; [.42B5.0020.0004] # HANGUL LETTER IEUNG
+3207 ; [*0334.0020.0004][.42B5.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL IEUNG
+3267 ; [.42B5.0020.0006] # CIRCLED HANGUL IEUNG
+FFB7 ; [.42B5.0020.0012] # HALFWIDTH HANGUL LETTER IEUNG
+3215 ; [*0334.0020.0004][.42B5.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL IEUNG A
+3275 ; [.42B5.0020.0006][.4328.0020.0006] # CIRCLED HANGUL IEUNG A
+321D ; [*0334.0020.0004][.42B5.0020.0004][.4330.0020.0004][.42B6.0020.0004][.432C.0020.0004][.4389.0020.0004][*0335.0020.0004] # PARENTHESIZED KOREAN CHARACTER OJEON
+321E ; [*0334.0020.0004][.42B5.0020.0004][.4330.0020.0004][.42BC.0020.0004][.4335.0020.0004][*0335.0020.0004] # PARENTHESIZED KOREAN CHARACTER O HU
+327E ; [.42B5.0020.0006][.4335.0020.0006] # CIRCLED HANGUL IEUNG U
+110C ; [.42B6.0020.0002] # HANGUL CHOSEONG CIEUC
+3148 ; [.42B6.0020.0004] # HANGUL LETTER CIEUC
+3208 ; [*0334.0020.0004][.42B6.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL CIEUC
+3268 ; [.42B6.0020.0006] # CIRCLED HANGUL CIEUC
+FFB8 ; [.42B6.0020.0012] # HALFWIDTH HANGUL LETTER CIEUC
+3216 ; [*0334.0020.0004][.42B6.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL CIEUC A
+3276 ; [.42B6.0020.0006][.4328.0020.0006] # CIRCLED HANGUL CIEUC A
+321C ; [*0334.0020.0004][.42B6.0020.0004][.4335.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL CIEUC U
+327D ; [.42B6.0020.0006][.4335.0020.0006][.42B5.0020.0006][.433B.0020.0006] # CIRCLED KOREAN CHARACTER JUEUI
+110D ; [.42B7.0020.0002] # HANGUL CHOSEONG SSANGCIEUC
+3149 ; [.42B7.0020.0004] # HANGUL LETTER SSANGCIEUC
+FFB9 ; [.42B7.0020.0012] # HALFWIDTH HANGUL LETTER SSANGCIEUC
+110E ; [.42B8.0020.0002] # HANGUL CHOSEONG CHIEUCH
+314A ; [.42B8.0020.0004] # HANGUL LETTER CHIEUCH
+3209 ; [*0334.0020.0004][.42B8.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL CHIEUCH
+3269 ; [.42B8.0020.0006] # CIRCLED HANGUL CHIEUCH
+FFBA ; [.42B8.0020.0012] # HALFWIDTH HANGUL LETTER CHIEUCH
+3217 ; [*0334.0020.0004][.42B8.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL CHIEUCH A
+3277 ; [.42B8.0020.0006][.4328.0020.0006] # CIRCLED HANGUL CHIEUCH A
+327C ; [.42B8.0020.0006][.4328.0020.0006][.4395.0020.0006][.42AA.0020.0006][.4330.0020.0006] # CIRCLED KOREAN CHARACTER CHAMKO
+110F ; [.42B9.0020.0002] # HANGUL CHOSEONG KHIEUKH
+314B ; [.42B9.0020.0004] # HANGUL LETTER KHIEUKH
+320A ; [*0334.0020.0004][.42B9.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL KHIEUKH
+326A ; [.42B9.0020.0006] # CIRCLED HANGUL KHIEUKH
+FFBB ; [.42B9.0020.0012] # HALFWIDTH HANGUL LETTER KHIEUKH
+3218 ; [*0334.0020.0004][.42B9.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL KHIEUKH A
+3278 ; [.42B9.0020.0006][.4328.0020.0006] # CIRCLED HANGUL KHIEUKH A
+1110 ; [.42BA.0020.0002] # HANGUL CHOSEONG THIEUTH
+314C ; [.42BA.0020.0004] # HANGUL LETTER THIEUTH
+320B ; [*0334.0020.0004][.42BA.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL THIEUTH
+326B ; [.42BA.0020.0006] # CIRCLED HANGUL THIEUTH
+FFBC ; [.42BA.0020.0012] # HALFWIDTH HANGUL LETTER THIEUTH
+3219 ; [*0334.0020.0004][.42BA.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL THIEUTH A
+3279 ; [.42BA.0020.0006][.4328.0020.0006] # CIRCLED HANGUL THIEUTH A
+1111 ; [.42BB.0020.0002] # HANGUL CHOSEONG PHIEUPH
+314D ; [.42BB.0020.0004] # HANGUL LETTER PHIEUPH
+320C ; [*0334.0020.0004][.42BB.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL PHIEUPH
+326C ; [.42BB.0020.0006] # CIRCLED HANGUL PHIEUPH
+FFBD ; [.42BB.0020.0012] # HALFWIDTH HANGUL LETTER PHIEUPH
+321A ; [*0334.0020.0004][.42BB.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL PHIEUPH A
+327A ; [.42BB.0020.0006][.4328.0020.0006] # CIRCLED HANGUL PHIEUPH A
+1112 ; [.42BC.0020.0002] # HANGUL CHOSEONG HIEUH
+314E ; [.42BC.0020.0004] # HANGUL LETTER HIEUH
+320D ; [*0334.0020.0004][.42BC.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL HIEUH
+326D ; [.42BC.0020.0006] # CIRCLED HANGUL HIEUH
+FFBE ; [.42BC.0020.0012] # HALFWIDTH HANGUL LETTER HIEUH
+321B ; [*0334.0020.0004][.42BC.0020.0004][.4328.0020.0004][*0335.0020.0004] # PARENTHESIZED HANGUL HIEUH A
+327B ; [.42BC.0020.0006][.4328.0020.0006] # CIRCLED HANGUL HIEUH A
+1113 ; [.42BD.0020.0002] # HANGUL CHOSEONG NIEUN-KIYEOK
+1114 ; [.42BE.0020.0002] # HANGUL CHOSEONG SSANGNIEUN
+3165 ; [.42BE.0020.0004] # HANGUL LETTER SSANGNIEUN
+1115 ; [.42BF.0020.0002] # HANGUL CHOSEONG NIEUN-TIKEUT
+3166 ; [.42BF.0020.0004] # HANGUL LETTER NIEUN-TIKEUT
+1116 ; [.42C0.0020.0002] # HANGUL CHOSEONG NIEUN-PIEUP
+1117 ; [.42C1.0020.0002] # HANGUL CHOSEONG TIKEUT-KIYEOK
+1118 ; [.42C2.0020.0002] # HANGUL CHOSEONG RIEUL-NIEUN
+1119 ; [.42C3.0020.0002] # HANGUL CHOSEONG SSANGRIEUL
+111A ; [.42C4.0020.0002] # HANGUL CHOSEONG RIEUL-HIEUH
+3140 ; [.42C4.0020.0004] # HANGUL LETTER RIEUL-HIEUH
+FFB0 ; [.42C4.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+111B ; [.42C5.0020.0002] # HANGUL CHOSEONG KAPYEOUNRIEUL
+111C ; [.42C6.0020.0002] # HANGUL CHOSEONG MIEUM-PIEUP
+316E ; [.42C6.0020.0004] # HANGUL LETTER MIEUM-PIEUP
+111D ; [.42C7.0020.0002] # HANGUL CHOSEONG KAPYEOUNMIEUM
+3171 ; [.42C7.0020.0004] # HANGUL LETTER KAPYEOUNMIEUM
+111E ; [.42C8.0020.0002] # HANGUL CHOSEONG PIEUP-KIYEOK
+3172 ; [.42C8.0020.0004] # HANGUL LETTER PIEUP-KIYEOK
+111F ; [.42C9.0020.0002] # HANGUL CHOSEONG PIEUP-NIEUN
+1120 ; [.42CA.0020.0002] # HANGUL CHOSEONG PIEUP-TIKEUT
+3173 ; [.42CA.0020.0004] # HANGUL LETTER PIEUP-TIKEUT
+1121 ; [.42CB.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS
+3144 ; [.42CB.0020.0004] # HANGUL LETTER PIEUP-SIOS
+FFB4 ; [.42CB.0020.0012] # HALFWIDTH HANGUL LETTER PIEUP-SIOS
+1122 ; [.42CC.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-KIYEOK
+3174 ; [.42CC.0020.0004] # HANGUL LETTER PIEUP-SIOS-KIYEOK
+1123 ; [.42CD.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-TIKEUT
+3175 ; [.42CD.0020.0004] # HANGUL LETTER PIEUP-SIOS-TIKEUT
+1124 ; [.42CE.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-PIEUP
+1125 ; [.42CF.0020.0002] # HANGUL CHOSEONG PIEUP-SSANGSIOS
+1126 ; [.42D0.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-CIEUC
+1127 ; [.42D1.0020.0002] # HANGUL CHOSEONG PIEUP-CIEUC
+3176 ; [.42D1.0020.0004] # HANGUL LETTER PIEUP-CIEUC
+1128 ; [.42D2.0020.0002] # HANGUL CHOSEONG PIEUP-CHIEUCH
+1129 ; [.42D3.0020.0002] # HANGUL CHOSEONG PIEUP-THIEUTH
+3177 ; [.42D3.0020.0004] # HANGUL LETTER PIEUP-THIEUTH
+112A ; [.42D4.0020.0002] # HANGUL CHOSEONG PIEUP-PHIEUPH
+112B ; [.42D5.0020.0002] # HANGUL CHOSEONG KAPYEOUNPIEUP
+3178 ; [.42D5.0020.0004] # HANGUL LETTER KAPYEOUNPIEUP
+112C ; [.42D6.0020.0002] # HANGUL CHOSEONG KAPYEOUNSSANGPIEUP
+3179 ; [.42D6.0020.0004] # HANGUL LETTER KAPYEOUNSSANGPIEUP
+112D ; [.42D7.0020.0002] # HANGUL CHOSEONG SIOS-KIYEOK
+317A ; [.42D7.0020.0004] # HANGUL LETTER SIOS-KIYEOK
+112E ; [.42D8.0020.0002] # HANGUL CHOSEONG SIOS-NIEUN
+317B ; [.42D8.0020.0004] # HANGUL LETTER SIOS-NIEUN
+112F ; [.42D9.0020.0002] # HANGUL CHOSEONG SIOS-TIKEUT
+317C ; [.42D9.0020.0004] # HANGUL LETTER SIOS-TIKEUT
+1130 ; [.42DA.0020.0002] # HANGUL CHOSEONG SIOS-RIEUL
+1131 ; [.42DB.0020.0002] # HANGUL CHOSEONG SIOS-MIEUM
+1132 ; [.42DC.0020.0002] # HANGUL CHOSEONG SIOS-PIEUP
+317D ; [.42DC.0020.0004] # HANGUL LETTER SIOS-PIEUP
+1133 ; [.42DD.0020.0002] # HANGUL CHOSEONG SIOS-PIEUP-KIYEOK
+1134 ; [.42DE.0020.0002] # HANGUL CHOSEONG SIOS-SSANGSIOS
+1135 ; [.42DF.0020.0002] # HANGUL CHOSEONG SIOS-IEUNG
+1136 ; [.42E0.0020.0002] # HANGUL CHOSEONG SIOS-CIEUC
+317E ; [.42E0.0020.0004] # HANGUL LETTER SIOS-CIEUC
+1137 ; [.42E1.0020.0002] # HANGUL CHOSEONG SIOS-CHIEUCH
+1138 ; [.42E2.0020.0002] # HANGUL CHOSEONG SIOS-KHIEUKH
+1139 ; [.42E3.0020.0002] # HANGUL CHOSEONG SIOS-THIEUTH
+113A ; [.42E4.0020.0002] # HANGUL CHOSEONG SIOS-PHIEUPH
+113B ; [.42E5.0020.0002] # HANGUL CHOSEONG SIOS-HIEUH
+113C ; [.42E6.0020.0002] # HANGUL CHOSEONG CHITUEUMSIOS
+113D ; [.42E7.0020.0002] # HANGUL CHOSEONG CHITUEUMSSANGSIOS
+113E ; [.42E8.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMSIOS
+113F ; [.42E9.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS
+1140 ; [.42EA.0020.0002] # HANGUL CHOSEONG PANSIOS
+317F ; [.42EA.0020.0004] # HANGUL LETTER PANSIOS
+1141 ; [.42EB.0020.0002] # HANGUL CHOSEONG IEUNG-KIYEOK
+1142 ; [.42EC.0020.0002] # HANGUL CHOSEONG IEUNG-TIKEUT
+1143 ; [.42ED.0020.0002] # HANGUL CHOSEONG IEUNG-MIEUM
+1144 ; [.42EE.0020.0002] # HANGUL CHOSEONG IEUNG-PIEUP
+1145 ; [.42EF.0020.0002] # HANGUL CHOSEONG IEUNG-SIOS
+1146 ; [.42F0.0020.0002] # HANGUL CHOSEONG IEUNG-PANSIOS
+1147 ; [.42F1.0020.0002] # HANGUL CHOSEONG SSANGIEUNG
+3180 ; [.42F1.0020.0004] # HANGUL LETTER SSANGIEUNG
+1148 ; [.42F2.0020.0002] # HANGUL CHOSEONG IEUNG-CIEUC
+1149 ; [.42F3.0020.0002] # HANGUL CHOSEONG IEUNG-CHIEUCH
+114A ; [.42F4.0020.0002] # HANGUL CHOSEONG IEUNG-THIEUTH
+114B ; [.42F5.0020.0002] # HANGUL CHOSEONG IEUNG-PHIEUPH
+114C ; [.42F6.0020.0002] # HANGUL CHOSEONG YESIEUNG
+3181 ; [.42F6.0020.0004] # HANGUL LETTER YESIEUNG
+114D ; [.42F7.0020.0002] # HANGUL CHOSEONG CIEUC-IEUNG
+114E ; [.42F8.0020.0002] # HANGUL CHOSEONG CHITUEUMCIEUC
+114F ; [.42F9.0020.0002] # HANGUL CHOSEONG CHITUEUMSSANGCIEUC
+1150 ; [.42FA.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMCIEUC
+1151 ; [.42FB.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC
+1152 ; [.42FC.0020.0002] # HANGUL CHOSEONG CHIEUCH-KHIEUKH
+1153 ; [.42FD.0020.0002] # HANGUL CHOSEONG CHIEUCH-HIEUH
+1154 ; [.42FE.0020.0002] # HANGUL CHOSEONG CHITUEUMCHIEUCH
+1155 ; [.42FF.0020.0002] # HANGUL CHOSEONG CEONGCHIEUMCHIEUCH
+1156 ; [.4300.0020.0002] # HANGUL CHOSEONG PHIEUPH-PIEUP
+1157 ; [.4301.0020.0002] # HANGUL CHOSEONG KAPYEOUNPHIEUPH
+3184 ; [.4301.0020.0004] # HANGUL LETTER KAPYEOUNPHIEUPH
+1158 ; [.4302.0020.0002] # HANGUL CHOSEONG SSANGHIEUH
+3185 ; [.4302.0020.0004] # HANGUL LETTER SSANGHIEUH
+1159 ; [.4303.0020.0002] # HANGUL CHOSEONG YEORINHIEUH
+3186 ; [.4303.0020.0004] # HANGUL LETTER YEORINHIEUH
+115A ; [.4304.0020.0002] # HANGUL CHOSEONG KIYEOK-TIKEUT
+115B ; [.4305.0020.0002] # HANGUL CHOSEONG NIEUN-SIOS
+115C ; [.4306.0020.0002] # HANGUL CHOSEONG NIEUN-CIEUC
+115D ; [.4307.0020.0002] # HANGUL CHOSEONG NIEUN-HIEUH
+115E ; [.4308.0020.0002] # HANGUL CHOSEONG TIKEUT-RIEUL
+A960 ; [.4309.0020.0002] # HANGUL CHOSEONG TIKEUT-MIEUM
+A961 ; [.430A.0020.0002] # HANGUL CHOSEONG TIKEUT-PIEUP
+A962 ; [.430B.0020.0002] # HANGUL CHOSEONG TIKEUT-SIOS
+A963 ; [.430C.0020.0002] # HANGUL CHOSEONG TIKEUT-CIEUC
+A964 ; [.430D.0020.0002] # HANGUL CHOSEONG RIEUL-KIYEOK
+A965 ; [.430E.0020.0002] # HANGUL CHOSEONG RIEUL-SSANGKIYEOK
+A966 ; [.430F.0020.0002] # HANGUL CHOSEONG RIEUL-TIKEUT
+A967 ; [.4310.0020.0002] # HANGUL CHOSEONG RIEUL-SSANGTIKEUT
+A968 ; [.4311.0020.0002] # HANGUL CHOSEONG RIEUL-MIEUM
+A969 ; [.4312.0020.0002] # HANGUL CHOSEONG RIEUL-PIEUP
+A96A ; [.4313.0020.0002] # HANGUL CHOSEONG RIEUL-SSANGPIEUP
+A96B ; [.4314.0020.0002] # HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP
+A96C ; [.4315.0020.0002] # HANGUL CHOSEONG RIEUL-SIOS
+A96D ; [.4316.0020.0002] # HANGUL CHOSEONG RIEUL-CIEUC
+A96E ; [.4317.0020.0002] # HANGUL CHOSEONG RIEUL-KHIEUKH
+A96F ; [.4318.0020.0002] # HANGUL CHOSEONG MIEUM-KIYEOK
+A970 ; [.4319.0020.0002] # HANGUL CHOSEONG MIEUM-TIKEUT
+A971 ; [.431A.0020.0002] # HANGUL CHOSEONG MIEUM-SIOS
+A972 ; [.431B.0020.0002] # HANGUL CHOSEONG PIEUP-SIOS-THIEUTH
+A973 ; [.431C.0020.0002] # HANGUL CHOSEONG PIEUP-KHIEUKH
+A974 ; [.431D.0020.0002] # HANGUL CHOSEONG PIEUP-HIEUH
+A975 ; [.431E.0020.0002] # HANGUL CHOSEONG SSANGSIOS-PIEUP
+A976 ; [.431F.0020.0002] # HANGUL CHOSEONG IEUNG-RIEUL
+A977 ; [.4320.0020.0002] # HANGUL CHOSEONG IEUNG-HIEUH
+A978 ; [.4321.0020.0002] # HANGUL CHOSEONG SSANGCIEUC-HIEUH
+A979 ; [.4322.0020.0002] # HANGUL CHOSEONG SSANGTHIEUTH
+A97A ; [.4323.0020.0002] # HANGUL CHOSEONG PHIEUPH-HIEUH
+A97B ; [.4324.0020.0002] # HANGUL CHOSEONG HIEUH-SIOS
+A97C ; [.4325.0020.0002] # HANGUL CHOSEONG SSANGYEORINHIEUH
+115F ; [.4326.0020.0002] # HANGUL CHOSEONG FILLER
+1160 ; [.4327.0020.0002] # HANGUL JUNGSEONG FILLER
+3164 ; [.4327.0020.0004] # HANGUL FILLER
+FFA0 ; [.4327.0020.0012] # HALFWIDTH HANGUL FILLER
+1161 ; [.4328.0020.0002] # HANGUL JUNGSEONG A
+314F ; [.4328.0020.0004] # HANGUL LETTER A
+FFC2 ; [.4328.0020.0012] # HALFWIDTH HANGUL LETTER A
+1162 ; [.4329.0020.0002] # HANGUL JUNGSEONG AE
+3150 ; [.4329.0020.0004] # HANGUL LETTER AE
+FFC3 ; [.4329.0020.0012] # HALFWIDTH HANGUL LETTER AE
+1163 ; [.432A.0020.0002] # HANGUL JUNGSEONG YA
+3151 ; [.432A.0020.0004] # HANGUL LETTER YA
+FFC4 ; [.432A.0020.0012] # HALFWIDTH HANGUL LETTER YA
+1164 ; [.432B.0020.0002] # HANGUL JUNGSEONG YAE
+3152 ; [.432B.0020.0004] # HANGUL LETTER YAE
+FFC5 ; [.432B.0020.0012] # HALFWIDTH HANGUL LETTER YAE
+1165 ; [.432C.0020.0002] # HANGUL JUNGSEONG EO
+3153 ; [.432C.0020.0004] # HANGUL LETTER EO
+FFC6 ; [.432C.0020.0012] # HALFWIDTH HANGUL LETTER EO
+1166 ; [.432D.0020.0002] # HANGUL JUNGSEONG E
+3154 ; [.432D.0020.0004] # HANGUL LETTER E
+FFC7 ; [.432D.0020.0012] # HALFWIDTH HANGUL LETTER E
+1167 ; [.432E.0020.0002] # HANGUL JUNGSEONG YEO
+3155 ; [.432E.0020.0004] # HANGUL LETTER YEO
+FFCA ; [.432E.0020.0012] # HALFWIDTH HANGUL LETTER YEO
+1168 ; [.432F.0020.0002] # HANGUL JUNGSEONG YE
+3156 ; [.432F.0020.0004] # HANGUL LETTER YE
+FFCB ; [.432F.0020.0012] # HALFWIDTH HANGUL LETTER YE
+1169 ; [.4330.0020.0002] # HANGUL JUNGSEONG O
+3157 ; [.4330.0020.0004] # HANGUL LETTER O
+FFCC ; [.4330.0020.0012] # HALFWIDTH HANGUL LETTER O
+116A ; [.4331.0020.0002] # HANGUL JUNGSEONG WA
+3158 ; [.4331.0020.0004] # HANGUL LETTER WA
+FFCD ; [.4331.0020.0012] # HALFWIDTH HANGUL LETTER WA
+116B ; [.4332.0020.0002] # HANGUL JUNGSEONG WAE
+3159 ; [.4332.0020.0004] # HANGUL LETTER WAE
+FFCE ; [.4332.0020.0012] # HALFWIDTH HANGUL LETTER WAE
+116C ; [.4333.0020.0002] # HANGUL JUNGSEONG OE
+315A ; [.4333.0020.0004] # HANGUL LETTER OE
+FFCF ; [.4333.0020.0012] # HALFWIDTH HANGUL LETTER OE
+116D ; [.4334.0020.0002] # HANGUL JUNGSEONG YO
+315B ; [.4334.0020.0004] # HANGUL LETTER YO
+FFD2 ; [.4334.0020.0012] # HALFWIDTH HANGUL LETTER YO
+116E ; [.4335.0020.0002] # HANGUL JUNGSEONG U
+315C ; [.4335.0020.0004] # HANGUL LETTER U
+FFD3 ; [.4335.0020.0012] # HALFWIDTH HANGUL LETTER U
+116F ; [.4336.0020.0002] # HANGUL JUNGSEONG WEO
+315D ; [.4336.0020.0004] # HANGUL LETTER WEO
+FFD4 ; [.4336.0020.0012] # HALFWIDTH HANGUL LETTER WEO
+1170 ; [.4337.0020.0002] # HANGUL JUNGSEONG WE
+315E ; [.4337.0020.0004] # HANGUL LETTER WE
+FFD5 ; [.4337.0020.0012] # HALFWIDTH HANGUL LETTER WE
+1171 ; [.4338.0020.0002] # HANGUL JUNGSEONG WI
+315F ; [.4338.0020.0004] # HANGUL LETTER WI
+FFD6 ; [.4338.0020.0012] # HALFWIDTH HANGUL LETTER WI
+1172 ; [.4339.0020.0002] # HANGUL JUNGSEONG YU
+3160 ; [.4339.0020.0004] # HANGUL LETTER YU
+FFD7 ; [.4339.0020.0012] # HALFWIDTH HANGUL LETTER YU
+1173 ; [.433A.0020.0002] # HANGUL JUNGSEONG EU
+3161 ; [.433A.0020.0004] # HANGUL LETTER EU
+FFDA ; [.433A.0020.0012] # HALFWIDTH HANGUL LETTER EU
+1174 ; [.433B.0020.0002] # HANGUL JUNGSEONG YI
+3162 ; [.433B.0020.0004] # HANGUL LETTER YI
+FFDB ; [.433B.0020.0012] # HALFWIDTH HANGUL LETTER YI
+1175 ; [.433C.0020.0002] # HANGUL JUNGSEONG I
+3163 ; [.433C.0020.0004] # HANGUL LETTER I
+FFDC ; [.433C.0020.0012] # HALFWIDTH HANGUL LETTER I
+1176 ; [.433D.0020.0002] # HANGUL JUNGSEONG A-O
+1177 ; [.433E.0020.0002] # HANGUL JUNGSEONG A-U
+1178 ; [.433F.0020.0002] # HANGUL JUNGSEONG YA-O
+1179 ; [.4340.0020.0002] # HANGUL JUNGSEONG YA-YO
+117A ; [.4341.0020.0002] # HANGUL JUNGSEONG EO-O
+117B ; [.4342.0020.0002] # HANGUL JUNGSEONG EO-U
+117C ; [.4343.0020.0002] # HANGUL JUNGSEONG EO-EU
+117D ; [.4344.0020.0002] # HANGUL JUNGSEONG YEO-O
+117E ; [.4345.0020.0002] # HANGUL JUNGSEONG YEO-U
+117F ; [.4346.0020.0002] # HANGUL JUNGSEONG O-EO
+1180 ; [.4347.0020.0002] # HANGUL JUNGSEONG O-E
+1181 ; [.4348.0020.0002] # HANGUL JUNGSEONG O-YE
+1182 ; [.4349.0020.0002] # HANGUL JUNGSEONG O-O
+1183 ; [.434A.0020.0002] # HANGUL JUNGSEONG O-U
+1184 ; [.434B.0020.0002] # HANGUL JUNGSEONG YO-YA
+3187 ; [.434B.0020.0004] # HANGUL LETTER YO-YA
+1185 ; [.434C.0020.0002] # HANGUL JUNGSEONG YO-YAE
+3188 ; [.434C.0020.0004] # HANGUL LETTER YO-YAE
+1186 ; [.434D.0020.0002] # HANGUL JUNGSEONG YO-YEO
+1187 ; [.434E.0020.0002] # HANGUL JUNGSEONG YO-O
+1188 ; [.434F.0020.0002] # HANGUL JUNGSEONG YO-I
+3189 ; [.434F.0020.0004] # HANGUL LETTER YO-I
+1189 ; [.4350.0020.0002] # HANGUL JUNGSEONG U-A
+118A ; [.4351.0020.0002] # HANGUL JUNGSEONG U-AE
+118B ; [.4352.0020.0002] # HANGUL JUNGSEONG U-EO-EU
+118C ; [.4353.0020.0002] # HANGUL JUNGSEONG U-YE
+118D ; [.4354.0020.0002] # HANGUL JUNGSEONG U-U
+118E ; [.4355.0020.0002] # HANGUL JUNGSEONG YU-A
+118F ; [.4356.0020.0002] # HANGUL JUNGSEONG YU-EO
+1190 ; [.4357.0020.0002] # HANGUL JUNGSEONG YU-E
+1191 ; [.4358.0020.0002] # HANGUL JUNGSEONG YU-YEO
+318A ; [.4358.0020.0004] # HANGUL LETTER YU-YEO
+1192 ; [.4359.0020.0002] # HANGUL JUNGSEONG YU-YE
+318B ; [.4359.0020.0004] # HANGUL LETTER YU-YE
+1193 ; [.435A.0020.0002] # HANGUL JUNGSEONG YU-U
+1194 ; [.435B.0020.0002] # HANGUL JUNGSEONG YU-I
+318C ; [.435B.0020.0004] # HANGUL LETTER YU-I
+1195 ; [.435C.0020.0002] # HANGUL JUNGSEONG EU-U
+1196 ; [.435D.0020.0002] # HANGUL JUNGSEONG EU-EU
+1197 ; [.435E.0020.0002] # HANGUL JUNGSEONG YI-U
+1198 ; [.435F.0020.0002] # HANGUL JUNGSEONG I-A
+1199 ; [.4360.0020.0002] # HANGUL JUNGSEONG I-YA
+119A ; [.4361.0020.0002] # HANGUL JUNGSEONG I-O
+119B ; [.4362.0020.0002] # HANGUL JUNGSEONG I-U
+119C ; [.4363.0020.0002] # HANGUL JUNGSEONG I-EU
+119D ; [.4364.0020.0002] # HANGUL JUNGSEONG I-ARAEA
+119E ; [.4365.0020.0002] # HANGUL JUNGSEONG ARAEA
+318D ; [.4365.0020.0004] # HANGUL LETTER ARAEA
+119F ; [.4366.0020.0002] # HANGUL JUNGSEONG ARAEA-EO
+11A0 ; [.4367.0020.0002] # HANGUL JUNGSEONG ARAEA-U
+11A1 ; [.4368.0020.0002] # HANGUL JUNGSEONG ARAEA-I
+318E ; [.4368.0020.0004] # HANGUL LETTER ARAEAE
+11A2 ; [.4369.0020.0002] # HANGUL JUNGSEONG SSANGARAEA
+11A3 ; [.436A.0020.0002] # HANGUL JUNGSEONG A-EU
+11A4 ; [.436B.0020.0002] # HANGUL JUNGSEONG YA-U
+11A5 ; [.436C.0020.0002] # HANGUL JUNGSEONG YEO-YA
+11A6 ; [.436D.0020.0002] # HANGUL JUNGSEONG O-YA
+11A7 ; [.436E.0020.0002] # HANGUL JUNGSEONG O-YAE
+D7B0 ; [.436F.0020.0002] # HANGUL JUNGSEONG O-YEO
+D7B1 ; [.4370.0020.0002] # HANGUL JUNGSEONG O-O-I
+D7B2 ; [.4371.0020.0002] # HANGUL JUNGSEONG YO-A
+D7B3 ; [.4372.0020.0002] # HANGUL JUNGSEONG YO-AE
+D7B4 ; [.4373.0020.0002] # HANGUL JUNGSEONG YO-EO
+D7B5 ; [.4374.0020.0002] # HANGUL JUNGSEONG U-YEO
+D7B6 ; [.4375.0020.0002] # HANGUL JUNGSEONG U-I-I
+D7B7 ; [.4376.0020.0002] # HANGUL JUNGSEONG YU-AE
+D7B8 ; [.4377.0020.0002] # HANGUL JUNGSEONG YU-O
+D7B9 ; [.4378.0020.0002] # HANGUL JUNGSEONG EU-A
+D7BA ; [.4379.0020.0002] # HANGUL JUNGSEONG EU-EO
+D7BB ; [.437A.0020.0002] # HANGUL JUNGSEONG EU-E
+D7BC ; [.437B.0020.0002] # HANGUL JUNGSEONG EU-O
+D7BD ; [.437C.0020.0002] # HANGUL JUNGSEONG I-YA-O
+D7BE ; [.437D.0020.0002] # HANGUL JUNGSEONG I-YAE
+D7BF ; [.437E.0020.0002] # HANGUL JUNGSEONG I-YEO
+D7C0 ; [.437F.0020.0002] # HANGUL JUNGSEONG I-YE
+D7C1 ; [.4380.0020.0002] # HANGUL JUNGSEONG I-O-I
+D7C2 ; [.4381.0020.0002] # HANGUL JUNGSEONG I-YO
+D7C3 ; [.4382.0020.0002] # HANGUL JUNGSEONG I-YU
+D7C4 ; [.4383.0020.0002] # HANGUL JUNGSEONG I-I
+D7C5 ; [.4384.0020.0002] # HANGUL JUNGSEONG ARAEA-A
+D7C6 ; [.4385.0020.0002] # HANGUL JUNGSEONG ARAEA-E
+11A8 ; [.4386.0020.0002] # HANGUL JONGSEONG KIYEOK
+11A9 ; [.4387.0020.0002] # HANGUL JONGSEONG SSANGKIYEOK
+11AA ; [.4388.0020.0002] # HANGUL JONGSEONG KIYEOK-SIOS
+3133 ; [.4388.0020.0004] # HANGUL LETTER KIYEOK-SIOS
+FFA3 ; [.4388.0020.0012] # HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+11AB ; [.4389.0020.0002] # HANGUL JONGSEONG NIEUN
+11AC ; [.438A.0020.0002] # HANGUL JONGSEONG NIEUN-CIEUC
+3135 ; [.438A.0020.0004] # HANGUL LETTER NIEUN-CIEUC
+FFA5 ; [.438A.0020.0012] # HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+11AD ; [.438B.0020.0002] # HANGUL JONGSEONG NIEUN-HIEUH
+3136 ; [.438B.0020.0004] # HANGUL LETTER NIEUN-HIEUH
+FFA6 ; [.438B.0020.0012] # HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+11AE ; [.438C.0020.0002] # HANGUL JONGSEONG TIKEUT
+11AF ; [.438D.0020.0002] # HANGUL JONGSEONG RIEUL
+11B0 ; [.438E.0020.0002] # HANGUL JONGSEONG RIEUL-KIYEOK
+313A ; [.438E.0020.0004] # HANGUL LETTER RIEUL-KIYEOK
+FFAA ; [.438E.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+11B1 ; [.438F.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM
+313B ; [.438F.0020.0004] # HANGUL LETTER RIEUL-MIEUM
+FFAB ; [.438F.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+11B2 ; [.4390.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP
+313C ; [.4390.0020.0004] # HANGUL LETTER RIEUL-PIEUP
+FFAC ; [.4390.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+11B3 ; [.4391.0020.0002] # HANGUL JONGSEONG RIEUL-SIOS
+313D ; [.4391.0020.0004] # HANGUL LETTER RIEUL-SIOS
+FFAD ; [.4391.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-SIOS
+11B4 ; [.4392.0020.0002] # HANGUL JONGSEONG RIEUL-THIEUTH
+313E ; [.4392.0020.0004] # HANGUL LETTER RIEUL-THIEUTH
+FFAE ; [.4392.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+11B5 ; [.4393.0020.0002] # HANGUL JONGSEONG RIEUL-PHIEUPH
+313F ; [.4393.0020.0004] # HANGUL LETTER RIEUL-PHIEUPH
+FFAF ; [.4393.0020.0012] # HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+11B6 ; [.4394.0020.0002] # HANGUL JONGSEONG RIEUL-HIEUH
+11B7 ; [.4395.0020.0002] # HANGUL JONGSEONG MIEUM
+11B8 ; [.4396.0020.0002] # HANGUL JONGSEONG PIEUP
+11B9 ; [.4397.0020.0002] # HANGUL JONGSEONG PIEUP-SIOS
+11BA ; [.4398.0020.0002] # HANGUL JONGSEONG SIOS
+11BB ; [.4399.0020.0002] # HANGUL JONGSEONG SSANGSIOS
+11BC ; [.439A.0020.0002] # HANGUL JONGSEONG IEUNG
+11BD ; [.439B.0020.0002] # HANGUL JONGSEONG CIEUC
+11BE ; [.439C.0020.0002] # HANGUL JONGSEONG CHIEUCH
+11BF ; [.439D.0020.0002] # HANGUL JONGSEONG KHIEUKH
+11C0 ; [.439E.0020.0002] # HANGUL JONGSEONG THIEUTH
+11C1 ; [.439F.0020.0002] # HANGUL JONGSEONG PHIEUPH
+11C2 ; [.43A0.0020.0002] # HANGUL JONGSEONG HIEUH
+11C3 ; [.43A1.0020.0002] # HANGUL JONGSEONG KIYEOK-RIEUL
+11C4 ; [.43A2.0020.0002] # HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK
+11C5 ; [.43A3.0020.0002] # HANGUL JONGSEONG NIEUN-KIYEOK
+11C6 ; [.43A4.0020.0002] # HANGUL JONGSEONG NIEUN-TIKEUT
+11C7 ; [.43A5.0020.0002] # HANGUL JONGSEONG NIEUN-SIOS
+3167 ; [.43A5.0020.0004] # HANGUL LETTER NIEUN-SIOS
+11C8 ; [.43A6.0020.0002] # HANGUL JONGSEONG NIEUN-PANSIOS
+3168 ; [.43A6.0020.0004] # HANGUL LETTER NIEUN-PANSIOS
+11C9 ; [.43A7.0020.0002] # HANGUL JONGSEONG NIEUN-THIEUTH
+11CA ; [.43A8.0020.0002] # HANGUL JONGSEONG TIKEUT-KIYEOK
+11CB ; [.43A9.0020.0002] # HANGUL JONGSEONG TIKEUT-RIEUL
+11CC ; [.43AA.0020.0002] # HANGUL JONGSEONG RIEUL-KIYEOK-SIOS
+3169 ; [.43AA.0020.0004] # HANGUL LETTER RIEUL-KIYEOK-SIOS
+11CD ; [.43AB.0020.0002] # HANGUL JONGSEONG RIEUL-NIEUN
+11CE ; [.43AC.0020.0002] # HANGUL JONGSEONG RIEUL-TIKEUT
+316A ; [.43AC.0020.0004] # HANGUL LETTER RIEUL-TIKEUT
+11CF ; [.43AD.0020.0002] # HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH
+11D0 ; [.43AE.0020.0002] # HANGUL JONGSEONG SSANGRIEUL
+11D1 ; [.43AF.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
+11D2 ; [.43B0.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM-SIOS
+11D3 ; [.43B1.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-SIOS
+316B ; [.43B1.0020.0004] # HANGUL LETTER RIEUL-PIEUP-SIOS
+11D4 ; [.43B2.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-HIEUH
+11D5 ; [.43B3.0020.0002] # HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP
+11D6 ; [.43B4.0020.0002] # HANGUL JONGSEONG RIEUL-SSANGSIOS
+11D7 ; [.43B5.0020.0002] # HANGUL JONGSEONG RIEUL-PANSIOS
+316C ; [.43B5.0020.0004] # HANGUL LETTER RIEUL-PANSIOS
+11D8 ; [.43B6.0020.0002] # HANGUL JONGSEONG RIEUL-KHIEUKH
+11D9 ; [.43B7.0020.0002] # HANGUL JONGSEONG RIEUL-YEORINHIEUH
+316D ; [.43B7.0020.0004] # HANGUL LETTER RIEUL-YEORINHIEUH
+11DA ; [.43B8.0020.0002] # HANGUL JONGSEONG MIEUM-KIYEOK
+11DB ; [.43B9.0020.0002] # HANGUL JONGSEONG MIEUM-RIEUL
+11DC ; [.43BA.0020.0002] # HANGUL JONGSEONG MIEUM-PIEUP
+11DD ; [.43BB.0020.0002] # HANGUL JONGSEONG MIEUM-SIOS
+316F ; [.43BB.0020.0004] # HANGUL LETTER MIEUM-SIOS
+11DE ; [.43BC.0020.0002] # HANGUL JONGSEONG MIEUM-SSANGSIOS
+11DF ; [.43BD.0020.0002] # HANGUL JONGSEONG MIEUM-PANSIOS
+3170 ; [.43BD.0020.0004] # HANGUL LETTER MIEUM-PANSIOS
+11E0 ; [.43BE.0020.0002] # HANGUL JONGSEONG MIEUM-CHIEUCH
+11E1 ; [.43BF.0020.0002] # HANGUL JONGSEONG MIEUM-HIEUH
+11E2 ; [.43C0.0020.0002] # HANGUL JONGSEONG KAPYEOUNMIEUM
+11E3 ; [.43C1.0020.0002] # HANGUL JONGSEONG PIEUP-RIEUL
+11E4 ; [.43C2.0020.0002] # HANGUL JONGSEONG PIEUP-PHIEUPH
+11E5 ; [.43C3.0020.0002] # HANGUL JONGSEONG PIEUP-HIEUH
+11E6 ; [.43C4.0020.0002] # HANGUL JONGSEONG KAPYEOUNPIEUP
+11E7 ; [.43C5.0020.0002] # HANGUL JONGSEONG SIOS-KIYEOK
+11E8 ; [.43C6.0020.0002] # HANGUL JONGSEONG SIOS-TIKEUT
+11E9 ; [.43C7.0020.0002] # HANGUL JONGSEONG SIOS-RIEUL
+11EA ; [.43C8.0020.0002] # HANGUL JONGSEONG SIOS-PIEUP
+11EB ; [.43C9.0020.0002] # HANGUL JONGSEONG PANSIOS
+11EC ; [.43CA.0020.0002] # HANGUL JONGSEONG IEUNG-KIYEOK
+11ED ; [.43CB.0020.0002] # HANGUL JONGSEONG IEUNG-SSANGKIYEOK
+11EE ; [.43CC.0020.0002] # HANGUL JONGSEONG SSANGIEUNG
+11EF ; [.43CD.0020.0002] # HANGUL JONGSEONG IEUNG-KHIEUKH
+11F0 ; [.43CE.0020.0002] # HANGUL JONGSEONG YESIEUNG
+11F1 ; [.43CF.0020.0002] # HANGUL JONGSEONG YESIEUNG-SIOS
+3182 ; [.43CF.0020.0004] # HANGUL LETTER YESIEUNG-SIOS
+11F2 ; [.43D0.0020.0002] # HANGUL JONGSEONG YESIEUNG-PANSIOS
+3183 ; [.43D0.0020.0004] # HANGUL LETTER YESIEUNG-PANSIOS
+11F3 ; [.43D1.0020.0002] # HANGUL JONGSEONG PHIEUPH-PIEUP
+11F4 ; [.43D2.0020.0002] # HANGUL JONGSEONG KAPYEOUNPHIEUPH
+11F5 ; [.43D3.0020.0002] # HANGUL JONGSEONG HIEUH-NIEUN
+11F6 ; [.43D4.0020.0002] # HANGUL JONGSEONG HIEUH-RIEUL
+11F7 ; [.43D5.0020.0002] # HANGUL JONGSEONG HIEUH-MIEUM
+11F8 ; [.43D6.0020.0002] # HANGUL JONGSEONG HIEUH-PIEUP
+11F9 ; [.43D7.0020.0002] # HANGUL JONGSEONG YEORINHIEUH
+11FA ; [.43D8.0020.0002] # HANGUL JONGSEONG KIYEOK-NIEUN
+11FB ; [.43D9.0020.0002] # HANGUL JONGSEONG KIYEOK-PIEUP
+11FC ; [.43DA.0020.0002] # HANGUL JONGSEONG KIYEOK-CHIEUCH
+11FD ; [.43DB.0020.0002] # HANGUL JONGSEONG KIYEOK-KHIEUKH
+11FE ; [.43DC.0020.0002] # HANGUL JONGSEONG KIYEOK-HIEUH
+11FF ; [.43DD.0020.0002] # HANGUL JONGSEONG SSANGNIEUN
+D7CB ; [.43DE.0020.0002] # HANGUL JONGSEONG NIEUN-RIEUL
+D7CC ; [.43DF.0020.0002] # HANGUL JONGSEONG NIEUN-CHIEUCH
+D7CD ; [.43E0.0020.0002] # HANGUL JONGSEONG SSANGTIKEUT
+D7CE ; [.43E1.0020.0002] # HANGUL JONGSEONG SSANGTIKEUT-PIEUP
+D7CF ; [.43E2.0020.0002] # HANGUL JONGSEONG TIKEUT-PIEUP
+D7D0 ; [.43E3.0020.0002] # HANGUL JONGSEONG TIKEUT-SIOS
+D7D1 ; [.43E4.0020.0002] # HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK
+D7D2 ; [.43E5.0020.0002] # HANGUL JONGSEONG TIKEUT-CIEUC
+D7D3 ; [.43E6.0020.0002] # HANGUL JONGSEONG TIKEUT-CHIEUCH
+D7D4 ; [.43E7.0020.0002] # HANGUL JONGSEONG TIKEUT-THIEUTH
+D7D5 ; [.43E8.0020.0002] # HANGUL JONGSEONG RIEUL-SSANGKIYEOK
+D7D6 ; [.43E9.0020.0002] # HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH
+D7D7 ; [.43EA.0020.0002] # HANGUL JONGSEONG SSANGRIEUL-KHIEUKH
+D7D8 ; [.43EB.0020.0002] # HANGUL JONGSEONG RIEUL-MIEUM-HIEUH
+D7D9 ; [.43EC.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT
+D7DA ; [.43ED.0020.0002] # HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH
+D7DB ; [.43EE.0020.0002] # HANGUL JONGSEONG RIEUL-YESIEUNG
+D7DC ; [.43EF.0020.0002] # HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH
+D7DD ; [.43F0.0020.0002] # HANGUL JONGSEONG KAPYEOUNRIEUL
+D7DE ; [.43F1.0020.0002] # HANGUL JONGSEONG MIEUM-NIEUN
+D7DF ; [.43F2.0020.0002] # HANGUL JONGSEONG MIEUM-SSANGNIEUN
+D7E0 ; [.43F3.0020.0002] # HANGUL JONGSEONG SSANGMIEUM
+D7E1 ; [.43F4.0020.0002] # HANGUL JONGSEONG MIEUM-PIEUP-SIOS
+D7E2 ; [.43F5.0020.0002] # HANGUL JONGSEONG MIEUM-CIEUC
+D7E3 ; [.43F6.0020.0002] # HANGUL JONGSEONG PIEUP-TIKEUT
+D7E4 ; [.43F7.0020.0002] # HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH
+D7E5 ; [.43F8.0020.0002] # HANGUL JONGSEONG PIEUP-MIEUM
+D7E6 ; [.43F9.0020.0002] # HANGUL JONGSEONG SSANGPIEUP
+D7E7 ; [.43FA.0020.0002] # HANGUL JONGSEONG PIEUP-SIOS-TIKEUT
+D7E8 ; [.43FB.0020.0002] # HANGUL JONGSEONG PIEUP-CIEUC
+D7E9 ; [.43FC.0020.0002] # HANGUL JONGSEONG PIEUP-CHIEUCH
+D7EA ; [.43FD.0020.0002] # HANGUL JONGSEONG SIOS-MIEUM
+D7EB ; [.43FE.0020.0002] # HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP
+D7EC ; [.43FF.0020.0002] # HANGUL JONGSEONG SSANGSIOS-KIYEOK
+D7ED ; [.4400.0020.0002] # HANGUL JONGSEONG SSANGSIOS-TIKEUT
+D7EE ; [.4401.0020.0002] # HANGUL JONGSEONG SIOS-PANSIOS
+D7EF ; [.4402.0020.0002] # HANGUL JONGSEONG SIOS-CIEUC
+D7F0 ; [.4403.0020.0002] # HANGUL JONGSEONG SIOS-CHIEUCH
+D7F1 ; [.4404.0020.0002] # HANGUL JONGSEONG SIOS-THIEUTH
+D7F2 ; [.4405.0020.0002] # HANGUL JONGSEONG SIOS-HIEUH
+D7F3 ; [.4406.0020.0002] # HANGUL JONGSEONG PANSIOS-PIEUP
+D7F4 ; [.4407.0020.0002] # HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP
+D7F5 ; [.4408.0020.0002] # HANGUL JONGSEONG YESIEUNG-MIEUM
+D7F6 ; [.4409.0020.0002] # HANGUL JONGSEONG YESIEUNG-HIEUH
+D7F7 ; [.440A.0020.0002] # HANGUL JONGSEONG CIEUC-PIEUP
+D7F8 ; [.440B.0020.0002] # HANGUL JONGSEONG CIEUC-SSANGPIEUP
+D7F9 ; [.440C.0020.0002] # HANGUL JONGSEONG SSANGCIEUC
+D7FA ; [.440D.0020.0002] # HANGUL JONGSEONG PHIEUPH-SIOS
+D7FB ; [.440E.0020.0002] # HANGUL JONGSEONG PHIEUPH-THIEUTH
+3041 ; [.440F.0020.000D] # HIRAGANA LETTER SMALL A
+3042 ; [.440F.0020.000E] # HIRAGANA LETTER A
+30A1 ; [.440F.0020.000F] # KATAKANA LETTER SMALL A
+FF67 ; [.440F.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL A
+30A2 ; [.440F.0020.0011] # KATAKANA LETTER A
+FF71 ; [.440F.0020.0012] # HALFWIDTH KATAKANA LETTER A
+32D0 ; [.440F.0020.0013] # CIRCLED KATAKANA A
+3303 ; [.440F.0020.001C][.2032.0020.001C][.443A.0020.001C] # SQUARE AARU
+3300 ; [.440F.0020.001C][.4429.0020.001C][.0000.0038.001C][.2032.0020.001C][.4423.0020.001C] # SQUARE APAATO
+3301 ; [.440F.0020.001C][.443A.0020.001C][.442B.0020.001C][.440F.0020.001C] # SQUARE ARUHUA
+3302 ; [.440F.0020.001C][.4442.0020.001C][.442C.0020.001C][.0000.0038.001C][.440F.0020.001C] # SQUARE ANPEA
+3043 ; [.4410.0020.000D] # HIRAGANA LETTER SMALL I
+3044 ; [.4410.0020.000E] # HIRAGANA LETTER I
+30A3 ; [.4410.0020.000F] # KATAKANA LETTER SMALL I
+FF68 ; [.4410.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL I
+30A4 ; [.4410.0020.0011] # KATAKANA LETTER I
+FF72 ; [.4410.0020.0012] # HALFWIDTH KATAKANA LETTER I
+32D1 ; [.4410.0020.0013] # CIRCLED KATAKANA I
+3304 ; [.4410.0020.001C][.4425.0020.001C][.4442.0020.001C][.4417.0020.001C][.0000.0037.001C] # SQUARE ININGU
+3305 ; [.4410.0020.001C][.4442.0020.001C][.4420.0020.001C] # SQUARE INTI
+3045 ; [.4411.0020.000D] # HIRAGANA LETTER SMALL U
+3046 ; [.4411.0020.000E] # HIRAGANA LETTER U
+30A5 ; [.4411.0020.000F] # KATAKANA LETTER SMALL U
+FF69 ; [.4411.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL U
+30A6 ; [.4411.0020.0011] # KATAKANA LETTER U
+FF73 ; [.4411.0020.0012] # HALFWIDTH KATAKANA LETTER U
+32D2 ; [.4411.0020.0013] # CIRCLED KATAKANA U
+3094 ; [.4411.0020.000E][.0000.0037.0002] # HIRAGANA LETTER VU
+30F4 ; [.4411.0020.0011][.0000.0037.0002] # KATAKANA LETTER VU
+3306 ; [.4411.0020.001C][.4414.0020.001C][.4442.0020.001C] # SQUARE UON
+1B000 ; [.4412.0020.0011] # KATAKANA LETTER ARCHAIC E
+3047 ; [.4413.0020.000D] # HIRAGANA LETTER SMALL E
+3048 ; [.4413.0020.000E] # HIRAGANA LETTER E
+30A7 ; [.4413.0020.000F] # KATAKANA LETTER SMALL E
+FF6A ; [.4413.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL E
+30A8 ; [.4413.0020.0011] # KATAKANA LETTER E
+FF74 ; [.4413.0020.0012] # HALFWIDTH KATAKANA LETTER E
+32D3 ; [.4413.0020.0013] # CIRCLED KATAKANA E
+3308 ; [.4413.0020.001C][.2032.0020.001C][.4415.0020.001C][.2032.0020.001C] # SQUARE EEKAA
+3307 ; [.4413.0020.001C][.441C.0020.001C][.4417.0020.001C][.2032.0020.001C][.4423.0020.001C][.0000.0037.001C] # SQUARE ESUKUUDO
+3049 ; [.4414.0020.000D] # HIRAGANA LETTER SMALL O
+304A ; [.4414.0020.000E] # HIRAGANA LETTER O
+30A9 ; [.4414.0020.000F] # KATAKANA LETTER SMALL O
+FF6B ; [.4414.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL O
+30AA ; [.4414.0020.0011] # KATAKANA LETTER O
+FF75 ; [.4414.0020.0012] # HALFWIDTH KATAKANA LETTER O
+32D4 ; [.4414.0020.0013] # CIRCLED KATAKANA O
+330A ; [.4414.0020.001C][.2032.0020.001C][.4430.0020.001C] # SQUARE OOMU
+3309 ; [.4414.0020.001C][.4442.0020.001C][.441C.0020.001C] # SQUARE ONSU
+3095 ; [.4415.0020.000D] # HIRAGANA LETTER SMALL KA
+304B ; [.4415.0020.000E] # HIRAGANA LETTER KA
+30F5 ; [.4415.0020.000F] # KATAKANA LETTER SMALL KA
+30AB ; [.4415.0020.0011] # KATAKANA LETTER KA
+FF76 ; [.4415.0020.0012] # HALFWIDTH KATAKANA LETTER KA
+32D5 ; [.4415.0020.0013] # CIRCLED KATAKANA KA
+304C ; [.4415.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GA
+30AC ; [.4415.0020.0011][.0000.0037.0002] # KATAKANA LETTER GA
+330B ; [.4415.0020.001C][.4410.0020.001C][.4439.0020.001C] # SQUARE KAIRI
+330C ; [.4415.0020.001C][.4438.0020.001C][.4421.0020.001C][.4423.0020.001C] # SQUARE KARATTO
+330D ; [.4415.0020.001C][.443C.0020.001C][.4439.0020.001C][.2032.0020.001C] # SQUARE KARORII
+330E ; [.4415.0020.001C][.0000.0037.001C][.443C.0020.001C][.4442.0020.001C] # SQUARE GARON
+330F ; [.4415.0020.001C][.0000.0037.001C][.4442.0020.001C][.442E.0020.001C] # SQUARE GANMA
+304D ; [.4416.0020.000E] # HIRAGANA LETTER KI
+30AD ; [.4416.0020.0011] # KATAKANA LETTER KI
+FF77 ; [.4416.0020.0012] # HALFWIDTH KATAKANA LETTER KI
+32D6 ; [.4416.0020.0013] # CIRCLED KATAKANA KI
+304E ; [.4416.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GI
+30AE ; [.4416.0020.0011][.0000.0037.0002] # KATAKANA LETTER GI
+3310 ; [.4416.0020.001C][.0000.0037.001C][.4415.0020.001C][.0000.0037.001C] # SQUARE GIGA
+3311 ; [.4416.0020.001C][.0000.0037.001C][.4425.0020.001C][.2032.0020.001C] # SQUARE GINII
+3312 ; [.4416.0020.001C][.4435.0020.001C][.4439.0020.001C][.2032.0020.001C] # SQUARE KYURII
+3313 ; [.4416.0020.001C][.0000.0037.001C][.443A.0020.001C][.441F.0020.001C][.0000.0037.001C][.2032.0020.001C] # SQUARE GIRUDAA
+3314 ; [.4416.0020.001C][.443C.0020.001C] # SQUARE KIRO
+3315 ; [.4416.0020.001C][.443C.0020.001C][.4417.0020.001C][.0000.0037.001C][.4438.0020.001C][.4430.0020.001C] # SQUARE KIROGURAMU
+3316 ; [.4416.0020.001C][.443C.0020.001C][.4431.0020.001C][.2032.0020.001C][.4423.0020.001C][.443A.0020.001C] # SQUARE KIROMEETORU
+3317 ; [.4416.0020.001C][.443C.0020.001C][.443D.0020.001C][.4421.0020.001C][.4423.0020.001C] # SQUARE KIROWATTO
+304F ; [.4417.0020.000E] # HIRAGANA LETTER KU
+31F0 ; [.4417.0020.000F] # KATAKANA LETTER SMALL KU
+30AF ; [.4417.0020.0011] # KATAKANA LETTER KU
+FF78 ; [.4417.0020.0012] # HALFWIDTH KATAKANA LETTER KU
+32D7 ; [.4417.0020.0013] # CIRCLED KATAKANA KU
+3050 ; [.4417.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GU
+30B0 ; [.4417.0020.0011][.0000.0037.0002] # KATAKANA LETTER GU
+3318 ; [.4417.0020.001C][.0000.0037.001C][.4438.0020.001C][.4430.0020.001C] # SQUARE GURAMU
+3319 ; [.4417.0020.001C][.0000.0037.001C][.4438.0020.001C][.4430.0020.001C][.4423.0020.001C][.4442.0020.001C] # SQUARE GURAMUTON
+331A ; [.4417.0020.001C][.443A.0020.001C][.441D.0020.001C][.0000.0037.001C][.4410.0020.001C][.443C.0020.001C] # SQUARE KURUZEIRO
+331B ; [.4417.0020.001C][.443C.0020.001C][.2032.0020.001C][.4427.0020.001C] # SQUARE KUROONE
+3096 ; [.4418.0020.000D] # HIRAGANA LETTER SMALL KE
+3051 ; [.4418.0020.000E] # HIRAGANA LETTER KE
+30F6 ; [.4418.0020.000F] # KATAKANA LETTER SMALL KE
+30B1 ; [.4418.0020.0011] # KATAKANA LETTER KE
+FF79 ; [.4418.0020.0012] # HALFWIDTH KATAKANA LETTER KE
+32D8 ; [.4418.0020.0013] # CIRCLED KATAKANA KE
+3052 ; [.4418.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GE
+30B2 ; [.4418.0020.0011][.0000.0037.0002] # KATAKANA LETTER GE
+331C ; [.4418.0020.001C][.2032.0020.001C][.441C.0020.001C] # SQUARE KEESU
+3053 ; [.4419.0020.000E] # HIRAGANA LETTER KO
+30B3 ; [.4419.0020.0011] # KATAKANA LETTER KO
+FF7A ; [.4419.0020.0012] # HALFWIDTH KATAKANA LETTER KO
+32D9 ; [.4419.0020.0013] # CIRCLED KATAKANA KO
+3054 ; [.4419.0020.000E][.0000.0037.0002] # HIRAGANA LETTER GO
+30B4 ; [.4419.0020.0011][.0000.0037.0002] # KATAKANA LETTER GO
+331E ; [.4419.0020.001C][.2032.0020.001C][.442D.0020.001C][.0000.0038.001C] # SQUARE KOOPO
+1F201 ; [.4419.0020.001C][.4419.0020.001C] # SQUARED KATAKANA KOKO
+30FF ; [.4419.0020.0016][.4423.0020.0016] # KATAKANA DIGRAPH KOTO
+331D ; [.4419.0020.001C][.443A.0020.001C][.4424.0020.001C] # SQUARE KORUNA
+3055 ; [.441A.0020.000E] # HIRAGANA LETTER SA
+30B5 ; [.441A.0020.0011] # KATAKANA LETTER SA
+FF7B ; [.441A.0020.0012] # HALFWIDTH KATAKANA LETTER SA
+32DA ; [.441A.0020.0013] # CIRCLED KATAKANA SA
+1F202 ; [.441A.0020.001C] # SQUARED KATAKANA SA
+3056 ; [.441A.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZA
+30B6 ; [.441A.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZA
+331F ; [.441A.0020.001C][.4410.0020.001C][.4417.0020.001C][.443A.0020.001C] # SQUARE SAIKURU
+3320 ; [.441A.0020.001C][.4442.0020.001C][.4420.0020.001C][.2032.0020.001C][.4430.0020.001C] # SQUARE SANTIIMU
+3057 ; [.441B.0020.000E] # HIRAGANA LETTER SI
+31F1 ; [.441B.0020.000F] # KATAKANA LETTER SMALL SI
+30B7 ; [.441B.0020.0011] # KATAKANA LETTER SI
+FF7C ; [.441B.0020.0012] # HALFWIDTH KATAKANA LETTER SI
+32DB ; [.441B.0020.0013] # CIRCLED KATAKANA SI
+3058 ; [.441B.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZI
+30B8 ; [.441B.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZI
+3006 ; [.441B.0020.0004][.4431.0020.0004] # IDEOGRAPHIC CLOSING MARK
+3321 ; [.441B.0020.001C][.4439.0020.001C][.4442.0020.001C][.4417.0020.001C][.0000.0037.001C] # SQUARE SIRINGU
+3059 ; [.441C.0020.000E] # HIRAGANA LETTER SU
+31F2 ; [.441C.0020.000F] # KATAKANA LETTER SMALL SU
+30B9 ; [.441C.0020.0011] # KATAKANA LETTER SU
+FF7D ; [.441C.0020.0012] # HALFWIDTH KATAKANA LETTER SU
+32DC ; [.441C.0020.0013] # CIRCLED KATAKANA SU
+305A ; [.441C.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZU
+30BA ; [.441C.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZU
+305B ; [.441D.0020.000E] # HIRAGANA LETTER SE
+30BB ; [.441D.0020.0011] # KATAKANA LETTER SE
+FF7E ; [.441D.0020.0012] # HALFWIDTH KATAKANA LETTER SE
+32DD ; [.441D.0020.0013] # CIRCLED KATAKANA SE
+305C ; [.441D.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZE
+30BC ; [.441D.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZE
+3322 ; [.441D.0020.001C][.4442.0020.001C][.4420.0020.001C] # SQUARE SENTI
+3323 ; [.441D.0020.001C][.4442.0020.001C][.4423.0020.001C] # SQUARE SENTO
+305D ; [.441E.0020.000E] # HIRAGANA LETTER SO
+30BD ; [.441E.0020.0011] # KATAKANA LETTER SO
+FF7F ; [.441E.0020.0012] # HALFWIDTH KATAKANA LETTER SO
+32DE ; [.441E.0020.0013] # CIRCLED KATAKANA SO
+305E ; [.441E.0020.000E][.0000.0037.0002] # HIRAGANA LETTER ZO
+30BE ; [.441E.0020.0011][.0000.0037.0002] # KATAKANA LETTER ZO
+305F ; [.441F.0020.000E] # HIRAGANA LETTER TA
+30BF ; [.441F.0020.0011] # KATAKANA LETTER TA
+FF80 ; [.441F.0020.0012] # HALFWIDTH KATAKANA LETTER TA
+32DF ; [.441F.0020.0013] # CIRCLED KATAKANA TA
+3060 ; [.441F.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DA
+30C0 ; [.441F.0020.0011][.0000.0037.0002] # KATAKANA LETTER DA
+3324 ; [.441F.0020.001C][.0000.0037.001C][.2032.0020.001C][.441C.0020.001C] # SQUARE DAASU
+3061 ; [.4420.0020.000E] # HIRAGANA LETTER TI
+30C1 ; [.4420.0020.0011] # KATAKANA LETTER TI
+FF81 ; [.4420.0020.0012] # HALFWIDTH KATAKANA LETTER TI
+32E0 ; [.4420.0020.0013] # CIRCLED KATAKANA TI
+3062 ; [.4420.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DI
+30C2 ; [.4420.0020.0011][.0000.0037.0002] # KATAKANA LETTER DI
+3063 ; [.4421.0020.000D] # HIRAGANA LETTER SMALL TU
+3064 ; [.4421.0020.000E] # HIRAGANA LETTER TU
+30C3 ; [.4421.0020.000F] # KATAKANA LETTER SMALL TU
+FF6F ; [.4421.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL TU
+30C4 ; [.4421.0020.0011] # KATAKANA LETTER TU
+FF82 ; [.4421.0020.0012] # HALFWIDTH KATAKANA LETTER TU
+32E1 ; [.4421.0020.0013] # CIRCLED KATAKANA TU
+3065 ; [.4421.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DU
+30C5 ; [.4421.0020.0011][.0000.0037.0002] # KATAKANA LETTER DU
+3066 ; [.4422.0020.000E] # HIRAGANA LETTER TE
+30C6 ; [.4422.0020.0011] # KATAKANA LETTER TE
+FF83 ; [.4422.0020.0012] # HALFWIDTH KATAKANA LETTER TE
+32E2 ; [.4422.0020.0013] # CIRCLED KATAKANA TE
+3067 ; [.4422.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DE
+30C7 ; [.4422.0020.0011][.0000.0037.0002] # KATAKANA LETTER DE
+1F213 ; [.4422.0020.001C][.0000.0037.001C] # SQUARED KATAKANA DE
+3325 ; [.4422.0020.001C][.0000.0037.001C][.441B.0020.001C] # SQUARE DESI
+3068 ; [.4423.0020.000E] # HIRAGANA LETTER TO
+31F3 ; [.4423.0020.000F] # KATAKANA LETTER SMALL TO
+30C8 ; [.4423.0020.0011] # KATAKANA LETTER TO
+FF84 ; [.4423.0020.0012] # HALFWIDTH KATAKANA LETTER TO
+32E3 ; [.4423.0020.0013] # CIRCLED KATAKANA TO
+3069 ; [.4423.0020.000E][.0000.0037.0002] # HIRAGANA LETTER DO
+30C9 ; [.4423.0020.0011][.0000.0037.0002] # KATAKANA LETTER DO
+3326 ; [.4423.0020.001C][.0000.0037.001C][.443A.0020.001C] # SQUARE DORU
+3327 ; [.4423.0020.001C][.4442.0020.001C] # SQUARE TON
+306A ; [.4424.0020.000E] # HIRAGANA LETTER NA
+30CA ; [.4424.0020.0011] # KATAKANA LETTER NA
+FF85 ; [.4424.0020.0012] # HALFWIDTH KATAKANA LETTER NA
+32E4 ; [.4424.0020.0013] # CIRCLED KATAKANA NA
+3328 ; [.4424.0020.001C][.4428.0020.001C] # SQUARE NANO
+306B ; [.4425.0020.000E] # HIRAGANA LETTER NI
+30CB ; [.4425.0020.0011] # KATAKANA LETTER NI
+FF86 ; [.4425.0020.0012] # HALFWIDTH KATAKANA LETTER NI
+32E5 ; [.4425.0020.0013] # CIRCLED KATAKANA NI
+306C ; [.4426.0020.000E] # HIRAGANA LETTER NU
+31F4 ; [.4426.0020.000F] # KATAKANA LETTER SMALL NU
+30CC ; [.4426.0020.0011] # KATAKANA LETTER NU
+FF87 ; [.4426.0020.0012] # HALFWIDTH KATAKANA LETTER NU
+32E6 ; [.4426.0020.0013] # CIRCLED KATAKANA NU
+306D ; [.4427.0020.000E] # HIRAGANA LETTER NE
+30CD ; [.4427.0020.0011] # KATAKANA LETTER NE
+FF88 ; [.4427.0020.0012] # HALFWIDTH KATAKANA LETTER NE
+32E7 ; [.4427.0020.0013] # CIRCLED KATAKANA NE
+306E ; [.4428.0020.000E] # HIRAGANA LETTER NO
+30CE ; [.4428.0020.0011] # KATAKANA LETTER NO
+FF89 ; [.4428.0020.0012] # HALFWIDTH KATAKANA LETTER NO
+32E8 ; [.4428.0020.0013] # CIRCLED KATAKANA NO
+3329 ; [.4428.0020.001C][.4421.0020.001C][.4423.0020.001C] # SQUARE NOTTO
+306F ; [.4429.0020.000E] # HIRAGANA LETTER HA
+31F5 ; [.4429.0020.000F] # KATAKANA LETTER SMALL HA
+30CF ; [.4429.0020.0011] # KATAKANA LETTER HA
+FF8A ; [.4429.0020.0012] # HALFWIDTH KATAKANA LETTER HA
+32E9 ; [.4429.0020.0013] # CIRCLED KATAKANA HA
+3070 ; [.4429.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BA
+30D0 ; [.4429.0020.0011][.0000.0037.0002] # KATAKANA LETTER BA
+3071 ; [.4429.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PA
+30D1 ; [.4429.0020.0011][.0000.0038.0002] # KATAKANA LETTER PA
+332B ; [.4429.0020.001C][.0000.0038.001C][.2032.0020.001C][.441D.0020.001C][.4442.0020.001C][.4423.0020.001C] # SQUARE PAASENTO
+332C ; [.4429.0020.001C][.0000.0038.001C][.2032.0020.001C][.4421.0020.001C] # SQUARE PAATU
+332D ; [.4429.0020.001C][.0000.0037.001C][.2032.0020.001C][.443B.0020.001C][.443A.0020.001C] # SQUARE BAARERU
+332A ; [.4429.0020.001C][.4410.0020.001C][.4421.0020.001C] # SQUARE HAITU
+3072 ; [.442A.0020.000E] # HIRAGANA LETTER HI
+31F6 ; [.442A.0020.000F] # KATAKANA LETTER SMALL HI
+30D2 ; [.442A.0020.0011] # KATAKANA LETTER HI
+FF8B ; [.442A.0020.0012] # HALFWIDTH KATAKANA LETTER HI
+32EA ; [.442A.0020.0013] # CIRCLED KATAKANA HI
+3073 ; [.442A.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BI
+30D3 ; [.442A.0020.0011][.0000.0037.0002] # KATAKANA LETTER BI
+3074 ; [.442A.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PI
+30D4 ; [.442A.0020.0011][.0000.0038.0002] # KATAKANA LETTER PI
+332E ; [.442A.0020.001C][.0000.0038.001C][.440F.0020.001C][.441C.0020.001C][.4423.0020.001C][.443A.0020.001C] # SQUARE PIASUTORU
+332F ; [.442A.0020.001C][.0000.0038.001C][.4417.0020.001C][.443A.0020.001C] # SQUARE PIKURU
+3330 ; [.442A.0020.001C][.0000.0038.001C][.4419.0020.001C] # SQUARE PIKO
+3331 ; [.442A.0020.001C][.0000.0037.001C][.443A.0020.001C] # SQUARE BIRU
+3075 ; [.442B.0020.000E] # HIRAGANA LETTER HU
+31F7 ; [.442B.0020.000F] # KATAKANA LETTER SMALL HU
+30D5 ; [.442B.0020.0011] # KATAKANA LETTER HU
+FF8C ; [.442B.0020.0012] # HALFWIDTH KATAKANA LETTER HU
+32EB ; [.442B.0020.0013] # CIRCLED KATAKANA HU
+3076 ; [.442B.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BU
+30D6 ; [.442B.0020.0011][.0000.0037.0002] # KATAKANA LETTER BU
+3077 ; [.442B.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PU
+30D7 ; [.442B.0020.0011][.0000.0038.0002] # KATAKANA LETTER PU
+3332 ; [.442B.0020.001C][.440F.0020.001C][.4438.0020.001C][.4421.0020.001C][.4423.0020.001C][.0000.0037.001C] # SQUARE HUARADDO
+3333 ; [.442B.0020.001C][.4410.0020.001C][.2032.0020.001C][.4423.0020.001C] # SQUARE HUIITO
+3334 ; [.442B.0020.001C][.0000.0037.001C][.4421.0020.001C][.441B.0020.001C][.4413.0020.001C][.443A.0020.001C] # SQUARE BUSSYERU
+3335 ; [.442B.0020.001C][.4438.0020.001C][.4442.0020.001C] # SQUARE HURAN
+3078 ; [.442C.0020.000E] # HIRAGANA LETTER HE
+31F8 ; [.442C.0020.000F] # KATAKANA LETTER SMALL HE
+30D8 ; [.442C.0020.0011] # KATAKANA LETTER HE
+FF8D ; [.442C.0020.0012] # HALFWIDTH KATAKANA LETTER HE
+32EC ; [.442C.0020.0013] # CIRCLED KATAKANA HE
+3079 ; [.442C.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BE
+30D9 ; [.442C.0020.0011][.0000.0037.0002] # KATAKANA LETTER BE
+307A ; [.442C.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PE
+30DA ; [.442C.0020.0011][.0000.0038.0002] # KATAKANA LETTER PE
+333B ; [.442C.0020.001C][.0000.0038.001C][.2032.0020.001C][.441B.0020.001C][.0000.0037.001C] # SQUARE PEEZI
+333C ; [.442C.0020.001C][.0000.0037.001C][.2032.0020.001C][.441F.0020.001C] # SQUARE BEETA
+3336 ; [.442C.0020.001C][.4417.0020.001C][.441F.0020.001C][.2032.0020.001C][.443A.0020.001C] # SQUARE HEKUTAARU
+3337 ; [.442C.0020.001C][.0000.0038.001C][.441E.0020.001C] # SQUARE PESO
+3338 ; [.442C.0020.001C][.0000.0038.001C][.4425.0020.001C][.442A.0020.001C] # SQUARE PENIHI
+3339 ; [.442C.0020.001C][.443A.0020.001C][.4421.0020.001C] # SQUARE HERUTU
+333A ; [.442C.0020.001C][.0000.0038.001C][.4442.0020.001C][.441C.0020.001C] # SQUARE PENSU
+307B ; [.442D.0020.000E] # HIRAGANA LETTER HO
+31F9 ; [.442D.0020.000F] # KATAKANA LETTER SMALL HO
+30DB ; [.442D.0020.0011] # KATAKANA LETTER HO
+FF8E ; [.442D.0020.0012] # HALFWIDTH KATAKANA LETTER HO
+32ED ; [.442D.0020.0013] # CIRCLED KATAKANA HO
+307C ; [.442D.0020.000E][.0000.0037.0002] # HIRAGANA LETTER BO
+30DC ; [.442D.0020.0011][.0000.0037.0002] # KATAKANA LETTER BO
+307D ; [.442D.0020.000E][.0000.0038.0002] # HIRAGANA LETTER PO
+30DD ; [.442D.0020.0011][.0000.0038.0002] # KATAKANA LETTER PO
+3341 ; [.442D.0020.001C][.2032.0020.001C][.443A.0020.001C] # SQUARE HOORU
+3342 ; [.442D.0020.001C][.2032.0020.001C][.4442.0020.001C] # SQUARE HOON
+333D ; [.442D.0020.001C][.0000.0038.001C][.4410.0020.001C][.4442.0020.001C][.4423.0020.001C] # SQUARE POINTO
+1F200 ; [.442D.0020.001C][.4415.0020.001C] # SQUARE HIRAGANA HOKA
+333E ; [.442D.0020.001C][.0000.0037.001C][.443A.0020.001C][.4423.0020.001C] # SQUARE BORUTO
+333F ; [.442D.0020.001C][.4442.0020.001C] # SQUARE HON
+3340 ; [.442D.0020.001C][.0000.0038.001C][.4442.0020.001C][.4423.0020.001C][.0000.0037.001C] # SQUARE PONDO
+307E ; [.442E.0020.000E] # HIRAGANA LETTER MA
+30DE ; [.442E.0020.0011] # KATAKANA LETTER MA
+FF8F ; [.442E.0020.0012] # HALFWIDTH KATAKANA LETTER MA
+32EE ; [.442E.0020.0013] # CIRCLED KATAKANA MA
+3343 ; [.442E.0020.001C][.4410.0020.001C][.4417.0020.001C][.443C.0020.001C] # SQUARE MAIKURO
+3344 ; [.442E.0020.001C][.4410.0020.001C][.443A.0020.001C] # SQUARE MAIRU
+303C ; [.442E.0020.0004][.441C.0020.0004] # MASU MARK
+3345 ; [.442E.0020.001C][.4421.0020.001C][.4429.0020.001C] # SQUARE MAHHA
+3346 ; [.442E.0020.001C][.443A.0020.001C][.4417.0020.001C] # SQUARE MARUKU
+3347 ; [.442E.0020.001C][.4442.0020.001C][.441B.0020.001C][.4437.0020.001C][.4442.0020.001C] # SQUARE MANSYON
+307F ; [.442F.0020.000E] # HIRAGANA LETTER MI
+30DF ; [.442F.0020.0011] # KATAKANA LETTER MI
+FF90 ; [.442F.0020.0012] # HALFWIDTH KATAKANA LETTER MI
+32EF ; [.442F.0020.0013] # CIRCLED KATAKANA MI
+3348 ; [.442F.0020.001C][.4417.0020.001C][.443C.0020.001C][.4442.0020.001C] # SQUARE MIKURON
+3349 ; [.442F.0020.001C][.4439.0020.001C] # SQUARE MIRI
+334A ; [.442F.0020.001C][.4439.0020.001C][.4429.0020.001C][.0000.0037.001C][.2032.0020.001C][.443A.0020.001C] # SQUARE MIRIBAARU
+3080 ; [.4430.0020.000E] # HIRAGANA LETTER MU
+31FA ; [.4430.0020.000F] # KATAKANA LETTER SMALL MU
+30E0 ; [.4430.0020.0011] # KATAKANA LETTER MU
+FF91 ; [.4430.0020.0012] # HALFWIDTH KATAKANA LETTER MU
+32F0 ; [.4430.0020.0013] # CIRCLED KATAKANA MU
+3081 ; [.4431.0020.000E] # HIRAGANA LETTER ME
+30E1 ; [.4431.0020.0011] # KATAKANA LETTER ME
+FF92 ; [.4431.0020.0012] # HALFWIDTH KATAKANA LETTER ME
+32F1 ; [.4431.0020.0013] # CIRCLED KATAKANA ME
+334D ; [.4431.0020.001C][.2032.0020.001C][.4423.0020.001C][.443A.0020.001C] # SQUARE MEETORU
+334B ; [.4431.0020.001C][.4415.0020.001C][.0000.0037.001C] # SQUARE MEGA
+334C ; [.4431.0020.001C][.4415.0020.001C][.0000.0037.001C][.4423.0020.001C][.4442.0020.001C] # SQUARE MEGATON
+3082 ; [.4432.0020.000E] # HIRAGANA LETTER MO
+30E2 ; [.4432.0020.0011] # KATAKANA LETTER MO
+FF93 ; [.4432.0020.0012] # HALFWIDTH KATAKANA LETTER MO
+32F2 ; [.4432.0020.0013] # CIRCLED KATAKANA MO
+3083 ; [.4433.0020.000D] # HIRAGANA LETTER SMALL YA
+3084 ; [.4433.0020.000E] # HIRAGANA LETTER YA
+30E3 ; [.4433.0020.000F] # KATAKANA LETTER SMALL YA
+FF6C ; [.4433.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL YA
+30E4 ; [.4433.0020.0011] # KATAKANA LETTER YA
+FF94 ; [.4433.0020.0012] # HALFWIDTH KATAKANA LETTER YA
+32F3 ; [.4433.0020.0013] # CIRCLED KATAKANA YA
+334E ; [.4433.0020.001C][.2032.0020.001C][.4423.0020.001C][.0000.0037.001C] # SQUARE YAADO
+334F ; [.4433.0020.001C][.2032.0020.001C][.443A.0020.001C] # SQUARE YAARU
+1B120 ; [.4434.0020.0011] # KATAKANA LETTER ARCHAIC YI
+3085 ; [.4435.0020.000D] # HIRAGANA LETTER SMALL YU
+3086 ; [.4435.0020.000E] # HIRAGANA LETTER YU
+30E5 ; [.4435.0020.000F] # KATAKANA LETTER SMALL YU
+FF6D ; [.4435.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL YU
+30E6 ; [.4435.0020.0011] # KATAKANA LETTER YU
+FF95 ; [.4435.0020.0012] # HALFWIDTH KATAKANA LETTER YU
+32F4 ; [.4435.0020.0013] # CIRCLED KATAKANA YU
+3350 ; [.4435.0020.001C][.440F.0020.001C][.4442.0020.001C] # SQUARE YUAN
+1B121 ; [.4436.0020.0011] # KATAKANA LETTER ARCHAIC YE
+3087 ; [.4437.0020.000D] # HIRAGANA LETTER SMALL YO
+3088 ; [.4437.0020.000E] # HIRAGANA LETTER YO
+30E7 ; [.4437.0020.000F] # KATAKANA LETTER SMALL YO
+FF6E ; [.4437.0020.0010] # HALFWIDTH KATAKANA LETTER SMALL YO
+30E8 ; [.4437.0020.0011] # KATAKANA LETTER YO
+FF96 ; [.4437.0020.0012] # HALFWIDTH KATAKANA LETTER YO
+32F5 ; [.4437.0020.0013] # CIRCLED KATAKANA YO
+309F ; [.4437.0020.0016][.4439.0020.0016] # HIRAGANA DIGRAPH YORI
+3089 ; [.4438.0020.000E] # HIRAGANA LETTER RA
+31FB ; [.4438.0020.000F] # KATAKANA LETTER SMALL RA
+30E9 ; [.4438.0020.0011] # KATAKANA LETTER RA
+FF97 ; [.4438.0020.0012] # HALFWIDTH KATAKANA LETTER RA
+32F6 ; [.4438.0020.0013] # CIRCLED KATAKANA RA
+308A ; [.4439.0020.000E] # HIRAGANA LETTER RI
+31FC ; [.4439.0020.000F] # KATAKANA LETTER SMALL RI
+30EA ; [.4439.0020.0011] # KATAKANA LETTER RI
+FF98 ; [.4439.0020.0012] # HALFWIDTH KATAKANA LETTER RI
+32F7 ; [.4439.0020.0013] # CIRCLED KATAKANA RI
+3351 ; [.4439.0020.001C][.4421.0020.001C][.4423.0020.001C][.443A.0020.001C] # SQUARE RITTORU
+3352 ; [.4439.0020.001C][.4438.0020.001C] # SQUARE RIRA
+308B ; [.443A.0020.000E] # HIRAGANA LETTER RU
+31FD ; [.443A.0020.000F] # KATAKANA LETTER SMALL RU
+30EB ; [.443A.0020.0011] # KATAKANA LETTER RU
+FF99 ; [.443A.0020.0012] # HALFWIDTH KATAKANA LETTER RU
+32F8 ; [.443A.0020.0013] # CIRCLED KATAKANA RU
+3354 ; [.443A.0020.001C][.2032.0020.001C][.442B.0020.001C][.0000.0037.001C][.443A.0020.001C] # SQUARE RUUBURU
+3353 ; [.443A.0020.001C][.442A.0020.001C][.0000.0038.001C][.2032.0020.001C] # SQUARE RUPII
+308C ; [.443B.0020.000E] # HIRAGANA LETTER RE
+31FE ; [.443B.0020.000F] # KATAKANA LETTER SMALL RE
+30EC ; [.443B.0020.0011] # KATAKANA LETTER RE
+FF9A ; [.443B.0020.0012] # HALFWIDTH KATAKANA LETTER RE
+32F9 ; [.443B.0020.0013] # CIRCLED KATAKANA RE
+3355 ; [.443B.0020.001C][.4430.0020.001C] # SQUARE REMU
+3356 ; [.443B.0020.001C][.4442.0020.001C][.4423.0020.001C][.4418.0020.001C][.0000.0037.001C][.4442.0020.001C] # SQUARE RENTOGEN
+308D ; [.443C.0020.000E] # HIRAGANA LETTER RO
+31FF ; [.443C.0020.000F] # KATAKANA LETTER SMALL RO
+30ED ; [.443C.0020.0011] # KATAKANA LETTER RO
+FF9B ; [.443C.0020.0012] # HALFWIDTH KATAKANA LETTER RO
+32FA ; [.443C.0020.0013] # CIRCLED KATAKANA RO
+308E ; [.443D.0020.000D] # HIRAGANA LETTER SMALL WA
+308F ; [.443D.0020.000E] # HIRAGANA LETTER WA
+30EE ; [.443D.0020.000F] # KATAKANA LETTER SMALL WA
+30EF ; [.443D.0020.0011] # KATAKANA LETTER WA
+FF9C ; [.443D.0020.0012] # HALFWIDTH KATAKANA LETTER WA
+32FB ; [.443D.0020.0013] # CIRCLED KATAKANA WA
+30F7 ; [.443D.0020.0011][.0000.0037.0002] # KATAKANA LETTER VA
+3357 ; [.443D.0020.001C][.4421.0020.001C][.4423.0020.001C] # SQUARE WATTO
+1B150 ; [.443E.0020.000D] # HIRAGANA LETTER SMALL WI
+3090 ; [.443E.0020.000E] # HIRAGANA LETTER WI
+1B164 ; [.443E.0020.000F] # KATAKANA LETTER SMALL WI
+30F0 ; [.443E.0020.0011] # KATAKANA LETTER WI
+32FC ; [.443E.0020.0013] # CIRCLED KATAKANA WI
+30F8 ; [.443E.0020.0011][.0000.0037.0002] # KATAKANA LETTER VI
+1B11F ; [.443F.0020.000E] # HIRAGANA LETTER ARCHAIC WU
+1B122 ; [.443F.0020.0011] # KATAKANA LETTER ARCHAIC WU
+1B151 ; [.4440.0020.000D] # HIRAGANA LETTER SMALL WE
+3091 ; [.4440.0020.000E] # HIRAGANA LETTER WE
+1B165 ; [.4440.0020.000F] # KATAKANA LETTER SMALL WE
+30F1 ; [.4440.0020.0011] # KATAKANA LETTER WE
+32FD ; [.4440.0020.0013] # CIRCLED KATAKANA WE
+30F9 ; [.4440.0020.0011][.0000.0037.0002] # KATAKANA LETTER VE
+1B152 ; [.4441.0020.000D] # HIRAGANA LETTER SMALL WO
+3092 ; [.4441.0020.000E] # HIRAGANA LETTER WO
+1B166 ; [.4441.0020.000F] # KATAKANA LETTER SMALL WO
+30F2 ; [.4441.0020.0011] # KATAKANA LETTER WO
+FF66 ; [.4441.0020.0012] # HALFWIDTH KATAKANA LETTER WO
+32FE ; [.4441.0020.0013] # CIRCLED KATAKANA WO
+30FA ; [.4441.0020.0011][.0000.0037.0002] # KATAKANA LETTER VO
+3093 ; [.4442.0020.000E] # HIRAGANA LETTER N
+1B167 ; [.4442.0020.000F] # KATAKANA LETTER SMALL N
+30F3 ; [.4442.0020.0011] # KATAKANA LETTER N
+FF9D ; [.4442.0020.0012] # HALFWIDTH KATAKANA LETTER N
+1B002 ; [.4443.0020.0002] # HENTAIGANA LETTER A-1
+1B003 ; [.4444.0020.0002] # HENTAIGANA LETTER A-2
+1B004 ; [.4445.0020.0002] # HENTAIGANA LETTER A-3
+1B005 ; [.4446.0020.0002] # HENTAIGANA LETTER A-WO
+1B006 ; [.4447.0020.0002] # HENTAIGANA LETTER I-1
+1B007 ; [.4448.0020.0002] # HENTAIGANA LETTER I-2
+1B008 ; [.4449.0020.0002] # HENTAIGANA LETTER I-3
+1B009 ; [.444A.0020.0002] # HENTAIGANA LETTER I-4
+1B00A ; [.444B.0020.0002] # HENTAIGANA LETTER U-1
+1B00B ; [.444C.0020.0002] # HENTAIGANA LETTER U-2
+1B00C ; [.444D.0020.0002] # HENTAIGANA LETTER U-3
+1B00D ; [.444E.0020.0002] # HENTAIGANA LETTER U-4
+1B00E ; [.444F.0020.0002] # HENTAIGANA LETTER U-5
+1B001 ; [.4450.0020.0002] # HIRAGANA LETTER ARCHAIC YE
+1B00F ; [.4451.0020.0002] # HENTAIGANA LETTER E-2
+1B010 ; [.4452.0020.0002] # HENTAIGANA LETTER E-3
+1B011 ; [.4453.0020.0002] # HENTAIGANA LETTER E-4
+1B012 ; [.4454.0020.0002] # HENTAIGANA LETTER E-5
+1B013 ; [.4455.0020.0002] # HENTAIGANA LETTER E-6
+1B014 ; [.4456.0020.0002] # HENTAIGANA LETTER O-1
+1B015 ; [.4457.0020.0002] # HENTAIGANA LETTER O-2
+1B016 ; [.4458.0020.0002] # HENTAIGANA LETTER O-3
+1B017 ; [.4459.0020.0002] # HENTAIGANA LETTER KA-1
+1B018 ; [.445A.0020.0002] # HENTAIGANA LETTER KA-2
+1B019 ; [.445B.0020.0002] # HENTAIGANA LETTER KA-3
+1B01A ; [.445C.0020.0002] # HENTAIGANA LETTER KA-4
+1B01B ; [.445D.0020.0002] # HENTAIGANA LETTER KA-5
+1B01C ; [.445E.0020.0002] # HENTAIGANA LETTER KA-6
+1B01D ; [.445F.0020.0002] # HENTAIGANA LETTER KA-7
+1B01E ; [.4460.0020.0002] # HENTAIGANA LETTER KA-8
+1B01F ; [.4461.0020.0002] # HENTAIGANA LETTER KA-9
+1B020 ; [.4462.0020.0002] # HENTAIGANA LETTER KA-10
+1B021 ; [.4463.0020.0002] # HENTAIGANA LETTER KA-11
+1B022 ; [.4464.0020.0002] # HENTAIGANA LETTER KA-KE
+1B023 ; [.4465.0020.0002] # HENTAIGANA LETTER KI-1
+1B024 ; [.4466.0020.0002] # HENTAIGANA LETTER KI-2
+1B025 ; [.4467.0020.0002] # HENTAIGANA LETTER KI-3
+1B026 ; [.4468.0020.0002] # HENTAIGANA LETTER KI-4
+1B027 ; [.4469.0020.0002] # HENTAIGANA LETTER KI-5
+1B028 ; [.446A.0020.0002] # HENTAIGANA LETTER KI-6
+1B029 ; [.446B.0020.0002] # HENTAIGANA LETTER KI-7
+1B02A ; [.446C.0020.0002] # HENTAIGANA LETTER KI-8
+1B02B ; [.446D.0020.0002] # HENTAIGANA LETTER KU-1
+1B02C ; [.446E.0020.0002] # HENTAIGANA LETTER KU-2
+1B02D ; [.446F.0020.0002] # HENTAIGANA LETTER KU-3
+1B02E ; [.4470.0020.0002] # HENTAIGANA LETTER KU-4
+1B02F ; [.4471.0020.0002] # HENTAIGANA LETTER KU-5
+1B030 ; [.4472.0020.0002] # HENTAIGANA LETTER KU-6
+1B031 ; [.4473.0020.0002] # HENTAIGANA LETTER KU-7
+1B032 ; [.4474.0020.0002] # HENTAIGANA LETTER KE-1
+1B033 ; [.4475.0020.0002] # HENTAIGANA LETTER KE-2
+1B034 ; [.4476.0020.0002] # HENTAIGANA LETTER KE-3
+1B035 ; [.4477.0020.0002] # HENTAIGANA LETTER KE-4
+1B036 ; [.4478.0020.0002] # HENTAIGANA LETTER KE-5
+1B037 ; [.4479.0020.0002] # HENTAIGANA LETTER KE-6
+1B038 ; [.447A.0020.0002] # HENTAIGANA LETTER KO-1
+1B039 ; [.447B.0020.0002] # HENTAIGANA LETTER KO-2
+1B03A ; [.447C.0020.0002] # HENTAIGANA LETTER KO-3
+1B03B ; [.447D.0020.0002] # HENTAIGANA LETTER KO-KI
+1B03C ; [.447E.0020.0002] # HENTAIGANA LETTER SA-1
+1B03D ; [.447F.0020.0002] # HENTAIGANA LETTER SA-2
+1B03E ; [.4480.0020.0002] # HENTAIGANA LETTER SA-3
+1B03F ; [.4481.0020.0002] # HENTAIGANA LETTER SA-4
+1B040 ; [.4482.0020.0002] # HENTAIGANA LETTER SA-5
+1B041 ; [.4483.0020.0002] # HENTAIGANA LETTER SA-6
+1B042 ; [.4484.0020.0002] # HENTAIGANA LETTER SA-7
+1B043 ; [.4485.0020.0002] # HENTAIGANA LETTER SA-8
+1B044 ; [.4486.0020.0002] # HENTAIGANA LETTER SI-1
+1B045 ; [.4487.0020.0002] # HENTAIGANA LETTER SI-2
+1B046 ; [.4488.0020.0002] # HENTAIGANA LETTER SI-3
+1B047 ; [.4489.0020.0002] # HENTAIGANA LETTER SI-4
+1B048 ; [.448A.0020.0002] # HENTAIGANA LETTER SI-5
+1B049 ; [.448B.0020.0002] # HENTAIGANA LETTER SI-6
+1B04A ; [.448C.0020.0002] # HENTAIGANA LETTER SU-1
+1B04B ; [.448D.0020.0002] # HENTAIGANA LETTER SU-2
+1B04C ; [.448E.0020.0002] # HENTAIGANA LETTER SU-3
+1B04D ; [.448F.0020.0002] # HENTAIGANA LETTER SU-4
+1B04E ; [.4490.0020.0002] # HENTAIGANA LETTER SU-5
+1B04F ; [.4491.0020.0002] # HENTAIGANA LETTER SU-6
+1B050 ; [.4492.0020.0002] # HENTAIGANA LETTER SU-7
+1B051 ; [.4493.0020.0002] # HENTAIGANA LETTER SU-8
+1B052 ; [.4494.0020.0002] # HENTAIGANA LETTER SE-1
+1B053 ; [.4495.0020.0002] # HENTAIGANA LETTER SE-2
+1B054 ; [.4496.0020.0002] # HENTAIGANA LETTER SE-3
+1B055 ; [.4497.0020.0002] # HENTAIGANA LETTER SE-4
+1B056 ; [.4498.0020.0002] # HENTAIGANA LETTER SE-5
+1B057 ; [.4499.0020.0002] # HENTAIGANA LETTER SO-1
+1B058 ; [.449A.0020.0002] # HENTAIGANA LETTER SO-2
+1B059 ; [.449B.0020.0002] # HENTAIGANA LETTER SO-3
+1B05A ; [.449C.0020.0002] # HENTAIGANA LETTER SO-4
+1B05B ; [.449D.0020.0002] # HENTAIGANA LETTER SO-5
+1B05C ; [.449E.0020.0002] # HENTAIGANA LETTER SO-6
+1B05D ; [.449F.0020.0002] # HENTAIGANA LETTER SO-7
+1B05E ; [.44A0.0020.0002] # HENTAIGANA LETTER TA-1
+1B05F ; [.44A1.0020.0002] # HENTAIGANA LETTER TA-2
+1B060 ; [.44A2.0020.0002] # HENTAIGANA LETTER TA-3
+1B061 ; [.44A3.0020.0002] # HENTAIGANA LETTER TA-4
+1B062 ; [.44A4.0020.0002] # HENTAIGANA LETTER TI-1
+1B063 ; [.44A5.0020.0002] # HENTAIGANA LETTER TI-2
+1B064 ; [.44A6.0020.0002] # HENTAIGANA LETTER TI-3
+1B065 ; [.44A7.0020.0002] # HENTAIGANA LETTER TI-4
+1B066 ; [.44A8.0020.0002] # HENTAIGANA LETTER TI-5
+1B067 ; [.44A9.0020.0002] # HENTAIGANA LETTER TI-6
+1B068 ; [.44AA.0020.0002] # HENTAIGANA LETTER TI-7
+1B069 ; [.44AB.0020.0002] # HENTAIGANA LETTER TU-1
+1B06A ; [.44AC.0020.0002] # HENTAIGANA LETTER TU-2
+1B06B ; [.44AD.0020.0002] # HENTAIGANA LETTER TU-3
+1B06C ; [.44AE.0020.0002] # HENTAIGANA LETTER TU-4
+1B06D ; [.44AF.0020.0002] # HENTAIGANA LETTER TU-TO
+1B06E ; [.44B0.0020.0002] # HENTAIGANA LETTER TE-1
+1B06F ; [.44B1.0020.0002] # HENTAIGANA LETTER TE-2
+1B070 ; [.44B2.0020.0002] # HENTAIGANA LETTER TE-3
+1B071 ; [.44B3.0020.0002] # HENTAIGANA LETTER TE-4
+1B072 ; [.44B4.0020.0002] # HENTAIGANA LETTER TE-5
+1B073 ; [.44B5.0020.0002] # HENTAIGANA LETTER TE-6
+1B074 ; [.44B6.0020.0002] # HENTAIGANA LETTER TE-7
+1B075 ; [.44B7.0020.0002] # HENTAIGANA LETTER TE-8
+1B076 ; [.44B8.0020.0002] # HENTAIGANA LETTER TE-9
+1B077 ; [.44B9.0020.0002] # HENTAIGANA LETTER TO-1
+1B078 ; [.44BA.0020.0002] # HENTAIGANA LETTER TO-2
+1B079 ; [.44BB.0020.0002] # HENTAIGANA LETTER TO-3
+1B07A ; [.44BC.0020.0002] # HENTAIGANA LETTER TO-4
+1B07B ; [.44BD.0020.0002] # HENTAIGANA LETTER TO-5
+1B07C ; [.44BE.0020.0002] # HENTAIGANA LETTER TO-6
+1B07D ; [.44BF.0020.0002] # HENTAIGANA LETTER TO-RA
+1B07E ; [.44C0.0020.0002] # HENTAIGANA LETTER NA-1
+1B07F ; [.44C1.0020.0002] # HENTAIGANA LETTER NA-2
+1B080 ; [.44C2.0020.0002] # HENTAIGANA LETTER NA-3
+1B081 ; [.44C3.0020.0002] # HENTAIGANA LETTER NA-4
+1B082 ; [.44C4.0020.0002] # HENTAIGANA LETTER NA-5
+1B083 ; [.44C5.0020.0002] # HENTAIGANA LETTER NA-6
+1B084 ; [.44C6.0020.0002] # HENTAIGANA LETTER NA-7
+1B085 ; [.44C7.0020.0002] # HENTAIGANA LETTER NA-8
+1B086 ; [.44C8.0020.0002] # HENTAIGANA LETTER NA-9
+1B087 ; [.44C9.0020.0002] # HENTAIGANA LETTER NI-1
+1B088 ; [.44CA.0020.0002] # HENTAIGANA LETTER NI-2
+1B089 ; [.44CB.0020.0002] # HENTAIGANA LETTER NI-3
+1B08A ; [.44CC.0020.0002] # HENTAIGANA LETTER NI-4
+1B08B ; [.44CD.0020.0002] # HENTAIGANA LETTER NI-5
+1B08C ; [.44CE.0020.0002] # HENTAIGANA LETTER NI-6
+1B08D ; [.44CF.0020.0002] # HENTAIGANA LETTER NI-7
+1B08E ; [.44D0.0020.0002] # HENTAIGANA LETTER NI-TE
+1B08F ; [.44D1.0020.0002] # HENTAIGANA LETTER NU-1
+1B090 ; [.44D2.0020.0002] # HENTAIGANA LETTER NU-2
+1B091 ; [.44D3.0020.0002] # HENTAIGANA LETTER NU-3
+1B092 ; [.44D4.0020.0002] # HENTAIGANA LETTER NE-1
+1B093 ; [.44D5.0020.0002] # HENTAIGANA LETTER NE-2
+1B094 ; [.44D6.0020.0002] # HENTAIGANA LETTER NE-3
+1B095 ; [.44D7.0020.0002] # HENTAIGANA LETTER NE-4
+1B096 ; [.44D8.0020.0002] # HENTAIGANA LETTER NE-5
+1B097 ; [.44D9.0020.0002] # HENTAIGANA LETTER NE-6
+1B098 ; [.44DA.0020.0002] # HENTAIGANA LETTER NE-KO
+1B099 ; [.44DB.0020.0002] # HENTAIGANA LETTER NO-1
+1B09A ; [.44DC.0020.0002] # HENTAIGANA LETTER NO-2
+1B09B ; [.44DD.0020.0002] # HENTAIGANA LETTER NO-3
+1B09C ; [.44DE.0020.0002] # HENTAIGANA LETTER NO-4
+1B09D ; [.44DF.0020.0002] # HENTAIGANA LETTER NO-5
+1B09E ; [.44E0.0020.0002] # HENTAIGANA LETTER HA-1
+1B09F ; [.44E1.0020.0002] # HENTAIGANA LETTER HA-2
+1B0A0 ; [.44E2.0020.0002] # HENTAIGANA LETTER HA-3
+1B0A1 ; [.44E3.0020.0002] # HENTAIGANA LETTER HA-4
+1B0A2 ; [.44E4.0020.0002] # HENTAIGANA LETTER HA-5
+1B0A3 ; [.44E5.0020.0002] # HENTAIGANA LETTER HA-6
+1B0A4 ; [.44E6.0020.0002] # HENTAIGANA LETTER HA-7
+1B0A5 ; [.44E7.0020.0002] # HENTAIGANA LETTER HA-8
+1B0A6 ; [.44E8.0020.0002] # HENTAIGANA LETTER HA-9
+1B0A7 ; [.44E9.0020.0002] # HENTAIGANA LETTER HA-10
+1B0A8 ; [.44EA.0020.0002] # HENTAIGANA LETTER HA-11
+1B0A9 ; [.44EB.0020.0002] # HENTAIGANA LETTER HI-1
+1B0AA ; [.44EC.0020.0002] # HENTAIGANA LETTER HI-2
+1B0AB ; [.44ED.0020.0002] # HENTAIGANA LETTER HI-3
+1B0AC ; [.44EE.0020.0002] # HENTAIGANA LETTER HI-4
+1B0AD ; [.44EF.0020.0002] # HENTAIGANA LETTER HI-5
+1B0AE ; [.44F0.0020.0002] # HENTAIGANA LETTER HI-6
+1B0AF ; [.44F1.0020.0002] # HENTAIGANA LETTER HI-7
+1B0B0 ; [.44F2.0020.0002] # HENTAIGANA LETTER HU-1
+1B0B1 ; [.44F3.0020.0002] # HENTAIGANA LETTER HU-2
+1B0B2 ; [.44F4.0020.0002] # HENTAIGANA LETTER HU-3
+1B0B3 ; [.44F5.0020.0002] # HENTAIGANA LETTER HE-1
+1B0B4 ; [.44F6.0020.0002] # HENTAIGANA LETTER HE-2
+1B0B5 ; [.44F7.0020.0002] # HENTAIGANA LETTER HE-3
+1B0B6 ; [.44F8.0020.0002] # HENTAIGANA LETTER HE-4
+1B0B7 ; [.44F9.0020.0002] # HENTAIGANA LETTER HE-5
+1B0B8 ; [.44FA.0020.0002] # HENTAIGANA LETTER HE-6
+1B0B9 ; [.44FB.0020.0002] # HENTAIGANA LETTER HE-7
+1B0BA ; [.44FC.0020.0002] # HENTAIGANA LETTER HO-1
+1B0BB ; [.44FD.0020.0002] # HENTAIGANA LETTER HO-2
+1B0BC ; [.44FE.0020.0002] # HENTAIGANA LETTER HO-3
+1B0BD ; [.44FF.0020.0002] # HENTAIGANA LETTER HO-4
+1B0BE ; [.4500.0020.0002] # HENTAIGANA LETTER HO-5
+1B0BF ; [.4501.0020.0002] # HENTAIGANA LETTER HO-6
+1B0C0 ; [.4502.0020.0002] # HENTAIGANA LETTER HO-7
+1B0C1 ; [.4503.0020.0002] # HENTAIGANA LETTER HO-8
+1B0C2 ; [.4504.0020.0002] # HENTAIGANA LETTER MA-1
+1B0C3 ; [.4505.0020.0002] # HENTAIGANA LETTER MA-2
+1B0C4 ; [.4506.0020.0002] # HENTAIGANA LETTER MA-3
+1B0C5 ; [.4507.0020.0002] # HENTAIGANA LETTER MA-4
+1B0C6 ; [.4508.0020.0002] # HENTAIGANA LETTER MA-5
+1B0C7 ; [.4509.0020.0002] # HENTAIGANA LETTER MA-6
+1B0C8 ; [.450A.0020.0002] # HENTAIGANA LETTER MA-7
+1B0C9 ; [.450B.0020.0002] # HENTAIGANA LETTER MI-1
+1B0CA ; [.450C.0020.0002] # HENTAIGANA LETTER MI-2
+1B0CB ; [.450D.0020.0002] # HENTAIGANA LETTER MI-3
+1B0CC ; [.450E.0020.0002] # HENTAIGANA LETTER MI-4
+1B0CD ; [.450F.0020.0002] # HENTAIGANA LETTER MI-5
+1B0CE ; [.4510.0020.0002] # HENTAIGANA LETTER MI-6
+1B0CF ; [.4511.0020.0002] # HENTAIGANA LETTER MI-7
+1B0D0 ; [.4512.0020.0002] # HENTAIGANA LETTER MU-1
+1B0D1 ; [.4513.0020.0002] # HENTAIGANA LETTER MU-2
+1B0D2 ; [.4514.0020.0002] # HENTAIGANA LETTER MU-3
+1B0D3 ; [.4515.0020.0002] # HENTAIGANA LETTER MU-4
+1B0D4 ; [.4516.0020.0002] # HENTAIGANA LETTER ME-1
+1B0D5 ; [.4517.0020.0002] # HENTAIGANA LETTER ME-2
+1B0D6 ; [.4518.0020.0002] # HENTAIGANA LETTER ME-MA
+1B0D7 ; [.4519.0020.0002] # HENTAIGANA LETTER MO-1
+1B0D8 ; [.451A.0020.0002] # HENTAIGANA LETTER MO-2
+1B0D9 ; [.451B.0020.0002] # HENTAIGANA LETTER MO-3
+1B0DA ; [.451C.0020.0002] # HENTAIGANA LETTER MO-4
+1B0DB ; [.451D.0020.0002] # HENTAIGANA LETTER MO-5
+1B0DC ; [.451E.0020.0002] # HENTAIGANA LETTER MO-6
+1B0DD ; [.451F.0020.0002] # HENTAIGANA LETTER YA-1
+1B0DE ; [.4520.0020.0002] # HENTAIGANA LETTER YA-2
+1B0DF ; [.4521.0020.0002] # HENTAIGANA LETTER YA-3
+1B0E0 ; [.4522.0020.0002] # HENTAIGANA LETTER YA-4
+1B0E1 ; [.4523.0020.0002] # HENTAIGANA LETTER YA-5
+1B0E2 ; [.4524.0020.0002] # HENTAIGANA LETTER YA-YO
+1B0E3 ; [.4525.0020.0002] # HENTAIGANA LETTER YU-1
+1B0E4 ; [.4526.0020.0002] # HENTAIGANA LETTER YU-2
+1B0E5 ; [.4527.0020.0002] # HENTAIGANA LETTER YU-3
+1B0E6 ; [.4528.0020.0002] # HENTAIGANA LETTER YU-4
+1B0E7 ; [.4529.0020.0002] # HENTAIGANA LETTER YO-1
+1B0E8 ; [.452A.0020.0002] # HENTAIGANA LETTER YO-2
+1B0E9 ; [.452B.0020.0002] # HENTAIGANA LETTER YO-3
+1B0EA ; [.452C.0020.0002] # HENTAIGANA LETTER YO-4
+1B0EB ; [.452D.0020.0002] # HENTAIGANA LETTER YO-5
+1B0EC ; [.452E.0020.0002] # HENTAIGANA LETTER YO-6
+1B0ED ; [.452F.0020.0002] # HENTAIGANA LETTER RA-1
+1B0EE ; [.4530.0020.0002] # HENTAIGANA LETTER RA-2
+1B0EF ; [.4531.0020.0002] # HENTAIGANA LETTER RA-3
+1B0F0 ; [.4532.0020.0002] # HENTAIGANA LETTER RA-4
+1B0F1 ; [.4533.0020.0002] # HENTAIGANA LETTER RI-1
+1B0F2 ; [.4534.0020.0002] # HENTAIGANA LETTER RI-2
+1B0F3 ; [.4535.0020.0002] # HENTAIGANA LETTER RI-3
+1B0F4 ; [.4536.0020.0002] # HENTAIGANA LETTER RI-4
+1B0F5 ; [.4537.0020.0002] # HENTAIGANA LETTER RI-5
+1B0F6 ; [.4538.0020.0002] # HENTAIGANA LETTER RI-6
+1B0F7 ; [.4539.0020.0002] # HENTAIGANA LETTER RI-7
+1B0F8 ; [.453A.0020.0002] # HENTAIGANA LETTER RU-1
+1B0F9 ; [.453B.0020.0002] # HENTAIGANA LETTER RU-2
+1B0FA ; [.453C.0020.0002] # HENTAIGANA LETTER RU-3
+1B0FB ; [.453D.0020.0002] # HENTAIGANA LETTER RU-4
+1B0FC ; [.453E.0020.0002] # HENTAIGANA LETTER RU-5
+1B0FD ; [.453F.0020.0002] # HENTAIGANA LETTER RU-6
+1B0FE ; [.4540.0020.0002] # HENTAIGANA LETTER RE-1
+1B0FF ; [.4541.0020.0002] # HENTAIGANA LETTER RE-2
+1B100 ; [.4542.0020.0002] # HENTAIGANA LETTER RE-3
+1B101 ; [.4543.0020.0002] # HENTAIGANA LETTER RE-4
+1B102 ; [.4544.0020.0002] # HENTAIGANA LETTER RO-1
+1B103 ; [.4545.0020.0002] # HENTAIGANA LETTER RO-2
+1B104 ; [.4546.0020.0002] # HENTAIGANA LETTER RO-3
+1B105 ; [.4547.0020.0002] # HENTAIGANA LETTER RO-4
+1B106 ; [.4548.0020.0002] # HENTAIGANA LETTER RO-5
+1B107 ; [.4549.0020.0002] # HENTAIGANA LETTER RO-6
+1B108 ; [.454A.0020.0002] # HENTAIGANA LETTER WA-1
+1B109 ; [.454B.0020.0002] # HENTAIGANA LETTER WA-2
+1B10A ; [.454C.0020.0002] # HENTAIGANA LETTER WA-3
+1B10B ; [.454D.0020.0002] # HENTAIGANA LETTER WA-4
+1B10C ; [.454E.0020.0002] # HENTAIGANA LETTER WA-5
+1B10D ; [.454F.0020.0002] # HENTAIGANA LETTER WI-1
+1B10E ; [.4550.0020.0002] # HENTAIGANA LETTER WI-2
+1B10F ; [.4551.0020.0002] # HENTAIGANA LETTER WI-3
+1B110 ; [.4552.0020.0002] # HENTAIGANA LETTER WI-4
+1B111 ; [.4553.0020.0002] # HENTAIGANA LETTER WI-5
+1B112 ; [.4554.0020.0002] # HENTAIGANA LETTER WE-1
+1B113 ; [.4555.0020.0002] # HENTAIGANA LETTER WE-2
+1B114 ; [.4556.0020.0002] # HENTAIGANA LETTER WE-3
+1B115 ; [.4557.0020.0002] # HENTAIGANA LETTER WE-4
+1B116 ; [.4558.0020.0002] # HENTAIGANA LETTER WO-1
+1B117 ; [.4559.0020.0002] # HENTAIGANA LETTER WO-2
+1B118 ; [.455A.0020.0002] # HENTAIGANA LETTER WO-3
+1B119 ; [.455B.0020.0002] # HENTAIGANA LETTER WO-4
+1B11A ; [.455C.0020.0002] # HENTAIGANA LETTER WO-5
+1B11B ; [.455D.0020.0002] # HENTAIGANA LETTER WO-6
+1B11C ; [.455E.0020.0002] # HENTAIGANA LETTER WO-7
+1B11D ; [.455F.0020.0002] # HENTAIGANA LETTER N-MU-MO-1
+1B11E ; [.4560.0020.0002] # HENTAIGANA LETTER N-MU-MO-2
+3105 ; [.4561.0020.0002] # BOPOMOFO LETTER B
+31A0 ; [.4561.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER BU
+3106 ; [.4562.0020.0002] # BOPOMOFO LETTER P
+31B4 ; [.4562.0020.0019] # BOPOMOFO FINAL LETTER P
+3107 ; [.4563.0020.0002] # BOPOMOFO LETTER M
+31AC ; [.4564.0020.0002] # BOPOMOFO LETTER IM
+3108 ; [.4565.0020.0002] # BOPOMOFO LETTER F
+312A ; [.4566.0020.0002] # BOPOMOFO LETTER V
+3109 ; [.4567.0020.0002] # BOPOMOFO LETTER D
+310A ; [.4568.0020.0002] # BOPOMOFO LETTER T
+31B5 ; [.4568.0020.0019] # BOPOMOFO FINAL LETTER T
+310B ; [.4569.0020.0002] # BOPOMOFO LETTER N
+312F ; [.456A.0020.0002] # BOPOMOFO LETTER NN
+310C ; [.456B.0020.0002] # BOPOMOFO LETTER L
+310D ; [.456C.0020.0002] # BOPOMOFO LETTER G
+31BB ; [.456C.0020.0019] # BOPOMOFO FINAL LETTER G
+31A3 ; [.456C.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER GU
+310E ; [.456D.0020.0002] # BOPOMOFO LETTER K
+31B6 ; [.456D.0020.0019] # BOPOMOFO FINAL LETTER K
+312B ; [.456E.0020.0002] # BOPOMOFO LETTER NG
+31AD ; [.456F.0020.0002] # BOPOMOFO LETTER NGG
+310F ; [.4570.0020.0002] # BOPOMOFO LETTER H
+31B7 ; [.4570.0020.0019] # BOPOMOFO FINAL LETTER H
+3110 ; [.4571.0020.0002] # BOPOMOFO LETTER J
+31A2 ; [.4571.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER JI
+3111 ; [.4572.0020.0002] # BOPOMOFO LETTER Q
+3112 ; [.4573.0020.0002] # BOPOMOFO LETTER X
+312C ; [.4574.0020.0002] # BOPOMOFO LETTER GN
+31BC ; [.4575.0020.0002] # BOPOMOFO LETTER GW
+31BD ; [.4576.0020.0002] # BOPOMOFO LETTER KW
+3113 ; [.4577.0020.0002] # BOPOMOFO LETTER ZH
+3114 ; [.4578.0020.0002] # BOPOMOFO LETTER CH
+3115 ; [.4579.0020.0002] # BOPOMOFO LETTER SH
+3116 ; [.457A.0020.0002] # BOPOMOFO LETTER R
+3117 ; [.457B.0020.0002] # BOPOMOFO LETTER Z
+31A1 ; [.457B.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER ZI
+3118 ; [.457C.0020.0002] # BOPOMOFO LETTER C
+3119 ; [.457D.0020.0002] # BOPOMOFO LETTER S
+31B8 ; [.457E.0020.0002] # BOPOMOFO LETTER GH
+31B9 ; [.457F.0020.0002] # BOPOMOFO LETTER LH
+31BA ; [.4580.0020.0002] # BOPOMOFO LETTER ZY
+311A ; [.4581.0020.0002] # BOPOMOFO LETTER A
+31A9 ; [.4581.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER ANN
+311B ; [.4582.0020.0002] # BOPOMOFO LETTER O
+31A7 ; [.4582.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER ONN
+31A6 ; [.4583.0020.0002] # BOPOMOFO LETTER OO
+311C ; [.4584.0020.0002] # BOPOMOFO LETTER E
+312E ; [.4584.0020.0004] # BOPOMOFO LETTER O WITH DOT ABOVE
+311D ; [.4585.0020.0002] # BOPOMOFO LETTER EH
+31A4 ; [.4586.0020.0002] # BOPOMOFO LETTER EE
+31A5 ; [.4586.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER ENN
+311E ; [.4587.0020.0002] # BOPOMOFO LETTER AI
+31AE ; [.4587.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER AINN
+311F ; [.4588.0020.0002] # BOPOMOFO LETTER EI
+3120 ; [.4589.0020.0002] # BOPOMOFO LETTER AU
+31AF ; [.4589.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER AUNN
+3121 ; [.458A.0020.0002] # BOPOMOFO LETTER OU
+3122 ; [.458B.0020.0002] # BOPOMOFO LETTER AN
+3123 ; [.458C.0020.0002] # BOPOMOFO LETTER EN
+3124 ; [.458D.0020.0002] # BOPOMOFO LETTER ANG
+31B2 ; [.458E.0020.0002] # BOPOMOFO LETTER ONG
+3125 ; [.458F.0020.0002] # BOPOMOFO LETTER ENG
+31B0 ; [.4590.0020.0002] # BOPOMOFO LETTER AM
+31B1 ; [.4591.0020.0002] # BOPOMOFO LETTER OM
+3126 ; [.4592.0020.0002] # BOPOMOFO LETTER ER
+3127 ; [.4593.0020.0002] # BOPOMOFO LETTER I
+31AA ; [.4593.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER INN
+31B3 ; [.4593.0020.0016][.0000.0119.0016] # BOPOMOFO LETTER INNN
+3128 ; [.4594.0020.0002] # BOPOMOFO LETTER U
+31AB ; [.4594.0020.0004][.0000.0119.0004] # BOPOMOFO LETTER UNN
+31A8 ; [.4594.0020.0004][.0000.011A.0004] # BOPOMOFO LETTER IR
+3129 ; [.4595.0020.0002] # BOPOMOFO LETTER IU
+312D ; [.4596.0020.0002] # BOPOMOFO LETTER IH
+31BE ; [.4597.0020.0002] # BOPOMOFO LETTER OE
+31BF ; [.4598.0020.0002] # BOPOMOFO LETTER AH
+A000 ; [.4599.0020.0002] # YI SYLLABLE IT
+A001 ; [.459A.0020.0002] # YI SYLLABLE IX
+A002 ; [.459B.0020.0002] # YI SYLLABLE I
+A003 ; [.459C.0020.0002] # YI SYLLABLE IP
+A004 ; [.459D.0020.0002] # YI SYLLABLE IET
+A005 ; [.459E.0020.0002] # YI SYLLABLE IEX
+A006 ; [.459F.0020.0002] # YI SYLLABLE IE
+A007 ; [.45A0.0020.0002] # YI SYLLABLE IEP
+A008 ; [.45A1.0020.0002] # YI SYLLABLE AT
+A009 ; [.45A2.0020.0002] # YI SYLLABLE AX
+A00A ; [.45A3.0020.0002] # YI SYLLABLE A
+A00B ; [.45A4.0020.0002] # YI SYLLABLE AP
+A00C ; [.45A5.0020.0002] # YI SYLLABLE UOX
+A00D ; [.45A6.0020.0002] # YI SYLLABLE UO
+A00E ; [.45A7.0020.0002] # YI SYLLABLE UOP
+A00F ; [.45A8.0020.0002] # YI SYLLABLE OT
+A010 ; [.45A9.0020.0002] # YI SYLLABLE OX
+A011 ; [.45AA.0020.0002] # YI SYLLABLE O
+A012 ; [.45AB.0020.0002] # YI SYLLABLE OP
+A013 ; [.45AC.0020.0002] # YI SYLLABLE EX
+A014 ; [.45AD.0020.0002] # YI SYLLABLE E
+A015 ; [.45AE.0020.0002] # YI SYLLABLE WU
+A016 ; [.45AF.0020.0002] # YI SYLLABLE BIT
+A017 ; [.45B0.0020.0002] # YI SYLLABLE BIX
+A018 ; [.45B1.0020.0002] # YI SYLLABLE BI
+A019 ; [.45B2.0020.0002] # YI SYLLABLE BIP
+A01A ; [.45B3.0020.0002] # YI SYLLABLE BIET
+A01B ; [.45B4.0020.0002] # YI SYLLABLE BIEX
+A01C ; [.45B5.0020.0002] # YI SYLLABLE BIE
+A01D ; [.45B6.0020.0002] # YI SYLLABLE BIEP
+A01E ; [.45B7.0020.0002] # YI SYLLABLE BAT
+A01F ; [.45B8.0020.0002] # YI SYLLABLE BAX
+A020 ; [.45B9.0020.0002] # YI SYLLABLE BA
+A021 ; [.45BA.0020.0002] # YI SYLLABLE BAP
+A022 ; [.45BB.0020.0002] # YI SYLLABLE BUOX
+A023 ; [.45BC.0020.0002] # YI SYLLABLE BUO
+A024 ; [.45BD.0020.0002] # YI SYLLABLE BUOP
+A025 ; [.45BE.0020.0002] # YI SYLLABLE BOT
+A026 ; [.45BF.0020.0002] # YI SYLLABLE BOX
+A027 ; [.45C0.0020.0002] # YI SYLLABLE BO
+A028 ; [.45C1.0020.0002] # YI SYLLABLE BOP
+A029 ; [.45C2.0020.0002] # YI SYLLABLE BEX
+A02A ; [.45C3.0020.0002] # YI SYLLABLE BE
+A02B ; [.45C4.0020.0002] # YI SYLLABLE BEP
+A02C ; [.45C5.0020.0002] # YI SYLLABLE BUT
+A02D ; [.45C6.0020.0002] # YI SYLLABLE BUX
+A02E ; [.45C7.0020.0002] # YI SYLLABLE BU
+A02F ; [.45C8.0020.0002] # YI SYLLABLE BUP
+A030 ; [.45C9.0020.0002] # YI SYLLABLE BURX
+A031 ; [.45CA.0020.0002] # YI SYLLABLE BUR
+A032 ; [.45CB.0020.0002] # YI SYLLABLE BYT
+A033 ; [.45CC.0020.0002] # YI SYLLABLE BYX
+A034 ; [.45CD.0020.0002] # YI SYLLABLE BY
+A035 ; [.45CE.0020.0002] # YI SYLLABLE BYP
+A036 ; [.45CF.0020.0002] # YI SYLLABLE BYRX
+A037 ; [.45D0.0020.0002] # YI SYLLABLE BYR
+A038 ; [.45D1.0020.0002] # YI SYLLABLE PIT
+A039 ; [.45D2.0020.0002] # YI SYLLABLE PIX
+A03A ; [.45D3.0020.0002] # YI SYLLABLE PI
+A03B ; [.45D4.0020.0002] # YI SYLLABLE PIP
+A03C ; [.45D5.0020.0002] # YI SYLLABLE PIEX
+A03D ; [.45D6.0020.0002] # YI SYLLABLE PIE
+A03E ; [.45D7.0020.0002] # YI SYLLABLE PIEP
+A03F ; [.45D8.0020.0002] # YI SYLLABLE PAT
+A040 ; [.45D9.0020.0002] # YI SYLLABLE PAX
+A041 ; [.45DA.0020.0002] # YI SYLLABLE PA
+A042 ; [.45DB.0020.0002] # YI SYLLABLE PAP
+A043 ; [.45DC.0020.0002] # YI SYLLABLE PUOX
+A044 ; [.45DD.0020.0002] # YI SYLLABLE PUO
+A045 ; [.45DE.0020.0002] # YI SYLLABLE PUOP
+A046 ; [.45DF.0020.0002] # YI SYLLABLE POT
+A047 ; [.45E0.0020.0002] # YI SYLLABLE POX
+A048 ; [.45E1.0020.0002] # YI SYLLABLE PO
+A049 ; [.45E2.0020.0002] # YI SYLLABLE POP
+A04A ; [.45E3.0020.0002] # YI SYLLABLE PUT
+A04B ; [.45E4.0020.0002] # YI SYLLABLE PUX
+A04C ; [.45E5.0020.0002] # YI SYLLABLE PU
+A04D ; [.45E6.0020.0002] # YI SYLLABLE PUP
+A04E ; [.45E7.0020.0002] # YI SYLLABLE PURX
+A04F ; [.45E8.0020.0002] # YI SYLLABLE PUR
+A050 ; [.45E9.0020.0002] # YI SYLLABLE PYT
+A051 ; [.45EA.0020.0002] # YI SYLLABLE PYX
+A052 ; [.45EB.0020.0002] # YI SYLLABLE PY
+A053 ; [.45EC.0020.0002] # YI SYLLABLE PYP
+A054 ; [.45ED.0020.0002] # YI SYLLABLE PYRX
+A055 ; [.45EE.0020.0002] # YI SYLLABLE PYR
+A056 ; [.45EF.0020.0002] # YI SYLLABLE BBIT
+A057 ; [.45F0.0020.0002] # YI SYLLABLE BBIX
+A058 ; [.45F1.0020.0002] # YI SYLLABLE BBI
+A059 ; [.45F2.0020.0002] # YI SYLLABLE BBIP
+A05A ; [.45F3.0020.0002] # YI SYLLABLE BBIET
+A05B ; [.45F4.0020.0002] # YI SYLLABLE BBIEX
+A05C ; [.45F5.0020.0002] # YI SYLLABLE BBIE
+A05D ; [.45F6.0020.0002] # YI SYLLABLE BBIEP
+A05E ; [.45F7.0020.0002] # YI SYLLABLE BBAT
+A05F ; [.45F8.0020.0002] # YI SYLLABLE BBAX
+A060 ; [.45F9.0020.0002] # YI SYLLABLE BBA
+A061 ; [.45FA.0020.0002] # YI SYLLABLE BBAP
+A062 ; [.45FB.0020.0002] # YI SYLLABLE BBUOX
+A063 ; [.45FC.0020.0002] # YI SYLLABLE BBUO
+A064 ; [.45FD.0020.0002] # YI SYLLABLE BBUOP
+A065 ; [.45FE.0020.0002] # YI SYLLABLE BBOT
+A066 ; [.45FF.0020.0002] # YI SYLLABLE BBOX
+A067 ; [.4600.0020.0002] # YI SYLLABLE BBO
+A068 ; [.4601.0020.0002] # YI SYLLABLE BBOP
+A069 ; [.4602.0020.0002] # YI SYLLABLE BBEX
+A06A ; [.4603.0020.0002] # YI SYLLABLE BBE
+A06B ; [.4604.0020.0002] # YI SYLLABLE BBEP
+A06C ; [.4605.0020.0002] # YI SYLLABLE BBUT
+A06D ; [.4606.0020.0002] # YI SYLLABLE BBUX
+A06E ; [.4607.0020.0002] # YI SYLLABLE BBU
+A06F ; [.4608.0020.0002] # YI SYLLABLE BBUP
+A070 ; [.4609.0020.0002] # YI SYLLABLE BBURX
+A071 ; [.460A.0020.0002] # YI SYLLABLE BBUR
+A072 ; [.460B.0020.0002] # YI SYLLABLE BBYT
+A073 ; [.460C.0020.0002] # YI SYLLABLE BBYX
+A074 ; [.460D.0020.0002] # YI SYLLABLE BBY
+A075 ; [.460E.0020.0002] # YI SYLLABLE BBYP
+A076 ; [.460F.0020.0002] # YI SYLLABLE NBIT
+A077 ; [.4610.0020.0002] # YI SYLLABLE NBIX
+A078 ; [.4611.0020.0002] # YI SYLLABLE NBI
+A079 ; [.4612.0020.0002] # YI SYLLABLE NBIP
+A07A ; [.4613.0020.0002] # YI SYLLABLE NBIEX
+A07B ; [.4614.0020.0002] # YI SYLLABLE NBIE
+A07C ; [.4615.0020.0002] # YI SYLLABLE NBIEP
+A07D ; [.4616.0020.0002] # YI SYLLABLE NBAT
+A07E ; [.4617.0020.0002] # YI SYLLABLE NBAX
+A07F ; [.4618.0020.0002] # YI SYLLABLE NBA
+A080 ; [.4619.0020.0002] # YI SYLLABLE NBAP
+A081 ; [.461A.0020.0002] # YI SYLLABLE NBOT
+A082 ; [.461B.0020.0002] # YI SYLLABLE NBOX
+A083 ; [.461C.0020.0002] # YI SYLLABLE NBO
+A084 ; [.461D.0020.0002] # YI SYLLABLE NBOP
+A085 ; [.461E.0020.0002] # YI SYLLABLE NBUT
+A086 ; [.461F.0020.0002] # YI SYLLABLE NBUX
+A087 ; [.4620.0020.0002] # YI SYLLABLE NBU
+A088 ; [.4621.0020.0002] # YI SYLLABLE NBUP
+A089 ; [.4622.0020.0002] # YI SYLLABLE NBURX
+A08A ; [.4623.0020.0002] # YI SYLLABLE NBUR
+A08B ; [.4624.0020.0002] # YI SYLLABLE NBYT
+A08C ; [.4625.0020.0002] # YI SYLLABLE NBYX
+A08D ; [.4626.0020.0002] # YI SYLLABLE NBY
+A08E ; [.4627.0020.0002] # YI SYLLABLE NBYP
+A08F ; [.4628.0020.0002] # YI SYLLABLE NBYRX
+A090 ; [.4629.0020.0002] # YI SYLLABLE NBYR
+A091 ; [.462A.0020.0002] # YI SYLLABLE HMIT
+A092 ; [.462B.0020.0002] # YI SYLLABLE HMIX
+A093 ; [.462C.0020.0002] # YI SYLLABLE HMI
+A094 ; [.462D.0020.0002] # YI SYLLABLE HMIP
+A095 ; [.462E.0020.0002] # YI SYLLABLE HMIEX
+A096 ; [.462F.0020.0002] # YI SYLLABLE HMIE
+A097 ; [.4630.0020.0002] # YI SYLLABLE HMIEP
+A098 ; [.4631.0020.0002] # YI SYLLABLE HMAT
+A099 ; [.4632.0020.0002] # YI SYLLABLE HMAX
+A09A ; [.4633.0020.0002] # YI SYLLABLE HMA
+A09B ; [.4634.0020.0002] # YI SYLLABLE HMAP
+A09C ; [.4635.0020.0002] # YI SYLLABLE HMUOX
+A09D ; [.4636.0020.0002] # YI SYLLABLE HMUO
+A09E ; [.4637.0020.0002] # YI SYLLABLE HMUOP
+A09F ; [.4638.0020.0002] # YI SYLLABLE HMOT
+A0A0 ; [.4639.0020.0002] # YI SYLLABLE HMOX
+A0A1 ; [.463A.0020.0002] # YI SYLLABLE HMO
+A0A2 ; [.463B.0020.0002] # YI SYLLABLE HMOP
+A0A3 ; [.463C.0020.0002] # YI SYLLABLE HMUT
+A0A4 ; [.463D.0020.0002] # YI SYLLABLE HMUX
+A0A5 ; [.463E.0020.0002] # YI SYLLABLE HMU
+A0A6 ; [.463F.0020.0002] # YI SYLLABLE HMUP
+A0A7 ; [.4640.0020.0002] # YI SYLLABLE HMURX
+A0A8 ; [.4641.0020.0002] # YI SYLLABLE HMUR
+A0A9 ; [.4642.0020.0002] # YI SYLLABLE HMYX
+A0AA ; [.4643.0020.0002] # YI SYLLABLE HMY
+A0AB ; [.4644.0020.0002] # YI SYLLABLE HMYP
+A0AC ; [.4645.0020.0002] # YI SYLLABLE HMYRX
+A0AD ; [.4646.0020.0002] # YI SYLLABLE HMYR
+A0AE ; [.4647.0020.0002] # YI SYLLABLE MIT
+A0AF ; [.4648.0020.0002] # YI SYLLABLE MIX
+A0B0 ; [.4649.0020.0002] # YI SYLLABLE MI
+A0B1 ; [.464A.0020.0002] # YI SYLLABLE MIP
+A0B2 ; [.464B.0020.0002] # YI SYLLABLE MIEX
+A0B3 ; [.464C.0020.0002] # YI SYLLABLE MIE
+A0B4 ; [.464D.0020.0002] # YI SYLLABLE MIEP
+A0B5 ; [.464E.0020.0002] # YI SYLLABLE MAT
+A0B6 ; [.464F.0020.0002] # YI SYLLABLE MAX
+A0B7 ; [.4650.0020.0002] # YI SYLLABLE MA
+A0B8 ; [.4651.0020.0002] # YI SYLLABLE MAP
+A0B9 ; [.4652.0020.0002] # YI SYLLABLE MUOT
+A0BA ; [.4653.0020.0002] # YI SYLLABLE MUOX
+A0BB ; [.4654.0020.0002] # YI SYLLABLE MUO
+A0BC ; [.4655.0020.0002] # YI SYLLABLE MUOP
+A0BD ; [.4656.0020.0002] # YI SYLLABLE MOT
+A0BE ; [.4657.0020.0002] # YI SYLLABLE MOX
+A0BF ; [.4658.0020.0002] # YI SYLLABLE MO
+A0C0 ; [.4659.0020.0002] # YI SYLLABLE MOP
+A0C1 ; [.465A.0020.0002] # YI SYLLABLE MEX
+A0C2 ; [.465B.0020.0002] # YI SYLLABLE ME
+A0C3 ; [.465C.0020.0002] # YI SYLLABLE MUT
+A0C4 ; [.465D.0020.0002] # YI SYLLABLE MUX
+A0C5 ; [.465E.0020.0002] # YI SYLLABLE MU
+A0C6 ; [.465F.0020.0002] # YI SYLLABLE MUP
+A0C7 ; [.4660.0020.0002] # YI SYLLABLE MURX
+A0C8 ; [.4661.0020.0002] # YI SYLLABLE MUR
+A0C9 ; [.4662.0020.0002] # YI SYLLABLE MYT
+A0CA ; [.4663.0020.0002] # YI SYLLABLE MYX
+A0CB ; [.4664.0020.0002] # YI SYLLABLE MY
+A0CC ; [.4665.0020.0002] # YI SYLLABLE MYP
+A0CD ; [.4666.0020.0002] # YI SYLLABLE FIT
+A0CE ; [.4667.0020.0002] # YI SYLLABLE FIX
+A0CF ; [.4668.0020.0002] # YI SYLLABLE FI
+A0D0 ; [.4669.0020.0002] # YI SYLLABLE FIP
+A0D1 ; [.466A.0020.0002] # YI SYLLABLE FAT
+A0D2 ; [.466B.0020.0002] # YI SYLLABLE FAX
+A0D3 ; [.466C.0020.0002] # YI SYLLABLE FA
+A0D4 ; [.466D.0020.0002] # YI SYLLABLE FAP
+A0D5 ; [.466E.0020.0002] # YI SYLLABLE FOX
+A0D6 ; [.466F.0020.0002] # YI SYLLABLE FO
+A0D7 ; [.4670.0020.0002] # YI SYLLABLE FOP
+A0D8 ; [.4671.0020.0002] # YI SYLLABLE FUT
+A0D9 ; [.4672.0020.0002] # YI SYLLABLE FUX
+A0DA ; [.4673.0020.0002] # YI SYLLABLE FU
+A0DB ; [.4674.0020.0002] # YI SYLLABLE FUP
+A0DC ; [.4675.0020.0002] # YI SYLLABLE FURX
+A0DD ; [.4676.0020.0002] # YI SYLLABLE FUR
+A0DE ; [.4677.0020.0002] # YI SYLLABLE FYT
+A0DF ; [.4678.0020.0002] # YI SYLLABLE FYX
+A0E0 ; [.4679.0020.0002] # YI SYLLABLE FY
+A0E1 ; [.467A.0020.0002] # YI SYLLABLE FYP
+A0E2 ; [.467B.0020.0002] # YI SYLLABLE VIT
+A0E3 ; [.467C.0020.0002] # YI SYLLABLE VIX
+A0E4 ; [.467D.0020.0002] # YI SYLLABLE VI
+A0E5 ; [.467E.0020.0002] # YI SYLLABLE VIP
+A0E6 ; [.467F.0020.0002] # YI SYLLABLE VIET
+A0E7 ; [.4680.0020.0002] # YI SYLLABLE VIEX
+A0E8 ; [.4681.0020.0002] # YI SYLLABLE VIE
+A0E9 ; [.4682.0020.0002] # YI SYLLABLE VIEP
+A0EA ; [.4683.0020.0002] # YI SYLLABLE VAT
+A0EB ; [.4684.0020.0002] # YI SYLLABLE VAX
+A0EC ; [.4685.0020.0002] # YI SYLLABLE VA
+A0ED ; [.4686.0020.0002] # YI SYLLABLE VAP
+A0EE ; [.4687.0020.0002] # YI SYLLABLE VOT
+A0EF ; [.4688.0020.0002] # YI SYLLABLE VOX
+A0F0 ; [.4689.0020.0002] # YI SYLLABLE VO
+A0F1 ; [.468A.0020.0002] # YI SYLLABLE VOP
+A0F2 ; [.468B.0020.0002] # YI SYLLABLE VEX
+A0F3 ; [.468C.0020.0002] # YI SYLLABLE VEP
+A0F4 ; [.468D.0020.0002] # YI SYLLABLE VUT
+A0F5 ; [.468E.0020.0002] # YI SYLLABLE VUX
+A0F6 ; [.468F.0020.0002] # YI SYLLABLE VU
+A0F7 ; [.4690.0020.0002] # YI SYLLABLE VUP
+A0F8 ; [.4691.0020.0002] # YI SYLLABLE VURX
+A0F9 ; [.4692.0020.0002] # YI SYLLABLE VUR
+A0FA ; [.4693.0020.0002] # YI SYLLABLE VYT
+A0FB ; [.4694.0020.0002] # YI SYLLABLE VYX
+A0FC ; [.4695.0020.0002] # YI SYLLABLE VY
+A0FD ; [.4696.0020.0002] # YI SYLLABLE VYP
+A0FE ; [.4697.0020.0002] # YI SYLLABLE VYRX
+A0FF ; [.4698.0020.0002] # YI SYLLABLE VYR
+A100 ; [.4699.0020.0002] # YI SYLLABLE DIT
+A101 ; [.469A.0020.0002] # YI SYLLABLE DIX
+A102 ; [.469B.0020.0002] # YI SYLLABLE DI
+A103 ; [.469C.0020.0002] # YI SYLLABLE DIP
+A104 ; [.469D.0020.0002] # YI SYLLABLE DIEX
+A105 ; [.469E.0020.0002] # YI SYLLABLE DIE
+A106 ; [.469F.0020.0002] # YI SYLLABLE DIEP
+A107 ; [.46A0.0020.0002] # YI SYLLABLE DAT
+A108 ; [.46A1.0020.0002] # YI SYLLABLE DAX
+A109 ; [.46A2.0020.0002] # YI SYLLABLE DA
+A10A ; [.46A3.0020.0002] # YI SYLLABLE DAP
+A10B ; [.46A4.0020.0002] # YI SYLLABLE DUOX
+A10C ; [.46A5.0020.0002] # YI SYLLABLE DUO
+A10D ; [.46A6.0020.0002] # YI SYLLABLE DOT
+A10E ; [.46A7.0020.0002] # YI SYLLABLE DOX
+A10F ; [.46A8.0020.0002] # YI SYLLABLE DO
+A110 ; [.46A9.0020.0002] # YI SYLLABLE DOP
+A111 ; [.46AA.0020.0002] # YI SYLLABLE DEX
+A112 ; [.46AB.0020.0002] # YI SYLLABLE DE
+A113 ; [.46AC.0020.0002] # YI SYLLABLE DEP
+A114 ; [.46AD.0020.0002] # YI SYLLABLE DUT
+A115 ; [.46AE.0020.0002] # YI SYLLABLE DUX
+A116 ; [.46AF.0020.0002] # YI SYLLABLE DU
+A117 ; [.46B0.0020.0002] # YI SYLLABLE DUP
+A118 ; [.46B1.0020.0002] # YI SYLLABLE DURX
+A119 ; [.46B2.0020.0002] # YI SYLLABLE DUR
+A11A ; [.46B3.0020.0002] # YI SYLLABLE TIT
+A11B ; [.46B4.0020.0002] # YI SYLLABLE TIX
+A11C ; [.46B5.0020.0002] # YI SYLLABLE TI
+A11D ; [.46B6.0020.0002] # YI SYLLABLE TIP
+A11E ; [.46B7.0020.0002] # YI SYLLABLE TIEX
+A11F ; [.46B8.0020.0002] # YI SYLLABLE TIE
+A120 ; [.46B9.0020.0002] # YI SYLLABLE TIEP
+A121 ; [.46BA.0020.0002] # YI SYLLABLE TAT
+A122 ; [.46BB.0020.0002] # YI SYLLABLE TAX
+A123 ; [.46BC.0020.0002] # YI SYLLABLE TA
+A124 ; [.46BD.0020.0002] # YI SYLLABLE TAP
+A125 ; [.46BE.0020.0002] # YI SYLLABLE TUOT
+A126 ; [.46BF.0020.0002] # YI SYLLABLE TUOX
+A127 ; [.46C0.0020.0002] # YI SYLLABLE TUO
+A128 ; [.46C1.0020.0002] # YI SYLLABLE TUOP
+A129 ; [.46C2.0020.0002] # YI SYLLABLE TOT
+A12A ; [.46C3.0020.0002] # YI SYLLABLE TOX
+A12B ; [.46C4.0020.0002] # YI SYLLABLE TO
+A12C ; [.46C5.0020.0002] # YI SYLLABLE TOP
+A12D ; [.46C6.0020.0002] # YI SYLLABLE TEX
+A12E ; [.46C7.0020.0002] # YI SYLLABLE TE
+A12F ; [.46C8.0020.0002] # YI SYLLABLE TEP
+A130 ; [.46C9.0020.0002] # YI SYLLABLE TUT
+A131 ; [.46CA.0020.0002] # YI SYLLABLE TUX
+A132 ; [.46CB.0020.0002] # YI SYLLABLE TU
+A133 ; [.46CC.0020.0002] # YI SYLLABLE TUP
+A134 ; [.46CD.0020.0002] # YI SYLLABLE TURX
+A135 ; [.46CE.0020.0002] # YI SYLLABLE TUR
+A136 ; [.46CF.0020.0002] # YI SYLLABLE DDIT
+A137 ; [.46D0.0020.0002] # YI SYLLABLE DDIX
+A138 ; [.46D1.0020.0002] # YI SYLLABLE DDI
+A139 ; [.46D2.0020.0002] # YI SYLLABLE DDIP
+A13A ; [.46D3.0020.0002] # YI SYLLABLE DDIEX
+A13B ; [.46D4.0020.0002] # YI SYLLABLE DDIE
+A13C ; [.46D5.0020.0002] # YI SYLLABLE DDIEP
+A13D ; [.46D6.0020.0002] # YI SYLLABLE DDAT
+A13E ; [.46D7.0020.0002] # YI SYLLABLE DDAX
+A13F ; [.46D8.0020.0002] # YI SYLLABLE DDA
+A140 ; [.46D9.0020.0002] # YI SYLLABLE DDAP
+A141 ; [.46DA.0020.0002] # YI SYLLABLE DDUOX
+A142 ; [.46DB.0020.0002] # YI SYLLABLE DDUO
+A143 ; [.46DC.0020.0002] # YI SYLLABLE DDUOP
+A144 ; [.46DD.0020.0002] # YI SYLLABLE DDOT
+A145 ; [.46DE.0020.0002] # YI SYLLABLE DDOX
+A146 ; [.46DF.0020.0002] # YI SYLLABLE DDO
+A147 ; [.46E0.0020.0002] # YI SYLLABLE DDOP
+A148 ; [.46E1.0020.0002] # YI SYLLABLE DDEX
+A149 ; [.46E2.0020.0002] # YI SYLLABLE DDE
+A14A ; [.46E3.0020.0002] # YI SYLLABLE DDEP
+A14B ; [.46E4.0020.0002] # YI SYLLABLE DDUT
+A14C ; [.46E5.0020.0002] # YI SYLLABLE DDUX
+A14D ; [.46E6.0020.0002] # YI SYLLABLE DDU
+A14E ; [.46E7.0020.0002] # YI SYLLABLE DDUP
+A14F ; [.46E8.0020.0002] # YI SYLLABLE DDURX
+A150 ; [.46E9.0020.0002] # YI SYLLABLE DDUR
+A151 ; [.46EA.0020.0002] # YI SYLLABLE NDIT
+A152 ; [.46EB.0020.0002] # YI SYLLABLE NDIX
+A153 ; [.46EC.0020.0002] # YI SYLLABLE NDI
+A154 ; [.46ED.0020.0002] # YI SYLLABLE NDIP
+A155 ; [.46EE.0020.0002] # YI SYLLABLE NDIEX
+A156 ; [.46EF.0020.0002] # YI SYLLABLE NDIE
+A157 ; [.46F0.0020.0002] # YI SYLLABLE NDAT
+A158 ; [.46F1.0020.0002] # YI SYLLABLE NDAX
+A159 ; [.46F2.0020.0002] # YI SYLLABLE NDA
+A15A ; [.46F3.0020.0002] # YI SYLLABLE NDAP
+A15B ; [.46F4.0020.0002] # YI SYLLABLE NDOT
+A15C ; [.46F5.0020.0002] # YI SYLLABLE NDOX
+A15D ; [.46F6.0020.0002] # YI SYLLABLE NDO
+A15E ; [.46F7.0020.0002] # YI SYLLABLE NDOP
+A15F ; [.46F8.0020.0002] # YI SYLLABLE NDEX
+A160 ; [.46F9.0020.0002] # YI SYLLABLE NDE
+A161 ; [.46FA.0020.0002] # YI SYLLABLE NDEP
+A162 ; [.46FB.0020.0002] # YI SYLLABLE NDUT
+A163 ; [.46FC.0020.0002] # YI SYLLABLE NDUX
+A164 ; [.46FD.0020.0002] # YI SYLLABLE NDU
+A165 ; [.46FE.0020.0002] # YI SYLLABLE NDUP
+A166 ; [.46FF.0020.0002] # YI SYLLABLE NDURX
+A167 ; [.4700.0020.0002] # YI SYLLABLE NDUR
+A168 ; [.4701.0020.0002] # YI SYLLABLE HNIT
+A169 ; [.4702.0020.0002] # YI SYLLABLE HNIX
+A16A ; [.4703.0020.0002] # YI SYLLABLE HNI
+A16B ; [.4704.0020.0002] # YI SYLLABLE HNIP
+A16C ; [.4705.0020.0002] # YI SYLLABLE HNIET
+A16D ; [.4706.0020.0002] # YI SYLLABLE HNIEX
+A16E ; [.4707.0020.0002] # YI SYLLABLE HNIE
+A16F ; [.4708.0020.0002] # YI SYLLABLE HNIEP
+A170 ; [.4709.0020.0002] # YI SYLLABLE HNAT
+A171 ; [.470A.0020.0002] # YI SYLLABLE HNAX
+A172 ; [.470B.0020.0002] # YI SYLLABLE HNA
+A173 ; [.470C.0020.0002] # YI SYLLABLE HNAP
+A174 ; [.470D.0020.0002] # YI SYLLABLE HNUOX
+A175 ; [.470E.0020.0002] # YI SYLLABLE HNUO
+A176 ; [.470F.0020.0002] # YI SYLLABLE HNOT
+A177 ; [.4710.0020.0002] # YI SYLLABLE HNOX
+A178 ; [.4711.0020.0002] # YI SYLLABLE HNOP
+A179 ; [.4712.0020.0002] # YI SYLLABLE HNEX
+A17A ; [.4713.0020.0002] # YI SYLLABLE HNE
+A17B ; [.4714.0020.0002] # YI SYLLABLE HNEP
+A17C ; [.4715.0020.0002] # YI SYLLABLE HNUT
+A17D ; [.4716.0020.0002] # YI SYLLABLE NIT
+A17E ; [.4717.0020.0002] # YI SYLLABLE NIX
+A17F ; [.4718.0020.0002] # YI SYLLABLE NI
+A180 ; [.4719.0020.0002] # YI SYLLABLE NIP
+A181 ; [.471A.0020.0002] # YI SYLLABLE NIEX
+A182 ; [.471B.0020.0002] # YI SYLLABLE NIE
+A183 ; [.471C.0020.0002] # YI SYLLABLE NIEP
+A184 ; [.471D.0020.0002] # YI SYLLABLE NAX
+A185 ; [.471E.0020.0002] # YI SYLLABLE NA
+A186 ; [.471F.0020.0002] # YI SYLLABLE NAP
+A187 ; [.4720.0020.0002] # YI SYLLABLE NUOX
+A188 ; [.4721.0020.0002] # YI SYLLABLE NUO
+A189 ; [.4722.0020.0002] # YI SYLLABLE NUOP
+A18A ; [.4723.0020.0002] # YI SYLLABLE NOT
+A18B ; [.4724.0020.0002] # YI SYLLABLE NOX
+A18C ; [.4725.0020.0002] # YI SYLLABLE NO
+A18D ; [.4726.0020.0002] # YI SYLLABLE NOP
+A18E ; [.4727.0020.0002] # YI SYLLABLE NEX
+A18F ; [.4728.0020.0002] # YI SYLLABLE NE
+A190 ; [.4729.0020.0002] # YI SYLLABLE NEP
+A191 ; [.472A.0020.0002] # YI SYLLABLE NUT
+A192 ; [.472B.0020.0002] # YI SYLLABLE NUX
+A193 ; [.472C.0020.0002] # YI SYLLABLE NU
+A194 ; [.472D.0020.0002] # YI SYLLABLE NUP
+A195 ; [.472E.0020.0002] # YI SYLLABLE NURX
+A196 ; [.472F.0020.0002] # YI SYLLABLE NUR
+A197 ; [.4730.0020.0002] # YI SYLLABLE HLIT
+A198 ; [.4731.0020.0002] # YI SYLLABLE HLIX
+A199 ; [.4732.0020.0002] # YI SYLLABLE HLI
+A19A ; [.4733.0020.0002] # YI SYLLABLE HLIP
+A19B ; [.4734.0020.0002] # YI SYLLABLE HLIEX
+A19C ; [.4735.0020.0002] # YI SYLLABLE HLIE
+A19D ; [.4736.0020.0002] # YI SYLLABLE HLIEP
+A19E ; [.4737.0020.0002] # YI SYLLABLE HLAT
+A19F ; [.4738.0020.0002] # YI SYLLABLE HLAX
+A1A0 ; [.4739.0020.0002] # YI SYLLABLE HLA
+A1A1 ; [.473A.0020.0002] # YI SYLLABLE HLAP
+A1A2 ; [.473B.0020.0002] # YI SYLLABLE HLUOX
+A1A3 ; [.473C.0020.0002] # YI SYLLABLE HLUO
+A1A4 ; [.473D.0020.0002] # YI SYLLABLE HLUOP
+A1A5 ; [.473E.0020.0002] # YI SYLLABLE HLOX
+A1A6 ; [.473F.0020.0002] # YI SYLLABLE HLO
+A1A7 ; [.4740.0020.0002] # YI SYLLABLE HLOP
+A1A8 ; [.4741.0020.0002] # YI SYLLABLE HLEX
+A1A9 ; [.4742.0020.0002] # YI SYLLABLE HLE
+A1AA ; [.4743.0020.0002] # YI SYLLABLE HLEP
+A1AB ; [.4744.0020.0002] # YI SYLLABLE HLUT
+A1AC ; [.4745.0020.0002] # YI SYLLABLE HLUX
+A1AD ; [.4746.0020.0002] # YI SYLLABLE HLU
+A1AE ; [.4747.0020.0002] # YI SYLLABLE HLUP
+A1AF ; [.4748.0020.0002] # YI SYLLABLE HLURX
+A1B0 ; [.4749.0020.0002] # YI SYLLABLE HLUR
+A1B1 ; [.474A.0020.0002] # YI SYLLABLE HLYT
+A1B2 ; [.474B.0020.0002] # YI SYLLABLE HLYX
+A1B3 ; [.474C.0020.0002] # YI SYLLABLE HLY
+A1B4 ; [.474D.0020.0002] # YI SYLLABLE HLYP
+A1B5 ; [.474E.0020.0002] # YI SYLLABLE HLYRX
+A1B6 ; [.474F.0020.0002] # YI SYLLABLE HLYR
+A1B7 ; [.4750.0020.0002] # YI SYLLABLE LIT
+A1B8 ; [.4751.0020.0002] # YI SYLLABLE LIX
+A1B9 ; [.4752.0020.0002] # YI SYLLABLE LI
+A1BA ; [.4753.0020.0002] # YI SYLLABLE LIP
+A1BB ; [.4754.0020.0002] # YI SYLLABLE LIET
+A1BC ; [.4755.0020.0002] # YI SYLLABLE LIEX
+A1BD ; [.4756.0020.0002] # YI SYLLABLE LIE
+A1BE ; [.4757.0020.0002] # YI SYLLABLE LIEP
+A1BF ; [.4758.0020.0002] # YI SYLLABLE LAT
+A1C0 ; [.4759.0020.0002] # YI SYLLABLE LAX
+A1C1 ; [.475A.0020.0002] # YI SYLLABLE LA
+A1C2 ; [.475B.0020.0002] # YI SYLLABLE LAP
+A1C3 ; [.475C.0020.0002] # YI SYLLABLE LUOT
+A1C4 ; [.475D.0020.0002] # YI SYLLABLE LUOX
+A1C5 ; [.475E.0020.0002] # YI SYLLABLE LUO
+A1C6 ; [.475F.0020.0002] # YI SYLLABLE LUOP
+A1C7 ; [.4760.0020.0002] # YI SYLLABLE LOT
+A1C8 ; [.4761.0020.0002] # YI SYLLABLE LOX
+A1C9 ; [.4762.0020.0002] # YI SYLLABLE LO
+A1CA ; [.4763.0020.0002] # YI SYLLABLE LOP
+A1CB ; [.4764.0020.0002] # YI SYLLABLE LEX
+A1CC ; [.4765.0020.0002] # YI SYLLABLE LE
+A1CD ; [.4766.0020.0002] # YI SYLLABLE LEP
+A1CE ; [.4767.0020.0002] # YI SYLLABLE LUT
+A1CF ; [.4768.0020.0002] # YI SYLLABLE LUX
+A1D0 ; [.4769.0020.0002] # YI SYLLABLE LU
+A1D1 ; [.476A.0020.0002] # YI SYLLABLE LUP
+A1D2 ; [.476B.0020.0002] # YI SYLLABLE LURX
+A1D3 ; [.476C.0020.0002] # YI SYLLABLE LUR
+A1D4 ; [.476D.0020.0002] # YI SYLLABLE LYT
+A1D5 ; [.476E.0020.0002] # YI SYLLABLE LYX
+A1D6 ; [.476F.0020.0002] # YI SYLLABLE LY
+A1D7 ; [.4770.0020.0002] # YI SYLLABLE LYP
+A1D8 ; [.4771.0020.0002] # YI SYLLABLE LYRX
+A1D9 ; [.4772.0020.0002] # YI SYLLABLE LYR
+A1DA ; [.4773.0020.0002] # YI SYLLABLE GIT
+A1DB ; [.4774.0020.0002] # YI SYLLABLE GIX
+A1DC ; [.4775.0020.0002] # YI SYLLABLE GI
+A1DD ; [.4776.0020.0002] # YI SYLLABLE GIP
+A1DE ; [.4777.0020.0002] # YI SYLLABLE GIET
+A1DF ; [.4778.0020.0002] # YI SYLLABLE GIEX
+A1E0 ; [.4779.0020.0002] # YI SYLLABLE GIE
+A1E1 ; [.477A.0020.0002] # YI SYLLABLE GIEP
+A1E2 ; [.477B.0020.0002] # YI SYLLABLE GAT
+A1E3 ; [.477C.0020.0002] # YI SYLLABLE GAX
+A1E4 ; [.477D.0020.0002] # YI SYLLABLE GA
+A1E5 ; [.477E.0020.0002] # YI SYLLABLE GAP
+A1E6 ; [.477F.0020.0002] # YI SYLLABLE GUOT
+A1E7 ; [.4780.0020.0002] # YI SYLLABLE GUOX
+A1E8 ; [.4781.0020.0002] # YI SYLLABLE GUO
+A1E9 ; [.4782.0020.0002] # YI SYLLABLE GUOP
+A1EA ; [.4783.0020.0002] # YI SYLLABLE GOT
+A1EB ; [.4784.0020.0002] # YI SYLLABLE GOX
+A1EC ; [.4785.0020.0002] # YI SYLLABLE GO
+A1ED ; [.4786.0020.0002] # YI SYLLABLE GOP
+A1EE ; [.4787.0020.0002] # YI SYLLABLE GET
+A1EF ; [.4788.0020.0002] # YI SYLLABLE GEX
+A1F0 ; [.4789.0020.0002] # YI SYLLABLE GE
+A1F1 ; [.478A.0020.0002] # YI SYLLABLE GEP
+A1F2 ; [.478B.0020.0002] # YI SYLLABLE GUT
+A1F3 ; [.478C.0020.0002] # YI SYLLABLE GUX
+A1F4 ; [.478D.0020.0002] # YI SYLLABLE GU
+A1F5 ; [.478E.0020.0002] # YI SYLLABLE GUP
+A1F6 ; [.478F.0020.0002] # YI SYLLABLE GURX
+A1F7 ; [.4790.0020.0002] # YI SYLLABLE GUR
+A1F8 ; [.4791.0020.0002] # YI SYLLABLE KIT
+A1F9 ; [.4792.0020.0002] # YI SYLLABLE KIX
+A1FA ; [.4793.0020.0002] # YI SYLLABLE KI
+A1FB ; [.4794.0020.0002] # YI SYLLABLE KIP
+A1FC ; [.4795.0020.0002] # YI SYLLABLE KIEX
+A1FD ; [.4796.0020.0002] # YI SYLLABLE KIE
+A1FE ; [.4797.0020.0002] # YI SYLLABLE KIEP
+A1FF ; [.4798.0020.0002] # YI SYLLABLE KAT
+A200 ; [.4799.0020.0002] # YI SYLLABLE KAX
+A201 ; [.479A.0020.0002] # YI SYLLABLE KA
+A202 ; [.479B.0020.0002] # YI SYLLABLE KAP
+A203 ; [.479C.0020.0002] # YI SYLLABLE KUOX
+A204 ; [.479D.0020.0002] # YI SYLLABLE KUO
+A205 ; [.479E.0020.0002] # YI SYLLABLE KUOP
+A206 ; [.479F.0020.0002] # YI SYLLABLE KOT
+A207 ; [.47A0.0020.0002] # YI SYLLABLE KOX
+A208 ; [.47A1.0020.0002] # YI SYLLABLE KO
+A209 ; [.47A2.0020.0002] # YI SYLLABLE KOP
+A20A ; [.47A3.0020.0002] # YI SYLLABLE KET
+A20B ; [.47A4.0020.0002] # YI SYLLABLE KEX
+A20C ; [.47A5.0020.0002] # YI SYLLABLE KE
+A20D ; [.47A6.0020.0002] # YI SYLLABLE KEP
+A20E ; [.47A7.0020.0002] # YI SYLLABLE KUT
+A20F ; [.47A8.0020.0002] # YI SYLLABLE KUX
+A210 ; [.47A9.0020.0002] # YI SYLLABLE KU
+A211 ; [.47AA.0020.0002] # YI SYLLABLE KUP
+A212 ; [.47AB.0020.0002] # YI SYLLABLE KURX
+A213 ; [.47AC.0020.0002] # YI SYLLABLE KUR
+A214 ; [.47AD.0020.0002] # YI SYLLABLE GGIT
+A215 ; [.47AE.0020.0002] # YI SYLLABLE GGIX
+A216 ; [.47AF.0020.0002] # YI SYLLABLE GGI
+A217 ; [.47B0.0020.0002] # YI SYLLABLE GGIEX
+A218 ; [.47B1.0020.0002] # YI SYLLABLE GGIE
+A219 ; [.47B2.0020.0002] # YI SYLLABLE GGIEP
+A21A ; [.47B3.0020.0002] # YI SYLLABLE GGAT
+A21B ; [.47B4.0020.0002] # YI SYLLABLE GGAX
+A21C ; [.47B5.0020.0002] # YI SYLLABLE GGA
+A21D ; [.47B6.0020.0002] # YI SYLLABLE GGAP
+A21E ; [.47B7.0020.0002] # YI SYLLABLE GGUOT
+A21F ; [.47B8.0020.0002] # YI SYLLABLE GGUOX
+A220 ; [.47B9.0020.0002] # YI SYLLABLE GGUO
+A221 ; [.47BA.0020.0002] # YI SYLLABLE GGUOP
+A222 ; [.47BB.0020.0002] # YI SYLLABLE GGOT
+A223 ; [.47BC.0020.0002] # YI SYLLABLE GGOX
+A224 ; [.47BD.0020.0002] # YI SYLLABLE GGO
+A225 ; [.47BE.0020.0002] # YI SYLLABLE GGOP
+A226 ; [.47BF.0020.0002] # YI SYLLABLE GGET
+A227 ; [.47C0.0020.0002] # YI SYLLABLE GGEX
+A228 ; [.47C1.0020.0002] # YI SYLLABLE GGE
+A229 ; [.47C2.0020.0002] # YI SYLLABLE GGEP
+A22A ; [.47C3.0020.0002] # YI SYLLABLE GGUT
+A22B ; [.47C4.0020.0002] # YI SYLLABLE GGUX
+A22C ; [.47C5.0020.0002] # YI SYLLABLE GGU
+A22D ; [.47C6.0020.0002] # YI SYLLABLE GGUP
+A22E ; [.47C7.0020.0002] # YI SYLLABLE GGURX
+A22F ; [.47C8.0020.0002] # YI SYLLABLE GGUR
+A230 ; [.47C9.0020.0002] # YI SYLLABLE MGIEX
+A231 ; [.47CA.0020.0002] # YI SYLLABLE MGIE
+A232 ; [.47CB.0020.0002] # YI SYLLABLE MGAT
+A233 ; [.47CC.0020.0002] # YI SYLLABLE MGAX
+A234 ; [.47CD.0020.0002] # YI SYLLABLE MGA
+A235 ; [.47CE.0020.0002] # YI SYLLABLE MGAP
+A236 ; [.47CF.0020.0002] # YI SYLLABLE MGUOX
+A237 ; [.47D0.0020.0002] # YI SYLLABLE MGUO
+A238 ; [.47D1.0020.0002] # YI SYLLABLE MGUOP
+A239 ; [.47D2.0020.0002] # YI SYLLABLE MGOT
+A23A ; [.47D3.0020.0002] # YI SYLLABLE MGOX
+A23B ; [.47D4.0020.0002] # YI SYLLABLE MGO
+A23C ; [.47D5.0020.0002] # YI SYLLABLE MGOP
+A23D ; [.47D6.0020.0002] # YI SYLLABLE MGEX
+A23E ; [.47D7.0020.0002] # YI SYLLABLE MGE
+A23F ; [.47D8.0020.0002] # YI SYLLABLE MGEP
+A240 ; [.47D9.0020.0002] # YI SYLLABLE MGUT
+A241 ; [.47DA.0020.0002] # YI SYLLABLE MGUX
+A242 ; [.47DB.0020.0002] # YI SYLLABLE MGU
+A243 ; [.47DC.0020.0002] # YI SYLLABLE MGUP
+A244 ; [.47DD.0020.0002] # YI SYLLABLE MGURX
+A245 ; [.47DE.0020.0002] # YI SYLLABLE MGUR
+A246 ; [.47DF.0020.0002] # YI SYLLABLE HXIT
+A247 ; [.47E0.0020.0002] # YI SYLLABLE HXIX
+A248 ; [.47E1.0020.0002] # YI SYLLABLE HXI
+A249 ; [.47E2.0020.0002] # YI SYLLABLE HXIP
+A24A ; [.47E3.0020.0002] # YI SYLLABLE HXIET
+A24B ; [.47E4.0020.0002] # YI SYLLABLE HXIEX
+A24C ; [.47E5.0020.0002] # YI SYLLABLE HXIE
+A24D ; [.47E6.0020.0002] # YI SYLLABLE HXIEP
+A24E ; [.47E7.0020.0002] # YI SYLLABLE HXAT
+A24F ; [.47E8.0020.0002] # YI SYLLABLE HXAX
+A250 ; [.47E9.0020.0002] # YI SYLLABLE HXA
+A251 ; [.47EA.0020.0002] # YI SYLLABLE HXAP
+A252 ; [.47EB.0020.0002] # YI SYLLABLE HXUOT
+A253 ; [.47EC.0020.0002] # YI SYLLABLE HXUOX
+A254 ; [.47ED.0020.0002] # YI SYLLABLE HXUO
+A255 ; [.47EE.0020.0002] # YI SYLLABLE HXUOP
+A256 ; [.47EF.0020.0002] # YI SYLLABLE HXOT
+A257 ; [.47F0.0020.0002] # YI SYLLABLE HXOX
+A258 ; [.47F1.0020.0002] # YI SYLLABLE HXO
+A259 ; [.47F2.0020.0002] # YI SYLLABLE HXOP
+A25A ; [.47F3.0020.0002] # YI SYLLABLE HXEX
+A25B ; [.47F4.0020.0002] # YI SYLLABLE HXE
+A25C ; [.47F5.0020.0002] # YI SYLLABLE HXEP
+A25D ; [.47F6.0020.0002] # YI SYLLABLE NGIEX
+A25E ; [.47F7.0020.0002] # YI SYLLABLE NGIE
+A25F ; [.47F8.0020.0002] # YI SYLLABLE NGIEP
+A260 ; [.47F9.0020.0002] # YI SYLLABLE NGAT
+A261 ; [.47FA.0020.0002] # YI SYLLABLE NGAX
+A262 ; [.47FB.0020.0002] # YI SYLLABLE NGA
+A263 ; [.47FC.0020.0002] # YI SYLLABLE NGAP
+A264 ; [.47FD.0020.0002] # YI SYLLABLE NGUOT
+A265 ; [.47FE.0020.0002] # YI SYLLABLE NGUOX
+A266 ; [.47FF.0020.0002] # YI SYLLABLE NGUO
+A267 ; [.4800.0020.0002] # YI SYLLABLE NGOT
+A268 ; [.4801.0020.0002] # YI SYLLABLE NGOX
+A269 ; [.4802.0020.0002] # YI SYLLABLE NGO
+A26A ; [.4803.0020.0002] # YI SYLLABLE NGOP
+A26B ; [.4804.0020.0002] # YI SYLLABLE NGEX
+A26C ; [.4805.0020.0002] # YI SYLLABLE NGE
+A26D ; [.4806.0020.0002] # YI SYLLABLE NGEP
+A26E ; [.4807.0020.0002] # YI SYLLABLE HIT
+A26F ; [.4808.0020.0002] # YI SYLLABLE HIEX
+A270 ; [.4809.0020.0002] # YI SYLLABLE HIE
+A271 ; [.480A.0020.0002] # YI SYLLABLE HAT
+A272 ; [.480B.0020.0002] # YI SYLLABLE HAX
+A273 ; [.480C.0020.0002] # YI SYLLABLE HA
+A274 ; [.480D.0020.0002] # YI SYLLABLE HAP
+A275 ; [.480E.0020.0002] # YI SYLLABLE HUOT
+A276 ; [.480F.0020.0002] # YI SYLLABLE HUOX
+A277 ; [.4810.0020.0002] # YI SYLLABLE HUO
+A278 ; [.4811.0020.0002] # YI SYLLABLE HUOP
+A279 ; [.4812.0020.0002] # YI SYLLABLE HOT
+A27A ; [.4813.0020.0002] # YI SYLLABLE HOX
+A27B ; [.4814.0020.0002] # YI SYLLABLE HO
+A27C ; [.4815.0020.0002] # YI SYLLABLE HOP
+A27D ; [.4816.0020.0002] # YI SYLLABLE HEX
+A27E ; [.4817.0020.0002] # YI SYLLABLE HE
+A27F ; [.4818.0020.0002] # YI SYLLABLE HEP
+A280 ; [.4819.0020.0002] # YI SYLLABLE WAT
+A281 ; [.481A.0020.0002] # YI SYLLABLE WAX
+A282 ; [.481B.0020.0002] # YI SYLLABLE WA
+A283 ; [.481C.0020.0002] # YI SYLLABLE WAP
+A284 ; [.481D.0020.0002] # YI SYLLABLE WUOX
+A285 ; [.481E.0020.0002] # YI SYLLABLE WUO
+A286 ; [.481F.0020.0002] # YI SYLLABLE WUOP
+A287 ; [.4820.0020.0002] # YI SYLLABLE WOX
+A288 ; [.4821.0020.0002] # YI SYLLABLE WO
+A289 ; [.4822.0020.0002] # YI SYLLABLE WOP
+A28A ; [.4823.0020.0002] # YI SYLLABLE WEX
+A28B ; [.4824.0020.0002] # YI SYLLABLE WE
+A28C ; [.4825.0020.0002] # YI SYLLABLE WEP
+A28D ; [.4826.0020.0002] # YI SYLLABLE ZIT
+A28E ; [.4827.0020.0002] # YI SYLLABLE ZIX
+A28F ; [.4828.0020.0002] # YI SYLLABLE ZI
+A290 ; [.4829.0020.0002] # YI SYLLABLE ZIP
+A291 ; [.482A.0020.0002] # YI SYLLABLE ZIEX
+A292 ; [.482B.0020.0002] # YI SYLLABLE ZIE
+A293 ; [.482C.0020.0002] # YI SYLLABLE ZIEP
+A294 ; [.482D.0020.0002] # YI SYLLABLE ZAT
+A295 ; [.482E.0020.0002] # YI SYLLABLE ZAX
+A296 ; [.482F.0020.0002] # YI SYLLABLE ZA
+A297 ; [.4830.0020.0002] # YI SYLLABLE ZAP
+A298 ; [.4831.0020.0002] # YI SYLLABLE ZUOX
+A299 ; [.4832.0020.0002] # YI SYLLABLE ZUO
+A29A ; [.4833.0020.0002] # YI SYLLABLE ZUOP
+A29B ; [.4834.0020.0002] # YI SYLLABLE ZOT
+A29C ; [.4835.0020.0002] # YI SYLLABLE ZOX
+A29D ; [.4836.0020.0002] # YI SYLLABLE ZO
+A29E ; [.4837.0020.0002] # YI SYLLABLE ZOP
+A29F ; [.4838.0020.0002] # YI SYLLABLE ZEX
+A2A0 ; [.4839.0020.0002] # YI SYLLABLE ZE
+A2A1 ; [.483A.0020.0002] # YI SYLLABLE ZEP
+A2A2 ; [.483B.0020.0002] # YI SYLLABLE ZUT
+A2A3 ; [.483C.0020.0002] # YI SYLLABLE ZUX
+A2A4 ; [.483D.0020.0002] # YI SYLLABLE ZU
+A2A5 ; [.483E.0020.0002] # YI SYLLABLE ZUP
+A2A6 ; [.483F.0020.0002] # YI SYLLABLE ZURX
+A2A7 ; [.4840.0020.0002] # YI SYLLABLE ZUR
+A2A8 ; [.4841.0020.0002] # YI SYLLABLE ZYT
+A2A9 ; [.4842.0020.0002] # YI SYLLABLE ZYX
+A2AA ; [.4843.0020.0002] # YI SYLLABLE ZY
+A2AB ; [.4844.0020.0002] # YI SYLLABLE ZYP
+A2AC ; [.4845.0020.0002] # YI SYLLABLE ZYRX
+A2AD ; [.4846.0020.0002] # YI SYLLABLE ZYR
+A2AE ; [.4847.0020.0002] # YI SYLLABLE CIT
+A2AF ; [.4848.0020.0002] # YI SYLLABLE CIX
+A2B0 ; [.4849.0020.0002] # YI SYLLABLE CI
+A2B1 ; [.484A.0020.0002] # YI SYLLABLE CIP
+A2B2 ; [.484B.0020.0002] # YI SYLLABLE CIET
+A2B3 ; [.484C.0020.0002] # YI SYLLABLE CIEX
+A2B4 ; [.484D.0020.0002] # YI SYLLABLE CIE
+A2B5 ; [.484E.0020.0002] # YI SYLLABLE CIEP
+A2B6 ; [.484F.0020.0002] # YI SYLLABLE CAT
+A2B7 ; [.4850.0020.0002] # YI SYLLABLE CAX
+A2B8 ; [.4851.0020.0002] # YI SYLLABLE CA
+A2B9 ; [.4852.0020.0002] # YI SYLLABLE CAP
+A2BA ; [.4853.0020.0002] # YI SYLLABLE CUOX
+A2BB ; [.4854.0020.0002] # YI SYLLABLE CUO
+A2BC ; [.4855.0020.0002] # YI SYLLABLE CUOP
+A2BD ; [.4856.0020.0002] # YI SYLLABLE COT
+A2BE ; [.4857.0020.0002] # YI SYLLABLE COX
+A2BF ; [.4858.0020.0002] # YI SYLLABLE CO
+A2C0 ; [.4859.0020.0002] # YI SYLLABLE COP
+A2C1 ; [.485A.0020.0002] # YI SYLLABLE CEX
+A2C2 ; [.485B.0020.0002] # YI SYLLABLE CE
+A2C3 ; [.485C.0020.0002] # YI SYLLABLE CEP
+A2C4 ; [.485D.0020.0002] # YI SYLLABLE CUT
+A2C5 ; [.485E.0020.0002] # YI SYLLABLE CUX
+A2C6 ; [.485F.0020.0002] # YI SYLLABLE CU
+A2C7 ; [.4860.0020.0002] # YI SYLLABLE CUP
+A2C8 ; [.4861.0020.0002] # YI SYLLABLE CURX
+A2C9 ; [.4862.0020.0002] # YI SYLLABLE CUR
+A2CA ; [.4863.0020.0002] # YI SYLLABLE CYT
+A2CB ; [.4864.0020.0002] # YI SYLLABLE CYX
+A2CC ; [.4865.0020.0002] # YI SYLLABLE CY
+A2CD ; [.4866.0020.0002] # YI SYLLABLE CYP
+A2CE ; [.4867.0020.0002] # YI SYLLABLE CYRX
+A2CF ; [.4868.0020.0002] # YI SYLLABLE CYR
+A2D0 ; [.4869.0020.0002] # YI SYLLABLE ZZIT
+A2D1 ; [.486A.0020.0002] # YI SYLLABLE ZZIX
+A2D2 ; [.486B.0020.0002] # YI SYLLABLE ZZI
+A2D3 ; [.486C.0020.0002] # YI SYLLABLE ZZIP
+A2D4 ; [.486D.0020.0002] # YI SYLLABLE ZZIET
+A2D5 ; [.486E.0020.0002] # YI SYLLABLE ZZIEX
+A2D6 ; [.486F.0020.0002] # YI SYLLABLE ZZIE
+A2D7 ; [.4870.0020.0002] # YI SYLLABLE ZZIEP
+A2D8 ; [.4871.0020.0002] # YI SYLLABLE ZZAT
+A2D9 ; [.4872.0020.0002] # YI SYLLABLE ZZAX
+A2DA ; [.4873.0020.0002] # YI SYLLABLE ZZA
+A2DB ; [.4874.0020.0002] # YI SYLLABLE ZZAP
+A2DC ; [.4875.0020.0002] # YI SYLLABLE ZZOX
+A2DD ; [.4876.0020.0002] # YI SYLLABLE ZZO
+A2DE ; [.4877.0020.0002] # YI SYLLABLE ZZOP
+A2DF ; [.4878.0020.0002] # YI SYLLABLE ZZEX
+A2E0 ; [.4879.0020.0002] # YI SYLLABLE ZZE
+A2E1 ; [.487A.0020.0002] # YI SYLLABLE ZZEP
+A2E2 ; [.487B.0020.0002] # YI SYLLABLE ZZUX
+A2E3 ; [.487C.0020.0002] # YI SYLLABLE ZZU
+A2E4 ; [.487D.0020.0002] # YI SYLLABLE ZZUP
+A2E5 ; [.487E.0020.0002] # YI SYLLABLE ZZURX
+A2E6 ; [.487F.0020.0002] # YI SYLLABLE ZZUR
+A2E7 ; [.4880.0020.0002] # YI SYLLABLE ZZYT
+A2E8 ; [.4881.0020.0002] # YI SYLLABLE ZZYX
+A2E9 ; [.4882.0020.0002] # YI SYLLABLE ZZY
+A2EA ; [.4883.0020.0002] # YI SYLLABLE ZZYP
+A2EB ; [.4884.0020.0002] # YI SYLLABLE ZZYRX
+A2EC ; [.4885.0020.0002] # YI SYLLABLE ZZYR
+A2ED ; [.4886.0020.0002] # YI SYLLABLE NZIT
+A2EE ; [.4887.0020.0002] # YI SYLLABLE NZIX
+A2EF ; [.4888.0020.0002] # YI SYLLABLE NZI
+A2F0 ; [.4889.0020.0002] # YI SYLLABLE NZIP
+A2F1 ; [.488A.0020.0002] # YI SYLLABLE NZIEX
+A2F2 ; [.488B.0020.0002] # YI SYLLABLE NZIE
+A2F3 ; [.488C.0020.0002] # YI SYLLABLE NZIEP
+A2F4 ; [.488D.0020.0002] # YI SYLLABLE NZAT
+A2F5 ; [.488E.0020.0002] # YI SYLLABLE NZAX
+A2F6 ; [.488F.0020.0002] # YI SYLLABLE NZA
+A2F7 ; [.4890.0020.0002] # YI SYLLABLE NZAP
+A2F8 ; [.4891.0020.0002] # YI SYLLABLE NZUOX
+A2F9 ; [.4892.0020.0002] # YI SYLLABLE NZUO
+A2FA ; [.4893.0020.0002] # YI SYLLABLE NZOX
+A2FB ; [.4894.0020.0002] # YI SYLLABLE NZOP
+A2FC ; [.4895.0020.0002] # YI SYLLABLE NZEX
+A2FD ; [.4896.0020.0002] # YI SYLLABLE NZE
+A2FE ; [.4897.0020.0002] # YI SYLLABLE NZUX
+A2FF ; [.4898.0020.0002] # YI SYLLABLE NZU
+A300 ; [.4899.0020.0002] # YI SYLLABLE NZUP
+A301 ; [.489A.0020.0002] # YI SYLLABLE NZURX
+A302 ; [.489B.0020.0002] # YI SYLLABLE NZUR
+A303 ; [.489C.0020.0002] # YI SYLLABLE NZYT
+A304 ; [.489D.0020.0002] # YI SYLLABLE NZYX
+A305 ; [.489E.0020.0002] # YI SYLLABLE NZY
+A306 ; [.489F.0020.0002] # YI SYLLABLE NZYP
+A307 ; [.48A0.0020.0002] # YI SYLLABLE NZYRX
+A308 ; [.48A1.0020.0002] # YI SYLLABLE NZYR
+A309 ; [.48A2.0020.0002] # YI SYLLABLE SIT
+A30A ; [.48A3.0020.0002] # YI SYLLABLE SIX
+A30B ; [.48A4.0020.0002] # YI SYLLABLE SI
+A30C ; [.48A5.0020.0002] # YI SYLLABLE SIP
+A30D ; [.48A6.0020.0002] # YI SYLLABLE SIEX
+A30E ; [.48A7.0020.0002] # YI SYLLABLE SIE
+A30F ; [.48A8.0020.0002] # YI SYLLABLE SIEP
+A310 ; [.48A9.0020.0002] # YI SYLLABLE SAT
+A311 ; [.48AA.0020.0002] # YI SYLLABLE SAX
+A312 ; [.48AB.0020.0002] # YI SYLLABLE SA
+A313 ; [.48AC.0020.0002] # YI SYLLABLE SAP
+A314 ; [.48AD.0020.0002] # YI SYLLABLE SUOX
+A315 ; [.48AE.0020.0002] # YI SYLLABLE SUO
+A316 ; [.48AF.0020.0002] # YI SYLLABLE SUOP
+A317 ; [.48B0.0020.0002] # YI SYLLABLE SOT
+A318 ; [.48B1.0020.0002] # YI SYLLABLE SOX
+A319 ; [.48B2.0020.0002] # YI SYLLABLE SO
+A31A ; [.48B3.0020.0002] # YI SYLLABLE SOP
+A31B ; [.48B4.0020.0002] # YI SYLLABLE SEX
+A31C ; [.48B5.0020.0002] # YI SYLLABLE SE
+A31D ; [.48B6.0020.0002] # YI SYLLABLE SEP
+A31E ; [.48B7.0020.0002] # YI SYLLABLE SUT
+A31F ; [.48B8.0020.0002] # YI SYLLABLE SUX
+A320 ; [.48B9.0020.0002] # YI SYLLABLE SU
+A321 ; [.48BA.0020.0002] # YI SYLLABLE SUP
+A322 ; [.48BB.0020.0002] # YI SYLLABLE SURX
+A323 ; [.48BC.0020.0002] # YI SYLLABLE SUR
+A324 ; [.48BD.0020.0002] # YI SYLLABLE SYT
+A325 ; [.48BE.0020.0002] # YI SYLLABLE SYX
+A326 ; [.48BF.0020.0002] # YI SYLLABLE SY
+A327 ; [.48C0.0020.0002] # YI SYLLABLE SYP
+A328 ; [.48C1.0020.0002] # YI SYLLABLE SYRX
+A329 ; [.48C2.0020.0002] # YI SYLLABLE SYR
+A32A ; [.48C3.0020.0002] # YI SYLLABLE SSIT
+A32B ; [.48C4.0020.0002] # YI SYLLABLE SSIX
+A32C ; [.48C5.0020.0002] # YI SYLLABLE SSI
+A32D ; [.48C6.0020.0002] # YI SYLLABLE SSIP
+A32E ; [.48C7.0020.0002] # YI SYLLABLE SSIEX
+A32F ; [.48C8.0020.0002] # YI SYLLABLE SSIE
+A330 ; [.48C9.0020.0002] # YI SYLLABLE SSIEP
+A331 ; [.48CA.0020.0002] # YI SYLLABLE SSAT
+A332 ; [.48CB.0020.0002] # YI SYLLABLE SSAX
+A333 ; [.48CC.0020.0002] # YI SYLLABLE SSA
+A334 ; [.48CD.0020.0002] # YI SYLLABLE SSAP
+A335 ; [.48CE.0020.0002] # YI SYLLABLE SSOT
+A336 ; [.48CF.0020.0002] # YI SYLLABLE SSOX
+A337 ; [.48D0.0020.0002] # YI SYLLABLE SSO
+A338 ; [.48D1.0020.0002] # YI SYLLABLE SSOP
+A339 ; [.48D2.0020.0002] # YI SYLLABLE SSEX
+A33A ; [.48D3.0020.0002] # YI SYLLABLE SSE
+A33B ; [.48D4.0020.0002] # YI SYLLABLE SSEP
+A33C ; [.48D5.0020.0002] # YI SYLLABLE SSUT
+A33D ; [.48D6.0020.0002] # YI SYLLABLE SSUX
+A33E ; [.48D7.0020.0002] # YI SYLLABLE SSU
+A33F ; [.48D8.0020.0002] # YI SYLLABLE SSUP
+A340 ; [.48D9.0020.0002] # YI SYLLABLE SSYT
+A341 ; [.48DA.0020.0002] # YI SYLLABLE SSYX
+A342 ; [.48DB.0020.0002] # YI SYLLABLE SSY
+A343 ; [.48DC.0020.0002] # YI SYLLABLE SSYP
+A344 ; [.48DD.0020.0002] # YI SYLLABLE SSYRX
+A345 ; [.48DE.0020.0002] # YI SYLLABLE SSYR
+A346 ; [.48DF.0020.0002] # YI SYLLABLE ZHAT
+A347 ; [.48E0.0020.0002] # YI SYLLABLE ZHAX
+A348 ; [.48E1.0020.0002] # YI SYLLABLE ZHA
+A349 ; [.48E2.0020.0002] # YI SYLLABLE ZHAP
+A34A ; [.48E3.0020.0002] # YI SYLLABLE ZHUOX
+A34B ; [.48E4.0020.0002] # YI SYLLABLE ZHUO
+A34C ; [.48E5.0020.0002] # YI SYLLABLE ZHUOP
+A34D ; [.48E6.0020.0002] # YI SYLLABLE ZHOT
+A34E ; [.48E7.0020.0002] # YI SYLLABLE ZHOX
+A34F ; [.48E8.0020.0002] # YI SYLLABLE ZHO
+A350 ; [.48E9.0020.0002] # YI SYLLABLE ZHOP
+A351 ; [.48EA.0020.0002] # YI SYLLABLE ZHET
+A352 ; [.48EB.0020.0002] # YI SYLLABLE ZHEX
+A353 ; [.48EC.0020.0002] # YI SYLLABLE ZHE
+A354 ; [.48ED.0020.0002] # YI SYLLABLE ZHEP
+A355 ; [.48EE.0020.0002] # YI SYLLABLE ZHUT
+A356 ; [.48EF.0020.0002] # YI SYLLABLE ZHUX
+A357 ; [.48F0.0020.0002] # YI SYLLABLE ZHU
+A358 ; [.48F1.0020.0002] # YI SYLLABLE ZHUP
+A359 ; [.48F2.0020.0002] # YI SYLLABLE ZHURX
+A35A ; [.48F3.0020.0002] # YI SYLLABLE ZHUR
+A35B ; [.48F4.0020.0002] # YI SYLLABLE ZHYT
+A35C ; [.48F5.0020.0002] # YI SYLLABLE ZHYX
+A35D ; [.48F6.0020.0002] # YI SYLLABLE ZHY
+A35E ; [.48F7.0020.0002] # YI SYLLABLE ZHYP
+A35F ; [.48F8.0020.0002] # YI SYLLABLE ZHYRX
+A360 ; [.48F9.0020.0002] # YI SYLLABLE ZHYR
+A361 ; [.48FA.0020.0002] # YI SYLLABLE CHAT
+A362 ; [.48FB.0020.0002] # YI SYLLABLE CHAX
+A363 ; [.48FC.0020.0002] # YI SYLLABLE CHA
+A364 ; [.48FD.0020.0002] # YI SYLLABLE CHAP
+A365 ; [.48FE.0020.0002] # YI SYLLABLE CHUOT
+A366 ; [.48FF.0020.0002] # YI SYLLABLE CHUOX
+A367 ; [.4900.0020.0002] # YI SYLLABLE CHUO
+A368 ; [.4901.0020.0002] # YI SYLLABLE CHUOP
+A369 ; [.4902.0020.0002] # YI SYLLABLE CHOT
+A36A ; [.4903.0020.0002] # YI SYLLABLE CHOX
+A36B ; [.4904.0020.0002] # YI SYLLABLE CHO
+A36C ; [.4905.0020.0002] # YI SYLLABLE CHOP
+A36D ; [.4906.0020.0002] # YI SYLLABLE CHET
+A36E ; [.4907.0020.0002] # YI SYLLABLE CHEX
+A36F ; [.4908.0020.0002] # YI SYLLABLE CHE
+A370 ; [.4909.0020.0002] # YI SYLLABLE CHEP
+A371 ; [.490A.0020.0002] # YI SYLLABLE CHUX
+A372 ; [.490B.0020.0002] # YI SYLLABLE CHU
+A373 ; [.490C.0020.0002] # YI SYLLABLE CHUP
+A374 ; [.490D.0020.0002] # YI SYLLABLE CHURX
+A375 ; [.490E.0020.0002] # YI SYLLABLE CHUR
+A376 ; [.490F.0020.0002] # YI SYLLABLE CHYT
+A377 ; [.4910.0020.0002] # YI SYLLABLE CHYX
+A378 ; [.4911.0020.0002] # YI SYLLABLE CHY
+A379 ; [.4912.0020.0002] # YI SYLLABLE CHYP
+A37A ; [.4913.0020.0002] # YI SYLLABLE CHYRX
+A37B ; [.4914.0020.0002] # YI SYLLABLE CHYR
+A37C ; [.4915.0020.0002] # YI SYLLABLE RRAX
+A37D ; [.4916.0020.0002] # YI SYLLABLE RRA
+A37E ; [.4917.0020.0002] # YI SYLLABLE RRUOX
+A37F ; [.4918.0020.0002] # YI SYLLABLE RRUO
+A380 ; [.4919.0020.0002] # YI SYLLABLE RROT
+A381 ; [.491A.0020.0002] # YI SYLLABLE RROX
+A382 ; [.491B.0020.0002] # YI SYLLABLE RRO
+A383 ; [.491C.0020.0002] # YI SYLLABLE RROP
+A384 ; [.491D.0020.0002] # YI SYLLABLE RRET
+A385 ; [.491E.0020.0002] # YI SYLLABLE RREX
+A386 ; [.491F.0020.0002] # YI SYLLABLE RRE
+A387 ; [.4920.0020.0002] # YI SYLLABLE RREP
+A388 ; [.4921.0020.0002] # YI SYLLABLE RRUT
+A389 ; [.4922.0020.0002] # YI SYLLABLE RRUX
+A38A ; [.4923.0020.0002] # YI SYLLABLE RRU
+A38B ; [.4924.0020.0002] # YI SYLLABLE RRUP
+A38C ; [.4925.0020.0002] # YI SYLLABLE RRURX
+A38D ; [.4926.0020.0002] # YI SYLLABLE RRUR
+A38E ; [.4927.0020.0002] # YI SYLLABLE RRYT
+A38F ; [.4928.0020.0002] # YI SYLLABLE RRYX
+A390 ; [.4929.0020.0002] # YI SYLLABLE RRY
+A391 ; [.492A.0020.0002] # YI SYLLABLE RRYP
+A392 ; [.492B.0020.0002] # YI SYLLABLE RRYRX
+A393 ; [.492C.0020.0002] # YI SYLLABLE RRYR
+A394 ; [.492D.0020.0002] # YI SYLLABLE NRAT
+A395 ; [.492E.0020.0002] # YI SYLLABLE NRAX
+A396 ; [.492F.0020.0002] # YI SYLLABLE NRA
+A397 ; [.4930.0020.0002] # YI SYLLABLE NRAP
+A398 ; [.4931.0020.0002] # YI SYLLABLE NROX
+A399 ; [.4932.0020.0002] # YI SYLLABLE NRO
+A39A ; [.4933.0020.0002] # YI SYLLABLE NROP
+A39B ; [.4934.0020.0002] # YI SYLLABLE NRET
+A39C ; [.4935.0020.0002] # YI SYLLABLE NREX
+A39D ; [.4936.0020.0002] # YI SYLLABLE NRE
+A39E ; [.4937.0020.0002] # YI SYLLABLE NREP
+A39F ; [.4938.0020.0002] # YI SYLLABLE NRUT
+A3A0 ; [.4939.0020.0002] # YI SYLLABLE NRUX
+A3A1 ; [.493A.0020.0002] # YI SYLLABLE NRU
+A3A2 ; [.493B.0020.0002] # YI SYLLABLE NRUP
+A3A3 ; [.493C.0020.0002] # YI SYLLABLE NRURX
+A3A4 ; [.493D.0020.0002] # YI SYLLABLE NRUR
+A3A5 ; [.493E.0020.0002] # YI SYLLABLE NRYT
+A3A6 ; [.493F.0020.0002] # YI SYLLABLE NRYX
+A3A7 ; [.4940.0020.0002] # YI SYLLABLE NRY
+A3A8 ; [.4941.0020.0002] # YI SYLLABLE NRYP
+A3A9 ; [.4942.0020.0002] # YI SYLLABLE NRYRX
+A3AA ; [.4943.0020.0002] # YI SYLLABLE NRYR
+A3AB ; [.4944.0020.0002] # YI SYLLABLE SHAT
+A3AC ; [.4945.0020.0002] # YI SYLLABLE SHAX
+A3AD ; [.4946.0020.0002] # YI SYLLABLE SHA
+A3AE ; [.4947.0020.0002] # YI SYLLABLE SHAP
+A3AF ; [.4948.0020.0002] # YI SYLLABLE SHUOX
+A3B0 ; [.4949.0020.0002] # YI SYLLABLE SHUO
+A3B1 ; [.494A.0020.0002] # YI SYLLABLE SHUOP
+A3B2 ; [.494B.0020.0002] # YI SYLLABLE SHOT
+A3B3 ; [.494C.0020.0002] # YI SYLLABLE SHOX
+A3B4 ; [.494D.0020.0002] # YI SYLLABLE SHO
+A3B5 ; [.494E.0020.0002] # YI SYLLABLE SHOP
+A3B6 ; [.494F.0020.0002] # YI SYLLABLE SHET
+A3B7 ; [.4950.0020.0002] # YI SYLLABLE SHEX
+A3B8 ; [.4951.0020.0002] # YI SYLLABLE SHE
+A3B9 ; [.4952.0020.0002] # YI SYLLABLE SHEP
+A3BA ; [.4953.0020.0002] # YI SYLLABLE SHUT
+A3BB ; [.4954.0020.0002] # YI SYLLABLE SHUX
+A3BC ; [.4955.0020.0002] # YI SYLLABLE SHU
+A3BD ; [.4956.0020.0002] # YI SYLLABLE SHUP
+A3BE ; [.4957.0020.0002] # YI SYLLABLE SHURX
+A3BF ; [.4958.0020.0002] # YI SYLLABLE SHUR
+A3C0 ; [.4959.0020.0002] # YI SYLLABLE SHYT
+A3C1 ; [.495A.0020.0002] # YI SYLLABLE SHYX
+A3C2 ; [.495B.0020.0002] # YI SYLLABLE SHY
+A3C3 ; [.495C.0020.0002] # YI SYLLABLE SHYP
+A3C4 ; [.495D.0020.0002] # YI SYLLABLE SHYRX
+A3C5 ; [.495E.0020.0002] # YI SYLLABLE SHYR
+A3C6 ; [.495F.0020.0002] # YI SYLLABLE RAT
+A3C7 ; [.4960.0020.0002] # YI SYLLABLE RAX
+A3C8 ; [.4961.0020.0002] # YI SYLLABLE RA
+A3C9 ; [.4962.0020.0002] # YI SYLLABLE RAP
+A3CA ; [.4963.0020.0002] # YI SYLLABLE RUOX
+A3CB ; [.4964.0020.0002] # YI SYLLABLE RUO
+A3CC ; [.4965.0020.0002] # YI SYLLABLE RUOP
+A3CD ; [.4966.0020.0002] # YI SYLLABLE ROT
+A3CE ; [.4967.0020.0002] # YI SYLLABLE ROX
+A3CF ; [.4968.0020.0002] # YI SYLLABLE RO
+A3D0 ; [.4969.0020.0002] # YI SYLLABLE ROP
+A3D1 ; [.496A.0020.0002] # YI SYLLABLE REX
+A3D2 ; [.496B.0020.0002] # YI SYLLABLE RE
+A3D3 ; [.496C.0020.0002] # YI SYLLABLE REP
+A3D4 ; [.496D.0020.0002] # YI SYLLABLE RUT
+A3D5 ; [.496E.0020.0002] # YI SYLLABLE RUX
+A3D6 ; [.496F.0020.0002] # YI SYLLABLE RU
+A3D7 ; [.4970.0020.0002] # YI SYLLABLE RUP
+A3D8 ; [.4971.0020.0002] # YI SYLLABLE RURX
+A3D9 ; [.4972.0020.0002] # YI SYLLABLE RUR
+A3DA ; [.4973.0020.0002] # YI SYLLABLE RYT
+A3DB ; [.4974.0020.0002] # YI SYLLABLE RYX
+A3DC ; [.4975.0020.0002] # YI SYLLABLE RY
+A3DD ; [.4976.0020.0002] # YI SYLLABLE RYP
+A3DE ; [.4977.0020.0002] # YI SYLLABLE RYRX
+A3DF ; [.4978.0020.0002] # YI SYLLABLE RYR
+A3E0 ; [.4979.0020.0002] # YI SYLLABLE JIT
+A3E1 ; [.497A.0020.0002] # YI SYLLABLE JIX
+A3E2 ; [.497B.0020.0002] # YI SYLLABLE JI
+A3E3 ; [.497C.0020.0002] # YI SYLLABLE JIP
+A3E4 ; [.497D.0020.0002] # YI SYLLABLE JIET
+A3E5 ; [.497E.0020.0002] # YI SYLLABLE JIEX
+A3E6 ; [.497F.0020.0002] # YI SYLLABLE JIE
+A3E7 ; [.4980.0020.0002] # YI SYLLABLE JIEP
+A3E8 ; [.4981.0020.0002] # YI SYLLABLE JUOT
+A3E9 ; [.4982.0020.0002] # YI SYLLABLE JUOX
+A3EA ; [.4983.0020.0002] # YI SYLLABLE JUO
+A3EB ; [.4984.0020.0002] # YI SYLLABLE JUOP
+A3EC ; [.4985.0020.0002] # YI SYLLABLE JOT
+A3ED ; [.4986.0020.0002] # YI SYLLABLE JOX
+A3EE ; [.4987.0020.0002] # YI SYLLABLE JO
+A3EF ; [.4988.0020.0002] # YI SYLLABLE JOP
+A3F0 ; [.4989.0020.0002] # YI SYLLABLE JUT
+A3F1 ; [.498A.0020.0002] # YI SYLLABLE JUX
+A3F2 ; [.498B.0020.0002] # YI SYLLABLE JU
+A3F3 ; [.498C.0020.0002] # YI SYLLABLE JUP
+A3F4 ; [.498D.0020.0002] # YI SYLLABLE JURX
+A3F5 ; [.498E.0020.0002] # YI SYLLABLE JUR
+A3F6 ; [.498F.0020.0002] # YI SYLLABLE JYT
+A3F7 ; [.4990.0020.0002] # YI SYLLABLE JYX
+A3F8 ; [.4991.0020.0002] # YI SYLLABLE JY
+A3F9 ; [.4992.0020.0002] # YI SYLLABLE JYP
+A3FA ; [.4993.0020.0002] # YI SYLLABLE JYRX
+A3FB ; [.4994.0020.0002] # YI SYLLABLE JYR
+A3FC ; [.4995.0020.0002] # YI SYLLABLE QIT
+A3FD ; [.4996.0020.0002] # YI SYLLABLE QIX
+A3FE ; [.4997.0020.0002] # YI SYLLABLE QI
+A3FF ; [.4998.0020.0002] # YI SYLLABLE QIP
+A400 ; [.4999.0020.0002] # YI SYLLABLE QIET
+A401 ; [.499A.0020.0002] # YI SYLLABLE QIEX
+A402 ; [.499B.0020.0002] # YI SYLLABLE QIE
+A403 ; [.499C.0020.0002] # YI SYLLABLE QIEP
+A404 ; [.499D.0020.0002] # YI SYLLABLE QUOT
+A405 ; [.499E.0020.0002] # YI SYLLABLE QUOX
+A406 ; [.499F.0020.0002] # YI SYLLABLE QUO
+A407 ; [.49A0.0020.0002] # YI SYLLABLE QUOP
+A408 ; [.49A1.0020.0002] # YI SYLLABLE QOT
+A409 ; [.49A2.0020.0002] # YI SYLLABLE QOX
+A40A ; [.49A3.0020.0002] # YI SYLLABLE QO
+A40B ; [.49A4.0020.0002] # YI SYLLABLE QOP
+A40C ; [.49A5.0020.0002] # YI SYLLABLE QUT
+A40D ; [.49A6.0020.0002] # YI SYLLABLE QUX
+A40E ; [.49A7.0020.0002] # YI SYLLABLE QU
+A40F ; [.49A8.0020.0002] # YI SYLLABLE QUP
+A410 ; [.49A9.0020.0002] # YI SYLLABLE QURX
+A411 ; [.49AA.0020.0002] # YI SYLLABLE QUR
+A412 ; [.49AB.0020.0002] # YI SYLLABLE QYT
+A413 ; [.49AC.0020.0002] # YI SYLLABLE QYX
+A414 ; [.49AD.0020.0002] # YI SYLLABLE QY
+A415 ; [.49AE.0020.0002] # YI SYLLABLE QYP
+A416 ; [.49AF.0020.0002] # YI SYLLABLE QYRX
+A417 ; [.49B0.0020.0002] # YI SYLLABLE QYR
+A418 ; [.49B1.0020.0002] # YI SYLLABLE JJIT
+A419 ; [.49B2.0020.0002] # YI SYLLABLE JJIX
+A41A ; [.49B3.0020.0002] # YI SYLLABLE JJI
+A41B ; [.49B4.0020.0002] # YI SYLLABLE JJIP
+A41C ; [.49B5.0020.0002] # YI SYLLABLE JJIET
+A41D ; [.49B6.0020.0002] # YI SYLLABLE JJIEX
+A41E ; [.49B7.0020.0002] # YI SYLLABLE JJIE
+A41F ; [.49B8.0020.0002] # YI SYLLABLE JJIEP
+A420 ; [.49B9.0020.0002] # YI SYLLABLE JJUOX
+A421 ; [.49BA.0020.0002] # YI SYLLABLE JJUO
+A422 ; [.49BB.0020.0002] # YI SYLLABLE JJUOP
+A423 ; [.49BC.0020.0002] # YI SYLLABLE JJOT
+A424 ; [.49BD.0020.0002] # YI SYLLABLE JJOX
+A425 ; [.49BE.0020.0002] # YI SYLLABLE JJO
+A426 ; [.49BF.0020.0002] # YI SYLLABLE JJOP
+A427 ; [.49C0.0020.0002] # YI SYLLABLE JJUT
+A428 ; [.49C1.0020.0002] # YI SYLLABLE JJUX
+A429 ; [.49C2.0020.0002] # YI SYLLABLE JJU
+A42A ; [.49C3.0020.0002] # YI SYLLABLE JJUP
+A42B ; [.49C4.0020.0002] # YI SYLLABLE JJURX
+A42C ; [.49C5.0020.0002] # YI SYLLABLE JJUR
+A42D ; [.49C6.0020.0002] # YI SYLLABLE JJYT
+A42E ; [.49C7.0020.0002] # YI SYLLABLE JJYX
+A42F ; [.49C8.0020.0002] # YI SYLLABLE JJY
+A430 ; [.49C9.0020.0002] # YI SYLLABLE JJYP
+A431 ; [.49CA.0020.0002] # YI SYLLABLE NJIT
+A432 ; [.49CB.0020.0002] # YI SYLLABLE NJIX
+A433 ; [.49CC.0020.0002] # YI SYLLABLE NJI
+A434 ; [.49CD.0020.0002] # YI SYLLABLE NJIP
+A435 ; [.49CE.0020.0002] # YI SYLLABLE NJIET
+A436 ; [.49CF.0020.0002] # YI SYLLABLE NJIEX
+A437 ; [.49D0.0020.0002] # YI SYLLABLE NJIE
+A438 ; [.49D1.0020.0002] # YI SYLLABLE NJIEP
+A439 ; [.49D2.0020.0002] # YI SYLLABLE NJUOX
+A43A ; [.49D3.0020.0002] # YI SYLLABLE NJUO
+A43B ; [.49D4.0020.0002] # YI SYLLABLE NJOT
+A43C ; [.49D5.0020.0002] # YI SYLLABLE NJOX
+A43D ; [.49D6.0020.0002] # YI SYLLABLE NJO
+A43E ; [.49D7.0020.0002] # YI SYLLABLE NJOP
+A43F ; [.49D8.0020.0002] # YI SYLLABLE NJUX
+A440 ; [.49D9.0020.0002] # YI SYLLABLE NJU
+A441 ; [.49DA.0020.0002] # YI SYLLABLE NJUP
+A442 ; [.49DB.0020.0002] # YI SYLLABLE NJURX
+A443 ; [.49DC.0020.0002] # YI SYLLABLE NJUR
+A444 ; [.49DD.0020.0002] # YI SYLLABLE NJYT
+A445 ; [.49DE.0020.0002] # YI SYLLABLE NJYX
+A446 ; [.49DF.0020.0002] # YI SYLLABLE NJY
+A447 ; [.49E0.0020.0002] # YI SYLLABLE NJYP
+A448 ; [.49E1.0020.0002] # YI SYLLABLE NJYRX
+A449 ; [.49E2.0020.0002] # YI SYLLABLE NJYR
+A44A ; [.49E3.0020.0002] # YI SYLLABLE NYIT
+A44B ; [.49E4.0020.0002] # YI SYLLABLE NYIX
+A44C ; [.49E5.0020.0002] # YI SYLLABLE NYI
+A44D ; [.49E6.0020.0002] # YI SYLLABLE NYIP
+A44E ; [.49E7.0020.0002] # YI SYLLABLE NYIET
+A44F ; [.49E8.0020.0002] # YI SYLLABLE NYIEX
+A450 ; [.49E9.0020.0002] # YI SYLLABLE NYIE
+A451 ; [.49EA.0020.0002] # YI SYLLABLE NYIEP
+A452 ; [.49EB.0020.0002] # YI SYLLABLE NYUOX
+A453 ; [.49EC.0020.0002] # YI SYLLABLE NYUO
+A454 ; [.49ED.0020.0002] # YI SYLLABLE NYUOP
+A455 ; [.49EE.0020.0002] # YI SYLLABLE NYOT
+A456 ; [.49EF.0020.0002] # YI SYLLABLE NYOX
+A457 ; [.49F0.0020.0002] # YI SYLLABLE NYO
+A458 ; [.49F1.0020.0002] # YI SYLLABLE NYOP
+A459 ; [.49F2.0020.0002] # YI SYLLABLE NYUT
+A45A ; [.49F3.0020.0002] # YI SYLLABLE NYUX
+A45B ; [.49F4.0020.0002] # YI SYLLABLE NYU
+A45C ; [.49F5.0020.0002] # YI SYLLABLE NYUP
+A45D ; [.49F6.0020.0002] # YI SYLLABLE XIT
+A45E ; [.49F7.0020.0002] # YI SYLLABLE XIX
+A45F ; [.49F8.0020.0002] # YI SYLLABLE XI
+A460 ; [.49F9.0020.0002] # YI SYLLABLE XIP
+A461 ; [.49FA.0020.0002] # YI SYLLABLE XIET
+A462 ; [.49FB.0020.0002] # YI SYLLABLE XIEX
+A463 ; [.49FC.0020.0002] # YI SYLLABLE XIE
+A464 ; [.49FD.0020.0002] # YI SYLLABLE XIEP
+A465 ; [.49FE.0020.0002] # YI SYLLABLE XUOX
+A466 ; [.49FF.0020.0002] # YI SYLLABLE XUO
+A467 ; [.4A00.0020.0002] # YI SYLLABLE XOT
+A468 ; [.4A01.0020.0002] # YI SYLLABLE XOX
+A469 ; [.4A02.0020.0002] # YI SYLLABLE XO
+A46A ; [.4A03.0020.0002] # YI SYLLABLE XOP
+A46B ; [.4A04.0020.0002] # YI SYLLABLE XYT
+A46C ; [.4A05.0020.0002] # YI SYLLABLE XYX
+A46D ; [.4A06.0020.0002] # YI SYLLABLE XY
+A46E ; [.4A07.0020.0002] # YI SYLLABLE XYP
+A46F ; [.4A08.0020.0002] # YI SYLLABLE XYRX
+A470 ; [.4A09.0020.0002] # YI SYLLABLE XYR
+A471 ; [.4A0A.0020.0002] # YI SYLLABLE YIT
+A472 ; [.4A0B.0020.0002] # YI SYLLABLE YIX
+A473 ; [.4A0C.0020.0002] # YI SYLLABLE YI
+A474 ; [.4A0D.0020.0002] # YI SYLLABLE YIP
+A475 ; [.4A0E.0020.0002] # YI SYLLABLE YIET
+A476 ; [.4A0F.0020.0002] # YI SYLLABLE YIEX
+A477 ; [.4A10.0020.0002] # YI SYLLABLE YIE
+A478 ; [.4A11.0020.0002] # YI SYLLABLE YIEP
+A479 ; [.4A12.0020.0002] # YI SYLLABLE YUOT
+A47A ; [.4A13.0020.0002] # YI SYLLABLE YUOX
+A47B ; [.4A14.0020.0002] # YI SYLLABLE YUO
+A47C ; [.4A15.0020.0002] # YI SYLLABLE YUOP
+A47D ; [.4A16.0020.0002] # YI SYLLABLE YOT
+A47E ; [.4A17.0020.0002] # YI SYLLABLE YOX
+A47F ; [.4A18.0020.0002] # YI SYLLABLE YO
+A480 ; [.4A19.0020.0002] # YI SYLLABLE YOP
+A481 ; [.4A1A.0020.0002] # YI SYLLABLE YUT
+A482 ; [.4A1B.0020.0002] # YI SYLLABLE YUX
+A483 ; [.4A1C.0020.0002] # YI SYLLABLE YU
+A484 ; [.4A1D.0020.0002] # YI SYLLABLE YUP
+A485 ; [.4A1E.0020.0002] # YI SYLLABLE YURX
+A486 ; [.4A1F.0020.0002] # YI SYLLABLE YUR
+A487 ; [.4A20.0020.0002] # YI SYLLABLE YYT
+A488 ; [.4A21.0020.0002] # YI SYLLABLE YYX
+A489 ; [.4A22.0020.0002] # YI SYLLABLE YY
+A48A ; [.4A23.0020.0002] # YI SYLLABLE YYP
+A48B ; [.4A24.0020.0002] # YI SYLLABLE YYRX
+A48C ; [.4A25.0020.0002] # YI SYLLABLE YYR
+A4F8 ; [.4A26.0020.0002] # LISU LETTER TONE MYA TI
+A4F9 ; [.4A27.0020.0002] # LISU LETTER TONE NA PO
+A4FA ; [.4A28.0020.0002] # LISU LETTER TONE MYA CYA
+A4FB ; [.4A29.0020.0002] # LISU LETTER TONE MYA BO
+A4FD ; [.4A2A.0020.0002] # LISU LETTER TONE MYA JEU
+A4FC ; [.4A2B.0020.0002] # LISU LETTER TONE MYA NA
+A4D0 ; [.4A2C.0020.0002] # LISU LETTER BA
+A4D1 ; [.4A2D.0020.0002] # LISU LETTER PA
+A4D2 ; [.4A2E.0020.0002] # LISU LETTER PHA
+A4D3 ; [.4A2F.0020.0002] # LISU LETTER DA
+A4D4 ; [.4A30.0020.0002] # LISU LETTER TA
+A4D5 ; [.4A31.0020.0002] # LISU LETTER THA
+A4D6 ; [.4A32.0020.0002] # LISU LETTER GA
+A4D7 ; [.4A33.0020.0002] # LISU LETTER KA
+A4D8 ; [.4A34.0020.0002] # LISU LETTER KHA
+A4D9 ; [.4A35.0020.0002] # LISU LETTER JA
+A4DA ; [.4A36.0020.0002] # LISU LETTER CA
+A4DB ; [.4A37.0020.0002] # LISU LETTER CHA
+A4DC ; [.4A38.0020.0002] # LISU LETTER DZA
+A4DD ; [.4A39.0020.0002] # LISU LETTER TSA
+A4DE ; [.4A3A.0020.0002] # LISU LETTER TSHA
+A4DF ; [.4A3B.0020.0002] # LISU LETTER MA
+A4E0 ; [.4A3C.0020.0002] # LISU LETTER NA
+A4E1 ; [.4A3D.0020.0002] # LISU LETTER LA
+A4E2 ; [.4A3E.0020.0002] # LISU LETTER SA
+A4E3 ; [.4A3F.0020.0002] # LISU LETTER ZHA
+A4E4 ; [.4A40.0020.0002] # LISU LETTER ZA
+A4E5 ; [.4A41.0020.0002] # LISU LETTER NGA
+A4E6 ; [.4A42.0020.0002] # LISU LETTER HA
+A4E7 ; [.4A43.0020.0002] # LISU LETTER XA
+A4E8 ; [.4A44.0020.0002] # LISU LETTER HHA
+A4E9 ; [.4A45.0020.0002] # LISU LETTER FA
+A4EB ; [.4A46.0020.0002] # LISU LETTER SHA
+A4ED ; [.4A47.0020.0002] # LISU LETTER GHA
+A4EA ; [.4A48.0020.0002] # LISU LETTER WA
+A4EC ; [.4A49.0020.0002] # LISU LETTER YA
+11FB0 ; [.4A4A.0020.0002] # LISU LETTER YHA
+A4EE ; [.4A4B.0020.0002] # LISU LETTER A
+A4EF ; [.4A4C.0020.0002] # LISU LETTER AE
+A4F0 ; [.4A4D.0020.0002] # LISU LETTER E
+A4F1 ; [.4A4E.0020.0002] # LISU LETTER EU
+A4F2 ; [.4A4F.0020.0002] # LISU LETTER I
+A4F3 ; [.4A50.0020.0002] # LISU LETTER O
+A4F4 ; [.4A51.0020.0002] # LISU LETTER U
+A4F5 ; [.4A52.0020.0002] # LISU LETTER UE
+A4F6 ; [.4A53.0020.0002] # LISU LETTER UH
+A4F7 ; [.4A54.0020.0002] # LISU LETTER OE
+16F00 ; [.4A55.0020.0002] # MIAO LETTER PA
+16F01 ; [.4A56.0020.0002] # MIAO LETTER BA
+16F02 ; [.4A57.0020.0002] # MIAO LETTER YI PA
+16F03 ; [.4A58.0020.0002] # MIAO LETTER PLA
+16F45 ; [.4A59.0020.0002] # MIAO LETTER BRI
+16F04 ; [.4A5A.0020.0002] # MIAO LETTER MA
+16F06 ; [.4A5A.0020.0004] # MIAO LETTER ARCHAIC MA
+16F05 ; [.4A5B.0020.0002] # MIAO LETTER MHA
+16F07 ; [.4A5C.0020.0002] # MIAO LETTER FA
+16F08 ; [.4A5D.0020.0002] # MIAO LETTER VA
+16F09 ; [.4A5E.0020.0002] # MIAO LETTER VFA
+16F0A ; [.4A5F.0020.0002] # MIAO LETTER TA
+16F0B ; [.4A60.0020.0002] # MIAO LETTER DA
+16F0C ; [.4A61.0020.0002] # MIAO LETTER YI TTA
+16F0D ; [.4A62.0020.0002] # MIAO LETTER YI TA
+16F48 ; [.4A63.0020.0002] # MIAO LETTER TE
+16F0E ; [.4A64.0020.0002] # MIAO LETTER TTA
+16F0F ; [.4A65.0020.0002] # MIAO LETTER DDA
+16F4A ; [.4A66.0020.0002] # MIAO LETTER RTE
+16F10 ; [.4A67.0020.0002] # MIAO LETTER NA
+16F13 ; [.4A67.0020.0004] # MIAO LETTER ARCHAIC NA
+16F11 ; [.4A68.0020.0002] # MIAO LETTER NHA
+16F12 ; [.4A69.0020.0002] # MIAO LETTER YI NNA
+16F14 ; [.4A6A.0020.0002] # MIAO LETTER NNA
+16F15 ; [.4A6B.0020.0002] # MIAO LETTER NNHA
+16F16 ; [.4A6C.0020.0002] # MIAO LETTER LA
+16F17 ; [.4A6D.0020.0002] # MIAO LETTER LYA
+16F18 ; [.4A6E.0020.0002] # MIAO LETTER LHA
+16F19 ; [.4A6F.0020.0002] # MIAO LETTER LHYA
+16F1A ; [.4A70.0020.0002] # MIAO LETTER TLHA
+16F1B ; [.4A71.0020.0002] # MIAO LETTER DLHA
+16F1C ; [.4A72.0020.0002] # MIAO LETTER TLHYA
+16F1D ; [.4A73.0020.0002] # MIAO LETTER DLHYA
+16F1E ; [.4A74.0020.0002] # MIAO LETTER KA
+16F1F ; [.4A75.0020.0002] # MIAO LETTER GA
+16F20 ; [.4A76.0020.0002] # MIAO LETTER YI KA
+16F21 ; [.4A77.0020.0002] # MIAO LETTER QA
+16F22 ; [.4A78.0020.0002] # MIAO LETTER QGA
+16F23 ; [.4A79.0020.0002] # MIAO LETTER NGA
+16F25 ; [.4A79.0020.0004] # MIAO LETTER ARCHAIC NGA
+16F24 ; [.4A7A.0020.0002] # MIAO LETTER NGHA
+16F26 ; [.4A7B.0020.0002] # MIAO LETTER HA
+16F27 ; [.4A7C.0020.0002] # MIAO LETTER XA
+16F28 ; [.4A7D.0020.0002] # MIAO LETTER GHA
+16F29 ; [.4A7E.0020.0002] # MIAO LETTER GHHA
+16F2A ; [.4A7F.0020.0002] # MIAO LETTER TSSA
+16F2B ; [.4A80.0020.0002] # MIAO LETTER DZZA
+16F2C ; [.4A81.0020.0002] # MIAO LETTER NYA
+16F2D ; [.4A82.0020.0002] # MIAO LETTER NYHA
+16F2E ; [.4A83.0020.0002] # MIAO LETTER TSHA
+16F2F ; [.4A84.0020.0002] # MIAO LETTER DZHA
+16F30 ; [.4A85.0020.0002] # MIAO LETTER YI TSHA
+16F31 ; [.4A86.0020.0002] # MIAO LETTER YI DZHA
+16F32 ; [.4A87.0020.0002] # MIAO LETTER REFORMED TSHA
+16F47 ; [.4A88.0020.0002] # MIAO LETTER DZYI
+16F33 ; [.4A89.0020.0002] # MIAO LETTER SHA
+16F46 ; [.4A8A.0020.0002] # MIAO LETTER SYI
+16F34 ; [.4A8B.0020.0002] # MIAO LETTER SSA
+16F35 ; [.4A8C.0020.0002] # MIAO LETTER ZHA
+16F36 ; [.4A8D.0020.0002] # MIAO LETTER ZSHA
+16F37 ; [.4A8E.0020.0002] # MIAO LETTER TSA
+16F38 ; [.4A8F.0020.0002] # MIAO LETTER DZA
+16F39 ; [.4A90.0020.0002] # MIAO LETTER YI TSA
+16F49 ; [.4A91.0020.0002] # MIAO LETTER TSE
+16F3A ; [.4A92.0020.0002] # MIAO LETTER SA
+16F3B ; [.4A93.0020.0002] # MIAO LETTER ZA
+16F3C ; [.4A94.0020.0002] # MIAO LETTER ZSA
+16F3D ; [.4A95.0020.0002] # MIAO LETTER ZZA
+16F3F ; [.4A95.0020.0004] # MIAO LETTER ARCHAIC ZZA
+16F3E ; [.4A96.0020.0002] # MIAO LETTER ZZSA
+16F40 ; [.4A97.0020.0002] # MIAO LETTER ZZYA
+16F41 ; [.4A98.0020.0002] # MIAO LETTER ZZSYA
+16F42 ; [.4A99.0020.0002] # MIAO LETTER WA
+16F43 ; [.4A9A.0020.0002] # MIAO LETTER AH
+16F44 ; [.4A9B.0020.0002] # MIAO LETTER HHA
+16F50 ; [.4A9C.0020.0002] # MIAO LETTER NASALIZATION
+16F51 ; [.4A9D.0020.0002] # MIAO SIGN ASPIRATION
+16F52 ; [.4A9E.0020.0002] # MIAO SIGN REFORMED VOICING
+16F53 ; [.4A9F.0020.0002] # MIAO SIGN REFORMED ASPIRATION
+16F4F ; [.4AA0.0020.0002] # MIAO SIGN CONSONANT MODIFIER BAR
+16F54 ; [.4AA1.0020.0002] # MIAO VOWEL SIGN A
+16F55 ; [.4AA2.0020.0002] # MIAO VOWEL SIGN AA
+16F56 ; [.4AA3.0020.0002] # MIAO VOWEL SIGN AHH
+16F57 ; [.4AA4.0020.0002] # MIAO VOWEL SIGN AN
+16F58 ; [.4AA5.0020.0002] # MIAO VOWEL SIGN ANG
+16F81 ; [.4AA6.0020.0002] # MIAO VOWEL SIGN OG
+16F59 ; [.4AA7.0020.0002] # MIAO VOWEL SIGN O
+16F5A ; [.4AA8.0020.0002] # MIAO VOWEL SIGN OO
+16F5B ; [.4AA9.0020.0002] # MIAO VOWEL SIGN WO
+16F5C ; [.4AAA.0020.0002] # MIAO VOWEL SIGN W
+16F83 ; [.4AAB.0020.0002] # MIAO VOWEL SIGN VW
+16F5D ; [.4AAC.0020.0002] # MIAO VOWEL SIGN E
+16F5E ; [.4AAD.0020.0002] # MIAO VOWEL SIGN EN
+16F5F ; [.4AAE.0020.0002] # MIAO VOWEL SIGN ENG
+16F60 ; [.4AAF.0020.0002] # MIAO VOWEL SIGN OEY
+16F84 ; [.4AB0.0020.0002] # MIAO VOWEL SIGN IG
+16F61 ; [.4AB1.0020.0002] # MIAO VOWEL SIGN I
+16F62 ; [.4AB2.0020.0002] # MIAO VOWEL SIGN IA
+16F63 ; [.4AB3.0020.0002] # MIAO VOWEL SIGN IAN
+16F64 ; [.4AB4.0020.0002] # MIAO VOWEL SIGN IANG
+16F65 ; [.4AB5.0020.0002] # MIAO VOWEL SIGN IO
+16F86 ; [.4AB6.0020.0002] # MIAO VOWEL SIGN IONG
+16F66 ; [.4AB7.0020.0002] # MIAO VOWEL SIGN IE
+16F67 ; [.4AB8.0020.0002] # MIAO VOWEL SIGN II
+16F68 ; [.4AB9.0020.0002] # MIAO VOWEL SIGN IU
+16F69 ; [.4ABA.0020.0002] # MIAO VOWEL SIGN ING
+16F6A ; [.4ABB.0020.0002] # MIAO VOWEL SIGN U
+16F6B ; [.4ABC.0020.0002] # MIAO VOWEL SIGN UA
+16F6C ; [.4ABD.0020.0002] # MIAO VOWEL SIGN UAN
+16F6D ; [.4ABE.0020.0002] # MIAO VOWEL SIGN UANG
+16F7F ; [.4ABF.0020.0002] # MIAO VOWEL SIGN UOG
+16F87 ; [.4AC0.0020.0002] # MIAO VOWEL SIGN UI
+16F6E ; [.4AC1.0020.0002] # MIAO VOWEL SIGN UU
+16F6F ; [.4AC2.0020.0002] # MIAO VOWEL SIGN UEI
+16F70 ; [.4AC3.0020.0002] # MIAO VOWEL SIGN UNG
+16F71 ; [.4AC4.0020.0002] # MIAO VOWEL SIGN Y
+16F72 ; [.4AC5.0020.0002] # MIAO VOWEL SIGN YI
+16F80 ; [.4AC6.0020.0002] # MIAO VOWEL SIGN YUI
+16F73 ; [.4AC7.0020.0002] # MIAO VOWEL SIGN AE
+16F74 ; [.4AC8.0020.0002] # MIAO VOWEL SIGN AEE
+16F85 ; [.4AC9.0020.0002] # MIAO VOWEL SIGN EA
+16F82 ; [.4ACA.0020.0002] # MIAO VOWEL SIGN OER
+16F75 ; [.4ACB.0020.0002] # MIAO VOWEL SIGN ERR
+16F76 ; [.4ACC.0020.0002] # MIAO VOWEL SIGN ROUNDED ERR
+16F77 ; [.4ACD.0020.0002] # MIAO VOWEL SIGN ER
+16F78 ; [.4ACE.0020.0002] # MIAO VOWEL SIGN ROUNDED ER
+16F79 ; [.4ACF.0020.0002] # MIAO VOWEL SIGN AI
+16F7A ; [.4AD0.0020.0002] # MIAO VOWEL SIGN EI
+16F7B ; [.4AD1.0020.0002] # MIAO VOWEL SIGN AU
+16F7C ; [.4AD2.0020.0002] # MIAO VOWEL SIGN OU
+16F7D ; [.4AD3.0020.0002] # MIAO VOWEL SIGN N
+16F7E ; [.4AD4.0020.0002] # MIAO VOWEL SIGN NG
+16F8F ; [.4AD5.0020.0002] # MIAO TONE RIGHT
+16F90 ; [.4AD6.0020.0002] # MIAO TONE TOP RIGHT
+16F91 ; [.4AD7.0020.0002] # MIAO TONE ABOVE
+16F92 ; [.4AD8.0020.0002] # MIAO TONE BELOW
+16F93 ; [.4AD9.0020.0002] # MIAO LETTER TONE-2
+16F94 ; [.4ADA.0020.0002] # MIAO LETTER TONE-3
+16F95 ; [.4ADB.0020.0002] # MIAO LETTER TONE-4
+16F96 ; [.4ADC.0020.0002] # MIAO LETTER TONE-5
+16F97 ; [.4ADD.0020.0002] # MIAO LETTER TONE-6
+16F98 ; [.4ADE.0020.0002] # MIAO LETTER TONE-7
+16F99 ; [.4ADF.0020.0002] # MIAO LETTER TONE-8
+16F9A ; [.4AE0.0020.0002] # MIAO LETTER REFORMED TONE-1
+16F9B ; [.4AE1.0020.0002] # MIAO LETTER REFORMED TONE-2
+16F9C ; [.4AE2.0020.0002] # MIAO LETTER REFORMED TONE-4
+16F9D ; [.4AE3.0020.0002] # MIAO LETTER REFORMED TONE-5
+16F9E ; [.4AE4.0020.0002] # MIAO LETTER REFORMED TONE-6
+16F9F ; [.4AE5.0020.0002] # MIAO LETTER REFORMED TONE-8
+118FF ; [.4AE6.0020.0002] # WARANG CITI OM
+118C0 ; [.4AE7.0020.0002] # WARANG CITI SMALL LETTER NGAA
+118A0 ; [.4AE7.0020.0008] # WARANG CITI CAPITAL LETTER NGAA
+118C1 ; [.4AE8.0020.0002] # WARANG CITI SMALL LETTER A
+118A1 ; [.4AE8.0020.0008] # WARANG CITI CAPITAL LETTER A
+118C2 ; [.4AE9.0020.0002] # WARANG CITI SMALL LETTER WI
+118A2 ; [.4AE9.0020.0008] # WARANG CITI CAPITAL LETTER WI
+118C3 ; [.4AEA.0020.0002] # WARANG CITI SMALL LETTER YU
+118A3 ; [.4AEA.0020.0008] # WARANG CITI CAPITAL LETTER YU
+118C4 ; [.4AEB.0020.0002] # WARANG CITI SMALL LETTER YA
+118A4 ; [.4AEB.0020.0008] # WARANG CITI CAPITAL LETTER YA
+118C5 ; [.4AEC.0020.0002] # WARANG CITI SMALL LETTER YO
+118A5 ; [.4AEC.0020.0008] # WARANG CITI CAPITAL LETTER YO
+118C6 ; [.4AED.0020.0002] # WARANG CITI SMALL LETTER II
+118A6 ; [.4AED.0020.0008] # WARANG CITI CAPITAL LETTER II
+118C7 ; [.4AEE.0020.0002] # WARANG CITI SMALL LETTER UU
+118A7 ; [.4AEE.0020.0008] # WARANG CITI CAPITAL LETTER UU
+118C8 ; [.4AEF.0020.0002] # WARANG CITI SMALL LETTER E
+118A8 ; [.4AEF.0020.0008] # WARANG CITI CAPITAL LETTER E
+118C9 ; [.4AF0.0020.0002] # WARANG CITI SMALL LETTER O
+118A9 ; [.4AF0.0020.0008] # WARANG CITI CAPITAL LETTER O
+118CA ; [.4AF1.0020.0002] # WARANG CITI SMALL LETTER ANG
+118AA ; [.4AF1.0020.0008] # WARANG CITI CAPITAL LETTER ANG
+118CB ; [.4AF2.0020.0002] # WARANG CITI SMALL LETTER GA
+118AB ; [.4AF2.0020.0008] # WARANG CITI CAPITAL LETTER GA
+118CC ; [.4AF3.0020.0002] # WARANG CITI SMALL LETTER KO
+118AC ; [.4AF3.0020.0008] # WARANG CITI CAPITAL LETTER KO
+118CD ; [.4AF4.0020.0002] # WARANG CITI SMALL LETTER ENY
+118AD ; [.4AF4.0020.0008] # WARANG CITI CAPITAL LETTER ENY
+118CE ; [.4AF5.0020.0002] # WARANG CITI SMALL LETTER YUJ
+118AE ; [.4AF5.0020.0008] # WARANG CITI CAPITAL LETTER YUJ
+118CF ; [.4AF6.0020.0002] # WARANG CITI SMALL LETTER UC
+118AF ; [.4AF6.0020.0008] # WARANG CITI CAPITAL LETTER UC
+118D0 ; [.4AF7.0020.0002] # WARANG CITI SMALL LETTER ENN
+118B0 ; [.4AF7.0020.0008] # WARANG CITI CAPITAL LETTER ENN
+118D1 ; [.4AF8.0020.0002] # WARANG CITI SMALL LETTER ODD
+118B1 ; [.4AF8.0020.0008] # WARANG CITI CAPITAL LETTER ODD
+118D2 ; [.4AF9.0020.0002] # WARANG CITI SMALL LETTER TTE
+118B2 ; [.4AF9.0020.0008] # WARANG CITI CAPITAL LETTER TTE
+118D3 ; [.4AFA.0020.0002] # WARANG CITI SMALL LETTER NUNG
+118B3 ; [.4AFA.0020.0008] # WARANG CITI CAPITAL LETTER NUNG
+118D4 ; [.4AFB.0020.0002] # WARANG CITI SMALL LETTER DA
+118B4 ; [.4AFB.0020.0008] # WARANG CITI CAPITAL LETTER DA
+118D5 ; [.4AFC.0020.0002] # WARANG CITI SMALL LETTER AT
+118B5 ; [.4AFC.0020.0008] # WARANG CITI CAPITAL LETTER AT
+118D6 ; [.4AFD.0020.0002] # WARANG CITI SMALL LETTER AM
+118B6 ; [.4AFD.0020.0008] # WARANG CITI CAPITAL LETTER AM
+118D7 ; [.4AFE.0020.0002] # WARANG CITI SMALL LETTER BU
+118B7 ; [.4AFE.0020.0008] # WARANG CITI CAPITAL LETTER BU
+118D8 ; [.4AFF.0020.0002] # WARANG CITI SMALL LETTER PU
+118B8 ; [.4AFF.0020.0008] # WARANG CITI CAPITAL LETTER PU
+118D9 ; [.4B00.0020.0002] # WARANG CITI SMALL LETTER HIYO
+118B9 ; [.4B00.0020.0008] # WARANG CITI CAPITAL LETTER HIYO
+118DA ; [.4B01.0020.0002] # WARANG CITI SMALL LETTER HOLO
+118BA ; [.4B01.0020.0008] # WARANG CITI CAPITAL LETTER HOLO
+118DB ; [.4B02.0020.0002] # WARANG CITI SMALL LETTER HORR
+118BB ; [.4B02.0020.0008] # WARANG CITI CAPITAL LETTER HORR
+118DC ; [.4B03.0020.0002] # WARANG CITI SMALL LETTER HAR
+118BC ; [.4B03.0020.0008] # WARANG CITI CAPITAL LETTER HAR
+118DD ; [.4B04.0020.0002] # WARANG CITI SMALL LETTER SSUU
+118BD ; [.4B04.0020.0008] # WARANG CITI CAPITAL LETTER SSUU
+118DE ; [.4B05.0020.0002] # WARANG CITI SMALL LETTER SII
+118BE ; [.4B05.0020.0008] # WARANG CITI CAPITAL LETTER SII
+118DF ; [.4B06.0020.0002] # WARANG CITI SMALL LETTER VIYO
+118BF ; [.4B06.0020.0008] # WARANG CITI CAPITAL LETTER VIYO
+11AD5 ; [.4B07.0020.0002] # PAU CIN HAU LETTER A
+11AD6 ; [.4B08.0020.0002] # PAU CIN HAU LETTER E
+11AD7 ; [.4B09.0020.0002] # PAU CIN HAU LETTER I
+11AD8 ; [.4B0A.0020.0002] # PAU CIN HAU LETTER O
+11AD9 ; [.4B0B.0020.0002] # PAU CIN HAU LETTER U
+11ADA ; [.4B0C.0020.0002] # PAU CIN HAU LETTER UA
+11ADB ; [.4B0D.0020.0002] # PAU CIN HAU LETTER IA
+11AC0 ; [.4B0E.0020.0002] # PAU CIN HAU LETTER PA
+11AC1 ; [.4B0F.0020.0002] # PAU CIN HAU LETTER KA
+11AC2 ; [.4B10.0020.0002] # PAU CIN HAU LETTER LA
+11AC3 ; [.4B11.0020.0002] # PAU CIN HAU LETTER MA
+11AC4 ; [.4B12.0020.0002] # PAU CIN HAU LETTER DA
+11AC5 ; [.4B13.0020.0002] # PAU CIN HAU LETTER ZA
+11AC6 ; [.4B14.0020.0002] # PAU CIN HAU LETTER VA
+11AC7 ; [.4B15.0020.0002] # PAU CIN HAU LETTER NGA
+11AC8 ; [.4B16.0020.0002] # PAU CIN HAU LETTER HA
+11AC9 ; [.4B17.0020.0002] # PAU CIN HAU LETTER GA
+11ACA ; [.4B18.0020.0002] # PAU CIN HAU LETTER KHA
+11ACB ; [.4B19.0020.0002] # PAU CIN HAU LETTER SA
+11ACC ; [.4B1A.0020.0002] # PAU CIN HAU LETTER BA
+11ACD ; [.4B1B.0020.0002] # PAU CIN HAU LETTER CA
+11ACE ; [.4B1C.0020.0002] # PAU CIN HAU LETTER TA
+11ACF ; [.4B1D.0020.0002] # PAU CIN HAU LETTER THA
+11AD0 ; [.4B1E.0020.0002] # PAU CIN HAU LETTER NA
+11AD1 ; [.4B1F.0020.0002] # PAU CIN HAU LETTER PHA
+11AD2 ; [.4B20.0020.0002] # PAU CIN HAU LETTER RA
+11AD3 ; [.4B21.0020.0002] # PAU CIN HAU LETTER FA
+11AD4 ; [.4B22.0020.0002] # PAU CIN HAU LETTER CHA
+11ADC ; [.4B23.0020.0002] # PAU CIN HAU LETTER FINAL P
+11ADD ; [.4B24.0020.0002] # PAU CIN HAU LETTER FINAL K
+11ADF ; [.4B25.0020.0002] # PAU CIN HAU LETTER FINAL M
+11AE0 ; [.4B26.0020.0002] # PAU CIN HAU LETTER FINAL N
+11AE1 ; [.4B27.0020.0002] # PAU CIN HAU LETTER FINAL L
+11AE2 ; [.4B28.0020.0002] # PAU CIN HAU LETTER FINAL W
+11AE3 ; [.4B29.0020.0002] # PAU CIN HAU LETTER FINAL NG
+11ADE ; [.4B2A.0020.0002] # PAU CIN HAU LETTER FINAL T
+11AE4 ; [.4B2B.0020.0002] # PAU CIN HAU LETTER FINAL Y
+11AEF ; [.4B2C.0020.0002] # PAU CIN HAU MID-LEVEL TONE
+11AF2 ; [.4B2D.0020.0002] # PAU CIN HAU MID-LEVEL TONE FINAL
+11AF1 ; [.4B2E.0020.0002] # PAU CIN HAU MID-LEVEL TONE LONG FINAL
+11AE6 ; [.4B2F.0020.0002] # PAU CIN HAU RISING TONE
+11AE9 ; [.4B30.0020.0002] # PAU CIN HAU RISING TONE FINAL
+11AE5 ; [.4B31.0020.0002] # PAU CIN HAU RISING TONE LONG
+11AE8 ; [.4B32.0020.0002] # PAU CIN HAU RISING TONE LONG FINAL
+11AF4 ; [.4B33.0020.0002] # PAU CIN HAU LOW-FALLING TONE
+11AF7 ; [.4B34.0020.0002] # PAU CIN HAU LOW-FALLING TONE FINAL
+11AF3 ; [.4B35.0020.0002] # PAU CIN HAU LOW-FALLING TONE LONG
+11AF6 ; [.4B36.0020.0002] # PAU CIN HAU LOW-FALLING TONE LONG FINAL
+11AEC ; [.4B37.0020.0002] # PAU CIN HAU SANDHI TONE
+11AEE ; [.4B38.0020.0002] # PAU CIN HAU SANDHI TONE FINAL
+11AEB ; [.4B39.0020.0002] # PAU CIN HAU SANDHI TONE LONG
+11AED ; [.4B3A.0020.0002] # PAU CIN HAU SANDHI TONE LONG FINAL
+11AF5 ; [.4B3B.0020.0002] # PAU CIN HAU GLOTTAL STOP
+11AF8 ; [.4B3C.0020.0002] # PAU CIN HAU GLOTTAL STOP FINAL
+11AE7 ; [.4B3D.0020.0002] # PAU CIN HAU SANDHI GLOTTAL STOP
+11AEA ; [.4B3E.0020.0002] # PAU CIN HAU SANDHI GLOTTAL STOP FINAL
+11AF0 ; [.4B3F.0020.0002] # PAU CIN HAU GLOTTAL STOP VARIANT
+16B00 ; [.4B40.0020.0002] # PAHAWH HMONG VOWEL KEEB
+16B01 ; [.4B41.0020.0002] # PAHAWH HMONG VOWEL KEEV
+16B02 ; [.4B42.0020.0002] # PAHAWH HMONG VOWEL KIB
+16B03 ; [.4B43.0020.0002] # PAHAWH HMONG VOWEL KIV
+16B04 ; [.4B44.0020.0002] # PAHAWH HMONG VOWEL KAUB
+16B05 ; [.4B45.0020.0002] # PAHAWH HMONG VOWEL KAUV
+16B06 ; [.4B46.0020.0002] # PAHAWH HMONG VOWEL KUB
+16B07 ; [.4B47.0020.0002] # PAHAWH HMONG VOWEL KUV
+16B08 ; [.4B48.0020.0002] # PAHAWH HMONG VOWEL KEB
+16B09 ; [.4B49.0020.0002] # PAHAWH HMONG VOWEL KEV
+16B0A ; [.4B4A.0020.0002] # PAHAWH HMONG VOWEL KAIB
+16B0B ; [.4B4B.0020.0002] # PAHAWH HMONG VOWEL KAIV
+16B0C ; [.4B4C.0020.0002] # PAHAWH HMONG VOWEL KOOB
+16B0D ; [.4B4D.0020.0002] # PAHAWH HMONG VOWEL KOOV
+16B0E ; [.4B4E.0020.0002] # PAHAWH HMONG VOWEL KAWB
+16B0F ; [.4B4F.0020.0002] # PAHAWH HMONG VOWEL KAWV
+16B10 ; [.4B50.0020.0002] # PAHAWH HMONG VOWEL KUAB
+16B11 ; [.4B51.0020.0002] # PAHAWH HMONG VOWEL KUAV
+16B12 ; [.4B52.0020.0002] # PAHAWH HMONG VOWEL KOB
+16B13 ; [.4B53.0020.0002] # PAHAWH HMONG VOWEL KOV
+16B14 ; [.4B54.0020.0002] # PAHAWH HMONG VOWEL KIAB
+16B15 ; [.4B55.0020.0002] # PAHAWH HMONG VOWEL KIAV
+16B16 ; [.4B56.0020.0002] # PAHAWH HMONG VOWEL KAB
+16B17 ; [.4B57.0020.0002] # PAHAWH HMONG VOWEL KAV
+16B18 ; [.4B58.0020.0002] # PAHAWH HMONG VOWEL KWB
+16B19 ; [.4B59.0020.0002] # PAHAWH HMONG VOWEL KWV
+16B1A ; [.4B5A.0020.0002] # PAHAWH HMONG VOWEL KAAB
+16B1B ; [.4B5B.0020.0002] # PAHAWH HMONG VOWEL KAAV
+16B1C ; [.4B5C.0020.0002] # PAHAWH HMONG CONSONANT VAU
+16B1D ; [.4B5D.0020.0002] # PAHAWH HMONG CONSONANT NTSAU
+16B1E ; [.4B5E.0020.0002] # PAHAWH HMONG CONSONANT LAU
+16B1F ; [.4B5F.0020.0002] # PAHAWH HMONG CONSONANT HAU
+16B20 ; [.4B60.0020.0002] # PAHAWH HMONG CONSONANT NLAU
+16B21 ; [.4B61.0020.0002] # PAHAWH HMONG CONSONANT RAU
+16B22 ; [.4B62.0020.0002] # PAHAWH HMONG CONSONANT NKAU
+16B23 ; [.4B63.0020.0002] # PAHAWH HMONG CONSONANT QHAU
+16B24 ; [.4B64.0020.0002] # PAHAWH HMONG CONSONANT YAU
+16B25 ; [.4B65.0020.0002] # PAHAWH HMONG CONSONANT HLAU
+16B26 ; [.4B66.0020.0002] # PAHAWH HMONG CONSONANT MAU
+16B27 ; [.4B67.0020.0002] # PAHAWH HMONG CONSONANT CHAU
+16B28 ; [.4B68.0020.0002] # PAHAWH HMONG CONSONANT NCHAU
+16B29 ; [.4B69.0020.0002] # PAHAWH HMONG CONSONANT HNAU
+16B2A ; [.4B6A.0020.0002] # PAHAWH HMONG CONSONANT PLHAU
+16B2B ; [.4B6B.0020.0002] # PAHAWH HMONG CONSONANT NTHAU
+16B2C ; [.4B6C.0020.0002] # PAHAWH HMONG CONSONANT NAU
+16B2D ; [.4B6D.0020.0002] # PAHAWH HMONG CONSONANT AU
+16B2E ; [.4B6E.0020.0002] # PAHAWH HMONG CONSONANT XAU
+16B2F ; [.4B6F.0020.0002] # PAHAWH HMONG CONSONANT CAU
+16B40 ; [.4B70.0020.0002] # PAHAWH HMONG SIGN VOS SEEV
+16B41 ; [.4B71.0020.0002] # PAHAWH HMONG SIGN MEEJ SUAB
+16B63 ; [.4B72.0020.0002] # PAHAWH HMONG SIGN VOS LUB
+16B64 ; [.4B73.0020.0002] # PAHAWH HMONG SIGN XYOO
+16B65 ; [.4B74.0020.0002] # PAHAWH HMONG SIGN HLI
+16B66 ; [.4B75.0020.0002] # PAHAWH HMONG SIGN THIRD-STAGE HLI
+16B67 ; [.4B76.0020.0002] # PAHAWH HMONG SIGN ZWJ THAJ
+16B68 ; [.4B77.0020.0002] # PAHAWH HMONG SIGN HNUB
+16B69 ; [.4B78.0020.0002] # PAHAWH HMONG SIGN NQIG
+16B6A ; [.4B79.0020.0002] # PAHAWH HMONG SIGN XIAB
+16B6B ; [.4B7A.0020.0002] # PAHAWH HMONG SIGN NTUJ
+16B6C ; [.4B7B.0020.0002] # PAHAWH HMONG SIGN AV
+16B6D ; [.4B7C.0020.0002] # PAHAWH HMONG SIGN TXHEEJ CEEV
+16B6E ; [.4B7D.0020.0002] # PAHAWH HMONG SIGN MEEJ TSEEB
+16B6F ; [.4B7E.0020.0002] # PAHAWH HMONG SIGN TAU
+16B70 ; [.4B7F.0020.0002] # PAHAWH HMONG SIGN LOS
+16B71 ; [.4B80.0020.0002] # PAHAWH HMONG SIGN MUS
+16B72 ; [.4B81.0020.0002] # PAHAWH HMONG SIGN CIM HAIS LUS NTOG NTOG
+16B73 ; [.4B82.0020.0002] # PAHAWH HMONG SIGN CIM CUAM TSHOOJ
+16B74 ; [.4B83.0020.0002] # PAHAWH HMONG SIGN CIM TXWV
+16B75 ; [.4B84.0020.0002] # PAHAWH HMONG SIGN CIM TXWV CHWV
+16B76 ; [.4B85.0020.0002] # PAHAWH HMONG SIGN CIM PUB DAWB
+16B77 ; [.4B86.0020.0002] # PAHAWH HMONG SIGN CIM NRES TOS
+16B7D ; [.4B87.0020.0002] # PAHAWH HMONG CLAN SIGN TSHEEJ
+16B7E ; [.4B88.0020.0002] # PAHAWH HMONG CLAN SIGN YEEG
+16B7F ; [.4B89.0020.0002] # PAHAWH HMONG CLAN SIGN LIS
+16B80 ; [.4B8A.0020.0002] # PAHAWH HMONG CLAN SIGN LAUJ
+16B81 ; [.4B8B.0020.0002] # PAHAWH HMONG CLAN SIGN XYOOJ
+16B82 ; [.4B8C.0020.0002] # PAHAWH HMONG CLAN SIGN KOO
+16B83 ; [.4B8D.0020.0002] # PAHAWH HMONG CLAN SIGN HAWJ
+16B84 ; [.4B8E.0020.0002] # PAHAWH HMONG CLAN SIGN MUAS
+16B85 ; [.4B8F.0020.0002] # PAHAWH HMONG CLAN SIGN THOJ
+16B86 ; [.4B90.0020.0002] # PAHAWH HMONG CLAN SIGN TSAB
+16B87 ; [.4B91.0020.0002] # PAHAWH HMONG CLAN SIGN PHAB
+16B88 ; [.4B92.0020.0002] # PAHAWH HMONG CLAN SIGN KHAB
+16B89 ; [.4B93.0020.0002] # PAHAWH HMONG CLAN SIGN HAM
+16B8A ; [.4B94.0020.0002] # PAHAWH HMONG CLAN SIGN VAJ
+16B8B ; [.4B95.0020.0002] # PAHAWH HMONG CLAN SIGN FAJ
+16B8C ; [.4B96.0020.0002] # PAHAWH HMONG CLAN SIGN YAJ
+16B8D ; [.4B97.0020.0002] # PAHAWH HMONG CLAN SIGN TSWB
+16B8E ; [.4B98.0020.0002] # PAHAWH HMONG CLAN SIGN KWM
+16B8F ; [.4B99.0020.0002] # PAHAWH HMONG CLAN SIGN VWJ
+1E100 ; [.4B9A.0020.0002] # NYIAKENG PUACHUE HMONG LETTER MA
+1E101 ; [.4B9B.0020.0002] # NYIAKENG PUACHUE HMONG LETTER TSA
+1E102 ; [.4B9C.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NTA
+1E103 ; [.4B9D.0020.0002] # NYIAKENG PUACHUE HMONG LETTER TA
+1E104 ; [.4B9E.0020.0002] # NYIAKENG PUACHUE HMONG LETTER HA
+1E105 ; [.4B9F.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NA
+1E106 ; [.4BA0.0020.0002] # NYIAKENG PUACHUE HMONG LETTER XA
+1E107 ; [.4BA1.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NKA
+1E108 ; [.4BA2.0020.0002] # NYIAKENG PUACHUE HMONG LETTER CA
+1E109 ; [.4BA3.0020.0002] # NYIAKENG PUACHUE HMONG LETTER LA
+1E10A ; [.4BA4.0020.0002] # NYIAKENG PUACHUE HMONG LETTER SA
+1E10B ; [.4BA5.0020.0002] # NYIAKENG PUACHUE HMONG LETTER ZA
+1E10C ; [.4BA6.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NCA
+1E10D ; [.4BA7.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NTSA
+1E10E ; [.4BA8.0020.0002] # NYIAKENG PUACHUE HMONG LETTER KA
+1E10F ; [.4BA9.0020.0002] # NYIAKENG PUACHUE HMONG LETTER DA
+1E110 ; [.4BAA.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NYA
+1E111 ; [.4BAB.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NRA
+1E112 ; [.4BAC.0020.0002] # NYIAKENG PUACHUE HMONG LETTER VA
+1E113 ; [.4BAD.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NTXA
+1E114 ; [.4BAE.0020.0002] # NYIAKENG PUACHUE HMONG LETTER TXA
+1E115 ; [.4BAF.0020.0002] # NYIAKENG PUACHUE HMONG LETTER FA
+1E116 ; [.4BB0.0020.0002] # NYIAKENG PUACHUE HMONG LETTER RA
+1E117 ; [.4BB1.0020.0002] # NYIAKENG PUACHUE HMONG LETTER QA
+1E118 ; [.4BB2.0020.0002] # NYIAKENG PUACHUE HMONG LETTER YA
+1E119 ; [.4BB3.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NQA
+1E11A ; [.4BB4.0020.0002] # NYIAKENG PUACHUE HMONG LETTER PA
+1E11B ; [.4BB5.0020.0002] # NYIAKENG PUACHUE HMONG LETTER XYA
+1E11C ; [.4BB6.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NPA
+1E11D ; [.4BB7.0020.0002] # NYIAKENG PUACHUE HMONG LETTER DLA
+1E11E ; [.4BB8.0020.0002] # NYIAKENG PUACHUE HMONG LETTER NPLA
+1E11F ; [.4BB9.0020.0002] # NYIAKENG PUACHUE HMONG LETTER HAH
+1E120 ; [.4BBA.0020.0002] # NYIAKENG PUACHUE HMONG LETTER MLA
+1E121 ; [.4BBB.0020.0002] # NYIAKENG PUACHUE HMONG LETTER PLA
+1E122 ; [.4BBC.0020.0002] # NYIAKENG PUACHUE HMONG LETTER GA
+1E123 ; [.4BBD.0020.0002] # NYIAKENG PUACHUE HMONG LETTER RRA
+1E124 ; [.4BBE.0020.0002] # NYIAKENG PUACHUE HMONG LETTER A
+1E125 ; [.4BBF.0020.0002] # NYIAKENG PUACHUE HMONG LETTER AA
+1E126 ; [.4BC0.0020.0002] # NYIAKENG PUACHUE HMONG LETTER I
+1E127 ; [.4BC1.0020.0002] # NYIAKENG PUACHUE HMONG LETTER U
+1E128 ; [.4BC2.0020.0002] # NYIAKENG PUACHUE HMONG LETTER O
+1E129 ; [.4BC3.0020.0002] # NYIAKENG PUACHUE HMONG LETTER OO
+1E12A ; [.4BC4.0020.0002] # NYIAKENG PUACHUE HMONG LETTER E
+1E12B ; [.4BC5.0020.0002] # NYIAKENG PUACHUE HMONG LETTER EE
+1E12C ; [.4BC6.0020.0002] # NYIAKENG PUACHUE HMONG LETTER W
+1E137 ; [.4BC7.0020.0002] # NYIAKENG PUACHUE HMONG SIGN FOR PERSON
+1E138 ; [.4BC8.0020.0002] # NYIAKENG PUACHUE HMONG SIGN FOR THING
+1E139 ; [.4BC9.0020.0002] # NYIAKENG PUACHUE HMONG SIGN FOR LOCATION
+1E13A ; [.4BCA.0020.0002] # NYIAKENG PUACHUE HMONG SIGN FOR ANIMAL
+1E13B ; [.4BCB.0020.0002] # NYIAKENG PUACHUE HMONG SIGN FOR INVERTEBRATE
+1E14E ; [.4BCC.0020.0002] # NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
+1E290 ; [.4BCD.0020.0002] # TOTO LETTER PA
+1E291 ; [.4BCE.0020.0002] # TOTO LETTER BA
+1E292 ; [.4BCF.0020.0002] # TOTO LETTER TA
+1E293 ; [.4BD0.0020.0002] # TOTO LETTER DA
+1E294 ; [.4BD1.0020.0002] # TOTO LETTER KA
+1E295 ; [.4BD2.0020.0002] # TOTO LETTER GA
+1E296 ; [.4BD3.0020.0002] # TOTO LETTER MA
+1E297 ; [.4BD4.0020.0002] # TOTO LETTER NA
+1E298 ; [.4BD5.0020.0002] # TOTO LETTER NGA
+1E299 ; [.4BD6.0020.0002] # TOTO LETTER SA
+1E29A ; [.4BD7.0020.0002] # TOTO LETTER CHA
+1E29B ; [.4BD8.0020.0002] # TOTO LETTER YA
+1E29C ; [.4BD9.0020.0002] # TOTO LETTER WA
+1E29D ; [.4BDA.0020.0002] # TOTO LETTER JA
+1E29E ; [.4BDB.0020.0002] # TOTO LETTER HA
+1E29F ; [.4BDC.0020.0002] # TOTO LETTER RA
+1E2A0 ; [.4BDD.0020.0002] # TOTO LETTER LA
+1E2A1 ; [.4BDE.0020.0002] # TOTO LETTER I
+1E2A2 ; [.4BDF.0020.0002] # TOTO LETTER BREATHY I
+1E2A3 ; [.4BE0.0020.0002] # TOTO LETTER IU
+1E2A4 ; [.4BE1.0020.0002] # TOTO LETTER BREATHY IU
+1E2A5 ; [.4BE2.0020.0002] # TOTO LETTER U
+1E2A6 ; [.4BE3.0020.0002] # TOTO LETTER E
+1E2A7 ; [.4BE4.0020.0002] # TOTO LETTER BREATHY E
+1E2A8 ; [.4BE5.0020.0002] # TOTO LETTER EO
+1E2A9 ; [.4BE6.0020.0002] # TOTO LETTER BREATHY EO
+1E2AA ; [.4BE7.0020.0002] # TOTO LETTER O
+1E2AB ; [.4BE8.0020.0002] # TOTO LETTER AE
+1E2AC ; [.4BE9.0020.0002] # TOTO LETTER BREATHY AE
+1E2AD ; [.4BEA.0020.0002] # TOTO LETTER A
+1E2C0 ; [.4BEB.0020.0002] # WANCHO LETTER AA
+1E2C1 ; [.4BEC.0020.0002] # WANCHO LETTER A
+1E2C2 ; [.4BED.0020.0002] # WANCHO LETTER BA
+1E2C3 ; [.4BEE.0020.0002] # WANCHO LETTER CA
+1E2C4 ; [.4BEF.0020.0002] # WANCHO LETTER DA
+1E2C5 ; [.4BF0.0020.0002] # WANCHO LETTER GA
+1E2C6 ; [.4BF1.0020.0002] # WANCHO LETTER YA
+1E2C7 ; [.4BF2.0020.0002] # WANCHO LETTER PHA
+1E2C8 ; [.4BF3.0020.0002] # WANCHO LETTER LA
+1E2C9 ; [.4BF4.0020.0002] # WANCHO LETTER NA
+1E2CA ; [.4BF5.0020.0002] # WANCHO LETTER PA
+1E2CB ; [.4BF6.0020.0002] # WANCHO LETTER TA
+1E2CC ; [.4BF7.0020.0002] # WANCHO LETTER THA
+1E2CD ; [.4BF8.0020.0002] # WANCHO LETTER FA
+1E2CE ; [.4BF9.0020.0002] # WANCHO LETTER SA
+1E2CF ; [.4BFA.0020.0002] # WANCHO LETTER SHA
+1E2D0 ; [.4BFB.0020.0002] # WANCHO LETTER JA
+1E2D1 ; [.4BFC.0020.0002] # WANCHO LETTER ZA
+1E2D2 ; [.4BFD.0020.0002] # WANCHO LETTER WA
+1E2D3 ; [.4BFE.0020.0002] # WANCHO LETTER VA
+1E2D4 ; [.4BFF.0020.0002] # WANCHO LETTER KA
+1E2D5 ; [.4C00.0020.0002] # WANCHO LETTER O
+1E2D6 ; [.4C01.0020.0002] # WANCHO LETTER AU
+1E2D7 ; [.4C02.0020.0002] # WANCHO LETTER RA
+1E2D8 ; [.4C03.0020.0002] # WANCHO LETTER MA
+1E2D9 ; [.4C04.0020.0002] # WANCHO LETTER KHA
+1E2DA ; [.4C05.0020.0002] # WANCHO LETTER HA
+1E2DB ; [.4C06.0020.0002] # WANCHO LETTER E
+1E2DC ; [.4C07.0020.0002] # WANCHO LETTER I
+1E2DD ; [.4C08.0020.0002] # WANCHO LETTER NGA
+1E2DE ; [.4C09.0020.0002] # WANCHO LETTER U
+1E2DF ; [.4C0A.0020.0002] # WANCHO LETTER LLHA
+1E2E0 ; [.4C0B.0020.0002] # WANCHO LETTER TSA
+1E2E1 ; [.4C0C.0020.0002] # WANCHO LETTER TRA
+1E2E2 ; [.4C0D.0020.0002] # WANCHO LETTER ONG
+1E2E3 ; [.4C0E.0020.0002] # WANCHO LETTER AANG
+1E2E4 ; [.4C0F.0020.0002] # WANCHO LETTER ANG
+1E2E5 ; [.4C10.0020.0002] # WANCHO LETTER ING
+1E2E6 ; [.4C11.0020.0002] # WANCHO LETTER ON
+1E2E7 ; [.4C12.0020.0002] # WANCHO LETTER EN
+1E2E8 ; [.4C13.0020.0002] # WANCHO LETTER AAN
+1E2E9 ; [.4C14.0020.0002] # WANCHO LETTER NYA
+1E2EA ; [.4C15.0020.0002] # WANCHO LETTER UEN
+1E2EB ; [.4C16.0020.0002] # WANCHO LETTER YIH
+10280 ; [.4C17.0020.0002] # LYCIAN LETTER A
+10281 ; [.4C18.0020.0002] # LYCIAN LETTER E
+10282 ; [.4C19.0020.0002] # LYCIAN LETTER B
+10283 ; [.4C1A.0020.0002] # LYCIAN LETTER BH
+10284 ; [.4C1B.0020.0002] # LYCIAN LETTER G
+10285 ; [.4C1C.0020.0002] # LYCIAN LETTER D
+10286 ; [.4C1D.0020.0002] # LYCIAN LETTER I
+10287 ; [.4C1E.0020.0002] # LYCIAN LETTER W
+10288 ; [.4C1F.0020.0002] # LYCIAN LETTER Z
+10289 ; [.4C20.0020.0002] # LYCIAN LETTER TH
+1028A ; [.4C21.0020.0002] # LYCIAN LETTER J
+1028B ; [.4C22.0020.0002] # LYCIAN LETTER K
+1028C ; [.4C23.0020.0002] # LYCIAN LETTER Q
+1028D ; [.4C24.0020.0002] # LYCIAN LETTER L
+1028E ; [.4C25.0020.0002] # LYCIAN LETTER M
+1028F ; [.4C26.0020.0002] # LYCIAN LETTER N
+10290 ; [.4C27.0020.0002] # LYCIAN LETTER MM
+10291 ; [.4C28.0020.0002] # LYCIAN LETTER NN
+10292 ; [.4C29.0020.0002] # LYCIAN LETTER U
+10293 ; [.4C2A.0020.0002] # LYCIAN LETTER P
+10294 ; [.4C2B.0020.0002] # LYCIAN LETTER KK
+10295 ; [.4C2C.0020.0002] # LYCIAN LETTER R
+10296 ; [.4C2D.0020.0002] # LYCIAN LETTER S
+10297 ; [.4C2E.0020.0002] # LYCIAN LETTER T
+10298 ; [.4C2F.0020.0002] # LYCIAN LETTER TT
+10299 ; [.4C30.0020.0002] # LYCIAN LETTER AN
+1029A ; [.4C31.0020.0002] # LYCIAN LETTER EN
+1029B ; [.4C32.0020.0002] # LYCIAN LETTER H
+1029C ; [.4C33.0020.0002] # LYCIAN LETTER X
+102A0 ; [.4C34.0020.0002] # CARIAN LETTER A
+102A1 ; [.4C35.0020.0002] # CARIAN LETTER P2
+102A2 ; [.4C36.0020.0002] # CARIAN LETTER D
+102A3 ; [.4C37.0020.0002] # CARIAN LETTER L
+102A4 ; [.4C38.0020.0002] # CARIAN LETTER UUU
+102A5 ; [.4C39.0020.0002] # CARIAN LETTER R
+102A6 ; [.4C3A.0020.0002] # CARIAN LETTER LD
+102A7 ; [.4C3B.0020.0002] # CARIAN LETTER A2
+102A8 ; [.4C3C.0020.0002] # CARIAN LETTER Q
+102A9 ; [.4C3D.0020.0002] # CARIAN LETTER B
+102AA ; [.4C3E.0020.0002] # CARIAN LETTER M
+102AB ; [.4C3F.0020.0002] # CARIAN LETTER O
+102AC ; [.4C40.0020.0002] # CARIAN LETTER D2
+102AD ; [.4C41.0020.0002] # CARIAN LETTER T
+102AE ; [.4C42.0020.0002] # CARIAN LETTER SH
+102AF ; [.4C43.0020.0002] # CARIAN LETTER SH2
+102B0 ; [.4C44.0020.0002] # CARIAN LETTER S
+102B1 ; [.4C45.0020.0002] # CARIAN LETTER C-18
+102B2 ; [.4C46.0020.0002] # CARIAN LETTER U
+102B3 ; [.4C47.0020.0002] # CARIAN LETTER NN
+102B4 ; [.4C48.0020.0002] # CARIAN LETTER X
+102B5 ; [.4C49.0020.0002] # CARIAN LETTER N
+102B6 ; [.4C4A.0020.0002] # CARIAN LETTER TT2
+102B7 ; [.4C4B.0020.0002] # CARIAN LETTER P
+102B8 ; [.4C4C.0020.0002] # CARIAN LETTER SS
+102B9 ; [.4C4D.0020.0002] # CARIAN LETTER I
+102BA ; [.4C4E.0020.0002] # CARIAN LETTER E
+102BB ; [.4C4F.0020.0002] # CARIAN LETTER UUUU
+102BC ; [.4C50.0020.0002] # CARIAN LETTER K
+102BD ; [.4C51.0020.0002] # CARIAN LETTER K2
+102BE ; [.4C52.0020.0002] # CARIAN LETTER ND
+102BF ; [.4C53.0020.0002] # CARIAN LETTER UU
+102C0 ; [.4C54.0020.0002] # CARIAN LETTER G
+102C1 ; [.4C55.0020.0002] # CARIAN LETTER G2
+102C2 ; [.4C56.0020.0002] # CARIAN LETTER ST
+102C3 ; [.4C57.0020.0002] # CARIAN LETTER ST2
+102C4 ; [.4C58.0020.0002] # CARIAN LETTER NG
+102C5 ; [.4C59.0020.0002] # CARIAN LETTER II
+102C6 ; [.4C5A.0020.0002] # CARIAN LETTER C-39
+102C7 ; [.4C5B.0020.0002] # CARIAN LETTER TT
+102C8 ; [.4C5C.0020.0002] # CARIAN LETTER UUU2
+102C9 ; [.4C5D.0020.0002] # CARIAN LETTER RR
+102CA ; [.4C5E.0020.0002] # CARIAN LETTER MB
+102CB ; [.4C5F.0020.0002] # CARIAN LETTER MB2
+102CC ; [.4C60.0020.0002] # CARIAN LETTER MB3
+102CD ; [.4C61.0020.0002] # CARIAN LETTER MB4
+102CE ; [.4C62.0020.0002] # CARIAN LETTER LD2
+102CF ; [.4C63.0020.0002] # CARIAN LETTER E2
+102D0 ; [.4C64.0020.0002] # CARIAN LETTER UUU3
+10920 ; [.4C65.0020.0002] # LYDIAN LETTER A
+10921 ; [.4C66.0020.0002] # LYDIAN LETTER B
+10922 ; [.4C67.0020.0002] # LYDIAN LETTER G
+10923 ; [.4C68.0020.0002] # LYDIAN LETTER D
+10924 ; [.4C69.0020.0002] # LYDIAN LETTER E
+10925 ; [.4C6A.0020.0002] # LYDIAN LETTER V
+10926 ; [.4C6B.0020.0002] # LYDIAN LETTER I
+10927 ; [.4C6C.0020.0002] # LYDIAN LETTER Y
+10928 ; [.4C6D.0020.0002] # LYDIAN LETTER K
+10929 ; [.4C6E.0020.0002] # LYDIAN LETTER L
+1092A ; [.4C6F.0020.0002] # LYDIAN LETTER M
+1092B ; [.4C70.0020.0002] # LYDIAN LETTER N
+1092C ; [.4C71.0020.0002] # LYDIAN LETTER O
+1092D ; [.4C72.0020.0002] # LYDIAN LETTER R
+1092E ; [.4C73.0020.0002] # LYDIAN LETTER SS
+1092F ; [.4C74.0020.0002] # LYDIAN LETTER T
+10930 ; [.4C75.0020.0002] # LYDIAN LETTER U
+10931 ; [.4C76.0020.0002] # LYDIAN LETTER F
+10932 ; [.4C77.0020.0002] # LYDIAN LETTER Q
+10933 ; [.4C78.0020.0002] # LYDIAN LETTER S
+10934 ; [.4C79.0020.0002] # LYDIAN LETTER TT
+10935 ; [.4C7A.0020.0002] # LYDIAN LETTER AN
+10936 ; [.4C7B.0020.0002] # LYDIAN LETTER EN
+10937 ; [.4C7C.0020.0002] # LYDIAN LETTER LY
+10938 ; [.4C7D.0020.0002] # LYDIAN LETTER NN
+10939 ; [.4C7E.0020.0002] # LYDIAN LETTER C
+10300 ; [.4C7F.0020.0002] # OLD ITALIC LETTER A
+10301 ; [.4C80.0020.0002] # OLD ITALIC LETTER BE
+10302 ; [.4C81.0020.0002] # OLD ITALIC LETTER KE
+10303 ; [.4C82.0020.0002] # OLD ITALIC LETTER DE
+10304 ; [.4C83.0020.0002] # OLD ITALIC LETTER E
+10305 ; [.4C84.0020.0002] # OLD ITALIC LETTER VE
+10306 ; [.4C85.0020.0002] # OLD ITALIC LETTER ZE
+10307 ; [.4C86.0020.0002] # OLD ITALIC LETTER HE
+10308 ; [.4C87.0020.0002] # OLD ITALIC LETTER THE
+10309 ; [.4C88.0020.0002] # OLD ITALIC LETTER I
+1030A ; [.4C89.0020.0002] # OLD ITALIC LETTER KA
+1030B ; [.4C8A.0020.0002] # OLD ITALIC LETTER EL
+1030C ; [.4C8B.0020.0002] # OLD ITALIC LETTER EM
+1030D ; [.4C8C.0020.0002] # OLD ITALIC LETTER EN
+1030E ; [.4C8D.0020.0002] # OLD ITALIC LETTER ESH
+1031F ; [.4C8E.0020.0002] # OLD ITALIC LETTER ESS
+1030F ; [.4C8F.0020.0002] # OLD ITALIC LETTER O
+10310 ; [.4C90.0020.0002] # OLD ITALIC LETTER PE
+10311 ; [.4C91.0020.0002] # OLD ITALIC LETTER SHE
+10312 ; [.4C92.0020.0002] # OLD ITALIC LETTER KU
+10313 ; [.4C93.0020.0002] # OLD ITALIC LETTER ER
+10314 ; [.4C94.0020.0002] # OLD ITALIC LETTER ES
+10315 ; [.4C95.0020.0002] # OLD ITALIC LETTER TE
+10316 ; [.4C96.0020.0002] # OLD ITALIC LETTER U
+10317 ; [.4C97.0020.0002] # OLD ITALIC LETTER EKS
+10318 ; [.4C98.0020.0002] # OLD ITALIC LETTER PHE
+10319 ; [.4C99.0020.0002] # OLD ITALIC LETTER KHE
+1031A ; [.4C9A.0020.0002] # OLD ITALIC LETTER EF
+1031B ; [.4C9B.0020.0002] # OLD ITALIC LETTER ERS
+1031C ; [.4C9C.0020.0002] # OLD ITALIC LETTER CHE
+1031D ; [.4C9D.0020.0002] # OLD ITALIC LETTER II
+1031E ; [.4C9E.0020.0002] # OLD ITALIC LETTER UU
+1032D ; [.4C9F.0020.0002] # OLD ITALIC LETTER YE
+1032E ; [.4CA0.0020.0002] # OLD ITALIC LETTER NORTHERN TSE
+1032F ; [.4CA1.0020.0002] # OLD ITALIC LETTER SOUTHERN TSE
+10330 ; [.4CA2.0020.0002] # GOTHIC LETTER AHSA
+10331 ; [.4CA3.0020.0002] # GOTHIC LETTER BAIRKAN
+10332 ; [.4CA4.0020.0002] # GOTHIC LETTER GIBA
+10333 ; [.4CA5.0020.0002] # GOTHIC LETTER DAGS
+10334 ; [.4CA6.0020.0002] # GOTHIC LETTER AIHVUS
+10335 ; [.4CA7.0020.0002] # GOTHIC LETTER QAIRTHRA
+10336 ; [.4CA8.0020.0002] # GOTHIC LETTER IUJA
+10337 ; [.4CA9.0020.0002] # GOTHIC LETTER HAGL
+10338 ; [.4CAA.0020.0002] # GOTHIC LETTER THIUTH
+10339 ; [.4CAB.0020.0002] # GOTHIC LETTER EIS
+1033A ; [.4CAC.0020.0002] # GOTHIC LETTER KUSMA
+1033B ; [.4CAD.0020.0002] # GOTHIC LETTER LAGUS
+1033C ; [.4CAE.0020.0002] # GOTHIC LETTER MANNA
+1033D ; [.4CAF.0020.0002] # GOTHIC LETTER NAUTHS
+1033E ; [.4CB0.0020.0002] # GOTHIC LETTER JER
+1033F ; [.4CB1.0020.0002] # GOTHIC LETTER URUS
+10340 ; [.4CB2.0020.0002] # GOTHIC LETTER PAIRTHRA
+10341 ; [.4CB3.0020.0002] # GOTHIC LETTER NINETY
+10342 ; [.4CB4.0020.0002] # GOTHIC LETTER RAIDA
+10343 ; [.4CB5.0020.0002] # GOTHIC LETTER SAUIL
+10344 ; [.4CB6.0020.0002] # GOTHIC LETTER TEIWS
+10345 ; [.4CB7.0020.0002] # GOTHIC LETTER WINJA
+10346 ; [.4CB8.0020.0002] # GOTHIC LETTER FAIHU
+10347 ; [.4CB9.0020.0002] # GOTHIC LETTER IGGWS
+10348 ; [.4CBA.0020.0002] # GOTHIC LETTER HWAIR
+10349 ; [.4CBB.0020.0002] # GOTHIC LETTER OTHAL
+1034A ; [.4CBC.0020.0002] # GOTHIC LETTER NINE HUNDRED
+10428 ; [.4CBD.0020.0002] # DESERET SMALL LETTER LONG I
+10400 ; [.4CBD.0020.0008] # DESERET CAPITAL LETTER LONG I
+10429 ; [.4CBE.0020.0002] # DESERET SMALL LETTER LONG E
+10401 ; [.4CBE.0020.0008] # DESERET CAPITAL LETTER LONG E
+1042A ; [.4CBF.0020.0002] # DESERET SMALL LETTER LONG A
+10402 ; [.4CBF.0020.0008] # DESERET CAPITAL LETTER LONG A
+1042B ; [.4CC0.0020.0002] # DESERET SMALL LETTER LONG AH
+10403 ; [.4CC0.0020.0008] # DESERET CAPITAL LETTER LONG AH
+1042C ; [.4CC1.0020.0002] # DESERET SMALL LETTER LONG O
+10404 ; [.4CC1.0020.0008] # DESERET CAPITAL LETTER LONG O
+1042D ; [.4CC2.0020.0002] # DESERET SMALL LETTER LONG OO
+10405 ; [.4CC2.0020.0008] # DESERET CAPITAL LETTER LONG OO
+1042E ; [.4CC3.0020.0002] # DESERET SMALL LETTER SHORT I
+10406 ; [.4CC3.0020.0008] # DESERET CAPITAL LETTER SHORT I
+1042F ; [.4CC4.0020.0002] # DESERET SMALL LETTER SHORT E
+10407 ; [.4CC4.0020.0008] # DESERET CAPITAL LETTER SHORT E
+10430 ; [.4CC5.0020.0002] # DESERET SMALL LETTER SHORT A
+10408 ; [.4CC5.0020.0008] # DESERET CAPITAL LETTER SHORT A
+10431 ; [.4CC6.0020.0002] # DESERET SMALL LETTER SHORT AH
+10409 ; [.4CC6.0020.0008] # DESERET CAPITAL LETTER SHORT AH
+10432 ; [.4CC7.0020.0002] # DESERET SMALL LETTER SHORT O
+1040A ; [.4CC7.0020.0008] # DESERET CAPITAL LETTER SHORT O
+10433 ; [.4CC8.0020.0002] # DESERET SMALL LETTER SHORT OO
+1040B ; [.4CC8.0020.0008] # DESERET CAPITAL LETTER SHORT OO
+10434 ; [.4CC9.0020.0002] # DESERET SMALL LETTER AY
+1040C ; [.4CC9.0020.0008] # DESERET CAPITAL LETTER AY
+10435 ; [.4CCA.0020.0002] # DESERET SMALL LETTER OW
+1040D ; [.4CCA.0020.0008] # DESERET CAPITAL LETTER OW
+10436 ; [.4CCB.0020.0002] # DESERET SMALL LETTER WU
+1040E ; [.4CCB.0020.0008] # DESERET CAPITAL LETTER WU
+10437 ; [.4CCC.0020.0002] # DESERET SMALL LETTER YEE
+1040F ; [.4CCC.0020.0008] # DESERET CAPITAL LETTER YEE
+10438 ; [.4CCD.0020.0002] # DESERET SMALL LETTER H
+10410 ; [.4CCD.0020.0008] # DESERET CAPITAL LETTER H
+10439 ; [.4CCE.0020.0002] # DESERET SMALL LETTER PEE
+10411 ; [.4CCE.0020.0008] # DESERET CAPITAL LETTER PEE
+1043A ; [.4CCF.0020.0002] # DESERET SMALL LETTER BEE
+10412 ; [.4CCF.0020.0008] # DESERET CAPITAL LETTER BEE
+1043B ; [.4CD0.0020.0002] # DESERET SMALL LETTER TEE
+10413 ; [.4CD0.0020.0008] # DESERET CAPITAL LETTER TEE
+1043C ; [.4CD1.0020.0002] # DESERET SMALL LETTER DEE
+10414 ; [.4CD1.0020.0008] # DESERET CAPITAL LETTER DEE
+1043D ; [.4CD2.0020.0002] # DESERET SMALL LETTER CHEE
+10415 ; [.4CD2.0020.0008] # DESERET CAPITAL LETTER CHEE
+1043E ; [.4CD3.0020.0002] # DESERET SMALL LETTER JEE
+10416 ; [.4CD3.0020.0008] # DESERET CAPITAL LETTER JEE
+1043F ; [.4CD4.0020.0002] # DESERET SMALL LETTER KAY
+10417 ; [.4CD4.0020.0008] # DESERET CAPITAL LETTER KAY
+10440 ; [.4CD5.0020.0002] # DESERET SMALL LETTER GAY
+10418 ; [.4CD5.0020.0008] # DESERET CAPITAL LETTER GAY
+10441 ; [.4CD6.0020.0002] # DESERET SMALL LETTER EF
+10419 ; [.4CD6.0020.0008] # DESERET CAPITAL LETTER EF
+10442 ; [.4CD7.0020.0002] # DESERET SMALL LETTER VEE
+1041A ; [.4CD7.0020.0008] # DESERET CAPITAL LETTER VEE
+10443 ; [.4CD8.0020.0002] # DESERET SMALL LETTER ETH
+1041B ; [.4CD8.0020.0008] # DESERET CAPITAL LETTER ETH
+10444 ; [.4CD9.0020.0002] # DESERET SMALL LETTER THEE
+1041C ; [.4CD9.0020.0008] # DESERET CAPITAL LETTER THEE
+10445 ; [.4CDA.0020.0002] # DESERET SMALL LETTER ES
+1041D ; [.4CDA.0020.0008] # DESERET CAPITAL LETTER ES
+10446 ; [.4CDB.0020.0002] # DESERET SMALL LETTER ZEE
+1041E ; [.4CDB.0020.0008] # DESERET CAPITAL LETTER ZEE
+10447 ; [.4CDC.0020.0002] # DESERET SMALL LETTER ESH
+1041F ; [.4CDC.0020.0008] # DESERET CAPITAL LETTER ESH
+10448 ; [.4CDD.0020.0002] # DESERET SMALL LETTER ZHEE
+10420 ; [.4CDD.0020.0008] # DESERET CAPITAL LETTER ZHEE
+10449 ; [.4CDE.0020.0002] # DESERET SMALL LETTER ER
+10421 ; [.4CDE.0020.0008] # DESERET CAPITAL LETTER ER
+1044A ; [.4CDF.0020.0002] # DESERET SMALL LETTER EL
+10422 ; [.4CDF.0020.0008] # DESERET CAPITAL LETTER EL
+1044B ; [.4CE0.0020.0002] # DESERET SMALL LETTER EM
+10423 ; [.4CE0.0020.0008] # DESERET CAPITAL LETTER EM
+1044C ; [.4CE1.0020.0002] # DESERET SMALL LETTER EN
+10424 ; [.4CE1.0020.0008] # DESERET CAPITAL LETTER EN
+1044D ; [.4CE2.0020.0002] # DESERET SMALL LETTER ENG
+10425 ; [.4CE2.0020.0008] # DESERET CAPITAL LETTER ENG
+1044E ; [.4CE3.0020.0002] # DESERET SMALL LETTER OI
+10426 ; [.4CE3.0020.0008] # DESERET CAPITAL LETTER OI
+1044F ; [.4CE4.0020.0002] # DESERET SMALL LETTER EW
+10427 ; [.4CE4.0020.0008] # DESERET CAPITAL LETTER EW
+10450 ; [.4CE5.0020.0002] # SHAVIAN LETTER PEEP
+10451 ; [.4CE6.0020.0002] # SHAVIAN LETTER TOT
+10452 ; [.4CE7.0020.0002] # SHAVIAN LETTER KICK
+10453 ; [.4CE8.0020.0002] # SHAVIAN LETTER FEE
+10454 ; [.4CE9.0020.0002] # SHAVIAN LETTER THIGH
+10455 ; [.4CEA.0020.0002] # SHAVIAN LETTER SO
+10456 ; [.4CEB.0020.0002] # SHAVIAN LETTER SURE
+10457 ; [.4CEC.0020.0002] # SHAVIAN LETTER CHURCH
+10458 ; [.4CED.0020.0002] # SHAVIAN LETTER YEA
+10459 ; [.4CEE.0020.0002] # SHAVIAN LETTER HUNG
+1045A ; [.4CEF.0020.0002] # SHAVIAN LETTER BIB
+1045B ; [.4CF0.0020.0002] # SHAVIAN LETTER DEAD
+1045C ; [.4CF1.0020.0002] # SHAVIAN LETTER GAG
+1045D ; [.4CF2.0020.0002] # SHAVIAN LETTER VOW
+1045E ; [.4CF3.0020.0002] # SHAVIAN LETTER THEY
+1045F ; [.4CF4.0020.0002] # SHAVIAN LETTER ZOO
+10460 ; [.4CF5.0020.0002] # SHAVIAN LETTER MEASURE
+10461 ; [.4CF6.0020.0002] # SHAVIAN LETTER JUDGE
+10462 ; [.4CF7.0020.0002] # SHAVIAN LETTER WOE
+10463 ; [.4CF8.0020.0002] # SHAVIAN LETTER HA-HA
+10464 ; [.4CF9.0020.0002] # SHAVIAN LETTER LOLL
+10465 ; [.4CFA.0020.0002] # SHAVIAN LETTER MIME
+10466 ; [.4CFB.0020.0002] # SHAVIAN LETTER IF
+10467 ; [.4CFC.0020.0002] # SHAVIAN LETTER EGG
+10468 ; [.4CFD.0020.0002] # SHAVIAN LETTER ASH
+10469 ; [.4CFE.0020.0002] # SHAVIAN LETTER ADO
+1046A ; [.4CFF.0020.0002] # SHAVIAN LETTER ON
+1046B ; [.4D00.0020.0002] # SHAVIAN LETTER WOOL
+1046C ; [.4D01.0020.0002] # SHAVIAN LETTER OUT
+1046D ; [.4D02.0020.0002] # SHAVIAN LETTER AH
+1046E ; [.4D03.0020.0002] # SHAVIAN LETTER ROAR
+1046F ; [.4D04.0020.0002] # SHAVIAN LETTER NUN
+10470 ; [.4D05.0020.0002] # SHAVIAN LETTER EAT
+10471 ; [.4D06.0020.0002] # SHAVIAN LETTER AGE
+10472 ; [.4D07.0020.0002] # SHAVIAN LETTER ICE
+10473 ; [.4D08.0020.0002] # SHAVIAN LETTER UP
+10474 ; [.4D09.0020.0002] # SHAVIAN LETTER OAK
+10475 ; [.4D0A.0020.0002] # SHAVIAN LETTER OOZE
+10476 ; [.4D0B.0020.0002] # SHAVIAN LETTER OIL
+10477 ; [.4D0C.0020.0002] # SHAVIAN LETTER AWE
+10478 ; [.4D0D.0020.0002] # SHAVIAN LETTER ARE
+10479 ; [.4D0E.0020.0002] # SHAVIAN LETTER OR
+1047A ; [.4D0F.0020.0002] # SHAVIAN LETTER AIR
+1047B ; [.4D10.0020.0002] # SHAVIAN LETTER ERR
+1047C ; [.4D11.0020.0002] # SHAVIAN LETTER ARRAY
+1047D ; [.4D12.0020.0002] # SHAVIAN LETTER EAR
+1047E ; [.4D13.0020.0002] # SHAVIAN LETTER IAN
+1047F ; [.4D14.0020.0002] # SHAVIAN LETTER YEW
+1BC00 ; [.4D15.0020.0002] # DUPLOYAN LETTER H
+1BC01 ; [.4D16.0020.0002] # DUPLOYAN LETTER X
+1BC02 ; [.4D17.0020.0002] # DUPLOYAN LETTER P
+1BC03 ; [.4D18.0020.0002] # DUPLOYAN LETTER T
+1BC04 ; [.4D19.0020.0002] # DUPLOYAN LETTER F
+1BC05 ; [.4D1A.0020.0002] # DUPLOYAN LETTER K
+1BC06 ; [.4D1B.0020.0002] # DUPLOYAN LETTER L
+1BC07 ; [.4D1C.0020.0002] # DUPLOYAN LETTER B
+1BC08 ; [.4D1D.0020.0002] # DUPLOYAN LETTER D
+1BC09 ; [.4D1E.0020.0002] # DUPLOYAN LETTER V
+1BC0A ; [.4D1F.0020.0002] # DUPLOYAN LETTER G
+1BC0B ; [.4D20.0020.0002] # DUPLOYAN LETTER R
+1BC0C ; [.4D21.0020.0002] # DUPLOYAN LETTER P N
+1BC0D ; [.4D22.0020.0002] # DUPLOYAN LETTER D S
+1BC0E ; [.4D23.0020.0002] # DUPLOYAN LETTER F N
+1BC0F ; [.4D24.0020.0002] # DUPLOYAN LETTER K M
+1BC10 ; [.4D25.0020.0002] # DUPLOYAN LETTER R S
+1BC11 ; [.4D26.0020.0002] # DUPLOYAN LETTER TH
+1BC12 ; [.4D27.0020.0002] # DUPLOYAN LETTER SLOAN DH
+1BC13 ; [.4D28.0020.0002] # DUPLOYAN LETTER DH
+1BC14 ; [.4D29.0020.0002] # DUPLOYAN LETTER KK
+1BC15 ; [.4D2A.0020.0002] # DUPLOYAN LETTER SLOAN J
+1BC16 ; [.4D2B.0020.0002] # DUPLOYAN LETTER HL
+1BC17 ; [.4D2C.0020.0002] # DUPLOYAN LETTER LH
+1BC18 ; [.4D2D.0020.0002] # DUPLOYAN LETTER RH
+1BC19 ; [.4D2E.0020.0002] # DUPLOYAN LETTER M
+1BC1A ; [.4D2F.0020.0002] # DUPLOYAN LETTER N
+1BC1B ; [.4D30.0020.0002] # DUPLOYAN LETTER J
+1BC1C ; [.4D31.0020.0002] # DUPLOYAN LETTER S
+1BC1D ; [.4D32.0020.0002] # DUPLOYAN LETTER M N
+1BC1E ; [.4D33.0020.0002] # DUPLOYAN LETTER N M
+1BC1F ; [.4D34.0020.0002] # DUPLOYAN LETTER J M
+1BC20 ; [.4D35.0020.0002] # DUPLOYAN LETTER S J
+1BC21 ; [.4D36.0020.0002] # DUPLOYAN LETTER M WITH DOT
+1BC22 ; [.4D37.0020.0002] # DUPLOYAN LETTER N WITH DOT
+1BC23 ; [.4D38.0020.0002] # DUPLOYAN LETTER J WITH DOT
+1BC24 ; [.4D39.0020.0002] # DUPLOYAN LETTER J WITH DOTS INSIDE AND ABOVE
+1BC25 ; [.4D3A.0020.0002] # DUPLOYAN LETTER S WITH DOT
+1BC26 ; [.4D3B.0020.0002] # DUPLOYAN LETTER S WITH DOT BELOW
+1BC27 ; [.4D3C.0020.0002] # DUPLOYAN LETTER M S
+1BC28 ; [.4D3D.0020.0002] # DUPLOYAN LETTER N S
+1BC29 ; [.4D3E.0020.0002] # DUPLOYAN LETTER J S
+1BC2A ; [.4D3F.0020.0002] # DUPLOYAN LETTER S S
+1BC2B ; [.4D40.0020.0002] # DUPLOYAN LETTER M N S
+1BC2C ; [.4D41.0020.0002] # DUPLOYAN LETTER N M S
+1BC2D ; [.4D42.0020.0002] # DUPLOYAN LETTER J M S
+1BC2E ; [.4D43.0020.0002] # DUPLOYAN LETTER S J S
+1BC2F ; [.4D44.0020.0002] # DUPLOYAN LETTER J S WITH DOT
+1BC30 ; [.4D45.0020.0002] # DUPLOYAN LETTER J N
+1BC31 ; [.4D46.0020.0002] # DUPLOYAN LETTER J N S
+1BC32 ; [.4D47.0020.0002] # DUPLOYAN LETTER S T
+1BC33 ; [.4D48.0020.0002] # DUPLOYAN LETTER S T R
+1BC34 ; [.4D49.0020.0002] # DUPLOYAN LETTER S P
+1BC35 ; [.4D4A.0020.0002] # DUPLOYAN LETTER S P R
+1BC36 ; [.4D4B.0020.0002] # DUPLOYAN LETTER T S
+1BC37 ; [.4D4C.0020.0002] # DUPLOYAN LETTER T R S
+1BC38 ; [.4D4D.0020.0002] # DUPLOYAN LETTER W
+1BC39 ; [.4D4E.0020.0002] # DUPLOYAN LETTER WH
+1BC3A ; [.4D4F.0020.0002] # DUPLOYAN LETTER W R
+1BC3B ; [.4D50.0020.0002] # DUPLOYAN LETTER S N
+1BC3C ; [.4D51.0020.0002] # DUPLOYAN LETTER S M
+1BC3D ; [.4D52.0020.0002] # DUPLOYAN LETTER K R S
+1BC3E ; [.4D53.0020.0002] # DUPLOYAN LETTER G R S
+1BC3F ; [.4D54.0020.0002] # DUPLOYAN LETTER S K
+1BC40 ; [.4D55.0020.0002] # DUPLOYAN LETTER S K R
+1BC41 ; [.4D56.0020.0002] # DUPLOYAN LETTER A
+1BC42 ; [.4D57.0020.0002] # DUPLOYAN LETTER SLOAN OW
+1BC43 ; [.4D58.0020.0002] # DUPLOYAN LETTER OA
+1BC44 ; [.4D59.0020.0002] # DUPLOYAN LETTER O
+1BC45 ; [.4D5A.0020.0002] # DUPLOYAN LETTER AOU
+1BC46 ; [.4D5B.0020.0002] # DUPLOYAN LETTER I
+1BC47 ; [.4D5C.0020.0002] # DUPLOYAN LETTER E
+1BC48 ; [.4D5D.0020.0002] # DUPLOYAN LETTER IE
+1BC49 ; [.4D5E.0020.0002] # DUPLOYAN LETTER SHORT I
+1BC4A ; [.4D5F.0020.0002] # DUPLOYAN LETTER UI
+1BC4B ; [.4D60.0020.0002] # DUPLOYAN LETTER EE
+1BC4C ; [.4D61.0020.0002] # DUPLOYAN LETTER SLOAN EH
+1BC4D ; [.4D62.0020.0002] # DUPLOYAN LETTER ROMANIAN I
+1BC4E ; [.4D63.0020.0002] # DUPLOYAN LETTER SLOAN EE
+1BC4F ; [.4D64.0020.0002] # DUPLOYAN LETTER LONG I
+1BC50 ; [.4D65.0020.0002] # DUPLOYAN LETTER YE
+1BC51 ; [.4D66.0020.0002] # DUPLOYAN LETTER U
+1BC52 ; [.4D67.0020.0002] # DUPLOYAN LETTER EU
+1BC53 ; [.4D68.0020.0002] # DUPLOYAN LETTER XW
+1BC54 ; [.4D69.0020.0002] # DUPLOYAN LETTER U N
+1BC55 ; [.4D6A.0020.0002] # DUPLOYAN LETTER LONG U
+1BC56 ; [.4D6B.0020.0002] # DUPLOYAN LETTER ROMANIAN U
+1BC57 ; [.4D6C.0020.0002] # DUPLOYAN LETTER UH
+1BC58 ; [.4D6D.0020.0002] # DUPLOYAN LETTER SLOAN U
+1BC59 ; [.4D6E.0020.0002] # DUPLOYAN LETTER OOH
+1BC5A ; [.4D6F.0020.0002] # DUPLOYAN LETTER OW
+1BC5B ; [.4D70.0020.0002] # DUPLOYAN LETTER OU
+1BC5C ; [.4D71.0020.0002] # DUPLOYAN LETTER WA
+1BC5D ; [.4D72.0020.0002] # DUPLOYAN LETTER WO
+1BC5E ; [.4D73.0020.0002] # DUPLOYAN LETTER WI
+1BC5F ; [.4D74.0020.0002] # DUPLOYAN LETTER WEI
+1BC60 ; [.4D75.0020.0002] # DUPLOYAN LETTER WOW
+1BC61 ; [.4D76.0020.0002] # DUPLOYAN LETTER NASAL U
+1BC62 ; [.4D77.0020.0002] # DUPLOYAN LETTER NASAL O
+1BC63 ; [.4D78.0020.0002] # DUPLOYAN LETTER NASAL I
+1BC64 ; [.4D79.0020.0002] # DUPLOYAN LETTER NASAL A
+1BC65 ; [.4D7A.0020.0002] # DUPLOYAN LETTER PERNIN AN
+1BC66 ; [.4D7B.0020.0002] # DUPLOYAN LETTER PERNIN AM
+1BC67 ; [.4D7C.0020.0002] # DUPLOYAN LETTER SLOAN EN
+1BC68 ; [.4D7D.0020.0002] # DUPLOYAN LETTER SLOAN AN
+1BC69 ; [.4D7E.0020.0002] # DUPLOYAN LETTER SLOAN ON
+1BC6A ; [.4D7F.0020.0002] # DUPLOYAN LETTER VOCALIC M
+1BC70 ; [.4D80.0020.0002] # DUPLOYAN AFFIX LEFT HORIZONTAL SECANT
+1BC71 ; [.4D81.0020.0002] # DUPLOYAN AFFIX MID HORIZONTAL SECANT
+1BC72 ; [.4D82.0020.0002] # DUPLOYAN AFFIX RIGHT HORIZONTAL SECANT
+1BC73 ; [.4D83.0020.0002] # DUPLOYAN AFFIX LOW VERTICAL SECANT
+1BC74 ; [.4D84.0020.0002] # DUPLOYAN AFFIX MID VERTICAL SECANT
+1BC75 ; [.4D85.0020.0002] # DUPLOYAN AFFIX HIGH VERTICAL SECANT
+1BC76 ; [.4D86.0020.0002] # DUPLOYAN AFFIX ATTACHED SECANT
+1BC77 ; [.4D87.0020.0002] # DUPLOYAN AFFIX ATTACHED LEFT-TO-RIGHT SECANT
+1BC78 ; [.4D88.0020.0002] # DUPLOYAN AFFIX ATTACHED TANGENT
+1BC79 ; [.4D89.0020.0002] # DUPLOYAN AFFIX ATTACHED TAIL
+1BC7A ; [.4D8A.0020.0002] # DUPLOYAN AFFIX ATTACHED E HOOK
+1BC7B ; [.4D8B.0020.0002] # DUPLOYAN AFFIX ATTACHED I HOOK
+1BC7C ; [.4D8C.0020.0002] # DUPLOYAN AFFIX ATTACHED TANGENT HOOK
+1BC80 ; [.4D8D.0020.0002] # DUPLOYAN AFFIX HIGH ACUTE
+1BC81 ; [.4D8E.0020.0002] # DUPLOYAN AFFIX HIGH TIGHT ACUTE
+1BC82 ; [.4D8F.0020.0002] # DUPLOYAN AFFIX HIGH GRAVE
+1BC83 ; [.4D90.0020.0002] # DUPLOYAN AFFIX HIGH LONG GRAVE
+1BC84 ; [.4D91.0020.0002] # DUPLOYAN AFFIX HIGH DOT
+1BC85 ; [.4D92.0020.0002] # DUPLOYAN AFFIX HIGH CIRCLE
+1BC86 ; [.4D93.0020.0002] # DUPLOYAN AFFIX HIGH LINE
+1BC87 ; [.4D94.0020.0002] # DUPLOYAN AFFIX HIGH WAVE
+1BC88 ; [.4D95.0020.0002] # DUPLOYAN AFFIX HIGH VERTICAL
+1BC90 ; [.4D96.0020.0002] # DUPLOYAN AFFIX LOW ACUTE
+1BC91 ; [.4D97.0020.0002] # DUPLOYAN AFFIX LOW TIGHT ACUTE
+1BC92 ; [.4D98.0020.0002] # DUPLOYAN AFFIX LOW GRAVE
+1BC93 ; [.4D99.0020.0002] # DUPLOYAN AFFIX LOW LONG GRAVE
+1BC94 ; [.4D9A.0020.0002] # DUPLOYAN AFFIX LOW DOT
+1BC95 ; [.4D9B.0020.0002] # DUPLOYAN AFFIX LOW CIRCLE
+1BC96 ; [.4D9C.0020.0002] # DUPLOYAN AFFIX LOW LINE
+1BC97 ; [.4D9D.0020.0002] # DUPLOYAN AFFIX LOW WAVE
+1BC98 ; [.4D9E.0020.0002] # DUPLOYAN AFFIX LOW VERTICAL
+1BC99 ; [.4D9F.0020.0002] # DUPLOYAN AFFIX LOW ARROW
+10480 ; [.4DA0.0020.0002] # OSMANYA LETTER ALEF
+10481 ; [.4DA1.0020.0002] # OSMANYA LETTER BA
+10482 ; [.4DA2.0020.0002] # OSMANYA LETTER TA
+10483 ; [.4DA3.0020.0002] # OSMANYA LETTER JA
+10484 ; [.4DA4.0020.0002] # OSMANYA LETTER XA
+10485 ; [.4DA5.0020.0002] # OSMANYA LETTER KHA
+10486 ; [.4DA6.0020.0002] # OSMANYA LETTER DEEL
+10487 ; [.4DA7.0020.0002] # OSMANYA LETTER RA
+10488 ; [.4DA8.0020.0002] # OSMANYA LETTER SA
+10489 ; [.4DA9.0020.0002] # OSMANYA LETTER SHIIN
+1048A ; [.4DAA.0020.0002] # OSMANYA LETTER DHA
+1048B ; [.4DAB.0020.0002] # OSMANYA LETTER CAYN
+1048C ; [.4DAC.0020.0002] # OSMANYA LETTER GA
+1048D ; [.4DAD.0020.0002] # OSMANYA LETTER FA
+1048E ; [.4DAE.0020.0002] # OSMANYA LETTER QAAF
+1048F ; [.4DAF.0020.0002] # OSMANYA LETTER KAAF
+10490 ; [.4DB0.0020.0002] # OSMANYA LETTER LAAN
+10491 ; [.4DB1.0020.0002] # OSMANYA LETTER MIIN
+10492 ; [.4DB2.0020.0002] # OSMANYA LETTER NUUN
+10493 ; [.4DB3.0020.0002] # OSMANYA LETTER WAW
+10494 ; [.4DB4.0020.0002] # OSMANYA LETTER HA
+10495 ; [.4DB5.0020.0002] # OSMANYA LETTER YA
+10496 ; [.4DB6.0020.0002] # OSMANYA LETTER A
+10497 ; [.4DB7.0020.0002] # OSMANYA LETTER E
+10498 ; [.4DB8.0020.0002] # OSMANYA LETTER I
+10499 ; [.4DB9.0020.0002] # OSMANYA LETTER O
+1049A ; [.4DBA.0020.0002] # OSMANYA LETTER U
+1049B ; [.4DBB.0020.0002] # OSMANYA LETTER AA
+1049C ; [.4DBC.0020.0002] # OSMANYA LETTER EE
+1049D ; [.4DBD.0020.0002] # OSMANYA LETTER OO
+10500 ; [.4DBE.0020.0002] # ELBASAN LETTER A
+10501 ; [.4DBF.0020.0002] # ELBASAN LETTER BE
+10502 ; [.4DC0.0020.0002] # ELBASAN LETTER CE
+10503 ; [.4DC1.0020.0002] # ELBASAN LETTER CHE
+10504 ; [.4DC2.0020.0002] # ELBASAN LETTER DE
+10505 ; [.4DC3.0020.0002] # ELBASAN LETTER NDE
+10506 ; [.4DC4.0020.0002] # ELBASAN LETTER DHE
+10507 ; [.4DC5.0020.0002] # ELBASAN LETTER EI
+10508 ; [.4DC6.0020.0002] # ELBASAN LETTER E
+10509 ; [.4DC7.0020.0002] # ELBASAN LETTER FE
+1050A ; [.4DC8.0020.0002] # ELBASAN LETTER GE
+1050B ; [.4DC9.0020.0002] # ELBASAN LETTER GJE
+1050C ; [.4DCA.0020.0002] # ELBASAN LETTER HE
+1050D ; [.4DCB.0020.0002] # ELBASAN LETTER I
+1050E ; [.4DCC.0020.0002] # ELBASAN LETTER JE
+1050F ; [.4DCD.0020.0002] # ELBASAN LETTER KE
+10510 ; [.4DCE.0020.0002] # ELBASAN LETTER LE
+10511 ; [.4DCF.0020.0002] # ELBASAN LETTER LLE
+10512 ; [.4DD0.0020.0002] # ELBASAN LETTER ME
+10513 ; [.4DD1.0020.0002] # ELBASAN LETTER NE
+10514 ; [.4DD2.0020.0002] # ELBASAN LETTER NA
+10515 ; [.4DD3.0020.0002] # ELBASAN LETTER NJE
+10516 ; [.4DD4.0020.0002] # ELBASAN LETTER O
+10517 ; [.4DD5.0020.0002] # ELBASAN LETTER PE
+10518 ; [.4DD6.0020.0002] # ELBASAN LETTER QE
+10519 ; [.4DD7.0020.0002] # ELBASAN LETTER RE
+1051A ; [.4DD8.0020.0002] # ELBASAN LETTER RRE
+1051B ; [.4DD9.0020.0002] # ELBASAN LETTER SE
+1051C ; [.4DDA.0020.0002] # ELBASAN LETTER SHE
+1051D ; [.4DDB.0020.0002] # ELBASAN LETTER TE
+1051E ; [.4DDC.0020.0002] # ELBASAN LETTER THE
+1051F ; [.4DDD.0020.0002] # ELBASAN LETTER U
+10520 ; [.4DDE.0020.0002] # ELBASAN LETTER VE
+10521 ; [.4DDF.0020.0002] # ELBASAN LETTER XE
+10522 ; [.4DE0.0020.0002] # ELBASAN LETTER Y
+10523 ; [.4DE1.0020.0002] # ELBASAN LETTER ZE
+10524 ; [.4DE2.0020.0002] # ELBASAN LETTER ZHE
+10525 ; [.4DE3.0020.0002] # ELBASAN LETTER GHE
+10526 ; [.4DE4.0020.0002] # ELBASAN LETTER GHAMMA
+10527 ; [.4DE5.0020.0002] # ELBASAN LETTER KHE
+10530 ; [.4DE6.0020.0002] # CAUCASIAN ALBANIAN LETTER ALT
+10531 ; [.4DE7.0020.0002] # CAUCASIAN ALBANIAN LETTER BET
+10532 ; [.4DE8.0020.0002] # CAUCASIAN ALBANIAN LETTER GIM
+10533 ; [.4DE9.0020.0002] # CAUCASIAN ALBANIAN LETTER DAT
+10534 ; [.4DEA.0020.0002] # CAUCASIAN ALBANIAN LETTER EB
+10535 ; [.4DEB.0020.0002] # CAUCASIAN ALBANIAN LETTER ZARL
+10536 ; [.4DEC.0020.0002] # CAUCASIAN ALBANIAN LETTER EYN
+10537 ; [.4DED.0020.0002] # CAUCASIAN ALBANIAN LETTER ZHIL
+10538 ; [.4DEE.0020.0002] # CAUCASIAN ALBANIAN LETTER TAS
+10539 ; [.4DEF.0020.0002] # CAUCASIAN ALBANIAN LETTER CHA
+1053A ; [.4DF0.0020.0002] # CAUCASIAN ALBANIAN LETTER YOWD
+1053B ; [.4DF1.0020.0002] # CAUCASIAN ALBANIAN LETTER ZHA
+1053C ; [.4DF2.0020.0002] # CAUCASIAN ALBANIAN LETTER IRB
+1053D ; [.4DF3.0020.0002] # CAUCASIAN ALBANIAN LETTER SHA
+1053E ; [.4DF4.0020.0002] # CAUCASIAN ALBANIAN LETTER LAN
+1053F ; [.4DF5.0020.0002] # CAUCASIAN ALBANIAN LETTER INYA
+10540 ; [.4DF6.0020.0002] # CAUCASIAN ALBANIAN LETTER XEYN
+10541 ; [.4DF7.0020.0002] # CAUCASIAN ALBANIAN LETTER DYAN
+10542 ; [.4DF8.0020.0002] # CAUCASIAN ALBANIAN LETTER CAR
+10543 ; [.4DF9.0020.0002] # CAUCASIAN ALBANIAN LETTER JHOX
+10544 ; [.4DFA.0020.0002] # CAUCASIAN ALBANIAN LETTER KAR
+10545 ; [.4DFB.0020.0002] # CAUCASIAN ALBANIAN LETTER LYIT
+10546 ; [.4DFC.0020.0002] # CAUCASIAN ALBANIAN LETTER HEYT
+10547 ; [.4DFD.0020.0002] # CAUCASIAN ALBANIAN LETTER QAY
+10548 ; [.4DFE.0020.0002] # CAUCASIAN ALBANIAN LETTER AOR
+10549 ; [.4DFF.0020.0002] # CAUCASIAN ALBANIAN LETTER CHOY
+1054A ; [.4E00.0020.0002] # CAUCASIAN ALBANIAN LETTER CHI
+1054B ; [.4E01.0020.0002] # CAUCASIAN ALBANIAN LETTER CYAY
+1054C ; [.4E02.0020.0002] # CAUCASIAN ALBANIAN LETTER MAQ
+1054D ; [.4E03.0020.0002] # CAUCASIAN ALBANIAN LETTER QAR
+1054E ; [.4E04.0020.0002] # CAUCASIAN ALBANIAN LETTER NOWC
+1054F ; [.4E05.0020.0002] # CAUCASIAN ALBANIAN LETTER DZYAY
+10550 ; [.4E06.0020.0002] # CAUCASIAN ALBANIAN LETTER SHAK
+10551 ; [.4E07.0020.0002] # CAUCASIAN ALBANIAN LETTER JAYN
+10552 ; [.4E08.0020.0002] # CAUCASIAN ALBANIAN LETTER ON
+10553 ; [.4E09.0020.0002] # CAUCASIAN ALBANIAN LETTER TYAY
+10554 ; [.4E0A.0020.0002] # CAUCASIAN ALBANIAN LETTER FAM
+10555 ; [.4E0B.0020.0002] # CAUCASIAN ALBANIAN LETTER DZAY
+10556 ; [.4E0C.0020.0002] # CAUCASIAN ALBANIAN LETTER CHAT
+10557 ; [.4E0D.0020.0002] # CAUCASIAN ALBANIAN LETTER PEN
+10558 ; [.4E0E.0020.0002] # CAUCASIAN ALBANIAN LETTER GHEYS
+10559 ; [.4E0F.0020.0002] # CAUCASIAN ALBANIAN LETTER RAT
+1055A ; [.4E10.0020.0002] # CAUCASIAN ALBANIAN LETTER SEYK
+1055B ; [.4E11.0020.0002] # CAUCASIAN ALBANIAN LETTER VEYZ
+1055C ; [.4E12.0020.0002] # CAUCASIAN ALBANIAN LETTER TIWR
+1055D ; [.4E13.0020.0002] # CAUCASIAN ALBANIAN LETTER SHOY
+1055E ; [.4E14.0020.0002] # CAUCASIAN ALBANIAN LETTER IWN
+1055F ; [.4E15.0020.0002] # CAUCASIAN ALBANIAN LETTER CYAW
+10560 ; [.4E16.0020.0002] # CAUCASIAN ALBANIAN LETTER CAYN
+10561 ; [.4E17.0020.0002] # CAUCASIAN ALBANIAN LETTER YAYD
+10562 ; [.4E18.0020.0002] # CAUCASIAN ALBANIAN LETTER PIWR
+10563 ; [.4E19.0020.0002] # CAUCASIAN ALBANIAN LETTER KIW
+10597 ; [.4E1A.0020.0002] # VITHKUQI SMALL LETTER A
+10570 ; [.4E1A.0020.0008] # VITHKUQI CAPITAL LETTER A
+10598 ; [.4E1B.0020.0002] # VITHKUQI SMALL LETTER BBE
+10571 ; [.4E1B.0020.0008] # VITHKUQI CAPITAL LETTER BBE
+10599 ; [.4E1C.0020.0002] # VITHKUQI SMALL LETTER BE
+10572 ; [.4E1C.0020.0008] # VITHKUQI CAPITAL LETTER BE
+1059A ; [.4E1D.0020.0002] # VITHKUQI SMALL LETTER CE
+10573 ; [.4E1D.0020.0008] # VITHKUQI CAPITAL LETTER CE
+1059B ; [.4E1E.0020.0002] # VITHKUQI SMALL LETTER CHE
+10574 ; [.4E1E.0020.0008] # VITHKUQI CAPITAL LETTER CHE
+1059C ; [.4E1F.0020.0002] # VITHKUQI SMALL LETTER DE
+10575 ; [.4E1F.0020.0008] # VITHKUQI CAPITAL LETTER DE
+1059D ; [.4E20.0020.0002] # VITHKUQI SMALL LETTER DHE
+10576 ; [.4E20.0020.0008] # VITHKUQI CAPITAL LETTER DHE
+1059E ; [.4E21.0020.0002] # VITHKUQI SMALL LETTER EI
+10577 ; [.4E21.0020.0008] # VITHKUQI CAPITAL LETTER EI
+1059F ; [.4E22.0020.0002] # VITHKUQI SMALL LETTER E
+10578 ; [.4E22.0020.0008] # VITHKUQI CAPITAL LETTER E
+105A0 ; [.4E23.0020.0002] # VITHKUQI SMALL LETTER FE
+10579 ; [.4E23.0020.0008] # VITHKUQI CAPITAL LETTER FE
+105A1 ; [.4E24.0020.0002] # VITHKUQI SMALL LETTER GA
+1057A ; [.4E24.0020.0008] # VITHKUQI CAPITAL LETTER GA
+105A3 ; [.4E25.0020.0002] # VITHKUQI SMALL LETTER HA
+1057C ; [.4E25.0020.0008] # VITHKUQI CAPITAL LETTER HA
+105A4 ; [.4E26.0020.0002] # VITHKUQI SMALL LETTER HHA
+1057D ; [.4E26.0020.0008] # VITHKUQI CAPITAL LETTER HHA
+105A5 ; [.4E27.0020.0002] # VITHKUQI SMALL LETTER I
+1057E ; [.4E27.0020.0008] # VITHKUQI CAPITAL LETTER I
+105A6 ; [.4E28.0020.0002] # VITHKUQI SMALL LETTER IJE
+1057F ; [.4E28.0020.0008] # VITHKUQI CAPITAL LETTER IJE
+105A7 ; [.4E29.0020.0002] # VITHKUQI SMALL LETTER JE
+10580 ; [.4E29.0020.0008] # VITHKUQI CAPITAL LETTER JE
+105A8 ; [.4E2A.0020.0002] # VITHKUQI SMALL LETTER KA
+10581 ; [.4E2A.0020.0008] # VITHKUQI CAPITAL LETTER KA
+105A9 ; [.4E2B.0020.0002] # VITHKUQI SMALL LETTER LA
+10582 ; [.4E2B.0020.0008] # VITHKUQI CAPITAL LETTER LA
+105AA ; [.4E2C.0020.0002] # VITHKUQI SMALL LETTER LLA
+10583 ; [.4E2C.0020.0008] # VITHKUQI CAPITAL LETTER LLA
+105AB ; [.4E2D.0020.0002] # VITHKUQI SMALL LETTER ME
+10584 ; [.4E2D.0020.0008] # VITHKUQI CAPITAL LETTER ME
+105AC ; [.4E2E.0020.0002] # VITHKUQI SMALL LETTER NE
+10585 ; [.4E2E.0020.0008] # VITHKUQI CAPITAL LETTER NE
+105AD ; [.4E2F.0020.0002] # VITHKUQI SMALL LETTER NJE
+10586 ; [.4E2F.0020.0008] # VITHKUQI CAPITAL LETTER NJE
+105AE ; [.4E30.0020.0002] # VITHKUQI SMALL LETTER O
+10587 ; [.4E30.0020.0008] # VITHKUQI CAPITAL LETTER O
+105AF ; [.4E31.0020.0002] # VITHKUQI SMALL LETTER PE
+10588 ; [.4E31.0020.0008] # VITHKUQI CAPITAL LETTER PE
+105B0 ; [.4E32.0020.0002] # VITHKUQI SMALL LETTER QA
+10589 ; [.4E32.0020.0008] # VITHKUQI CAPITAL LETTER QA
+105B1 ; [.4E33.0020.0002] # VITHKUQI SMALL LETTER RE
+1058A ; [.4E33.0020.0008] # VITHKUQI CAPITAL LETTER RE
+105B3 ; [.4E34.0020.0002] # VITHKUQI SMALL LETTER SE
+1058C ; [.4E34.0020.0008] # VITHKUQI CAPITAL LETTER SE
+105B4 ; [.4E35.0020.0002] # VITHKUQI SMALL LETTER SHE
+1058D ; [.4E35.0020.0008] # VITHKUQI CAPITAL LETTER SHE
+105B5 ; [.4E36.0020.0002] # VITHKUQI SMALL LETTER TE
+1058E ; [.4E36.0020.0008] # VITHKUQI CAPITAL LETTER TE
+105B6 ; [.4E37.0020.0002] # VITHKUQI SMALL LETTER THE
+1058F ; [.4E37.0020.0008] # VITHKUQI CAPITAL LETTER THE
+105B7 ; [.4E38.0020.0002] # VITHKUQI SMALL LETTER U
+10590 ; [.4E38.0020.0008] # VITHKUQI CAPITAL LETTER U
+105B8 ; [.4E39.0020.0002] # VITHKUQI SMALL LETTER VE
+10591 ; [.4E39.0020.0008] # VITHKUQI CAPITAL LETTER VE
+105B9 ; [.4E3A.0020.0002] # VITHKUQI SMALL LETTER XE
+10592 ; [.4E3A.0020.0008] # VITHKUQI CAPITAL LETTER XE
+105BB ; [.4E3B.0020.0002] # VITHKUQI SMALL LETTER Y
+10594 ; [.4E3B.0020.0008] # VITHKUQI CAPITAL LETTER Y
+105BC ; [.4E3C.0020.0002] # VITHKUQI SMALL LETTER ZE
+10595 ; [.4E3C.0020.0008] # VITHKUQI CAPITAL LETTER ZE
+110D0 ; [.4E3D.0020.0002] # SORA SOMPENG LETTER SAH
+110D1 ; [.4E3E.0020.0002] # SORA SOMPENG LETTER TAH
+110D2 ; [.4E3F.0020.0002] # SORA SOMPENG LETTER BAH
+110D3 ; [.4E40.0020.0002] # SORA SOMPENG LETTER CAH
+110D4 ; [.4E41.0020.0002] # SORA SOMPENG LETTER DAH
+110D5 ; [.4E42.0020.0002] # SORA SOMPENG LETTER GAH
+110D6 ; [.4E43.0020.0002] # SORA SOMPENG LETTER MAH
+110D7 ; [.4E44.0020.0002] # SORA SOMPENG LETTER NGAH
+110D8 ; [.4E45.0020.0002] # SORA SOMPENG LETTER LAH
+110D9 ; [.4E46.0020.0002] # SORA SOMPENG LETTER NAH
+110DA ; [.4E47.0020.0002] # SORA SOMPENG LETTER VAH
+110DB ; [.4E48.0020.0002] # SORA SOMPENG LETTER PAH
+110DC ; [.4E49.0020.0002] # SORA SOMPENG LETTER YAH
+110DD ; [.4E4A.0020.0002] # SORA SOMPENG LETTER RAH
+110DE ; [.4E4B.0020.0002] # SORA SOMPENG LETTER HAH
+110DF ; [.4E4C.0020.0002] # SORA SOMPENG LETTER KAH
+110E0 ; [.4E4D.0020.0002] # SORA SOMPENG LETTER JAH
+110E1 ; [.4E4E.0020.0002] # SORA SOMPENG LETTER NYAH
+110E2 ; [.4E4F.0020.0002] # SORA SOMPENG LETTER AH
+110E3 ; [.4E50.0020.0002] # SORA SOMPENG LETTER EEH
+110E4 ; [.4E51.0020.0002] # SORA SOMPENG LETTER IH
+110E5 ; [.4E52.0020.0002] # SORA SOMPENG LETTER UH
+110E6 ; [.4E53.0020.0002] # SORA SOMPENG LETTER OH
+110E7 ; [.4E54.0020.0002] # SORA SOMPENG LETTER EH
+110E8 ; [.4E55.0020.0002] # SORA SOMPENG LETTER MAE
+16A40 ; [.4E56.0020.0002] # MRO LETTER TA
+16A41 ; [.4E57.0020.0002] # MRO LETTER NGI
+16A42 ; [.4E58.0020.0002] # MRO LETTER YO
+16A43 ; [.4E59.0020.0002] # MRO LETTER MIM
+16A44 ; [.4E5A.0020.0002] # MRO LETTER BA
+16A45 ; [.4E5B.0020.0002] # MRO LETTER DA
+16A46 ; [.4E5C.0020.0002] # MRO LETTER A
+16A47 ; [.4E5D.0020.0002] # MRO LETTER PHI
+16A48 ; [.4E5E.0020.0002] # MRO LETTER KHAI
+16A49 ; [.4E5F.0020.0002] # MRO LETTER HAO
+16A4A ; [.4E60.0020.0002] # MRO LETTER DAI
+16A4B ; [.4E61.0020.0002] # MRO LETTER CHU
+16A4C ; [.4E62.0020.0002] # MRO LETTER KEAAE
+16A4D ; [.4E63.0020.0002] # MRO LETTER OL
+16A4E ; [.4E64.0020.0002] # MRO LETTER MAEM
+16A4F ; [.4E65.0020.0002] # MRO LETTER NIN
+16A50 ; [.4E66.0020.0002] # MRO LETTER PA
+16A51 ; [.4E67.0020.0002] # MRO LETTER OO
+16A52 ; [.4E68.0020.0002] # MRO LETTER O
+16A53 ; [.4E69.0020.0002] # MRO LETTER RO
+16A54 ; [.4E6A.0020.0002] # MRO LETTER SHI
+16A55 ; [.4E6B.0020.0002] # MRO LETTER THEA
+16A56 ; [.4E6C.0020.0002] # MRO LETTER EA
+16A57 ; [.4E6D.0020.0002] # MRO LETTER WA
+16A58 ; [.4E6E.0020.0002] # MRO LETTER E
+16A59 ; [.4E6F.0020.0002] # MRO LETTER KO
+16A5A ; [.4E70.0020.0002] # MRO LETTER LAN
+16A5B ; [.4E71.0020.0002] # MRO LETTER LA
+16A5C ; [.4E72.0020.0002] # MRO LETTER HAI
+16A5D ; [.4E73.0020.0002] # MRO LETTER RI
+16A5E ; [.4E74.0020.0002] # MRO LETTER TEK
+16A70 ; [.4E75.0020.0002] # TANGSA LETTER OZ
+16A71 ; [.4E76.0020.0002] # TANGSA LETTER OC
+16A72 ; [.4E77.0020.0002] # TANGSA LETTER OQ
+16A73 ; [.4E78.0020.0002] # TANGSA LETTER OX
+16A74 ; [.4E79.0020.0002] # TANGSA LETTER AZ
+16A75 ; [.4E7A.0020.0002] # TANGSA LETTER AC
+16A76 ; [.4E7B.0020.0002] # TANGSA LETTER AQ
+16A77 ; [.4E7C.0020.0002] # TANGSA LETTER AX
+16A78 ; [.4E7D.0020.0002] # TANGSA LETTER VZ
+16A79 ; [.4E7E.0020.0002] # TANGSA LETTER VC
+16A7A ; [.4E7F.0020.0002] # TANGSA LETTER VQ
+16A7B ; [.4E80.0020.0002] # TANGSA LETTER VX
+16A7C ; [.4E81.0020.0002] # TANGSA LETTER EZ
+16A7D ; [.4E82.0020.0002] # TANGSA LETTER EC
+16A7E ; [.4E83.0020.0002] # TANGSA LETTER EQ
+16A7F ; [.4E84.0020.0002] # TANGSA LETTER EX
+16A80 ; [.4E85.0020.0002] # TANGSA LETTER IZ
+16A81 ; [.4E86.0020.0002] # TANGSA LETTER IC
+16A82 ; [.4E87.0020.0002] # TANGSA LETTER IQ
+16A83 ; [.4E88.0020.0002] # TANGSA LETTER IX
+16A84 ; [.4E89.0020.0002] # TANGSA LETTER UZ
+16A85 ; [.4E8A.0020.0002] # TANGSA LETTER UC
+16A86 ; [.4E8B.0020.0002] # TANGSA LETTER UQ
+16A87 ; [.4E8C.0020.0002] # TANGSA LETTER UX
+16A88 ; [.4E8D.0020.0002] # TANGSA LETTER AWZ
+16A89 ; [.4E8E.0020.0002] # TANGSA LETTER AWC
+16A8A ; [.4E8F.0020.0002] # TANGSA LETTER AWQ
+16A8B ; [.4E90.0020.0002] # TANGSA LETTER AWX
+16A8C ; [.4E91.0020.0002] # TANGSA LETTER UIZ
+16A8D ; [.4E92.0020.0002] # TANGSA LETTER UIC
+16A8E ; [.4E93.0020.0002] # TANGSA LETTER UIQ
+16A8F ; [.4E94.0020.0002] # TANGSA LETTER UIX
+16A90 ; [.4E95.0020.0002] # TANGSA LETTER FINAL NG
+16A91 ; [.4E96.0020.0002] # TANGSA LETTER LONG UEX
+16A92 ; [.4E97.0020.0002] # TANGSA LETTER SHORT UEZ
+16A93 ; [.4E98.0020.0002] # TANGSA LETTER SHORT AWX
+16A94 ; [.4E99.0020.0002] # TANGSA LETTER UEC
+16A95 ; [.4E9A.0020.0002] # TANGSA LETTER UEZ
+16A96 ; [.4E9B.0020.0002] # TANGSA LETTER UEQ
+16A97 ; [.4E9C.0020.0002] # TANGSA LETTER UEX
+16A98 ; [.4E9D.0020.0002] # TANGSA LETTER UIUZ
+16A99 ; [.4E9E.0020.0002] # TANGSA LETTER UIUC
+16A9A ; [.4E9F.0020.0002] # TANGSA LETTER UIUQ
+16A9B ; [.4EA0.0020.0002] # TANGSA LETTER UIUX
+16A9C ; [.4EA1.0020.0002] # TANGSA LETTER MZ
+16A9D ; [.4EA2.0020.0002] # TANGSA LETTER MC
+16A9E ; [.4EA3.0020.0002] # TANGSA LETTER MQ
+16A9F ; [.4EA4.0020.0002] # TANGSA LETTER MX
+16AA0 ; [.4EA5.0020.0002] # TANGSA LETTER KA
+16AA1 ; [.4EA6.0020.0002] # TANGSA LETTER KHA
+16AA2 ; [.4EA7.0020.0002] # TANGSA LETTER GA
+16AA3 ; [.4EA8.0020.0002] # TANGSA LETTER NGA
+16AA4 ; [.4EA9.0020.0002] # TANGSA LETTER SA
+16AA5 ; [.4EAA.0020.0002] # TANGSA LETTER YA
+16AA6 ; [.4EAB.0020.0002] # TANGSA LETTER WA
+16AA7 ; [.4EAC.0020.0002] # TANGSA LETTER PA
+16AA8 ; [.4EAD.0020.0002] # TANGSA LETTER NYA
+16AA9 ; [.4EAE.0020.0002] # TANGSA LETTER PHA
+16AAA ; [.4EAF.0020.0002] # TANGSA LETTER BA
+16AAB ; [.4EB0.0020.0002] # TANGSA LETTER MA
+16AAC ; [.4EB1.0020.0002] # TANGSA LETTER NA
+16AAD ; [.4EB2.0020.0002] # TANGSA LETTER HA
+16AAE ; [.4EB3.0020.0002] # TANGSA LETTER LA
+16AAF ; [.4EB4.0020.0002] # TANGSA LETTER HTA
+16AB0 ; [.4EB5.0020.0002] # TANGSA LETTER TA
+16AB1 ; [.4EB6.0020.0002] # TANGSA LETTER DA
+16AB2 ; [.4EB7.0020.0002] # TANGSA LETTER RA
+16AB3 ; [.4EB8.0020.0002] # TANGSA LETTER NHA
+16AB4 ; [.4EB9.0020.0002] # TANGSA LETTER SHA
+16AB5 ; [.4EBA.0020.0002] # TANGSA LETTER CA
+16AB6 ; [.4EBB.0020.0002] # TANGSA LETTER TSA
+16AB7 ; [.4EBC.0020.0002] # TANGSA LETTER GHA
+16AB8 ; [.4EBD.0020.0002] # TANGSA LETTER HTTA
+16AB9 ; [.4EBE.0020.0002] # TANGSA LETTER THA
+16ABA ; [.4EBF.0020.0002] # TANGSA LETTER XA
+16ABB ; [.4EC0.0020.0002] # TANGSA LETTER FA
+16ABC ; [.4EC1.0020.0002] # TANGSA LETTER DHA
+16ABD ; [.4EC2.0020.0002] # TANGSA LETTER CHA
+16ABE ; [.4EC3.0020.0002] # TANGSA LETTER ZA
+10000 ; [.4EC4.0020.0002] # LINEAR B SYLLABLE B008 A
+10001 ; [.4EC5.0020.0002] # LINEAR B SYLLABLE B038 E
+10002 ; [.4EC6.0020.0002] # LINEAR B SYLLABLE B028 I
+10003 ; [.4EC7.0020.0002] # LINEAR B SYLLABLE B061 O
+10004 ; [.4EC8.0020.0002] # LINEAR B SYLLABLE B010 U
+10005 ; [.4EC9.0020.0002] # LINEAR B SYLLABLE B001 DA
+10006 ; [.4ECA.0020.0002] # LINEAR B SYLLABLE B045 DE
+10007 ; [.4ECB.0020.0002] # LINEAR B SYLLABLE B007 DI
+10008 ; [.4ECC.0020.0002] # LINEAR B SYLLABLE B014 DO
+10009 ; [.4ECD.0020.0002] # LINEAR B SYLLABLE B051 DU
+1000A ; [.4ECE.0020.0002] # LINEAR B SYLLABLE B057 JA
+1000B ; [.4ECF.0020.0002] # LINEAR B SYLLABLE B046 JE
+1000D ; [.4ED0.0020.0002] # LINEAR B SYLLABLE B036 JO
+1000E ; [.4ED1.0020.0002] # LINEAR B SYLLABLE B065 JU
+1000F ; [.4ED2.0020.0002] # LINEAR B SYLLABLE B077 KA
+10010 ; [.4ED3.0020.0002] # LINEAR B SYLLABLE B044 KE
+10011 ; [.4ED4.0020.0002] # LINEAR B SYLLABLE B067 KI
+10012 ; [.4ED5.0020.0002] # LINEAR B SYLLABLE B070 KO
+10013 ; [.4ED6.0020.0002] # LINEAR B SYLLABLE B081 KU
+10014 ; [.4ED7.0020.0002] # LINEAR B SYLLABLE B080 MA
+10015 ; [.4ED8.0020.0002] # LINEAR B SYLLABLE B013 ME
+10016 ; [.4ED9.0020.0002] # LINEAR B SYLLABLE B073 MI
+10017 ; [.4EDA.0020.0002] # LINEAR B SYLLABLE B015 MO
+10018 ; [.4EDB.0020.0002] # LINEAR B SYLLABLE B023 MU
+10019 ; [.4EDC.0020.0002] # LINEAR B SYLLABLE B006 NA
+1001A ; [.4EDD.0020.0002] # LINEAR B SYLLABLE B024 NE
+1001B ; [.4EDE.0020.0002] # LINEAR B SYLLABLE B030 NI
+1001C ; [.4EDF.0020.0002] # LINEAR B SYLLABLE B052 NO
+1001D ; [.4EE0.0020.0002] # LINEAR B SYLLABLE B055 NU
+1001E ; [.4EE1.0020.0002] # LINEAR B SYLLABLE B003 PA
+1001F ; [.4EE2.0020.0002] # LINEAR B SYLLABLE B072 PE
+10020 ; [.4EE3.0020.0002] # LINEAR B SYLLABLE B039 PI
+10021 ; [.4EE4.0020.0002] # LINEAR B SYLLABLE B011 PO
+10022 ; [.4EE5.0020.0002] # LINEAR B SYLLABLE B050 PU
+10023 ; [.4EE6.0020.0002] # LINEAR B SYLLABLE B016 QA
+10024 ; [.4EE7.0020.0002] # LINEAR B SYLLABLE B078 QE
+10025 ; [.4EE8.0020.0002] # LINEAR B SYLLABLE B021 QI
+10026 ; [.4EE9.0020.0002] # LINEAR B SYLLABLE B032 QO
+10028 ; [.4EEA.0020.0002] # LINEAR B SYLLABLE B060 RA
+10029 ; [.4EEB.0020.0002] # LINEAR B SYLLABLE B027 RE
+1002A ; [.4EEC.0020.0002] # LINEAR B SYLLABLE B053 RI
+1002B ; [.4EED.0020.0002] # LINEAR B SYLLABLE B002 RO
+1002C ; [.4EEE.0020.0002] # LINEAR B SYLLABLE B026 RU
+1002D ; [.4EEF.0020.0002] # LINEAR B SYLLABLE B031 SA
+1002E ; [.4EF0.0020.0002] # LINEAR B SYLLABLE B009 SE
+1002F ; [.4EF1.0020.0002] # LINEAR B SYLLABLE B041 SI
+10030 ; [.4EF2.0020.0002] # LINEAR B SYLLABLE B012 SO
+10031 ; [.4EF3.0020.0002] # LINEAR B SYLLABLE B058 SU
+10032 ; [.4EF4.0020.0002] # LINEAR B SYLLABLE B059 TA
+10033 ; [.4EF5.0020.0002] # LINEAR B SYLLABLE B004 TE
+10034 ; [.4EF6.0020.0002] # LINEAR B SYLLABLE B037 TI
+10035 ; [.4EF7.0020.0002] # LINEAR B SYLLABLE B005 TO
+10036 ; [.4EF8.0020.0002] # LINEAR B SYLLABLE B069 TU
+10037 ; [.4EF9.0020.0002] # LINEAR B SYLLABLE B054 WA
+10038 ; [.4EFA.0020.0002] # LINEAR B SYLLABLE B075 WE
+10039 ; [.4EFB.0020.0002] # LINEAR B SYLLABLE B040 WI
+1003A ; [.4EFC.0020.0002] # LINEAR B SYLLABLE B042 WO
+1003C ; [.4EFD.0020.0002] # LINEAR B SYLLABLE B017 ZA
+1003D ; [.4EFE.0020.0002] # LINEAR B SYLLABLE B074 ZE
+1003F ; [.4EFF.0020.0002] # LINEAR B SYLLABLE B020 ZO
+10040 ; [.4F00.0020.0002] # LINEAR B SYLLABLE B025 A2
+10041 ; [.4F01.0020.0002] # LINEAR B SYLLABLE B043 A3
+10042 ; [.4F02.0020.0002] # LINEAR B SYLLABLE B085 AU
+10043 ; [.4F03.0020.0002] # LINEAR B SYLLABLE B071 DWE
+10044 ; [.4F04.0020.0002] # LINEAR B SYLLABLE B090 DWO
+10045 ; [.4F05.0020.0002] # LINEAR B SYLLABLE B048 NWA
+10046 ; [.4F06.0020.0002] # LINEAR B SYLLABLE B029 PU2
+10047 ; [.4F07.0020.0002] # LINEAR B SYLLABLE B062 PTE
+10048 ; [.4F08.0020.0002] # LINEAR B SYLLABLE B076 RA2
+10049 ; [.4F09.0020.0002] # LINEAR B SYLLABLE B033 RA3
+1004A ; [.4F0A.0020.0002] # LINEAR B SYLLABLE B068 RO2
+1004B ; [.4F0B.0020.0002] # LINEAR B SYLLABLE B066 TA2
+1004C ; [.4F0C.0020.0002] # LINEAR B SYLLABLE B087 TWE
+1004D ; [.4F0D.0020.0002] # LINEAR B SYLLABLE B091 TWO
+10050 ; [.4F0E.0020.0002] # LINEAR B SYMBOL B018
+10051 ; [.4F0F.0020.0002] # LINEAR B SYMBOL B019
+10052 ; [.4F10.0020.0002] # LINEAR B SYMBOL B022
+10053 ; [.4F11.0020.0002] # LINEAR B SYMBOL B034
+10054 ; [.4F12.0020.0002] # LINEAR B SYMBOL B047
+10055 ; [.4F13.0020.0002] # LINEAR B SYMBOL B049
+10056 ; [.4F14.0020.0002] # LINEAR B SYMBOL B056
+10057 ; [.4F15.0020.0002] # LINEAR B SYMBOL B063
+10058 ; [.4F16.0020.0002] # LINEAR B SYMBOL B064
+10059 ; [.4F17.0020.0002] # LINEAR B SYMBOL B079
+1005A ; [.4F18.0020.0002] # LINEAR B SYMBOL B082
+1005B ; [.4F19.0020.0002] # LINEAR B SYMBOL B083
+1005C ; [.4F1A.0020.0002] # LINEAR B SYMBOL B086
+1005D ; [.4F1B.0020.0002] # LINEAR B SYMBOL B089
+10080 ; [.4F1C.0020.0002] # LINEAR B IDEOGRAM B100 MAN
+10081 ; [.4F1D.0020.0002] # LINEAR B IDEOGRAM B102 WOMAN
+10082 ; [.4F1E.0020.0002] # LINEAR B IDEOGRAM B104 DEER
+10083 ; [.4F1F.0020.0002] # LINEAR B IDEOGRAM B105 EQUID
+10084 ; [.4F20.0020.0002] # LINEAR B IDEOGRAM B105F MARE
+10085 ; [.4F21.0020.0002] # LINEAR B IDEOGRAM B105M STALLION
+10086 ; [.4F22.0020.0002] # LINEAR B IDEOGRAM B106F EWE
+10087 ; [.4F23.0020.0002] # LINEAR B IDEOGRAM B106M RAM
+10088 ; [.4F24.0020.0002] # LINEAR B IDEOGRAM B107F SHE-GOAT
+10089 ; [.4F25.0020.0002] # LINEAR B IDEOGRAM B107M HE-GOAT
+1008A ; [.4F26.0020.0002] # LINEAR B IDEOGRAM B108F SOW
+1008B ; [.4F27.0020.0002] # LINEAR B IDEOGRAM B108M BOAR
+1008C ; [.4F28.0020.0002] # LINEAR B IDEOGRAM B109F COW
+1008D ; [.4F29.0020.0002] # LINEAR B IDEOGRAM B109M BULL
+1008E ; [.4F2A.0020.0002] # LINEAR B IDEOGRAM B120 WHEAT
+1008F ; [.4F2B.0020.0002] # LINEAR B IDEOGRAM B121 BARLEY
+10090 ; [.4F2C.0020.0002] # LINEAR B IDEOGRAM B122 OLIVE
+10091 ; [.4F2D.0020.0002] # LINEAR B IDEOGRAM B123 SPICE
+10092 ; [.4F2E.0020.0002] # LINEAR B IDEOGRAM B125 CYPERUS
+10093 ; [.4F2F.0020.0002] # LINEAR B MONOGRAM B127 KAPO
+10094 ; [.4F30.0020.0002] # LINEAR B MONOGRAM B128 KANAKO
+10095 ; [.4F31.0020.0002] # LINEAR B IDEOGRAM B130 OIL
+10096 ; [.4F32.0020.0002] # LINEAR B IDEOGRAM B131 WINE
+10097 ; [.4F33.0020.0002] # LINEAR B IDEOGRAM B132
+10098 ; [.4F34.0020.0002] # LINEAR B MONOGRAM B133 AREPA
+10099 ; [.4F35.0020.0002] # LINEAR B MONOGRAM B135 MERI
+1009A ; [.4F36.0020.0002] # LINEAR B IDEOGRAM B140 BRONZE
+1009B ; [.4F37.0020.0002] # LINEAR B IDEOGRAM B141 GOLD
+1009C ; [.4F38.0020.0002] # LINEAR B IDEOGRAM B142
+1009D ; [.4F39.0020.0002] # LINEAR B IDEOGRAM B145 WOOL
+1009E ; [.4F3A.0020.0002] # LINEAR B IDEOGRAM B146
+1009F ; [.4F3B.0020.0002] # LINEAR B IDEOGRAM B150
+100A0 ; [.4F3C.0020.0002] # LINEAR B IDEOGRAM B151 HORN
+100A1 ; [.4F3D.0020.0002] # LINEAR B IDEOGRAM B152
+100A2 ; [.4F3E.0020.0002] # LINEAR B IDEOGRAM B153
+100A3 ; [.4F3F.0020.0002] # LINEAR B IDEOGRAM B154
+100A4 ; [.4F40.0020.0002] # LINEAR B MONOGRAM B156 TURO2
+100A5 ; [.4F41.0020.0002] # LINEAR B IDEOGRAM B157
+100A6 ; [.4F42.0020.0002] # LINEAR B IDEOGRAM B158
+100A7 ; [.4F43.0020.0002] # LINEAR B IDEOGRAM B159 CLOTH
+100A8 ; [.4F44.0020.0002] # LINEAR B IDEOGRAM B160
+100A9 ; [.4F45.0020.0002] # LINEAR B IDEOGRAM B161
+100AA ; [.4F46.0020.0002] # LINEAR B IDEOGRAM B162 GARMENT
+100AB ; [.4F47.0020.0002] # LINEAR B IDEOGRAM B163 ARMOUR
+100AC ; [.4F48.0020.0002] # LINEAR B IDEOGRAM B164
+100AD ; [.4F49.0020.0002] # LINEAR B IDEOGRAM B165
+100AE ; [.4F4A.0020.0002] # LINEAR B IDEOGRAM B166
+100AF ; [.4F4B.0020.0002] # LINEAR B IDEOGRAM B167
+100B0 ; [.4F4C.0020.0002] # LINEAR B IDEOGRAM B168
+100B1 ; [.4F4D.0020.0002] # LINEAR B IDEOGRAM B169
+100B2 ; [.4F4E.0020.0002] # LINEAR B IDEOGRAM B170
+100B3 ; [.4F4F.0020.0002] # LINEAR B IDEOGRAM B171
+100B4 ; [.4F50.0020.0002] # LINEAR B IDEOGRAM B172
+100B5 ; [.4F51.0020.0002] # LINEAR B IDEOGRAM B173 MONTH
+100B6 ; [.4F52.0020.0002] # LINEAR B IDEOGRAM B174
+100B7 ; [.4F53.0020.0002] # LINEAR B IDEOGRAM B176 TREE
+100B8 ; [.4F54.0020.0002] # LINEAR B IDEOGRAM B177
+100B9 ; [.4F55.0020.0002] # LINEAR B IDEOGRAM B178
+100BA ; [.4F56.0020.0002] # LINEAR B IDEOGRAM B179
+100BB ; [.4F57.0020.0002] # LINEAR B IDEOGRAM B180
+100BC ; [.4F58.0020.0002] # LINEAR B IDEOGRAM B181
+100BD ; [.4F59.0020.0002] # LINEAR B IDEOGRAM B182
+100BE ; [.4F5A.0020.0002] # LINEAR B IDEOGRAM B183
+100BF ; [.4F5B.0020.0002] # LINEAR B IDEOGRAM B184
+100C0 ; [.4F5C.0020.0002] # LINEAR B IDEOGRAM B185
+100C1 ; [.4F5D.0020.0002] # LINEAR B IDEOGRAM B189
+100C2 ; [.4F5E.0020.0002] # LINEAR B IDEOGRAM B190
+100C3 ; [.4F5F.0020.0002] # LINEAR B IDEOGRAM B191 HELMET
+100C4 ; [.4F60.0020.0002] # LINEAR B IDEOGRAM B220 FOOTSTOOL
+100C5 ; [.4F61.0020.0002] # LINEAR B IDEOGRAM B225 BATHTUB
+100C6 ; [.4F62.0020.0002] # LINEAR B IDEOGRAM B230 SPEAR
+100C7 ; [.4F63.0020.0002] # LINEAR B IDEOGRAM B231 ARROW
+100C8 ; [.4F64.0020.0002] # LINEAR B IDEOGRAM B232
+100C9 ; [.4F65.0020.0002] # LINEAR B IDEOGRAM B233 SWORD
+100CA ; [.4F66.0020.0002] # LINEAR B IDEOGRAM B234
+100CB ; [.4F67.0020.0002] # LINEAR B IDEOGRAM B236
+100CC ; [.4F68.0020.0002] # LINEAR B IDEOGRAM B240 WHEELED CHARIOT
+100CD ; [.4F69.0020.0002] # LINEAR B IDEOGRAM B241 CHARIOT
+100CE ; [.4F6A.0020.0002] # LINEAR B IDEOGRAM B242 CHARIOT FRAME
+100CF ; [.4F6B.0020.0002] # LINEAR B IDEOGRAM B243 WHEEL
+100D0 ; [.4F6C.0020.0002] # LINEAR B IDEOGRAM B245
+100D1 ; [.4F6D.0020.0002] # LINEAR B IDEOGRAM B246
+100D2 ; [.4F6E.0020.0002] # LINEAR B MONOGRAM B247 DIPTE
+100D3 ; [.4F6F.0020.0002] # LINEAR B IDEOGRAM B248
+100D4 ; [.4F70.0020.0002] # LINEAR B IDEOGRAM B249
+100D5 ; [.4F71.0020.0002] # LINEAR B IDEOGRAM B251
+100D6 ; [.4F72.0020.0002] # LINEAR B IDEOGRAM B252
+100D7 ; [.4F73.0020.0002] # LINEAR B IDEOGRAM B253
+100D8 ; [.4F74.0020.0002] # LINEAR B IDEOGRAM B254 DART
+100D9 ; [.4F75.0020.0002] # LINEAR B IDEOGRAM B255
+100DA ; [.4F76.0020.0002] # LINEAR B IDEOGRAM B256
+100DB ; [.4F77.0020.0002] # LINEAR B IDEOGRAM B257
+100DC ; [.4F78.0020.0002] # LINEAR B IDEOGRAM B258
+100DD ; [.4F79.0020.0002] # LINEAR B IDEOGRAM B259
+100DE ; [.4F7A.0020.0002] # LINEAR B IDEOGRAM VESSEL B155
+100DF ; [.4F7B.0020.0002] # LINEAR B IDEOGRAM VESSEL B200
+100E0 ; [.4F7C.0020.0002] # LINEAR B IDEOGRAM VESSEL B201
+100E1 ; [.4F7D.0020.0002] # LINEAR B IDEOGRAM VESSEL B202
+100E2 ; [.4F7E.0020.0002] # LINEAR B IDEOGRAM VESSEL B203
+100E3 ; [.4F7F.0020.0002] # LINEAR B IDEOGRAM VESSEL B204
+100E4 ; [.4F80.0020.0002] # LINEAR B IDEOGRAM VESSEL B205
+100E5 ; [.4F81.0020.0002] # LINEAR B IDEOGRAM VESSEL B206
+100E6 ; [.4F82.0020.0002] # LINEAR B IDEOGRAM VESSEL B207
+100E7 ; [.4F83.0020.0002] # LINEAR B IDEOGRAM VESSEL B208
+100E8 ; [.4F84.0020.0002] # LINEAR B IDEOGRAM VESSEL B209
+100E9 ; [.4F85.0020.0002] # LINEAR B IDEOGRAM VESSEL B210
+100EA ; [.4F86.0020.0002] # LINEAR B IDEOGRAM VESSEL B211
+100EB ; [.4F87.0020.0002] # LINEAR B IDEOGRAM VESSEL B212
+100EC ; [.4F88.0020.0002] # LINEAR B IDEOGRAM VESSEL B213
+100ED ; [.4F89.0020.0002] # LINEAR B IDEOGRAM VESSEL B214
+100EE ; [.4F8A.0020.0002] # LINEAR B IDEOGRAM VESSEL B215
+100EF ; [.4F8B.0020.0002] # LINEAR B IDEOGRAM VESSEL B216
+100F0 ; [.4F8C.0020.0002] # LINEAR B IDEOGRAM VESSEL B217
+100F1 ; [.4F8D.0020.0002] # LINEAR B IDEOGRAM VESSEL B218
+100F2 ; [.4F8E.0020.0002] # LINEAR B IDEOGRAM VESSEL B219
+100F3 ; [.4F8F.0020.0002] # LINEAR B IDEOGRAM VESSEL B221
+100F4 ; [.4F90.0020.0002] # LINEAR B IDEOGRAM VESSEL B222
+100F5 ; [.4F91.0020.0002] # LINEAR B IDEOGRAM VESSEL B226
+100F6 ; [.4F92.0020.0002] # LINEAR B IDEOGRAM VESSEL B227
+100F7 ; [.4F93.0020.0002] # LINEAR B IDEOGRAM VESSEL B228
+100F8 ; [.4F94.0020.0002] # LINEAR B IDEOGRAM VESSEL B229
+100F9 ; [.4F95.0020.0002] # LINEAR B IDEOGRAM VESSEL B250
+100FA ; [.4F96.0020.0002] # LINEAR B IDEOGRAM VESSEL B305
+10600 ; [.4F97.0020.0002] # LINEAR A SIGN AB001
+10601 ; [.4F98.0020.0002] # LINEAR A SIGN AB002
+10602 ; [.4F99.0020.0002] # LINEAR A SIGN AB003
+10603 ; [.4F9A.0020.0002] # LINEAR A SIGN AB004
+10604 ; [.4F9B.0020.0002] # LINEAR A SIGN AB005
+10605 ; [.4F9C.0020.0002] # LINEAR A SIGN AB006
+10606 ; [.4F9D.0020.0002] # LINEAR A SIGN AB007
+10607 ; [.4F9E.0020.0002] # LINEAR A SIGN AB008
+10608 ; [.4F9F.0020.0002] # LINEAR A SIGN AB009
+10609 ; [.4FA0.0020.0002] # LINEAR A SIGN AB010
+1060A ; [.4FA1.0020.0002] # LINEAR A SIGN AB011
+1060B ; [.4FA2.0020.0002] # LINEAR A SIGN AB013
+1060C ; [.4FA3.0020.0002] # LINEAR A SIGN AB016
+1060D ; [.4FA4.0020.0002] # LINEAR A SIGN AB017
+1060E ; [.4FA5.0020.0002] # LINEAR A SIGN AB020
+1060F ; [.4FA6.0020.0002] # LINEAR A SIGN AB021
+10610 ; [.4FA7.0020.0002] # LINEAR A SIGN AB021F
+10611 ; [.4FA8.0020.0002] # LINEAR A SIGN AB021M
+10612 ; [.4FA9.0020.0002] # LINEAR A SIGN AB022
+10613 ; [.4FAA.0020.0002] # LINEAR A SIGN AB022F
+10614 ; [.4FAB.0020.0002] # LINEAR A SIGN AB022M
+10615 ; [.4FAC.0020.0002] # LINEAR A SIGN AB023
+10616 ; [.4FAD.0020.0002] # LINEAR A SIGN AB023M
+10617 ; [.4FAE.0020.0002] # LINEAR A SIGN AB024
+10618 ; [.4FAF.0020.0002] # LINEAR A SIGN AB026
+10619 ; [.4FB0.0020.0002] # LINEAR A SIGN AB027
+1061A ; [.4FB1.0020.0002] # LINEAR A SIGN AB028
+1061B ; [.4FB2.0020.0002] # LINEAR A SIGN A028B
+1061C ; [.4FB3.0020.0002] # LINEAR A SIGN AB029
+1061D ; [.4FB4.0020.0002] # LINEAR A SIGN AB030
+1061E ; [.4FB5.0020.0002] # LINEAR A SIGN AB031
+1061F ; [.4FB6.0020.0002] # LINEAR A SIGN AB034
+10620 ; [.4FB7.0020.0002] # LINEAR A SIGN AB037
+10621 ; [.4FB8.0020.0002] # LINEAR A SIGN AB038
+10622 ; [.4FB9.0020.0002] # LINEAR A SIGN AB039
+10623 ; [.4FBA.0020.0002] # LINEAR A SIGN AB040
+10624 ; [.4FBB.0020.0002] # LINEAR A SIGN AB041
+10625 ; [.4FBC.0020.0002] # LINEAR A SIGN AB044
+10626 ; [.4FBD.0020.0002] # LINEAR A SIGN AB045
+10627 ; [.4FBE.0020.0002] # LINEAR A SIGN AB046
+10628 ; [.4FBF.0020.0002] # LINEAR A SIGN AB047
+10629 ; [.4FC0.0020.0002] # LINEAR A SIGN AB048
+1062A ; [.4FC1.0020.0002] # LINEAR A SIGN AB049
+1062B ; [.4FC2.0020.0002] # LINEAR A SIGN AB050
+1062C ; [.4FC3.0020.0002] # LINEAR A SIGN AB051
+1062D ; [.4FC4.0020.0002] # LINEAR A SIGN AB053
+1062E ; [.4FC5.0020.0002] # LINEAR A SIGN AB054
+1062F ; [.4FC6.0020.0002] # LINEAR A SIGN AB055
+10630 ; [.4FC7.0020.0002] # LINEAR A SIGN AB056
+10631 ; [.4FC8.0020.0002] # LINEAR A SIGN AB057
+10632 ; [.4FC9.0020.0002] # LINEAR A SIGN AB058
+10633 ; [.4FCA.0020.0002] # LINEAR A SIGN AB059
+10634 ; [.4FCB.0020.0002] # LINEAR A SIGN AB060
+10635 ; [.4FCC.0020.0002] # LINEAR A SIGN AB061
+10636 ; [.4FCD.0020.0002] # LINEAR A SIGN AB065
+10637 ; [.4FCE.0020.0002] # LINEAR A SIGN AB066
+10638 ; [.4FCF.0020.0002] # LINEAR A SIGN AB067
+10639 ; [.4FD0.0020.0002] # LINEAR A SIGN AB069
+1063A ; [.4FD1.0020.0002] # LINEAR A SIGN AB070
+1063B ; [.4FD2.0020.0002] # LINEAR A SIGN AB073
+1063C ; [.4FD3.0020.0002] # LINEAR A SIGN AB074
+1063D ; [.4FD4.0020.0002] # LINEAR A SIGN AB076
+1063E ; [.4FD5.0020.0002] # LINEAR A SIGN AB077
+1063F ; [.4FD6.0020.0002] # LINEAR A SIGN AB078
+10640 ; [.4FD7.0020.0002] # LINEAR A SIGN AB079
+10641 ; [.4FD8.0020.0002] # LINEAR A SIGN AB080
+10642 ; [.4FD9.0020.0002] # LINEAR A SIGN AB081
+10643 ; [.4FDA.0020.0002] # LINEAR A SIGN AB082
+10644 ; [.4FDB.0020.0002] # LINEAR A SIGN AB085
+10645 ; [.4FDC.0020.0002] # LINEAR A SIGN AB086
+10646 ; [.4FDD.0020.0002] # LINEAR A SIGN AB087
+10647 ; [.4FDE.0020.0002] # LINEAR A SIGN A100-102
+10648 ; [.4FDF.0020.0002] # LINEAR A SIGN AB118
+10649 ; [.4FE0.0020.0002] # LINEAR A SIGN AB120
+1064A ; [.4FE1.0020.0002] # LINEAR A SIGN A120B
+1064B ; [.4FE2.0020.0002] # LINEAR A SIGN AB122
+1064C ; [.4FE3.0020.0002] # LINEAR A SIGN AB123
+1064D ; [.4FE4.0020.0002] # LINEAR A SIGN AB131A
+1064E ; [.4FE5.0020.0002] # LINEAR A SIGN AB131B
+1064F ; [.4FE6.0020.0002] # LINEAR A SIGN A131C
+10650 ; [.4FE7.0020.0002] # LINEAR A SIGN AB164
+10651 ; [.4FE8.0020.0002] # LINEAR A SIGN AB171
+10652 ; [.4FE9.0020.0002] # LINEAR A SIGN AB180
+10653 ; [.4FEA.0020.0002] # LINEAR A SIGN AB188
+10654 ; [.4FEB.0020.0002] # LINEAR A SIGN AB191
+10655 ; [.4FEC.0020.0002] # LINEAR A SIGN A301
+10656 ; [.4FED.0020.0002] # LINEAR A SIGN A302
+10657 ; [.4FEE.0020.0002] # LINEAR A SIGN A303
+10658 ; [.4FEF.0020.0002] # LINEAR A SIGN A304
+10659 ; [.4FF0.0020.0002] # LINEAR A SIGN A305
+1065A ; [.4FF1.0020.0002] # LINEAR A SIGN A306
+1065B ; [.4FF2.0020.0002] # LINEAR A SIGN A307
+1065C ; [.4FF3.0020.0002] # LINEAR A SIGN A308
+1065D ; [.4FF4.0020.0002] # LINEAR A SIGN A309A
+1065E ; [.4FF5.0020.0002] # LINEAR A SIGN A309B
+1065F ; [.4FF6.0020.0002] # LINEAR A SIGN A309C
+10660 ; [.4FF7.0020.0002] # LINEAR A SIGN A310
+10661 ; [.4FF8.0020.0002] # LINEAR A SIGN A311
+10662 ; [.4FF9.0020.0002] # LINEAR A SIGN A312
+10663 ; [.4FFA.0020.0002] # LINEAR A SIGN A313A
+10664 ; [.4FFB.0020.0002] # LINEAR A SIGN A313B
+10665 ; [.4FFC.0020.0002] # LINEAR A SIGN A313C
+10666 ; [.4FFD.0020.0002] # LINEAR A SIGN A314
+10667 ; [.4FFE.0020.0002] # LINEAR A SIGN A315
+10668 ; [.4FFF.0020.0002] # LINEAR A SIGN A316
+10669 ; [.5000.0020.0002] # LINEAR A SIGN A317
+1066A ; [.5001.0020.0002] # LINEAR A SIGN A318
+1066B ; [.5002.0020.0002] # LINEAR A SIGN A319
+1066C ; [.5003.0020.0002] # LINEAR A SIGN A320
+1066D ; [.5004.0020.0002] # LINEAR A SIGN A321
+1066E ; [.5005.0020.0002] # LINEAR A SIGN A322
+1066F ; [.5006.0020.0002] # LINEAR A SIGN A323
+10670 ; [.5007.0020.0002] # LINEAR A SIGN A324
+10671 ; [.5008.0020.0002] # LINEAR A SIGN A325
+10672 ; [.5009.0020.0002] # LINEAR A SIGN A326
+10673 ; [.500A.0020.0002] # LINEAR A SIGN A327
+10674 ; [.500B.0020.0002] # LINEAR A SIGN A328
+10675 ; [.500C.0020.0002] # LINEAR A SIGN A329
+10676 ; [.500D.0020.0002] # LINEAR A SIGN A330
+10677 ; [.500E.0020.0002] # LINEAR A SIGN A331
+10678 ; [.500F.0020.0002] # LINEAR A SIGN A332
+10679 ; [.5010.0020.0002] # LINEAR A SIGN A333
+1067A ; [.5011.0020.0002] # LINEAR A SIGN A334
+1067B ; [.5012.0020.0002] # LINEAR A SIGN A335
+1067C ; [.5013.0020.0002] # LINEAR A SIGN A336
+1067D ; [.5014.0020.0002] # LINEAR A SIGN A337
+1067E ; [.5015.0020.0002] # LINEAR A SIGN A338
+1067F ; [.5016.0020.0002] # LINEAR A SIGN A339
+10680 ; [.5017.0020.0002] # LINEAR A SIGN A340
+10681 ; [.5018.0020.0002] # LINEAR A SIGN A341
+10682 ; [.5019.0020.0002] # LINEAR A SIGN A342
+10683 ; [.501A.0020.0002] # LINEAR A SIGN A343
+10684 ; [.501B.0020.0002] # LINEAR A SIGN A344
+10685 ; [.501C.0020.0002] # LINEAR A SIGN A345
+10686 ; [.501D.0020.0002] # LINEAR A SIGN A346
+10687 ; [.501E.0020.0002] # LINEAR A SIGN A347
+10688 ; [.501F.0020.0002] # LINEAR A SIGN A348
+10689 ; [.5020.0020.0002] # LINEAR A SIGN A349
+1068A ; [.5021.0020.0002] # LINEAR A SIGN A350
+1068B ; [.5022.0020.0002] # LINEAR A SIGN A351
+1068C ; [.5023.0020.0002] # LINEAR A SIGN A352
+1068D ; [.5024.0020.0002] # LINEAR A SIGN A353
+1068E ; [.5025.0020.0002] # LINEAR A SIGN A354
+1068F ; [.5026.0020.0002] # LINEAR A SIGN A355
+10690 ; [.5027.0020.0002] # LINEAR A SIGN A356
+10691 ; [.5028.0020.0002] # LINEAR A SIGN A357
+10692 ; [.5029.0020.0002] # LINEAR A SIGN A358
+10693 ; [.502A.0020.0002] # LINEAR A SIGN A359
+10694 ; [.502B.0020.0002] # LINEAR A SIGN A360
+10695 ; [.502C.0020.0002] # LINEAR A SIGN A361
+10696 ; [.502D.0020.0002] # LINEAR A SIGN A362
+10697 ; [.502E.0020.0002] # LINEAR A SIGN A363
+10698 ; [.502F.0020.0002] # LINEAR A SIGN A364
+10699 ; [.5030.0020.0002] # LINEAR A SIGN A365
+1069A ; [.5031.0020.0002] # LINEAR A SIGN A366
+1069B ; [.5032.0020.0002] # LINEAR A SIGN A367
+1069C ; [.5033.0020.0002] # LINEAR A SIGN A368
+1069D ; [.5034.0020.0002] # LINEAR A SIGN A369
+1069E ; [.5035.0020.0002] # LINEAR A SIGN A370
+1069F ; [.5036.0020.0002] # LINEAR A SIGN A371
+106A0 ; [.5037.0020.0002] # LINEAR A SIGN A400-VAS
+106A1 ; [.5038.0020.0002] # LINEAR A SIGN A401-VAS
+106A2 ; [.5039.0020.0002] # LINEAR A SIGN A402-VAS
+106A3 ; [.503A.0020.0002] # LINEAR A SIGN A403-VAS
+106A4 ; [.503B.0020.0002] # LINEAR A SIGN A404-VAS
+106A5 ; [.503C.0020.0002] # LINEAR A SIGN A405-VAS
+106A6 ; [.503D.0020.0002] # LINEAR A SIGN A406-VAS
+106A7 ; [.503E.0020.0002] # LINEAR A SIGN A407-VAS
+106A8 ; [.503F.0020.0002] # LINEAR A SIGN A408-VAS
+106A9 ; [.5040.0020.0002] # LINEAR A SIGN A409-VAS
+106AA ; [.5041.0020.0002] # LINEAR A SIGN A410-VAS
+106AB ; [.5042.0020.0002] # LINEAR A SIGN A411-VAS
+106AC ; [.5043.0020.0002] # LINEAR A SIGN A412-VAS
+106AD ; [.5044.0020.0002] # LINEAR A SIGN A413-VAS
+106AE ; [.5045.0020.0002] # LINEAR A SIGN A414-VAS
+106AF ; [.5046.0020.0002] # LINEAR A SIGN A415-VAS
+106B0 ; [.5047.0020.0002] # LINEAR A SIGN A416-VAS
+106B1 ; [.5048.0020.0002] # LINEAR A SIGN A417-VAS
+106B2 ; [.5049.0020.0002] # LINEAR A SIGN A418-VAS
+106B3 ; [.504A.0020.0002] # LINEAR A SIGN A501
+106B4 ; [.504B.0020.0002] # LINEAR A SIGN A502
+106B5 ; [.504C.0020.0002] # LINEAR A SIGN A503
+106B6 ; [.504D.0020.0002] # LINEAR A SIGN A504
+106B7 ; [.504E.0020.0002] # LINEAR A SIGN A505
+106B8 ; [.504F.0020.0002] # LINEAR A SIGN A506
+106B9 ; [.5050.0020.0002] # LINEAR A SIGN A508
+106BA ; [.5051.0020.0002] # LINEAR A SIGN A509
+106BB ; [.5052.0020.0002] # LINEAR A SIGN A510
+106BC ; [.5053.0020.0002] # LINEAR A SIGN A511
+106BD ; [.5054.0020.0002] # LINEAR A SIGN A512
+106BE ; [.5055.0020.0002] # LINEAR A SIGN A513
+106BF ; [.5056.0020.0002] # LINEAR A SIGN A515
+106C0 ; [.5057.0020.0002] # LINEAR A SIGN A516
+106C1 ; [.5058.0020.0002] # LINEAR A SIGN A520
+106C2 ; [.5059.0020.0002] # LINEAR A SIGN A521
+106C3 ; [.505A.0020.0002] # LINEAR A SIGN A523
+106C4 ; [.505B.0020.0002] # LINEAR A SIGN A524
+106C5 ; [.505C.0020.0002] # LINEAR A SIGN A525
+106C6 ; [.505D.0020.0002] # LINEAR A SIGN A526
+106C7 ; [.505E.0020.0002] # LINEAR A SIGN A527
+106C8 ; [.505F.0020.0002] # LINEAR A SIGN A528
+106C9 ; [.5060.0020.0002] # LINEAR A SIGN A529
+106CA ; [.5061.0020.0002] # LINEAR A SIGN A530
+106CB ; [.5062.0020.0002] # LINEAR A SIGN A531
+106CC ; [.5063.0020.0002] # LINEAR A SIGN A532
+106CD ; [.5064.0020.0002] # LINEAR A SIGN A534
+106CE ; [.5065.0020.0002] # LINEAR A SIGN A535
+106CF ; [.5066.0020.0002] # LINEAR A SIGN A536
+106D0 ; [.5067.0020.0002] # LINEAR A SIGN A537
+106D1 ; [.5068.0020.0002] # LINEAR A SIGN A538
+106D2 ; [.5069.0020.0002] # LINEAR A SIGN A539
+106D3 ; [.506A.0020.0002] # LINEAR A SIGN A540
+106D4 ; [.506B.0020.0002] # LINEAR A SIGN A541
+106D5 ; [.506C.0020.0002] # LINEAR A SIGN A542
+106D6 ; [.506D.0020.0002] # LINEAR A SIGN A545
+106D7 ; [.506E.0020.0002] # LINEAR A SIGN A547
+106D8 ; [.506F.0020.0002] # LINEAR A SIGN A548
+106D9 ; [.5070.0020.0002] # LINEAR A SIGN A549
+106DA ; [.5071.0020.0002] # LINEAR A SIGN A550
+106DB ; [.5072.0020.0002] # LINEAR A SIGN A551
+106DC ; [.5073.0020.0002] # LINEAR A SIGN A552
+106DD ; [.5074.0020.0002] # LINEAR A SIGN A553
+106DE ; [.5075.0020.0002] # LINEAR A SIGN A554
+106DF ; [.5076.0020.0002] # LINEAR A SIGN A555
+106E0 ; [.5077.0020.0002] # LINEAR A SIGN A556
+106E1 ; [.5078.0020.0002] # LINEAR A SIGN A557
+106E2 ; [.5079.0020.0002] # LINEAR A SIGN A559
+106E3 ; [.507A.0020.0002] # LINEAR A SIGN A563
+106E4 ; [.507B.0020.0002] # LINEAR A SIGN A564
+106E5 ; [.507C.0020.0002] # LINEAR A SIGN A565
+106E6 ; [.507D.0020.0002] # LINEAR A SIGN A566
+106E7 ; [.507E.0020.0002] # LINEAR A SIGN A568
+106E8 ; [.507F.0020.0002] # LINEAR A SIGN A569
+106E9 ; [.5080.0020.0002] # LINEAR A SIGN A570
+106EA ; [.5081.0020.0002] # LINEAR A SIGN A571
+106EB ; [.5082.0020.0002] # LINEAR A SIGN A572
+106EC ; [.5083.0020.0002] # LINEAR A SIGN A573
+106ED ; [.5084.0020.0002] # LINEAR A SIGN A574
+106EE ; [.5085.0020.0002] # LINEAR A SIGN A575
+106EF ; [.5086.0020.0002] # LINEAR A SIGN A576
+106F0 ; [.5087.0020.0002] # LINEAR A SIGN A577
+106F1 ; [.5088.0020.0002] # LINEAR A SIGN A578
+106F2 ; [.5089.0020.0002] # LINEAR A SIGN A579
+106F3 ; [.508A.0020.0002] # LINEAR A SIGN A580
+106F4 ; [.508B.0020.0002] # LINEAR A SIGN A581
+106F5 ; [.508C.0020.0002] # LINEAR A SIGN A582
+106F6 ; [.508D.0020.0002] # LINEAR A SIGN A583
+106F7 ; [.508E.0020.0002] # LINEAR A SIGN A584
+106F8 ; [.508F.0020.0002] # LINEAR A SIGN A585
+106F9 ; [.5090.0020.0002] # LINEAR A SIGN A586
+106FA ; [.5091.0020.0002] # LINEAR A SIGN A587
+106FB ; [.5092.0020.0002] # LINEAR A SIGN A588
+106FC ; [.5093.0020.0002] # LINEAR A SIGN A589
+106FD ; [.5094.0020.0002] # LINEAR A SIGN A591
+106FE ; [.5095.0020.0002] # LINEAR A SIGN A592
+106FF ; [.5096.0020.0002] # LINEAR A SIGN A594
+10700 ; [.5097.0020.0002] # LINEAR A SIGN A595
+10701 ; [.5098.0020.0002] # LINEAR A SIGN A596
+10702 ; [.5099.0020.0002] # LINEAR A SIGN A598
+10703 ; [.509A.0020.0002] # LINEAR A SIGN A600
+10704 ; [.509B.0020.0002] # LINEAR A SIGN A601
+10705 ; [.509C.0020.0002] # LINEAR A SIGN A602
+10706 ; [.509D.0020.0002] # LINEAR A SIGN A603
+10707 ; [.509E.0020.0002] # LINEAR A SIGN A604
+10708 ; [.509F.0020.0002] # LINEAR A SIGN A606
+10709 ; [.50A0.0020.0002] # LINEAR A SIGN A608
+1070A ; [.50A1.0020.0002] # LINEAR A SIGN A609
+1070B ; [.50A2.0020.0002] # LINEAR A SIGN A610
+1070C ; [.50A3.0020.0002] # LINEAR A SIGN A611
+1070D ; [.50A4.0020.0002] # LINEAR A SIGN A612
+1070E ; [.50A5.0020.0002] # LINEAR A SIGN A613
+1070F ; [.50A6.0020.0002] # LINEAR A SIGN A614
+10710 ; [.50A7.0020.0002] # LINEAR A SIGN A615
+10711 ; [.50A8.0020.0002] # LINEAR A SIGN A616
+10712 ; [.50A9.0020.0002] # LINEAR A SIGN A617
+10713 ; [.50AA.0020.0002] # LINEAR A SIGN A618
+10714 ; [.50AB.0020.0002] # LINEAR A SIGN A619
+10715 ; [.50AC.0020.0002] # LINEAR A SIGN A620
+10716 ; [.50AD.0020.0002] # LINEAR A SIGN A621
+10717 ; [.50AE.0020.0002] # LINEAR A SIGN A622
+10718 ; [.50AF.0020.0002] # LINEAR A SIGN A623
+10719 ; [.50B0.0020.0002] # LINEAR A SIGN A624
+1071A ; [.50B1.0020.0002] # LINEAR A SIGN A626
+1071B ; [.50B2.0020.0002] # LINEAR A SIGN A627
+1071C ; [.50B3.0020.0002] # LINEAR A SIGN A628
+1071D ; [.50B4.0020.0002] # LINEAR A SIGN A629
+1071E ; [.50B5.0020.0002] # LINEAR A SIGN A634
+1071F ; [.50B6.0020.0002] # LINEAR A SIGN A637
+10720 ; [.50B7.0020.0002] # LINEAR A SIGN A638
+10721 ; [.50B8.0020.0002] # LINEAR A SIGN A640
+10722 ; [.50B9.0020.0002] # LINEAR A SIGN A642
+10723 ; [.50BA.0020.0002] # LINEAR A SIGN A643
+10724 ; [.50BB.0020.0002] # LINEAR A SIGN A644
+10725 ; [.50BC.0020.0002] # LINEAR A SIGN A645
+10726 ; [.50BD.0020.0002] # LINEAR A SIGN A646
+10727 ; [.50BE.0020.0002] # LINEAR A SIGN A648
+10728 ; [.50BF.0020.0002] # LINEAR A SIGN A649
+10729 ; [.50C0.0020.0002] # LINEAR A SIGN A651
+1072A ; [.50C1.0020.0002] # LINEAR A SIGN A652
+1072B ; [.50C2.0020.0002] # LINEAR A SIGN A653
+1072C ; [.50C3.0020.0002] # LINEAR A SIGN A654
+1072D ; [.50C4.0020.0002] # LINEAR A SIGN A655
+1072E ; [.50C5.0020.0002] # LINEAR A SIGN A656
+1072F ; [.50C6.0020.0002] # LINEAR A SIGN A657
+10730 ; [.50C7.0020.0002] # LINEAR A SIGN A658
+10731 ; [.50C8.0020.0002] # LINEAR A SIGN A659
+10732 ; [.50C9.0020.0002] # LINEAR A SIGN A660
+10733 ; [.50CA.0020.0002] # LINEAR A SIGN A661
+10734 ; [.50CB.0020.0002] # LINEAR A SIGN A662
+10735 ; [.50CC.0020.0002] # LINEAR A SIGN A663
+10736 ; [.50CD.0020.0002] # LINEAR A SIGN A664
+10740 ; [.50CE.0020.0002] # LINEAR A SIGN A701 A
+10741 ; [.50CF.0020.0002] # LINEAR A SIGN A702 B
+10742 ; [.50D0.0020.0002] # LINEAR A SIGN A703 D
+10743 ; [.50D1.0020.0002] # LINEAR A SIGN A704 E
+10744 ; [.50D2.0020.0002] # LINEAR A SIGN A705 F
+10745 ; [.50D3.0020.0002] # LINEAR A SIGN A706 H
+10746 ; [.50D4.0020.0002] # LINEAR A SIGN A707 J
+10747 ; [.50D5.0020.0002] # LINEAR A SIGN A708 K
+10748 ; [.50D6.0020.0002] # LINEAR A SIGN A709 L
+10749 ; [.50D7.0020.0002] # LINEAR A SIGN A709-2 L2
+1074A ; [.50D8.0020.0002] # LINEAR A SIGN A709-3 L3
+1074B ; [.50D9.0020.0002] # LINEAR A SIGN A709-4 L4
+1074C ; [.50DA.0020.0002] # LINEAR A SIGN A709-6 L6
+1074D ; [.50DB.0020.0002] # LINEAR A SIGN A710 W
+1074E ; [.50DC.0020.0002] # LINEAR A SIGN A711 X
+1074F ; [.50DD.0020.0002] # LINEAR A SIGN A712 Y
+10750 ; [.50DE.0020.0002] # LINEAR A SIGN A713 OMEGA
+10751 ; [.50DF.0020.0002] # LINEAR A SIGN A714 ABB
+10752 ; [.50E0.0020.0002] # LINEAR A SIGN A715 BB
+10753 ; [.50E1.0020.0002] # LINEAR A SIGN A717 DD
+10754 ; [.50E2.0020.0002] # LINEAR A SIGN A726 EYYY
+10755 ; [.50E3.0020.0002] # LINEAR A SIGN A732 JE
+10760 ; [.50E4.0020.0002] # LINEAR A SIGN A800
+10761 ; [.50E5.0020.0002] # LINEAR A SIGN A801
+10762 ; [.50E6.0020.0002] # LINEAR A SIGN A802
+10763 ; [.50E7.0020.0002] # LINEAR A SIGN A803
+10764 ; [.50E8.0020.0002] # LINEAR A SIGN A804
+10765 ; [.50E9.0020.0002] # LINEAR A SIGN A805
+10766 ; [.50EA.0020.0002] # LINEAR A SIGN A806
+10767 ; [.50EB.0020.0002] # LINEAR A SIGN A807
+10800 ; [.50EC.0020.0002] # CYPRIOT SYLLABLE A
+10801 ; [.50ED.0020.0002] # CYPRIOT SYLLABLE E
+10802 ; [.50EE.0020.0002] # CYPRIOT SYLLABLE I
+10803 ; [.50EF.0020.0002] # CYPRIOT SYLLABLE O
+10804 ; [.50F0.0020.0002] # CYPRIOT SYLLABLE U
+10805 ; [.50F1.0020.0002] # CYPRIOT SYLLABLE JA
+10808 ; [.50F2.0020.0002] # CYPRIOT SYLLABLE JO
+1080A ; [.50F3.0020.0002] # CYPRIOT SYLLABLE KA
+1080B ; [.50F4.0020.0002] # CYPRIOT SYLLABLE KE
+1080C ; [.50F5.0020.0002] # CYPRIOT SYLLABLE KI
+1080D ; [.50F6.0020.0002] # CYPRIOT SYLLABLE KO
+1080E ; [.50F7.0020.0002] # CYPRIOT SYLLABLE KU
+1080F ; [.50F8.0020.0002] # CYPRIOT SYLLABLE LA
+10810 ; [.50F9.0020.0002] # CYPRIOT SYLLABLE LE
+10811 ; [.50FA.0020.0002] # CYPRIOT SYLLABLE LI
+10812 ; [.50FB.0020.0002] # CYPRIOT SYLLABLE LO
+10813 ; [.50FC.0020.0002] # CYPRIOT SYLLABLE LU
+10814 ; [.50FD.0020.0002] # CYPRIOT SYLLABLE MA
+10815 ; [.50FE.0020.0002] # CYPRIOT SYLLABLE ME
+10816 ; [.50FF.0020.0002] # CYPRIOT SYLLABLE MI
+10817 ; [.5100.0020.0002] # CYPRIOT SYLLABLE MO
+10818 ; [.5101.0020.0002] # CYPRIOT SYLLABLE MU
+10819 ; [.5102.0020.0002] # CYPRIOT SYLLABLE NA
+1081A ; [.5103.0020.0002] # CYPRIOT SYLLABLE NE
+1081B ; [.5104.0020.0002] # CYPRIOT SYLLABLE NI
+1081C ; [.5105.0020.0002] # CYPRIOT SYLLABLE NO
+1081D ; [.5106.0020.0002] # CYPRIOT SYLLABLE NU
+1081E ; [.5107.0020.0002] # CYPRIOT SYLLABLE PA
+1081F ; [.5108.0020.0002] # CYPRIOT SYLLABLE PE
+10820 ; [.5109.0020.0002] # CYPRIOT SYLLABLE PI
+10821 ; [.510A.0020.0002] # CYPRIOT SYLLABLE PO
+10822 ; [.510B.0020.0002] # CYPRIOT SYLLABLE PU
+10823 ; [.510C.0020.0002] # CYPRIOT SYLLABLE RA
+10824 ; [.510D.0020.0002] # CYPRIOT SYLLABLE RE
+10825 ; [.510E.0020.0002] # CYPRIOT SYLLABLE RI
+10826 ; [.510F.0020.0002] # CYPRIOT SYLLABLE RO
+10827 ; [.5110.0020.0002] # CYPRIOT SYLLABLE RU
+10828 ; [.5111.0020.0002] # CYPRIOT SYLLABLE SA
+10829 ; [.5112.0020.0002] # CYPRIOT SYLLABLE SE
+1082A ; [.5113.0020.0002] # CYPRIOT SYLLABLE SI
+1082B ; [.5114.0020.0002] # CYPRIOT SYLLABLE SO
+1082C ; [.5115.0020.0002] # CYPRIOT SYLLABLE SU
+1082D ; [.5116.0020.0002] # CYPRIOT SYLLABLE TA
+1082E ; [.5117.0020.0002] # CYPRIOT SYLLABLE TE
+1082F ; [.5118.0020.0002] # CYPRIOT SYLLABLE TI
+10830 ; [.5119.0020.0002] # CYPRIOT SYLLABLE TO
+10831 ; [.511A.0020.0002] # CYPRIOT SYLLABLE TU
+10832 ; [.511B.0020.0002] # CYPRIOT SYLLABLE WA
+10833 ; [.511C.0020.0002] # CYPRIOT SYLLABLE WE
+10834 ; [.511D.0020.0002] # CYPRIOT SYLLABLE WI
+10835 ; [.511E.0020.0002] # CYPRIOT SYLLABLE WO
+10837 ; [.511F.0020.0002] # CYPRIOT SYLLABLE XA
+10838 ; [.5120.0020.0002] # CYPRIOT SYLLABLE XE
+1083C ; [.5121.0020.0002] # CYPRIOT SYLLABLE ZA
+1083F ; [.5122.0020.0002] # CYPRIOT SYLLABLE ZO
+12F90 ; [.5123.0020.0002] # CYPRO-MINOAN SIGN CM001
+12F91 ; [.5124.0020.0002] # CYPRO-MINOAN SIGN CM002
+12F92 ; [.5125.0020.0002] # CYPRO-MINOAN SIGN CM004
+12F93 ; [.5126.0020.0002] # CYPRO-MINOAN SIGN CM005
+12F94 ; [.5127.0020.0002] # CYPRO-MINOAN SIGN CM006
+12F95 ; [.5128.0020.0002] # CYPRO-MINOAN SIGN CM007
+12F96 ; [.5129.0020.0002] # CYPRO-MINOAN SIGN CM008
+12F97 ; [.512A.0020.0002] # CYPRO-MINOAN SIGN CM009
+12F98 ; [.512B.0020.0002] # CYPRO-MINOAN SIGN CM010
+12F99 ; [.512C.0020.0002] # CYPRO-MINOAN SIGN CM011
+12F9A ; [.512D.0020.0002] # CYPRO-MINOAN SIGN CM012
+12F9B ; [.512E.0020.0002] # CYPRO-MINOAN SIGN CM012B
+12F9C ; [.512F.0020.0002] # CYPRO-MINOAN SIGN CM013
+12F9D ; [.5130.0020.0002] # CYPRO-MINOAN SIGN CM015
+12F9E ; [.5131.0020.0002] # CYPRO-MINOAN SIGN CM017
+12F9F ; [.5132.0020.0002] # CYPRO-MINOAN SIGN CM019
+12FA0 ; [.5133.0020.0002] # CYPRO-MINOAN SIGN CM021
+12FA1 ; [.5134.0020.0002] # CYPRO-MINOAN SIGN CM023
+12FA2 ; [.5135.0020.0002] # CYPRO-MINOAN SIGN CM024
+12FA3 ; [.5136.0020.0002] # CYPRO-MINOAN SIGN CM025
+12FA4 ; [.5137.0020.0002] # CYPRO-MINOAN SIGN CM026
+12FA5 ; [.5138.0020.0002] # CYPRO-MINOAN SIGN CM027
+12FA6 ; [.5139.0020.0002] # CYPRO-MINOAN SIGN CM028
+12FA7 ; [.513A.0020.0002] # CYPRO-MINOAN SIGN CM029
+12FA8 ; [.513B.0020.0002] # CYPRO-MINOAN SIGN CM030
+12FA9 ; [.513C.0020.0002] # CYPRO-MINOAN SIGN CM033
+12FAA ; [.513D.0020.0002] # CYPRO-MINOAN SIGN CM034
+12FAB ; [.513E.0020.0002] # CYPRO-MINOAN SIGN CM035
+12FAC ; [.513F.0020.0002] # CYPRO-MINOAN SIGN CM036
+12FAD ; [.5140.0020.0002] # CYPRO-MINOAN SIGN CM037
+12FAE ; [.5141.0020.0002] # CYPRO-MINOAN SIGN CM038
+12FAF ; [.5142.0020.0002] # CYPRO-MINOAN SIGN CM039
+12FB0 ; [.5143.0020.0002] # CYPRO-MINOAN SIGN CM040
+12FB1 ; [.5144.0020.0002] # CYPRO-MINOAN SIGN CM041
+12FB2 ; [.5145.0020.0002] # CYPRO-MINOAN SIGN CM044
+12FB3 ; [.5146.0020.0002] # CYPRO-MINOAN SIGN CM046
+12FB4 ; [.5147.0020.0002] # CYPRO-MINOAN SIGN CM047
+12FB5 ; [.5148.0020.0002] # CYPRO-MINOAN SIGN CM049
+12FB6 ; [.5149.0020.0002] # CYPRO-MINOAN SIGN CM050
+12FB7 ; [.514A.0020.0002] # CYPRO-MINOAN SIGN CM051
+12FB8 ; [.514B.0020.0002] # CYPRO-MINOAN SIGN CM052
+12FB9 ; [.514C.0020.0002] # CYPRO-MINOAN SIGN CM053
+12FBA ; [.514D.0020.0002] # CYPRO-MINOAN SIGN CM054
+12FBB ; [.514E.0020.0002] # CYPRO-MINOAN SIGN CM055
+12FBC ; [.514F.0020.0002] # CYPRO-MINOAN SIGN CM056
+12FBD ; [.5150.0020.0002] # CYPRO-MINOAN SIGN CM058
+12FBE ; [.5151.0020.0002] # CYPRO-MINOAN SIGN CM059
+12FBF ; [.5152.0020.0002] # CYPRO-MINOAN SIGN CM060
+12FC0 ; [.5153.0020.0002] # CYPRO-MINOAN SIGN CM061
+12FC1 ; [.5154.0020.0002] # CYPRO-MINOAN SIGN CM062
+12FC2 ; [.5155.0020.0002] # CYPRO-MINOAN SIGN CM063
+12FC3 ; [.5156.0020.0002] # CYPRO-MINOAN SIGN CM064
+12FC4 ; [.5157.0020.0002] # CYPRO-MINOAN SIGN CM066
+12FC5 ; [.5158.0020.0002] # CYPRO-MINOAN SIGN CM067
+12FC6 ; [.5159.0020.0002] # CYPRO-MINOAN SIGN CM068
+12FC7 ; [.515A.0020.0002] # CYPRO-MINOAN SIGN CM069
+12FC8 ; [.515B.0020.0002] # CYPRO-MINOAN SIGN CM070
+12FC9 ; [.515C.0020.0002] # CYPRO-MINOAN SIGN CM071
+12FCA ; [.515D.0020.0002] # CYPRO-MINOAN SIGN CM072
+12FCB ; [.515E.0020.0002] # CYPRO-MINOAN SIGN CM073
+12FCC ; [.515F.0020.0002] # CYPRO-MINOAN SIGN CM074
+12FCD ; [.5160.0020.0002] # CYPRO-MINOAN SIGN CM075
+12FCE ; [.5161.0020.0002] # CYPRO-MINOAN SIGN CM075B
+12FCF ; [.5162.0020.0002] # CYPRO-MINOAN SIGN CM076
+12FD0 ; [.5163.0020.0002] # CYPRO-MINOAN SIGN CM078
+12FD1 ; [.5164.0020.0002] # CYPRO-MINOAN SIGN CM079
+12FD2 ; [.5165.0020.0002] # CYPRO-MINOAN SIGN CM080
+12FD3 ; [.5166.0020.0002] # CYPRO-MINOAN SIGN CM081
+12FD4 ; [.5167.0020.0002] # CYPRO-MINOAN SIGN CM082
+12FD5 ; [.5168.0020.0002] # CYPRO-MINOAN SIGN CM083
+12FD6 ; [.5169.0020.0002] # CYPRO-MINOAN SIGN CM084
+12FD7 ; [.516A.0020.0002] # CYPRO-MINOAN SIGN CM085
+12FD8 ; [.516B.0020.0002] # CYPRO-MINOAN SIGN CM086
+12FD9 ; [.516C.0020.0002] # CYPRO-MINOAN SIGN CM087
+12FDA ; [.516D.0020.0002] # CYPRO-MINOAN SIGN CM088
+12FDB ; [.516E.0020.0002] # CYPRO-MINOAN SIGN CM089
+12FDC ; [.516F.0020.0002] # CYPRO-MINOAN SIGN CM090
+12FDD ; [.5170.0020.0002] # CYPRO-MINOAN SIGN CM091
+12FDE ; [.5171.0020.0002] # CYPRO-MINOAN SIGN CM092
+12FDF ; [.5172.0020.0002] # CYPRO-MINOAN SIGN CM094
+12FE0 ; [.5173.0020.0002] # CYPRO-MINOAN SIGN CM095
+12FE1 ; [.5174.0020.0002] # CYPRO-MINOAN SIGN CM096
+12FE2 ; [.5175.0020.0002] # CYPRO-MINOAN SIGN CM097
+12FE3 ; [.5176.0020.0002] # CYPRO-MINOAN SIGN CM098
+12FE4 ; [.5177.0020.0002] # CYPRO-MINOAN SIGN CM099
+12FE5 ; [.5178.0020.0002] # CYPRO-MINOAN SIGN CM100
+12FE6 ; [.5179.0020.0002] # CYPRO-MINOAN SIGN CM101
+12FE7 ; [.517A.0020.0002] # CYPRO-MINOAN SIGN CM102
+12FE8 ; [.517B.0020.0002] # CYPRO-MINOAN SIGN CM103
+12FE9 ; [.517C.0020.0002] # CYPRO-MINOAN SIGN CM104
+12FEA ; [.517D.0020.0002] # CYPRO-MINOAN SIGN CM105
+12FEB ; [.517E.0020.0002] # CYPRO-MINOAN SIGN CM107
+12FEC ; [.517F.0020.0002] # CYPRO-MINOAN SIGN CM108
+12FED ; [.5180.0020.0002] # CYPRO-MINOAN SIGN CM109
+12FEE ; [.5181.0020.0002] # CYPRO-MINOAN SIGN CM110
+12FEF ; [.5182.0020.0002] # CYPRO-MINOAN SIGN CM112
+12FF0 ; [.5183.0020.0002] # CYPRO-MINOAN SIGN CM114
+10A60 ; [.5184.0020.0002] # OLD SOUTH ARABIAN LETTER HE
+10A61 ; [.5185.0020.0002] # OLD SOUTH ARABIAN LETTER LAMEDH
+10A62 ; [.5186.0020.0002] # OLD SOUTH ARABIAN LETTER HETH
+10A63 ; [.5187.0020.0002] # OLD SOUTH ARABIAN LETTER MEM
+10A64 ; [.5188.0020.0002] # OLD SOUTH ARABIAN LETTER QOPH
+10A65 ; [.5189.0020.0002] # OLD SOUTH ARABIAN LETTER WAW
+10A66 ; [.518A.0020.0002] # OLD SOUTH ARABIAN LETTER SHIN
+10A67 ; [.518B.0020.0002] # OLD SOUTH ARABIAN LETTER RESH
+10A68 ; [.518C.0020.0002] # OLD SOUTH ARABIAN LETTER BETH
+10A69 ; [.518D.0020.0002] # OLD SOUTH ARABIAN LETTER TAW
+10A6A ; [.518E.0020.0002] # OLD SOUTH ARABIAN LETTER SAT
+10A6B ; [.518F.0020.0002] # OLD SOUTH ARABIAN LETTER KAPH
+10A6C ; [.5190.0020.0002] # OLD SOUTH ARABIAN LETTER NUN
+10A6D ; [.5191.0020.0002] # OLD SOUTH ARABIAN LETTER KHETH
+10A6E ; [.5192.0020.0002] # OLD SOUTH ARABIAN LETTER SADHE
+10A6F ; [.5193.0020.0002] # OLD SOUTH ARABIAN LETTER SAMEKH
+10A70 ; [.5194.0020.0002] # OLD SOUTH ARABIAN LETTER FE
+10A71 ; [.5195.0020.0002] # OLD SOUTH ARABIAN LETTER ALEF
+10A72 ; [.5196.0020.0002] # OLD SOUTH ARABIAN LETTER AYN
+10A73 ; [.5197.0020.0002] # OLD SOUTH ARABIAN LETTER DHADHE
+10A74 ; [.5198.0020.0002] # OLD SOUTH ARABIAN LETTER GIMEL
+10A75 ; [.5199.0020.0002] # OLD SOUTH ARABIAN LETTER DALETH
+10A76 ; [.519A.0020.0002] # OLD SOUTH ARABIAN LETTER GHAYN
+10A77 ; [.519B.0020.0002] # OLD SOUTH ARABIAN LETTER TETH
+10A78 ; [.519C.0020.0002] # OLD SOUTH ARABIAN LETTER ZAYN
+10A79 ; [.519D.0020.0002] # OLD SOUTH ARABIAN LETTER DHALETH
+10A7A ; [.519E.0020.0002] # OLD SOUTH ARABIAN LETTER YODH
+10A7B ; [.519F.0020.0002] # OLD SOUTH ARABIAN LETTER THAW
+10A7C ; [.51A0.0020.0002] # OLD SOUTH ARABIAN LETTER THETH
+10A80 ; [.51A1.0020.0002] # OLD NORTH ARABIAN LETTER HEH
+10A81 ; [.51A2.0020.0002] # OLD NORTH ARABIAN LETTER LAM
+10A82 ; [.51A3.0020.0002] # OLD NORTH ARABIAN LETTER HAH
+10A83 ; [.51A4.0020.0002] # OLD NORTH ARABIAN LETTER MEEM
+10A84 ; [.51A5.0020.0002] # OLD NORTH ARABIAN LETTER QAF
+10A85 ; [.51A6.0020.0002] # OLD NORTH ARABIAN LETTER WAW
+10A86 ; [.51A7.0020.0002] # OLD NORTH ARABIAN LETTER ES-2
+10A87 ; [.51A8.0020.0002] # OLD NORTH ARABIAN LETTER REH
+10A88 ; [.51A9.0020.0002] # OLD NORTH ARABIAN LETTER BEH
+10A89 ; [.51AA.0020.0002] # OLD NORTH ARABIAN LETTER TEH
+10A8A ; [.51AB.0020.0002] # OLD NORTH ARABIAN LETTER ES-1
+10A8B ; [.51AC.0020.0002] # OLD NORTH ARABIAN LETTER KAF
+10A8C ; [.51AD.0020.0002] # OLD NORTH ARABIAN LETTER NOON
+10A8D ; [.51AE.0020.0002] # OLD NORTH ARABIAN LETTER KHAH
+10A8E ; [.51AF.0020.0002] # OLD NORTH ARABIAN LETTER SAD
+10A8F ; [.51B0.0020.0002] # OLD NORTH ARABIAN LETTER ES-3
+10A90 ; [.51B1.0020.0002] # OLD NORTH ARABIAN LETTER FEH
+10A91 ; [.51B2.0020.0002] # OLD NORTH ARABIAN LETTER ALEF
+10A92 ; [.51B3.0020.0002] # OLD NORTH ARABIAN LETTER AIN
+10A93 ; [.51B4.0020.0002] # OLD NORTH ARABIAN LETTER DAD
+10A94 ; [.51B5.0020.0002] # OLD NORTH ARABIAN LETTER GEEM
+10A95 ; [.51B6.0020.0002] # OLD NORTH ARABIAN LETTER DAL
+10A96 ; [.51B7.0020.0002] # OLD NORTH ARABIAN LETTER GHAIN
+10A97 ; [.51B8.0020.0002] # OLD NORTH ARABIAN LETTER TAH
+10A98 ; [.51B9.0020.0002] # OLD NORTH ARABIAN LETTER ZAIN
+10A99 ; [.51BA.0020.0002] # OLD NORTH ARABIAN LETTER THAL
+10A9A ; [.51BB.0020.0002] # OLD NORTH ARABIAN LETTER YEH
+10A9B ; [.51BC.0020.0002] # OLD NORTH ARABIAN LETTER THEH
+10A9C ; [.51BD.0020.0002] # OLD NORTH ARABIAN LETTER ZAH
+10B00 ; [.51BE.0020.0002] # AVESTAN LETTER A
+10B01 ; [.51BF.0020.0002] # AVESTAN LETTER AA
+10B02 ; [.51C0.0020.0002] # AVESTAN LETTER AO
+10B03 ; [.51C1.0020.0002] # AVESTAN LETTER AAO
+10B04 ; [.51C2.0020.0002] # AVESTAN LETTER AN
+10B05 ; [.51C3.0020.0002] # AVESTAN LETTER AAN
+10B06 ; [.51C4.0020.0002] # AVESTAN LETTER AE
+10B07 ; [.51C5.0020.0002] # AVESTAN LETTER AEE
+10B08 ; [.51C6.0020.0002] # AVESTAN LETTER E
+10B09 ; [.51C7.0020.0002] # AVESTAN LETTER EE
+10B0A ; [.51C8.0020.0002] # AVESTAN LETTER O
+10B0B ; [.51C9.0020.0002] # AVESTAN LETTER OO
+10B0C ; [.51CA.0020.0002] # AVESTAN LETTER I
+10B0D ; [.51CB.0020.0002] # AVESTAN LETTER II
+10B0E ; [.51CC.0020.0002] # AVESTAN LETTER U
+10B0F ; [.51CD.0020.0002] # AVESTAN LETTER UU
+10B10 ; [.51CE.0020.0002] # AVESTAN LETTER KE
+10B11 ; [.51CF.0020.0002] # AVESTAN LETTER XE
+10B12 ; [.51D0.0020.0002] # AVESTAN LETTER XYE
+10B13 ; [.51D1.0020.0002] # AVESTAN LETTER XVE
+10B14 ; [.51D2.0020.0002] # AVESTAN LETTER GE
+10B15 ; [.51D3.0020.0002] # AVESTAN LETTER GGE
+10B16 ; [.51D4.0020.0002] # AVESTAN LETTER GHE
+10B17 ; [.51D5.0020.0002] # AVESTAN LETTER CE
+10B18 ; [.51D6.0020.0002] # AVESTAN LETTER JE
+10B19 ; [.51D7.0020.0002] # AVESTAN LETTER TE
+10B1A ; [.51D8.0020.0002] # AVESTAN LETTER THE
+10B1B ; [.51D9.0020.0002] # AVESTAN LETTER DE
+10B1C ; [.51DA.0020.0002] # AVESTAN LETTER DHE
+10B1D ; [.51DB.0020.0002] # AVESTAN LETTER TTE
+10B1E ; [.51DC.0020.0002] # AVESTAN LETTER PE
+10B1F ; [.51DD.0020.0002] # AVESTAN LETTER FE
+10B20 ; [.51DE.0020.0002] # AVESTAN LETTER BE
+10B21 ; [.51DF.0020.0002] # AVESTAN LETTER BHE
+10B22 ; [.51E0.0020.0002] # AVESTAN LETTER NGE
+10B23 ; [.51E1.0020.0002] # AVESTAN LETTER NGYE
+10B24 ; [.51E2.0020.0002] # AVESTAN LETTER NGVE
+10B25 ; [.51E3.0020.0002] # AVESTAN LETTER NE
+10B26 ; [.51E4.0020.0002] # AVESTAN LETTER NYE
+10B27 ; [.51E5.0020.0002] # AVESTAN LETTER NNE
+10B28 ; [.51E6.0020.0002] # AVESTAN LETTER ME
+10B29 ; [.51E7.0020.0002] # AVESTAN LETTER HME
+10B2A ; [.51E8.0020.0002] # AVESTAN LETTER YYE
+10B2B ; [.51E9.0020.0002] # AVESTAN LETTER YE
+10B2C ; [.51EA.0020.0002] # AVESTAN LETTER VE
+10B2D ; [.51EB.0020.0002] # AVESTAN LETTER RE
+10B2E ; [.51EB.0020.0004][.0000.0118.0004] # AVESTAN LETTER LE
+10B2F ; [.51EC.0020.0002] # AVESTAN LETTER SE
+10B30 ; [.51ED.0020.0002] # AVESTAN LETTER ZE
+10B31 ; [.51EE.0020.0002] # AVESTAN LETTER SHE
+10B32 ; [.51EF.0020.0002] # AVESTAN LETTER ZHE
+10B33 ; [.51F0.0020.0002] # AVESTAN LETTER SHYE
+10B34 ; [.51F1.0020.0002] # AVESTAN LETTER SSHE
+10B35 ; [.51F2.0020.0002] # AVESTAN LETTER HE
+10860 ; [.51F3.0020.0002] # PALMYRENE LETTER ALEPH
+10861 ; [.51F4.0020.0002] # PALMYRENE LETTER BETH
+10862 ; [.51F5.0020.0002] # PALMYRENE LETTER GIMEL
+10863 ; [.51F6.0020.0002] # PALMYRENE LETTER DALETH
+10864 ; [.51F7.0020.0002] # PALMYRENE LETTER HE
+10865 ; [.51F8.0020.0002] # PALMYRENE LETTER WAW
+10866 ; [.51F9.0020.0002] # PALMYRENE LETTER ZAYIN
+10867 ; [.51FA.0020.0002] # PALMYRENE LETTER HETH
+10868 ; [.51FB.0020.0002] # PALMYRENE LETTER TETH
+10869 ; [.51FC.0020.0002] # PALMYRENE LETTER YODH
+1086A ; [.51FD.0020.0002] # PALMYRENE LETTER KAPH
+1086B ; [.51FE.0020.0002] # PALMYRENE LETTER LAMEDH
+1086C ; [.51FF.0020.0002] # PALMYRENE LETTER MEM
+1086E ; [.5200.0020.0002] # PALMYRENE LETTER NUN
+1086D ; [.5200.0020.0019] # PALMYRENE LETTER FINAL NUN
+1086F ; [.5201.0020.0002] # PALMYRENE LETTER SAMEKH
+10870 ; [.5202.0020.0002] # PALMYRENE LETTER AYIN
+10871 ; [.5203.0020.0002] # PALMYRENE LETTER PE
+10872 ; [.5204.0020.0002] # PALMYRENE LETTER SADHE
+10873 ; [.5205.0020.0002] # PALMYRENE LETTER QOPH
+10874 ; [.5206.0020.0002] # PALMYRENE LETTER RESH
+10875 ; [.5207.0020.0002] # PALMYRENE LETTER SHIN
+10876 ; [.5208.0020.0002] # PALMYRENE LETTER TAW
+10881 ; [.5209.0020.0002] # NABATAEAN LETTER ALEPH
+10880 ; [.5209.0020.0019] # NABATAEAN LETTER FINAL ALEPH
+10883 ; [.520A.0020.0002] # NABATAEAN LETTER BETH
+10882 ; [.520A.0020.0019] # NABATAEAN LETTER FINAL BETH
+10884 ; [.520B.0020.0002] # NABATAEAN LETTER GIMEL
+10885 ; [.520C.0020.0002] # NABATAEAN LETTER DALETH
+10887 ; [.520D.0020.0002] # NABATAEAN LETTER HE
+10886 ; [.520D.0020.0019] # NABATAEAN LETTER FINAL HE
+10888 ; [.520E.0020.0002] # NABATAEAN LETTER WAW
+10889 ; [.520F.0020.0002] # NABATAEAN LETTER ZAYIN
+1088A ; [.5210.0020.0002] # NABATAEAN LETTER HETH
+1088B ; [.5211.0020.0002] # NABATAEAN LETTER TETH
+1088D ; [.5212.0020.0002] # NABATAEAN LETTER YODH
+1088C ; [.5212.0020.0019] # NABATAEAN LETTER FINAL YODH
+1088F ; [.5213.0020.0002] # NABATAEAN LETTER KAPH
+1088E ; [.5213.0020.0019] # NABATAEAN LETTER FINAL KAPH
+10891 ; [.5214.0020.0002] # NABATAEAN LETTER LAMEDH
+10890 ; [.5214.0020.0019] # NABATAEAN LETTER FINAL LAMEDH
+10893 ; [.5215.0020.0002] # NABATAEAN LETTER MEM
+10892 ; [.5215.0020.0019] # NABATAEAN LETTER FINAL MEM
+10895 ; [.5216.0020.0002] # NABATAEAN LETTER NUN
+10894 ; [.5216.0020.0019] # NABATAEAN LETTER FINAL NUN
+10896 ; [.5217.0020.0002] # NABATAEAN LETTER SAMEKH
+10897 ; [.5218.0020.0002] # NABATAEAN LETTER AYIN
+10898 ; [.5219.0020.0002] # NABATAEAN LETTER PE
+10899 ; [.521A.0020.0002] # NABATAEAN LETTER SADHE
+1089A ; [.521B.0020.0002] # NABATAEAN LETTER QOPH
+1089B ; [.521C.0020.0002] # NABATAEAN LETTER RESH
+1089D ; [.521D.0020.0002] # NABATAEAN LETTER SHIN
+1089C ; [.521D.0020.0019] # NABATAEAN LETTER FINAL SHIN
+1089E ; [.521E.0020.0002] # NABATAEAN LETTER TAW
+108E0 ; [.521F.0020.0002] # HATRAN LETTER ALEPH
+108E1 ; [.5220.0020.0002] # HATRAN LETTER BETH
+108E2 ; [.5221.0020.0002] # HATRAN LETTER GIMEL
+108E3 ; [.5222.0020.0002] # HATRAN LETTER DALETH-RESH
+108E4 ; [.5223.0020.0002] # HATRAN LETTER HE
+108E5 ; [.5224.0020.0002] # HATRAN LETTER WAW
+108E6 ; [.5225.0020.0002] # HATRAN LETTER ZAYN
+108E7 ; [.5226.0020.0002] # HATRAN LETTER HETH
+108E8 ; [.5227.0020.0002] # HATRAN LETTER TETH
+108E9 ; [.5228.0020.0002] # HATRAN LETTER YODH
+108EA ; [.5229.0020.0002] # HATRAN LETTER KAPH
+108EB ; [.522A.0020.0002] # HATRAN LETTER LAMEDH
+108EC ; [.522B.0020.0002] # HATRAN LETTER MEM
+108ED ; [.522C.0020.0002] # HATRAN LETTER NUN
+108EE ; [.522D.0020.0002] # HATRAN LETTER SAMEKH
+108EF ; [.522E.0020.0002] # HATRAN LETTER AYN
+108F0 ; [.522F.0020.0002] # HATRAN LETTER PE
+108F1 ; [.5230.0020.0002] # HATRAN LETTER SADHE
+108F2 ; [.5231.0020.0002] # HATRAN LETTER QOPH
+108F4 ; [.5232.0020.0002] # HATRAN LETTER SHIN
+108F5 ; [.5233.0020.0002] # HATRAN LETTER TAW
+10840 ; [.5234.0020.0002] # IMPERIAL ARAMAIC LETTER ALEPH
+10841 ; [.5235.0020.0002] # IMPERIAL ARAMAIC LETTER BETH
+10842 ; [.5236.0020.0002] # IMPERIAL ARAMAIC LETTER GIMEL
+10843 ; [.5237.0020.0002] # IMPERIAL ARAMAIC LETTER DALETH
+10844 ; [.5238.0020.0002] # IMPERIAL ARAMAIC LETTER HE
+10845 ; [.5239.0020.0002] # IMPERIAL ARAMAIC LETTER WAW
+10846 ; [.523A.0020.0002] # IMPERIAL ARAMAIC LETTER ZAYIN
+10847 ; [.523B.0020.0002] # IMPERIAL ARAMAIC LETTER HETH
+10848 ; [.523C.0020.0002] # IMPERIAL ARAMAIC LETTER TETH
+10849 ; [.523D.0020.0002] # IMPERIAL ARAMAIC LETTER YODH
+1084A ; [.523E.0020.0002] # IMPERIAL ARAMAIC LETTER KAPH
+1084B ; [.523F.0020.0002] # IMPERIAL ARAMAIC LETTER LAMEDH
+1084C ; [.5240.0020.0002] # IMPERIAL ARAMAIC LETTER MEM
+1084D ; [.5241.0020.0002] # IMPERIAL ARAMAIC LETTER NUN
+1084E ; [.5242.0020.0002] # IMPERIAL ARAMAIC LETTER SAMEKH
+1084F ; [.5243.0020.0002] # IMPERIAL ARAMAIC LETTER AYIN
+10850 ; [.5244.0020.0002] # IMPERIAL ARAMAIC LETTER PE
+10851 ; [.5245.0020.0002] # IMPERIAL ARAMAIC LETTER SADHE
+10852 ; [.5246.0020.0002] # IMPERIAL ARAMAIC LETTER QOPH
+10853 ; [.5247.0020.0002] # IMPERIAL ARAMAIC LETTER RESH
+10854 ; [.5248.0020.0002] # IMPERIAL ARAMAIC LETTER SHIN
+10855 ; [.5249.0020.0002] # IMPERIAL ARAMAIC LETTER TAW
+10B40 ; [.524A.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER ALEPH
+10B41 ; [.524B.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER BETH
+10B42 ; [.524C.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER GIMEL
+10B43 ; [.524D.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER DALETH
+10B44 ; [.524E.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER HE
+10B45 ; [.524F.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER WAW
+10B46 ; [.5250.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER ZAYIN
+10B47 ; [.5251.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER HETH
+10B48 ; [.5252.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER TETH
+10B49 ; [.5253.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER YODH
+10B4A ; [.5254.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER KAPH
+10B4B ; [.5255.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER LAMEDH
+10B4C ; [.5256.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER MEM
+10B4D ; [.5257.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER NUN
+10B4E ; [.5258.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER SAMEKH
+10B4F ; [.5259.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER AYIN
+10B50 ; [.525A.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER PE
+10B51 ; [.525B.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER SADHE
+10B52 ; [.525C.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER QOPH
+10B53 ; [.525D.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER RESH
+10B54 ; [.525E.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER SHIN
+10B55 ; [.525F.0020.0002] # INSCRIPTIONAL PARTHIAN LETTER TAW
+10B60 ; [.5260.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER ALEPH
+10B61 ; [.5261.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER BETH
+10B62 ; [.5262.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER GIMEL
+10B63 ; [.5263.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER DALETH
+10B64 ; [.5264.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER HE
+10B65 ; [.5265.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH
+10B66 ; [.5266.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER ZAYIN
+10B67 ; [.5267.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER HETH
+10B68 ; [.5268.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER TETH
+10B69 ; [.5269.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER YODH
+10B6A ; [.526A.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER KAPH
+10B6B ; [.526B.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER LAMEDH
+10B6C ; [.526C.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH
+10B6D ; [.526D.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER NUN
+10B6E ; [.526E.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER SAMEKH
+10B6F ; [.526F.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER PE
+10B70 ; [.5270.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER SADHE
+10B71 ; [.5271.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER SHIN
+10B72 ; [.5272.0020.0002] # INSCRIPTIONAL PAHLAVI LETTER TAW
+10B80 ; [.5273.0020.0002] # PSALTER PAHLAVI LETTER ALEPH
+10B81 ; [.5274.0020.0002] # PSALTER PAHLAVI LETTER BETH
+10B82 ; [.5275.0020.0002] # PSALTER PAHLAVI LETTER GIMEL
+10B83 ; [.5276.0020.0002] # PSALTER PAHLAVI LETTER DALETH
+10B84 ; [.5277.0020.0002] # PSALTER PAHLAVI LETTER HE
+10B85 ; [.5278.0020.0002] # PSALTER PAHLAVI LETTER WAW-AYIN-RESH
+10B86 ; [.5279.0020.0002] # PSALTER PAHLAVI LETTER ZAYIN
+10B87 ; [.527A.0020.0002] # PSALTER PAHLAVI LETTER HETH
+10B88 ; [.527B.0020.0002] # PSALTER PAHLAVI LETTER YODH
+10B89 ; [.527C.0020.0002] # PSALTER PAHLAVI LETTER KAPH
+10B8A ; [.527D.0020.0002] # PSALTER PAHLAVI LETTER LAMEDH
+10B8B ; [.527E.0020.0002] # PSALTER PAHLAVI LETTER MEM-QOPH
+10B8C ; [.527F.0020.0002] # PSALTER PAHLAVI LETTER NUN
+10B8D ; [.5280.0020.0002] # PSALTER PAHLAVI LETTER SAMEKH
+10B8E ; [.5281.0020.0002] # PSALTER PAHLAVI LETTER PE
+10B8F ; [.5282.0020.0002] # PSALTER PAHLAVI LETTER SADHE
+10B90 ; [.5283.0020.0002] # PSALTER PAHLAVI LETTER SHIN
+10B91 ; [.5284.0020.0002] # PSALTER PAHLAVI LETTER TAW
+10FE0 ; [.5285.0020.0002] # ELYMAIC LETTER ALEPH
+10FE1 ; [.5286.0020.0002] # ELYMAIC LETTER BETH
+10FE2 ; [.5287.0020.0002] # ELYMAIC LETTER GIMEL
+10FE3 ; [.5288.0020.0002] # ELYMAIC LETTER DALETH
+10FE4 ; [.5289.0020.0002] # ELYMAIC LETTER HE
+10FE5 ; [.528A.0020.0002] # ELYMAIC LETTER WAW
+10FE6 ; [.528B.0020.0002] # ELYMAIC LETTER ZAYIN
+10FF6 ; [.528B.0020.0004][.528E.0020.0004] # ELYMAIC LIGATURE ZAYIN-YODH
+10FE7 ; [.528C.0020.0002] # ELYMAIC LETTER HETH
+10FE8 ; [.528D.0020.0002] # ELYMAIC LETTER TETH
+10FE9 ; [.528E.0020.0002] # ELYMAIC LETTER YODH
+10FEA ; [.528F.0020.0002] # ELYMAIC LETTER KAPH
+10FEB ; [.5290.0020.0002] # ELYMAIC LETTER LAMEDH
+10FEC ; [.5291.0020.0002] # ELYMAIC LETTER MEM
+10FED ; [.5292.0020.0002] # ELYMAIC LETTER NUN
+10FEE ; [.5293.0020.0002] # ELYMAIC LETTER SAMEKH
+10FEF ; [.5294.0020.0002] # ELYMAIC LETTER AYIN
+10FF0 ; [.5295.0020.0002] # ELYMAIC LETTER PE
+10FF1 ; [.5296.0020.0002] # ELYMAIC LETTER SADHE
+10FF2 ; [.5297.0020.0002] # ELYMAIC LETTER QOPH
+10FF3 ; [.5298.0020.0002] # ELYMAIC LETTER RESH
+10FF4 ; [.5299.0020.0002] # ELYMAIC LETTER SHIN
+10FF5 ; [.529A.0020.0002] # ELYMAIC LETTER TAW
+10AC0 ; [.529B.0020.0002] # MANICHAEAN LETTER ALEPH
+10AC1 ; [.529C.0020.0002] # MANICHAEAN LETTER BETH
+10AC2 ; [.529D.0020.0002] # MANICHAEAN LETTER BHETH
+10AC3 ; [.529E.0020.0002] # MANICHAEAN LETTER GIMEL
+10AC4 ; [.529F.0020.0002] # MANICHAEAN LETTER GHIMEL
+10AC5 ; [.52A0.0020.0002] # MANICHAEAN LETTER DALETH
+10AC6 ; [.52A1.0020.0002] # MANICHAEAN LETTER HE
+10AC7 ; [.52A2.0020.0002] # MANICHAEAN LETTER WAW
+10AC8 ; [.52A2.0020.0004][.0000.0119.0004] # MANICHAEAN SIGN UD
+10AC9 ; [.52A3.0020.0002] # MANICHAEAN LETTER ZAYIN
+10ACA ; [.52A4.0020.0002] # MANICHAEAN LETTER ZHAYIN
+10ACB ; [.52A5.0020.0002] # MANICHAEAN LETTER JAYIN
+10ACC ; [.52A6.0020.0002] # MANICHAEAN LETTER JHAYIN
+10ACD ; [.52A7.0020.0002] # MANICHAEAN LETTER HETH
+10ACE ; [.52A8.0020.0002] # MANICHAEAN LETTER TETH
+10ACF ; [.52A9.0020.0002] # MANICHAEAN LETTER YODH
+10AD0 ; [.52AA.0020.0002] # MANICHAEAN LETTER KAPH
+10AD1 ; [.52AB.0020.0002] # MANICHAEAN LETTER XAPH
+10AD2 ; [.52AC.0020.0002] # MANICHAEAN LETTER KHAPH
+10AD3 ; [.52AD.0020.0002] # MANICHAEAN LETTER LAMEDH
+10AD4 ; [.52AE.0020.0002] # MANICHAEAN LETTER DHAMEDH
+10AD5 ; [.52AF.0020.0002] # MANICHAEAN LETTER THAMEDH
+10AD6 ; [.52B0.0020.0002] # MANICHAEAN LETTER MEM
+10AD7 ; [.52B1.0020.0002] # MANICHAEAN LETTER NUN
+10AD8 ; [.52B2.0020.0002] # MANICHAEAN LETTER SAMEKH
+10AD9 ; [.52B3.0020.0002] # MANICHAEAN LETTER AYIN
+10ADA ; [.52B4.0020.0002] # MANICHAEAN LETTER AAYIN
+10ADB ; [.52B5.0020.0002] # MANICHAEAN LETTER PE
+10ADC ; [.52B6.0020.0002] # MANICHAEAN LETTER FE
+10ADD ; [.52B7.0020.0002] # MANICHAEAN LETTER SADHE
+10ADE ; [.52B8.0020.0002] # MANICHAEAN LETTER QOPH
+10ADF ; [.52B9.0020.0002] # MANICHAEAN LETTER XOPH
+10AE0 ; [.52BA.0020.0002] # MANICHAEAN LETTER QHOPH
+10AE1 ; [.52BB.0020.0002] # MANICHAEAN LETTER RESH
+10AE2 ; [.52BC.0020.0002] # MANICHAEAN LETTER SHIN
+10AE3 ; [.52BD.0020.0002] # MANICHAEAN LETTER SSHIN
+10AE4 ; [.52BE.0020.0002] # MANICHAEAN LETTER TAW
+10F00 ; [.52BF.0020.0002] # OLD SOGDIAN LETTER ALEPH
+10F01 ; [.52BF.0020.0019] # OLD SOGDIAN LETTER FINAL ALEPH
+10F02 ; [.52C0.0020.0002] # OLD SOGDIAN LETTER BETH
+10F03 ; [.52C0.0020.0019] # OLD SOGDIAN LETTER FINAL BETH
+10F04 ; [.52C1.0020.0002] # OLD SOGDIAN LETTER GIMEL
+10F05 ; [.52C2.0020.0002] # OLD SOGDIAN LETTER HE
+10F06 ; [.52C2.0020.0019] # OLD SOGDIAN LETTER FINAL HE
+10F07 ; [.52C3.0020.0002] # OLD SOGDIAN LETTER WAW
+10F08 ; [.52C4.0020.0002] # OLD SOGDIAN LETTER ZAYIN
+10F09 ; [.52C5.0020.0002] # OLD SOGDIAN LETTER HETH
+10F0A ; [.52C6.0020.0002] # OLD SOGDIAN LETTER YODH
+10F0B ; [.52C7.0020.0002] # OLD SOGDIAN LETTER KAPH
+10F0C ; [.52C8.0020.0002] # OLD SOGDIAN LETTER LAMEDH
+10F0D ; [.52C9.0020.0002] # OLD SOGDIAN LETTER MEM
+10F0E ; [.52CA.0020.0002] # OLD SOGDIAN LETTER NUN
+10F0F ; [.52CA.0020.0019] # OLD SOGDIAN LETTER FINAL NUN
+10F10 ; [.52CA.0020.0004][.0000.0119.0004] # OLD SOGDIAN LETTER FINAL NUN WITH VERTICAL TAIL
+10F11 ; [.52CB.0020.0002] # OLD SOGDIAN LETTER SAMEKH
+10F12 ; [.52CC.0020.0002] # OLD SOGDIAN LETTER AYIN
+10F13 ; [.52CC.0020.0004][.0000.0119.0004] # OLD SOGDIAN LETTER ALTERNATE AYIN
+10F27 ; [.52CC.0020.0004][.52CF.0020.0004] # OLD SOGDIAN LIGATURE AYIN-DALETH
+10F14 ; [.52CD.0020.0002] # OLD SOGDIAN LETTER PE
+10F15 ; [.52CE.0020.0002] # OLD SOGDIAN LETTER SADHE
+10F16 ; [.52CE.0020.0019] # OLD SOGDIAN LETTER FINAL SADHE
+10F17 ; [.52CE.0020.0004][.0000.0119.0004] # OLD SOGDIAN LETTER FINAL SADHE WITH VERTICAL TAIL
+10F18 ; [.52CF.0020.0002] # OLD SOGDIAN LETTER RESH-AYIN-DALETH
+10F19 ; [.52D0.0020.0002] # OLD SOGDIAN LETTER SHIN
+10F1A ; [.52D1.0020.0002] # OLD SOGDIAN LETTER TAW
+10F1B ; [.52D1.0020.0019] # OLD SOGDIAN LETTER FINAL TAW
+10F1C ; [.52D1.0020.0004][.0000.0119.0004] # OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
+10F30 ; [.52D2.0020.0002] # SOGDIAN LETTER ALEPH
+10F31 ; [.52D3.0020.0002] # SOGDIAN LETTER BETH
+10F32 ; [.52D4.0020.0002] # SOGDIAN LETTER GIMEL
+10F33 ; [.52D5.0020.0002] # SOGDIAN LETTER HE
+10F34 ; [.52D6.0020.0002] # SOGDIAN LETTER WAW
+10F35 ; [.52D7.0020.0002] # SOGDIAN LETTER ZAYIN
+10F36 ; [.52D8.0020.0002] # SOGDIAN LETTER HETH
+10F37 ; [.52D9.0020.0002] # SOGDIAN LETTER YODH
+10F38 ; [.52DA.0020.0002] # SOGDIAN LETTER KAPH
+10F39 ; [.52DB.0020.0002] # SOGDIAN LETTER LAMEDH
+10F3A ; [.52DC.0020.0002] # SOGDIAN LETTER MEM
+10F3B ; [.52DD.0020.0002] # SOGDIAN LETTER NUN
+10F3C ; [.52DE.0020.0002] # SOGDIAN LETTER SAMEKH
+10F3D ; [.52DF.0020.0002] # SOGDIAN LETTER AYIN
+10F3E ; [.52E0.0020.0002] # SOGDIAN LETTER PE
+10F3F ; [.52E1.0020.0002] # SOGDIAN LETTER SADHE
+10F40 ; [.52E2.0020.0002] # SOGDIAN LETTER RESH-AYIN
+10F41 ; [.52E3.0020.0002] # SOGDIAN LETTER SHIN
+10F45 ; [.52E3.0020.0004][.0000.0119.0004] # SOGDIAN INDEPENDENT SHIN
+10F42 ; [.52E4.0020.0002] # SOGDIAN LETTER TAW
+10F43 ; [.52E5.0020.0002] # SOGDIAN LETTER FETH
+10F44 ; [.52E6.0020.0002] # SOGDIAN LETTER LESH
+10F70 ; [.52E7.0020.0002] # OLD UYGHUR LETTER ALEPH
+10F71 ; [.52E8.0020.0002] # OLD UYGHUR LETTER BETH
+10F72 ; [.52E9.0020.0002] # OLD UYGHUR LETTER GIMEL-HETH
+10F73 ; [.52EA.0020.0002] # OLD UYGHUR LETTER WAW
+10F74 ; [.52EB.0020.0002] # OLD UYGHUR LETTER ZAYIN
+10F75 ; [.52EC.0020.0002] # OLD UYGHUR LETTER FINAL HETH
+10F76 ; [.52ED.0020.0002] # OLD UYGHUR LETTER YODH
+10F77 ; [.52EE.0020.0002] # OLD UYGHUR LETTER KAPH
+10F78 ; [.52EF.0020.0002] # OLD UYGHUR LETTER LAMEDH
+10F79 ; [.52F0.0020.0002] # OLD UYGHUR LETTER MEM
+10F7A ; [.52F1.0020.0002] # OLD UYGHUR LETTER NUN
+10F7B ; [.52F2.0020.0002] # OLD UYGHUR LETTER SAMEKH
+10F7C ; [.52F3.0020.0002] # OLD UYGHUR LETTER PE
+10F7D ; [.52F4.0020.0002] # OLD UYGHUR LETTER SADHE
+10F7E ; [.52F5.0020.0002] # OLD UYGHUR LETTER RESH
+10F7F ; [.52F6.0020.0002] # OLD UYGHUR LETTER SHIN
+10F80 ; [.52F7.0020.0002] # OLD UYGHUR LETTER TAW
+10F81 ; [.52F8.0020.0002] # OLD UYGHUR LETTER LESH
+10E80 ; [.52F9.0020.0002] # YEZIDI LETTER ELIF
+10E81 ; [.52FA.0020.0002] # YEZIDI LETTER BE
+10E82 ; [.52FB.0020.0002] # YEZIDI LETTER PE
+10E83 ; [.52FC.0020.0002] # YEZIDI LETTER PHE
+10E84 ; [.52FD.0020.0002] # YEZIDI LETTER THE
+10E85 ; [.52FE.0020.0002] # YEZIDI LETTER SE
+10E86 ; [.52FF.0020.0002] # YEZIDI LETTER CIM
+10E87 ; [.5300.0020.0002] # YEZIDI LETTER CHIM
+10E88 ; [.5301.0020.0002] # YEZIDI LETTER CHHIM
+10E89 ; [.5302.0020.0002] # YEZIDI LETTER HHA
+10E8A ; [.5303.0020.0002] # YEZIDI LETTER XA
+10E8B ; [.5304.0020.0002] # YEZIDI LETTER DAL
+10E8C ; [.5305.0020.0002] # YEZIDI LETTER ZAL
+10E8D ; [.5306.0020.0002] # YEZIDI LETTER RA
+10E8E ; [.5307.0020.0002] # YEZIDI LETTER RHA
+10E8F ; [.5308.0020.0002] # YEZIDI LETTER ZA
+10E90 ; [.5309.0020.0002] # YEZIDI LETTER JA
+10E91 ; [.530A.0020.0002] # YEZIDI LETTER SIN
+10E92 ; [.530B.0020.0002] # YEZIDI LETTER SHIN
+10E93 ; [.530C.0020.0002] # YEZIDI LETTER SAD
+10E94 ; [.530D.0020.0002] # YEZIDI LETTER DAD
+10E95 ; [.530E.0020.0002] # YEZIDI LETTER TA
+10E96 ; [.530F.0020.0002] # YEZIDI LETTER ZE
+10E97 ; [.5310.0020.0002] # YEZIDI LETTER EYN
+10E98 ; [.5311.0020.0002] # YEZIDI LETTER XHEYN
+10E99 ; [.5312.0020.0002] # YEZIDI LETTER FA
+10E9A ; [.5313.0020.0002] # YEZIDI LETTER VA
+10E9B ; [.5314.0020.0002] # YEZIDI LETTER VA ALTERNATE FORM
+10E9C ; [.5315.0020.0002] # YEZIDI LETTER QAF
+10E9D ; [.5316.0020.0002] # YEZIDI LETTER KAF
+10E9E ; [.5317.0020.0002] # YEZIDI LETTER KHAF
+10E9F ; [.5318.0020.0002] # YEZIDI LETTER GAF
+10EA0 ; [.5319.0020.0002] # YEZIDI LETTER LAM
+10EB0 ; [.531A.0020.0002] # YEZIDI LETTER LAM WITH DOT ABOVE
+10EA1 ; [.531B.0020.0002] # YEZIDI LETTER MIM
+10EA2 ; [.531C.0020.0002] # YEZIDI LETTER NUN
+10EA3 ; [.531D.0020.0002] # YEZIDI LETTER UM
+10EA4 ; [.531E.0020.0002] # YEZIDI LETTER WAW
+10EA5 ; [.531F.0020.0002] # YEZIDI LETTER OW
+10EA6 ; [.5320.0020.0002] # YEZIDI LETTER EW
+10EA7 ; [.5321.0020.0002] # YEZIDI LETTER HAY
+10EA8 ; [.5322.0020.0002] # YEZIDI LETTER YOT
+10EB1 ; [.5323.0020.0002] # YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+10EA9 ; [.5324.0020.0002] # YEZIDI LETTER ET
+10FB0 ; [.5325.0020.0002] # CHORASMIAN LETTER ALEPH
+10FB1 ; [.5326.0020.0002] # CHORASMIAN LETTER SMALL ALEPH
+10FB2 ; [.5327.0020.0002] # CHORASMIAN LETTER BETH
+10FB3 ; [.5328.0020.0002] # CHORASMIAN LETTER GIMEL
+10FB4 ; [.5329.0020.0002] # CHORASMIAN LETTER DALETH
+10FB5 ; [.532A.0020.0002] # CHORASMIAN LETTER HE
+10FB6 ; [.532B.0020.0002] # CHORASMIAN LETTER WAW
+10FB7 ; [.532C.0020.0002] # CHORASMIAN LETTER CURLED WAW
+10FB8 ; [.532D.0020.0002] # CHORASMIAN LETTER ZAYIN
+10FB9 ; [.532E.0020.0002] # CHORASMIAN LETTER HETH
+10FBA ; [.532F.0020.0002] # CHORASMIAN LETTER YODH
+10FBB ; [.5330.0020.0002] # CHORASMIAN LETTER KAPH
+10FBC ; [.5331.0020.0002] # CHORASMIAN LETTER LAMEDH
+10FBD ; [.5332.0020.0002] # CHORASMIAN LETTER MEM
+10FBE ; [.5333.0020.0002] # CHORASMIAN LETTER NUN
+10FBF ; [.5334.0020.0002] # CHORASMIAN LETTER SAMEKH
+10FC0 ; [.5335.0020.0002] # CHORASMIAN LETTER AYIN
+10FC1 ; [.5336.0020.0002] # CHORASMIAN LETTER PE
+10FC2 ; [.5337.0020.0002] # CHORASMIAN LETTER RESH
+10FC3 ; [.5338.0020.0002] # CHORASMIAN LETTER SHIN
+10FC4 ; [.5339.0020.0002] # CHORASMIAN LETTER TAW
+10380 ; [.533A.0020.0002] # UGARITIC LETTER ALPA
+10381 ; [.533B.0020.0002] # UGARITIC LETTER BETA
+10382 ; [.533C.0020.0002] # UGARITIC LETTER GAMLA
+10383 ; [.533D.0020.0002] # UGARITIC LETTER KHA
+10384 ; [.533E.0020.0002] # UGARITIC LETTER DELTA
+10385 ; [.533F.0020.0002] # UGARITIC LETTER HO
+10386 ; [.5340.0020.0002] # UGARITIC LETTER WO
+10387 ; [.5341.0020.0002] # UGARITIC LETTER ZETA
+10388 ; [.5342.0020.0002] # UGARITIC LETTER HOTA
+10389 ; [.5343.0020.0002] # UGARITIC LETTER TET
+1038A ; [.5344.0020.0002] # UGARITIC LETTER YOD
+1038B ; [.5345.0020.0002] # UGARITIC LETTER KAF
+1038C ; [.5346.0020.0002] # UGARITIC LETTER SHIN
+1038D ; [.5347.0020.0002] # UGARITIC LETTER LAMDA
+1038E ; [.5348.0020.0002] # UGARITIC LETTER MEM
+1038F ; [.5349.0020.0002] # UGARITIC LETTER DHAL
+10390 ; [.534A.0020.0002] # UGARITIC LETTER NUN
+10391 ; [.534B.0020.0002] # UGARITIC LETTER ZU
+10392 ; [.534C.0020.0002] # UGARITIC LETTER SAMKA
+10393 ; [.534D.0020.0002] # UGARITIC LETTER AIN
+10394 ; [.534E.0020.0002] # UGARITIC LETTER PU
+10395 ; [.534F.0020.0002] # UGARITIC LETTER SADE
+10396 ; [.5350.0020.0002] # UGARITIC LETTER QOPA
+10397 ; [.5351.0020.0002] # UGARITIC LETTER RASHA
+10398 ; [.5352.0020.0002] # UGARITIC LETTER THANNA
+10399 ; [.5353.0020.0002] # UGARITIC LETTER GHAIN
+1039A ; [.5354.0020.0002] # UGARITIC LETTER TO
+1039B ; [.5355.0020.0002] # UGARITIC LETTER I
+1039C ; [.5356.0020.0002] # UGARITIC LETTER U
+1039D ; [.5357.0020.0002] # UGARITIC LETTER SSU
+103A0 ; [.5358.0020.0002] # OLD PERSIAN SIGN A
+103A1 ; [.5359.0020.0002] # OLD PERSIAN SIGN I
+103A2 ; [.535A.0020.0002] # OLD PERSIAN SIGN U
+103A3 ; [.535B.0020.0002] # OLD PERSIAN SIGN KA
+103A4 ; [.535C.0020.0002] # OLD PERSIAN SIGN KU
+103A5 ; [.535D.0020.0002] # OLD PERSIAN SIGN GA
+103A6 ; [.535E.0020.0002] # OLD PERSIAN SIGN GU
+103A7 ; [.535F.0020.0002] # OLD PERSIAN SIGN XA
+103A8 ; [.5360.0020.0002] # OLD PERSIAN SIGN CA
+103A9 ; [.5361.0020.0002] # OLD PERSIAN SIGN JA
+103AA ; [.5362.0020.0002] # OLD PERSIAN SIGN JI
+103AB ; [.5363.0020.0002] # OLD PERSIAN SIGN TA
+103AC ; [.5364.0020.0002] # OLD PERSIAN SIGN TU
+103AD ; [.5365.0020.0002] # OLD PERSIAN SIGN DA
+103AE ; [.5366.0020.0002] # OLD PERSIAN SIGN DI
+103AF ; [.5367.0020.0002] # OLD PERSIAN SIGN DU
+103B0 ; [.5368.0020.0002] # OLD PERSIAN SIGN THA
+103B1 ; [.5369.0020.0002] # OLD PERSIAN SIGN PA
+103B2 ; [.536A.0020.0002] # OLD PERSIAN SIGN BA
+103B3 ; [.536B.0020.0002] # OLD PERSIAN SIGN FA
+103B4 ; [.536C.0020.0002] # OLD PERSIAN SIGN NA
+103B5 ; [.536D.0020.0002] # OLD PERSIAN SIGN NU
+103B6 ; [.536E.0020.0002] # OLD PERSIAN SIGN MA
+103B7 ; [.536F.0020.0002] # OLD PERSIAN SIGN MI
+103B8 ; [.5370.0020.0002] # OLD PERSIAN SIGN MU
+103B9 ; [.5371.0020.0002] # OLD PERSIAN SIGN YA
+103BA ; [.5372.0020.0002] # OLD PERSIAN SIGN VA
+103BB ; [.5373.0020.0002] # OLD PERSIAN SIGN VI
+103BC ; [.5374.0020.0002] # OLD PERSIAN SIGN RA
+103BD ; [.5375.0020.0002] # OLD PERSIAN SIGN RU
+103BE ; [.5376.0020.0002] # OLD PERSIAN SIGN LA
+103BF ; [.5377.0020.0002] # OLD PERSIAN SIGN SA
+103C0 ; [.5378.0020.0002] # OLD PERSIAN SIGN ZA
+103C1 ; [.5379.0020.0002] # OLD PERSIAN SIGN SHA
+103C2 ; [.537A.0020.0002] # OLD PERSIAN SIGN SSA
+103C3 ; [.537B.0020.0002] # OLD PERSIAN SIGN HA
+103C8 ; [.537C.0020.0002] # OLD PERSIAN SIGN AURAMAZDAA
+103C9 ; [.537D.0020.0002] # OLD PERSIAN SIGN AURAMAZDAA-2
+103CA ; [.537E.0020.0002] # OLD PERSIAN SIGN AURAMAZDAAHA
+103CB ; [.537F.0020.0002] # OLD PERSIAN SIGN XSHAAYATHIYA
+103CC ; [.5380.0020.0002] # OLD PERSIAN SIGN DAHYAAUSH
+103CD ; [.5381.0020.0002] # OLD PERSIAN SIGN DAHYAAUSH-2
+103CE ; [.5382.0020.0002] # OLD PERSIAN SIGN BAGA
+103CF ; [.5383.0020.0002] # OLD PERSIAN SIGN BUUMISH
+12000 ; [.5384.0020.0002] # CUNEIFORM SIGN A
+12001 ; [.5385.0020.0002] # CUNEIFORM SIGN A TIMES A
+12002 ; [.5386.0020.0002] # CUNEIFORM SIGN A TIMES BAD
+12003 ; [.5387.0020.0002] # CUNEIFORM SIGN A TIMES GAN2 TENU
+12004 ; [.5388.0020.0002] # CUNEIFORM SIGN A TIMES HA
+12005 ; [.5389.0020.0002] # CUNEIFORM SIGN A TIMES IGI
+12006 ; [.538A.0020.0002] # CUNEIFORM SIGN A TIMES LAGAR GUNU
+12007 ; [.538B.0020.0002] # CUNEIFORM SIGN A TIMES MUSH
+12008 ; [.538C.0020.0002] # CUNEIFORM SIGN A TIMES SAG
+12009 ; [.538D.0020.0002] # CUNEIFORM SIGN A2
+1200A ; [.538E.0020.0002] # CUNEIFORM SIGN AB
+1200B ; [.538F.0020.0002] # CUNEIFORM SIGN AB TIMES ASH2
+1200C ; [.5390.0020.0002] # CUNEIFORM SIGN AB TIMES DUN3 GUNU
+1200D ; [.5391.0020.0002] # CUNEIFORM SIGN AB TIMES GAL
+1200E ; [.5392.0020.0002] # CUNEIFORM SIGN AB TIMES GAN2 TENU
+1200F ; [.5393.0020.0002] # CUNEIFORM SIGN AB TIMES HA
+12010 ; [.5394.0020.0002] # CUNEIFORM SIGN AB TIMES IGI GUNU
+12011 ; [.5395.0020.0002] # CUNEIFORM SIGN AB TIMES IMIN
+12012 ; [.5396.0020.0002] # CUNEIFORM SIGN AB TIMES LAGAB
+12013 ; [.5397.0020.0002] # CUNEIFORM SIGN AB TIMES SHESH
+12014 ; [.5398.0020.0002] # CUNEIFORM SIGN AB TIMES U PLUS U PLUS U
+12015 ; [.5399.0020.0002] # CUNEIFORM SIGN AB GUNU
+12016 ; [.539A.0020.0002] # CUNEIFORM SIGN AB2
+12017 ; [.539B.0020.0002] # CUNEIFORM SIGN AB2 TIMES BALAG
+12018 ; [.539C.0020.0002] # CUNEIFORM SIGN AB2 TIMES GAN2 TENU
+12019 ; [.539D.0020.0002] # CUNEIFORM SIGN AB2 TIMES ME PLUS EN
+1201A ; [.539E.0020.0002] # CUNEIFORM SIGN AB2 TIMES SHA3
+1201B ; [.539F.0020.0002] # CUNEIFORM SIGN AB2 TIMES TAK4
+1201C ; [.53A0.0020.0002] # CUNEIFORM SIGN AD
+1201D ; [.53A1.0020.0002] # CUNEIFORM SIGN AK
+1201E ; [.53A2.0020.0002] # CUNEIFORM SIGN AK TIMES ERIN2
+1201F ; [.53A3.0020.0002] # CUNEIFORM SIGN AK TIMES SHITA PLUS GISH
+12020 ; [.53A4.0020.0002] # CUNEIFORM SIGN AL
+12021 ; [.53A5.0020.0002] # CUNEIFORM SIGN AL TIMES AL
+12022 ; [.53A6.0020.0002] # CUNEIFORM SIGN AL TIMES DIM2
+12023 ; [.53A7.0020.0002] # CUNEIFORM SIGN AL TIMES GISH
+12024 ; [.53A8.0020.0002] # CUNEIFORM SIGN AL TIMES HA
+12025 ; [.53A9.0020.0002] # CUNEIFORM SIGN AL TIMES KAD3
+12026 ; [.53AA.0020.0002] # CUNEIFORM SIGN AL TIMES KI
+12027 ; [.53AB.0020.0002] # CUNEIFORM SIGN AL TIMES SHE
+12028 ; [.53AC.0020.0002] # CUNEIFORM SIGN AL TIMES USH
+12029 ; [.53AD.0020.0002] # CUNEIFORM SIGN ALAN
+1202A ; [.53AE.0020.0002] # CUNEIFORM SIGN ALEPH
+1202B ; [.53AF.0020.0002] # CUNEIFORM SIGN AMAR
+1202C ; [.53B0.0020.0002] # CUNEIFORM SIGN AMAR TIMES SHE
+1202D ; [.53B1.0020.0002] # CUNEIFORM SIGN AN
+1202E ; [.53B2.0020.0002] # CUNEIFORM SIGN AN OVER AN
+1202F ; [.53B3.0020.0002] # CUNEIFORM SIGN AN THREE TIMES
+12030 ; [.53B4.0020.0002] # CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA
+12031 ; [.53B5.0020.0002] # CUNEIFORM SIGN AN PLUS NAGA SQUARED
+12032 ; [.53B6.0020.0002] # CUNEIFORM SIGN ANSHE
+12033 ; [.53B7.0020.0002] # CUNEIFORM SIGN APIN
+12034 ; [.53B8.0020.0002] # CUNEIFORM SIGN ARAD
+12035 ; [.53B9.0020.0002] # CUNEIFORM SIGN ARAD TIMES KUR
+12036 ; [.53BA.0020.0002] # CUNEIFORM SIGN ARKAB
+12037 ; [.53BB.0020.0002] # CUNEIFORM SIGN ASAL2
+12038 ; [.53BC.0020.0002] # CUNEIFORM SIGN ASH
+12039 ; [.53BD.0020.0002] # CUNEIFORM SIGN ASH ZIDA TENU
+1203A ; [.53BE.0020.0002] # CUNEIFORM SIGN ASH KABA TENU
+1203B ; [.53BF.0020.0002] # CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP
+1203C ; [.53C0.0020.0002] # CUNEIFORM SIGN ASH OVER ASH OVER ASH
+1203D ; [.53C1.0020.0002] # CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH
+1203E ; [.53C2.0020.0002] # CUNEIFORM SIGN ASH2
+1203F ; [.53C3.0020.0002] # CUNEIFORM SIGN ASHGAB
+12040 ; [.53C4.0020.0002] # CUNEIFORM SIGN BA
+12041 ; [.53C5.0020.0002] # CUNEIFORM SIGN BAD
+12042 ; [.53C6.0020.0002] # CUNEIFORM SIGN BAG3
+12043 ; [.53C7.0020.0002] # CUNEIFORM SIGN BAHAR2
+12044 ; [.53C8.0020.0002] # CUNEIFORM SIGN BAL
+12045 ; [.53C9.0020.0002] # CUNEIFORM SIGN BAL OVER BAL
+12046 ; [.53CA.0020.0002] # CUNEIFORM SIGN BALAG
+12047 ; [.53CB.0020.0002] # CUNEIFORM SIGN BAR
+12048 ; [.53CC.0020.0002] # CUNEIFORM SIGN BARA2
+12049 ; [.53CD.0020.0002] # CUNEIFORM SIGN BI
+1204A ; [.53CE.0020.0002] # CUNEIFORM SIGN BI TIMES A
+1204B ; [.53CF.0020.0002] # CUNEIFORM SIGN BI TIMES GAR
+1204C ; [.53D0.0020.0002] # CUNEIFORM SIGN BI TIMES IGI GUNU
+1204D ; [.53D1.0020.0002] # CUNEIFORM SIGN BU
+1204E ; [.53D2.0020.0002] # CUNEIFORM SIGN BU OVER BU AB
+1204F ; [.53D3.0020.0002] # CUNEIFORM SIGN BU OVER BU UN
+12050 ; [.53D4.0020.0002] # CUNEIFORM SIGN BU CROSSING BU
+12051 ; [.53D5.0020.0002] # CUNEIFORM SIGN BULUG
+12052 ; [.53D6.0020.0002] # CUNEIFORM SIGN BULUG OVER BULUG
+12053 ; [.53D7.0020.0002] # CUNEIFORM SIGN BUR
+12054 ; [.53D8.0020.0002] # CUNEIFORM SIGN BUR2
+12055 ; [.53D9.0020.0002] # CUNEIFORM SIGN DA
+12056 ; [.53DA.0020.0002] # CUNEIFORM SIGN DAG
+12057 ; [.53DB.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH
+12058 ; [.53DC.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES AMAR
+12059 ; [.53DD.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES BALAG
+1205A ; [.53DE.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES BI
+1205B ; [.53DF.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GA
+1205C ; [.53E0.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH
+1205D ; [.53E1.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GI
+1205E ; [.53E2.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GIR2
+1205F ; [.53E3.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES GUD
+12060 ; [.53E4.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES HA
+12061 ; [.53E5.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES IR
+12062 ; [.53E6.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU
+12063 ; [.53E7.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES KAK
+12064 ; [.53E8.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LA
+12065 ; [.53E9.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LU
+12066 ; [.53EA.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2
+12067 ; [.53EB.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES LUM
+12068 ; [.53EC.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES NE
+12069 ; [.53ED.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP
+1206A ; [.53EE.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES SI
+1206B ; [.53EF.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES TAK4
+1206C ; [.53F0.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2
+1206D ; [.53F1.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES USH
+1206E ; [.53F2.0020.0002] # CUNEIFORM SIGN DAM
+1206F ; [.53F3.0020.0002] # CUNEIFORM SIGN DAR
+12070 ; [.53F4.0020.0002] # CUNEIFORM SIGN DARA3
+12071 ; [.53F5.0020.0002] # CUNEIFORM SIGN DARA4
+12072 ; [.53F6.0020.0002] # CUNEIFORM SIGN DI
+12073 ; [.53F7.0020.0002] # CUNEIFORM SIGN DIB
+12074 ; [.53F8.0020.0002] # CUNEIFORM SIGN DIM
+12075 ; [.53F9.0020.0002] # CUNEIFORM SIGN DIM TIMES SHE
+12076 ; [.53FA.0020.0002] # CUNEIFORM SIGN DIM2
+12077 ; [.53FB.0020.0002] # CUNEIFORM SIGN DIN
+12078 ; [.53FC.0020.0002] # CUNEIFORM SIGN DIN KASKAL U GUNU DISH
+12079 ; [.53FD.0020.0002] # CUNEIFORM SIGN DISH
+1207A ; [.53FE.0020.0002] # CUNEIFORM SIGN DU
+1207B ; [.53FF.0020.0002] # CUNEIFORM SIGN DU OVER DU
+1207C ; [.5400.0020.0002] # CUNEIFORM SIGN DU GUNU
+1207D ; [.5401.0020.0002] # CUNEIFORM SIGN DU SHESHIG
+1207E ; [.5402.0020.0002] # CUNEIFORM SIGN DUB
+1207F ; [.5403.0020.0002] # CUNEIFORM SIGN DUB TIMES ESH2
+12080 ; [.5404.0020.0002] # CUNEIFORM SIGN DUB2
+12081 ; [.5405.0020.0002] # CUNEIFORM SIGN DUG
+12082 ; [.5406.0020.0002] # CUNEIFORM SIGN DUGUD
+12083 ; [.5407.0020.0002] # CUNEIFORM SIGN DUH
+12084 ; [.5408.0020.0002] # CUNEIFORM SIGN DUN
+12085 ; [.5409.0020.0002] # CUNEIFORM SIGN DUN3
+12086 ; [.540A.0020.0002] # CUNEIFORM SIGN DUN3 GUNU
+12087 ; [.540B.0020.0002] # CUNEIFORM SIGN DUN3 GUNU GUNU
+12088 ; [.540C.0020.0002] # CUNEIFORM SIGN DUN4
+12089 ; [.540D.0020.0002] # CUNEIFORM SIGN DUR2
+1208A ; [.540E.0020.0002] # CUNEIFORM SIGN E
+1208B ; [.540F.0020.0002] # CUNEIFORM SIGN E TIMES PAP
+1208C ; [.5410.0020.0002] # CUNEIFORM SIGN E OVER E NUN OVER NUN
+1208D ; [.5411.0020.0002] # CUNEIFORM SIGN E2
+1208E ; [.5412.0020.0002] # CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA
+1208F ; [.5413.0020.0002] # CUNEIFORM SIGN E2 TIMES GAR
+12090 ; [.5414.0020.0002] # CUNEIFORM SIGN E2 TIMES MI
+12091 ; [.5415.0020.0002] # CUNEIFORM SIGN E2 TIMES SAL
+12092 ; [.5416.0020.0002] # CUNEIFORM SIGN E2 TIMES SHE
+12093 ; [.5417.0020.0002] # CUNEIFORM SIGN E2 TIMES U
+12094 ; [.5418.0020.0002] # CUNEIFORM SIGN EDIN
+12095 ; [.5419.0020.0002] # CUNEIFORM SIGN EGIR
+12096 ; [.541A.0020.0002] # CUNEIFORM SIGN EL
+12097 ; [.541B.0020.0002] # CUNEIFORM SIGN EN
+12098 ; [.541C.0020.0002] # CUNEIFORM SIGN EN TIMES GAN2
+12099 ; [.541D.0020.0002] # CUNEIFORM SIGN EN TIMES GAN2 TENU
+1209A ; [.541E.0020.0002] # CUNEIFORM SIGN EN TIMES ME
+1209B ; [.541F.0020.0002] # CUNEIFORM SIGN EN CROSSING EN
+1209C ; [.5420.0020.0002] # CUNEIFORM SIGN EN OPPOSING EN
+1209D ; [.5421.0020.0002] # CUNEIFORM SIGN EN SQUARED
+1209E ; [.5422.0020.0002] # CUNEIFORM SIGN EREN
+1209F ; [.5423.0020.0002] # CUNEIFORM SIGN ERIN2
+120A0 ; [.5424.0020.0002] # CUNEIFORM SIGN ESH2
+120A1 ; [.5425.0020.0002] # CUNEIFORM SIGN EZEN
+120A2 ; [.5426.0020.0002] # CUNEIFORM SIGN EZEN TIMES A
+120A3 ; [.5427.0020.0002] # CUNEIFORM SIGN EZEN TIMES A PLUS LAL
+120A4 ; [.5428.0020.0002] # CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL
+120A5 ; [.5429.0020.0002] # CUNEIFORM SIGN EZEN TIMES AN
+120A6 ; [.542A.0020.0002] # CUNEIFORM SIGN EZEN TIMES BAD
+120A7 ; [.542B.0020.0002] # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU
+120A8 ; [.542C.0020.0002] # CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU
+120A9 ; [.542D.0020.0002] # CUNEIFORM SIGN EZEN TIMES HA
+120AA ; [.542E.0020.0002] # CUNEIFORM SIGN EZEN TIMES HA GUNU
+120AB ; [.542F.0020.0002] # CUNEIFORM SIGN EZEN TIMES IGI GUNU
+120AC ; [.5430.0020.0002] # CUNEIFORM SIGN EZEN TIMES KASKAL
+120AD ; [.5431.0020.0002] # CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED
+120AE ; [.5432.0020.0002] # CUNEIFORM SIGN EZEN TIMES KU3
+120AF ; [.5433.0020.0002] # CUNEIFORM SIGN EZEN TIMES LA
+120B0 ; [.5434.0020.0002] # CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL
+120B1 ; [.5435.0020.0002] # CUNEIFORM SIGN EZEN TIMES LI
+120B2 ; [.5436.0020.0002] # CUNEIFORM SIGN EZEN TIMES LU
+120B3 ; [.5437.0020.0002] # CUNEIFORM SIGN EZEN TIMES U2
+120B4 ; [.5438.0020.0002] # CUNEIFORM SIGN EZEN TIMES UD
+120B5 ; [.5439.0020.0002] # CUNEIFORM SIGN GA
+120B6 ; [.543A.0020.0002] # CUNEIFORM SIGN GA GUNU
+120B7 ; [.543B.0020.0002] # CUNEIFORM SIGN GA2
+120B8 ; [.543C.0020.0002] # CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA
+120B9 ; [.543D.0020.0002] # CUNEIFORM SIGN GA2 TIMES A PLUS HA
+120BA ; [.543E.0020.0002] # CUNEIFORM SIGN GA2 TIMES A PLUS IGI
+120BB ; [.543F.0020.0002] # CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB
+120BC ; [.5440.0020.0002] # CUNEIFORM SIGN GA2 TIMES AN
+120BD ; [.5441.0020.0002] # CUNEIFORM SIGN GA2 TIMES ASH
+120BE ; [.5442.0020.0002] # CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL
+120BF ; [.5443.0020.0002] # CUNEIFORM SIGN GA2 TIMES BAD
+120C0 ; [.5444.0020.0002] # CUNEIFORM SIGN GA2 TIMES BAR PLUS RA
+120C1 ; [.5445.0020.0002] # CUNEIFORM SIGN GA2 TIMES BUR
+120C2 ; [.5446.0020.0002] # CUNEIFORM SIGN GA2 TIMES BUR PLUS RA
+120C3 ; [.5447.0020.0002] # CUNEIFORM SIGN GA2 TIMES DA
+120C4 ; [.5448.0020.0002] # CUNEIFORM SIGN GA2 TIMES DI
+120C5 ; [.5449.0020.0002] # CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE
+120C6 ; [.544A.0020.0002] # CUNEIFORM SIGN GA2 TIMES DUB
+120C7 ; [.544B.0020.0002] # CUNEIFORM SIGN GA2 TIMES EL
+120C8 ; [.544C.0020.0002] # CUNEIFORM SIGN GA2 TIMES EL PLUS LA
+120C9 ; [.544D.0020.0002] # CUNEIFORM SIGN GA2 TIMES EN
+120CA ; [.544E.0020.0002] # CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU
+120CB ; [.544F.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAN2 TENU
+120CC ; [.5450.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAR
+120CD ; [.5451.0020.0002] # CUNEIFORM SIGN GA2 TIMES GI
+120CE ; [.5452.0020.0002] # CUNEIFORM SIGN GA2 TIMES GI4
+120CF ; [.5453.0020.0002] # CUNEIFORM SIGN GA2 TIMES GI4 PLUS A
+120D0 ; [.5454.0020.0002] # CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU
+120D1 ; [.5455.0020.0002] # CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2
+120D2 ; [.5456.0020.0002] # CUNEIFORM SIGN GA2 TIMES HAL
+120D3 ; [.5457.0020.0002] # CUNEIFORM SIGN GA2 TIMES HAL PLUS LA
+120D4 ; [.5458.0020.0002] # CUNEIFORM SIGN GA2 TIMES HI PLUS LI
+120D5 ; [.5459.0020.0002] # CUNEIFORM SIGN GA2 TIMES HUB2
+120D6 ; [.545A.0020.0002] # CUNEIFORM SIGN GA2 TIMES IGI GUNU
+120D7 ; [.545B.0020.0002] # CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH
+120D8 ; [.545C.0020.0002] # CUNEIFORM SIGN GA2 TIMES KAK
+120D9 ; [.545D.0020.0002] # CUNEIFORM SIGN GA2 TIMES KASKAL
+120DA ; [.545E.0020.0002] # CUNEIFORM SIGN GA2 TIMES KID
+120DB ; [.545F.0020.0002] # CUNEIFORM SIGN GA2 TIMES KID PLUS LAL
+120DC ; [.5460.0020.0002] # CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN
+120DD ; [.5461.0020.0002] # CUNEIFORM SIGN GA2 TIMES LA
+120DE ; [.5462.0020.0002] # CUNEIFORM SIGN GA2 TIMES ME PLUS EN
+120DF ; [.5463.0020.0002] # CUNEIFORM SIGN GA2 TIMES MI
+120E0 ; [.5464.0020.0002] # CUNEIFORM SIGN GA2 TIMES NUN
+120E1 ; [.5465.0020.0002] # CUNEIFORM SIGN GA2 TIMES NUN OVER NUN
+120E2 ; [.5466.0020.0002] # CUNEIFORM SIGN GA2 TIMES PA
+120E3 ; [.5467.0020.0002] # CUNEIFORM SIGN GA2 TIMES SAL
+120E4 ; [.5468.0020.0002] # CUNEIFORM SIGN GA2 TIMES SAR
+120E5 ; [.5469.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHE
+120E6 ; [.546A.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR
+120E7 ; [.546B.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHID
+120E8 ; [.546C.0020.0002] # CUNEIFORM SIGN GA2 TIMES SUM
+120E9 ; [.546D.0020.0002] # CUNEIFORM SIGN GA2 TIMES TAK4
+120EA ; [.546E.0020.0002] # CUNEIFORM SIGN GA2 TIMES U
+120EB ; [.546F.0020.0002] # CUNEIFORM SIGN GA2 TIMES UD
+120EC ; [.5470.0020.0002] # CUNEIFORM SIGN GA2 TIMES UD PLUS DU
+120ED ; [.5471.0020.0002] # CUNEIFORM SIGN GA2 OVER GA2
+120EE ; [.5472.0020.0002] # CUNEIFORM SIGN GABA
+120EF ; [.5473.0020.0002] # CUNEIFORM SIGN GABA CROSSING GABA
+120F0 ; [.5474.0020.0002] # CUNEIFORM SIGN GAD
+120F1 ; [.5475.0020.0002] # CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR
+120F2 ; [.5476.0020.0002] # CUNEIFORM SIGN GAL
+120F3 ; [.5477.0020.0002] # CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR
+120F4 ; [.5478.0020.0002] # CUNEIFORM SIGN GALAM
+120F5 ; [.5479.0020.0002] # CUNEIFORM SIGN GAM
+120F6 ; [.547A.0020.0002] # CUNEIFORM SIGN GAN
+120F7 ; [.547B.0020.0002] # CUNEIFORM SIGN GAN2
+120F8 ; [.547C.0020.0002] # CUNEIFORM SIGN GAN2 TENU
+120F9 ; [.547D.0020.0002] # CUNEIFORM SIGN GAN2 OVER GAN2
+120FA ; [.547E.0020.0002] # CUNEIFORM SIGN GAN2 CROSSING GAN2
+120FB ; [.547F.0020.0002] # CUNEIFORM SIGN GAR
+120FC ; [.5480.0020.0002] # CUNEIFORM SIGN GAR3
+120FD ; [.5481.0020.0002] # CUNEIFORM SIGN GASHAN
+120FE ; [.5482.0020.0002] # CUNEIFORM SIGN GESHTIN
+120FF ; [.5483.0020.0002] # CUNEIFORM SIGN GESHTIN TIMES KUR
+12100 ; [.5484.0020.0002] # CUNEIFORM SIGN GI
+12101 ; [.5485.0020.0002] # CUNEIFORM SIGN GI TIMES E
+12102 ; [.5486.0020.0002] # CUNEIFORM SIGN GI TIMES U
+12103 ; [.5487.0020.0002] # CUNEIFORM SIGN GI CROSSING GI
+12104 ; [.5488.0020.0002] # CUNEIFORM SIGN GI4
+12105 ; [.5489.0020.0002] # CUNEIFORM SIGN GI4 OVER GI4
+12106 ; [.548A.0020.0002] # CUNEIFORM SIGN GI4 CROSSING GI4
+12107 ; [.548B.0020.0002] # CUNEIFORM SIGN GIDIM
+12108 ; [.548C.0020.0002] # CUNEIFORM SIGN GIR2
+12109 ; [.548D.0020.0002] # CUNEIFORM SIGN GIR2 GUNU
+1210A ; [.548E.0020.0002] # CUNEIFORM SIGN GIR3
+1210B ; [.548F.0020.0002] # CUNEIFORM SIGN GIR3 TIMES A PLUS IGI
+1210C ; [.5490.0020.0002] # CUNEIFORM SIGN GIR3 TIMES GAN2 TENU
+1210D ; [.5491.0020.0002] # CUNEIFORM SIGN GIR3 TIMES IGI
+1210E ; [.5492.0020.0002] # CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI
+1210F ; [.5493.0020.0002] # CUNEIFORM SIGN GIR3 TIMES PA
+12110 ; [.5494.0020.0002] # CUNEIFORM SIGN GISAL
+12111 ; [.5495.0020.0002] # CUNEIFORM SIGN GISH
+12112 ; [.5496.0020.0002] # CUNEIFORM SIGN GISH CROSSING GISH
+12113 ; [.5497.0020.0002] # CUNEIFORM SIGN GISH TIMES BAD
+12114 ; [.5498.0020.0002] # CUNEIFORM SIGN GISH TIMES TAK4
+12115 ; [.5499.0020.0002] # CUNEIFORM SIGN GISH TENU
+12116 ; [.549A.0020.0002] # CUNEIFORM SIGN GU
+12117 ; [.549B.0020.0002] # CUNEIFORM SIGN GU CROSSING GU
+12118 ; [.549C.0020.0002] # CUNEIFORM SIGN GU2
+12119 ; [.549D.0020.0002] # CUNEIFORM SIGN GU2 TIMES KAK
+1211A ; [.549E.0020.0002] # CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU
+1211B ; [.549F.0020.0002] # CUNEIFORM SIGN GU2 TIMES NUN
+1211C ; [.54A0.0020.0002] # CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2
+1211D ; [.54A1.0020.0002] # CUNEIFORM SIGN GU2 GUNU
+1211E ; [.54A2.0020.0002] # CUNEIFORM SIGN GUD
+1211F ; [.54A3.0020.0002] # CUNEIFORM SIGN GUD TIMES A PLUS KUR
+12120 ; [.54A4.0020.0002] # CUNEIFORM SIGN GUD TIMES KUR
+12121 ; [.54A5.0020.0002] # CUNEIFORM SIGN GUD OVER GUD LUGAL
+12122 ; [.54A6.0020.0002] # CUNEIFORM SIGN GUL
+12123 ; [.54A7.0020.0002] # CUNEIFORM SIGN GUM
+12124 ; [.54A8.0020.0002] # CUNEIFORM SIGN GUM TIMES SHE
+12125 ; [.54A9.0020.0002] # CUNEIFORM SIGN GUR
+12126 ; [.54AA.0020.0002] # CUNEIFORM SIGN GUR7
+12127 ; [.54AB.0020.0002] # CUNEIFORM SIGN GURUN
+12128 ; [.54AC.0020.0002] # CUNEIFORM SIGN GURUSH
+12129 ; [.54AD.0020.0002] # CUNEIFORM SIGN HA
+1212A ; [.54AE.0020.0002] # CUNEIFORM SIGN HA TENU
+1212B ; [.54AF.0020.0002] # CUNEIFORM SIGN HA GUNU
+1212C ; [.54B0.0020.0002] # CUNEIFORM SIGN HAL
+1212D ; [.54B1.0020.0002] # CUNEIFORM SIGN HI
+1212E ; [.54B2.0020.0002] # CUNEIFORM SIGN HI TIMES ASH
+1212F ; [.54B3.0020.0002] # CUNEIFORM SIGN HI TIMES ASH2
+12130 ; [.54B4.0020.0002] # CUNEIFORM SIGN HI TIMES BAD
+12131 ; [.54B5.0020.0002] # CUNEIFORM SIGN HI TIMES DISH
+12132 ; [.54B6.0020.0002] # CUNEIFORM SIGN HI TIMES GAD
+12133 ; [.54B7.0020.0002] # CUNEIFORM SIGN HI TIMES KIN
+12134 ; [.54B8.0020.0002] # CUNEIFORM SIGN HI TIMES NUN
+12135 ; [.54B9.0020.0002] # CUNEIFORM SIGN HI TIMES SHE
+12136 ; [.54BA.0020.0002] # CUNEIFORM SIGN HI TIMES U
+12137 ; [.54BB.0020.0002] # CUNEIFORM SIGN HU
+12138 ; [.54BC.0020.0002] # CUNEIFORM SIGN HUB2
+12139 ; [.54BD.0020.0002] # CUNEIFORM SIGN HUB2 TIMES AN
+1213A ; [.54BE.0020.0002] # CUNEIFORM SIGN HUB2 TIMES HAL
+1213B ; [.54BF.0020.0002] # CUNEIFORM SIGN HUB2 TIMES KASKAL
+1213C ; [.54C0.0020.0002] # CUNEIFORM SIGN HUB2 TIMES LISH
+1213D ; [.54C1.0020.0002] # CUNEIFORM SIGN HUB2 TIMES UD
+1213E ; [.54C2.0020.0002] # CUNEIFORM SIGN HUL2
+1213F ; [.54C3.0020.0002] # CUNEIFORM SIGN I
+12140 ; [.54C4.0020.0002] # CUNEIFORM SIGN I A
+12141 ; [.54C5.0020.0002] # CUNEIFORM SIGN IB
+12142 ; [.54C6.0020.0002] # CUNEIFORM SIGN IDIM
+12143 ; [.54C7.0020.0002] # CUNEIFORM SIGN IDIM OVER IDIM BUR
+12144 ; [.54C8.0020.0002] # CUNEIFORM SIGN IDIM OVER IDIM SQUARED
+12145 ; [.54C9.0020.0002] # CUNEIFORM SIGN IG
+12146 ; [.54CA.0020.0002] # CUNEIFORM SIGN IGI
+12147 ; [.54CB.0020.0002] # CUNEIFORM SIGN IGI DIB
+12148 ; [.54CC.0020.0002] # CUNEIFORM SIGN IGI RI
+12149 ; [.54CD.0020.0002] # CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD
+1214A ; [.54CE.0020.0002] # CUNEIFORM SIGN IGI GUNU
+1214B ; [.54CF.0020.0002] # CUNEIFORM SIGN IL
+1214C ; [.54D0.0020.0002] # CUNEIFORM SIGN IL TIMES GAN2 TENU
+1214D ; [.54D1.0020.0002] # CUNEIFORM SIGN IL2
+1214E ; [.54D2.0020.0002] # CUNEIFORM SIGN IM
+1214F ; [.54D3.0020.0002] # CUNEIFORM SIGN IM TIMES TAK4
+12150 ; [.54D4.0020.0002] # CUNEIFORM SIGN IM CROSSING IM
+12151 ; [.54D5.0020.0002] # CUNEIFORM SIGN IM OPPOSING IM
+12152 ; [.54D6.0020.0002] # CUNEIFORM SIGN IM SQUARED
+12153 ; [.54D7.0020.0002] # CUNEIFORM SIGN IMIN
+12154 ; [.54D8.0020.0002] # CUNEIFORM SIGN IN
+12155 ; [.54D9.0020.0002] # CUNEIFORM SIGN IR
+12156 ; [.54DA.0020.0002] # CUNEIFORM SIGN ISH
+12157 ; [.54DB.0020.0002] # CUNEIFORM SIGN KA
+12158 ; [.54DC.0020.0002] # CUNEIFORM SIGN KA TIMES A
+12159 ; [.54DD.0020.0002] # CUNEIFORM SIGN KA TIMES AD
+1215A ; [.54DE.0020.0002] # CUNEIFORM SIGN KA TIMES AD PLUS KU3
+1215B ; [.54DF.0020.0002] # CUNEIFORM SIGN KA TIMES ASH2
+1215C ; [.54E0.0020.0002] # CUNEIFORM SIGN KA TIMES BAD
+1215D ; [.54E1.0020.0002] # CUNEIFORM SIGN KA TIMES BALAG
+1215E ; [.54E2.0020.0002] # CUNEIFORM SIGN KA TIMES BAR
+1215F ; [.54E3.0020.0002] # CUNEIFORM SIGN KA TIMES BI
+12160 ; [.54E4.0020.0002] # CUNEIFORM SIGN KA TIMES ERIN2
+12161 ; [.54E5.0020.0002] # CUNEIFORM SIGN KA TIMES ESH2
+12162 ; [.54E6.0020.0002] # CUNEIFORM SIGN KA TIMES GA
+12163 ; [.54E7.0020.0002] # CUNEIFORM SIGN KA TIMES GAL
+12164 ; [.54E8.0020.0002] # CUNEIFORM SIGN KA TIMES GAN2 TENU
+12165 ; [.54E9.0020.0002] # CUNEIFORM SIGN KA TIMES GAR
+12166 ; [.54EA.0020.0002] # CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A
+12167 ; [.54EB.0020.0002] # CUNEIFORM SIGN KA TIMES GI
+12168 ; [.54EC.0020.0002] # CUNEIFORM SIGN KA TIMES GIR2
+12169 ; [.54ED.0020.0002] # CUNEIFORM SIGN KA TIMES GISH PLUS SAR
+1216A ; [.54EE.0020.0002] # CUNEIFORM SIGN KA TIMES GISH CROSSING GISH
+1216B ; [.54EF.0020.0002] # CUNEIFORM SIGN KA TIMES GU
+1216C ; [.54F0.0020.0002] # CUNEIFORM SIGN KA TIMES GUR7
+1216D ; [.54F1.0020.0002] # CUNEIFORM SIGN KA TIMES IGI
+1216E ; [.54F2.0020.0002] # CUNEIFORM SIGN KA TIMES IM
+1216F ; [.54F3.0020.0002] # CUNEIFORM SIGN KA TIMES KAK
+12170 ; [.54F4.0020.0002] # CUNEIFORM SIGN KA TIMES KI
+12171 ; [.54F5.0020.0002] # CUNEIFORM SIGN KA TIMES KID
+12172 ; [.54F6.0020.0002] # CUNEIFORM SIGN KA TIMES LI
+12173 ; [.54F7.0020.0002] # CUNEIFORM SIGN KA TIMES LU
+12174 ; [.54F8.0020.0002] # CUNEIFORM SIGN KA TIMES ME
+12175 ; [.54F9.0020.0002] # CUNEIFORM SIGN KA TIMES ME PLUS DU
+12176 ; [.54FA.0020.0002] # CUNEIFORM SIGN KA TIMES ME PLUS GI
+12177 ; [.54FB.0020.0002] # CUNEIFORM SIGN KA TIMES ME PLUS TE
+12178 ; [.54FC.0020.0002] # CUNEIFORM SIGN KA TIMES MI
+12179 ; [.54FD.0020.0002] # CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ
+1217A ; [.54FE.0020.0002] # CUNEIFORM SIGN KA TIMES NE
+1217B ; [.54FF.0020.0002] # CUNEIFORM SIGN KA TIMES NUN
+1217C ; [.5500.0020.0002] # CUNEIFORM SIGN KA TIMES PI
+1217D ; [.5501.0020.0002] # CUNEIFORM SIGN KA TIMES RU
+1217E ; [.5502.0020.0002] # CUNEIFORM SIGN KA TIMES SA
+1217F ; [.5503.0020.0002] # CUNEIFORM SIGN KA TIMES SAR
+12180 ; [.5504.0020.0002] # CUNEIFORM SIGN KA TIMES SHA
+12181 ; [.5505.0020.0002] # CUNEIFORM SIGN KA TIMES SHE
+12182 ; [.5506.0020.0002] # CUNEIFORM SIGN KA TIMES SHID
+12183 ; [.5507.0020.0002] # CUNEIFORM SIGN KA TIMES SHU
+12184 ; [.5508.0020.0002] # CUNEIFORM SIGN KA TIMES SIG
+12185 ; [.5509.0020.0002] # CUNEIFORM SIGN KA TIMES SUHUR
+12186 ; [.550A.0020.0002] # CUNEIFORM SIGN KA TIMES TAR
+12187 ; [.550B.0020.0002] # CUNEIFORM SIGN KA TIMES U
+12188 ; [.550C.0020.0002] # CUNEIFORM SIGN KA TIMES U2
+12189 ; [.550D.0020.0002] # CUNEIFORM SIGN KA TIMES UD
+1218A ; [.550E.0020.0002] # CUNEIFORM SIGN KA TIMES UMUM TIMES PA
+1218B ; [.550F.0020.0002] # CUNEIFORM SIGN KA TIMES USH
+1218C ; [.5510.0020.0002] # CUNEIFORM SIGN KA TIMES ZI
+1218D ; [.5511.0020.0002] # CUNEIFORM SIGN KA2
+1218E ; [.5512.0020.0002] # CUNEIFORM SIGN KA2 CROSSING KA2
+1218F ; [.5513.0020.0002] # CUNEIFORM SIGN KAB
+12190 ; [.5514.0020.0002] # CUNEIFORM SIGN KAD2
+12191 ; [.5515.0020.0002] # CUNEIFORM SIGN KAD3
+12192 ; [.5516.0020.0002] # CUNEIFORM SIGN KAD4
+12193 ; [.5517.0020.0002] # CUNEIFORM SIGN KAD5
+12194 ; [.5518.0020.0002] # CUNEIFORM SIGN KAD5 OVER KAD5
+12195 ; [.5519.0020.0002] # CUNEIFORM SIGN KAK
+12196 ; [.551A.0020.0002] # CUNEIFORM SIGN KAK TIMES IGI GUNU
+12197 ; [.551B.0020.0002] # CUNEIFORM SIGN KAL
+12198 ; [.551C.0020.0002] # CUNEIFORM SIGN KAL TIMES BAD
+12199 ; [.551D.0020.0002] # CUNEIFORM SIGN KAL CROSSING KAL
+1219A ; [.551E.0020.0002] # CUNEIFORM SIGN KAM2
+1219B ; [.551F.0020.0002] # CUNEIFORM SIGN KAM4
+1219C ; [.5520.0020.0002] # CUNEIFORM SIGN KASKAL
+1219D ; [.5521.0020.0002] # CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U
+1219E ; [.5522.0020.0002] # CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U
+1219F ; [.5523.0020.0002] # CUNEIFORM SIGN KESH2
+121A0 ; [.5524.0020.0002] # CUNEIFORM SIGN KI
+121A1 ; [.5525.0020.0002] # CUNEIFORM SIGN KI TIMES BAD
+121A2 ; [.5526.0020.0002] # CUNEIFORM SIGN KI TIMES U
+121A3 ; [.5527.0020.0002] # CUNEIFORM SIGN KI TIMES UD
+121A4 ; [.5528.0020.0002] # CUNEIFORM SIGN KID
+121A5 ; [.5529.0020.0002] # CUNEIFORM SIGN KIN
+121A6 ; [.552A.0020.0002] # CUNEIFORM SIGN KISAL
+121A7 ; [.552B.0020.0002] # CUNEIFORM SIGN KISH
+121A8 ; [.552C.0020.0002] # CUNEIFORM SIGN KISIM5
+121A9 ; [.552D.0020.0002] # CUNEIFORM SIGN KISIM5 OVER KISIM5
+121AA ; [.552E.0020.0002] # CUNEIFORM SIGN KU
+121AB ; [.552F.0020.0002] # CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2
+121AC ; [.5530.0020.0002] # CUNEIFORM SIGN KU3
+121AD ; [.5531.0020.0002] # CUNEIFORM SIGN KU4
+121AE ; [.5532.0020.0002] # CUNEIFORM SIGN KU4 VARIANT FORM
+121AF ; [.5533.0020.0002] # CUNEIFORM SIGN KU7
+121B0 ; [.5534.0020.0002] # CUNEIFORM SIGN KUL
+121B1 ; [.5535.0020.0002] # CUNEIFORM SIGN KUL GUNU
+121B2 ; [.5536.0020.0002] # CUNEIFORM SIGN KUN
+121B3 ; [.5537.0020.0002] # CUNEIFORM SIGN KUR
+121B4 ; [.5538.0020.0002] # CUNEIFORM SIGN KUR OPPOSING KUR
+121B5 ; [.5539.0020.0002] # CUNEIFORM SIGN KUSHU2
+121B6 ; [.553A.0020.0002] # CUNEIFORM SIGN KWU318
+121B7 ; [.553B.0020.0002] # CUNEIFORM SIGN LA
+121B8 ; [.553C.0020.0002] # CUNEIFORM SIGN LAGAB
+121B9 ; [.553D.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A
+121BA ; [.553E.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA
+121BB ; [.553F.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A PLUS GAR
+121BC ; [.5540.0020.0002] # CUNEIFORM SIGN LAGAB TIMES A PLUS LAL
+121BD ; [.5541.0020.0002] # CUNEIFORM SIGN LAGAB TIMES AL
+121BE ; [.5542.0020.0002] # CUNEIFORM SIGN LAGAB TIMES AN
+121BF ; [.5543.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU
+121C0 ; [.5544.0020.0002] # CUNEIFORM SIGN LAGAB TIMES BAD
+121C1 ; [.5545.0020.0002] # CUNEIFORM SIGN LAGAB TIMES BI
+121C2 ; [.5546.0020.0002] # CUNEIFORM SIGN LAGAB TIMES DAR
+121C3 ; [.5547.0020.0002] # CUNEIFORM SIGN LAGAB TIMES EN
+121C4 ; [.5548.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GA
+121C5 ; [.5549.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GAR
+121C6 ; [.554A.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GUD
+121C7 ; [.554B.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD
+121C8 ; [.554C.0020.0002] # CUNEIFORM SIGN LAGAB TIMES HA
+121C9 ; [.554D.0020.0002] # CUNEIFORM SIGN LAGAB TIMES HAL
+121CA ; [.554E.0020.0002] # CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN
+121CB ; [.554F.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IGI GUNU
+121CC ; [.5550.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IM
+121CD ; [.5551.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IM PLUS HA
+121CE ; [.5552.0020.0002] # CUNEIFORM SIGN LAGAB TIMES IM PLUS LU
+121CF ; [.5553.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KI
+121D0 ; [.5554.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KIN
+121D1 ; [.5555.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KU3
+121D2 ; [.5556.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KUL
+121D3 ; [.5557.0020.0002] # CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A
+121D4 ; [.5558.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LAGAB
+121D5 ; [.5559.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LISH
+121D6 ; [.555A.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LU
+121D7 ; [.555B.0020.0002] # CUNEIFORM SIGN LAGAB TIMES LUL
+121D8 ; [.555C.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ME
+121D9 ; [.555D.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ME PLUS EN
+121DA ; [.555E.0020.0002] # CUNEIFORM SIGN LAGAB TIMES MUSH
+121DB ; [.555F.0020.0002] # CUNEIFORM SIGN LAGAB TIMES NE
+121DC ; [.5560.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM
+121DD ; [.5561.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2
+121DE ; [.5562.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU
+121DF ; [.5563.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHU2
+121E0 ; [.5564.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2
+121E1 ; [.5565.0020.0002] # CUNEIFORM SIGN LAGAB TIMES SUM
+121E2 ; [.5566.0020.0002] # CUNEIFORM SIGN LAGAB TIMES TAG
+121E3 ; [.5567.0020.0002] # CUNEIFORM SIGN LAGAB TIMES TAK4
+121E4 ; [.5568.0020.0002] # CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA
+121E5 ; [.5569.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U
+121E6 ; [.556A.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U PLUS A
+121E7 ; [.556B.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U
+121E8 ; [.556C.0020.0002] # CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH
+121E9 ; [.556D.0020.0002] # CUNEIFORM SIGN LAGAB TIMES UD
+121EA ; [.556E.0020.0002] # CUNEIFORM SIGN LAGAB TIMES USH
+121EB ; [.556F.0020.0002] # CUNEIFORM SIGN LAGAB SQUARED
+121EC ; [.5570.0020.0002] # CUNEIFORM SIGN LAGAR
+121ED ; [.5571.0020.0002] # CUNEIFORM SIGN LAGAR TIMES SHE
+121EE ; [.5572.0020.0002] # CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM
+121EF ; [.5573.0020.0002] # CUNEIFORM SIGN LAGAR GUNU
+121F0 ; [.5574.0020.0002] # CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE
+121F1 ; [.5575.0020.0002] # CUNEIFORM SIGN LAHSHU
+121F2 ; [.5576.0020.0002] # CUNEIFORM SIGN LAL
+121F3 ; [.5577.0020.0002] # CUNEIFORM SIGN LAL TIMES LAL
+121F4 ; [.5578.0020.0002] # CUNEIFORM SIGN LAM
+121F5 ; [.5579.0020.0002] # CUNEIFORM SIGN LAM TIMES KUR
+121F6 ; [.557A.0020.0002] # CUNEIFORM SIGN LAM TIMES KUR PLUS RU
+121F7 ; [.557B.0020.0002] # CUNEIFORM SIGN LI
+121F8 ; [.557C.0020.0002] # CUNEIFORM SIGN LIL
+121F9 ; [.557D.0020.0002] # CUNEIFORM SIGN LIMMU2
+121FA ; [.557E.0020.0002] # CUNEIFORM SIGN LISH
+121FB ; [.557F.0020.0002] # CUNEIFORM SIGN LU
+121FC ; [.5580.0020.0002] # CUNEIFORM SIGN LU TIMES BAD
+121FD ; [.5581.0020.0002] # CUNEIFORM SIGN LU2
+121FE ; [.5582.0020.0002] # CUNEIFORM SIGN LU2 TIMES AL
+121FF ; [.5583.0020.0002] # CUNEIFORM SIGN LU2 TIMES BAD
+12200 ; [.5584.0020.0002] # CUNEIFORM SIGN LU2 TIMES ESH2
+12201 ; [.5585.0020.0002] # CUNEIFORM SIGN LU2 TIMES ESH2 TENU
+12202 ; [.5586.0020.0002] # CUNEIFORM SIGN LU2 TIMES GAN2 TENU
+12203 ; [.5587.0020.0002] # CUNEIFORM SIGN LU2 TIMES HI TIMES BAD
+12204 ; [.5588.0020.0002] # CUNEIFORM SIGN LU2 TIMES IM
+12205 ; [.5589.0020.0002] # CUNEIFORM SIGN LU2 TIMES KAD2
+12206 ; [.558A.0020.0002] # CUNEIFORM SIGN LU2 TIMES KAD3
+12207 ; [.558B.0020.0002] # CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH
+12208 ; [.558C.0020.0002] # CUNEIFORM SIGN LU2 TIMES KI
+12209 ; [.558D.0020.0002] # CUNEIFORM SIGN LU2 TIMES LA PLUS ASH
+1220A ; [.558E.0020.0002] # CUNEIFORM SIGN LU2 TIMES LAGAB
+1220B ; [.558F.0020.0002] # CUNEIFORM SIGN LU2 TIMES ME PLUS EN
+1220C ; [.5590.0020.0002] # CUNEIFORM SIGN LU2 TIMES NE
+1220D ; [.5591.0020.0002] # CUNEIFORM SIGN LU2 TIMES NU
+1220E ; [.5592.0020.0002] # CUNEIFORM SIGN LU2 TIMES SI PLUS ASH
+1220F ; [.5593.0020.0002] # CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU
+12210 ; [.5594.0020.0002] # CUNEIFORM SIGN LU2 TIMES TUG2
+12211 ; [.5595.0020.0002] # CUNEIFORM SIGN LU2 TENU
+12212 ; [.5596.0020.0002] # CUNEIFORM SIGN LU2 CROSSING LU2
+12213 ; [.5597.0020.0002] # CUNEIFORM SIGN LU2 OPPOSING LU2
+12214 ; [.5598.0020.0002] # CUNEIFORM SIGN LU2 SQUARED
+12215 ; [.5599.0020.0002] # CUNEIFORM SIGN LU2 SHESHIG
+12216 ; [.559A.0020.0002] # CUNEIFORM SIGN LU3
+12217 ; [.559B.0020.0002] # CUNEIFORM SIGN LUGAL
+12218 ; [.559C.0020.0002] # CUNEIFORM SIGN LUGAL OVER LUGAL
+12219 ; [.559D.0020.0002] # CUNEIFORM SIGN LUGAL OPPOSING LUGAL
+1221A ; [.559E.0020.0002] # CUNEIFORM SIGN LUGAL SHESHIG
+1221B ; [.559F.0020.0002] # CUNEIFORM SIGN LUH
+1221C ; [.55A0.0020.0002] # CUNEIFORM SIGN LUL
+1221D ; [.55A1.0020.0002] # CUNEIFORM SIGN LUM
+1221E ; [.55A2.0020.0002] # CUNEIFORM SIGN LUM OVER LUM
+1221F ; [.55A3.0020.0002] # CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR
+12220 ; [.55A4.0020.0002] # CUNEIFORM SIGN MA
+12221 ; [.55A5.0020.0002] # CUNEIFORM SIGN MA TIMES TAK4
+12222 ; [.55A6.0020.0002] # CUNEIFORM SIGN MA GUNU
+12223 ; [.55A7.0020.0002] # CUNEIFORM SIGN MA2
+12224 ; [.55A8.0020.0002] # CUNEIFORM SIGN MAH
+12225 ; [.55A9.0020.0002] # CUNEIFORM SIGN MAR
+12226 ; [.55AA.0020.0002] # CUNEIFORM SIGN MASH
+12227 ; [.55AB.0020.0002] # CUNEIFORM SIGN MASH2
+12228 ; [.55AC.0020.0002] # CUNEIFORM SIGN ME
+12229 ; [.55AD.0020.0002] # CUNEIFORM SIGN MES
+1222A ; [.55AE.0020.0002] # CUNEIFORM SIGN MI
+1222B ; [.55AF.0020.0002] # CUNEIFORM SIGN MIN
+1222C ; [.55B0.0020.0002] # CUNEIFORM SIGN MU
+1222D ; [.55B1.0020.0002] # CUNEIFORM SIGN MU OVER MU
+1222E ; [.55B2.0020.0002] # CUNEIFORM SIGN MUG
+1222F ; [.55B3.0020.0002] # CUNEIFORM SIGN MUG GUNU
+12230 ; [.55B4.0020.0002] # CUNEIFORM SIGN MUNSUB
+12231 ; [.55B5.0020.0002] # CUNEIFORM SIGN MURGU2
+12232 ; [.55B6.0020.0002] # CUNEIFORM SIGN MUSH
+12233 ; [.55B7.0020.0002] # CUNEIFORM SIGN MUSH TIMES A
+12234 ; [.55B8.0020.0002] # CUNEIFORM SIGN MUSH TIMES KUR
+12235 ; [.55B9.0020.0002] # CUNEIFORM SIGN MUSH TIMES ZA
+12236 ; [.55BA.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH
+12237 ; [.55BB.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA
+12238 ; [.55BC.0020.0002] # CUNEIFORM SIGN MUSH CROSSING MUSH
+12239 ; [.55BD.0020.0002] # CUNEIFORM SIGN MUSH3
+1223A ; [.55BE.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES A
+1223B ; [.55BF.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES A PLUS DI
+1223C ; [.55C0.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES DI
+1223D ; [.55C1.0020.0002] # CUNEIFORM SIGN MUSH3 GUNU
+1223E ; [.55C2.0020.0002] # CUNEIFORM SIGN NA
+1223F ; [.55C3.0020.0002] # CUNEIFORM SIGN NA2
+12240 ; [.55C4.0020.0002] # CUNEIFORM SIGN NAGA
+12241 ; [.55C5.0020.0002] # CUNEIFORM SIGN NAGA INVERTED
+12242 ; [.55C6.0020.0002] # CUNEIFORM SIGN NAGA TIMES SHU TENU
+12243 ; [.55C7.0020.0002] # CUNEIFORM SIGN NAGA OPPOSING NAGA
+12244 ; [.55C8.0020.0002] # CUNEIFORM SIGN NAGAR
+12245 ; [.55C9.0020.0002] # CUNEIFORM SIGN NAM NUTILLU
+12246 ; [.55CA.0020.0002] # CUNEIFORM SIGN NAM
+12247 ; [.55CB.0020.0002] # CUNEIFORM SIGN NAM2
+12248 ; [.55CC.0020.0002] # CUNEIFORM SIGN NE
+12249 ; [.55CD.0020.0002] # CUNEIFORM SIGN NE TIMES A
+1224A ; [.55CE.0020.0002] # CUNEIFORM SIGN NE TIMES UD
+1224B ; [.55CF.0020.0002] # CUNEIFORM SIGN NE SHESHIG
+1224C ; [.55D0.0020.0002] # CUNEIFORM SIGN NI
+1224D ; [.55D1.0020.0002] # CUNEIFORM SIGN NI TIMES E
+1224E ; [.55D2.0020.0002] # CUNEIFORM SIGN NI2
+1224F ; [.55D3.0020.0002] # CUNEIFORM SIGN NIM
+12250 ; [.55D4.0020.0002] # CUNEIFORM SIGN NIM TIMES GAN2 TENU
+12251 ; [.55D5.0020.0002] # CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU
+12252 ; [.55D6.0020.0002] # CUNEIFORM SIGN NINDA2
+12253 ; [.55D7.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES AN
+12254 ; [.55D8.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES ASH
+12255 ; [.55D9.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH
+12256 ; [.55DA.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GUD
+12257 ; [.55DB.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU
+12258 ; [.55DC.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES NE
+12259 ; [.55DD.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES NUN
+1225A ; [.55DE.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE
+1225B ; [.55DF.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN
+1225C ; [.55E0.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH
+1225D ; [.55E1.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH
+1225E ; [.55E2.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH
+1225F ; [.55E3.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES USH
+12260 ; [.55E4.0020.0002] # CUNEIFORM SIGN NISAG
+12261 ; [.55E5.0020.0002] # CUNEIFORM SIGN NU
+12262 ; [.55E6.0020.0002] # CUNEIFORM SIGN NU11
+122D4 ; [.55E7.0020.0002] # CUNEIFORM SIGN SHIR TENU
+122D5 ; [.55E8.0020.0002] # CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR
+12263 ; [.55E9.0020.0002] # CUNEIFORM SIGN NUN
+12264 ; [.55EA.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES GAR
+12265 ; [.55EB.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES MASH
+12266 ; [.55EC.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES SAL
+12267 ; [.55ED.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL
+12268 ; [.55EE.0020.0002] # CUNEIFORM SIGN NUN LAGAR TIMES USH
+12269 ; [.55EF.0020.0002] # CUNEIFORM SIGN NUN TENU
+1226A ; [.55F0.0020.0002] # CUNEIFORM SIGN NUN OVER NUN
+1226B ; [.55F1.0020.0002] # CUNEIFORM SIGN NUN CROSSING NUN
+1226C ; [.55F2.0020.0002] # CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR
+1226D ; [.55F3.0020.0002] # CUNEIFORM SIGN NUNUZ
+1226E ; [.55F4.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB
+1226F ; [.55F5.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES BI
+12270 ; [.55F6.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES DUG
+12271 ; [.55F7.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES GUD
+12272 ; [.55F8.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU
+12273 ; [.55F9.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3
+12274 ; [.55FA.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES LA
+12275 ; [.55FB.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES NE
+12276 ; [.55FC.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3
+12277 ; [.55FD.0020.0002] # CUNEIFORM SIGN NUNUZ AB2 TIMES U2
+12278 ; [.55FE.0020.0002] # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI
+12279 ; [.55FF.0020.0002] # CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U
+1227A ; [.5600.0020.0002] # CUNEIFORM SIGN PA
+1227B ; [.5601.0020.0002] # CUNEIFORM SIGN PAD
+1227C ; [.5602.0020.0002] # CUNEIFORM SIGN PAN
+1227D ; [.5603.0020.0002] # CUNEIFORM SIGN PAP
+1227E ; [.5604.0020.0002] # CUNEIFORM SIGN PESH2
+1227F ; [.5605.0020.0002] # CUNEIFORM SIGN PI
+12280 ; [.5606.0020.0002] # CUNEIFORM SIGN PI TIMES A
+12281 ; [.5607.0020.0002] # CUNEIFORM SIGN PI TIMES AB
+12282 ; [.5608.0020.0002] # CUNEIFORM SIGN PI TIMES BI
+12283 ; [.5609.0020.0002] # CUNEIFORM SIGN PI TIMES BU
+12284 ; [.560A.0020.0002] # CUNEIFORM SIGN PI TIMES E
+12285 ; [.560B.0020.0002] # CUNEIFORM SIGN PI TIMES I
+12286 ; [.560C.0020.0002] # CUNEIFORM SIGN PI TIMES IB
+12287 ; [.560D.0020.0002] # CUNEIFORM SIGN PI TIMES U
+12288 ; [.560E.0020.0002] # CUNEIFORM SIGN PI TIMES U2
+12289 ; [.560F.0020.0002] # CUNEIFORM SIGN PI CROSSING PI
+1228A ; [.5610.0020.0002] # CUNEIFORM SIGN PIRIG
+1228B ; [.5611.0020.0002] # CUNEIFORM SIGN PIRIG TIMES KAL
+1228C ; [.5612.0020.0002] # CUNEIFORM SIGN PIRIG TIMES UD
+1228D ; [.5613.0020.0002] # CUNEIFORM SIGN PIRIG TIMES ZA
+1228E ; [.5614.0020.0002] # CUNEIFORM SIGN PIRIG OPPOSING PIRIG
+1228F ; [.5615.0020.0002] # CUNEIFORM SIGN RA
+12290 ; [.5616.0020.0002] # CUNEIFORM SIGN RAB
+12291 ; [.5617.0020.0002] # CUNEIFORM SIGN RI
+12292 ; [.5618.0020.0002] # CUNEIFORM SIGN RU
+12293 ; [.5619.0020.0002] # CUNEIFORM SIGN SA
+12294 ; [.561A.0020.0002] # CUNEIFORM SIGN SAG NUTILLU
+12295 ; [.561B.0020.0002] # CUNEIFORM SIGN SAG
+12296 ; [.561C.0020.0002] # CUNEIFORM SIGN SAG TIMES A
+12297 ; [.561D.0020.0002] # CUNEIFORM SIGN SAG TIMES DU
+12298 ; [.561E.0020.0002] # CUNEIFORM SIGN SAG TIMES DUB
+12299 ; [.561F.0020.0002] # CUNEIFORM SIGN SAG TIMES HA
+1229A ; [.5620.0020.0002] # CUNEIFORM SIGN SAG TIMES KAK
+1229B ; [.5621.0020.0002] # CUNEIFORM SIGN SAG TIMES KUR
+1229C ; [.5622.0020.0002] # CUNEIFORM SIGN SAG TIMES LUM
+1229D ; [.5623.0020.0002] # CUNEIFORM SIGN SAG TIMES MI
+1229E ; [.5624.0020.0002] # CUNEIFORM SIGN SAG TIMES NUN
+1229F ; [.5625.0020.0002] # CUNEIFORM SIGN SAG TIMES SAL
+122A0 ; [.5626.0020.0002] # CUNEIFORM SIGN SAG TIMES SHID
+122A1 ; [.5627.0020.0002] # CUNEIFORM SIGN SAG TIMES TAB
+122A2 ; [.5628.0020.0002] # CUNEIFORM SIGN SAG TIMES U2
+122A3 ; [.5629.0020.0002] # CUNEIFORM SIGN SAG TIMES UB
+122A4 ; [.562A.0020.0002] # CUNEIFORM SIGN SAG TIMES UM
+122A5 ; [.562B.0020.0002] # CUNEIFORM SIGN SAG TIMES UR
+122A6 ; [.562C.0020.0002] # CUNEIFORM SIGN SAG TIMES USH
+122A7 ; [.562D.0020.0002] # CUNEIFORM SIGN SAG OVER SAG
+122A8 ; [.562E.0020.0002] # CUNEIFORM SIGN SAG GUNU
+122A9 ; [.562F.0020.0002] # CUNEIFORM SIGN SAL
+122AA ; [.5630.0020.0002] # CUNEIFORM SIGN SAL LAGAB TIMES ASH2
+122AB ; [.5631.0020.0002] # CUNEIFORM SIGN SANGA2
+122AC ; [.5632.0020.0002] # CUNEIFORM SIGN SAR
+122AD ; [.5633.0020.0002] # CUNEIFORM SIGN SHA
+122AE ; [.5634.0020.0002] # CUNEIFORM SIGN SHA3
+122AF ; [.5635.0020.0002] # CUNEIFORM SIGN SHA3 TIMES A
+122B0 ; [.5636.0020.0002] # CUNEIFORM SIGN SHA3 TIMES BAD
+122B1 ; [.5637.0020.0002] # CUNEIFORM SIGN SHA3 TIMES GISH
+122B2 ; [.5638.0020.0002] # CUNEIFORM SIGN SHA3 TIMES NE
+122B3 ; [.5639.0020.0002] # CUNEIFORM SIGN SHA3 TIMES SHU2
+122B4 ; [.563A.0020.0002] # CUNEIFORM SIGN SHA3 TIMES TUR
+122B5 ; [.563B.0020.0002] # CUNEIFORM SIGN SHA3 TIMES U
+122B6 ; [.563C.0020.0002] # CUNEIFORM SIGN SHA3 TIMES U PLUS A
+122B7 ; [.563D.0020.0002] # CUNEIFORM SIGN SHA6
+122B8 ; [.563E.0020.0002] # CUNEIFORM SIGN SHAB6
+122B9 ; [.563F.0020.0002] # CUNEIFORM SIGN SHAR2
+122BA ; [.5640.0020.0002] # CUNEIFORM SIGN SHE
+122BB ; [.5641.0020.0002] # CUNEIFORM SIGN SHE HU
+122BC ; [.5642.0020.0002] # CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR
+122BD ; [.5643.0020.0002] # CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR
+122BE ; [.5644.0020.0002] # CUNEIFORM SIGN SHEG9
+122BF ; [.5645.0020.0002] # CUNEIFORM SIGN SHEN
+122C0 ; [.5646.0020.0002] # CUNEIFORM SIGN SHESH
+122C1 ; [.5647.0020.0002] # CUNEIFORM SIGN SHESH2
+122C2 ; [.5648.0020.0002] # CUNEIFORM SIGN SHESHLAM
+122C3 ; [.5649.0020.0002] # CUNEIFORM SIGN SHID
+122C4 ; [.564A.0020.0002] # CUNEIFORM SIGN SHID TIMES A
+122C5 ; [.564B.0020.0002] # CUNEIFORM SIGN SHID TIMES IM
+122C6 ; [.564C.0020.0002] # CUNEIFORM SIGN SHIM
+122C7 ; [.564D.0020.0002] # CUNEIFORM SIGN SHIM TIMES A
+122C8 ; [.564E.0020.0002] # CUNEIFORM SIGN SHIM TIMES BAL
+122C9 ; [.564F.0020.0002] # CUNEIFORM SIGN SHIM TIMES BULUG
+122CA ; [.5650.0020.0002] # CUNEIFORM SIGN SHIM TIMES DIN
+122CB ; [.5651.0020.0002] # CUNEIFORM SIGN SHIM TIMES GAR
+122CC ; [.5652.0020.0002] # CUNEIFORM SIGN SHIM TIMES IGI
+122CD ; [.5653.0020.0002] # CUNEIFORM SIGN SHIM TIMES IGI GUNU
+122CE ; [.5654.0020.0002] # CUNEIFORM SIGN SHIM TIMES KUSHU2
+122CF ; [.5655.0020.0002] # CUNEIFORM SIGN SHIM TIMES LUL
+122D0 ; [.5656.0020.0002] # CUNEIFORM SIGN SHIM TIMES MUG
+122D1 ; [.5657.0020.0002] # CUNEIFORM SIGN SHIM TIMES SAL
+122D2 ; [.5658.0020.0002] # CUNEIFORM SIGN SHINIG
+122D3 ; [.5659.0020.0002] # CUNEIFORM SIGN SHIR
+122D6 ; [.565A.0020.0002] # CUNEIFORM SIGN SHITA
+122D7 ; [.565B.0020.0002] # CUNEIFORM SIGN SHU
+122D8 ; [.565C.0020.0002] # CUNEIFORM SIGN SHU OVER INVERTED SHU
+122D9 ; [.565D.0020.0002] # CUNEIFORM SIGN SHU2
+122DA ; [.565E.0020.0002] # CUNEIFORM SIGN SHUBUR
+122DB ; [.565F.0020.0002] # CUNEIFORM SIGN SI
+122DC ; [.5660.0020.0002] # CUNEIFORM SIGN SI GUNU
+122DD ; [.5661.0020.0002] # CUNEIFORM SIGN SIG
+122DE ; [.5662.0020.0002] # CUNEIFORM SIGN SIG4
+122DF ; [.5663.0020.0002] # CUNEIFORM SIGN SIG4 OVER SIG4 SHU2
+122E0 ; [.5664.0020.0002] # CUNEIFORM SIGN SIK2
+122E1 ; [.5665.0020.0002] # CUNEIFORM SIGN SILA3
+122E2 ; [.5666.0020.0002] # CUNEIFORM SIGN SU
+122E3 ; [.5667.0020.0002] # CUNEIFORM SIGN SU OVER SU
+122E4 ; [.5668.0020.0002] # CUNEIFORM SIGN SUD
+122E5 ; [.5669.0020.0002] # CUNEIFORM SIGN SUD2
+122E6 ; [.566A.0020.0002] # CUNEIFORM SIGN SUHUR
+122E7 ; [.566B.0020.0002] # CUNEIFORM SIGN SUM
+122E8 ; [.566C.0020.0002] # CUNEIFORM SIGN SUMASH
+122E9 ; [.566D.0020.0002] # CUNEIFORM SIGN SUR
+122EA ; [.566E.0020.0002] # CUNEIFORM SIGN SUR9
+122EB ; [.566F.0020.0002] # CUNEIFORM SIGN TA
+122EC ; [.5670.0020.0002] # CUNEIFORM SIGN TA ASTERISK
+122ED ; [.5671.0020.0002] # CUNEIFORM SIGN TA TIMES HI
+122EE ; [.5672.0020.0002] # CUNEIFORM SIGN TA TIMES MI
+122EF ; [.5673.0020.0002] # CUNEIFORM SIGN TA GUNU
+122F0 ; [.5674.0020.0002] # CUNEIFORM SIGN TAB
+122F1 ; [.5675.0020.0002] # CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH
+122F2 ; [.5676.0020.0002] # CUNEIFORM SIGN TAB SQUARED
+122F3 ; [.5677.0020.0002] # CUNEIFORM SIGN TAG
+122F4 ; [.5678.0020.0002] # CUNEIFORM SIGN TAG TIMES BI
+122F5 ; [.5679.0020.0002] # CUNEIFORM SIGN TAG TIMES GUD
+122F6 ; [.567A.0020.0002] # CUNEIFORM SIGN TAG TIMES SHE
+122F7 ; [.567B.0020.0002] # CUNEIFORM SIGN TAG TIMES SHU
+122F8 ; [.567C.0020.0002] # CUNEIFORM SIGN TAG TIMES TUG2
+122F9 ; [.567D.0020.0002] # CUNEIFORM SIGN TAG TIMES UD
+122FA ; [.567E.0020.0002] # CUNEIFORM SIGN TAK4
+122FB ; [.567F.0020.0002] # CUNEIFORM SIGN TAR
+122FC ; [.5680.0020.0002] # CUNEIFORM SIGN TE
+122FD ; [.5681.0020.0002] # CUNEIFORM SIGN TE GUNU
+122FE ; [.5682.0020.0002] # CUNEIFORM SIGN TI
+122FF ; [.5683.0020.0002] # CUNEIFORM SIGN TI TENU
+12300 ; [.5684.0020.0002] # CUNEIFORM SIGN TIL
+12301 ; [.5685.0020.0002] # CUNEIFORM SIGN TIR
+12302 ; [.5686.0020.0002] # CUNEIFORM SIGN TIR TIMES TAK4
+12303 ; [.5687.0020.0002] # CUNEIFORM SIGN TIR OVER TIR
+12304 ; [.5688.0020.0002] # CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR
+12305 ; [.5689.0020.0002] # CUNEIFORM SIGN TU
+12306 ; [.568A.0020.0002] # CUNEIFORM SIGN TUG2
+12307 ; [.568B.0020.0002] # CUNEIFORM SIGN TUK
+12308 ; [.568C.0020.0002] # CUNEIFORM SIGN TUM
+12309 ; [.568D.0020.0002] # CUNEIFORM SIGN TUR
+1230A ; [.568E.0020.0002] # CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA
+1230B ; [.568F.0020.0002] # CUNEIFORM SIGN U
+1230C ; [.5690.0020.0002] # CUNEIFORM SIGN U GUD
+1230D ; [.5691.0020.0002] # CUNEIFORM SIGN U U U
+1230E ; [.5692.0020.0002] # CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR
+1230F ; [.5693.0020.0002] # CUNEIFORM SIGN U OVER U SUR OVER SUR
+12310 ; [.5694.0020.0002] # CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED
+12311 ; [.5695.0020.0002] # CUNEIFORM SIGN U2
+12312 ; [.5696.0020.0002] # CUNEIFORM SIGN UB
+12313 ; [.5697.0020.0002] # CUNEIFORM SIGN UD
+12314 ; [.5698.0020.0002] # CUNEIFORM SIGN UD KUSHU2
+12315 ; [.5699.0020.0002] # CUNEIFORM SIGN UD TIMES BAD
+12316 ; [.569A.0020.0002] # CUNEIFORM SIGN UD TIMES MI
+12317 ; [.569B.0020.0002] # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U
+12318 ; [.569C.0020.0002] # CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU
+12319 ; [.569D.0020.0002] # CUNEIFORM SIGN UD GUNU
+1231A ; [.569E.0020.0002] # CUNEIFORM SIGN UD SHESHIG
+1231B ; [.569F.0020.0002] # CUNEIFORM SIGN UD SHESHIG TIMES BAD
+1231C ; [.56A0.0020.0002] # CUNEIFORM SIGN UDUG
+1231D ; [.56A1.0020.0002] # CUNEIFORM SIGN UM
+1231E ; [.56A2.0020.0002] # CUNEIFORM SIGN UM TIMES LAGAB
+1231F ; [.56A3.0020.0002] # CUNEIFORM SIGN UM TIMES ME PLUS DA
+12320 ; [.56A4.0020.0002] # CUNEIFORM SIGN UM TIMES SHA3
+12321 ; [.56A5.0020.0002] # CUNEIFORM SIGN UM TIMES U
+12322 ; [.56A6.0020.0002] # CUNEIFORM SIGN UMBIN
+12323 ; [.56A7.0020.0002] # CUNEIFORM SIGN UMUM
+12324 ; [.56A8.0020.0002] # CUNEIFORM SIGN UMUM TIMES KASKAL
+12325 ; [.56A9.0020.0002] # CUNEIFORM SIGN UMUM TIMES PA
+12326 ; [.56AA.0020.0002] # CUNEIFORM SIGN UN
+12327 ; [.56AB.0020.0002] # CUNEIFORM SIGN UN GUNU
+12328 ; [.56AC.0020.0002] # CUNEIFORM SIGN UR
+12329 ; [.56AD.0020.0002] # CUNEIFORM SIGN UR CROSSING UR
+1232A ; [.56AE.0020.0002] # CUNEIFORM SIGN UR SHESHIG
+1232B ; [.56AF.0020.0002] # CUNEIFORM SIGN UR2
+1232C ; [.56B0.0020.0002] # CUNEIFORM SIGN UR2 TIMES A PLUS HA
+1232D ; [.56B1.0020.0002] # CUNEIFORM SIGN UR2 TIMES A PLUS NA
+1232E ; [.56B2.0020.0002] # CUNEIFORM SIGN UR2 TIMES AL
+1232F ; [.56B3.0020.0002] # CUNEIFORM SIGN UR2 TIMES HA
+12330 ; [.56B4.0020.0002] # CUNEIFORM SIGN UR2 TIMES NUN
+12331 ; [.56B5.0020.0002] # CUNEIFORM SIGN UR2 TIMES U2
+12332 ; [.56B6.0020.0002] # CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH
+12333 ; [.56B7.0020.0002] # CUNEIFORM SIGN UR2 TIMES U2 PLUS BI
+12334 ; [.56B8.0020.0002] # CUNEIFORM SIGN UR4
+12335 ; [.56B9.0020.0002] # CUNEIFORM SIGN URI
+12336 ; [.56BA.0020.0002] # CUNEIFORM SIGN URI3
+12337 ; [.56BB.0020.0002] # CUNEIFORM SIGN URU
+12338 ; [.56BC.0020.0002] # CUNEIFORM SIGN URU TIMES A
+12339 ; [.56BD.0020.0002] # CUNEIFORM SIGN URU TIMES ASHGAB
+1233A ; [.56BE.0020.0002] # CUNEIFORM SIGN URU TIMES BAR
+1233B ; [.56BF.0020.0002] # CUNEIFORM SIGN URU TIMES DUN
+1233C ; [.56C0.0020.0002] # CUNEIFORM SIGN URU TIMES GA
+1233D ; [.56C1.0020.0002] # CUNEIFORM SIGN URU TIMES GAL
+1233E ; [.56C2.0020.0002] # CUNEIFORM SIGN URU TIMES GAN2 TENU
+1233F ; [.56C3.0020.0002] # CUNEIFORM SIGN URU TIMES GAR
+12340 ; [.56C4.0020.0002] # CUNEIFORM SIGN URU TIMES GU
+12341 ; [.56C5.0020.0002] # CUNEIFORM SIGN URU TIMES HA
+12342 ; [.56C6.0020.0002] # CUNEIFORM SIGN URU TIMES IGI
+12343 ; [.56C7.0020.0002] # CUNEIFORM SIGN URU TIMES IM
+12344 ; [.56C8.0020.0002] # CUNEIFORM SIGN URU TIMES ISH
+12345 ; [.56C9.0020.0002] # CUNEIFORM SIGN URU TIMES KI
+12346 ; [.56CA.0020.0002] # CUNEIFORM SIGN URU TIMES LUM
+12347 ; [.56CB.0020.0002] # CUNEIFORM SIGN URU TIMES MIN
+12348 ; [.56CC.0020.0002] # CUNEIFORM SIGN URU TIMES PA
+12349 ; [.56CD.0020.0002] # CUNEIFORM SIGN URU TIMES SHE
+1234A ; [.56CE.0020.0002] # CUNEIFORM SIGN URU TIMES SIG4
+1234B ; [.56CF.0020.0002] # CUNEIFORM SIGN URU TIMES TU
+1234C ; [.56D0.0020.0002] # CUNEIFORM SIGN URU TIMES U PLUS GUD
+1234D ; [.56D1.0020.0002] # CUNEIFORM SIGN URU TIMES UD
+1234E ; [.56D2.0020.0002] # CUNEIFORM SIGN URU TIMES URUDA
+1234F ; [.56D3.0020.0002] # CUNEIFORM SIGN URUDA
+12350 ; [.56D4.0020.0002] # CUNEIFORM SIGN URUDA TIMES U
+12351 ; [.56D5.0020.0002] # CUNEIFORM SIGN USH
+12352 ; [.56D6.0020.0002] # CUNEIFORM SIGN USH TIMES A
+12353 ; [.56D7.0020.0002] # CUNEIFORM SIGN USH TIMES KU
+12354 ; [.56D8.0020.0002] # CUNEIFORM SIGN USH TIMES KUR
+12355 ; [.56D9.0020.0002] # CUNEIFORM SIGN USH TIMES TAK4
+12356 ; [.56DA.0020.0002] # CUNEIFORM SIGN USHX
+12357 ; [.56DB.0020.0002] # CUNEIFORM SIGN USH2
+12358 ; [.56DC.0020.0002] # CUNEIFORM SIGN USHUMX
+12359 ; [.56DD.0020.0002] # CUNEIFORM SIGN UTUKI
+1235A ; [.56DE.0020.0002] # CUNEIFORM SIGN UZ3
+1235B ; [.56DF.0020.0002] # CUNEIFORM SIGN UZ3 TIMES KASKAL
+1235C ; [.56E0.0020.0002] # CUNEIFORM SIGN UZU
+1235D ; [.56E1.0020.0002] # CUNEIFORM SIGN ZA
+1235E ; [.56E2.0020.0002] # CUNEIFORM SIGN ZA TENU
+1235F ; [.56E3.0020.0002] # CUNEIFORM SIGN ZA SQUARED TIMES KUR
+12360 ; [.56E4.0020.0002] # CUNEIFORM SIGN ZAG
+12361 ; [.56E5.0020.0002] # CUNEIFORM SIGN ZAMX
+12362 ; [.56E6.0020.0002] # CUNEIFORM SIGN ZE2
+12363 ; [.56E7.0020.0002] # CUNEIFORM SIGN ZI
+12364 ; [.56E8.0020.0002] # CUNEIFORM SIGN ZI OVER ZI
+12365 ; [.56E9.0020.0002] # CUNEIFORM SIGN ZI3
+12366 ; [.56EA.0020.0002] # CUNEIFORM SIGN ZIB
+12367 ; [.56EB.0020.0002] # CUNEIFORM SIGN ZIB KABA TENU
+12368 ; [.56EC.0020.0002] # CUNEIFORM SIGN ZIG
+12369 ; [.56ED.0020.0002] # CUNEIFORM SIGN ZIZ2
+1236A ; [.56EE.0020.0002] # CUNEIFORM SIGN ZU
+1236B ; [.56EF.0020.0002] # CUNEIFORM SIGN ZU5
+1236C ; [.56F0.0020.0002] # CUNEIFORM SIGN ZU5 TIMES A
+1236D ; [.56F1.0020.0002] # CUNEIFORM SIGN ZUBUR
+1236E ; [.56F2.0020.0002] # CUNEIFORM SIGN ZUM
+1236F ; [.56F3.0020.0002] # CUNEIFORM SIGN KAP ELAMITE
+12370 ; [.56F4.0020.0002] # CUNEIFORM SIGN AB TIMES NUN
+12371 ; [.56F5.0020.0002] # CUNEIFORM SIGN AB2 TIMES A
+12372 ; [.56F6.0020.0002] # CUNEIFORM SIGN AMAR TIMES KUG
+12373 ; [.56F7.0020.0002] # CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS MASH
+12374 ; [.56F8.0020.0002] # CUNEIFORM SIGN DAG3
+12375 ; [.56F9.0020.0002] # CUNEIFORM SIGN DISH PLUS SHU
+12376 ; [.56FA.0020.0002] # CUNEIFORM SIGN DUB TIMES SHE
+12377 ; [.56FB.0020.0002] # CUNEIFORM SIGN EZEN TIMES GUD
+12378 ; [.56FC.0020.0002] # CUNEIFORM SIGN EZEN TIMES SHE
+12379 ; [.56FD.0020.0002] # CUNEIFORM SIGN GA2 TIMES AN PLUS KAK PLUS A
+1237A ; [.56FE.0020.0002] # CUNEIFORM SIGN GA2 TIMES ASH2
+1237B ; [.56FF.0020.0002] # CUNEIFORM SIGN GE22
+1237C ; [.5700.0020.0002] # CUNEIFORM SIGN GIG
+1237D ; [.5701.0020.0002] # CUNEIFORM SIGN HUSH
+1237E ; [.5702.0020.0002] # CUNEIFORM SIGN KA TIMES ANSHE
+1237F ; [.5703.0020.0002] # CUNEIFORM SIGN KA TIMES ASH3
+12380 ; [.5704.0020.0002] # CUNEIFORM SIGN KA TIMES GISH
+12381 ; [.5705.0020.0002] # CUNEIFORM SIGN KA TIMES GUD
+12382 ; [.5706.0020.0002] # CUNEIFORM SIGN KA TIMES HI TIMES ASH2
+12383 ; [.5707.0020.0002] # CUNEIFORM SIGN KA TIMES LUM
+12384 ; [.5708.0020.0002] # CUNEIFORM SIGN KA TIMES PA
+12385 ; [.5709.0020.0002] # CUNEIFORM SIGN KA TIMES SHUL
+12386 ; [.570A.0020.0002] # CUNEIFORM SIGN KA TIMES TU
+12387 ; [.570B.0020.0002] # CUNEIFORM SIGN KA TIMES UR2
+12388 ; [.570C.0020.0002] # CUNEIFORM SIGN LAGAB TIMES GI
+12389 ; [.570D.0020.0002] # CUNEIFORM SIGN LU2 SHESHIG TIMES BAD
+1238A ; [.570E.0020.0002] # CUNEIFORM SIGN LU2 TIMES ESH2 PLUS LAL
+1238B ; [.570F.0020.0002] # CUNEIFORM SIGN LU2 TIMES SHU
+1238C ; [.5710.0020.0002] # CUNEIFORM SIGN MESH
+1238D ; [.5711.0020.0002] # CUNEIFORM SIGN MUSH3 TIMES ZA
+1238E ; [.5712.0020.0002] # CUNEIFORM SIGN NA4
+1238F ; [.5713.0020.0002] # CUNEIFORM SIGN NIN
+12390 ; [.5714.0020.0002] # CUNEIFORM SIGN NIN9
+12391 ; [.5715.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES BAL
+12392 ; [.5716.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GI
+12393 ; [.5717.0020.0002] # CUNEIFORM SIGN NU11 ROTATED NINETY DEGREES
+12394 ; [.5718.0020.0002] # CUNEIFORM SIGN PESH2 ASTERISK
+12395 ; [.5719.0020.0002] # CUNEIFORM SIGN PIR2
+12396 ; [.571A.0020.0002] # CUNEIFORM SIGN SAG TIMES IGI GUNU
+12397 ; [.571B.0020.0002] # CUNEIFORM SIGN TI2
+12398 ; [.571C.0020.0002] # CUNEIFORM SIGN UM TIMES ME
+12399 ; [.571D.0020.0002] # CUNEIFORM SIGN U U
+12480 ; [.571E.0020.0002] # CUNEIFORM SIGN AB TIMES NUN TENU
+12481 ; [.571F.0020.0002] # CUNEIFORM SIGN AB TIMES SHU2
+12482 ; [.5720.0020.0002] # CUNEIFORM SIGN AD TIMES ESH2
+12483 ; [.5721.0020.0002] # CUNEIFORM SIGN BAD TIMES DISH TENU
+12484 ; [.5722.0020.0002] # CUNEIFORM SIGN BAHAR2 TIMES AB2
+12485 ; [.5723.0020.0002] # CUNEIFORM SIGN BAHAR2 TIMES NI
+12486 ; [.5724.0020.0002] # CUNEIFORM SIGN BAHAR2 TIMES ZA
+12487 ; [.5725.0020.0002] # CUNEIFORM SIGN BU OVER BU TIMES NA2
+12488 ; [.5726.0020.0002] # CUNEIFORM SIGN DA TIMES TAK4
+12489 ; [.5727.0020.0002] # CUNEIFORM SIGN DAG TIMES KUR
+1248A ; [.5728.0020.0002] # CUNEIFORM SIGN DIM TIMES IGI
+1248B ; [.5729.0020.0002] # CUNEIFORM SIGN DIM TIMES U U U
+1248C ; [.572A.0020.0002] # CUNEIFORM SIGN DIM2 TIMES UD
+1248D ; [.572B.0020.0002] # CUNEIFORM SIGN DUG TIMES ANSHE
+1248E ; [.572C.0020.0002] # CUNEIFORM SIGN DUG TIMES ASH
+1248F ; [.572D.0020.0002] # CUNEIFORM SIGN DUG TIMES ASH AT LEFT
+12490 ; [.572E.0020.0002] # CUNEIFORM SIGN DUG TIMES DIN
+12491 ; [.572F.0020.0002] # CUNEIFORM SIGN DUG TIMES DUN
+12492 ; [.5730.0020.0002] # CUNEIFORM SIGN DUG TIMES ERIN2
+12493 ; [.5731.0020.0002] # CUNEIFORM SIGN DUG TIMES GA
+12494 ; [.5732.0020.0002] # CUNEIFORM SIGN DUG TIMES GI
+12495 ; [.5733.0020.0002] # CUNEIFORM SIGN DUG TIMES GIR2 GUNU
+12496 ; [.5734.0020.0002] # CUNEIFORM SIGN DUG TIMES GISH
+12497 ; [.5735.0020.0002] # CUNEIFORM SIGN DUG TIMES HA
+12498 ; [.5736.0020.0002] # CUNEIFORM SIGN DUG TIMES HI
+12499 ; [.5737.0020.0002] # CUNEIFORM SIGN DUG TIMES IGI GUNU
+1249A ; [.5738.0020.0002] # CUNEIFORM SIGN DUG TIMES KASKAL
+1249B ; [.5739.0020.0002] # CUNEIFORM SIGN DUG TIMES KUR
+1249C ; [.573A.0020.0002] # CUNEIFORM SIGN DUG TIMES KUSHU2
+1249D ; [.573B.0020.0002] # CUNEIFORM SIGN DUG TIMES KUSHU2 PLUS KASKAL
+1249E ; [.573C.0020.0002] # CUNEIFORM SIGN DUG TIMES LAK-020
+1249F ; [.573D.0020.0002] # CUNEIFORM SIGN DUG TIMES LAM
+124A0 ; [.573E.0020.0002] # CUNEIFORM SIGN DUG TIMES LAM TIMES KUR
+124A1 ; [.573F.0020.0002] # CUNEIFORM SIGN DUG TIMES LUH PLUS GISH
+124A2 ; [.5740.0020.0002] # CUNEIFORM SIGN DUG TIMES MASH
+124A3 ; [.5741.0020.0002] # CUNEIFORM SIGN DUG TIMES MES
+124A4 ; [.5742.0020.0002] # CUNEIFORM SIGN DUG TIMES MI
+124A5 ; [.5743.0020.0002] # CUNEIFORM SIGN DUG TIMES NI
+124A6 ; [.5744.0020.0002] # CUNEIFORM SIGN DUG TIMES PI
+124A7 ; [.5745.0020.0002] # CUNEIFORM SIGN DUG TIMES SHE
+124A8 ; [.5746.0020.0002] # CUNEIFORM SIGN DUG TIMES SI GUNU
+124A9 ; [.5747.0020.0002] # CUNEIFORM SIGN E2 TIMES KUR
+124AA ; [.5748.0020.0002] # CUNEIFORM SIGN E2 TIMES PAP
+124AB ; [.5749.0020.0002] # CUNEIFORM SIGN ERIN2 X
+124AC ; [.574A.0020.0002] # CUNEIFORM SIGN ESH2 CROSSING ESH2
+124AD ; [.574B.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES ASH
+124AE ; [.574C.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES HI
+124AF ; [.574D.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES IGI GUNU
+124B0 ; [.574E.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES LA
+124B1 ; [.574F.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES LAL
+124B2 ; [.5750.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES ME
+124B3 ; [.5751.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES MES
+124B4 ; [.5752.0020.0002] # CUNEIFORM SIGN EZEN SHESHIG TIMES SU
+124B5 ; [.5753.0020.0002] # CUNEIFORM SIGN EZEN TIMES SU
+124B6 ; [.5754.0020.0002] # CUNEIFORM SIGN GA2 TIMES BAHAR2
+124B7 ; [.5755.0020.0002] # CUNEIFORM SIGN GA2 TIMES DIM GUNU
+124B8 ; [.5756.0020.0002] # CUNEIFORM SIGN GA2 TIMES DUG TIMES IGI GUNU
+124B9 ; [.5757.0020.0002] # CUNEIFORM SIGN GA2 TIMES DUG TIMES KASKAL
+124BA ; [.5758.0020.0002] # CUNEIFORM SIGN GA2 TIMES EREN
+124BB ; [.5759.0020.0002] # CUNEIFORM SIGN GA2 TIMES GA
+124BC ; [.575A.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAR PLUS DI
+124BD ; [.575B.0020.0002] # CUNEIFORM SIGN GA2 TIMES GAR PLUS NE
+124BE ; [.575C.0020.0002] # CUNEIFORM SIGN GA2 TIMES HA PLUS A
+124BF ; [.575D.0020.0002] # CUNEIFORM SIGN GA2 TIMES KUSHU2 PLUS KASKAL
+124C0 ; [.575E.0020.0002] # CUNEIFORM SIGN GA2 TIMES LAM
+124C1 ; [.575F.0020.0002] # CUNEIFORM SIGN GA2 TIMES LAM TIMES KUR
+124C2 ; [.5760.0020.0002] # CUNEIFORM SIGN GA2 TIMES LUH
+124C3 ; [.5761.0020.0002] # CUNEIFORM SIGN GA2 TIMES MUSH
+124C4 ; [.5762.0020.0002] # CUNEIFORM SIGN GA2 TIMES NE
+124C5 ; [.5763.0020.0002] # CUNEIFORM SIGN GA2 TIMES NE PLUS E2
+124C6 ; [.5764.0020.0002] # CUNEIFORM SIGN GA2 TIMES NE PLUS GI
+124C7 ; [.5765.0020.0002] # CUNEIFORM SIGN GA2 TIMES SHIM
+124C8 ; [.5766.0020.0002] # CUNEIFORM SIGN GA2 TIMES ZIZ2
+124C9 ; [.5767.0020.0002] # CUNEIFORM SIGN GABA ROTATED NINETY DEGREES
+124CA ; [.5768.0020.0002] # CUNEIFORM SIGN GESHTIN TIMES U
+124CB ; [.5769.0020.0002] # CUNEIFORM SIGN GISH TIMES GISH CROSSING GISH
+124CC ; [.576A.0020.0002] # CUNEIFORM SIGN GU2 TIMES IGI GUNU
+124CD ; [.576B.0020.0002] # CUNEIFORM SIGN GUD PLUS GISH TIMES TAK4
+124CE ; [.576C.0020.0002] # CUNEIFORM SIGN HA TENU GUNU
+124CF ; [.576D.0020.0002] # CUNEIFORM SIGN HI TIMES ASH OVER HI TIMES ASH
+124D0 ; [.576E.0020.0002] # CUNEIFORM SIGN KA TIMES BU
+124D1 ; [.576F.0020.0002] # CUNEIFORM SIGN KA TIMES KA
+124D2 ; [.5770.0020.0002] # CUNEIFORM SIGN KA TIMES U U U
+124D3 ; [.5771.0020.0002] # CUNEIFORM SIGN KA TIMES UR
+124D4 ; [.5772.0020.0002] # CUNEIFORM SIGN LAGAB TIMES ZU OVER ZU
+124D5 ; [.5773.0020.0002] # CUNEIFORM SIGN LAK-003
+124D6 ; [.5774.0020.0002] # CUNEIFORM SIGN LAK-021
+124D7 ; [.5775.0020.0002] # CUNEIFORM SIGN LAK-025
+124D8 ; [.5776.0020.0002] # CUNEIFORM SIGN LAK-030
+124D9 ; [.5777.0020.0002] # CUNEIFORM SIGN LAK-050
+124DA ; [.5778.0020.0002] # CUNEIFORM SIGN LAK-051
+124DB ; [.5779.0020.0002] # CUNEIFORM SIGN LAK-062
+124DC ; [.577A.0020.0002] # CUNEIFORM SIGN LAK-079 OVER LAK-079 GUNU
+124DD ; [.577B.0020.0002] # CUNEIFORM SIGN LAK-080
+124DE ; [.577C.0020.0002] # CUNEIFORM SIGN LAK-081 OVER LAK-081
+124DF ; [.577D.0020.0002] # CUNEIFORM SIGN LAK-092
+124E0 ; [.577E.0020.0002] # CUNEIFORM SIGN LAK-130
+124E1 ; [.577F.0020.0002] # CUNEIFORM SIGN LAK-142
+124E2 ; [.5780.0020.0002] # CUNEIFORM SIGN LAK-210
+124E3 ; [.5781.0020.0002] # CUNEIFORM SIGN LAK-219
+124E4 ; [.5782.0020.0002] # CUNEIFORM SIGN LAK-220
+124E5 ; [.5783.0020.0002] # CUNEIFORM SIGN LAK-225
+124E6 ; [.5784.0020.0002] # CUNEIFORM SIGN LAK-228
+124E7 ; [.5785.0020.0002] # CUNEIFORM SIGN LAK-238
+124E8 ; [.5786.0020.0002] # CUNEIFORM SIGN LAK-265
+124E9 ; [.5787.0020.0002] # CUNEIFORM SIGN LAK-266
+124EA ; [.5788.0020.0002] # CUNEIFORM SIGN LAK-343
+124EB ; [.5789.0020.0002] # CUNEIFORM SIGN LAK-347
+124EC ; [.578A.0020.0002] # CUNEIFORM SIGN LAK-348
+124ED ; [.578B.0020.0002] # CUNEIFORM SIGN LAK-383
+124EE ; [.578C.0020.0002] # CUNEIFORM SIGN LAK-384
+124EF ; [.578D.0020.0002] # CUNEIFORM SIGN LAK-390
+124F0 ; [.578E.0020.0002] # CUNEIFORM SIGN LAK-441
+124F1 ; [.578F.0020.0002] # CUNEIFORM SIGN LAK-449
+124F2 ; [.5790.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES GU
+124F3 ; [.5791.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES IGI
+124F4 ; [.5792.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES PAP PLUS LU3
+124F5 ; [.5793.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES PAP PLUS PAP PLUS LU3
+124F6 ; [.5794.0020.0002] # CUNEIFORM SIGN LAK-449 TIMES U2 PLUS BA
+124F7 ; [.5795.0020.0002] # CUNEIFORM SIGN LAK-450
+124F8 ; [.5796.0020.0002] # CUNEIFORM SIGN LAK-457
+124F9 ; [.5797.0020.0002] # CUNEIFORM SIGN LAK-470
+124FA ; [.5798.0020.0002] # CUNEIFORM SIGN LAK-483
+124FB ; [.5799.0020.0002] # CUNEIFORM SIGN LAK-490
+124FC ; [.579A.0020.0002] # CUNEIFORM SIGN LAK-492
+124FD ; [.579B.0020.0002] # CUNEIFORM SIGN LAK-493
+124FE ; [.579C.0020.0002] # CUNEIFORM SIGN LAK-495
+124FF ; [.579D.0020.0002] # CUNEIFORM SIGN LAK-550
+12500 ; [.579E.0020.0002] # CUNEIFORM SIGN LAK-608
+12501 ; [.579F.0020.0002] # CUNEIFORM SIGN LAK-617
+12502 ; [.57A0.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES ASH
+12503 ; [.57A1.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES BAD
+12504 ; [.57A2.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES DUN3 GUNU GUNU
+12505 ; [.57A3.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES KU3
+12506 ; [.57A4.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES LA
+12507 ; [.57A5.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES TAR
+12508 ; [.57A6.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES TE
+12509 ; [.57A7.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES U2
+1250A ; [.57A8.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES UD
+1250B ; [.57A9.0020.0002] # CUNEIFORM SIGN LAK-617 TIMES URUDA
+1250C ; [.57AA.0020.0002] # CUNEIFORM SIGN LAK-636
+1250D ; [.57AB.0020.0002] # CUNEIFORM SIGN LAK-648
+1250E ; [.57AC.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES DUB
+1250F ; [.57AD.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES GA
+12510 ; [.57AE.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES IGI
+12511 ; [.57AF.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES IGI GUNU
+12512 ; [.57B0.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES NI
+12513 ; [.57B1.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES PAP PLUS PAP PLUS LU3
+12514 ; [.57B2.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES SHESH PLUS KI
+12515 ; [.57B3.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES UD
+12516 ; [.57B4.0020.0002] # CUNEIFORM SIGN LAK-648 TIMES URUDA
+12517 ; [.57B5.0020.0002] # CUNEIFORM SIGN LAK-724
+12518 ; [.57B6.0020.0002] # CUNEIFORM SIGN LAK-749
+12519 ; [.57B7.0020.0002] # CUNEIFORM SIGN LU2 GUNU TIMES ASH
+1251A ; [.57B8.0020.0002] # CUNEIFORM SIGN LU2 TIMES DISH
+1251B ; [.57B9.0020.0002] # CUNEIFORM SIGN LU2 TIMES HAL
+1251C ; [.57BA.0020.0002] # CUNEIFORM SIGN LU2 TIMES PAP
+1251D ; [.57BB.0020.0002] # CUNEIFORM SIGN LU2 TIMES PAP PLUS PAP PLUS LU3
+1251E ; [.57BC.0020.0002] # CUNEIFORM SIGN LU2 TIMES TAK4
+1251F ; [.57BD.0020.0002] # CUNEIFORM SIGN MI PLUS ZA7
+12520 ; [.57BE.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH TIMES GA
+12521 ; [.57BF.0020.0002] # CUNEIFORM SIGN MUSH OVER MUSH TIMES KAK
+12522 ; [.57C0.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES DIM GUNU
+12523 ; [.57C1.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GISH
+12524 ; [.57C2.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES GUL
+12525 ; [.57C3.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES HI
+12526 ; [.57C4.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES KESH2
+12527 ; [.57C5.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES LAK-050
+12528 ; [.57C6.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES MASH
+12529 ; [.57C7.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES PAP PLUS PAP
+1252A ; [.57C8.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES U
+1252B ; [.57C9.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES U PLUS U
+1252C ; [.57CA.0020.0002] # CUNEIFORM SIGN NINDA2 TIMES URUDA
+1252D ; [.57CB.0020.0002] # CUNEIFORM SIGN SAG GUNU TIMES HA
+1252E ; [.57CC.0020.0002] # CUNEIFORM SIGN SAG TIMES EN
+1252F ; [.57CD.0020.0002] # CUNEIFORM SIGN SAG TIMES SHE AT LEFT
+12530 ; [.57CE.0020.0002] # CUNEIFORM SIGN SAG TIMES TAK4
+12531 ; [.57CF.0020.0002] # CUNEIFORM SIGN SHA6 TENU
+12532 ; [.57D0.0020.0002] # CUNEIFORM SIGN SHE OVER SHE
+12533 ; [.57D1.0020.0002] # CUNEIFORM SIGN SHE PLUS HUB2
+12534 ; [.57D2.0020.0002] # CUNEIFORM SIGN SHE PLUS NAM2
+12535 ; [.57D3.0020.0002] # CUNEIFORM SIGN SHE PLUS SAR
+12536 ; [.57D4.0020.0002] # CUNEIFORM SIGN SHU2 PLUS DUG TIMES NI
+12537 ; [.57D5.0020.0002] # CUNEIFORM SIGN SHU2 PLUS E2 TIMES AN
+12538 ; [.57D6.0020.0002] # CUNEIFORM SIGN SI TIMES TAK4
+12539 ; [.57D7.0020.0002] # CUNEIFORM SIGN TAK4 PLUS SAG
+1253A ; [.57D8.0020.0002] # CUNEIFORM SIGN TUM TIMES GAN2 TENU
+1253B ; [.57D9.0020.0002] # CUNEIFORM SIGN TUM TIMES THREE DISH
+1253C ; [.57DA.0020.0002] # CUNEIFORM SIGN UR2 INVERTED
+1253D ; [.57DB.0020.0002] # CUNEIFORM SIGN UR2 TIMES UD
+1253E ; [.57DC.0020.0002] # CUNEIFORM SIGN URU TIMES DARA3
+1253F ; [.57DD.0020.0002] # CUNEIFORM SIGN URU TIMES LAK-668
+12540 ; [.57DE.0020.0002] # CUNEIFORM SIGN URU TIMES LU3
+12541 ; [.57DF.0020.0002] # CUNEIFORM SIGN ZA7
+12542 ; [.57E0.0020.0002] # CUNEIFORM SIGN ZU OVER ZU PLUS SAR
+12543 ; [.57E1.0020.0002] # CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
+13000 ; [.57E2.0020.0002] # EGYPTIAN HIEROGLYPH A001
+13001 ; [.57E3.0020.0002] # EGYPTIAN HIEROGLYPH A002
+13002 ; [.57E4.0020.0002] # EGYPTIAN HIEROGLYPH A003
+13003 ; [.57E5.0020.0002] # EGYPTIAN HIEROGLYPH A004
+13004 ; [.57E6.0020.0002] # EGYPTIAN HIEROGLYPH A005
+13005 ; [.57E7.0020.0002] # EGYPTIAN HIEROGLYPH A005A
+13006 ; [.57E8.0020.0002] # EGYPTIAN HIEROGLYPH A006
+13007 ; [.57E9.0020.0002] # EGYPTIAN HIEROGLYPH A006A
+13008 ; [.57EA.0020.0002] # EGYPTIAN HIEROGLYPH A006B
+13009 ; [.57EB.0020.0002] # EGYPTIAN HIEROGLYPH A007
+1300A ; [.57EC.0020.0002] # EGYPTIAN HIEROGLYPH A008
+1300B ; [.57ED.0020.0002] # EGYPTIAN HIEROGLYPH A009
+1300C ; [.57EE.0020.0002] # EGYPTIAN HIEROGLYPH A010
+1300D ; [.57EF.0020.0002] # EGYPTIAN HIEROGLYPH A011
+1300E ; [.57F0.0020.0002] # EGYPTIAN HIEROGLYPH A012
+1300F ; [.57F1.0020.0002] # EGYPTIAN HIEROGLYPH A013
+13010 ; [.57F2.0020.0002] # EGYPTIAN HIEROGLYPH A014
+13011 ; [.57F3.0020.0002] # EGYPTIAN HIEROGLYPH A014A
+13012 ; [.57F4.0020.0002] # EGYPTIAN HIEROGLYPH A015
+13013 ; [.57F5.0020.0002] # EGYPTIAN HIEROGLYPH A016
+13014 ; [.57F6.0020.0002] # EGYPTIAN HIEROGLYPH A017
+13015 ; [.57F7.0020.0002] # EGYPTIAN HIEROGLYPH A017A
+13016 ; [.57F8.0020.0002] # EGYPTIAN HIEROGLYPH A018
+13017 ; [.57F9.0020.0002] # EGYPTIAN HIEROGLYPH A019
+13018 ; [.57FA.0020.0002] # EGYPTIAN HIEROGLYPH A020
+13019 ; [.57FB.0020.0002] # EGYPTIAN HIEROGLYPH A021
+1301A ; [.57FC.0020.0002] # EGYPTIAN HIEROGLYPH A022
+1301B ; [.57FD.0020.0002] # EGYPTIAN HIEROGLYPH A023
+1301C ; [.57FE.0020.0002] # EGYPTIAN HIEROGLYPH A024
+1301D ; [.57FF.0020.0002] # EGYPTIAN HIEROGLYPH A025
+1301E ; [.5800.0020.0002] # EGYPTIAN HIEROGLYPH A026
+1301F ; [.5801.0020.0002] # EGYPTIAN HIEROGLYPH A027
+13020 ; [.5802.0020.0002] # EGYPTIAN HIEROGLYPH A028
+13021 ; [.5803.0020.0002] # EGYPTIAN HIEROGLYPH A029
+13022 ; [.5804.0020.0002] # EGYPTIAN HIEROGLYPH A030
+13023 ; [.5805.0020.0002] # EGYPTIAN HIEROGLYPH A031
+13024 ; [.5806.0020.0002] # EGYPTIAN HIEROGLYPH A032
+13025 ; [.5807.0020.0002] # EGYPTIAN HIEROGLYPH A032A
+13026 ; [.5808.0020.0002] # EGYPTIAN HIEROGLYPH A033
+13027 ; [.5809.0020.0002] # EGYPTIAN HIEROGLYPH A034
+13028 ; [.580A.0020.0002] # EGYPTIAN HIEROGLYPH A035
+13029 ; [.580B.0020.0002] # EGYPTIAN HIEROGLYPH A036
+1302A ; [.580C.0020.0002] # EGYPTIAN HIEROGLYPH A037
+1302B ; [.580D.0020.0002] # EGYPTIAN HIEROGLYPH A038
+1302C ; [.580E.0020.0002] # EGYPTIAN HIEROGLYPH A039
+1302D ; [.580F.0020.0002] # EGYPTIAN HIEROGLYPH A040
+1302E ; [.5810.0020.0002] # EGYPTIAN HIEROGLYPH A040A
+1302F ; [.5811.0020.0002] # EGYPTIAN HIEROGLYPH A041
+13030 ; [.5812.0020.0002] # EGYPTIAN HIEROGLYPH A042
+13031 ; [.5813.0020.0002] # EGYPTIAN HIEROGLYPH A042A
+13032 ; [.5814.0020.0002] # EGYPTIAN HIEROGLYPH A043
+13033 ; [.5815.0020.0002] # EGYPTIAN HIEROGLYPH A043A
+13034 ; [.5816.0020.0002] # EGYPTIAN HIEROGLYPH A044
+13035 ; [.5817.0020.0002] # EGYPTIAN HIEROGLYPH A045
+13036 ; [.5818.0020.0002] # EGYPTIAN HIEROGLYPH A045A
+13037 ; [.5819.0020.0002] # EGYPTIAN HIEROGLYPH A046
+13038 ; [.581A.0020.0002] # EGYPTIAN HIEROGLYPH A047
+13039 ; [.581B.0020.0002] # EGYPTIAN HIEROGLYPH A048
+1303A ; [.581C.0020.0002] # EGYPTIAN HIEROGLYPH A049
+1303B ; [.581D.0020.0002] # EGYPTIAN HIEROGLYPH A050
+1303C ; [.581E.0020.0002] # EGYPTIAN HIEROGLYPH A051
+1303D ; [.581F.0020.0002] # EGYPTIAN HIEROGLYPH A052
+1303E ; [.5820.0020.0002] # EGYPTIAN HIEROGLYPH A053
+1303F ; [.5821.0020.0002] # EGYPTIAN HIEROGLYPH A054
+13040 ; [.5822.0020.0002] # EGYPTIAN HIEROGLYPH A055
+13041 ; [.5823.0020.0002] # EGYPTIAN HIEROGLYPH A056
+13042 ; [.5824.0020.0002] # EGYPTIAN HIEROGLYPH A057
+13043 ; [.5825.0020.0002] # EGYPTIAN HIEROGLYPH A058
+13044 ; [.5826.0020.0002] # EGYPTIAN HIEROGLYPH A059
+13045 ; [.5827.0020.0002] # EGYPTIAN HIEROGLYPH A060
+13046 ; [.5828.0020.0002] # EGYPTIAN HIEROGLYPH A061
+13047 ; [.5829.0020.0002] # EGYPTIAN HIEROGLYPH A062
+13048 ; [.582A.0020.0002] # EGYPTIAN HIEROGLYPH A063
+13049 ; [.582B.0020.0002] # EGYPTIAN HIEROGLYPH A064
+1304A ; [.582C.0020.0002] # EGYPTIAN HIEROGLYPH A065
+1304B ; [.582D.0020.0002] # EGYPTIAN HIEROGLYPH A066
+1304C ; [.582E.0020.0002] # EGYPTIAN HIEROGLYPH A067
+1304D ; [.582F.0020.0002] # EGYPTIAN HIEROGLYPH A068
+1304E ; [.5830.0020.0002] # EGYPTIAN HIEROGLYPH A069
+1304F ; [.5831.0020.0002] # EGYPTIAN HIEROGLYPH A070
+13050 ; [.5832.0020.0002] # EGYPTIAN HIEROGLYPH B001
+13051 ; [.5833.0020.0002] # EGYPTIAN HIEROGLYPH B002
+13052 ; [.5834.0020.0002] # EGYPTIAN HIEROGLYPH B003
+13053 ; [.5835.0020.0002] # EGYPTIAN HIEROGLYPH B004
+13054 ; [.5836.0020.0002] # EGYPTIAN HIEROGLYPH B005
+13055 ; [.5837.0020.0002] # EGYPTIAN HIEROGLYPH B005A
+13056 ; [.5838.0020.0002] # EGYPTIAN HIEROGLYPH B006
+13057 ; [.5839.0020.0002] # EGYPTIAN HIEROGLYPH B007
+13058 ; [.583A.0020.0002] # EGYPTIAN HIEROGLYPH B008
+13059 ; [.583B.0020.0002] # EGYPTIAN HIEROGLYPH B009
+1305A ; [.583C.0020.0002] # EGYPTIAN HIEROGLYPH C001
+1305B ; [.583D.0020.0002] # EGYPTIAN HIEROGLYPH C002
+1305C ; [.583E.0020.0002] # EGYPTIAN HIEROGLYPH C002A
+1305D ; [.583F.0020.0002] # EGYPTIAN HIEROGLYPH C002B
+1305E ; [.5840.0020.0002] # EGYPTIAN HIEROGLYPH C002C
+1305F ; [.5841.0020.0002] # EGYPTIAN HIEROGLYPH C003
+13060 ; [.5842.0020.0002] # EGYPTIAN HIEROGLYPH C004
+13061 ; [.5843.0020.0002] # EGYPTIAN HIEROGLYPH C005
+13062 ; [.5844.0020.0002] # EGYPTIAN HIEROGLYPH C006
+13063 ; [.5845.0020.0002] # EGYPTIAN HIEROGLYPH C007
+13064 ; [.5846.0020.0002] # EGYPTIAN HIEROGLYPH C008
+13065 ; [.5847.0020.0002] # EGYPTIAN HIEROGLYPH C009
+13066 ; [.5848.0020.0002] # EGYPTIAN HIEROGLYPH C010
+13067 ; [.5849.0020.0002] # EGYPTIAN HIEROGLYPH C010A
+13068 ; [.584A.0020.0002] # EGYPTIAN HIEROGLYPH C011
+13069 ; [.584B.0020.0002] # EGYPTIAN HIEROGLYPH C012
+1306A ; [.584C.0020.0002] # EGYPTIAN HIEROGLYPH C013
+1306B ; [.584D.0020.0002] # EGYPTIAN HIEROGLYPH C014
+1306C ; [.584E.0020.0002] # EGYPTIAN HIEROGLYPH C015
+1306D ; [.584F.0020.0002] # EGYPTIAN HIEROGLYPH C016
+1306E ; [.5850.0020.0002] # EGYPTIAN HIEROGLYPH C017
+1306F ; [.5851.0020.0002] # EGYPTIAN HIEROGLYPH C018
+13070 ; [.5852.0020.0002] # EGYPTIAN HIEROGLYPH C019
+13071 ; [.5853.0020.0002] # EGYPTIAN HIEROGLYPH C020
+13072 ; [.5854.0020.0002] # EGYPTIAN HIEROGLYPH C021
+13073 ; [.5855.0020.0002] # EGYPTIAN HIEROGLYPH C022
+13074 ; [.5856.0020.0002] # EGYPTIAN HIEROGLYPH C023
+13075 ; [.5857.0020.0002] # EGYPTIAN HIEROGLYPH C024
+13076 ; [.5858.0020.0002] # EGYPTIAN HIEROGLYPH D001
+13077 ; [.5859.0020.0002] # EGYPTIAN HIEROGLYPH D002
+13078 ; [.585A.0020.0002] # EGYPTIAN HIEROGLYPH D003
+13079 ; [.585B.0020.0002] # EGYPTIAN HIEROGLYPH D004
+1307A ; [.585C.0020.0002] # EGYPTIAN HIEROGLYPH D005
+1307B ; [.585D.0020.0002] # EGYPTIAN HIEROGLYPH D006
+1307C ; [.585E.0020.0002] # EGYPTIAN HIEROGLYPH D007
+1307D ; [.585F.0020.0002] # EGYPTIAN HIEROGLYPH D008
+1307E ; [.5860.0020.0002] # EGYPTIAN HIEROGLYPH D008A
+1307F ; [.5861.0020.0002] # EGYPTIAN HIEROGLYPH D009
+13080 ; [.5862.0020.0002] # EGYPTIAN HIEROGLYPH D010
+13081 ; [.5863.0020.0002] # EGYPTIAN HIEROGLYPH D011
+13082 ; [.5864.0020.0002] # EGYPTIAN HIEROGLYPH D012
+13083 ; [.5865.0020.0002] # EGYPTIAN HIEROGLYPH D013
+13084 ; [.5866.0020.0002] # EGYPTIAN HIEROGLYPH D014
+13085 ; [.5867.0020.0002] # EGYPTIAN HIEROGLYPH D015
+13086 ; [.5868.0020.0002] # EGYPTIAN HIEROGLYPH D016
+13087 ; [.5869.0020.0002] # EGYPTIAN HIEROGLYPH D017
+13088 ; [.586A.0020.0002] # EGYPTIAN HIEROGLYPH D018
+13089 ; [.586B.0020.0002] # EGYPTIAN HIEROGLYPH D019
+1308A ; [.586C.0020.0002] # EGYPTIAN HIEROGLYPH D020
+1308B ; [.586D.0020.0002] # EGYPTIAN HIEROGLYPH D021
+1308C ; [.586E.0020.0002] # EGYPTIAN HIEROGLYPH D022
+1308D ; [.586F.0020.0002] # EGYPTIAN HIEROGLYPH D023
+1308E ; [.5870.0020.0002] # EGYPTIAN HIEROGLYPH D024
+1308F ; [.5871.0020.0002] # EGYPTIAN HIEROGLYPH D025
+13090 ; [.5872.0020.0002] # EGYPTIAN HIEROGLYPH D026
+13091 ; [.5873.0020.0002] # EGYPTIAN HIEROGLYPH D027
+13092 ; [.5874.0020.0002] # EGYPTIAN HIEROGLYPH D027A
+13093 ; [.5875.0020.0002] # EGYPTIAN HIEROGLYPH D028
+13094 ; [.5876.0020.0002] # EGYPTIAN HIEROGLYPH D029
+13095 ; [.5877.0020.0002] # EGYPTIAN HIEROGLYPH D030
+13096 ; [.5878.0020.0002] # EGYPTIAN HIEROGLYPH D031
+13097 ; [.5879.0020.0002] # EGYPTIAN HIEROGLYPH D031A
+13098 ; [.587A.0020.0002] # EGYPTIAN HIEROGLYPH D032
+13099 ; [.587B.0020.0002] # EGYPTIAN HIEROGLYPH D033
+1309A ; [.587C.0020.0002] # EGYPTIAN HIEROGLYPH D034
+1309B ; [.587D.0020.0002] # EGYPTIAN HIEROGLYPH D034A
+1309C ; [.587E.0020.0002] # EGYPTIAN HIEROGLYPH D035
+1309D ; [.587F.0020.0002] # EGYPTIAN HIEROGLYPH D036
+1309E ; [.5880.0020.0002] # EGYPTIAN HIEROGLYPH D037
+1309F ; [.5881.0020.0002] # EGYPTIAN HIEROGLYPH D038
+130A0 ; [.5882.0020.0002] # EGYPTIAN HIEROGLYPH D039
+130A1 ; [.5883.0020.0002] # EGYPTIAN HIEROGLYPH D040
+130A2 ; [.5884.0020.0002] # EGYPTIAN HIEROGLYPH D041
+130A3 ; [.5885.0020.0002] # EGYPTIAN HIEROGLYPH D042
+130A4 ; [.5886.0020.0002] # EGYPTIAN HIEROGLYPH D043
+130A5 ; [.5887.0020.0002] # EGYPTIAN HIEROGLYPH D044
+130A6 ; [.5888.0020.0002] # EGYPTIAN HIEROGLYPH D045
+130A7 ; [.5889.0020.0002] # EGYPTIAN HIEROGLYPH D046
+130A8 ; [.588A.0020.0002] # EGYPTIAN HIEROGLYPH D046A
+130A9 ; [.588B.0020.0002] # EGYPTIAN HIEROGLYPH D047
+130AA ; [.588C.0020.0002] # EGYPTIAN HIEROGLYPH D048
+130AB ; [.588D.0020.0002] # EGYPTIAN HIEROGLYPH D048A
+130AC ; [.588E.0020.0002] # EGYPTIAN HIEROGLYPH D049
+130AD ; [.588F.0020.0002] # EGYPTIAN HIEROGLYPH D050
+130AE ; [.5890.0020.0002] # EGYPTIAN HIEROGLYPH D050A
+130AF ; [.5891.0020.0002] # EGYPTIAN HIEROGLYPH D050B
+130B0 ; [.5892.0020.0002] # EGYPTIAN HIEROGLYPH D050C
+130B1 ; [.5893.0020.0002] # EGYPTIAN HIEROGLYPH D050D
+130B2 ; [.5894.0020.0002] # EGYPTIAN HIEROGLYPH D050E
+130B3 ; [.5895.0020.0002] # EGYPTIAN HIEROGLYPH D050F
+130B4 ; [.5896.0020.0002] # EGYPTIAN HIEROGLYPH D050G
+130B5 ; [.5897.0020.0002] # EGYPTIAN HIEROGLYPH D050H
+130B6 ; [.5898.0020.0002] # EGYPTIAN HIEROGLYPH D050I
+130B7 ; [.5899.0020.0002] # EGYPTIAN HIEROGLYPH D051
+130B8 ; [.589A.0020.0002] # EGYPTIAN HIEROGLYPH D052
+130B9 ; [.589B.0020.0002] # EGYPTIAN HIEROGLYPH D052A
+130BA ; [.589C.0020.0002] # EGYPTIAN HIEROGLYPH D053
+130BB ; [.589D.0020.0002] # EGYPTIAN HIEROGLYPH D054
+130BC ; [.589E.0020.0002] # EGYPTIAN HIEROGLYPH D054A
+130BD ; [.589F.0020.0002] # EGYPTIAN HIEROGLYPH D055
+130BE ; [.58A0.0020.0002] # EGYPTIAN HIEROGLYPH D056
+130BF ; [.58A1.0020.0002] # EGYPTIAN HIEROGLYPH D057
+130C0 ; [.58A2.0020.0002] # EGYPTIAN HIEROGLYPH D058
+130C1 ; [.58A3.0020.0002] # EGYPTIAN HIEROGLYPH D059
+130C2 ; [.58A4.0020.0002] # EGYPTIAN HIEROGLYPH D060
+130C3 ; [.58A5.0020.0002] # EGYPTIAN HIEROGLYPH D061
+130C4 ; [.58A6.0020.0002] # EGYPTIAN HIEROGLYPH D062
+130C5 ; [.58A7.0020.0002] # EGYPTIAN HIEROGLYPH D063
+130C6 ; [.58A8.0020.0002] # EGYPTIAN HIEROGLYPH D064
+130C7 ; [.58A9.0020.0002] # EGYPTIAN HIEROGLYPH D065
+130C8 ; [.58AA.0020.0002] # EGYPTIAN HIEROGLYPH D066
+130C9 ; [.58AB.0020.0002] # EGYPTIAN HIEROGLYPH D067
+130CA ; [.58AC.0020.0002] # EGYPTIAN HIEROGLYPH D067A
+130CB ; [.58AD.0020.0002] # EGYPTIAN HIEROGLYPH D067B
+130CC ; [.58AE.0020.0002] # EGYPTIAN HIEROGLYPH D067C
+130CD ; [.58AF.0020.0002] # EGYPTIAN HIEROGLYPH D067D
+130CE ; [.58B0.0020.0002] # EGYPTIAN HIEROGLYPH D067E
+130CF ; [.58B1.0020.0002] # EGYPTIAN HIEROGLYPH D067F
+130D0 ; [.58B2.0020.0002] # EGYPTIAN HIEROGLYPH D067G
+130D1 ; [.58B3.0020.0002] # EGYPTIAN HIEROGLYPH D067H
+130D2 ; [.58B4.0020.0002] # EGYPTIAN HIEROGLYPH E001
+130D3 ; [.58B5.0020.0002] # EGYPTIAN HIEROGLYPH E002
+130D4 ; [.58B6.0020.0002] # EGYPTIAN HIEROGLYPH E003
+130D5 ; [.58B7.0020.0002] # EGYPTIAN HIEROGLYPH E004
+130D6 ; [.58B8.0020.0002] # EGYPTIAN HIEROGLYPH E005
+130D7 ; [.58B9.0020.0002] # EGYPTIAN HIEROGLYPH E006
+130D8 ; [.58BA.0020.0002] # EGYPTIAN HIEROGLYPH E007
+130D9 ; [.58BB.0020.0002] # EGYPTIAN HIEROGLYPH E008
+130DA ; [.58BC.0020.0002] # EGYPTIAN HIEROGLYPH E008A
+130DB ; [.58BD.0020.0002] # EGYPTIAN HIEROGLYPH E009
+130DC ; [.58BE.0020.0002] # EGYPTIAN HIEROGLYPH E009A
+130DD ; [.58BF.0020.0002] # EGYPTIAN HIEROGLYPH E010
+130DE ; [.58C0.0020.0002] # EGYPTIAN HIEROGLYPH E011
+130DF ; [.58C1.0020.0002] # EGYPTIAN HIEROGLYPH E012
+130E0 ; [.58C2.0020.0002] # EGYPTIAN HIEROGLYPH E013
+130E1 ; [.58C3.0020.0002] # EGYPTIAN HIEROGLYPH E014
+130E2 ; [.58C4.0020.0002] # EGYPTIAN HIEROGLYPH E015
+130E3 ; [.58C5.0020.0002] # EGYPTIAN HIEROGLYPH E016
+130E4 ; [.58C6.0020.0002] # EGYPTIAN HIEROGLYPH E016A
+130E5 ; [.58C7.0020.0002] # EGYPTIAN HIEROGLYPH E017
+130E6 ; [.58C8.0020.0002] # EGYPTIAN HIEROGLYPH E017A
+130E7 ; [.58C9.0020.0002] # EGYPTIAN HIEROGLYPH E018
+130E8 ; [.58CA.0020.0002] # EGYPTIAN HIEROGLYPH E019
+130E9 ; [.58CB.0020.0002] # EGYPTIAN HIEROGLYPH E020
+130EA ; [.58CC.0020.0002] # EGYPTIAN HIEROGLYPH E020A
+130EB ; [.58CD.0020.0002] # EGYPTIAN HIEROGLYPH E021
+130EC ; [.58CE.0020.0002] # EGYPTIAN HIEROGLYPH E022
+130ED ; [.58CF.0020.0002] # EGYPTIAN HIEROGLYPH E023
+130EE ; [.58D0.0020.0002] # EGYPTIAN HIEROGLYPH E024
+130EF ; [.58D1.0020.0002] # EGYPTIAN HIEROGLYPH E025
+130F0 ; [.58D2.0020.0002] # EGYPTIAN HIEROGLYPH E026
+130F1 ; [.58D3.0020.0002] # EGYPTIAN HIEROGLYPH E027
+130F2 ; [.58D4.0020.0002] # EGYPTIAN HIEROGLYPH E028
+130F3 ; [.58D5.0020.0002] # EGYPTIAN HIEROGLYPH E028A
+130F4 ; [.58D6.0020.0002] # EGYPTIAN HIEROGLYPH E029
+130F5 ; [.58D7.0020.0002] # EGYPTIAN HIEROGLYPH E030
+130F6 ; [.58D8.0020.0002] # EGYPTIAN HIEROGLYPH E031
+130F7 ; [.58D9.0020.0002] # EGYPTIAN HIEROGLYPH E032
+130F8 ; [.58DA.0020.0002] # EGYPTIAN HIEROGLYPH E033
+130F9 ; [.58DB.0020.0002] # EGYPTIAN HIEROGLYPH E034
+130FA ; [.58DC.0020.0002] # EGYPTIAN HIEROGLYPH E034A
+130FB ; [.58DD.0020.0002] # EGYPTIAN HIEROGLYPH E036
+130FC ; [.58DE.0020.0002] # EGYPTIAN HIEROGLYPH E037
+130FD ; [.58DF.0020.0002] # EGYPTIAN HIEROGLYPH E038
+130FE ; [.58E0.0020.0002] # EGYPTIAN HIEROGLYPH F001
+130FF ; [.58E1.0020.0002] # EGYPTIAN HIEROGLYPH F001A
+13100 ; [.58E2.0020.0002] # EGYPTIAN HIEROGLYPH F002
+13101 ; [.58E3.0020.0002] # EGYPTIAN HIEROGLYPH F003
+13102 ; [.58E4.0020.0002] # EGYPTIAN HIEROGLYPH F004
+13103 ; [.58E5.0020.0002] # EGYPTIAN HIEROGLYPH F005
+13104 ; [.58E6.0020.0002] # EGYPTIAN HIEROGLYPH F006
+13105 ; [.58E7.0020.0002] # EGYPTIAN HIEROGLYPH F007
+13106 ; [.58E8.0020.0002] # EGYPTIAN HIEROGLYPH F008
+13107 ; [.58E9.0020.0002] # EGYPTIAN HIEROGLYPH F009
+13108 ; [.58EA.0020.0002] # EGYPTIAN HIEROGLYPH F010
+13109 ; [.58EB.0020.0002] # EGYPTIAN HIEROGLYPH F011
+1310A ; [.58EC.0020.0002] # EGYPTIAN HIEROGLYPH F012
+1310B ; [.58ED.0020.0002] # EGYPTIAN HIEROGLYPH F013
+1310C ; [.58EE.0020.0002] # EGYPTIAN HIEROGLYPH F013A
+1310D ; [.58EF.0020.0002] # EGYPTIAN HIEROGLYPH F014
+1310E ; [.58F0.0020.0002] # EGYPTIAN HIEROGLYPH F015
+1310F ; [.58F1.0020.0002] # EGYPTIAN HIEROGLYPH F016
+13110 ; [.58F2.0020.0002] # EGYPTIAN HIEROGLYPH F017
+13111 ; [.58F3.0020.0002] # EGYPTIAN HIEROGLYPH F018
+13112 ; [.58F4.0020.0002] # EGYPTIAN HIEROGLYPH F019
+13113 ; [.58F5.0020.0002] # EGYPTIAN HIEROGLYPH F020
+13114 ; [.58F6.0020.0002] # EGYPTIAN HIEROGLYPH F021
+13115 ; [.58F7.0020.0002] # EGYPTIAN HIEROGLYPH F021A
+13116 ; [.58F8.0020.0002] # EGYPTIAN HIEROGLYPH F022
+13117 ; [.58F9.0020.0002] # EGYPTIAN HIEROGLYPH F023
+13118 ; [.58FA.0020.0002] # EGYPTIAN HIEROGLYPH F024
+13119 ; [.58FB.0020.0002] # EGYPTIAN HIEROGLYPH F025
+1311A ; [.58FC.0020.0002] # EGYPTIAN HIEROGLYPH F026
+1311B ; [.58FD.0020.0002] # EGYPTIAN HIEROGLYPH F027
+1311C ; [.58FE.0020.0002] # EGYPTIAN HIEROGLYPH F028
+1311D ; [.58FF.0020.0002] # EGYPTIAN HIEROGLYPH F029
+1311E ; [.5900.0020.0002] # EGYPTIAN HIEROGLYPH F030
+1311F ; [.5901.0020.0002] # EGYPTIAN HIEROGLYPH F031
+13120 ; [.5902.0020.0002] # EGYPTIAN HIEROGLYPH F031A
+13121 ; [.5903.0020.0002] # EGYPTIAN HIEROGLYPH F032
+13122 ; [.5904.0020.0002] # EGYPTIAN HIEROGLYPH F033
+13123 ; [.5905.0020.0002] # EGYPTIAN HIEROGLYPH F034
+13124 ; [.5906.0020.0002] # EGYPTIAN HIEROGLYPH F035
+13125 ; [.5907.0020.0002] # EGYPTIAN HIEROGLYPH F036
+13126 ; [.5908.0020.0002] # EGYPTIAN HIEROGLYPH F037
+13127 ; [.5909.0020.0002] # EGYPTIAN HIEROGLYPH F037A
+13128 ; [.590A.0020.0002] # EGYPTIAN HIEROGLYPH F038
+13129 ; [.590B.0020.0002] # EGYPTIAN HIEROGLYPH F038A
+1312A ; [.590C.0020.0002] # EGYPTIAN HIEROGLYPH F039
+1312B ; [.590D.0020.0002] # EGYPTIAN HIEROGLYPH F040
+1312C ; [.590E.0020.0002] # EGYPTIAN HIEROGLYPH F041
+1312D ; [.590F.0020.0002] # EGYPTIAN HIEROGLYPH F042
+1312E ; [.5910.0020.0002] # EGYPTIAN HIEROGLYPH F043
+1312F ; [.5911.0020.0002] # EGYPTIAN HIEROGLYPH F044
+13130 ; [.5912.0020.0002] # EGYPTIAN HIEROGLYPH F045
+13131 ; [.5913.0020.0002] # EGYPTIAN HIEROGLYPH F045A
+13132 ; [.5914.0020.0002] # EGYPTIAN HIEROGLYPH F046
+13133 ; [.5915.0020.0002] # EGYPTIAN HIEROGLYPH F046A
+13134 ; [.5916.0020.0002] # EGYPTIAN HIEROGLYPH F047
+13135 ; [.5917.0020.0002] # EGYPTIAN HIEROGLYPH F047A
+13136 ; [.5918.0020.0002] # EGYPTIAN HIEROGLYPH F048
+13137 ; [.5919.0020.0002] # EGYPTIAN HIEROGLYPH F049
+13138 ; [.591A.0020.0002] # EGYPTIAN HIEROGLYPH F050
+13139 ; [.591B.0020.0002] # EGYPTIAN HIEROGLYPH F051
+1313A ; [.591C.0020.0002] # EGYPTIAN HIEROGLYPH F051A
+1313B ; [.591D.0020.0002] # EGYPTIAN HIEROGLYPH F051B
+1313C ; [.591E.0020.0002] # EGYPTIAN HIEROGLYPH F051C
+1313D ; [.591F.0020.0002] # EGYPTIAN HIEROGLYPH F052
+1313E ; [.5920.0020.0002] # EGYPTIAN HIEROGLYPH F053
+1313F ; [.5921.0020.0002] # EGYPTIAN HIEROGLYPH G001
+13140 ; [.5922.0020.0002] # EGYPTIAN HIEROGLYPH G002
+13141 ; [.5923.0020.0002] # EGYPTIAN HIEROGLYPH G003
+13142 ; [.5924.0020.0002] # EGYPTIAN HIEROGLYPH G004
+13143 ; [.5925.0020.0002] # EGYPTIAN HIEROGLYPH G005
+13144 ; [.5926.0020.0002] # EGYPTIAN HIEROGLYPH G006
+13145 ; [.5927.0020.0002] # EGYPTIAN HIEROGLYPH G006A
+13146 ; [.5928.0020.0002] # EGYPTIAN HIEROGLYPH G007
+13147 ; [.5929.0020.0002] # EGYPTIAN HIEROGLYPH G007A
+13148 ; [.592A.0020.0002] # EGYPTIAN HIEROGLYPH G007B
+13149 ; [.592B.0020.0002] # EGYPTIAN HIEROGLYPH G008
+1314A ; [.592C.0020.0002] # EGYPTIAN HIEROGLYPH G009
+1314B ; [.592D.0020.0002] # EGYPTIAN HIEROGLYPH G010
+1314C ; [.592E.0020.0002] # EGYPTIAN HIEROGLYPH G011
+1314D ; [.592F.0020.0002] # EGYPTIAN HIEROGLYPH G011A
+1314E ; [.5930.0020.0002] # EGYPTIAN HIEROGLYPH G012
+1314F ; [.5931.0020.0002] # EGYPTIAN HIEROGLYPH G013
+13150 ; [.5932.0020.0002] # EGYPTIAN HIEROGLYPH G014
+13151 ; [.5933.0020.0002] # EGYPTIAN HIEROGLYPH G015
+13152 ; [.5934.0020.0002] # EGYPTIAN HIEROGLYPH G016
+13153 ; [.5935.0020.0002] # EGYPTIAN HIEROGLYPH G017
+13154 ; [.5936.0020.0002] # EGYPTIAN HIEROGLYPH G018
+13155 ; [.5937.0020.0002] # EGYPTIAN HIEROGLYPH G019
+13156 ; [.5938.0020.0002] # EGYPTIAN HIEROGLYPH G020
+13157 ; [.5939.0020.0002] # EGYPTIAN HIEROGLYPH G020A
+13158 ; [.593A.0020.0002] # EGYPTIAN HIEROGLYPH G021
+13159 ; [.593B.0020.0002] # EGYPTIAN HIEROGLYPH G022
+1315A ; [.593C.0020.0002] # EGYPTIAN HIEROGLYPH G023
+1315B ; [.593D.0020.0002] # EGYPTIAN HIEROGLYPH G024
+1315C ; [.593E.0020.0002] # EGYPTIAN HIEROGLYPH G025
+1315D ; [.593F.0020.0002] # EGYPTIAN HIEROGLYPH G026
+1315E ; [.5940.0020.0002] # EGYPTIAN HIEROGLYPH G026A
+1315F ; [.5941.0020.0002] # EGYPTIAN HIEROGLYPH G027
+13160 ; [.5942.0020.0002] # EGYPTIAN HIEROGLYPH G028
+13161 ; [.5943.0020.0002] # EGYPTIAN HIEROGLYPH G029
+13162 ; [.5944.0020.0002] # EGYPTIAN HIEROGLYPH G030
+13163 ; [.5945.0020.0002] # EGYPTIAN HIEROGLYPH G031
+13164 ; [.5946.0020.0002] # EGYPTIAN HIEROGLYPH G032
+13165 ; [.5947.0020.0002] # EGYPTIAN HIEROGLYPH G033
+13166 ; [.5948.0020.0002] # EGYPTIAN HIEROGLYPH G034
+13167 ; [.5949.0020.0002] # EGYPTIAN HIEROGLYPH G035
+13168 ; [.594A.0020.0002] # EGYPTIAN HIEROGLYPH G036
+13169 ; [.594B.0020.0002] # EGYPTIAN HIEROGLYPH G036A
+1316A ; [.594C.0020.0002] # EGYPTIAN HIEROGLYPH G037
+1316B ; [.594D.0020.0002] # EGYPTIAN HIEROGLYPH G037A
+1316C ; [.594E.0020.0002] # EGYPTIAN HIEROGLYPH G038
+1316D ; [.594F.0020.0002] # EGYPTIAN HIEROGLYPH G039
+1316E ; [.5950.0020.0002] # EGYPTIAN HIEROGLYPH G040
+1316F ; [.5951.0020.0002] # EGYPTIAN HIEROGLYPH G041
+13170 ; [.5952.0020.0002] # EGYPTIAN HIEROGLYPH G042
+13171 ; [.5953.0020.0002] # EGYPTIAN HIEROGLYPH G043
+13172 ; [.5954.0020.0002] # EGYPTIAN HIEROGLYPH G043A
+13173 ; [.5955.0020.0002] # EGYPTIAN HIEROGLYPH G044
+13174 ; [.5956.0020.0002] # EGYPTIAN HIEROGLYPH G045
+13175 ; [.5957.0020.0002] # EGYPTIAN HIEROGLYPH G045A
+13176 ; [.5958.0020.0002] # EGYPTIAN HIEROGLYPH G046
+13177 ; [.5959.0020.0002] # EGYPTIAN HIEROGLYPH G047
+13178 ; [.595A.0020.0002] # EGYPTIAN HIEROGLYPH G048
+13179 ; [.595B.0020.0002] # EGYPTIAN HIEROGLYPH G049
+1317A ; [.595C.0020.0002] # EGYPTIAN HIEROGLYPH G050
+1317B ; [.595D.0020.0002] # EGYPTIAN HIEROGLYPH G051
+1317C ; [.595E.0020.0002] # EGYPTIAN HIEROGLYPH G052
+1317D ; [.595F.0020.0002] # EGYPTIAN HIEROGLYPH G053
+1317E ; [.5960.0020.0002] # EGYPTIAN HIEROGLYPH G054
+1317F ; [.5961.0020.0002] # EGYPTIAN HIEROGLYPH H001
+13180 ; [.5962.0020.0002] # EGYPTIAN HIEROGLYPH H002
+13181 ; [.5963.0020.0002] # EGYPTIAN HIEROGLYPH H003
+13182 ; [.5964.0020.0002] # EGYPTIAN HIEROGLYPH H004
+13183 ; [.5965.0020.0002] # EGYPTIAN HIEROGLYPH H005
+13184 ; [.5966.0020.0002] # EGYPTIAN HIEROGLYPH H006
+13185 ; [.5967.0020.0002] # EGYPTIAN HIEROGLYPH H006A
+13186 ; [.5968.0020.0002] # EGYPTIAN HIEROGLYPH H007
+13187 ; [.5969.0020.0002] # EGYPTIAN HIEROGLYPH H008
+13188 ; [.596A.0020.0002] # EGYPTIAN HIEROGLYPH I001
+13189 ; [.596B.0020.0002] # EGYPTIAN HIEROGLYPH I002
+1318A ; [.596C.0020.0002] # EGYPTIAN HIEROGLYPH I003
+1318B ; [.596D.0020.0002] # EGYPTIAN HIEROGLYPH I004
+1318C ; [.596E.0020.0002] # EGYPTIAN HIEROGLYPH I005
+1318D ; [.596F.0020.0002] # EGYPTIAN HIEROGLYPH I005A
+1318E ; [.5970.0020.0002] # EGYPTIAN HIEROGLYPH I006
+1318F ; [.5971.0020.0002] # EGYPTIAN HIEROGLYPH I007
+13190 ; [.5972.0020.0002] # EGYPTIAN HIEROGLYPH I008
+13191 ; [.5973.0020.0002] # EGYPTIAN HIEROGLYPH I009
+13192 ; [.5974.0020.0002] # EGYPTIAN HIEROGLYPH I009A
+13193 ; [.5975.0020.0002] # EGYPTIAN HIEROGLYPH I010
+13194 ; [.5976.0020.0002] # EGYPTIAN HIEROGLYPH I010A
+13195 ; [.5977.0020.0002] # EGYPTIAN HIEROGLYPH I011
+13196 ; [.5978.0020.0002] # EGYPTIAN HIEROGLYPH I011A
+13197 ; [.5979.0020.0002] # EGYPTIAN HIEROGLYPH I012
+13198 ; [.597A.0020.0002] # EGYPTIAN HIEROGLYPH I013
+13199 ; [.597B.0020.0002] # EGYPTIAN HIEROGLYPH I014
+1319A ; [.597C.0020.0002] # EGYPTIAN HIEROGLYPH I015
+1319B ; [.597D.0020.0002] # EGYPTIAN HIEROGLYPH K001
+1319C ; [.597E.0020.0002] # EGYPTIAN HIEROGLYPH K002
+1319D ; [.597F.0020.0002] # EGYPTIAN HIEROGLYPH K003
+1319E ; [.5980.0020.0002] # EGYPTIAN HIEROGLYPH K004
+1319F ; [.5981.0020.0002] # EGYPTIAN HIEROGLYPH K005
+131A0 ; [.5982.0020.0002] # EGYPTIAN HIEROGLYPH K006
+131A1 ; [.5983.0020.0002] # EGYPTIAN HIEROGLYPH K007
+131A2 ; [.5984.0020.0002] # EGYPTIAN HIEROGLYPH K008
+131A3 ; [.5985.0020.0002] # EGYPTIAN HIEROGLYPH L001
+131A4 ; [.5986.0020.0002] # EGYPTIAN HIEROGLYPH L002
+131A5 ; [.5987.0020.0002] # EGYPTIAN HIEROGLYPH L002A
+131A6 ; [.5988.0020.0002] # EGYPTIAN HIEROGLYPH L003
+131A7 ; [.5989.0020.0002] # EGYPTIAN HIEROGLYPH L004
+131A8 ; [.598A.0020.0002] # EGYPTIAN HIEROGLYPH L005
+131A9 ; [.598B.0020.0002] # EGYPTIAN HIEROGLYPH L006
+131AA ; [.598C.0020.0002] # EGYPTIAN HIEROGLYPH L006A
+131AB ; [.598D.0020.0002] # EGYPTIAN HIEROGLYPH L007
+131AC ; [.598E.0020.0002] # EGYPTIAN HIEROGLYPH L008
+131AD ; [.598F.0020.0002] # EGYPTIAN HIEROGLYPH M001
+131AE ; [.5990.0020.0002] # EGYPTIAN HIEROGLYPH M001A
+131AF ; [.5991.0020.0002] # EGYPTIAN HIEROGLYPH M001B
+131B0 ; [.5992.0020.0002] # EGYPTIAN HIEROGLYPH M002
+131B1 ; [.5993.0020.0002] # EGYPTIAN HIEROGLYPH M003
+131B2 ; [.5994.0020.0002] # EGYPTIAN HIEROGLYPH M003A
+131B3 ; [.5995.0020.0002] # EGYPTIAN HIEROGLYPH M004
+131B4 ; [.5996.0020.0002] # EGYPTIAN HIEROGLYPH M005
+131B5 ; [.5997.0020.0002] # EGYPTIAN HIEROGLYPH M006
+131B6 ; [.5998.0020.0002] # EGYPTIAN HIEROGLYPH M007
+131B7 ; [.5999.0020.0002] # EGYPTIAN HIEROGLYPH M008
+131B8 ; [.599A.0020.0002] # EGYPTIAN HIEROGLYPH M009
+131B9 ; [.599B.0020.0002] # EGYPTIAN HIEROGLYPH M010
+131BA ; [.599C.0020.0002] # EGYPTIAN HIEROGLYPH M010A
+131BB ; [.599D.0020.0002] # EGYPTIAN HIEROGLYPH M011
+131BC ; [.599E.0020.0002] # EGYPTIAN HIEROGLYPH M012
+131BD ; [.599F.0020.0002] # EGYPTIAN HIEROGLYPH M012A
+131BE ; [.59A0.0020.0002] # EGYPTIAN HIEROGLYPH M012B
+131BF ; [.59A1.0020.0002] # EGYPTIAN HIEROGLYPH M012C
+131C0 ; [.59A2.0020.0002] # EGYPTIAN HIEROGLYPH M012D
+131C1 ; [.59A3.0020.0002] # EGYPTIAN HIEROGLYPH M012E
+131C2 ; [.59A4.0020.0002] # EGYPTIAN HIEROGLYPH M012F
+131C3 ; [.59A5.0020.0002] # EGYPTIAN HIEROGLYPH M012G
+131C4 ; [.59A6.0020.0002] # EGYPTIAN HIEROGLYPH M012H
+131C5 ; [.59A7.0020.0002] # EGYPTIAN HIEROGLYPH M013
+131C6 ; [.59A8.0020.0002] # EGYPTIAN HIEROGLYPH M014
+131C7 ; [.59A9.0020.0002] # EGYPTIAN HIEROGLYPH M015
+131C8 ; [.59AA.0020.0002] # EGYPTIAN HIEROGLYPH M015A
+131C9 ; [.59AB.0020.0002] # EGYPTIAN HIEROGLYPH M016
+131CA ; [.59AC.0020.0002] # EGYPTIAN HIEROGLYPH M016A
+131CB ; [.59AD.0020.0002] # EGYPTIAN HIEROGLYPH M017
+131CC ; [.59AE.0020.0002] # EGYPTIAN HIEROGLYPH M017A
+131CD ; [.59AF.0020.0002] # EGYPTIAN HIEROGLYPH M018
+131CE ; [.59B0.0020.0002] # EGYPTIAN HIEROGLYPH M019
+131CF ; [.59B1.0020.0002] # EGYPTIAN HIEROGLYPH M020
+131D0 ; [.59B2.0020.0002] # EGYPTIAN HIEROGLYPH M021
+131D1 ; [.59B3.0020.0002] # EGYPTIAN HIEROGLYPH M022
+131D2 ; [.59B4.0020.0002] # EGYPTIAN HIEROGLYPH M022A
+131D3 ; [.59B5.0020.0002] # EGYPTIAN HIEROGLYPH M023
+131D4 ; [.59B6.0020.0002] # EGYPTIAN HIEROGLYPH M024
+131D5 ; [.59B7.0020.0002] # EGYPTIAN HIEROGLYPH M024A
+131D6 ; [.59B8.0020.0002] # EGYPTIAN HIEROGLYPH M025
+131D7 ; [.59B9.0020.0002] # EGYPTIAN HIEROGLYPH M026
+131D8 ; [.59BA.0020.0002] # EGYPTIAN HIEROGLYPH M027
+131D9 ; [.59BB.0020.0002] # EGYPTIAN HIEROGLYPH M028
+131DA ; [.59BC.0020.0002] # EGYPTIAN HIEROGLYPH M028A
+131DB ; [.59BD.0020.0002] # EGYPTIAN HIEROGLYPH M029
+131DC ; [.59BE.0020.0002] # EGYPTIAN HIEROGLYPH M030
+131DD ; [.59BF.0020.0002] # EGYPTIAN HIEROGLYPH M031
+131DE ; [.59C0.0020.0002] # EGYPTIAN HIEROGLYPH M031A
+131DF ; [.59C1.0020.0002] # EGYPTIAN HIEROGLYPH M032
+131E0 ; [.59C2.0020.0002] # EGYPTIAN HIEROGLYPH M033
+131E1 ; [.59C3.0020.0002] # EGYPTIAN HIEROGLYPH M033A
+131E2 ; [.59C4.0020.0002] # EGYPTIAN HIEROGLYPH M033B
+131E3 ; [.59C5.0020.0002] # EGYPTIAN HIEROGLYPH M034
+131E4 ; [.59C6.0020.0002] # EGYPTIAN HIEROGLYPH M035
+131E5 ; [.59C7.0020.0002] # EGYPTIAN HIEROGLYPH M036
+131E6 ; [.59C8.0020.0002] # EGYPTIAN HIEROGLYPH M037
+131E7 ; [.59C9.0020.0002] # EGYPTIAN HIEROGLYPH M038
+131E8 ; [.59CA.0020.0002] # EGYPTIAN HIEROGLYPH M039
+131E9 ; [.59CB.0020.0002] # EGYPTIAN HIEROGLYPH M040
+131EA ; [.59CC.0020.0002] # EGYPTIAN HIEROGLYPH M040A
+131EB ; [.59CD.0020.0002] # EGYPTIAN HIEROGLYPH M041
+131EC ; [.59CE.0020.0002] # EGYPTIAN HIEROGLYPH M042
+131ED ; [.59CF.0020.0002] # EGYPTIAN HIEROGLYPH M043
+131EE ; [.59D0.0020.0002] # EGYPTIAN HIEROGLYPH M044
+131EF ; [.59D1.0020.0002] # EGYPTIAN HIEROGLYPH N001
+131F0 ; [.59D2.0020.0002] # EGYPTIAN HIEROGLYPH N002
+131F1 ; [.59D3.0020.0002] # EGYPTIAN HIEROGLYPH N003
+131F2 ; [.59D4.0020.0002] # EGYPTIAN HIEROGLYPH N004
+131F3 ; [.59D5.0020.0002] # EGYPTIAN HIEROGLYPH N005
+131F4 ; [.59D6.0020.0002] # EGYPTIAN HIEROGLYPH N006
+131F5 ; [.59D7.0020.0002] # EGYPTIAN HIEROGLYPH N007
+131F6 ; [.59D8.0020.0002] # EGYPTIAN HIEROGLYPH N008
+131F7 ; [.59D9.0020.0002] # EGYPTIAN HIEROGLYPH N009
+131F8 ; [.59DA.0020.0002] # EGYPTIAN HIEROGLYPH N010
+131F9 ; [.59DB.0020.0002] # EGYPTIAN HIEROGLYPH N011
+131FA ; [.59DC.0020.0002] # EGYPTIAN HIEROGLYPH N012
+131FB ; [.59DD.0020.0002] # EGYPTIAN HIEROGLYPH N013
+131FC ; [.59DE.0020.0002] # EGYPTIAN HIEROGLYPH N014
+131FD ; [.59DF.0020.0002] # EGYPTIAN HIEROGLYPH N015
+131FE ; [.59E0.0020.0002] # EGYPTIAN HIEROGLYPH N016
+131FF ; [.59E1.0020.0002] # EGYPTIAN HIEROGLYPH N017
+13200 ; [.59E2.0020.0002] # EGYPTIAN HIEROGLYPH N018
+13201 ; [.59E3.0020.0002] # EGYPTIAN HIEROGLYPH N018A
+13202 ; [.59E4.0020.0002] # EGYPTIAN HIEROGLYPH N018B
+13203 ; [.59E5.0020.0002] # EGYPTIAN HIEROGLYPH N019
+13204 ; [.59E6.0020.0002] # EGYPTIAN HIEROGLYPH N020
+13205 ; [.59E7.0020.0002] # EGYPTIAN HIEROGLYPH N021
+13206 ; [.59E8.0020.0002] # EGYPTIAN HIEROGLYPH N022
+13207 ; [.59E9.0020.0002] # EGYPTIAN HIEROGLYPH N023
+13208 ; [.59EA.0020.0002] # EGYPTIAN HIEROGLYPH N024
+13209 ; [.59EB.0020.0002] # EGYPTIAN HIEROGLYPH N025
+1320A ; [.59EC.0020.0002] # EGYPTIAN HIEROGLYPH N025A
+1320B ; [.59ED.0020.0002] # EGYPTIAN HIEROGLYPH N026
+1320C ; [.59EE.0020.0002] # EGYPTIAN HIEROGLYPH N027
+1320D ; [.59EF.0020.0002] # EGYPTIAN HIEROGLYPH N028
+1320E ; [.59F0.0020.0002] # EGYPTIAN HIEROGLYPH N029
+1320F ; [.59F1.0020.0002] # EGYPTIAN HIEROGLYPH N030
+13210 ; [.59F2.0020.0002] # EGYPTIAN HIEROGLYPH N031
+13211 ; [.59F3.0020.0002] # EGYPTIAN HIEROGLYPH N032
+13212 ; [.59F4.0020.0002] # EGYPTIAN HIEROGLYPH N033
+13213 ; [.59F5.0020.0002] # EGYPTIAN HIEROGLYPH N033A
+13214 ; [.59F6.0020.0002] # EGYPTIAN HIEROGLYPH N034
+13215 ; [.59F7.0020.0002] # EGYPTIAN HIEROGLYPH N034A
+13216 ; [.59F8.0020.0002] # EGYPTIAN HIEROGLYPH N035
+13217 ; [.59F9.0020.0002] # EGYPTIAN HIEROGLYPH N035A
+13218 ; [.59FA.0020.0002] # EGYPTIAN HIEROGLYPH N036
+13219 ; [.59FB.0020.0002] # EGYPTIAN HIEROGLYPH N037
+1321A ; [.59FC.0020.0002] # EGYPTIAN HIEROGLYPH N037A
+1321B ; [.59FD.0020.0002] # EGYPTIAN HIEROGLYPH N038
+1321C ; [.59FE.0020.0002] # EGYPTIAN HIEROGLYPH N039
+1321D ; [.59FF.0020.0002] # EGYPTIAN HIEROGLYPH N040
+1321E ; [.5A00.0020.0002] # EGYPTIAN HIEROGLYPH N041
+1321F ; [.5A01.0020.0002] # EGYPTIAN HIEROGLYPH N042
+13220 ; [.5A02.0020.0002] # EGYPTIAN HIEROGLYPH NL001
+13221 ; [.5A03.0020.0002] # EGYPTIAN HIEROGLYPH NL002
+13222 ; [.5A04.0020.0002] # EGYPTIAN HIEROGLYPH NL003
+13223 ; [.5A05.0020.0002] # EGYPTIAN HIEROGLYPH NL004
+13224 ; [.5A06.0020.0002] # EGYPTIAN HIEROGLYPH NL005
+13225 ; [.5A07.0020.0002] # EGYPTIAN HIEROGLYPH NL005A
+13226 ; [.5A08.0020.0002] # EGYPTIAN HIEROGLYPH NL006
+13227 ; [.5A09.0020.0002] # EGYPTIAN HIEROGLYPH NL007
+13228 ; [.5A0A.0020.0002] # EGYPTIAN HIEROGLYPH NL008
+13229 ; [.5A0B.0020.0002] # EGYPTIAN HIEROGLYPH NL009
+1322A ; [.5A0C.0020.0002] # EGYPTIAN HIEROGLYPH NL010
+1322B ; [.5A0D.0020.0002] # EGYPTIAN HIEROGLYPH NL011
+1322C ; [.5A0E.0020.0002] # EGYPTIAN HIEROGLYPH NL012
+1322D ; [.5A0F.0020.0002] # EGYPTIAN HIEROGLYPH NL013
+1322E ; [.5A10.0020.0002] # EGYPTIAN HIEROGLYPH NL014
+1322F ; [.5A11.0020.0002] # EGYPTIAN HIEROGLYPH NL015
+13230 ; [.5A12.0020.0002] # EGYPTIAN HIEROGLYPH NL016
+13231 ; [.5A13.0020.0002] # EGYPTIAN HIEROGLYPH NL017
+13232 ; [.5A14.0020.0002] # EGYPTIAN HIEROGLYPH NL017A
+13233 ; [.5A15.0020.0002] # EGYPTIAN HIEROGLYPH NL018
+13234 ; [.5A16.0020.0002] # EGYPTIAN HIEROGLYPH NL019
+13235 ; [.5A17.0020.0002] # EGYPTIAN HIEROGLYPH NL020
+13236 ; [.5A18.0020.0002] # EGYPTIAN HIEROGLYPH NU001
+13237 ; [.5A19.0020.0002] # EGYPTIAN HIEROGLYPH NU002
+13238 ; [.5A1A.0020.0002] # EGYPTIAN HIEROGLYPH NU003
+13239 ; [.5A1B.0020.0002] # EGYPTIAN HIEROGLYPH NU004
+1323A ; [.5A1C.0020.0002] # EGYPTIAN HIEROGLYPH NU005
+1323B ; [.5A1D.0020.0002] # EGYPTIAN HIEROGLYPH NU006
+1323C ; [.5A1E.0020.0002] # EGYPTIAN HIEROGLYPH NU007
+1323D ; [.5A1F.0020.0002] # EGYPTIAN HIEROGLYPH NU008
+1323E ; [.5A20.0020.0002] # EGYPTIAN HIEROGLYPH NU009
+1323F ; [.5A21.0020.0002] # EGYPTIAN HIEROGLYPH NU010
+13240 ; [.5A22.0020.0002] # EGYPTIAN HIEROGLYPH NU010A
+13241 ; [.5A23.0020.0002] # EGYPTIAN HIEROGLYPH NU011
+13242 ; [.5A24.0020.0002] # EGYPTIAN HIEROGLYPH NU011A
+13243 ; [.5A25.0020.0002] # EGYPTIAN HIEROGLYPH NU012
+13244 ; [.5A26.0020.0002] # EGYPTIAN HIEROGLYPH NU013
+13245 ; [.5A27.0020.0002] # EGYPTIAN HIEROGLYPH NU014
+13246 ; [.5A28.0020.0002] # EGYPTIAN HIEROGLYPH NU015
+13247 ; [.5A29.0020.0002] # EGYPTIAN HIEROGLYPH NU016
+13248 ; [.5A2A.0020.0002] # EGYPTIAN HIEROGLYPH NU017
+13249 ; [.5A2B.0020.0002] # EGYPTIAN HIEROGLYPH NU018
+1324A ; [.5A2C.0020.0002] # EGYPTIAN HIEROGLYPH NU018A
+1324B ; [.5A2D.0020.0002] # EGYPTIAN HIEROGLYPH NU019
+1324C ; [.5A2E.0020.0002] # EGYPTIAN HIEROGLYPH NU020
+1324D ; [.5A2F.0020.0002] # EGYPTIAN HIEROGLYPH NU021
+1324E ; [.5A30.0020.0002] # EGYPTIAN HIEROGLYPH NU022
+1324F ; [.5A31.0020.0002] # EGYPTIAN HIEROGLYPH NU022A
+13250 ; [.5A32.0020.0002] # EGYPTIAN HIEROGLYPH O001
+13251 ; [.5A33.0020.0002] # EGYPTIAN HIEROGLYPH O001A
+13252 ; [.5A34.0020.0002] # EGYPTIAN HIEROGLYPH O002
+13253 ; [.5A35.0020.0002] # EGYPTIAN HIEROGLYPH O003
+13254 ; [.5A36.0020.0002] # EGYPTIAN HIEROGLYPH O004
+13255 ; [.5A37.0020.0002] # EGYPTIAN HIEROGLYPH O005
+13256 ; [.5A38.0020.0002] # EGYPTIAN HIEROGLYPH O005A
+13257 ; [.5A39.0020.0002] # EGYPTIAN HIEROGLYPH O006
+13258 ; [.5A3A.0020.0002] # EGYPTIAN HIEROGLYPH O006A
+13259 ; [.5A3B.0020.0002] # EGYPTIAN HIEROGLYPH O006B
+1325A ; [.5A3C.0020.0002] # EGYPTIAN HIEROGLYPH O006C
+1325B ; [.5A3D.0020.0002] # EGYPTIAN HIEROGLYPH O006D
+1325C ; [.5A3E.0020.0002] # EGYPTIAN HIEROGLYPH O006E
+1325D ; [.5A3F.0020.0002] # EGYPTIAN HIEROGLYPH O006F
+1325E ; [.5A40.0020.0002] # EGYPTIAN HIEROGLYPH O007
+1325F ; [.5A41.0020.0002] # EGYPTIAN HIEROGLYPH O008
+13260 ; [.5A42.0020.0002] # EGYPTIAN HIEROGLYPH O009
+13261 ; [.5A43.0020.0002] # EGYPTIAN HIEROGLYPH O010
+13262 ; [.5A44.0020.0002] # EGYPTIAN HIEROGLYPH O010A
+13263 ; [.5A45.0020.0002] # EGYPTIAN HIEROGLYPH O010B
+13264 ; [.5A46.0020.0002] # EGYPTIAN HIEROGLYPH O010C
+13265 ; [.5A47.0020.0002] # EGYPTIAN HIEROGLYPH O011
+13266 ; [.5A48.0020.0002] # EGYPTIAN HIEROGLYPH O012
+13267 ; [.5A49.0020.0002] # EGYPTIAN HIEROGLYPH O013
+13268 ; [.5A4A.0020.0002] # EGYPTIAN HIEROGLYPH O014
+13269 ; [.5A4B.0020.0002] # EGYPTIAN HIEROGLYPH O015
+1326A ; [.5A4C.0020.0002] # EGYPTIAN HIEROGLYPH O016
+1326B ; [.5A4D.0020.0002] # EGYPTIAN HIEROGLYPH O017
+1326C ; [.5A4E.0020.0002] # EGYPTIAN HIEROGLYPH O018
+1326D ; [.5A4F.0020.0002] # EGYPTIAN HIEROGLYPH O019
+1326E ; [.5A50.0020.0002] # EGYPTIAN HIEROGLYPH O019A
+1326F ; [.5A51.0020.0002] # EGYPTIAN HIEROGLYPH O020
+13270 ; [.5A52.0020.0002] # EGYPTIAN HIEROGLYPH O020A
+13271 ; [.5A53.0020.0002] # EGYPTIAN HIEROGLYPH O021
+13272 ; [.5A54.0020.0002] # EGYPTIAN HIEROGLYPH O022
+13273 ; [.5A55.0020.0002] # EGYPTIAN HIEROGLYPH O023
+13274 ; [.5A56.0020.0002] # EGYPTIAN HIEROGLYPH O024
+13275 ; [.5A57.0020.0002] # EGYPTIAN HIEROGLYPH O024A
+13276 ; [.5A58.0020.0002] # EGYPTIAN HIEROGLYPH O025
+13277 ; [.5A59.0020.0002] # EGYPTIAN HIEROGLYPH O025A
+13278 ; [.5A5A.0020.0002] # EGYPTIAN HIEROGLYPH O026
+13279 ; [.5A5B.0020.0002] # EGYPTIAN HIEROGLYPH O027
+1327A ; [.5A5C.0020.0002] # EGYPTIAN HIEROGLYPH O028
+1327B ; [.5A5D.0020.0002] # EGYPTIAN HIEROGLYPH O029
+1327C ; [.5A5E.0020.0002] # EGYPTIAN HIEROGLYPH O029A
+1327D ; [.5A5F.0020.0002] # EGYPTIAN HIEROGLYPH O030
+1327E ; [.5A60.0020.0002] # EGYPTIAN HIEROGLYPH O030A
+1327F ; [.5A61.0020.0002] # EGYPTIAN HIEROGLYPH O031
+13280 ; [.5A62.0020.0002] # EGYPTIAN HIEROGLYPH O032
+13281 ; [.5A63.0020.0002] # EGYPTIAN HIEROGLYPH O033
+13282 ; [.5A64.0020.0002] # EGYPTIAN HIEROGLYPH O033A
+13283 ; [.5A65.0020.0002] # EGYPTIAN HIEROGLYPH O034
+13284 ; [.5A66.0020.0002] # EGYPTIAN HIEROGLYPH O035
+13285 ; [.5A67.0020.0002] # EGYPTIAN HIEROGLYPH O036
+13286 ; [.5A68.0020.0002] # EGYPTIAN HIEROGLYPH O036A
+13287 ; [.5A69.0020.0002] # EGYPTIAN HIEROGLYPH O036B
+13288 ; [.5A6A.0020.0002] # EGYPTIAN HIEROGLYPH O036C
+13289 ; [.5A6B.0020.0002] # EGYPTIAN HIEROGLYPH O036D
+1328A ; [.5A6C.0020.0002] # EGYPTIAN HIEROGLYPH O037
+1328B ; [.5A6D.0020.0002] # EGYPTIAN HIEROGLYPH O038
+1328C ; [.5A6E.0020.0002] # EGYPTIAN HIEROGLYPH O039
+1328D ; [.5A6F.0020.0002] # EGYPTIAN HIEROGLYPH O040
+1328E ; [.5A70.0020.0002] # EGYPTIAN HIEROGLYPH O041
+1328F ; [.5A71.0020.0002] # EGYPTIAN HIEROGLYPH O042
+13290 ; [.5A72.0020.0002] # EGYPTIAN HIEROGLYPH O043
+13291 ; [.5A73.0020.0002] # EGYPTIAN HIEROGLYPH O044
+13292 ; [.5A74.0020.0002] # EGYPTIAN HIEROGLYPH O045
+13293 ; [.5A75.0020.0002] # EGYPTIAN HIEROGLYPH O046
+13294 ; [.5A76.0020.0002] # EGYPTIAN HIEROGLYPH O047
+13295 ; [.5A77.0020.0002] # EGYPTIAN HIEROGLYPH O048
+13296 ; [.5A78.0020.0002] # EGYPTIAN HIEROGLYPH O049
+13297 ; [.5A79.0020.0002] # EGYPTIAN HIEROGLYPH O050
+13298 ; [.5A7A.0020.0002] # EGYPTIAN HIEROGLYPH O050A
+13299 ; [.5A7B.0020.0002] # EGYPTIAN HIEROGLYPH O050B
+1329A ; [.5A7C.0020.0002] # EGYPTIAN HIEROGLYPH O051
+1329B ; [.5A7D.0020.0002] # EGYPTIAN HIEROGLYPH P001
+1329C ; [.5A7E.0020.0002] # EGYPTIAN HIEROGLYPH P001A
+1329D ; [.5A7F.0020.0002] # EGYPTIAN HIEROGLYPH P002
+1329E ; [.5A80.0020.0002] # EGYPTIAN HIEROGLYPH P003
+1329F ; [.5A81.0020.0002] # EGYPTIAN HIEROGLYPH P003A
+132A0 ; [.5A82.0020.0002] # EGYPTIAN HIEROGLYPH P004
+132A1 ; [.5A83.0020.0002] # EGYPTIAN HIEROGLYPH P005
+132A2 ; [.5A84.0020.0002] # EGYPTIAN HIEROGLYPH P006
+132A3 ; [.5A85.0020.0002] # EGYPTIAN HIEROGLYPH P007
+132A4 ; [.5A86.0020.0002] # EGYPTIAN HIEROGLYPH P008
+132A5 ; [.5A87.0020.0002] # EGYPTIAN HIEROGLYPH P009
+132A6 ; [.5A88.0020.0002] # EGYPTIAN HIEROGLYPH P010
+132A7 ; [.5A89.0020.0002] # EGYPTIAN HIEROGLYPH P011
+132A8 ; [.5A8A.0020.0002] # EGYPTIAN HIEROGLYPH Q001
+132A9 ; [.5A8B.0020.0002] # EGYPTIAN HIEROGLYPH Q002
+132AA ; [.5A8C.0020.0002] # EGYPTIAN HIEROGLYPH Q003
+132AB ; [.5A8D.0020.0002] # EGYPTIAN HIEROGLYPH Q004
+132AC ; [.5A8E.0020.0002] # EGYPTIAN HIEROGLYPH Q005
+132AD ; [.5A8F.0020.0002] # EGYPTIAN HIEROGLYPH Q006
+132AE ; [.5A90.0020.0002] # EGYPTIAN HIEROGLYPH Q007
+132AF ; [.5A91.0020.0002] # EGYPTIAN HIEROGLYPH R001
+132B0 ; [.5A92.0020.0002] # EGYPTIAN HIEROGLYPH R002
+132B1 ; [.5A93.0020.0002] # EGYPTIAN HIEROGLYPH R002A
+132B2 ; [.5A94.0020.0002] # EGYPTIAN HIEROGLYPH R003
+132B3 ; [.5A95.0020.0002] # EGYPTIAN HIEROGLYPH R003A
+132B4 ; [.5A96.0020.0002] # EGYPTIAN HIEROGLYPH R003B
+132B5 ; [.5A97.0020.0002] # EGYPTIAN HIEROGLYPH R004
+132B6 ; [.5A98.0020.0002] # EGYPTIAN HIEROGLYPH R005
+132B7 ; [.5A99.0020.0002] # EGYPTIAN HIEROGLYPH R006
+132B8 ; [.5A9A.0020.0002] # EGYPTIAN HIEROGLYPH R007
+132B9 ; [.5A9B.0020.0002] # EGYPTIAN HIEROGLYPH R008
+132BA ; [.5A9C.0020.0002] # EGYPTIAN HIEROGLYPH R009
+132BB ; [.5A9D.0020.0002] # EGYPTIAN HIEROGLYPH R010
+132BC ; [.5A9E.0020.0002] # EGYPTIAN HIEROGLYPH R010A
+132BD ; [.5A9F.0020.0002] # EGYPTIAN HIEROGLYPH R011
+132BE ; [.5AA0.0020.0002] # EGYPTIAN HIEROGLYPH R012
+132BF ; [.5AA1.0020.0002] # EGYPTIAN HIEROGLYPH R013
+132C0 ; [.5AA2.0020.0002] # EGYPTIAN HIEROGLYPH R014
+132C1 ; [.5AA3.0020.0002] # EGYPTIAN HIEROGLYPH R015
+132C2 ; [.5AA4.0020.0002] # EGYPTIAN HIEROGLYPH R016
+132C3 ; [.5AA5.0020.0002] # EGYPTIAN HIEROGLYPH R016A
+132C4 ; [.5AA6.0020.0002] # EGYPTIAN HIEROGLYPH R017
+132C5 ; [.5AA7.0020.0002] # EGYPTIAN HIEROGLYPH R018
+132C6 ; [.5AA8.0020.0002] # EGYPTIAN HIEROGLYPH R019
+132C7 ; [.5AA9.0020.0002] # EGYPTIAN HIEROGLYPH R020
+132C8 ; [.5AAA.0020.0002] # EGYPTIAN HIEROGLYPH R021
+132C9 ; [.5AAB.0020.0002] # EGYPTIAN HIEROGLYPH R022
+132CA ; [.5AAC.0020.0002] # EGYPTIAN HIEROGLYPH R023
+132CB ; [.5AAD.0020.0002] # EGYPTIAN HIEROGLYPH R024
+132CC ; [.5AAE.0020.0002] # EGYPTIAN HIEROGLYPH R025
+132CD ; [.5AAF.0020.0002] # EGYPTIAN HIEROGLYPH R026
+132CE ; [.5AB0.0020.0002] # EGYPTIAN HIEROGLYPH R027
+132CF ; [.5AB1.0020.0002] # EGYPTIAN HIEROGLYPH R028
+132D0 ; [.5AB2.0020.0002] # EGYPTIAN HIEROGLYPH R029
+132D1 ; [.5AB3.0020.0002] # EGYPTIAN HIEROGLYPH S001
+132D2 ; [.5AB4.0020.0002] # EGYPTIAN HIEROGLYPH S002
+132D3 ; [.5AB5.0020.0002] # EGYPTIAN HIEROGLYPH S002A
+132D4 ; [.5AB6.0020.0002] # EGYPTIAN HIEROGLYPH S003
+132D5 ; [.5AB7.0020.0002] # EGYPTIAN HIEROGLYPH S004
+132D6 ; [.5AB8.0020.0002] # EGYPTIAN HIEROGLYPH S005
+132D7 ; [.5AB9.0020.0002] # EGYPTIAN HIEROGLYPH S006
+132D8 ; [.5ABA.0020.0002] # EGYPTIAN HIEROGLYPH S006A
+132D9 ; [.5ABB.0020.0002] # EGYPTIAN HIEROGLYPH S007
+132DA ; [.5ABC.0020.0002] # EGYPTIAN HIEROGLYPH S008
+132DB ; [.5ABD.0020.0002] # EGYPTIAN HIEROGLYPH S009
+132DC ; [.5ABE.0020.0002] # EGYPTIAN HIEROGLYPH S010
+132DD ; [.5ABF.0020.0002] # EGYPTIAN HIEROGLYPH S011
+132DE ; [.5AC0.0020.0002] # EGYPTIAN HIEROGLYPH S012
+132DF ; [.5AC1.0020.0002] # EGYPTIAN HIEROGLYPH S013
+132E0 ; [.5AC2.0020.0002] # EGYPTIAN HIEROGLYPH S014
+132E1 ; [.5AC3.0020.0002] # EGYPTIAN HIEROGLYPH S014A
+132E2 ; [.5AC4.0020.0002] # EGYPTIAN HIEROGLYPH S014B
+132E3 ; [.5AC5.0020.0002] # EGYPTIAN HIEROGLYPH S015
+132E4 ; [.5AC6.0020.0002] # EGYPTIAN HIEROGLYPH S016
+132E5 ; [.5AC7.0020.0002] # EGYPTIAN HIEROGLYPH S017
+132E6 ; [.5AC8.0020.0002] # EGYPTIAN HIEROGLYPH S017A
+132E7 ; [.5AC9.0020.0002] # EGYPTIAN HIEROGLYPH S018
+132E8 ; [.5ACA.0020.0002] # EGYPTIAN HIEROGLYPH S019
+132E9 ; [.5ACB.0020.0002] # EGYPTIAN HIEROGLYPH S020
+132EA ; [.5ACC.0020.0002] # EGYPTIAN HIEROGLYPH S021
+132EB ; [.5ACD.0020.0002] # EGYPTIAN HIEROGLYPH S022
+132EC ; [.5ACE.0020.0002] # EGYPTIAN HIEROGLYPH S023
+132ED ; [.5ACF.0020.0002] # EGYPTIAN HIEROGLYPH S024
+132EE ; [.5AD0.0020.0002] # EGYPTIAN HIEROGLYPH S025
+132EF ; [.5AD1.0020.0002] # EGYPTIAN HIEROGLYPH S026
+132F0 ; [.5AD2.0020.0002] # EGYPTIAN HIEROGLYPH S026A
+132F1 ; [.5AD3.0020.0002] # EGYPTIAN HIEROGLYPH S026B
+132F2 ; [.5AD4.0020.0002] # EGYPTIAN HIEROGLYPH S027
+132F3 ; [.5AD5.0020.0002] # EGYPTIAN HIEROGLYPH S028
+132F4 ; [.5AD6.0020.0002] # EGYPTIAN HIEROGLYPH S029
+132F5 ; [.5AD7.0020.0002] # EGYPTIAN HIEROGLYPH S030
+132F6 ; [.5AD8.0020.0002] # EGYPTIAN HIEROGLYPH S031
+132F7 ; [.5AD9.0020.0002] # EGYPTIAN HIEROGLYPH S032
+132F8 ; [.5ADA.0020.0002] # EGYPTIAN HIEROGLYPH S033
+132F9 ; [.5ADB.0020.0002] # EGYPTIAN HIEROGLYPH S034
+132FA ; [.5ADC.0020.0002] # EGYPTIAN HIEROGLYPH S035
+132FB ; [.5ADD.0020.0002] # EGYPTIAN HIEROGLYPH S035A
+132FC ; [.5ADE.0020.0002] # EGYPTIAN HIEROGLYPH S036
+132FD ; [.5ADF.0020.0002] # EGYPTIAN HIEROGLYPH S037
+132FE ; [.5AE0.0020.0002] # EGYPTIAN HIEROGLYPH S038
+132FF ; [.5AE1.0020.0002] # EGYPTIAN HIEROGLYPH S039
+13300 ; [.5AE2.0020.0002] # EGYPTIAN HIEROGLYPH S040
+13301 ; [.5AE3.0020.0002] # EGYPTIAN HIEROGLYPH S041
+13302 ; [.5AE4.0020.0002] # EGYPTIAN HIEROGLYPH S042
+13303 ; [.5AE5.0020.0002] # EGYPTIAN HIEROGLYPH S043
+13304 ; [.5AE6.0020.0002] # EGYPTIAN HIEROGLYPH S044
+13305 ; [.5AE7.0020.0002] # EGYPTIAN HIEROGLYPH S045
+13306 ; [.5AE8.0020.0002] # EGYPTIAN HIEROGLYPH S046
+13307 ; [.5AE9.0020.0002] # EGYPTIAN HIEROGLYPH T001
+13308 ; [.5AEA.0020.0002] # EGYPTIAN HIEROGLYPH T002
+13309 ; [.5AEB.0020.0002] # EGYPTIAN HIEROGLYPH T003
+1330A ; [.5AEC.0020.0002] # EGYPTIAN HIEROGLYPH T003A
+1330B ; [.5AED.0020.0002] # EGYPTIAN HIEROGLYPH T004
+1330C ; [.5AEE.0020.0002] # EGYPTIAN HIEROGLYPH T005
+1330D ; [.5AEF.0020.0002] # EGYPTIAN HIEROGLYPH T006
+1330E ; [.5AF0.0020.0002] # EGYPTIAN HIEROGLYPH T007
+1330F ; [.5AF1.0020.0002] # EGYPTIAN HIEROGLYPH T007A
+13310 ; [.5AF2.0020.0002] # EGYPTIAN HIEROGLYPH T008
+13311 ; [.5AF3.0020.0002] # EGYPTIAN HIEROGLYPH T008A
+13312 ; [.5AF4.0020.0002] # EGYPTIAN HIEROGLYPH T009
+13313 ; [.5AF5.0020.0002] # EGYPTIAN HIEROGLYPH T009A
+13314 ; [.5AF6.0020.0002] # EGYPTIAN HIEROGLYPH T010
+13315 ; [.5AF7.0020.0002] # EGYPTIAN HIEROGLYPH T011
+13316 ; [.5AF8.0020.0002] # EGYPTIAN HIEROGLYPH T011A
+13317 ; [.5AF9.0020.0002] # EGYPTIAN HIEROGLYPH T012
+13318 ; [.5AFA.0020.0002] # EGYPTIAN HIEROGLYPH T013
+13319 ; [.5AFB.0020.0002] # EGYPTIAN HIEROGLYPH T014
+1331A ; [.5AFC.0020.0002] # EGYPTIAN HIEROGLYPH T015
+1331B ; [.5AFD.0020.0002] # EGYPTIAN HIEROGLYPH T016
+1331C ; [.5AFE.0020.0002] # EGYPTIAN HIEROGLYPH T016A
+1331D ; [.5AFF.0020.0002] # EGYPTIAN HIEROGLYPH T017
+1331E ; [.5B00.0020.0002] # EGYPTIAN HIEROGLYPH T018
+1331F ; [.5B01.0020.0002] # EGYPTIAN HIEROGLYPH T019
+13320 ; [.5B02.0020.0002] # EGYPTIAN HIEROGLYPH T020
+13321 ; [.5B03.0020.0002] # EGYPTIAN HIEROGLYPH T021
+13322 ; [.5B04.0020.0002] # EGYPTIAN HIEROGLYPH T022
+13323 ; [.5B05.0020.0002] # EGYPTIAN HIEROGLYPH T023
+13324 ; [.5B06.0020.0002] # EGYPTIAN HIEROGLYPH T024
+13325 ; [.5B07.0020.0002] # EGYPTIAN HIEROGLYPH T025
+13326 ; [.5B08.0020.0002] # EGYPTIAN HIEROGLYPH T026
+13327 ; [.5B09.0020.0002] # EGYPTIAN HIEROGLYPH T027
+13328 ; [.5B0A.0020.0002] # EGYPTIAN HIEROGLYPH T028
+13329 ; [.5B0B.0020.0002] # EGYPTIAN HIEROGLYPH T029
+1332A ; [.5B0C.0020.0002] # EGYPTIAN HIEROGLYPH T030
+1332B ; [.5B0D.0020.0002] # EGYPTIAN HIEROGLYPH T031
+1332C ; [.5B0E.0020.0002] # EGYPTIAN HIEROGLYPH T032
+1332D ; [.5B0F.0020.0002] # EGYPTIAN HIEROGLYPH T032A
+1332E ; [.5B10.0020.0002] # EGYPTIAN HIEROGLYPH T033
+1332F ; [.5B11.0020.0002] # EGYPTIAN HIEROGLYPH T033A
+13330 ; [.5B12.0020.0002] # EGYPTIAN HIEROGLYPH T034
+13331 ; [.5B13.0020.0002] # EGYPTIAN HIEROGLYPH T035
+13332 ; [.5B14.0020.0002] # EGYPTIAN HIEROGLYPH T036
+13333 ; [.5B15.0020.0002] # EGYPTIAN HIEROGLYPH U001
+13334 ; [.5B16.0020.0002] # EGYPTIAN HIEROGLYPH U002
+13335 ; [.5B17.0020.0002] # EGYPTIAN HIEROGLYPH U003
+13336 ; [.5B18.0020.0002] # EGYPTIAN HIEROGLYPH U004
+13337 ; [.5B19.0020.0002] # EGYPTIAN HIEROGLYPH U005
+13338 ; [.5B1A.0020.0002] # EGYPTIAN HIEROGLYPH U006
+13339 ; [.5B1B.0020.0002] # EGYPTIAN HIEROGLYPH U006A
+1333A ; [.5B1C.0020.0002] # EGYPTIAN HIEROGLYPH U006B
+1333B ; [.5B1D.0020.0002] # EGYPTIAN HIEROGLYPH U007
+1333C ; [.5B1E.0020.0002] # EGYPTIAN HIEROGLYPH U008
+1333D ; [.5B1F.0020.0002] # EGYPTIAN HIEROGLYPH U009
+1333E ; [.5B20.0020.0002] # EGYPTIAN HIEROGLYPH U010
+1333F ; [.5B21.0020.0002] # EGYPTIAN HIEROGLYPH U011
+13340 ; [.5B22.0020.0002] # EGYPTIAN HIEROGLYPH U012
+13341 ; [.5B23.0020.0002] # EGYPTIAN HIEROGLYPH U013
+13342 ; [.5B24.0020.0002] # EGYPTIAN HIEROGLYPH U014
+13343 ; [.5B25.0020.0002] # EGYPTIAN HIEROGLYPH U015
+13344 ; [.5B26.0020.0002] # EGYPTIAN HIEROGLYPH U016
+13345 ; [.5B27.0020.0002] # EGYPTIAN HIEROGLYPH U017
+13346 ; [.5B28.0020.0002] # EGYPTIAN HIEROGLYPH U018
+13347 ; [.5B29.0020.0002] # EGYPTIAN HIEROGLYPH U019
+13348 ; [.5B2A.0020.0002] # EGYPTIAN HIEROGLYPH U020
+13349 ; [.5B2B.0020.0002] # EGYPTIAN HIEROGLYPH U021
+1334A ; [.5B2C.0020.0002] # EGYPTIAN HIEROGLYPH U022
+1334B ; [.5B2D.0020.0002] # EGYPTIAN HIEROGLYPH U023
+1334C ; [.5B2E.0020.0002] # EGYPTIAN HIEROGLYPH U023A
+1334D ; [.5B2F.0020.0002] # EGYPTIAN HIEROGLYPH U024
+1334E ; [.5B30.0020.0002] # EGYPTIAN HIEROGLYPH U025
+1334F ; [.5B31.0020.0002] # EGYPTIAN HIEROGLYPH U026
+13350 ; [.5B32.0020.0002] # EGYPTIAN HIEROGLYPH U027
+13351 ; [.5B33.0020.0002] # EGYPTIAN HIEROGLYPH U028
+13352 ; [.5B34.0020.0002] # EGYPTIAN HIEROGLYPH U029
+13353 ; [.5B35.0020.0002] # EGYPTIAN HIEROGLYPH U029A
+13354 ; [.5B36.0020.0002] # EGYPTIAN HIEROGLYPH U030
+13355 ; [.5B37.0020.0002] # EGYPTIAN HIEROGLYPH U031
+13356 ; [.5B38.0020.0002] # EGYPTIAN HIEROGLYPH U032
+13357 ; [.5B39.0020.0002] # EGYPTIAN HIEROGLYPH U032A
+13358 ; [.5B3A.0020.0002] # EGYPTIAN HIEROGLYPH U033
+13359 ; [.5B3B.0020.0002] # EGYPTIAN HIEROGLYPH U034
+1335A ; [.5B3C.0020.0002] # EGYPTIAN HIEROGLYPH U035
+1335B ; [.5B3D.0020.0002] # EGYPTIAN HIEROGLYPH U036
+1335C ; [.5B3E.0020.0002] # EGYPTIAN HIEROGLYPH U037
+1335D ; [.5B3F.0020.0002] # EGYPTIAN HIEROGLYPH U038
+1335E ; [.5B40.0020.0002] # EGYPTIAN HIEROGLYPH U039
+1335F ; [.5B41.0020.0002] # EGYPTIAN HIEROGLYPH U040
+13360 ; [.5B42.0020.0002] # EGYPTIAN HIEROGLYPH U041
+13361 ; [.5B43.0020.0002] # EGYPTIAN HIEROGLYPH U042
+13362 ; [.5B44.0020.0002] # EGYPTIAN HIEROGLYPH V001
+13363 ; [.5B45.0020.0002] # EGYPTIAN HIEROGLYPH V001A
+13364 ; [.5B46.0020.0002] # EGYPTIAN HIEROGLYPH V001B
+13365 ; [.5B47.0020.0002] # EGYPTIAN HIEROGLYPH V001C
+13366 ; [.5B48.0020.0002] # EGYPTIAN HIEROGLYPH V001D
+13367 ; [.5B49.0020.0002] # EGYPTIAN HIEROGLYPH V001E
+13368 ; [.5B4A.0020.0002] # EGYPTIAN HIEROGLYPH V001F
+13369 ; [.5B4B.0020.0002] # EGYPTIAN HIEROGLYPH V001G
+1336A ; [.5B4C.0020.0002] # EGYPTIAN HIEROGLYPH V001H
+1336B ; [.5B4D.0020.0002] # EGYPTIAN HIEROGLYPH V001I
+1336C ; [.5B4E.0020.0002] # EGYPTIAN HIEROGLYPH V002
+1336D ; [.5B4F.0020.0002] # EGYPTIAN HIEROGLYPH V002A
+1336E ; [.5B50.0020.0002] # EGYPTIAN HIEROGLYPH V003
+1336F ; [.5B51.0020.0002] # EGYPTIAN HIEROGLYPH V004
+13370 ; [.5B52.0020.0002] # EGYPTIAN HIEROGLYPH V005
+13371 ; [.5B53.0020.0002] # EGYPTIAN HIEROGLYPH V006
+13372 ; [.5B54.0020.0002] # EGYPTIAN HIEROGLYPH V007
+13373 ; [.5B55.0020.0002] # EGYPTIAN HIEROGLYPH V007A
+13374 ; [.5B56.0020.0002] # EGYPTIAN HIEROGLYPH V007B
+13375 ; [.5B57.0020.0002] # EGYPTIAN HIEROGLYPH V008
+13376 ; [.5B58.0020.0002] # EGYPTIAN HIEROGLYPH V009
+13377 ; [.5B59.0020.0002] # EGYPTIAN HIEROGLYPH V010
+13378 ; [.5B5A.0020.0002] # EGYPTIAN HIEROGLYPH V011
+13379 ; [.5B5B.0020.0002] # EGYPTIAN HIEROGLYPH V011A
+1337A ; [.5B5C.0020.0002] # EGYPTIAN HIEROGLYPH V011B
+1337B ; [.5B5D.0020.0002] # EGYPTIAN HIEROGLYPH V011C
+1337C ; [.5B5E.0020.0002] # EGYPTIAN HIEROGLYPH V012
+1337D ; [.5B5F.0020.0002] # EGYPTIAN HIEROGLYPH V012A
+1337E ; [.5B60.0020.0002] # EGYPTIAN HIEROGLYPH V012B
+1337F ; [.5B61.0020.0002] # EGYPTIAN HIEROGLYPH V013
+13380 ; [.5B62.0020.0002] # EGYPTIAN HIEROGLYPH V014
+13381 ; [.5B63.0020.0002] # EGYPTIAN HIEROGLYPH V015
+13382 ; [.5B64.0020.0002] # EGYPTIAN HIEROGLYPH V016
+13383 ; [.5B65.0020.0002] # EGYPTIAN HIEROGLYPH V017
+13384 ; [.5B66.0020.0002] # EGYPTIAN HIEROGLYPH V018
+13385 ; [.5B67.0020.0002] # EGYPTIAN HIEROGLYPH V019
+13386 ; [.5B68.0020.0002] # EGYPTIAN HIEROGLYPH V020
+13387 ; [.5B69.0020.0002] # EGYPTIAN HIEROGLYPH V020A
+13388 ; [.5B6A.0020.0002] # EGYPTIAN HIEROGLYPH V020B
+13389 ; [.5B6B.0020.0002] # EGYPTIAN HIEROGLYPH V020C
+1338A ; [.5B6C.0020.0002] # EGYPTIAN HIEROGLYPH V020D
+1338B ; [.5B6D.0020.0002] # EGYPTIAN HIEROGLYPH V020E
+1338C ; [.5B6E.0020.0002] # EGYPTIAN HIEROGLYPH V020F
+1338D ; [.5B6F.0020.0002] # EGYPTIAN HIEROGLYPH V020G
+1338E ; [.5B70.0020.0002] # EGYPTIAN HIEROGLYPH V020H
+1338F ; [.5B71.0020.0002] # EGYPTIAN HIEROGLYPH V020I
+13390 ; [.5B72.0020.0002] # EGYPTIAN HIEROGLYPH V020J
+13391 ; [.5B73.0020.0002] # EGYPTIAN HIEROGLYPH V020K
+13392 ; [.5B74.0020.0002] # EGYPTIAN HIEROGLYPH V020L
+13393 ; [.5B75.0020.0002] # EGYPTIAN HIEROGLYPH V021
+13394 ; [.5B76.0020.0002] # EGYPTIAN HIEROGLYPH V022
+13395 ; [.5B77.0020.0002] # EGYPTIAN HIEROGLYPH V023
+13396 ; [.5B78.0020.0002] # EGYPTIAN HIEROGLYPH V023A
+13397 ; [.5B79.0020.0002] # EGYPTIAN HIEROGLYPH V024
+13398 ; [.5B7A.0020.0002] # EGYPTIAN HIEROGLYPH V025
+13399 ; [.5B7B.0020.0002] # EGYPTIAN HIEROGLYPH V026
+1339A ; [.5B7C.0020.0002] # EGYPTIAN HIEROGLYPH V027
+1339B ; [.5B7D.0020.0002] # EGYPTIAN HIEROGLYPH V028
+1339C ; [.5B7E.0020.0002] # EGYPTIAN HIEROGLYPH V028A
+1339D ; [.5B7F.0020.0002] # EGYPTIAN HIEROGLYPH V029
+1339E ; [.5B80.0020.0002] # EGYPTIAN HIEROGLYPH V029A
+1339F ; [.5B81.0020.0002] # EGYPTIAN HIEROGLYPH V030
+133A0 ; [.5B82.0020.0002] # EGYPTIAN HIEROGLYPH V030A
+133A1 ; [.5B83.0020.0002] # EGYPTIAN HIEROGLYPH V031
+133A2 ; [.5B84.0020.0002] # EGYPTIAN HIEROGLYPH V031A
+133A3 ; [.5B85.0020.0002] # EGYPTIAN HIEROGLYPH V032
+133A4 ; [.5B86.0020.0002] # EGYPTIAN HIEROGLYPH V033
+133A5 ; [.5B87.0020.0002] # EGYPTIAN HIEROGLYPH V033A
+133A6 ; [.5B88.0020.0002] # EGYPTIAN HIEROGLYPH V034
+133A7 ; [.5B89.0020.0002] # EGYPTIAN HIEROGLYPH V035
+133A8 ; [.5B8A.0020.0002] # EGYPTIAN HIEROGLYPH V036
+133A9 ; [.5B8B.0020.0002] # EGYPTIAN HIEROGLYPH V037
+133AA ; [.5B8C.0020.0002] # EGYPTIAN HIEROGLYPH V037A
+133AB ; [.5B8D.0020.0002] # EGYPTIAN HIEROGLYPH V038
+133AC ; [.5B8E.0020.0002] # EGYPTIAN HIEROGLYPH V039
+133AD ; [.5B8F.0020.0002] # EGYPTIAN HIEROGLYPH V040
+133AE ; [.5B90.0020.0002] # EGYPTIAN HIEROGLYPH V040A
+133AF ; [.5B91.0020.0002] # EGYPTIAN HIEROGLYPH W001
+133B0 ; [.5B92.0020.0002] # EGYPTIAN HIEROGLYPH W002
+133B1 ; [.5B93.0020.0002] # EGYPTIAN HIEROGLYPH W003
+133B2 ; [.5B94.0020.0002] # EGYPTIAN HIEROGLYPH W003A
+133B3 ; [.5B95.0020.0002] # EGYPTIAN HIEROGLYPH W004
+133B4 ; [.5B96.0020.0002] # EGYPTIAN HIEROGLYPH W005
+133B5 ; [.5B97.0020.0002] # EGYPTIAN HIEROGLYPH W006
+133B6 ; [.5B98.0020.0002] # EGYPTIAN HIEROGLYPH W007
+133B7 ; [.5B99.0020.0002] # EGYPTIAN HIEROGLYPH W008
+133B8 ; [.5B9A.0020.0002] # EGYPTIAN HIEROGLYPH W009
+133B9 ; [.5B9B.0020.0002] # EGYPTIAN HIEROGLYPH W009A
+133BA ; [.5B9C.0020.0002] # EGYPTIAN HIEROGLYPH W010
+133BB ; [.5B9D.0020.0002] # EGYPTIAN HIEROGLYPH W010A
+133BC ; [.5B9E.0020.0002] # EGYPTIAN HIEROGLYPH W011
+133BD ; [.5B9F.0020.0002] # EGYPTIAN HIEROGLYPH W012
+133BE ; [.5BA0.0020.0002] # EGYPTIAN HIEROGLYPH W013
+133BF ; [.5BA1.0020.0002] # EGYPTIAN HIEROGLYPH W014
+133C0 ; [.5BA2.0020.0002] # EGYPTIAN HIEROGLYPH W014A
+133C1 ; [.5BA3.0020.0002] # EGYPTIAN HIEROGLYPH W015
+133C2 ; [.5BA4.0020.0002] # EGYPTIAN HIEROGLYPH W016
+133C3 ; [.5BA5.0020.0002] # EGYPTIAN HIEROGLYPH W017
+133C4 ; [.5BA6.0020.0002] # EGYPTIAN HIEROGLYPH W017A
+133C5 ; [.5BA7.0020.0002] # EGYPTIAN HIEROGLYPH W018
+133C6 ; [.5BA8.0020.0002] # EGYPTIAN HIEROGLYPH W018A
+133C7 ; [.5BA9.0020.0002] # EGYPTIAN HIEROGLYPH W019
+133C8 ; [.5BAA.0020.0002] # EGYPTIAN HIEROGLYPH W020
+133C9 ; [.5BAB.0020.0002] # EGYPTIAN HIEROGLYPH W021
+133CA ; [.5BAC.0020.0002] # EGYPTIAN HIEROGLYPH W022
+133CB ; [.5BAD.0020.0002] # EGYPTIAN HIEROGLYPH W023
+133CC ; [.5BAE.0020.0002] # EGYPTIAN HIEROGLYPH W024
+133CD ; [.5BAF.0020.0002] # EGYPTIAN HIEROGLYPH W024A
+133CE ; [.5BB0.0020.0002] # EGYPTIAN HIEROGLYPH W025
+133CF ; [.5BB1.0020.0002] # EGYPTIAN HIEROGLYPH X001
+133D0 ; [.5BB2.0020.0002] # EGYPTIAN HIEROGLYPH X002
+133D1 ; [.5BB3.0020.0002] # EGYPTIAN HIEROGLYPH X003
+133D2 ; [.5BB4.0020.0002] # EGYPTIAN HIEROGLYPH X004
+133D3 ; [.5BB5.0020.0002] # EGYPTIAN HIEROGLYPH X004A
+133D4 ; [.5BB6.0020.0002] # EGYPTIAN HIEROGLYPH X004B
+133D5 ; [.5BB7.0020.0002] # EGYPTIAN HIEROGLYPH X005
+133D6 ; [.5BB8.0020.0002] # EGYPTIAN HIEROGLYPH X006
+133D7 ; [.5BB9.0020.0002] # EGYPTIAN HIEROGLYPH X006A
+133D8 ; [.5BBA.0020.0002] # EGYPTIAN HIEROGLYPH X007
+133D9 ; [.5BBB.0020.0002] # EGYPTIAN HIEROGLYPH X008
+133DA ; [.5BBC.0020.0002] # EGYPTIAN HIEROGLYPH X008A
+133DB ; [.5BBD.0020.0002] # EGYPTIAN HIEROGLYPH Y001
+133DC ; [.5BBE.0020.0002] # EGYPTIAN HIEROGLYPH Y001A
+133DD ; [.5BBF.0020.0002] # EGYPTIAN HIEROGLYPH Y002
+133DE ; [.5BC0.0020.0002] # EGYPTIAN HIEROGLYPH Y003
+133DF ; [.5BC1.0020.0002] # EGYPTIAN HIEROGLYPH Y004
+133E0 ; [.5BC2.0020.0002] # EGYPTIAN HIEROGLYPH Y005
+133E1 ; [.5BC3.0020.0002] # EGYPTIAN HIEROGLYPH Y006
+133E2 ; [.5BC4.0020.0002] # EGYPTIAN HIEROGLYPH Y007
+133E3 ; [.5BC5.0020.0002] # EGYPTIAN HIEROGLYPH Y008
+133E4 ; [.5BC6.0020.0002] # EGYPTIAN HIEROGLYPH Z001
+133E5 ; [.5BC7.0020.0002] # EGYPTIAN HIEROGLYPH Z002
+133E6 ; [.5BC8.0020.0002] # EGYPTIAN HIEROGLYPH Z002A
+133E7 ; [.5BC9.0020.0002] # EGYPTIAN HIEROGLYPH Z002B
+133E8 ; [.5BCA.0020.0002] # EGYPTIAN HIEROGLYPH Z002C
+133E9 ; [.5BCB.0020.0002] # EGYPTIAN HIEROGLYPH Z002D
+133EA ; [.5BCC.0020.0002] # EGYPTIAN HIEROGLYPH Z003
+133EB ; [.5BCD.0020.0002] # EGYPTIAN HIEROGLYPH Z003A
+133EC ; [.5BCE.0020.0002] # EGYPTIAN HIEROGLYPH Z003B
+133ED ; [.5BCF.0020.0002] # EGYPTIAN HIEROGLYPH Z004
+133EE ; [.5BD0.0020.0002] # EGYPTIAN HIEROGLYPH Z004A
+133EF ; [.5BD1.0020.0002] # EGYPTIAN HIEROGLYPH Z005
+133F0 ; [.5BD2.0020.0002] # EGYPTIAN HIEROGLYPH Z005A
+133F1 ; [.5BD3.0020.0002] # EGYPTIAN HIEROGLYPH Z006
+133F2 ; [.5BD4.0020.0002] # EGYPTIAN HIEROGLYPH Z007
+133F3 ; [.5BD5.0020.0002] # EGYPTIAN HIEROGLYPH Z008
+133F4 ; [.5BD6.0020.0002] # EGYPTIAN HIEROGLYPH Z009
+133F5 ; [.5BD7.0020.0002] # EGYPTIAN HIEROGLYPH Z010
+133F6 ; [.5BD8.0020.0002] # EGYPTIAN HIEROGLYPH Z011
+133F7 ; [.5BD9.0020.0002] # EGYPTIAN HIEROGLYPH Z012
+133F8 ; [.5BDA.0020.0002] # EGYPTIAN HIEROGLYPH Z013
+133F9 ; [.5BDB.0020.0002] # EGYPTIAN HIEROGLYPH Z014
+133FA ; [.5BDC.0020.0002] # EGYPTIAN HIEROGLYPH Z015
+133FB ; [.5BDD.0020.0002] # EGYPTIAN HIEROGLYPH Z015A
+133FC ; [.5BDE.0020.0002] # EGYPTIAN HIEROGLYPH Z015B
+133FD ; [.5BDF.0020.0002] # EGYPTIAN HIEROGLYPH Z015C
+133FE ; [.5BE0.0020.0002] # EGYPTIAN HIEROGLYPH Z015D
+133FF ; [.5BE1.0020.0002] # EGYPTIAN HIEROGLYPH Z015E
+13400 ; [.5BE2.0020.0002] # EGYPTIAN HIEROGLYPH Z015F
+13401 ; [.5BE3.0020.0002] # EGYPTIAN HIEROGLYPH Z015G
+13402 ; [.5BE4.0020.0002] # EGYPTIAN HIEROGLYPH Z015H
+13403 ; [.5BE5.0020.0002] # EGYPTIAN HIEROGLYPH Z015I
+13404 ; [.5BE6.0020.0002] # EGYPTIAN HIEROGLYPH Z016
+13405 ; [.5BE7.0020.0002] # EGYPTIAN HIEROGLYPH Z016A
+13406 ; [.5BE8.0020.0002] # EGYPTIAN HIEROGLYPH Z016B
+13407 ; [.5BE9.0020.0002] # EGYPTIAN HIEROGLYPH Z016C
+13408 ; [.5BEA.0020.0002] # EGYPTIAN HIEROGLYPH Z016D
+13409 ; [.5BEB.0020.0002] # EGYPTIAN HIEROGLYPH Z016E
+1340A ; [.5BEC.0020.0002] # EGYPTIAN HIEROGLYPH Z016F
+1340B ; [.5BED.0020.0002] # EGYPTIAN HIEROGLYPH Z016G
+1340C ; [.5BEE.0020.0002] # EGYPTIAN HIEROGLYPH Z016H
+1340D ; [.5BEF.0020.0002] # EGYPTIAN HIEROGLYPH AA001
+1340E ; [.5BF0.0020.0002] # EGYPTIAN HIEROGLYPH AA002
+1340F ; [.5BF1.0020.0002] # EGYPTIAN HIEROGLYPH AA003
+13410 ; [.5BF2.0020.0002] # EGYPTIAN HIEROGLYPH AA004
+13411 ; [.5BF3.0020.0002] # EGYPTIAN HIEROGLYPH AA005
+13412 ; [.5BF4.0020.0002] # EGYPTIAN HIEROGLYPH AA006
+13413 ; [.5BF5.0020.0002] # EGYPTIAN HIEROGLYPH AA007
+13414 ; [.5BF6.0020.0002] # EGYPTIAN HIEROGLYPH AA007A
+13415 ; [.5BF7.0020.0002] # EGYPTIAN HIEROGLYPH AA007B
+13416 ; [.5BF8.0020.0002] # EGYPTIAN HIEROGLYPH AA008
+13417 ; [.5BF9.0020.0002] # EGYPTIAN HIEROGLYPH AA009
+13418 ; [.5BFA.0020.0002] # EGYPTIAN HIEROGLYPH AA010
+13419 ; [.5BFB.0020.0002] # EGYPTIAN HIEROGLYPH AA011
+1341A ; [.5BFC.0020.0002] # EGYPTIAN HIEROGLYPH AA012
+1341B ; [.5BFD.0020.0002] # EGYPTIAN HIEROGLYPH AA013
+1341C ; [.5BFE.0020.0002] # EGYPTIAN HIEROGLYPH AA014
+1341D ; [.5BFF.0020.0002] # EGYPTIAN HIEROGLYPH AA015
+1341E ; [.5C00.0020.0002] # EGYPTIAN HIEROGLYPH AA016
+1341F ; [.5C01.0020.0002] # EGYPTIAN HIEROGLYPH AA017
+13420 ; [.5C02.0020.0002] # EGYPTIAN HIEROGLYPH AA018
+13421 ; [.5C03.0020.0002] # EGYPTIAN HIEROGLYPH AA019
+13422 ; [.5C04.0020.0002] # EGYPTIAN HIEROGLYPH AA020
+13423 ; [.5C05.0020.0002] # EGYPTIAN HIEROGLYPH AA021
+13424 ; [.5C06.0020.0002] # EGYPTIAN HIEROGLYPH AA022
+13425 ; [.5C07.0020.0002] # EGYPTIAN HIEROGLYPH AA023
+13426 ; [.5C08.0020.0002] # EGYPTIAN HIEROGLYPH AA024
+13427 ; [.5C09.0020.0002] # EGYPTIAN HIEROGLYPH AA025
+13428 ; [.5C0A.0020.0002] # EGYPTIAN HIEROGLYPH AA026
+13429 ; [.5C0B.0020.0002] # EGYPTIAN HIEROGLYPH AA027
+1342A ; [.5C0C.0020.0002] # EGYPTIAN HIEROGLYPH AA028
+1342B ; [.5C0D.0020.0002] # EGYPTIAN HIEROGLYPH AA029
+1342C ; [.5C0E.0020.0002] # EGYPTIAN HIEROGLYPH AA030
+1342D ; [.5C0F.0020.0002] # EGYPTIAN HIEROGLYPH AA031
+1342E ; [.5C10.0020.0002] # EGYPTIAN HIEROGLYPH AA032
+109A0 ; [.5C11.0020.0002] # MEROITIC CURSIVE LETTER A
+10980 ; [.5C11.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER A
+109A1 ; [.5C12.0020.0002] # MEROITIC CURSIVE LETTER E
+10981 ; [.5C12.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER E
+109A2 ; [.5C13.0020.0002] # MEROITIC CURSIVE LETTER I
+10982 ; [.5C13.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER I
+109A3 ; [.5C14.0020.0002] # MEROITIC CURSIVE LETTER O
+10983 ; [.5C14.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER O
+109A4 ; [.5C15.0020.0002] # MEROITIC CURSIVE LETTER YA
+10984 ; [.5C15.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER YA
+109A5 ; [.5C16.0020.0002] # MEROITIC CURSIVE LETTER WA
+10985 ; [.5C16.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER WA
+109A6 ; [.5C17.0020.0002] # MEROITIC CURSIVE LETTER BA
+10986 ; [.5C17.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER BA
+10987 ; [.5C17.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER BA-2
+109A7 ; [.5C18.0020.0002] # MEROITIC CURSIVE LETTER PA
+10988 ; [.5C18.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER PA
+109A8 ; [.5C19.0020.0002] # MEROITIC CURSIVE LETTER MA
+10989 ; [.5C19.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER MA
+109A9 ; [.5C1A.0020.0002] # MEROITIC CURSIVE LETTER NA
+1098A ; [.5C1A.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER NA
+1098B ; [.5C1A.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER NA-2
+109AA ; [.5C1B.0020.0002] # MEROITIC CURSIVE LETTER NE
+1098C ; [.5C1B.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER NE
+1098D ; [.5C1B.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER NE-2
+109AB ; [.5C1C.0020.0002] # MEROITIC CURSIVE LETTER RA
+1098E ; [.5C1C.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER RA
+1098F ; [.5C1C.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER RA-2
+109AC ; [.5C1D.0020.0002] # MEROITIC CURSIVE LETTER LA
+10990 ; [.5C1D.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER LA
+109AD ; [.5C1E.0020.0002] # MEROITIC CURSIVE LETTER KHA
+10991 ; [.5C1E.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER KHA
+109AE ; [.5C1F.0020.0002] # MEROITIC CURSIVE LETTER HHA
+10992 ; [.5C1F.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER HHA
+109AF ; [.5C20.0020.0002] # MEROITIC CURSIVE LETTER SA
+109B0 ; [.5C20.0020.0004][.0000.0118.0004] # MEROITIC CURSIVE LETTER ARCHAIC SA
+10993 ; [.5C20.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER SA
+10994 ; [.5C20.0020.0004][.0000.011A.0004] # MEROITIC HIEROGLYPHIC LETTER SA-2
+109B1 ; [.5C21.0020.0002] # MEROITIC CURSIVE LETTER SE
+10995 ; [.5C21.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER SE
+109B2 ; [.5C22.0020.0002] # MEROITIC CURSIVE LETTER KA
+10996 ; [.5C22.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER KA
+109B3 ; [.5C23.0020.0002] # MEROITIC CURSIVE LETTER QA
+10997 ; [.5C23.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER QA
+109B4 ; [.5C24.0020.0002] # MEROITIC CURSIVE LETTER TA
+10998 ; [.5C24.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER TA
+10999 ; [.5C24.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER TA-2
+109B5 ; [.5C25.0020.0002] # MEROITIC CURSIVE LETTER TE
+1099A ; [.5C25.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER TE
+1099B ; [.5C25.0020.0004][.0000.0119.0004] # MEROITIC HIEROGLYPHIC LETTER TE-2
+109B6 ; [.5C26.0020.0002] # MEROITIC CURSIVE LETTER TO
+1099C ; [.5C26.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER TO
+109B7 ; [.5C27.0020.0002] # MEROITIC CURSIVE LETTER DA
+1099D ; [.5C27.0020.0004][.0000.0118.0004] # MEROITIC HIEROGLYPHIC LETTER DA
+109BE ; [.5C28.0020.0002] # MEROITIC CURSIVE LOGOGRAM RMT
+109BF ; [.5C29.0020.0002] # MEROITIC CURSIVE LOGOGRAM IMN
+1099E ; [.5C2A.0020.0002] # MEROITIC HIEROGLYPHIC SYMBOL VIDJ
+1099F ; [.5C2B.0020.0002] # MEROITIC HIEROGLYPHIC SYMBOL VIDJ-2
+14400 ; [.5C2C.0020.0002] # ANATOLIAN HIEROGLYPH A001
+14401 ; [.5C2D.0020.0002] # ANATOLIAN HIEROGLYPH A002
+14402 ; [.5C2E.0020.0002] # ANATOLIAN HIEROGLYPH A003
+14403 ; [.5C2F.0020.0002] # ANATOLIAN HIEROGLYPH A004
+14404 ; [.5C30.0020.0002] # ANATOLIAN HIEROGLYPH A005
+14405 ; [.5C31.0020.0002] # ANATOLIAN HIEROGLYPH A006
+14406 ; [.5C32.0020.0002] # ANATOLIAN HIEROGLYPH A007
+14407 ; [.5C33.0020.0002] # ANATOLIAN HIEROGLYPH A008
+14408 ; [.5C34.0020.0002] # ANATOLIAN HIEROGLYPH A009
+14409 ; [.5C35.0020.0002] # ANATOLIAN HIEROGLYPH A010
+1440A ; [.5C36.0020.0002] # ANATOLIAN HIEROGLYPH A010A
+1440B ; [.5C37.0020.0002] # ANATOLIAN HIEROGLYPH A011
+1440C ; [.5C38.0020.0002] # ANATOLIAN HIEROGLYPH A012
+1440D ; [.5C39.0020.0002] # ANATOLIAN HIEROGLYPH A013
+1440E ; [.5C3A.0020.0002] # ANATOLIAN HIEROGLYPH A014
+1440F ; [.5C3B.0020.0002] # ANATOLIAN HIEROGLYPH A015
+14410 ; [.5C3C.0020.0002] # ANATOLIAN HIEROGLYPH A016
+14411 ; [.5C3D.0020.0002] # ANATOLIAN HIEROGLYPH A017
+14412 ; [.5C3E.0020.0002] # ANATOLIAN HIEROGLYPH A018
+14413 ; [.5C3F.0020.0002] # ANATOLIAN HIEROGLYPH A019
+14414 ; [.5C40.0020.0002] # ANATOLIAN HIEROGLYPH A020
+14415 ; [.5C41.0020.0002] # ANATOLIAN HIEROGLYPH A021
+14416 ; [.5C42.0020.0002] # ANATOLIAN HIEROGLYPH A022
+14417 ; [.5C43.0020.0002] # ANATOLIAN HIEROGLYPH A023
+14418 ; [.5C44.0020.0002] # ANATOLIAN HIEROGLYPH A024
+14419 ; [.5C45.0020.0002] # ANATOLIAN HIEROGLYPH A025
+1441A ; [.5C46.0020.0002] # ANATOLIAN HIEROGLYPH A026
+1441B ; [.5C47.0020.0002] # ANATOLIAN HIEROGLYPH A026A
+1441C ; [.5C48.0020.0002] # ANATOLIAN HIEROGLYPH A027
+1441D ; [.5C49.0020.0002] # ANATOLIAN HIEROGLYPH A028
+1441E ; [.5C4A.0020.0002] # ANATOLIAN HIEROGLYPH A029
+1441F ; [.5C4B.0020.0002] # ANATOLIAN HIEROGLYPH A030
+14420 ; [.5C4C.0020.0002] # ANATOLIAN HIEROGLYPH A031
+14421 ; [.5C4D.0020.0002] # ANATOLIAN HIEROGLYPH A032
+14422 ; [.5C4E.0020.0002] # ANATOLIAN HIEROGLYPH A033
+14423 ; [.5C4F.0020.0002] # ANATOLIAN HIEROGLYPH A034
+14424 ; [.5C50.0020.0002] # ANATOLIAN HIEROGLYPH A035
+14425 ; [.5C51.0020.0002] # ANATOLIAN HIEROGLYPH A036
+14426 ; [.5C52.0020.0002] # ANATOLIAN HIEROGLYPH A037
+14427 ; [.5C53.0020.0002] # ANATOLIAN HIEROGLYPH A038
+14428 ; [.5C54.0020.0002] # ANATOLIAN HIEROGLYPH A039
+14429 ; [.5C55.0020.0002] # ANATOLIAN HIEROGLYPH A039A
+1442A ; [.5C56.0020.0002] # ANATOLIAN HIEROGLYPH A040
+1442B ; [.5C57.0020.0002] # ANATOLIAN HIEROGLYPH A041
+1442C ; [.5C58.0020.0002] # ANATOLIAN HIEROGLYPH A041A
+1442D ; [.5C59.0020.0002] # ANATOLIAN HIEROGLYPH A042
+1442E ; [.5C5A.0020.0002] # ANATOLIAN HIEROGLYPH A043
+1442F ; [.5C5B.0020.0002] # ANATOLIAN HIEROGLYPH A044
+14430 ; [.5C5C.0020.0002] # ANATOLIAN HIEROGLYPH A045
+14431 ; [.5C5D.0020.0002] # ANATOLIAN HIEROGLYPH A045A
+14432 ; [.5C5E.0020.0002] # ANATOLIAN HIEROGLYPH A046
+14433 ; [.5C5F.0020.0002] # ANATOLIAN HIEROGLYPH A046A
+14434 ; [.5C60.0020.0002] # ANATOLIAN HIEROGLYPH A046B
+14435 ; [.5C61.0020.0002] # ANATOLIAN HIEROGLYPH A047
+14436 ; [.5C62.0020.0002] # ANATOLIAN HIEROGLYPH A048
+14437 ; [.5C63.0020.0002] # ANATOLIAN HIEROGLYPH A049
+14438 ; [.5C64.0020.0002] # ANATOLIAN HIEROGLYPH A050
+14439 ; [.5C65.0020.0002] # ANATOLIAN HIEROGLYPH A051
+1443A ; [.5C66.0020.0002] # ANATOLIAN HIEROGLYPH A052
+1443B ; [.5C67.0020.0002] # ANATOLIAN HIEROGLYPH A053
+1443C ; [.5C68.0020.0002] # ANATOLIAN HIEROGLYPH A054
+1443D ; [.5C69.0020.0002] # ANATOLIAN HIEROGLYPH A055
+1443E ; [.5C6A.0020.0002] # ANATOLIAN HIEROGLYPH A056
+1443F ; [.5C6B.0020.0002] # ANATOLIAN HIEROGLYPH A057
+14440 ; [.5C6C.0020.0002] # ANATOLIAN HIEROGLYPH A058
+14441 ; [.5C6D.0020.0002] # ANATOLIAN HIEROGLYPH A059
+14442 ; [.5C6E.0020.0002] # ANATOLIAN HIEROGLYPH A060
+14443 ; [.5C6F.0020.0002] # ANATOLIAN HIEROGLYPH A061
+14444 ; [.5C70.0020.0002] # ANATOLIAN HIEROGLYPH A062
+14445 ; [.5C71.0020.0002] # ANATOLIAN HIEROGLYPH A063
+14446 ; [.5C72.0020.0002] # ANATOLIAN HIEROGLYPH A064
+14447 ; [.5C73.0020.0002] # ANATOLIAN HIEROGLYPH A065
+14448 ; [.5C74.0020.0002] # ANATOLIAN HIEROGLYPH A066
+14449 ; [.5C75.0020.0002] # ANATOLIAN HIEROGLYPH A066A
+1444A ; [.5C76.0020.0002] # ANATOLIAN HIEROGLYPH A066B
+1444B ; [.5C77.0020.0002] # ANATOLIAN HIEROGLYPH A066C
+1444C ; [.5C78.0020.0002] # ANATOLIAN HIEROGLYPH A067
+1444D ; [.5C79.0020.0002] # ANATOLIAN HIEROGLYPH A068
+1444E ; [.5C7A.0020.0002] # ANATOLIAN HIEROGLYPH A069
+1444F ; [.5C7B.0020.0002] # ANATOLIAN HIEROGLYPH A070
+14450 ; [.5C7C.0020.0002] # ANATOLIAN HIEROGLYPH A071
+14451 ; [.5C7D.0020.0002] # ANATOLIAN HIEROGLYPH A072
+14452 ; [.5C7E.0020.0002] # ANATOLIAN HIEROGLYPH A073
+14453 ; [.5C7F.0020.0002] # ANATOLIAN HIEROGLYPH A074
+14454 ; [.5C80.0020.0002] # ANATOLIAN HIEROGLYPH A075
+14455 ; [.5C81.0020.0002] # ANATOLIAN HIEROGLYPH A076
+14456 ; [.5C82.0020.0002] # ANATOLIAN HIEROGLYPH A077
+14457 ; [.5C83.0020.0002] # ANATOLIAN HIEROGLYPH A078
+14458 ; [.5C84.0020.0002] # ANATOLIAN HIEROGLYPH A079
+14459 ; [.5C85.0020.0002] # ANATOLIAN HIEROGLYPH A080
+1445A ; [.5C86.0020.0002] # ANATOLIAN HIEROGLYPH A081
+1445B ; [.5C87.0020.0002] # ANATOLIAN HIEROGLYPH A082
+1445C ; [.5C88.0020.0002] # ANATOLIAN HIEROGLYPH A083
+1445D ; [.5C89.0020.0002] # ANATOLIAN HIEROGLYPH A084
+1445E ; [.5C8A.0020.0002] # ANATOLIAN HIEROGLYPH A085
+1445F ; [.5C8B.0020.0002] # ANATOLIAN HIEROGLYPH A086
+14460 ; [.5C8C.0020.0002] # ANATOLIAN HIEROGLYPH A087
+14461 ; [.5C8D.0020.0002] # ANATOLIAN HIEROGLYPH A088
+14462 ; [.5C8E.0020.0002] # ANATOLIAN HIEROGLYPH A089
+14463 ; [.5C8F.0020.0002] # ANATOLIAN HIEROGLYPH A090
+14464 ; [.5C90.0020.0002] # ANATOLIAN HIEROGLYPH A091
+14465 ; [.5C91.0020.0002] # ANATOLIAN HIEROGLYPH A092
+14466 ; [.5C92.0020.0002] # ANATOLIAN HIEROGLYPH A093
+14467 ; [.5C93.0020.0002] # ANATOLIAN HIEROGLYPH A094
+14468 ; [.5C94.0020.0002] # ANATOLIAN HIEROGLYPH A095
+14469 ; [.5C95.0020.0002] # ANATOLIAN HIEROGLYPH A096
+1446A ; [.5C96.0020.0002] # ANATOLIAN HIEROGLYPH A097
+1446B ; [.5C97.0020.0002] # ANATOLIAN HIEROGLYPH A097A
+1446C ; [.5C98.0020.0002] # ANATOLIAN HIEROGLYPH A098
+1446D ; [.5C99.0020.0002] # ANATOLIAN HIEROGLYPH A098A
+1446E ; [.5C9A.0020.0002] # ANATOLIAN HIEROGLYPH A099
+1446F ; [.5C9B.0020.0002] # ANATOLIAN HIEROGLYPH A100
+14470 ; [.5C9C.0020.0002] # ANATOLIAN HIEROGLYPH A100A
+14471 ; [.5C9D.0020.0002] # ANATOLIAN HIEROGLYPH A101
+14472 ; [.5C9E.0020.0002] # ANATOLIAN HIEROGLYPH A101A
+14473 ; [.5C9F.0020.0002] # ANATOLIAN HIEROGLYPH A102
+14474 ; [.5CA0.0020.0002] # ANATOLIAN HIEROGLYPH A102A
+14475 ; [.5CA1.0020.0002] # ANATOLIAN HIEROGLYPH A103
+14476 ; [.5CA2.0020.0002] # ANATOLIAN HIEROGLYPH A104
+14477 ; [.5CA3.0020.0002] # ANATOLIAN HIEROGLYPH A104A
+14478 ; [.5CA4.0020.0002] # ANATOLIAN HIEROGLYPH A104B
+14479 ; [.5CA5.0020.0002] # ANATOLIAN HIEROGLYPH A104C
+1447A ; [.5CA6.0020.0002] # ANATOLIAN HIEROGLYPH A105
+1447B ; [.5CA7.0020.0002] # ANATOLIAN HIEROGLYPH A105A
+1447C ; [.5CA8.0020.0002] # ANATOLIAN HIEROGLYPH A105B
+1447D ; [.5CA9.0020.0002] # ANATOLIAN HIEROGLYPH A106
+1447E ; [.5CAA.0020.0002] # ANATOLIAN HIEROGLYPH A107
+1447F ; [.5CAB.0020.0002] # ANATOLIAN HIEROGLYPH A107A
+14480 ; [.5CAC.0020.0002] # ANATOLIAN HIEROGLYPH A107B
+14481 ; [.5CAD.0020.0002] # ANATOLIAN HIEROGLYPH A107C
+14482 ; [.5CAE.0020.0002] # ANATOLIAN HIEROGLYPH A108
+14483 ; [.5CAF.0020.0002] # ANATOLIAN HIEROGLYPH A109
+14484 ; [.5CB0.0020.0002] # ANATOLIAN HIEROGLYPH A110
+14485 ; [.5CB1.0020.0002] # ANATOLIAN HIEROGLYPH A110A
+14486 ; [.5CB2.0020.0002] # ANATOLIAN HIEROGLYPH A110B
+14487 ; [.5CB3.0020.0002] # ANATOLIAN HIEROGLYPH A111
+14488 ; [.5CB4.0020.0002] # ANATOLIAN HIEROGLYPH A112
+14489 ; [.5CB5.0020.0002] # ANATOLIAN HIEROGLYPH A113
+1448A ; [.5CB6.0020.0002] # ANATOLIAN HIEROGLYPH A114
+1448B ; [.5CB7.0020.0002] # ANATOLIAN HIEROGLYPH A115
+1448C ; [.5CB8.0020.0002] # ANATOLIAN HIEROGLYPH A115A
+1448D ; [.5CB9.0020.0002] # ANATOLIAN HIEROGLYPH A116
+1448E ; [.5CBA.0020.0002] # ANATOLIAN HIEROGLYPH A117
+1448F ; [.5CBB.0020.0002] # ANATOLIAN HIEROGLYPH A118
+14490 ; [.5CBC.0020.0002] # ANATOLIAN HIEROGLYPH A119
+14491 ; [.5CBD.0020.0002] # ANATOLIAN HIEROGLYPH A120
+14492 ; [.5CBE.0020.0002] # ANATOLIAN HIEROGLYPH A121
+14493 ; [.5CBF.0020.0002] # ANATOLIAN HIEROGLYPH A122
+14494 ; [.5CC0.0020.0002] # ANATOLIAN HIEROGLYPH A123
+14495 ; [.5CC1.0020.0002] # ANATOLIAN HIEROGLYPH A124
+14496 ; [.5CC2.0020.0002] # ANATOLIAN HIEROGLYPH A125
+14497 ; [.5CC3.0020.0002] # ANATOLIAN HIEROGLYPH A125A
+14498 ; [.5CC4.0020.0002] # ANATOLIAN HIEROGLYPH A126
+14499 ; [.5CC5.0020.0002] # ANATOLIAN HIEROGLYPH A127
+1449A ; [.5CC6.0020.0002] # ANATOLIAN HIEROGLYPH A128
+1449B ; [.5CC7.0020.0002] # ANATOLIAN HIEROGLYPH A129
+1449C ; [.5CC8.0020.0002] # ANATOLIAN HIEROGLYPH A130
+1449D ; [.5CC9.0020.0002] # ANATOLIAN HIEROGLYPH A131
+1449E ; [.5CCA.0020.0002] # ANATOLIAN HIEROGLYPH A132
+1449F ; [.5CCB.0020.0002] # ANATOLIAN HIEROGLYPH A133
+144A0 ; [.5CCC.0020.0002] # ANATOLIAN HIEROGLYPH A134
+144A1 ; [.5CCD.0020.0002] # ANATOLIAN HIEROGLYPH A135
+144A2 ; [.5CCE.0020.0002] # ANATOLIAN HIEROGLYPH A135A
+144A3 ; [.5CCF.0020.0002] # ANATOLIAN HIEROGLYPH A136
+144A4 ; [.5CD0.0020.0002] # ANATOLIAN HIEROGLYPH A137
+144A5 ; [.5CD1.0020.0002] # ANATOLIAN HIEROGLYPH A138
+144A6 ; [.5CD2.0020.0002] # ANATOLIAN HIEROGLYPH A139
+144A7 ; [.5CD3.0020.0002] # ANATOLIAN HIEROGLYPH A140
+144A8 ; [.5CD4.0020.0002] # ANATOLIAN HIEROGLYPH A141
+144A9 ; [.5CD5.0020.0002] # ANATOLIAN HIEROGLYPH A142
+144AA ; [.5CD6.0020.0002] # ANATOLIAN HIEROGLYPH A143
+144AB ; [.5CD7.0020.0002] # ANATOLIAN HIEROGLYPH A144
+144AC ; [.5CD8.0020.0002] # ANATOLIAN HIEROGLYPH A145
+144AD ; [.5CD9.0020.0002] # ANATOLIAN HIEROGLYPH A146
+144AE ; [.5CDA.0020.0002] # ANATOLIAN HIEROGLYPH A147
+144AF ; [.5CDB.0020.0002] # ANATOLIAN HIEROGLYPH A148
+144B0 ; [.5CDC.0020.0002] # ANATOLIAN HIEROGLYPH A149
+144B1 ; [.5CDD.0020.0002] # ANATOLIAN HIEROGLYPH A150
+144B2 ; [.5CDE.0020.0002] # ANATOLIAN HIEROGLYPH A151
+144B3 ; [.5CDF.0020.0002] # ANATOLIAN HIEROGLYPH A152
+144B4 ; [.5CE0.0020.0002] # ANATOLIAN HIEROGLYPH A153
+144B5 ; [.5CE1.0020.0002] # ANATOLIAN HIEROGLYPH A154
+144B6 ; [.5CE2.0020.0002] # ANATOLIAN HIEROGLYPH A155
+144B7 ; [.5CE3.0020.0002] # ANATOLIAN HIEROGLYPH A156
+144B8 ; [.5CE4.0020.0002] # ANATOLIAN HIEROGLYPH A157
+144B9 ; [.5CE5.0020.0002] # ANATOLIAN HIEROGLYPH A158
+144BA ; [.5CE6.0020.0002] # ANATOLIAN HIEROGLYPH A159
+144BB ; [.5CE7.0020.0002] # ANATOLIAN HIEROGLYPH A160
+144BC ; [.5CE8.0020.0002] # ANATOLIAN HIEROGLYPH A161
+144BD ; [.5CE9.0020.0002] # ANATOLIAN HIEROGLYPH A162
+144BE ; [.5CEA.0020.0002] # ANATOLIAN HIEROGLYPH A163
+144BF ; [.5CEB.0020.0002] # ANATOLIAN HIEROGLYPH A164
+144C0 ; [.5CEC.0020.0002] # ANATOLIAN HIEROGLYPH A165
+144C1 ; [.5CED.0020.0002] # ANATOLIAN HIEROGLYPH A166
+144C2 ; [.5CEE.0020.0002] # ANATOLIAN HIEROGLYPH A167
+144C3 ; [.5CEF.0020.0002] # ANATOLIAN HIEROGLYPH A168
+144C4 ; [.5CF0.0020.0002] # ANATOLIAN HIEROGLYPH A169
+144C5 ; [.5CF1.0020.0002] # ANATOLIAN HIEROGLYPH A170
+144C6 ; [.5CF2.0020.0002] # ANATOLIAN HIEROGLYPH A171
+144C7 ; [.5CF3.0020.0002] # ANATOLIAN HIEROGLYPH A172
+144C8 ; [.5CF4.0020.0002] # ANATOLIAN HIEROGLYPH A173
+144C9 ; [.5CF5.0020.0002] # ANATOLIAN HIEROGLYPH A174
+144CA ; [.5CF6.0020.0002] # ANATOLIAN HIEROGLYPH A175
+144CB ; [.5CF7.0020.0002] # ANATOLIAN HIEROGLYPH A176
+144CC ; [.5CF8.0020.0002] # ANATOLIAN HIEROGLYPH A177
+144CD ; [.5CF9.0020.0002] # ANATOLIAN HIEROGLYPH A178
+144CE ; [.5CFA.0020.0002] # ANATOLIAN HIEROGLYPH A179
+144CF ; [.5CFB.0020.0002] # ANATOLIAN HIEROGLYPH A180
+144D0 ; [.5CFC.0020.0002] # ANATOLIAN HIEROGLYPH A181
+144D1 ; [.5CFD.0020.0002] # ANATOLIAN HIEROGLYPH A182
+144D2 ; [.5CFE.0020.0002] # ANATOLIAN HIEROGLYPH A183
+144D3 ; [.5CFF.0020.0002] # ANATOLIAN HIEROGLYPH A184
+144D4 ; [.5D00.0020.0002] # ANATOLIAN HIEROGLYPH A185
+144D5 ; [.5D01.0020.0002] # ANATOLIAN HIEROGLYPH A186
+144D6 ; [.5D02.0020.0002] # ANATOLIAN HIEROGLYPH A187
+144D7 ; [.5D03.0020.0002] # ANATOLIAN HIEROGLYPH A188
+144D8 ; [.5D04.0020.0002] # ANATOLIAN HIEROGLYPH A189
+144D9 ; [.5D05.0020.0002] # ANATOLIAN HIEROGLYPH A190
+144DA ; [.5D06.0020.0002] # ANATOLIAN HIEROGLYPH A191
+144DB ; [.5D07.0020.0002] # ANATOLIAN HIEROGLYPH A192
+144DC ; [.5D08.0020.0002] # ANATOLIAN HIEROGLYPH A193
+144DD ; [.5D09.0020.0002] # ANATOLIAN HIEROGLYPH A194
+144DE ; [.5D0A.0020.0002] # ANATOLIAN HIEROGLYPH A195
+144DF ; [.5D0B.0020.0002] # ANATOLIAN HIEROGLYPH A196
+144E0 ; [.5D0C.0020.0002] # ANATOLIAN HIEROGLYPH A197
+144E1 ; [.5D0D.0020.0002] # ANATOLIAN HIEROGLYPH A198
+144E2 ; [.5D0E.0020.0002] # ANATOLIAN HIEROGLYPH A199
+144E3 ; [.5D0F.0020.0002] # ANATOLIAN HIEROGLYPH A200
+144E4 ; [.5D10.0020.0002] # ANATOLIAN HIEROGLYPH A201
+144E5 ; [.5D11.0020.0002] # ANATOLIAN HIEROGLYPH A202
+144E6 ; [.5D12.0020.0002] # ANATOLIAN HIEROGLYPH A202A
+144E7 ; [.5D13.0020.0002] # ANATOLIAN HIEROGLYPH A202B
+144E8 ; [.5D14.0020.0002] # ANATOLIAN HIEROGLYPH A203
+144E9 ; [.5D15.0020.0002] # ANATOLIAN HIEROGLYPH A204
+144EA ; [.5D16.0020.0002] # ANATOLIAN HIEROGLYPH A205
+144EB ; [.5D17.0020.0002] # ANATOLIAN HIEROGLYPH A206
+144EC ; [.5D18.0020.0002] # ANATOLIAN HIEROGLYPH A207
+144ED ; [.5D19.0020.0002] # ANATOLIAN HIEROGLYPH A207A
+144EE ; [.5D1A.0020.0002] # ANATOLIAN HIEROGLYPH A208
+144EF ; [.5D1B.0020.0002] # ANATOLIAN HIEROGLYPH A209
+144F0 ; [.5D1C.0020.0002] # ANATOLIAN HIEROGLYPH A209A
+144F1 ; [.5D1D.0020.0002] # ANATOLIAN HIEROGLYPH A210
+144F2 ; [.5D1E.0020.0002] # ANATOLIAN HIEROGLYPH A211
+144F3 ; [.5D1F.0020.0002] # ANATOLIAN HIEROGLYPH A212
+144F4 ; [.5D20.0020.0002] # ANATOLIAN HIEROGLYPH A213
+144F5 ; [.5D21.0020.0002] # ANATOLIAN HIEROGLYPH A214
+144F6 ; [.5D22.0020.0002] # ANATOLIAN HIEROGLYPH A215
+144F7 ; [.5D23.0020.0002] # ANATOLIAN HIEROGLYPH A215A
+144F8 ; [.5D24.0020.0002] # ANATOLIAN HIEROGLYPH A216
+144F9 ; [.5D25.0020.0002] # ANATOLIAN HIEROGLYPH A216A
+144FA ; [.5D26.0020.0002] # ANATOLIAN HIEROGLYPH A217
+144FB ; [.5D27.0020.0002] # ANATOLIAN HIEROGLYPH A218
+144FC ; [.5D28.0020.0002] # ANATOLIAN HIEROGLYPH A219
+144FD ; [.5D29.0020.0002] # ANATOLIAN HIEROGLYPH A220
+144FE ; [.5D2A.0020.0002] # ANATOLIAN HIEROGLYPH A221
+144FF ; [.5D2B.0020.0002] # ANATOLIAN HIEROGLYPH A222
+14500 ; [.5D2C.0020.0002] # ANATOLIAN HIEROGLYPH A223
+14501 ; [.5D2D.0020.0002] # ANATOLIAN HIEROGLYPH A224
+14502 ; [.5D2E.0020.0002] # ANATOLIAN HIEROGLYPH A225
+14503 ; [.5D2F.0020.0002] # ANATOLIAN HIEROGLYPH A226
+14504 ; [.5D30.0020.0002] # ANATOLIAN HIEROGLYPH A227
+14505 ; [.5D31.0020.0002] # ANATOLIAN HIEROGLYPH A227A
+14506 ; [.5D32.0020.0002] # ANATOLIAN HIEROGLYPH A228
+14507 ; [.5D33.0020.0002] # ANATOLIAN HIEROGLYPH A229
+14508 ; [.5D34.0020.0002] # ANATOLIAN HIEROGLYPH A230
+14509 ; [.5D35.0020.0002] # ANATOLIAN HIEROGLYPH A231
+1450A ; [.5D36.0020.0002] # ANATOLIAN HIEROGLYPH A232
+1450B ; [.5D37.0020.0002] # ANATOLIAN HIEROGLYPH A233
+1450C ; [.5D38.0020.0002] # ANATOLIAN HIEROGLYPH A234
+1450D ; [.5D39.0020.0002] # ANATOLIAN HIEROGLYPH A235
+1450E ; [.5D3A.0020.0002] # ANATOLIAN HIEROGLYPH A236
+1450F ; [.5D3B.0020.0002] # ANATOLIAN HIEROGLYPH A237
+14510 ; [.5D3C.0020.0002] # ANATOLIAN HIEROGLYPH A238
+14511 ; [.5D3D.0020.0002] # ANATOLIAN HIEROGLYPH A239
+14512 ; [.5D3E.0020.0002] # ANATOLIAN HIEROGLYPH A240
+14513 ; [.5D3F.0020.0002] # ANATOLIAN HIEROGLYPH A241
+14514 ; [.5D40.0020.0002] # ANATOLIAN HIEROGLYPH A242
+14515 ; [.5D41.0020.0002] # ANATOLIAN HIEROGLYPH A243
+14516 ; [.5D42.0020.0002] # ANATOLIAN HIEROGLYPH A244
+14517 ; [.5D43.0020.0002] # ANATOLIAN HIEROGLYPH A245
+14518 ; [.5D44.0020.0002] # ANATOLIAN HIEROGLYPH A246
+14519 ; [.5D45.0020.0002] # ANATOLIAN HIEROGLYPH A247
+1451A ; [.5D46.0020.0002] # ANATOLIAN HIEROGLYPH A248
+1451B ; [.5D47.0020.0002] # ANATOLIAN HIEROGLYPH A249
+1451C ; [.5D48.0020.0002] # ANATOLIAN HIEROGLYPH A250
+1451D ; [.5D49.0020.0002] # ANATOLIAN HIEROGLYPH A251
+1451E ; [.5D4A.0020.0002] # ANATOLIAN HIEROGLYPH A252
+1451F ; [.5D4B.0020.0002] # ANATOLIAN HIEROGLYPH A253
+14520 ; [.5D4C.0020.0002] # ANATOLIAN HIEROGLYPH A254
+14521 ; [.5D4D.0020.0002] # ANATOLIAN HIEROGLYPH A255
+14522 ; [.5D4E.0020.0002] # ANATOLIAN HIEROGLYPH A256
+14523 ; [.5D4F.0020.0002] # ANATOLIAN HIEROGLYPH A257
+14524 ; [.5D50.0020.0002] # ANATOLIAN HIEROGLYPH A258
+14525 ; [.5D51.0020.0002] # ANATOLIAN HIEROGLYPH A259
+14526 ; [.5D52.0020.0002] # ANATOLIAN HIEROGLYPH A260
+14527 ; [.5D53.0020.0002] # ANATOLIAN HIEROGLYPH A261
+14528 ; [.5D54.0020.0002] # ANATOLIAN HIEROGLYPH A262
+14529 ; [.5D55.0020.0002] # ANATOLIAN HIEROGLYPH A263
+1452A ; [.5D56.0020.0002] # ANATOLIAN HIEROGLYPH A264
+1452B ; [.5D57.0020.0002] # ANATOLIAN HIEROGLYPH A265
+1452C ; [.5D58.0020.0002] # ANATOLIAN HIEROGLYPH A266
+1452D ; [.5D59.0020.0002] # ANATOLIAN HIEROGLYPH A267
+1452E ; [.5D5A.0020.0002] # ANATOLIAN HIEROGLYPH A267A
+1452F ; [.5D5B.0020.0002] # ANATOLIAN HIEROGLYPH A268
+14530 ; [.5D5C.0020.0002] # ANATOLIAN HIEROGLYPH A269
+14531 ; [.5D5D.0020.0002] # ANATOLIAN HIEROGLYPH A270
+14532 ; [.5D5E.0020.0002] # ANATOLIAN HIEROGLYPH A271
+14533 ; [.5D5F.0020.0002] # ANATOLIAN HIEROGLYPH A272
+14534 ; [.5D60.0020.0002] # ANATOLIAN HIEROGLYPH A273
+14535 ; [.5D61.0020.0002] # ANATOLIAN HIEROGLYPH A274
+14536 ; [.5D62.0020.0002] # ANATOLIAN HIEROGLYPH A275
+14537 ; [.5D63.0020.0002] # ANATOLIAN HIEROGLYPH A276
+14538 ; [.5D64.0020.0002] # ANATOLIAN HIEROGLYPH A277
+14539 ; [.5D65.0020.0002] # ANATOLIAN HIEROGLYPH A278
+1453A ; [.5D66.0020.0002] # ANATOLIAN HIEROGLYPH A279
+1453B ; [.5D67.0020.0002] # ANATOLIAN HIEROGLYPH A280
+1453C ; [.5D68.0020.0002] # ANATOLIAN HIEROGLYPH A281
+1453D ; [.5D69.0020.0002] # ANATOLIAN HIEROGLYPH A282
+1453E ; [.5D6A.0020.0002] # ANATOLIAN HIEROGLYPH A283
+1453F ; [.5D6B.0020.0002] # ANATOLIAN HIEROGLYPH A284
+14540 ; [.5D6C.0020.0002] # ANATOLIAN HIEROGLYPH A285
+14541 ; [.5D6D.0020.0002] # ANATOLIAN HIEROGLYPH A286
+14542 ; [.5D6E.0020.0002] # ANATOLIAN HIEROGLYPH A287
+14543 ; [.5D6F.0020.0002] # ANATOLIAN HIEROGLYPH A288
+14544 ; [.5D70.0020.0002] # ANATOLIAN HIEROGLYPH A289
+14545 ; [.5D71.0020.0002] # ANATOLIAN HIEROGLYPH A289A
+14546 ; [.5D72.0020.0002] # ANATOLIAN HIEROGLYPH A290
+14547 ; [.5D73.0020.0002] # ANATOLIAN HIEROGLYPH A291
+14548 ; [.5D74.0020.0002] # ANATOLIAN HIEROGLYPH A292
+14549 ; [.5D75.0020.0002] # ANATOLIAN HIEROGLYPH A293
+1454A ; [.5D76.0020.0002] # ANATOLIAN HIEROGLYPH A294
+1454B ; [.5D77.0020.0002] # ANATOLIAN HIEROGLYPH A294A
+1454C ; [.5D78.0020.0002] # ANATOLIAN HIEROGLYPH A295
+1454D ; [.5D79.0020.0002] # ANATOLIAN HIEROGLYPH A296
+1454E ; [.5D7A.0020.0002] # ANATOLIAN HIEROGLYPH A297
+1454F ; [.5D7B.0020.0002] # ANATOLIAN HIEROGLYPH A298
+14550 ; [.5D7C.0020.0002] # ANATOLIAN HIEROGLYPH A299
+14551 ; [.5D7D.0020.0002] # ANATOLIAN HIEROGLYPH A299A
+14552 ; [.5D7E.0020.0002] # ANATOLIAN HIEROGLYPH A300
+14553 ; [.5D7F.0020.0002] # ANATOLIAN HIEROGLYPH A301
+14554 ; [.5D80.0020.0002] # ANATOLIAN HIEROGLYPH A302
+14555 ; [.5D81.0020.0002] # ANATOLIAN HIEROGLYPH A303
+14556 ; [.5D82.0020.0002] # ANATOLIAN HIEROGLYPH A304
+14557 ; [.5D83.0020.0002] # ANATOLIAN HIEROGLYPH A305
+14558 ; [.5D84.0020.0002] # ANATOLIAN HIEROGLYPH A306
+14559 ; [.5D85.0020.0002] # ANATOLIAN HIEROGLYPH A307
+1455A ; [.5D86.0020.0002] # ANATOLIAN HIEROGLYPH A308
+1455B ; [.5D87.0020.0002] # ANATOLIAN HIEROGLYPH A309
+1455C ; [.5D88.0020.0002] # ANATOLIAN HIEROGLYPH A309A
+1455D ; [.5D89.0020.0002] # ANATOLIAN HIEROGLYPH A310
+1455E ; [.5D8A.0020.0002] # ANATOLIAN HIEROGLYPH A311
+1455F ; [.5D8B.0020.0002] # ANATOLIAN HIEROGLYPH A312
+14560 ; [.5D8C.0020.0002] # ANATOLIAN HIEROGLYPH A313
+14561 ; [.5D8D.0020.0002] # ANATOLIAN HIEROGLYPH A314
+14562 ; [.5D8E.0020.0002] # ANATOLIAN HIEROGLYPH A315
+14563 ; [.5D8F.0020.0002] # ANATOLIAN HIEROGLYPH A316
+14564 ; [.5D90.0020.0002] # ANATOLIAN HIEROGLYPH A317
+14565 ; [.5D91.0020.0002] # ANATOLIAN HIEROGLYPH A318
+14566 ; [.5D92.0020.0002] # ANATOLIAN HIEROGLYPH A319
+14567 ; [.5D93.0020.0002] # ANATOLIAN HIEROGLYPH A320
+14568 ; [.5D94.0020.0002] # ANATOLIAN HIEROGLYPH A321
+14569 ; [.5D95.0020.0002] # ANATOLIAN HIEROGLYPH A322
+1456A ; [.5D96.0020.0002] # ANATOLIAN HIEROGLYPH A323
+1456B ; [.5D97.0020.0002] # ANATOLIAN HIEROGLYPH A324
+1456C ; [.5D98.0020.0002] # ANATOLIAN HIEROGLYPH A325
+1456D ; [.5D99.0020.0002] # ANATOLIAN HIEROGLYPH A326
+1456E ; [.5D9A.0020.0002] # ANATOLIAN HIEROGLYPH A327
+1456F ; [.5D9B.0020.0002] # ANATOLIAN HIEROGLYPH A328
+14570 ; [.5D9C.0020.0002] # ANATOLIAN HIEROGLYPH A329
+14571 ; [.5D9D.0020.0002] # ANATOLIAN HIEROGLYPH A329A
+14572 ; [.5D9E.0020.0002] # ANATOLIAN HIEROGLYPH A330
+14573 ; [.5D9F.0020.0002] # ANATOLIAN HIEROGLYPH A331
+14574 ; [.5DA0.0020.0002] # ANATOLIAN HIEROGLYPH A332A
+14575 ; [.5DA1.0020.0002] # ANATOLIAN HIEROGLYPH A332B
+14576 ; [.5DA2.0020.0002] # ANATOLIAN HIEROGLYPH A332C
+14577 ; [.5DA3.0020.0002] # ANATOLIAN HIEROGLYPH A333
+14578 ; [.5DA4.0020.0002] # ANATOLIAN HIEROGLYPH A334
+14579 ; [.5DA5.0020.0002] # ANATOLIAN HIEROGLYPH A335
+1457A ; [.5DA6.0020.0002] # ANATOLIAN HIEROGLYPH A336
+1457B ; [.5DA7.0020.0002] # ANATOLIAN HIEROGLYPH A336A
+1457C ; [.5DA8.0020.0002] # ANATOLIAN HIEROGLYPH A336B
+1457D ; [.5DA9.0020.0002] # ANATOLIAN HIEROGLYPH A336C
+1457E ; [.5DAA.0020.0002] # ANATOLIAN HIEROGLYPH A337
+1457F ; [.5DAB.0020.0002] # ANATOLIAN HIEROGLYPH A338
+14580 ; [.5DAC.0020.0002] # ANATOLIAN HIEROGLYPH A339
+14581 ; [.5DAD.0020.0002] # ANATOLIAN HIEROGLYPH A340
+14582 ; [.5DAE.0020.0002] # ANATOLIAN HIEROGLYPH A341
+14583 ; [.5DAF.0020.0002] # ANATOLIAN HIEROGLYPH A342
+14584 ; [.5DB0.0020.0002] # ANATOLIAN HIEROGLYPH A343
+14585 ; [.5DB1.0020.0002] # ANATOLIAN HIEROGLYPH A344
+14586 ; [.5DB2.0020.0002] # ANATOLIAN HIEROGLYPH A345
+14587 ; [.5DB3.0020.0002] # ANATOLIAN HIEROGLYPH A346
+14588 ; [.5DB4.0020.0002] # ANATOLIAN HIEROGLYPH A347
+14589 ; [.5DB5.0020.0002] # ANATOLIAN HIEROGLYPH A348
+1458A ; [.5DB6.0020.0002] # ANATOLIAN HIEROGLYPH A349
+1458B ; [.5DB7.0020.0002] # ANATOLIAN HIEROGLYPH A350
+1458C ; [.5DB8.0020.0002] # ANATOLIAN HIEROGLYPH A351
+1458D ; [.5DB9.0020.0002] # ANATOLIAN HIEROGLYPH A352
+1458E ; [.5DBA.0020.0002] # ANATOLIAN HIEROGLYPH A353
+1458F ; [.5DBB.0020.0002] # ANATOLIAN HIEROGLYPH A354
+14590 ; [.5DBC.0020.0002] # ANATOLIAN HIEROGLYPH A355
+14591 ; [.5DBD.0020.0002] # ANATOLIAN HIEROGLYPH A356
+14592 ; [.5DBE.0020.0002] # ANATOLIAN HIEROGLYPH A357
+14593 ; [.5DBF.0020.0002] # ANATOLIAN HIEROGLYPH A358
+14594 ; [.5DC0.0020.0002] # ANATOLIAN HIEROGLYPH A359
+14595 ; [.5DC1.0020.0002] # ANATOLIAN HIEROGLYPH A359A
+14596 ; [.5DC2.0020.0002] # ANATOLIAN HIEROGLYPH A360
+14597 ; [.5DC3.0020.0002] # ANATOLIAN HIEROGLYPH A361
+14598 ; [.5DC4.0020.0002] # ANATOLIAN HIEROGLYPH A362
+14599 ; [.5DC5.0020.0002] # ANATOLIAN HIEROGLYPH A363
+1459A ; [.5DC6.0020.0002] # ANATOLIAN HIEROGLYPH A364
+1459B ; [.5DC7.0020.0002] # ANATOLIAN HIEROGLYPH A364A
+1459C ; [.5DC8.0020.0002] # ANATOLIAN HIEROGLYPH A365
+1459D ; [.5DC9.0020.0002] # ANATOLIAN HIEROGLYPH A366
+1459E ; [.5DCA.0020.0002] # ANATOLIAN HIEROGLYPH A367
+1459F ; [.5DCB.0020.0002] # ANATOLIAN HIEROGLYPH A368
+145A0 ; [.5DCC.0020.0002] # ANATOLIAN HIEROGLYPH A368A
+145A1 ; [.5DCD.0020.0002] # ANATOLIAN HIEROGLYPH A369
+145A2 ; [.5DCE.0020.0002] # ANATOLIAN HIEROGLYPH A370
+145A3 ; [.5DCF.0020.0002] # ANATOLIAN HIEROGLYPH A371
+145A4 ; [.5DD0.0020.0002] # ANATOLIAN HIEROGLYPH A371A
+145A5 ; [.5DD1.0020.0002] # ANATOLIAN HIEROGLYPH A372
+145A6 ; [.5DD2.0020.0002] # ANATOLIAN HIEROGLYPH A373
+145A7 ; [.5DD3.0020.0002] # ANATOLIAN HIEROGLYPH A374
+145A8 ; [.5DD4.0020.0002] # ANATOLIAN HIEROGLYPH A375
+145A9 ; [.5DD5.0020.0002] # ANATOLIAN HIEROGLYPH A376
+145AA ; [.5DD6.0020.0002] # ANATOLIAN HIEROGLYPH A377
+145AB ; [.5DD7.0020.0002] # ANATOLIAN HIEROGLYPH A378
+145AC ; [.5DD8.0020.0002] # ANATOLIAN HIEROGLYPH A379
+145AD ; [.5DD9.0020.0002] # ANATOLIAN HIEROGLYPH A380
+145AE ; [.5DDA.0020.0002] # ANATOLIAN HIEROGLYPH A381
+145AF ; [.5DDB.0020.0002] # ANATOLIAN HIEROGLYPH A381A
+145B0 ; [.5DDC.0020.0002] # ANATOLIAN HIEROGLYPH A382
+145B1 ; [.5DDD.0020.0002] # ANATOLIAN HIEROGLYPH A383 RA OR RI
+145B2 ; [.5DDE.0020.0002] # ANATOLIAN HIEROGLYPH A383A
+145B3 ; [.5DDF.0020.0002] # ANATOLIAN HIEROGLYPH A384
+145B4 ; [.5DE0.0020.0002] # ANATOLIAN HIEROGLYPH A385
+145B5 ; [.5DE1.0020.0002] # ANATOLIAN HIEROGLYPH A386
+145B6 ; [.5DE2.0020.0002] # ANATOLIAN HIEROGLYPH A386A
+145B7 ; [.5DE3.0020.0002] # ANATOLIAN HIEROGLYPH A387
+145B8 ; [.5DE4.0020.0002] # ANATOLIAN HIEROGLYPH A388
+145B9 ; [.5DE5.0020.0002] # ANATOLIAN HIEROGLYPH A389
+145BA ; [.5DE6.0020.0002] # ANATOLIAN HIEROGLYPH A390
+145BB ; [.5DE7.0020.0002] # ANATOLIAN HIEROGLYPH A391
+145BC ; [.5DE8.0020.0002] # ANATOLIAN HIEROGLYPH A392
+145BD ; [.5DE9.0020.0002] # ANATOLIAN HIEROGLYPH A393 EIGHT
+145BE ; [.5DEA.0020.0002] # ANATOLIAN HIEROGLYPH A394
+145BF ; [.5DEB.0020.0002] # ANATOLIAN HIEROGLYPH A395
+145C0 ; [.5DEC.0020.0002] # ANATOLIAN HIEROGLYPH A396
+145C1 ; [.5DED.0020.0002] # ANATOLIAN HIEROGLYPH A397
+145C2 ; [.5DEE.0020.0002] # ANATOLIAN HIEROGLYPH A398
+145C3 ; [.5DEF.0020.0002] # ANATOLIAN HIEROGLYPH A399
+145C4 ; [.5DF0.0020.0002] # ANATOLIAN HIEROGLYPH A400
+145C5 ; [.5DF1.0020.0002] # ANATOLIAN HIEROGLYPH A401
+145C6 ; [.5DF2.0020.0002] # ANATOLIAN HIEROGLYPH A402
+145C7 ; [.5DF3.0020.0002] # ANATOLIAN HIEROGLYPH A403
+145C8 ; [.5DF4.0020.0002] # ANATOLIAN HIEROGLYPH A404
+145C9 ; [.5DF5.0020.0002] # ANATOLIAN HIEROGLYPH A405
+145CA ; [.5DF6.0020.0002] # ANATOLIAN HIEROGLYPH A406
+145CB ; [.5DF7.0020.0002] # ANATOLIAN HIEROGLYPH A407
+145CC ; [.5DF8.0020.0002] # ANATOLIAN HIEROGLYPH A408
+145CD ; [.5DF9.0020.0002] # ANATOLIAN HIEROGLYPH A409
+145CE ; [.5DFA.0020.0002] # ANATOLIAN HIEROGLYPH A410 BEGIN LOGOGRAM MARK
+145CF ; [.5DFB.0020.0002] # ANATOLIAN HIEROGLYPH A410A END LOGOGRAM MARK
+145D0 ; [.5DFC.0020.0002] # ANATOLIAN HIEROGLYPH A411
+145D1 ; [.5DFD.0020.0002] # ANATOLIAN HIEROGLYPH A412
+145D2 ; [.5DFE.0020.0002] # ANATOLIAN HIEROGLYPH A413
+145D3 ; [.5DFF.0020.0002] # ANATOLIAN HIEROGLYPH A414
+145D4 ; [.5E00.0020.0002] # ANATOLIAN HIEROGLYPH A415
+145D5 ; [.5E01.0020.0002] # ANATOLIAN HIEROGLYPH A416
+145D6 ; [.5E02.0020.0002] # ANATOLIAN HIEROGLYPH A417
+145D7 ; [.5E03.0020.0002] # ANATOLIAN HIEROGLYPH A418
+145D8 ; [.5E04.0020.0002] # ANATOLIAN HIEROGLYPH A419
+145D9 ; [.5E05.0020.0002] # ANATOLIAN HIEROGLYPH A420
+145DA ; [.5E06.0020.0002] # ANATOLIAN HIEROGLYPH A421
+145DB ; [.5E07.0020.0002] # ANATOLIAN HIEROGLYPH A422
+145DC ; [.5E08.0020.0002] # ANATOLIAN HIEROGLYPH A423
+145DD ; [.5E09.0020.0002] # ANATOLIAN HIEROGLYPH A424
+145DE ; [.5E0A.0020.0002] # ANATOLIAN HIEROGLYPH A425
+145DF ; [.5E0B.0020.0002] # ANATOLIAN HIEROGLYPH A426
+145E0 ; [.5E0C.0020.0002] # ANATOLIAN HIEROGLYPH A427
+145E1 ; [.5E0D.0020.0002] # ANATOLIAN HIEROGLYPH A428
+145E2 ; [.5E0E.0020.0002] # ANATOLIAN HIEROGLYPH A429
+145E3 ; [.5E0F.0020.0002] # ANATOLIAN HIEROGLYPH A430
+145E4 ; [.5E10.0020.0002] # ANATOLIAN HIEROGLYPH A431
+145E5 ; [.5E11.0020.0002] # ANATOLIAN HIEROGLYPH A432
+145E6 ; [.5E12.0020.0002] # ANATOLIAN HIEROGLYPH A433
+145E7 ; [.5E13.0020.0002] # ANATOLIAN HIEROGLYPH A434
+145E8 ; [.5E14.0020.0002] # ANATOLIAN HIEROGLYPH A435
+145E9 ; [.5E15.0020.0002] # ANATOLIAN HIEROGLYPH A436
+145EA ; [.5E16.0020.0002] # ANATOLIAN HIEROGLYPH A437
+145EB ; [.5E17.0020.0002] # ANATOLIAN HIEROGLYPH A438
+145EC ; [.5E18.0020.0002] # ANATOLIAN HIEROGLYPH A439
+145ED ; [.5E19.0020.0002] # ANATOLIAN HIEROGLYPH A440
+145EE ; [.5E1A.0020.0002] # ANATOLIAN HIEROGLYPH A441
+145EF ; [.5E1B.0020.0002] # ANATOLIAN HIEROGLYPH A442
+145F0 ; [.5E1C.0020.0002] # ANATOLIAN HIEROGLYPH A443
+145F1 ; [.5E1D.0020.0002] # ANATOLIAN HIEROGLYPH A444
+145F2 ; [.5E1E.0020.0002] # ANATOLIAN HIEROGLYPH A445
+145F3 ; [.5E1F.0020.0002] # ANATOLIAN HIEROGLYPH A446
+145F4 ; [.5E20.0020.0002] # ANATOLIAN HIEROGLYPH A447
+145F5 ; [.5E21.0020.0002] # ANATOLIAN HIEROGLYPH A448
+145F6 ; [.5E22.0020.0002] # ANATOLIAN HIEROGLYPH A449
+145F7 ; [.5E23.0020.0002] # ANATOLIAN HIEROGLYPH A450
+145F8 ; [.5E24.0020.0002] # ANATOLIAN HIEROGLYPH A450A
+145F9 ; [.5E25.0020.0002] # ANATOLIAN HIEROGLYPH A451
+145FA ; [.5E26.0020.0002] # ANATOLIAN HIEROGLYPH A452
+145FB ; [.5E27.0020.0002] # ANATOLIAN HIEROGLYPH A453
+145FC ; [.5E28.0020.0002] # ANATOLIAN HIEROGLYPH A454
+145FD ; [.5E29.0020.0002] # ANATOLIAN HIEROGLYPH A455
+145FE ; [.5E2A.0020.0002] # ANATOLIAN HIEROGLYPH A456
+145FF ; [.5E2B.0020.0002] # ANATOLIAN HIEROGLYPH A457
+14600 ; [.5E2C.0020.0002] # ANATOLIAN HIEROGLYPH A457A
+14601 ; [.5E2D.0020.0002] # ANATOLIAN HIEROGLYPH A458
+14602 ; [.5E2E.0020.0002] # ANATOLIAN HIEROGLYPH A459
+14603 ; [.5E2F.0020.0002] # ANATOLIAN HIEROGLYPH A460
+14604 ; [.5E30.0020.0002] # ANATOLIAN HIEROGLYPH A461
+14605 ; [.5E31.0020.0002] # ANATOLIAN HIEROGLYPH A462
+14606 ; [.5E32.0020.0002] # ANATOLIAN HIEROGLYPH A463
+14607 ; [.5E33.0020.0002] # ANATOLIAN HIEROGLYPH A464
+14608 ; [.5E34.0020.0002] # ANATOLIAN HIEROGLYPH A465
+14609 ; [.5E35.0020.0002] # ANATOLIAN HIEROGLYPH A466
+1460A ; [.5E36.0020.0002] # ANATOLIAN HIEROGLYPH A467
+1460B ; [.5E37.0020.0002] # ANATOLIAN HIEROGLYPH A468
+1460C ; [.5E38.0020.0002] # ANATOLIAN HIEROGLYPH A469
+1460D ; [.5E39.0020.0002] # ANATOLIAN HIEROGLYPH A470
+1460E ; [.5E3A.0020.0002] # ANATOLIAN HIEROGLYPH A471
+1460F ; [.5E3B.0020.0002] # ANATOLIAN HIEROGLYPH A472
+14610 ; [.5E3C.0020.0002] # ANATOLIAN HIEROGLYPH A473
+14611 ; [.5E3D.0020.0002] # ANATOLIAN HIEROGLYPH A474
+14612 ; [.5E3E.0020.0002] # ANATOLIAN HIEROGLYPH A475
+14613 ; [.5E3F.0020.0002] # ANATOLIAN HIEROGLYPH A476
+14614 ; [.5E40.0020.0002] # ANATOLIAN HIEROGLYPH A477
+14615 ; [.5E41.0020.0002] # ANATOLIAN HIEROGLYPH A478
+14616 ; [.5E42.0020.0002] # ANATOLIAN HIEROGLYPH A479
+14617 ; [.5E43.0020.0002] # ANATOLIAN HIEROGLYPH A480
+14618 ; [.5E44.0020.0002] # ANATOLIAN HIEROGLYPH A481
+14619 ; [.5E45.0020.0002] # ANATOLIAN HIEROGLYPH A482
+1461A ; [.5E46.0020.0002] # ANATOLIAN HIEROGLYPH A483
+1461B ; [.5E47.0020.0002] # ANATOLIAN HIEROGLYPH A484
+1461C ; [.5E48.0020.0002] # ANATOLIAN HIEROGLYPH A485
+1461D ; [.5E49.0020.0002] # ANATOLIAN HIEROGLYPH A486
+1461E ; [.5E4A.0020.0002] # ANATOLIAN HIEROGLYPH A487
+1461F ; [.5E4B.0020.0002] # ANATOLIAN HIEROGLYPH A488
+14620 ; [.5E4C.0020.0002] # ANATOLIAN HIEROGLYPH A489
+14621 ; [.5E4D.0020.0002] # ANATOLIAN HIEROGLYPH A490
+14622 ; [.5E4E.0020.0002] # ANATOLIAN HIEROGLYPH A491
+14623 ; [.5E4F.0020.0002] # ANATOLIAN HIEROGLYPH A492
+14624 ; [.5E50.0020.0002] # ANATOLIAN HIEROGLYPH A493
+14625 ; [.5E51.0020.0002] # ANATOLIAN HIEROGLYPH A494
+14626 ; [.5E52.0020.0002] # ANATOLIAN HIEROGLYPH A495
+14627 ; [.5E53.0020.0002] # ANATOLIAN HIEROGLYPH A496
+14628 ; [.5E54.0020.0002] # ANATOLIAN HIEROGLYPH A497
+14629 ; [.5E55.0020.0002] # ANATOLIAN HIEROGLYPH A501
+1462A ; [.5E56.0020.0002] # ANATOLIAN HIEROGLYPH A502
+1462B ; [.5E57.0020.0002] # ANATOLIAN HIEROGLYPH A503
+1462C ; [.5E58.0020.0002] # ANATOLIAN HIEROGLYPH A504
+1462D ; [.5E59.0020.0002] # ANATOLIAN HIEROGLYPH A505
+1462E ; [.5E5A.0020.0002] # ANATOLIAN HIEROGLYPH A506
+1462F ; [.5E5B.0020.0002] # ANATOLIAN HIEROGLYPH A507
+14630 ; [.5E5C.0020.0002] # ANATOLIAN HIEROGLYPH A508
+14631 ; [.5E5D.0020.0002] # ANATOLIAN HIEROGLYPH A509
+14632 ; [.5E5E.0020.0002] # ANATOLIAN HIEROGLYPH A510
+14633 ; [.5E5F.0020.0002] # ANATOLIAN HIEROGLYPH A511
+14634 ; [.5E60.0020.0002] # ANATOLIAN HIEROGLYPH A512
+14635 ; [.5E61.0020.0002] # ANATOLIAN HIEROGLYPH A513
+14636 ; [.5E62.0020.0002] # ANATOLIAN HIEROGLYPH A514
+14637 ; [.5E63.0020.0002] # ANATOLIAN HIEROGLYPH A515
+14638 ; [.5E64.0020.0002] # ANATOLIAN HIEROGLYPH A516
+14639 ; [.5E65.0020.0002] # ANATOLIAN HIEROGLYPH A517
+1463A ; [.5E66.0020.0002] # ANATOLIAN HIEROGLYPH A518
+1463B ; [.5E67.0020.0002] # ANATOLIAN HIEROGLYPH A519
+1463C ; [.5E68.0020.0002] # ANATOLIAN HIEROGLYPH A520
+1463D ; [.5E69.0020.0002] # ANATOLIAN HIEROGLYPH A521
+1463E ; [.5E6A.0020.0002] # ANATOLIAN HIEROGLYPH A522
+1463F ; [.5E6B.0020.0002] # ANATOLIAN HIEROGLYPH A523
+14640 ; [.5E6C.0020.0002] # ANATOLIAN HIEROGLYPH A524
+14641 ; [.5E6D.0020.0002] # ANATOLIAN HIEROGLYPH A525
+14642 ; [.5E6E.0020.0002] # ANATOLIAN HIEROGLYPH A526
+14643 ; [.5E6F.0020.0002] # ANATOLIAN HIEROGLYPH A527
+14644 ; [.5E70.0020.0002] # ANATOLIAN HIEROGLYPH A528
+14645 ; [.5E71.0020.0002] # ANATOLIAN HIEROGLYPH A529
+14646 ; [.5E72.0020.0002] # ANATOLIAN HIEROGLYPH A530
+2F00 ; [.FB40.0020.0004][.CE00.0000.0000] # KANGXI RADICAL ONE
+3220 ; [*0334.0020.0004][.FB40.0020.0004][.CE00.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH ONE
+3280 ; [.FB40.0020.0006][.CE00.0000.0000] # CIRCLED IDEOGRAPH ONE
+3192 ; [.FB40.0020.0014][.CE00.0000.0000] # IDEOGRAPHIC ANNOTATION ONE MARK
+1F229 ; [.FB40.0020.001C][.CE00.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-4E00
+319C ; [.FB40.0020.0014][.CE01.0000.0000] # IDEOGRAPHIC ANNOTATION FOURTH MARK
+3226 ; [*0334.0020.0004][.FB40.0020.0004][.CE03.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH SEVEN
+3286 ; [.FB40.0020.0006][.CE03.0000.0000] # CIRCLED IDEOGRAPH SEVEN
+3222 ; [*0334.0020.0004][.FB40.0020.0004][.CE09.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH THREE
+1F241 ; [*039E.0020.0004][.FB40.0020.0004][.CE09.0000.0000][*039F.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09
+3282 ; [.FB40.0020.0006][.CE09.0000.0000] # CIRCLED IDEOGRAPH THREE
+3194 ; [.FB40.0020.0014][.CE09.0000.0000] # IDEOGRAPHIC ANNOTATION THREE MARK
+1F22A ; [.FB40.0020.001C][.CE09.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-4E09
+32A4 ; [.FB40.0020.0006][.CE0A.0000.0000] # CIRCLED IDEOGRAPH HIGH
+3196 ; [.FB40.0020.0014][.CE0A.0000.0000] # IDEOGRAPHIC ANNOTATION TOP MARK
+32A6 ; [.FB40.0020.0006][.CE0B.0000.0000] # CIRCLED IDEOGRAPH LOW
+3198 ; [.FB40.0020.0014][.CE0B.0000.0000] # IDEOGRAPHIC ANNOTATION BOTTOM MARK
+F967 ; [.FB40.0020.0002][.CE0D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F967
+319B ; [.FB40.0020.0014][.CE19.0000.0000] # IDEOGRAPHIC ANNOTATION THIRD MARK
+FA70 ; [.FB40.0020.0002][.CE26.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA70
+2F01 ; [.FB40.0020.0004][.CE28.0000.0000] # KANGXI RADICAL LINE
+2EA6 ; [.FB40.0020.0004][.CE2C.0000.0000] # CJK RADICAL SIMPLIFIED HALF TREE TRUNK
+32A5 ; [.FB40.0020.0006][.CE2D.0000.0000] # CIRCLED IDEOGRAPH CENTRE
+3197 ; [.FB40.0020.0014][.CE2D.0000.0000] # IDEOGRAPHIC ANNOTATION MIDDLE MARK
+1F22D ; [.FB40.0020.001C][.CE2D.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-4E2D
+F905 ; [.FB40.0020.0002][.CE32.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F905
+2F02 ; [.FB40.0020.0004][.CE36.0000.0000] # KANGXI RADICAL DOT
+2E80 ; [.FB40.0020.0004][.CE36.0000.0000][.0000.0118.0004] # CJK RADICAL REPEAT
+2F801 ; [.FB40.0020.0002][.CE38.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F801
+F95E ; [.FB40.0020.0002][.CE39.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F95E
+2F800 ; [.FB40.0020.0002][.CE3D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F800
+2F03 ; [.FB40.0020.0004][.CE3F.0000.0000] # KANGXI RADICAL SLASH
+2F802 ; [.FB40.0020.0002][.CE41.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F802
+2F04 ; [.FB40.0020.0004][.CE59.0000.0000] # KANGXI RADICAL SECOND
+319A ; [.FB40.0020.0014][.CE59.0000.0000] # IDEOGRAPHIC ANNOTATION SECOND MARK
+2E84 ; [.FB40.0020.0004][.CE59.0000.0000][.0000.0118.0004] # CJK RADICAL SECOND THREE
+2E83 ; [.FB40.0020.0004][.CE5A.0000.0000] # CJK RADICAL SECOND TWO
+2E82 ; [.FB40.0020.0004][.CE5B.0000.0000] # CJK RADICAL SECOND ONE
+3228 ; [*0334.0020.0004][.FB40.0020.0004][.CE5D.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH NINE
+3288 ; [.FB40.0020.0006][.CE5D.0000.0000] # CIRCLED IDEOGRAPH NINE
+F91B ; [.FB40.0020.0002][.CE82.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F91B
+2F05 ; [.FB40.0020.0004][.CE85.0000.0000] # KANGXI RADICAL HOOK
+F9BA ; [.FB40.0020.0002][.CE86.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9BA
+2F06 ; [.FB40.0020.0004][.CE8C.0000.0000] # KANGXI RADICAL TWO
+3221 ; [*0334.0020.0004][.FB40.0020.0004][.CE8C.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH TWO
+1F242 ; [*039E.0020.0004][.FB40.0020.0004][.CE8C.0000.0000][*039F.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C
+3281 ; [.FB40.0020.0006][.CE8C.0000.0000] # CIRCLED IDEOGRAPH TWO
+3193 ; [.FB40.0020.0014][.CE8C.0000.0000] # IDEOGRAPHIC ANNOTATION TWO MARK
+1F214 ; [.FB40.0020.001C][.CE8C.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-4E8C
+3224 ; [*0334.0020.0004][.FB40.0020.0004][.CE94.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH FIVE
+3284 ; [.FB40.0020.0006][.CE94.0000.0000] # CIRCLED IDEOGRAPH FIVE
+2F07 ; [.FB40.0020.0004][.CEA0.0000.0000] # KANGXI RADICAL LID
+1F218 ; [.FB40.0020.001C][.CEA4.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-4EA4
+F977 ; [.FB40.0020.0002][.CEAE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F977
+2F08 ; [.FB40.0020.0004][.CEBA.0000.0000] # KANGXI RADICAL MAN
+319F ; [.FB40.0020.0014][.CEBA.0000.0000] # IDEOGRAPHIC ANNOTATION MAN MARK
+2E85 ; [.FB40.0020.0004][.CEBB.0000.0000] # CJK RADICAL PERSON
+F9FD ; [.FB40.0020.0002][.CEC0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9FD
+2F819 ; [.FB40.0020.0002][.CECC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F819
+3239 ; [*0334.0020.0004][.FB40.0020.0004][.CEE3.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH REPRESENT
+F9A8 ; [.FB40.0020.0002][.CEE4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A8
+32FF ; [.FB40.0020.001C][.CEE4.0000.0000][.FB40.0020.001C][.D48C.0000.0000] # SQUARE ERA NAME REIWA
+323D ; [*0334.0020.0004][.FB40.0020.0004][.CF01.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH ENTERPRISE
+32AD ; [.FB40.0020.0006][.CF01.0000.0000] # CIRCLED IDEOGRAPH ENTERPRISE
+3241 ; [*0334.0020.0004][.FB40.0020.0004][.CF11.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH REST
+32A1 ; [.FB40.0020.0006][.CF11.0000.0000] # CIRCLED IDEOGRAPH REST
+2F804 ; [.FB40.0020.0002][.CF60.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F804
+FA73 ; [.FB40.0020.0002][.CF80.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA73
+F92D ; [.FB40.0020.0002][.CF86.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F92D
+F9B5 ; [.FB40.0020.0002][.CF8B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B5
+FA30 ; [.FB40.0020.0002][.CFAE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA30
+2F805 ; [.FB40.0020.0002][.CFAE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F805
+2F806 ; [.FB40.0020.0002][.CFBB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F806
+F965 ; [.FB40.0020.0002][.CFBF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F965
+2F807 ; [.FB40.0020.0002][.D002.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F807
+F9D4 ; [.FB40.0020.0002][.D02B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D4
+2F808 ; [.FB40.0020.0002][.D07A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F808
+2F809 ; [.FB40.0020.0002][.D099.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F809
+2F80B ; [.FB40.0020.0002][.D0CF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F80B
+F9BB ; [.FB40.0020.0002][.D0DA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9BB
+FA31 ; [.FB40.0020.0002][.D0E7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA31
+2F80A ; [.FB40.0020.0002][.D0E7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F80A
+329D ; [.FB40.0020.0006][.D12A.0000.0000] # CIRCLED IDEOGRAPH EXCELLENT
+2F09 ; [.FB40.0020.0004][.D13F.0000.0000] # KANGXI RADICAL LEGS
+FA0C ; [.FB40.0020.0002][.D140.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA0C
+FA74 ; [.FB40.0020.0002][.D145.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA74
+FA32 ; [.FB40.0020.0002][.D14D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA32
+2F80E ; [.FB40.0020.0002][.D14D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F80E
+2F80F ; [.FB40.0020.0002][.D154.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F80F
+2F810 ; [.FB40.0020.0002][.D164.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F810
+2F0A ; [.FB40.0020.0004][.D165.0000.0000] # KANGXI RADICAL ENTER
+2F814 ; [.FB40.0020.0002][.D167.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F814
+FA72 ; [.FB40.0020.0002][.D168.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA72
+F978 ; [.FB40.0020.0002][.D169.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F978
+2F0B ; [.FB40.0020.0004][.D16B.0000.0000] # KANGXI RADICAL EIGHT
+3227 ; [*0334.0020.0004][.FB40.0020.0004][.D16B.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH EIGHT
+3287 ; [.FB40.0020.0006][.D16B.0000.0000] # CIRCLED IDEOGRAPH EIGHT
+F9D1 ; [.FB40.0020.0002][.D16D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D1
+3225 ; [*0334.0020.0004][.FB40.0020.0004][.D16D.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH SIX
+3285 ; [.FB40.0020.0006][.D16D.0000.0000] # CIRCLED IDEOGRAPH SIX
+2F811 ; [.FB40.0020.0002][.D177.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F811
+FA75 ; [.FB40.0020.0002][.D180.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA75
+2F0C ; [.FB40.0020.0004][.D182.0000.0000] # KANGXI RADICAL DOWN BOX
+2E86 ; [.FB40.0020.0004][.D182.0000.0000][.0000.0118.0004] # CJK RADICAL BOX
+2F815 ; [.FB40.0020.0002][.D18D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F815
+1F21E ; [.FB40.0020.001C][.D18D.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-518D
+2F8D2 ; [.FB40.0020.0002][.D192.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D2
+2F8D3 ; [.FB40.0020.0002][.D195.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D3
+2F0D ; [.FB40.0020.0004][.D196.0000.0000] # KANGXI RADICAL COVER
+2F817 ; [.FB40.0020.0002][.D197.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F817
+32A2 ; [.FB40.0020.0006][.D199.0000.0000] # CIRCLED IDEOGRAPH COPY
+2F818 ; [.FB40.0020.0002][.D1A4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F818
+2F0E ; [.FB40.0020.0004][.D1AB.0000.0000] # KANGXI RADICAL ICE
+2F81A ; [.FB40.0020.0002][.D1AC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F81A
+FA71 ; [.FB40.0020.0002][.D1B5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA71
+2F81B ; [.FB40.0020.0002][.D1B5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F81B
+F92E ; [.FB40.0020.0002][.D1B7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F92E
+F979 ; [.FB40.0020.0002][.D1C9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F979
+F955 ; [.FB40.0020.0002][.D1CC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F955
+F954 ; [.FB40.0020.0002][.D1DC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F954
+FA15 ; [.FB40.0020.0002][.D1DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA15
+2F0F ; [.FB40.0020.0004][.D1E0.0000.0000] # KANGXI RADICAL TABLE
+2E87 ; [.FB40.0020.0004][.D1E0.0000.0000][.0000.0118.0004] # CJK RADICAL TABLE
+2F81D ; [.FB40.0020.0002][.D1F5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F81D
+2F10 ; [.FB40.0020.0004][.D1F5.0000.0000] # KANGXI RADICAL OPEN BOX
+2F11 ; [.FB40.0020.0004][.D200.0000.0000] # KANGXI RADICAL KNIFE
+2E88 ; [.FB40.0020.0004][.D200.0000.0000][.0000.0118.0004] # CJK RADICAL KNIFE ONE
+2E89 ; [.FB40.0020.0004][.D202.0000.0000] # CJK RADICAL KNIFE TWO
+2F81E ; [.FB40.0020.0002][.D203.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F81E
+FA00 ; [.FB40.0020.0002][.D207.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA00
+2F850 ; [.FB40.0020.0002][.D207.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F850
+F99C ; [.FB40.0020.0002][.D217.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F99C
+1F220 ; [.FB40.0020.001C][.D21D.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-521D
+F9DD ; [.FB40.0020.0002][.D229.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9DD
+F9FF ; [.FB40.0020.0002][.D23A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9FF
+2F820 ; [.FB40.0020.0002][.D23B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F820
+2F821 ; [.FB40.0020.0002][.D246.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F821
+1F21C ; [.FB40.0020.001C][.D24D.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-524D
+2F822 ; [.FB40.0020.0002][.D272.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F822
+1F239 ; [.FB40.0020.001C][.D272.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-5272
+2F823 ; [.FB40.0020.0002][.D277.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F823
+F9C7 ; [.FB40.0020.0002][.D289.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C7
+F98A ; [.FB40.0020.0002][.D29B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F98A
+2F12 ; [.FB40.0020.0004][.D29B.0000.0000] # KANGXI RADICAL POWER
+F99D ; [.FB40.0020.0002][.D2A3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F99D
+2F992 ; [.FB40.0020.0002][.D2B3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F992
+3238 ; [*0334.0020.0004][.FB40.0020.0004][.D2B4.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH LABOR
+3298 ; [.FB40.0020.0006][.D2B4.0000.0000] # CIRCLED IDEOGRAPH LABOR
+FA76 ; [.FB40.0020.0002][.D2C7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA76
+2F825 ; [.FB40.0020.0002][.D2C7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F825
+FA33 ; [.FB40.0020.0002][.D2C9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA33
+2F826 ; [.FB40.0020.0002][.D2C9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F826
+F952 ; [.FB40.0020.0002][.D2D2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F952
+1F247 ; [*039E.0020.0004][.FB40.0020.0004][.D2DD.0000.0000][*039F.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD
+F92F ; [.FB40.0020.0002][.D2DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F92F
+FA34 ; [.FB40.0020.0002][.D2E4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA34
+2F827 ; [.FB40.0020.0002][.D2E4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F827
+F97F ; [.FB40.0020.0002][.D2F5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F97F
+2F13 ; [.FB40.0020.0004][.D2F9.0000.0000] # KANGXI RADICAL WRAP
+FA77 ; [.FB40.0020.0002][.D2FA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA77
+2F828 ; [.FB40.0020.0002][.D2FA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F828
+2F829 ; [.FB40.0020.0002][.D305.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F829
+2F82A ; [.FB40.0020.0002][.D306.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F82A
+2F14 ; [.FB40.0020.0004][.D315.0000.0000] # KANGXI RADICAL SPOON
+F963 ; [.FB40.0020.0002][.D317.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F963
+2F82B ; [.FB40.0020.0002][.D317.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F82B
+2F15 ; [.FB40.0020.0004][.D31A.0000.0000] # KANGXI RADICAL RIGHT OPEN BOX
+2F16 ; [.FB40.0020.0004][.D338.0000.0000] # KANGXI RADICAL HIDING ENCLOSURE
+32A9 ; [.FB40.0020.0006][.D33B.0000.0000] # CIRCLED IDEOGRAPH MEDICINE
+F9EB ; [.FB40.0020.0002][.D33F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9EB
+2F17 ; [.FB40.0020.0004][.D341.0000.0000] # KANGXI RADICAL TEN
+3038 ; [.FB40.0020.0004][.D341.0000.0000] # HANGZHOU NUMERAL TEN
+3229 ; [*0334.0020.0004][.FB40.0020.0004][.D341.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH TEN
+3289 ; [.FB40.0020.0006][.D341.0000.0000] # CIRCLED IDEOGRAPH TEN
+3039 ; [.FB40.0020.0004][.D344.0000.0000] # HANGZHOU NUMERAL TWENTY
+303A ; [.FB40.0020.0004][.D345.0000.0000] # HANGZHOU NUMERAL THIRTY
+2F82C ; [.FB40.0020.0002][.D349.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F82C
+FA35 ; [.FB40.0020.0002][.D351.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA35
+2F82D ; [.FB40.0020.0002][.D351.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F82D
+323F ; [*0334.0020.0004][.FB40.0020.0004][.D354.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH ALLIANCE
+32AF ; [.FB40.0020.0006][.D354.0000.0000] # CIRCLED IDEOGRAPH ALLIANCE
+2F82E ; [.FB40.0020.0002][.D35A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F82E
+2F18 ; [.FB40.0020.0004][.D35C.0000.0000] # KANGXI RADICAL DIVINATION
+2E8A ; [.FB40.0020.0004][.D35C.0000.0000][.0000.0118.0004] # CJK RADICAL DIVINATION
+2F19 ; [.FB40.0020.0004][.D369.0000.0000] # KANGXI RADICAL SEAL
+2E8B ; [.FB40.0020.0004][.D369.0000.0000][.0000.0118.0004] # CJK RADICAL SEAL
+329E ; [.FB40.0020.0006][.D370.0000.0000] # CIRCLED IDEOGRAPH PRINT
+2F82F ; [.FB40.0020.0002][.D373.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F82F
+F91C ; [.FB40.0020.0002][.D375.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F91C
+2F830 ; [.FB40.0020.0002][.D37D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F830
+2F831 ; [.FB40.0020.0002][.D37F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F831
+2F832 ; [.FB40.0020.0002][.D37F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F832
+2F833 ; [.FB40.0020.0002][.D37F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F833
+2F1A ; [.FB40.0020.0004][.D382.0000.0000] # KANGXI RADICAL CLIFF
+2E81 ; [.FB40.0020.0004][.D382.0000.0000][.0000.0118.0004] # CJK RADICAL CLIFF
+2F1B ; [.FB40.0020.0004][.D3B6.0000.0000] # KANGXI RADICAL PRIVATE
+F96B ; [.FB40.0020.0002][.D3C3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F96B
+2F1C ; [.FB40.0020.0004][.D3C8.0000.0000] # KANGXI RADICAL AGAIN
+2F836 ; [.FB40.0020.0002][.D3CA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F836
+1F212 ; [.FB40.0020.001C][.D3CC.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-53CC
+2F837 ; [.FB40.0020.0002][.D3DF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F837
+2F1D ; [.FB40.0020.0004][.D3E3.0000.0000] # KANGXI RADICAL MOUTH
+F906 ; [.FB40.0020.0002][.D3E5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F906
+2F839 ; [.FB40.0020.0002][.D3EB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F839
+1F251 ; [.FB40.0020.0006][.D3EF.0000.0000] # CIRCLED IDEOGRAPH ACCEPT
+2F83A ; [.FB40.0020.0002][.D3F1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F83A
+32A8 ; [.FB40.0020.0006][.D3F3.0000.0000] # CIRCLED IDEOGRAPH RIGHT
+1F22E ; [.FB40.0020.001C][.D3F3.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-53F3
+2F83B ; [.FB40.0020.0002][.D406.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F83B
+1F234 ; [.FB40.0020.001C][.D408.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-5408
+3234 ; [*0334.0020.0004][.FB40.0020.0004][.D40D.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH NAME
+3294 ; [.FB40.0020.0006][.D40D.0000.0000] # CIRCLED IDEOGRAPH NAME
+F9DE ; [.FB40.0020.0002][.D40F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9DE
+F9ED ; [.FB40.0020.0002][.D41D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9ED
+2F83D ; [.FB40.0020.0002][.D438.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F83D
+1F225 ; [.FB40.0020.001C][.D439.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-5439
+F980 ; [.FB40.0020.0002][.D442.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F980
+2F83E ; [.FB40.0020.0002][.D448.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F83E
+2F83F ; [.FB40.0020.0002][.D468.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F83F
+323A ; [*0334.0020.0004][.FB40.0020.0004][.D47C.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH CALL
+2F83C ; [.FB40.0020.0002][.D49E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F83C
+2F840 ; [.FB40.0020.0002][.D4A2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F840
+F99E ; [.FB40.0020.0002][.D4BD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F99E
+2F841 ; [.FB40.0020.0002][.D4F6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F841
+2F842 ; [.FB40.0020.0002][.D510.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F842
+3244 ; [.FB40.0020.0006][.D54F.0000.0000] # CIRCLED IDEOGRAPH QUESTION
+2F843 ; [.FB40.0020.0002][.D553.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F843
+FA79 ; [.FB40.0020.0002][.D555.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA79
+2F844 ; [.FB40.0020.0002][.D563.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F844
+2F845 ; [.FB40.0020.0002][.D584.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F845
+2F846 ; [.FB40.0020.0002][.D584.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F846
+F90B ; [.FB40.0020.0002][.D587.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F90B
+FA7A ; [.FB40.0020.0002][.D599.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA7A
+2F847 ; [.FB40.0020.0002][.D599.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F847
+FA36 ; [.FB40.0020.0002][.D59D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA36
+FA78 ; [.FB40.0020.0002][.D59D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA78
+2F848 ; [.FB40.0020.0002][.D5AB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F848
+2F849 ; [.FB40.0020.0002][.D5B3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F849
+1F23A ; [.FB40.0020.001C][.D5B6.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-55B6
+FA0D ; [.FB40.0020.0002][.D5C0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA0D
+2F84A ; [.FB40.0020.0002][.D5C2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F84A
+FA7B ; [.FB40.0020.0002][.D5E2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA7B
+FA37 ; [.FB40.0020.0002][.D606.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA37
+2F84C ; [.FB40.0020.0002][.D606.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F84C
+2F84E ; [.FB40.0020.0002][.D651.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F84E
+FA38 ; [.FB40.0020.0002][.D668.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA38
+2F84F ; [.FB40.0020.0002][.D674.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F84F
+2F1E ; [.FB40.0020.0004][.D6D7.0000.0000] # KANGXI RADICAL ENCLOSURE
+3223 ; [*0334.0020.0004][.FB40.0020.0004][.D6DB.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH FOUR
+3283 ; [.FB40.0020.0006][.D6DB.0000.0000] # CIRCLED IDEOGRAPH FOUR
+3195 ; [.FB40.0020.0014][.D6DB.0000.0000] # IDEOGRAPHIC ANNOTATION FOUR MARK
+F9A9 ; [.FB40.0020.0002][.D6F9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A9
+2F84B ; [.FB40.0020.0002][.D716.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F84B
+2F84D ; [.FB40.0020.0002][.D717.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F84D
+2F1F ; [.FB40.0020.0004][.D71F.0000.0000] # KANGXI RADICAL EARTH
+322F ; [*0334.0020.0004][.FB40.0020.0004][.D71F.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH EARTH
+328F ; [.FB40.0020.0006][.D71F.0000.0000] # CIRCLED IDEOGRAPH EARTH
+319E ; [.FB40.0020.0014][.D730.0000.0000] # IDEOGRAPHIC ANNOTATION EARTH MARK
+2F855 ; [.FB40.0020.0002][.D78B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F855
+2F852 ; [.FB40.0020.0002][.D7CE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F852
+2F853 ; [.FB40.0020.0002][.D7F4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F853
+2F854 ; [.FB40.0020.0002][.D80D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F854
+2F857 ; [.FB40.0020.0002][.D831.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F857
+2F856 ; [.FB40.0020.0002][.D832.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F856
+FA39 ; [.FB40.0020.0002][.D840.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA39
+FA10 ; [.FB40.0020.0002][.D85A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA10
+FA7C ; [.FB40.0020.0002][.D85A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA7C
+F96C ; [.FB40.0020.0002][.D85E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F96C
+FA3A ; [.FB40.0020.0002][.D8A8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA3A
+2F858 ; [.FB40.0020.0002][.D8AC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F858
+FA7D ; [.FB40.0020.0002][.D8B3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA7D
+F94A ; [.FB40.0020.0002][.D8D8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F94A
+F942 ; [.FB40.0020.0002][.D8DF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F942
+2F20 ; [.FB40.0020.0004][.D8EB.0000.0000] # KANGXI RADICAL SCHOLAR
+2F851 ; [.FB40.0020.0002][.D8EE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F851
+1F224 ; [.FB40.0020.001C][.D8F0.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-58F0
+2F85A ; [.FB40.0020.0002][.D8F2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F85A
+2F85B ; [.FB40.0020.0002][.D8F7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F85B
+2F21 ; [.FB40.0020.0004][.D902.0000.0000] # KANGXI RADICAL GO
+2F85C ; [.FB40.0020.0002][.D906.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F85C
+2F22 ; [.FB40.0020.0004][.D90A.0000.0000] # KANGXI RADICAL GO SLOWLY
+2F23 ; [.FB40.0020.0004][.D915.0000.0000] # KANGXI RADICAL EVENING
+2F85D ; [.FB40.0020.0002][.D91A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F85D
+1F215 ; [.FB40.0020.001C][.D91A.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-591A
+32B0 ; [.FB40.0020.0006][.D91C.0000.0000] # CIRCLED IDEOGRAPH NIGHT
+2F85E ; [.FB40.0020.0002][.D922.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F85E
+2F24 ; [.FB40.0020.0004][.D927.0000.0000] # KANGXI RADICAL BIG
+337D ; [.FB40.0020.001C][.D927.0000.0000][.FB40.0020.001C][.EB63.0000.0000] # SQUARE ERA NAME TAISYOU
+319D ; [.FB40.0020.0014][.D929.0000.0000] # IDEOGRAPHIC ANNOTATION HEAVEN MARK
+1F217 ; [.FB40.0020.001C][.D929.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-5929
+FA7E ; [.FB40.0020.0002][.D944.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA7E
+F90C ; [.FB40.0020.0002][.D948.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F90C
+F909 ; [.FB40.0020.0002][.D951.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F909
+FA7F ; [.FB40.0020.0002][.D954.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA7F
+2F85F ; [.FB40.0020.0002][.D962.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F85F
+F981 ; [.FB40.0020.0002][.D973.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F981
+2F25 ; [.FB40.0020.0004][.D973.0000.0000] # KANGXI RADICAL WOMAN
+329B ; [.FB40.0020.0006][.D973.0000.0000] # CIRCLED IDEOGRAPH FEMALE
+2F865 ; [.FB40.0020.0002][.D9D8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F865
+2F862 ; [.FB40.0020.0002][.D9EC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F862
+2F863 ; [.FB40.0020.0002][.DA1B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F863
+2F864 ; [.FB40.0020.0002][.DA27.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F864
+FA80 ; [.FB40.0020.0002][.DA62.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA80
+2F866 ; [.FB40.0020.0002][.DA66.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F866
+2F986 ; [.FB40.0020.0002][.DAB5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F986
+2F869 ; [.FB40.0020.0002][.DB08.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F869
+FA81 ; [.FB40.0020.0002][.DB28.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA81
+2F86A ; [.FB40.0020.0002][.DB3E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F86A
+2F86B ; [.FB40.0020.0002][.DB3E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F86B
+2F26 ; [.FB40.0020.0004][.DB50.0000.0000] # KANGXI RADICAL CHILD
+1F211 ; [.FB40.0020.001C][.DB57.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-5B57
+323B ; [*0334.0020.0004][.FB40.0020.0004][.DB66.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH STUDY
+32AB ; [.FB40.0020.0006][.DB66.0000.0000] # CIRCLED IDEOGRAPH STUDY
+2F27 ; [.FB40.0020.0004][.DB80.0000.0000] # KANGXI RADICAL ROOF
+FA04 ; [.FB40.0020.0002][.DB85.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA04
+1F243 ; [*039E.0020.0004][.FB40.0020.0004][.DB89.0000.0000][*039F.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89
+32AA ; [.FB40.0020.0006][.DB97.0000.0000] # CIRCLED IDEOGRAPH RELIGION
+2F86D ; [.FB40.0020.0002][.DBC3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F86D
+2F86E ; [.FB40.0020.0002][.DBD8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F86E
+F95F ; [.FB40.0020.0002][.DBE7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F95F
+F9AA ; [.FB40.0020.0002][.DBE7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9AA
+2F86F ; [.FB40.0020.0002][.DBE7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F86F
+F9BC ; [.FB40.0020.0002][.DBEE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9BC
+2F870 ; [.FB40.0020.0002][.DBF3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F870
+2F28 ; [.FB40.0020.0004][.DBF8.0000.0000] # KANGXI RADICAL INCH
+2F872 ; [.FB40.0020.0002][.DBFF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F872
+2F873 ; [.FB40.0020.0002][.DC06.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F873
+2F29 ; [.FB40.0020.0004][.DC0F.0000.0000] # KANGXI RADICAL SMALL
+2E8C ; [.FB40.0020.0004][.DC0F.0000.0000][.0000.0118.0004] # CJK RADICAL SMALL ONE
+2E8D ; [.FB40.0020.0004][.DC0F.0000.0000][.0000.0119.0004] # CJK RADICAL SMALL TWO
+2F875 ; [.FB40.0020.0002][.DC22.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F875
+2E90 ; [.FB40.0020.0004][.DC22.0000.0000] # CJK RADICAL LAME THREE
+2F2A ; [.FB40.0020.0004][.DC22.0000.0000] # KANGXI RADICAL LAME
+2E8E ; [.FB40.0020.0004][.DC22.0000.0000][.0000.0118.0004] # CJK RADICAL LAME ONE
+2E8F ; [.FB40.0020.0004][.DC23.0000.0000] # CJK RADICAL LAME TWO
+2E91 ; [.FB40.0020.0004][.DC23.0000.0000][.0000.0118.0004] # CJK RADICAL LAME FOUR
+2F2B ; [.FB40.0020.0004][.DC38.0000.0000] # KANGXI RADICAL CORPSE
+F9BD ; [.FB40.0020.0002][.DC3F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9BD
+2F877 ; [.FB40.0020.0002][.DC60.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F877
+F94B ; [.FB40.0020.0002][.DC62.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F94B
+FA3B ; [.FB40.0020.0002][.DC64.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA3B
+F9DF ; [.FB40.0020.0002][.DC65.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9DF
+FA3C ; [.FB40.0020.0002][.DC6E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA3C
+2F878 ; [.FB40.0020.0002][.DC6E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F878
+2F2C ; [.FB40.0020.0004][.DC6E.0000.0000] # KANGXI RADICAL SPROUT
+2F2D ; [.FB40.0020.0004][.DC71.0000.0000] # KANGXI RADICAL MOUNTAIN
+2F87A ; [.FB40.0020.0002][.DC8D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F87A
+2F879 ; [.FB40.0020.0002][.DCC0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F879
+F9D5 ; [.FB40.0020.0002][.DD19.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D5
+2F87C ; [.FB40.0020.0002][.DD43.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F87C
+F921 ; [.FB40.0020.0002][.DD50.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F921
+2F87F ; [.FB40.0020.0002][.DD6B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F87F
+2F87E ; [.FB40.0020.0002][.DD6E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F87E
+2F880 ; [.FB40.0020.0002][.DD7C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F880
+2F9F4 ; [.FB40.0020.0002][.DDB2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F4
+F9AB ; [.FB40.0020.0002][.DDBA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9AB
+2F2E ; [.FB40.0020.0004][.DDDB.0000.0000] # KANGXI RADICAL RIVER
+2F881 ; [.FB40.0020.0002][.DDE1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F881
+2F882 ; [.FB40.0020.0002][.DDE2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F882
+2F2F ; [.FB40.0020.0004][.DDE5.0000.0000] # KANGXI RADICAL WORK
+32A7 ; [.FB40.0020.0006][.DDE6.0000.0000] # CIRCLED IDEOGRAPH LEFT
+1F22C ; [.FB40.0020.001C][.DDE6.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-5DE6
+2F30 ; [.FB40.0020.0004][.DDF1.0000.0000] # KANGXI RADICAL ONESELF
+2E92 ; [.FB40.0020.0004][.DDF3.0000.0000] # CJK RADICAL SNAKE
+2F884 ; [.FB40.0020.0002][.DDFD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F884
+2F31 ; [.FB40.0020.0004][.DDFE.0000.0000] # KANGXI RADICAL TURBAN
+2F885 ; [.FB40.0020.0002][.DE28.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F885
+2F886 ; [.FB40.0020.0002][.DE3D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F886
+2F887 ; [.FB40.0020.0002][.DE69.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F887
+2F32 ; [.FB40.0020.0004][.DE72.0000.0000] # KANGXI RADICAL DRY
+337B ; [.FB40.0020.001C][.DE73.0000.0000][.FB40.0020.001C][.E210.0000.0000] # SQUARE ERA NAME HEISEI
+F98E ; [.FB40.0020.0002][.DE74.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F98E
+2E93 ; [.FB40.0020.0004][.DE7A.0000.0000] # CJK RADICAL THREAD
+2F33 ; [.FB40.0020.0004][.DE7A.0000.0000] # KANGXI RADICAL SHORT THREAD
+3245 ; [.FB40.0020.0006][.DE7C.0000.0000] # CIRCLED IDEOGRAPH KINDERGARTEN
+2F34 ; [.FB40.0020.0004][.DE7F.0000.0000] # KANGXI RADICAL DOTTED CLIFF
+FA01 ; [.FB40.0020.0002][.DEA6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA01
+2F88B ; [.FB40.0020.0002][.DEB0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F88B
+2F88C ; [.FB40.0020.0002][.DEB3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F88C
+2F88D ; [.FB40.0020.0002][.DEB6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F88D
+F9A2 ; [.FB40.0020.0002][.DEC9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A2
+F928 ; [.FB40.0020.0002][.DECA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F928
+2F88E ; [.FB40.0020.0002][.DECA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F88E
+FA82 ; [.FB40.0020.0002][.DED2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA82
+FA0B ; [.FB40.0020.0002][.DED3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA0B
+FA83 ; [.FB40.0020.0002][.DED9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA83
+F982 ; [.FB40.0020.0002][.DEEC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F982
+2F35 ; [.FB40.0020.0004][.DEF4.0000.0000] # KANGXI RADICAL LONG STRIDE
+2F890 ; [.FB40.0020.0002][.DEFE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F890
+2F36 ; [.FB40.0020.0004][.DEFE.0000.0000] # KANGXI RADICAL TWO HANDS
+F943 ; [.FB40.0020.0002][.DF04.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F943
+2F37 ; [.FB40.0020.0004][.DF0B.0000.0000] # KANGXI RADICAL SHOOT
+2F38 ; [.FB40.0020.0004][.DF13.0000.0000] # KANGXI RADICAL BOW
+2F894 ; [.FB40.0020.0002][.DF22.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F894
+2F895 ; [.FB40.0020.0002][.DF22.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F895
+2F39 ; [.FB40.0020.0004][.DF50.0000.0000] # KANGXI RADICAL SNOUT
+2E95 ; [.FB40.0020.0004][.DF50.0000.0000][.0000.0118.0004] # CJK RADICAL SNOUT TWO
+2E94 ; [.FB40.0020.0004][.DF51.0000.0000] # CJK RADICAL SNOUT ONE
+2F874 ; [.FB40.0020.0002][.DF53.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F874
+2F3A ; [.FB40.0020.0004][.DF61.0000.0000] # KANGXI RADICAL BRISTLE
+2F899 ; [.FB40.0020.0002][.DF62.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F899
+FA84 ; [.FB40.0020.0002][.DF69.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA84
+2F89A ; [.FB40.0020.0002][.DF6B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F89A
+2F3B ; [.FB40.0020.0004][.DF73.0000.0000] # KANGXI RADICAL STEP
+F9D8 ; [.FB40.0020.0002][.DF8B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D8
+1F21D ; [.FB40.0020.001C][.DF8C.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-5F8C
+1F250 ; [.FB40.0020.0006][.DF97.0000.0000] # CIRCLED IDEOGRAPH ADVANTAGE
+2F89C ; [.FB40.0020.0002][.DF9A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F89C
+F966 ; [.FB40.0020.0002][.DFA9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F966
+FA85 ; [.FB40.0020.0002][.DFAD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA85
+2F3C ; [.FB40.0020.0004][.DFC3.0000.0000] # KANGXI RADICAL HEART
+2E97 ; [.FB40.0020.0004][.DFC3.0000.0000][.0000.0118.0004] # CJK RADICAL HEART TWO
+2E96 ; [.FB40.0020.0004][.DFC4.0000.0000] # CJK RADICAL HEART ONE
+2F89D ; [.FB40.0020.0002][.DFCD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F89D
+2F89E ; [.FB40.0020.0002][.DFD7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F89E
+F9A3 ; [.FB40.0020.0002][.DFF5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A3
+2F89F ; [.FB40.0020.0002][.DFF9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F89F
+F960 ; [.FB40.0020.0002][.E012.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F960
+F9AC ; [.FB40.0020.0002][.E01C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9AC
+FA6B ; [.FB40.0020.0002][.E075.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA6B
+2F8A0 ; [.FB40.0020.0002][.E081.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8A0
+FA3D ; [.FB40.0020.0002][.E094.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA3D
+2F8A3 ; [.FB40.0020.0002][.E094.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8A3
+2F8A5 ; [.FB40.0020.0002][.E0C7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8A5
+FA86 ; [.FB40.0020.0002][.E0D8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA86
+F9B9 ; [.FB40.0020.0002][.E0E1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B9
+FA88 ; [.FB40.0020.0002][.E108.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA88
+F9D9 ; [.FB40.0020.0002][.E144.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D9
+2F8A6 ; [.FB40.0020.0002][.E148.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8A6
+2F8A7 ; [.FB40.0020.0002][.E14C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8A7
+2F8A9 ; [.FB40.0020.0002][.E14C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8A9
+FA87 ; [.FB40.0020.0002][.E14E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA87
+2F8A8 ; [.FB40.0020.0002][.E14E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8A8
+FA8A ; [.FB40.0020.0002][.E160.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA8A
+FA3E ; [.FB40.0020.0002][.E168.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA3E
+2F8AA ; [.FB40.0020.0002][.E17A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8AA
+FA3F ; [.FB40.0020.0002][.E18E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA3F
+FA89 ; [.FB40.0020.0002][.E18E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA89
+2F8AB ; [.FB40.0020.0002][.E18E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8AB
+F98F ; [.FB40.0020.0002][.E190.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F98F
+2F8AD ; [.FB40.0020.0002][.E1A4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8AD
+2F8AE ; [.FB40.0020.0002][.E1AF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8AE
+2F8AC ; [.FB40.0020.0002][.E1B2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8AC
+2F8AF ; [.FB40.0020.0002][.E1DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8AF
+FA40 ; [.FB40.0020.0002][.E1F2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA40
+FA8B ; [.FB40.0020.0002][.E1F2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA8B
+2F8B0 ; [.FB40.0020.0002][.E1F2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B0
+F90D ; [.FB40.0020.0002][.E1F6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F90D
+2F8B1 ; [.FB40.0020.0002][.E1F6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B1
+F990 ; [.FB40.0020.0002][.E200.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F990
+2F3D ; [.FB40.0020.0004][.E208.0000.0000] # KANGXI RADICAL HALBERD
+2F8B2 ; [.FB40.0020.0002][.E210.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B2
+2F8B3 ; [.FB40.0020.0002][.E21B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B3
+F9D2 ; [.FB40.0020.0002][.E22E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D2
+FA8C ; [.FB40.0020.0002][.E234.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA8C
+2F3E ; [.FB40.0020.0004][.E236.0000.0000] # KANGXI RADICAL DOOR
+2F3F ; [.FB40.0020.0004][.E24B.0000.0000] # KANGXI RADICAL HAND
+1F210 ; [.FB40.0020.001C][.E24B.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-624B
+2E98 ; [.FB40.0020.0004][.E24C.0000.0000] # CJK RADICAL HAND
+1F245 ; [*039E.0020.0004][.FB40.0020.0004][.E253.0000.0000][*039F.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253
+1F231 ; [.FB40.0020.001C][.E253.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6253
+2F8B4 ; [.FB40.0020.0002][.E25D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B4
+1F227 ; [.FB40.0020.001C][.E295.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6295
+2F8B5 ; [.FB40.0020.0002][.E2B1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B5
+F925 ; [.FB40.0020.0002][.E2C9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F925
+F95B ; [.FB40.0020.0002][.E2CF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F95B
+FA02 ; [.FB40.0020.0002][.E2D3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA02
+2F8B6 ; [.FB40.0020.0002][.E2D4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B6
+2F8BA ; [.FB40.0020.0002][.E2FC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8BA
+F973 ; [.FB40.0020.0002][.E2FE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F973
+1F22F ; [.FB40.0020.001C][.E307.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6307
+2F8B9 ; [.FB40.0020.0002][.E33D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B9
+2F8B7 ; [.FB40.0020.0002][.E350.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B7
+1F228 ; [.FB40.0020.001C][.E355.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6355
+2F8BB ; [.FB40.0020.0002][.E368.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8BB
+F9A4 ; [.FB40.0020.0002][.E37B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A4
+2F8BC ; [.FB40.0020.0002][.E383.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8BC
+F975 ; [.FB40.0020.0002][.E3A0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F975
+2F8C1 ; [.FB40.0020.0002][.E3A9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C1
+FA8D ; [.FB40.0020.0002][.E3C4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA8D
+2F8C0 ; [.FB40.0020.0002][.E3C5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C0
+2F8BD ; [.FB40.0020.0002][.E3E4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8BD
+FA8E ; [.FB40.0020.0002][.E41C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA8E
+2F8BF ; [.FB40.0020.0002][.E422.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8BF
+FA8F ; [.FB40.0020.0002][.E452.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA8F
+2F8C3 ; [.FB40.0020.0002][.E469.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C3
+2F8C6 ; [.FB40.0020.0002][.E477.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C6
+2F8C4 ; [.FB40.0020.0002][.E47E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C4
+F991 ; [.FB40.0020.0002][.E49A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F991
+2F8C5 ; [.FB40.0020.0002][.E49D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C5
+F930 ; [.FB40.0020.0002][.E4C4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F930
+2F40 ; [.FB40.0020.0004][.E52F.0000.0000] # KANGXI RADICAL BRANCH
+2F41 ; [.FB40.0020.0004][.E534.0000.0000] # KANGXI RADICAL RAP
+2E99 ; [.FB40.0020.0004][.E535.0000.0000] # CJK RADICAL RAP
+FA41 ; [.FB40.0020.0002][.E54F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA41
+2F8C8 ; [.FB40.0020.0002][.E54F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C8
+FA90 ; [.FB40.0020.0002][.E556.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA90
+1F248 ; [*039E.0020.0004][.FB40.0020.0004][.E557.0000.0000][*039F.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+2F8C9 ; [.FB40.0020.0002][.E56C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C9
+F969 ; [.FB40.0020.0002][.E578.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F969
+2F42 ; [.FB40.0020.0004][.E587.0000.0000] # KANGXI RADICAL SCRIPT
+3246 ; [.FB40.0020.0006][.E587.0000.0000] # CIRCLED IDEOGRAPH SCHOOL
+2F43 ; [.FB40.0020.0004][.E597.0000.0000] # KANGXI RADICAL DIPPER
+F9BE ; [.FB40.0020.0002][.E599.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9BE
+1F21B ; [.FB40.0020.001C][.E599.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6599
+2F44 ; [.FB40.0020.0004][.E5A4.0000.0000] # KANGXI RADICAL AXE
+1F21F ; [.FB40.0020.001C][.E5B0.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-65B0
+2F45 ; [.FB40.0020.0004][.E5B9.0000.0000] # KANGXI RADICAL SQUARE
+F983 ; [.FB40.0020.0002][.E5C5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F983
+2F46 ; [.FB40.0020.0004][.E5E0.0000.0000] # KANGXI RADICAL NOT
+2E9B ; [.FB40.0020.0004][.E5E1.0000.0000] # CJK RADICAL CHOKE
+FA42 ; [.FB40.0020.0002][.E5E2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA42
+2F8CB ; [.FB40.0020.0002][.E5E3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8CB
+2F47 ; [.FB40.0020.0004][.E5E5.0000.0000] # KANGXI RADICAL SUN
+3230 ; [*0334.0020.0004][.FB40.0020.0004][.E5E5.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH SUN
+3290 ; [.FB40.0020.0006][.E5E5.0000.0000] # CIRCLED IDEOGRAPH SUN
+2E9C ; [.FB40.0020.0004][.E5E5.0000.0000][.0000.0118.0004] # CJK RADICAL SUN
+337E ; [.FB40.0020.001C][.E60E.0000.0000][.FB40.0020.001C][.ECBB.0000.0000] # SQUARE ERA NAME MEIZI
+F9E0 ; [.FB40.0020.0002][.E613.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E0
+1F219 ; [.FB40.0020.001C][.E620.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6620
+337C ; [.FB40.0020.001C][.E62D.0000.0000][.FB40.0020.001C][.D48C.0000.0000] # SQUARE ERA NAME SYOUWA
+2F8CD ; [.FB40.0020.0002][.E649.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8CD
+FA12 ; [.FB40.0020.0002][.E674.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA12
+FA91 ; [.FB40.0020.0002][.E674.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA91
+F9C5 ; [.FB40.0020.0002][.E688.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C5
+FA43 ; [.FB40.0020.0002][.E691.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA43
+2F8CF ; [.FB40.0020.0002][.E691.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8CF
+2F8D5 ; [.FB40.0020.0002][.E69C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D5
+FA06 ; [.FB40.0020.0002][.E6B4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA06
+F98B ; [.FB40.0020.0002][.E6C6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F98B
+2F48 ; [.FB40.0020.0004][.E6F0.0000.0000] # KANGXI RADICAL SAY
+F901 ; [.FB40.0020.0002][.E6F4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F901
+2F8CC ; [.FB40.0020.0002][.E6F8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8CC
+2F8D4 ; [.FB40.0020.0002][.E700.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D4
+2F49 ; [.FB40.0020.0004][.E708.0000.0000] # KANGXI RADICAL MOON
+322A ; [*0334.0020.0004][.FB40.0020.0004][.E708.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH MOON
+328A ; [.FB40.0020.0006][.E708.0000.0000] # CIRCLED IDEOGRAPH MOON
+1F237 ; [.FB40.0020.001C][.E708.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6708
+2E9D ; [.FB40.0020.0004][.E708.0000.0000][.0000.0118.0004] # CJK RADICAL MOON
+3232 ; [*0334.0020.0004][.FB40.0020.0004][.E709.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH HAVE
+3292 ; [.FB40.0020.0006][.E709.0000.0000] # CIRCLED IDEOGRAPH HAVE
+1F236 ; [.FB40.0020.001C][.E709.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6709
+F929 ; [.FB40.0020.0002][.E717.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F929
+FA92 ; [.FB40.0020.0002][.E717.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA92
+2F8D8 ; [.FB40.0020.0002][.E717.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D8
+FA93 ; [.FB40.0020.0002][.E71B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA93
+2F8D9 ; [.FB40.0020.0002][.E71B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D9
+2F8DA ; [.FB40.0020.0002][.E721.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8DA
+2F4A ; [.FB40.0020.0004][.E728.0000.0000] # KANGXI RADICAL TREE
+322D ; [*0334.0020.0004][.FB40.0020.0004][.E728.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH WOOD
+328D ; [.FB40.0020.0006][.E728.0000.0000] # CIRCLED IDEOGRAPH WOOD
+1F240 ; [*039E.0020.0004][.FB40.0020.0004][.E72C.0000.0000][*039F.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
+F9E1 ; [.FB40.0020.0002][.E74E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E1
+2F8DC ; [.FB40.0020.0002][.E753.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8DC
+FA94 ; [.FB40.0020.0002][.E756.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA94
+2F8DB ; [.FB40.0020.0002][.E75E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8DB
+F9C8 ; [.FB40.0020.0002][.E77B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C8
+2F8E0 ; [.FB40.0020.0002][.E785.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E0
+F9F4 ; [.FB40.0020.0002][.E797.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F4
+F9C9 ; [.FB40.0020.0002][.E7F3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C9
+2F8DF ; [.FB40.0020.0002][.E7FA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8DF
+F9DA ; [.FB40.0020.0002][.E817.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9DA
+2F8E5 ; [.FB40.0020.0002][.E81F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E5
+3231 ; [*0334.0020.0004][.FB40.0020.0004][.E82A.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH STOCK
+3291 ; [.FB40.0020.0006][.E82A.0000.0000] # CIRCLED IDEOGRAPH STOCK
+337F ; [.FB40.0020.001C][.E82A.0000.0000][.FB40.0020.001C][.DF0F.0000.0000][.FB40.0020.001C][.CF1A.0000.0000][.FB40.0020.001C][.F93E.0000.0000] # SQUARE CORPORATION
+2F8E1 ; [.FB40.0020.0002][.E852.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E1
+F97A ; [.FB40.0020.0002][.E881.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F97A
+FA44 ; [.FB40.0020.0002][.E885.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA44
+2F8E2 ; [.FB40.0020.0002][.E885.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E2
+2F8E4 ; [.FB40.0020.0002][.E88E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E4
+F9E2 ; [.FB40.0020.0002][.E8A8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E2
+2F8E6 ; [.FB40.0020.0002][.E914.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E6
+2F8E8 ; [.FB40.0020.0002][.E942.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E8
+2F8E9 ; [.FB40.0020.0002][.E9A3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E9
+2F8EA ; [.FB40.0020.0002][.E9EA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8EA
+F914 ; [.FB40.0020.0002][.EA02.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F914
+F95C ; [.FB40.0020.0002][.EA02.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F95C
+F9BF ; [.FB40.0020.0002][.EA02.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9BF
+F94C ; [.FB40.0020.0002][.EA13.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F94C
+2F8EB ; [.FB40.0020.0002][.EAA8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8EB
+F931 ; [.FB40.0020.0002][.EAD3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F931
+2F8ED ; [.FB40.0020.0002][.EADB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8ED
+F91D ; [.FB40.0020.0002][.EB04.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F91D
+2F4B ; [.FB40.0020.0004][.EB20.0000.0000] # KANGXI RADICAL LACK
+2F8EF ; [.FB40.0020.0002][.EB21.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8EF
+2F8F1 ; [.FB40.0020.0002][.EB54.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F1
+2F4C ; [.FB40.0020.0004][.EB62.0000.0000] # KANGXI RADICAL STOP
+32A3 ; [.FB40.0020.0006][.EB63.0000.0000] # CIRCLED IDEOGRAPH CORRECT
+2F8F3 ; [.FB40.0020.0002][.EB72.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F3
+F98C ; [.FB40.0020.0002][.EB77.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F98C
+FA95 ; [.FB40.0020.0002][.EB79.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA95
+2F4D ; [.FB40.0020.0004][.EB79.0000.0000] # KANGXI RADICAL DEATH
+2E9E ; [.FB40.0020.0004][.EB7A.0000.0000][.0000.0118.0004] # CJK RADICAL DEATH
+2F8F4 ; [.FB40.0020.0002][.EB9F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F4
+F9A5 ; [.FB40.0020.0002][.EBAE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A5
+2F4E ; [.FB40.0020.0004][.EBB3.0000.0000] # KANGXI RADICAL WEAPON
+F970 ; [.FB40.0020.0002][.EBBA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F970
+FA96 ; [.FB40.0020.0002][.EBBA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA96
+2F8F5 ; [.FB40.0020.0002][.EBBA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F5
+2F8F6 ; [.FB40.0020.0002][.EBBB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F6
+2F4F ; [.FB40.0020.0004][.EBCB.0000.0000] # KANGXI RADICAL DO NOT
+2E9F ; [.FB40.0020.0004][.EBCD.0000.0000] # CJK RADICAL MOTHER
+2F50 ; [.FB40.0020.0004][.EBD4.0000.0000] # KANGXI RADICAL COMPARE
+2F51 ; [.FB40.0020.0004][.EBDB.0000.0000] # KANGXI RADICAL FUR
+2F52 ; [.FB40.0020.0004][.EC0F.0000.0000] # KANGXI RADICAL CLAN
+2EA0 ; [.FB40.0020.0004][.EC11.0000.0000] # CJK RADICAL CIVILIAN
+2F53 ; [.FB40.0020.0004][.EC14.0000.0000] # KANGXI RADICAL STEAM
+2F54 ; [.FB40.0020.0004][.EC34.0000.0000] # KANGXI RADICAL WATER
+322C ; [*0334.0020.0004][.FB40.0020.0004][.EC34.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH WATER
+328C ; [.FB40.0020.0006][.EC34.0000.0000] # CIRCLED IDEOGRAPH WATER
+2EA1 ; [.FB40.0020.0004][.EC35.0000.0000] # CJK RADICAL WATER ONE
+2EA2 ; [.FB40.0020.0004][.EC3A.0000.0000] # CJK RADICAL WATER TWO
+2F8FA ; [.FB40.0020.0002][.EC4E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8FA
+2F8FE ; [.FB40.0020.0002][.EC67.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8FE
+F972 ; [.FB40.0020.0002][.EC88.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F972
+2F8FC ; [.FB40.0020.0002][.ECBF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8FC
+F968 ; [.FB40.0020.0002][.ECCC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F968
+2F8FD ; [.FB40.0020.0002][.ECCD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8FD
+F9E3 ; [.FB40.0020.0002][.ECE5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E3
+329F ; [.FB40.0020.0006][.ECE8.0000.0000] # CIRCLED IDEOGRAPH ATTENTION
+2F8FF ; [.FB40.0020.0002][.ED16.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8FF
+F915 ; [.FB40.0020.0002][.ED1B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F915
+FA05 ; [.FB40.0020.0002][.ED1E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA05
+2F907 ; [.FB40.0020.0002][.ED34.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F907
+2F900 ; [.FB40.0020.0002][.ED3E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F900
+F9CA ; [.FB40.0020.0002][.ED41.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9CA
+FA97 ; [.FB40.0020.0002][.ED41.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA97
+2F902 ; [.FB40.0020.0002][.ED41.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F902
+2F903 ; [.FB40.0020.0002][.ED69.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F903
+F92A ; [.FB40.0020.0002][.ED6A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F92A
+FA45 ; [.FB40.0020.0002][.ED77.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA45
+2F901 ; [.FB40.0020.0002][.ED77.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F901
+2F904 ; [.FB40.0020.0002][.ED78.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F904
+2F905 ; [.FB40.0020.0002][.ED85.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F905
+F9F5 ; [.FB40.0020.0002][.EDCB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F5
+F94D ; [.FB40.0020.0002][.EDDA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F94D
+F9D6 ; [.FB40.0020.0002][.EDEA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D6
+2F90E ; [.FB40.0020.0002][.EDF9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F90E
+FA46 ; [.FB40.0020.0002][.EE1A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA46
+2F908 ; [.FB40.0020.0002][.EE2F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F908
+2F909 ; [.FB40.0020.0002][.EE6E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F909
+1F235 ; [.FB40.0020.001C][.EE80.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6E80
+F9CB ; [.FB40.0020.0002][.EE9C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9CB
+F9EC ; [.FB40.0020.0002][.EEBA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9EC
+2F90C ; [.FB40.0020.0002][.EEC7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F90C
+FA99 ; [.FB40.0020.0002][.EECB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA99
+2F90B ; [.FB40.0020.0002][.EECB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F90B
+F904 ; [.FB40.0020.0002][.EED1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F904
+FA98 ; [.FB40.0020.0002][.EEDB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA98
+F94E ; [.FB40.0020.0002][.EF0F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F94E
+1F226 ; [.FB40.0020.001C][.EF14.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-6F14
+FA47 ; [.FB40.0020.0002][.EF22.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA47
+FA9A ; [.FB40.0020.0002][.EF22.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA9A
+F992 ; [.FB40.0020.0002][.EF23.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F992
+2F90F ; [.FB40.0020.0002][.EF6E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F90F
+2F912 ; [.FB40.0020.0002][.EFC6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F912
+F922 ; [.FB40.0020.0002][.EFEB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F922
+F984 ; [.FB40.0020.0002][.EFFE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F984
+2F915 ; [.FB40.0020.0002][.F01B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F915
+FA9B ; [.FB40.0020.0002][.F01E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA9B
+2F914 ; [.FB40.0020.0002][.F01E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F914
+2F913 ; [.FB40.0020.0002][.F039.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F913
+2F917 ; [.FB40.0020.0002][.F04A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F917
+2F55 ; [.FB40.0020.0004][.F06B.0000.0000] # KANGXI RADICAL FIRE
+322B ; [*0334.0020.0004][.FB40.0020.0004][.F06B.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH FIRE
+328B ; [.FB40.0020.0006][.F06B.0000.0000] # CIRCLED IDEOGRAPH FIRE
+2EA3 ; [.FB40.0020.0004][.F06C.0000.0000] # CJK RADICAL FIRE
+2F835 ; [.FB40.0020.0002][.F070.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F835
+2F919 ; [.FB40.0020.0002][.F077.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F919
+2F918 ; [.FB40.0020.0002][.F07D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F918
+F9FB ; [.FB40.0020.0002][.F099.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9FB
+2F91A ; [.FB40.0020.0002][.F0AD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F91A
+1F244 ; [*039E.0020.0004][.FB40.0020.0004][.F0B9.0000.0000][*039F.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9
+F99F ; [.FB40.0020.0002][.F0C8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F99F
+F916 ; [.FB40.0020.0002][.F0D9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F916
+1F21A ; [.FB40.0020.001C][.F121.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-7121
+2F91C ; [.FB40.0020.0002][.F145.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F91C
+F993 ; [.FB40.0020.0002][.F149.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F993
+FA48 ; [.FB40.0020.0002][.F16E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA48
+FA9C ; [.FB40.0020.0002][.F16E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA9C
+2F91E ; [.FB40.0020.0002][.F19C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F91E
+F9C0 ; [.FB40.0020.0002][.F1CE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C0
+F9EE ; [.FB40.0020.0002][.F1D0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9EE
+F932 ; [.FB40.0020.0002][.F210.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F932
+F91E ; [.FB40.0020.0002][.F21B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F91E
+2F920 ; [.FB40.0020.0002][.F228.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F920
+2F56 ; [.FB40.0020.0004][.F22A.0000.0000] # KANGXI RADICAL CLAW
+FA49 ; [.FB40.0020.0002][.F22B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA49
+2EA4 ; [.FB40.0020.0004][.F22B.0000.0000] # CJK RADICAL PAW ONE
+2EA5 ; [.FB40.0020.0004][.F22B.0000.0000][.0000.0118.0004] # CJK RADICAL PAW TWO
+FA9E ; [.FB40.0020.0002][.F235.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA9E
+2F921 ; [.FB40.0020.0002][.F235.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F921
+2F57 ; [.FB40.0020.0004][.F236.0000.0000] # KANGXI RADICAL FATHER
+2F58 ; [.FB40.0020.0004][.F23B.0000.0000] # KANGXI RADICAL DOUBLE X
+2F59 ; [.FB40.0020.0004][.F23F.0000.0000] # KANGXI RADICAL HALF TREE TRUNK
+2F5A ; [.FB40.0020.0004][.F247.0000.0000] # KANGXI RADICAL SLICE
+2F922 ; [.FB40.0020.0002][.F250.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F922
+2F5B ; [.FB40.0020.0004][.F259.0000.0000] # KANGXI RADICAL FANG
+2F5C ; [.FB40.0020.0004][.F25B.0000.0000] # KANGXI RADICAL COW
+2EA7 ; [.FB40.0020.0004][.F25B.0000.0000][.0000.0118.0004] # CJK RADICAL COW
+F946 ; [.FB40.0020.0002][.F262.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F946
+3235 ; [*0334.0020.0004][.FB40.0020.0004][.F279.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH SPECIAL
+3295 ; [.FB40.0020.0006][.F279.0000.0000] # CIRCLED IDEOGRAPH SPECIAL
+2F924 ; [.FB40.0020.0002][.F280.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F924
+2F925 ; [.FB40.0020.0002][.F295.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F925
+2F5D ; [.FB40.0020.0004][.F2AC.0000.0000] # KANGXI RADICAL DOG
+2EA8 ; [.FB40.0020.0004][.F2AD.0000.0000] # CJK RADICAL DOG
+FA9F ; [.FB40.0020.0002][.F2AF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA9F
+F9FA ; [.FB40.0020.0002][.F2C0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9FA
+F92B ; [.FB40.0020.0002][.F2FC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F92B
+FA16 ; [.FB40.0020.0002][.F32A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA16
+FAA0 ; [.FB40.0020.0002][.F32A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA0
+F9A7 ; [.FB40.0020.0002][.F375.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A7
+2F928 ; [.FB40.0020.0002][.F37A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F928
+2F5E ; [.FB40.0020.0004][.F384.0000.0000] # KANGXI RADICAL PROFOUND
+F961 ; [.FB40.0020.0002][.F387.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F961
+F9DB ; [.FB40.0020.0002][.F387.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9DB
+2F5F ; [.FB40.0020.0004][.F389.0000.0000] # KANGXI RADICAL JADE
+2F929 ; [.FB40.0020.0002][.F38B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F929
+2EA9 ; [.FB40.0020.0004][.F38B.0000.0000][.0000.0118.0004] # CJK RADICAL JADE
+2F92B ; [.FB40.0020.0002][.F3A5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F92B
+F9AD ; [.FB40.0020.0002][.F3B2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9AD
+F917 ; [.FB40.0020.0002][.F3DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F917
+F9E4 ; [.FB40.0020.0002][.F406.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E4
+F9CC ; [.FB40.0020.0002][.F409.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9CC
+FA4A ; [.FB40.0020.0002][.F422.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA4A
+2F92E ; [.FB40.0020.0002][.F447.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F92E
+2F92F ; [.FB40.0020.0002][.F45C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F92F
+F9AE ; [.FB40.0020.0002][.F469.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9AE
+FAA1 ; [.FB40.0020.0002][.F471.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA1
+2F930 ; [.FB40.0020.0002][.F471.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F930
+2F931 ; [.FB40.0020.0002][.F485.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F931
+F994 ; [.FB40.0020.0002][.F489.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F994
+F9EF ; [.FB40.0020.0002][.F498.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9EF
+2F932 ; [.FB40.0020.0002][.F4CA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F932
+2F60 ; [.FB40.0020.0004][.F4DC.0000.0000] # KANGXI RADICAL MELON
+2F61 ; [.FB40.0020.0004][.F4E6.0000.0000] # KANGXI RADICAL TILE
+FAA2 ; [.FB40.0020.0002][.F506.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA2
+2F62 ; [.FB40.0020.0004][.F518.0000.0000] # KANGXI RADICAL SWEET
+2F63 ; [.FB40.0020.0004][.F51F.0000.0000] # KANGXI RADICAL LIFE
+1F222 ; [.FB40.0020.001C][.F51F.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-751F
+2F934 ; [.FB40.0020.0002][.F524.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F934
+2F64 ; [.FB40.0020.0004][.F528.0000.0000] # KANGXI RADICAL USE
+2F65 ; [.FB40.0020.0004][.F530.0000.0000] # KANGXI RADICAL FIELD
+3199 ; [.FB40.0020.0014][.F532.0000.0000] # IDEOGRAPHIC ANNOTATION FIRST MARK
+1F238 ; [.FB40.0020.001C][.F533.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-7533
+329A ; [.FB40.0020.0006][.F537.0000.0000] # CIRCLED IDEOGRAPH MALE
+FAA3 ; [.FB40.0020.0002][.F53B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA3
+2F936 ; [.FB40.0020.0002][.F53E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F936
+F9CD ; [.FB40.0020.0002][.F559.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9CD
+F976 ; [.FB40.0020.0002][.F565.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F976
+F962 ; [.FB40.0020.0002][.F570.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F962
+2F938 ; [.FB40.0020.0002][.F570.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F938
+2F66 ; [.FB40.0020.0004][.F58B.0000.0000] # KANGXI RADICAL BOLT OF CLOTH
+2EAA ; [.FB40.0020.0004][.F58B.0000.0000][.0000.0118.0004] # CJK RADICAL BOLT OF CLOTH
+2F67 ; [.FB40.0020.0004][.F592.0000.0000] # KANGXI RADICAL SICKNESS
+F9E5 ; [.FB40.0020.0002][.F5E2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E5
+2F93A ; [.FB40.0020.0002][.F610.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F93A
+FAA4 ; [.FB40.0020.0002][.F61D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA4
+FAA5 ; [.FB40.0020.0002][.F61F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA5
+F9C1 ; [.FB40.0020.0002][.F642.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C1
+F90E ; [.FB40.0020.0002][.F669.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F90E
+2F68 ; [.FB40.0020.0004][.F676.0000.0000] # KANGXI RADICAL DOTTED TENT
+2F69 ; [.FB40.0020.0004][.F67D.0000.0000] # KANGXI RADICAL WHITE
+2F6A ; [.FB40.0020.0004][.F6AE.0000.0000] # KANGXI RADICAL SKIN
+2F6B ; [.FB40.0020.0004][.F6BF.0000.0000] # KANGXI RADICAL DISH
+FA17 ; [.FB40.0020.0002][.F6CA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA17
+FAA6 ; [.FB40.0020.0002][.F6CA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA6
+1F246 ; [*039E.0020.0004][.FB40.0020.0004][.F6D7.0000.0000][*039F.0020.0004] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7
+FAA7 ; [.FB40.0020.0002][.F6DB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA7
+323C ; [*0334.0020.0004][.FB40.0020.0004][.F6E3.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH SUPERVISE
+32AC ; [.FB40.0020.0006][.F6E3.0000.0000] # CIRCLED IDEOGRAPH SUPERVISE
+F933 ; [.FB40.0020.0002][.F6E7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F933
+2F6C ; [.FB40.0020.0004][.F6EE.0000.0000] # KANGXI RADICAL EYE
+2EAB ; [.FB40.0020.0004][.F6EE.0000.0000][.0000.0118.0004] # CJK RADICAL EYE
+FAA8 ; [.FB40.0020.0002][.F6F4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA8
+2F940 ; [.FB40.0020.0002][.F6F4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F940
+F96D ; [.FB40.0020.0002][.F701.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F96D
+2F945 ; [.FB40.0020.0002][.F71E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F945
+2F946 ; [.FB40.0020.0002][.F71F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F946
+2F947 ; [.FB40.0020.0002][.F71F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F947
+FAAA ; [.FB40.0020.0002][.F740.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAAA
+FAA9 ; [.FB40.0020.0002][.F74A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAA9
+2F948 ; [.FB40.0020.0002][.F74A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F948
+2F94A ; [.FB40.0020.0002][.F78B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F94A
+FA9D ; [.FB40.0020.0002][.F7A7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA9D
+2F6D ; [.FB40.0020.0004][.F7DB.0000.0000] # KANGXI RADICAL SPEAR
+2F6E ; [.FB40.0020.0004][.F7E2.0000.0000] # KANGXI RADICAL ARROW
+2F6F ; [.FB40.0020.0004][.F7F3.0000.0000] # KANGXI RADICAL STONE
+2F94E ; [.FB40.0020.0002][.F84E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F94E
+F9CE ; [.FB40.0020.0002][.F86B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9CE
+F93B ; [.FB40.0020.0002][.F88C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F93B
+2F94F ; [.FB40.0020.0002][.F88C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F94F
+FA4B ; [.FB40.0020.0002][.F891.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA4B
+F947 ; [.FB40.0020.0002][.F8CA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F947
+FAAB ; [.FB40.0020.0002][.F8CC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAAB
+2F950 ; [.FB40.0020.0002][.F8CC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F950
+F964 ; [.FB40.0020.0002][.F8FB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F964
+F985 ; [.FB40.0020.0002][.F92A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F985
+2F70 ; [.FB40.0020.0004][.F93A.0000.0000] # KANGXI RADICAL SPIRIT
+2EAC ; [.FB40.0020.0004][.F93A.0000.0000][.0000.0118.0004] # CJK RADICAL SPIRIT ONE
+2EAD ; [.FB40.0020.0004][.F93B.0000.0000] # CJK RADICAL SPIRIT TWO
+FA18 ; [.FB40.0020.0002][.F93C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA18
+FA4C ; [.FB40.0020.0002][.F93E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA4C
+3233 ; [*0334.0020.0004][.FB40.0020.0004][.F93E.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH SOCIETY
+3293 ; [.FB40.0020.0006][.F93E.0000.0000] # CIRCLED IDEOGRAPH SOCIETY
+FA4E ; [.FB40.0020.0002][.F948.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA4E
+FA4D ; [.FB40.0020.0002][.F949.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA4D
+FA4F ; [.FB40.0020.0002][.F950.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA4F
+FA50 ; [.FB40.0020.0002][.F956.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA50
+2F953 ; [.FB40.0020.0002][.F956.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F953
+FA51 ; [.FB40.0020.0002][.F95D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA51
+3237 ; [*0334.0020.0004][.FB40.0020.0004][.F95D.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH CONGRATULATION
+3297 ; [.FB40.0020.0006][.F95D.0000.0000] # CIRCLED IDEOGRAPH CONGRATULATION
+FA19 ; [.FB40.0020.0002][.F95E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA19
+FA1A ; [.FB40.0020.0002][.F965.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA1A
+3240 ; [*0334.0020.0004][.FB40.0020.0004][.F96D.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH FESTIVAL
+F93C ; [.FB40.0020.0002][.F97F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F93C
+1F232 ; [.FB40.0020.001C][.F981.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-7981
+FA52 ; [.FB40.0020.0002][.F98D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA52
+FA53 ; [.FB40.0020.0002][.F98E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA53
+FA1B ; [.FB40.0020.0002][.F98F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA1B
+2F956 ; [.FB40.0020.0002][.F98F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F956
+F9B6 ; [.FB40.0020.0002][.F9AE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B6
+2F71 ; [.FB40.0020.0004][.F9B8.0000.0000] # KANGXI RADICAL TRACK
+2F72 ; [.FB40.0020.0004][.F9BE.0000.0000] # KANGXI RADICAL GRAIN
+F995 ; [.FB40.0020.0002][.F9CA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F995
+3299 ; [.FB40.0020.0006][.F9D8.0000.0000] # CIRCLED IDEOGRAPH SECRET
+2F957 ; [.FB40.0020.0002][.F9EB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F957
+F956 ; [.FB40.0020.0002][.FA1C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F956
+FA54 ; [.FB40.0020.0002][.FA40.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA54
+2F959 ; [.FB40.0020.0002][.FA40.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F959
+2F95A ; [.FB40.0020.0002][.FA4A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F95A
+2F95B ; [.FB40.0020.0002][.FA4F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F95B
+2F73 ; [.FB40.0020.0004][.FA74.0000.0000] # KANGXI RADICAL CAVE
+1F233 ; [.FB40.0020.001C][.FA7A.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-7A7A
+FA55 ; [.FB40.0020.0002][.FA81.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA55
+FAAC ; [.FB40.0020.0002][.FAB1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAAC
+F9F7 ; [.FB40.0020.0002][.FACB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F7
+2F74 ; [.FB40.0020.0004][.FACB.0000.0000] # KANGXI RADICAL STAND
+2F95F ; [.FB40.0020.0002][.FAEE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F95F
+2F75 ; [.FB40.0020.0004][.FAF9.0000.0000] # KANGXI RADICAL BAMBOO
+2EAE ; [.FB40.0020.0004][.FAF9.0000.0000][.0000.0118.0004] # CJK RADICAL BAMBOO
+F9F8 ; [.FB40.0020.0002][.FB20.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F8
+3247 ; [.FB40.0020.0006][.FB8F.0000.0000] # CIRCLED IDEOGRAPH KOTO
+FA56 ; [.FB40.0020.0002][.FBC0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA56
+FAAD ; [.FB40.0020.0002][.FBC0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAAD
+2F962 ; [.FB40.0020.0002][.FBC6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F962
+2F963 ; [.FB40.0020.0002][.FBC9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F963
+F9A6 ; [.FB40.0020.0002][.FC3E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A6
+F944 ; [.FB40.0020.0002][.FC60.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F944
+2F76 ; [.FB40.0020.0004][.FC73.0000.0000] # KANGXI RADICAL RICE
+FAAE ; [.FB40.0020.0002][.FC7B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAAE
+F9F9 ; [.FB40.0020.0002][.FC92.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F9
+FA1D ; [.FB40.0020.0002][.FCBE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA1D
+2F966 ; [.FB40.0020.0002][.FCD2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F966
+FA03 ; [.FB40.0020.0002][.FCD6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA03
+2F969 ; [.FB40.0020.0002][.FCE3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F969
+F97B ; [.FB40.0020.0002][.FCE7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F97B
+2F968 ; [.FB40.0020.0002][.FCE8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F968
+2F77 ; [.FB40.0020.0004][.FCF8.0000.0000] # KANGXI RADICAL SILK
+2EAF ; [.FB40.0020.0004][.FCF9.0000.0000] # CJK RADICAL SILK
+2F96A ; [.FB40.0020.0002][.FD00.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F96A
+F9CF ; [.FB40.0020.0002][.FD10.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9CF
+F96A ; [.FB40.0020.0002][.FD22.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F96A
+F94F ; [.FB40.0020.0002][.FD2F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F94F
+1F221 ; [.FB40.0020.001C][.FD42.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-7D42
+FAAF ; [.FB40.0020.0002][.FD5B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAAF
+2F96C ; [.FB40.0020.0002][.FD63.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F96C
+F93D ; [.FB40.0020.0002][.FDA0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F93D
+F957 ; [.FB40.0020.0002][.FDBE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F957
+2F96E ; [.FB40.0020.0002][.FDC7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F96E
+F996 ; [.FB40.0020.0002][.FDF4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F996
+FA57 ; [.FB40.0020.0002][.FDF4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA57
+FAB0 ; [.FB40.0020.0002][.FDF4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB0
+2F96F ; [.FB40.0020.0002][.FE02.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F96F
+FA58 ; [.FB40.0020.0002][.FE09.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA58
+F950 ; [.FB40.0020.0002][.FE37.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F950
+FA59 ; [.FB40.0020.0002][.FE41.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA59
+2F970 ; [.FB40.0020.0002][.FE45.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F970
+2EB0 ; [.FB40.0020.0004][.FE9F.0000.0000] # CJK RADICAL C-SIMPLIFIED SILK
+2F78 ; [.FB40.0020.0004][.FF36.0000.0000] # KANGXI RADICAL JAR
+FAB1 ; [.FB40.0020.0002][.FF3E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB1
+2F79 ; [.FB40.0020.0004][.FF51.0000.0000] # KANGXI RADICAL NET
+2EB2 ; [.FB40.0020.0004][.FF52.0000.0000] # CJK RADICAL NET TWO
+2EB5 ; [.FB40.0020.0004][.FF52.0000.0000][.0000.0118.0004] # CJK RADICAL MESH
+2EB1 ; [.FB40.0020.0004][.FF53.0000.0000] # CJK RADICAL NET ONE
+2EB3 ; [.FB40.0020.0004][.FF53.0000.0000][.0000.0118.0004] # CJK RADICAL NET THREE
+2EB4 ; [.FB40.0020.0004][.FF53.0000.0000][.0000.0119.0004] # CJK RADICAL NET FOUR
+FA5A ; [.FB40.0020.0002][.FF72.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA5A
+F9E6 ; [.FB40.0020.0002][.FF79.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E6
+2F976 ; [.FB40.0020.0002][.FF7A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F976
+F90F ; [.FB40.0020.0002][.FF85.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F90F
+2F7A ; [.FB40.0020.0004][.FF8A.0000.0000] # KANGXI RADICAL SHEEP
+2EB6 ; [.FB40.0020.0004][.FF8A.0000.0000][.0000.0118.0004] # CJK RADICAL SHEEP
+2EB7 ; [.FB40.0020.0004][.FF8A.0000.0000][.0000.0119.0004] # CJK RADICAL RAM
+2EB8 ; [.FB40.0020.0004][.FF8B.0000.0000] # CJK RADICAL EWE
+2F978 ; [.FB40.0020.0002][.FF95.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F978
+F9AF ; [.FB40.0020.0002][.FF9A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9AF
+FA1E ; [.FB40.0020.0002][.FFBD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA1E
+2F7B ; [.FB40.0020.0004][.FFBD.0000.0000] # KANGXI RADICAL FEATHER
+2F979 ; [.FB40.0020.0002][.FFFA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F979
+F934 ; [.FB41.0020.0002][.8001.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F934
+2F7C ; [.FB41.0020.0004][.8001.0000.0000] # KANGXI RADICAL OLD
+2EB9 ; [.FB41.0020.0004][.8002.0000.0000] # CJK RADICAL OLD
+FA5B ; [.FB41.0020.0002][.8005.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA5B
+FAB2 ; [.FB41.0020.0002][.8005.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB2
+2F97A ; [.FB41.0020.0002][.8005.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F97A
+2F7D ; [.FB41.0020.0004][.800C.0000.0000] # KANGXI RADICAL AND
+2F7E ; [.FB41.0020.0004][.8012.0000.0000] # KANGXI RADICAL PLOW
+2F7F ; [.FB41.0020.0004][.8033.0000.0000] # KANGXI RADICAL EAR
+F9B0 ; [.FB41.0020.0002][.8046.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B0
+2F97D ; [.FB41.0020.0002][.8060.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F97D
+F997 ; [.FB41.0020.0002][.806F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F997
+2F97F ; [.FB41.0020.0002][.8070.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F97F
+F945 ; [.FB41.0020.0002][.807E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F945
+2F80 ; [.FB41.0020.0004][.807F.0000.0000] # KANGXI RADICAL BRUSH
+2EBB ; [.FB41.0020.0004][.807F.0000.0000][.0000.0118.0004] # CJK RADICAL BRUSH TWO
+2EBA ; [.FB41.0020.0004][.8080.0000.0000] # CJK RADICAL BRUSH ONE
+2F81 ; [.FB41.0020.0004][.8089.0000.0000] # KANGXI RADICAL MEAT
+2EBC ; [.FB41.0020.0004][.8089.0000.0000][.0000.0118.0004] # CJK RADICAL MEAT
+F953 ; [.FB41.0020.0002][.808B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F953
+2F8D6 ; [.FB41.0020.0002][.80AD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D6
+2F982 ; [.FB41.0020.0002][.80B2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F982
+2F983 ; [.FB41.0020.0002][.8103.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F983
+2F985 ; [.FB41.0020.0002][.813E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F985
+F926 ; [.FB41.0020.0002][.81D8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F926
+2F82 ; [.FB41.0020.0004][.81E3.0000.0000] # KANGXI RADICAL MINISTER
+F9F6 ; [.FB41.0020.0002][.81E8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F6
+2F83 ; [.FB41.0020.0004][.81EA.0000.0000] # KANGXI RADICAL SELF
+3242 ; [*0334.0020.0004][.FB41.0020.0004][.81EA.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH SELF
+FA5C ; [.FB41.0020.0002][.81ED.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA5C
+2F84 ; [.FB41.0020.0004][.81F3.0000.0000] # KANGXI RADICAL ARRIVE
+3243 ; [*0334.0020.0004][.FB41.0020.0004][.81F3.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH REACH
+2F85 ; [.FB41.0020.0004][.81FC.0000.0000] # KANGXI RADICAL MORTAR
+2EBD ; [.FB41.0020.0004][.81FC.0000.0000][.0000.0118.0004] # CJK RADICAL MORTAR
+2F893 ; [.FB41.0020.0002][.8201.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F893
+2F98B ; [.FB41.0020.0002][.8201.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F98B
+2F98C ; [.FB41.0020.0002][.8204.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F98C
+2F86 ; [.FB41.0020.0004][.820C.0000.0000] # KANGXI RADICAL TONGUE
+FA6D ; [.FB41.0020.0002][.8218.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA6D
+2F87 ; [.FB41.0020.0004][.821B.0000.0000] # KANGXI RADICAL OPPOSE
+2F88 ; [.FB41.0020.0004][.821F.0000.0000] # KANGXI RADICAL BOAT
+2F89 ; [.FB41.0020.0004][.826E.0000.0000] # KANGXI RADICAL STOPPING
+F97C ; [.FB41.0020.0002][.826F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F97C
+2F8A ; [.FB41.0020.0004][.8272.0000.0000] # KANGXI RADICAL COLOR
+2F8B ; [.FB41.0020.0004][.8278.0000.0000] # KANGXI RADICAL GRASS
+FA5D ; [.FB41.0020.0002][.8279.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA5D
+FA5E ; [.FB41.0020.0002][.8279.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA5E
+2EBE ; [.FB41.0020.0004][.8279.0000.0000] # CJK RADICAL GRASS ONE
+2EBF ; [.FB41.0020.0004][.8279.0000.0000][.0000.0118.0004] # CJK RADICAL GRASS TWO
+2EC0 ; [.FB41.0020.0004][.8279.0000.0000][.0000.0119.0004] # CJK RADICAL GRASS THREE
+2F990 ; [.FB41.0020.0002][.828B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F990
+2F98F ; [.FB41.0020.0002][.8291.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F98F
+2F991 ; [.FB41.0020.0002][.829D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F991
+2F993 ; [.FB41.0020.0002][.82B1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F993
+2F994 ; [.FB41.0020.0002][.82B3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F994
+2F995 ; [.FB41.0020.0002][.82BD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F995
+F974 ; [.FB41.0020.0002][.82E5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F974
+2F998 ; [.FB41.0020.0002][.82E5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F998
+2F996 ; [.FB41.0020.0002][.82E6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F996
+2F999 ; [.FB41.0020.0002][.831D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F999
+2F99C ; [.FB41.0020.0002][.8323.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F99C
+F9FE ; [.FB41.0020.0002][.8336.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9FE
+FAB3 ; [.FB41.0020.0002][.8352.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB3
+2F9A0 ; [.FB41.0020.0002][.8353.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9A0
+2F99A ; [.FB41.0020.0002][.8363.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F99A
+2F99B ; [.FB41.0020.0002][.83AD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F99B
+2F99D ; [.FB41.0020.0002][.83BD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F99D
+F93E ; [.FB41.0020.0002][.83C9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F93E
+2F9A1 ; [.FB41.0020.0002][.83CA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9A1
+2F9A2 ; [.FB41.0020.0002][.83CC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9A2
+2F9A3 ; [.FB41.0020.0002][.83DC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9A3
+2F99E ; [.FB41.0020.0002][.83E7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F99E
+FAB4 ; [.FB41.0020.0002][.83EF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB4
+F958 ; [.FB41.0020.0002][.83F1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F958
+F918 ; [.FB41.0020.0002][.843D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F918
+F96E ; [.FB41.0020.0002][.8449.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F96E
+FA5F ; [.FB41.0020.0002][.8457.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA5F
+2F99F ; [.FB41.0020.0002][.8457.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F99F
+F999 ; [.FB41.0020.0002][.84EE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F999
+2F9A8 ; [.FB41.0020.0002][.84F1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9A8
+2F9A9 ; [.FB41.0020.0002][.84F3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9A9
+F9C2 ; [.FB41.0020.0002][.84FC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C2
+2F9AA ; [.FB41.0020.0002][.8516.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9AA
+2F9AC ; [.FB41.0020.0002][.8564.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9AC
+F923 ; [.FB41.0020.0002][.85CD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F923
+F9F0 ; [.FB41.0020.0002][.85FA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F0
+F935 ; [.FB41.0020.0002][.8606.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F935
+FA20 ; [.FB41.0020.0002][.8612.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA20
+F91F ; [.FB41.0020.0002][.862D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F91F
+F910 ; [.FB41.0020.0002][.863F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F910
+2F8C ; [.FB41.0020.0004][.864D.0000.0000] # KANGXI RADICAL TIGER
+2EC1 ; [.FB41.0020.0004][.864E.0000.0000] # CJK RADICAL TIGER
+2F9B3 ; [.FB41.0020.0002][.8650.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9B3
+F936 ; [.FB41.0020.0002][.865C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F936
+2F9B4 ; [.FB41.0020.0002][.865C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9B4
+2F9B5 ; [.FB41.0020.0002][.8667.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9B5
+2F9B6 ; [.FB41.0020.0002][.8669.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9B6
+2F8D ; [.FB41.0020.0004][.866B.0000.0000] # KANGXI RADICAL INSECT
+2F9B8 ; [.FB41.0020.0002][.8688.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9B8
+2F9B7 ; [.FB41.0020.0002][.86A9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9B7
+2F9BA ; [.FB41.0020.0002][.86E2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9BA
+2F9B9 ; [.FB41.0020.0002][.870E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9B9
+2F9BC ; [.FB41.0020.0002][.8728.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9BC
+2F9BD ; [.FB41.0020.0002][.876B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9BD
+FAB5 ; [.FB41.0020.0002][.8779.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB5
+2F9BB ; [.FB41.0020.0002][.8779.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9BB
+2F9BE ; [.FB41.0020.0002][.8786.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9BE
+F911 ; [.FB41.0020.0002][.87BA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F911
+2F9C0 ; [.FB41.0020.0002][.87E1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9C0
+2F9C1 ; [.FB41.0020.0002][.8801.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9C1
+F927 ; [.FB41.0020.0002][.881F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F927
+2F8E ; [.FB41.0020.0004][.8840.0000.0000] # KANGXI RADICAL BLOOD
+FA08 ; [.FB41.0020.0002][.884C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA08
+2F8F ; [.FB41.0020.0004][.884C.0000.0000] # KANGXI RADICAL WALK ENCLOSURE
+2F9C3 ; [.FB41.0020.0002][.8860.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9C3
+2F9C4 ; [.FB41.0020.0002][.8863.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9C4
+2F90 ; [.FB41.0020.0004][.8863.0000.0000] # KANGXI RADICAL CLOTHES
+2EC2 ; [.FB41.0020.0004][.8864.0000.0000] # CJK RADICAL CLOTHES
+F9A0 ; [.FB41.0020.0002][.88C2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A0
+F9E7 ; [.FB41.0020.0002][.88CF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E7
+2F9C6 ; [.FB41.0020.0002][.88D7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9C6
+2F9C7 ; [.FB41.0020.0002][.88DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9C7
+F9E8 ; [.FB41.0020.0002][.88E1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E8
+F912 ; [.FB41.0020.0002][.88F8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F912
+2F9C9 ; [.FB41.0020.0002][.88FA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9C9
+FA60 ; [.FB41.0020.0002][.8910.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA60
+FAB6 ; [.FB41.0020.0002][.8941.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB6
+F924 ; [.FB41.0020.0002][.8964.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F924
+2F91 ; [.FB41.0020.0004][.897E.0000.0000] # KANGXI RADICAL WEST
+2EC4 ; [.FB41.0020.0004][.897F.0000.0000] # CJK RADICAL WEST TWO
+2EC3 ; [.FB41.0020.0004][.8980.0000.0000] # CJK RADICAL WEST ONE
+FAB7 ; [.FB41.0020.0002][.8986.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB7
+FA0A ; [.FB41.0020.0002][.898B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA0A
+2F92 ; [.FB41.0020.0004][.898B.0000.0000] # KANGXI RADICAL SEE
+FA61 ; [.FB41.0020.0002][.8996.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA61
+FAB8 ; [.FB41.0020.0002][.8996.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB8
+2EC5 ; [.FB41.0020.0004][.89C1.0000.0000] # CJK RADICAL C-SIMPLIFIED SEE
+2EC6 ; [.FB41.0020.0004][.89D2.0000.0000] # CJK RADICAL SIMPLIFIED HORN
+2F93 ; [.FB41.0020.0004][.89D2.0000.0000] # KANGXI RADICAL HORN
+2EC7 ; [.FB41.0020.0004][.89D2.0000.0000][.0000.0118.0004] # CJK RADICAL HORN
+1F216 ; [.FB41.0020.001C][.89E3.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-89E3
+2F94 ; [.FB41.0020.0004][.8A00.0000.0000] # KANGXI RADICAL SPEECH
+2F9CF ; [.FB41.0020.0002][.8AA0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9CF
+F96F ; [.FB41.0020.0002][.8AAA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F96F
+F9A1 ; [.FB41.0020.0002][.8AAA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9A1
+FAB9 ; [.FB41.0020.0002][.8ABF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAB9
+FABB ; [.FB41.0020.0002][.8ACB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FABB
+F97D ; [.FB41.0020.0002][.8AD2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F97D
+F941 ; [.FB41.0020.0002][.8AD6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F941
+FABE ; [.FB41.0020.0002][.8AED.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FABE
+2F9D0 ; [.FB41.0020.0002][.8AED.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D0
+FA22 ; [.FB41.0020.0002][.8AF8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA22
+FABA ; [.FB41.0020.0002][.8AF8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FABA
+F95D ; [.FB41.0020.0002][.8AFE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F95D
+FABD ; [.FB41.0020.0002][.8AFE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FABD
+FA62 ; [.FB41.0020.0002][.8B01.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA62
+FABC ; [.FB41.0020.0002][.8B01.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FABC
+FA63 ; [.FB41.0020.0002][.8B39.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA63
+FABF ; [.FB41.0020.0002][.8B39.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FABF
+F9FC ; [.FB41.0020.0002][.8B58.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9FC
+F95A ; [.FB41.0020.0002][.8B80.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F95A
+FAC0 ; [.FB41.0020.0002][.8B8A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC0
+2F9D1 ; [.FB41.0020.0002][.8B8A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D1
+2EC8 ; [.FB41.0020.0004][.8BA0.0000.0000] # CJK RADICAL C-SIMPLIFIED SPEECH
+2F95 ; [.FB41.0020.0004][.8C37.0000.0000] # KANGXI RADICAL VALLEY
+2F96 ; [.FB41.0020.0004][.8C46.0000.0000] # KANGXI RADICAL BEAN
+F900 ; [.FB41.0020.0002][.8C48.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F900
+2F9D2 ; [.FB41.0020.0002][.8C55.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D2
+2F97 ; [.FB41.0020.0004][.8C55.0000.0000] # KANGXI RADICAL PIG
+2F98 ; [.FB41.0020.0004][.8C78.0000.0000] # KANGXI RADICAL BADGER
+2F99 ; [.FB41.0020.0004][.8C9D.0000.0000] # KANGXI RADICAL SHELL
+3236 ; [*0334.0020.0004][.FB41.0020.0004][.8CA1.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH FINANCIAL
+3296 ; [.FB41.0020.0006][.8CA1.0000.0000] # CIRCLED IDEOGRAPH FINANCIAL
+1F223 ; [.FB41.0020.001C][.8CA9.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-8CA9
+2F9D4 ; [.FB41.0020.0002][.8CAB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D4
+2F9D5 ; [.FB41.0020.0002][.8CC1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D5
+F948 ; [.FB41.0020.0002][.8CC2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F948
+323E ; [*0334.0020.0004][.FB41.0020.0004][.8CC7.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH RESOURCE
+32AE ; [.FB41.0020.0006][.8CC7.0000.0000] # CIRCLED IDEOGRAPH RESOURCE
+F903 ; [.FB41.0020.0002][.8CC8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F903
+FA64 ; [.FB41.0020.0002][.8CD3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA64
+FA65 ; [.FB41.0020.0002][.8D08.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA65
+FAC1 ; [.FB41.0020.0002][.8D08.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC1
+2F9D6 ; [.FB41.0020.0002][.8D1B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D6
+2EC9 ; [.FB41.0020.0004][.8D1D.0000.0000] # CJK RADICAL C-SIMPLIFIED SHELL
+2F9A ; [.FB41.0020.0004][.8D64.0000.0000] # KANGXI RADICAL RED
+2F9B ; [.FB41.0020.0004][.8D70.0000.0000] # KANGXI RADICAL RUN
+1F230 ; [.FB41.0020.001C][.8D70.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-8D70
+2F9D7 ; [.FB41.0020.0002][.8D77.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D7
+2F9C ; [.FB41.0020.0004][.8DB3.0000.0000] # KANGXI RADICAL FOOT
+2ECA ; [.FB41.0020.0004][.8DB3.0000.0000][.0000.0118.0004] # CJK RADICAL FOOT
+2F9DB ; [.FB41.0020.0002][.8DBC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9DB
+2F9DA ; [.FB41.0020.0002][.8DCB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9DA
+F937 ; [.FB41.0020.0002][.8DEF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F937
+2F9DC ; [.FB41.0020.0002][.8DF0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9DC
+2F9D ; [.FB41.0020.0004][.8EAB.0000.0000] # KANGXI RADICAL BODY
+F902 ; [.FB41.0020.0002][.8ECA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F902
+2F9E ; [.FB41.0020.0004][.8ECA.0000.0000] # KANGXI RADICAL CART
+2F9DE ; [.FB41.0020.0002][.8ED4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9DE
+F998 ; [.FB41.0020.0002][.8F26.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F998
+F9D7 ; [.FB41.0020.0002][.8F2A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D7
+FAC2 ; [.FB41.0020.0002][.8F38.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC2
+2F9DF ; [.FB41.0020.0002][.8F38.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9DF
+FA07 ; [.FB41.0020.0002][.8F3B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA07
+F98D ; [.FB41.0020.0002][.8F62.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F98D
+2ECB ; [.FB41.0020.0004][.8F66.0000.0000] # CJK RADICAL C-SIMPLIFIED CART
+2F9F ; [.FB41.0020.0004][.8F9B.0000.0000] # KANGXI RADICAL BITTER
+2F98D ; [.FB41.0020.0002][.8F9E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F98D
+F971 ; [.FB41.0020.0002][.8FB0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F971
+2FA0 ; [.FB41.0020.0004][.8FB0.0000.0000] # KANGXI RADICAL MORNING
+2FA1 ; [.FB41.0020.0004][.8FB5.0000.0000] # KANGXI RADICAL WALK
+FA66 ; [.FB41.0020.0002][.8FB6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA66
+2ECC ; [.FB41.0020.0004][.8FB6.0000.0000] # CJK RADICAL SIMPLIFIED WALK
+2ECD ; [.FB41.0020.0004][.8FB6.0000.0000][.0000.0118.0004] # CJK RADICAL WALK ONE
+2ECE ; [.FB41.0020.0004][.8FB6.0000.0000][.0000.0119.0004] # CJK RADICAL WALK TWO
+F99A ; [.FB41.0020.0002][.9023.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F99A
+FA25 ; [.FB41.0020.0002][.9038.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA25
+FA67 ; [.FB41.0020.0002][.9038.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA67
+1F22B ; [.FB41.0020.001C][.904A.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-904A
+329C ; [.FB41.0020.0006][.9069.0000.0000] # CIRCLED IDEOGRAPH SUITABLE
+FAC3 ; [.FB41.0020.0002][.9072.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC3
+F9C3 ; [.FB41.0020.0002][.907C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C3
+F913 ; [.FB41.0020.0002][.908F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F913
+2FA2 ; [.FB41.0020.0004][.9091.0000.0000] # KANGXI RADICAL CITY
+2ECF ; [.FB41.0020.0004][.9091.0000.0000][.0000.0118.0004] # CJK RADICAL CITY
+2F9E2 ; [.FB41.0020.0002][.9094.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E2
+F92C ; [.FB41.0020.0002][.90CE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F92C
+FA2E ; [.FB41.0020.0002][.90DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA2E
+2F9E3 ; [.FB41.0020.0002][.90F1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E3
+FA26 ; [.FB41.0020.0002][.90FD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA26
+2F9E4 ; [.FB41.0020.0002][.9111.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E4
+2F9E6 ; [.FB41.0020.0002][.911B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E6
+2FA3 ; [.FB41.0020.0004][.9149.0000.0000] # KANGXI RADICAL WINE
+1F23B ; [.FB41.0020.001C][.914D.0000.0000] # SQUARED CJK UNIFIED IDEOGRAPH-914D
+F919 ; [.FB41.0020.0002][.916A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F919
+FAC4 ; [.FB41.0020.0002][.9199.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC4
+F9B7 ; [.FB41.0020.0002][.91B4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B7
+2FA4 ; [.FB41.0020.0004][.91C6.0000.0000] # KANGXI RADICAL DISTINGUISH
+F9E9 ; [.FB41.0020.0002][.91CC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9E9
+2FA5 ; [.FB41.0020.0004][.91CC.0000.0000] # KANGXI RADICAL VILLAGE
+F97E ; [.FB41.0020.0002][.91CF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F97E
+F90A ; [.FB41.0020.0002][.91D1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F90A
+2FA6 ; [.FB41.0020.0004][.91D1.0000.0000] # KANGXI RADICAL GOLD
+322E ; [*0334.0020.0004][.FB41.0020.0004][.91D1.0000.0000][*0335.0020.0004] # PARENTHESIZED IDEOGRAPH METAL
+328E ; [.FB41.0020.0006][.91D1.0000.0000] # CIRCLED IDEOGRAPH METAL
+F9B1 ; [.FB41.0020.0002][.9234.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B1
+2F9E7 ; [.FB41.0020.0002][.9238.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E7
+FAC5 ; [.FB41.0020.0002][.9276.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC5
+2F9EA ; [.FB41.0020.0002][.927C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9EA
+2F9E8 ; [.FB41.0020.0002][.92D7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E8
+2F9E9 ; [.FB41.0020.0002][.92D8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E9
+F93F ; [.FB41.0020.0002][.9304.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F93F
+F99B ; [.FB41.0020.0002][.934A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F99B
+2F9EB ; [.FB41.0020.0002][.93F9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9EB
+2F9EC ; [.FB41.0020.0002][.9415.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9EC
+2ED0 ; [.FB41.0020.0004][.9485.0000.0000] # CJK RADICAL C-SIMPLIFIED GOLD
+2ED1 ; [.FB41.0020.0004][.9577.0000.0000] # CJK RADICAL LONG ONE
+2FA7 ; [.FB41.0020.0004][.9577.0000.0000] # KANGXI RADICAL LONG
+2ED2 ; [.FB41.0020.0004][.9578.0000.0000] # CJK RADICAL LONG TWO
+2ED3 ; [.FB41.0020.0004][.957F.0000.0000] # CJK RADICAL C-SIMPLIFIED LONG
+2FA8 ; [.FB41.0020.0004][.9580.0000.0000] # KANGXI RADICAL GATE
+2F9EE ; [.FB41.0020.0002][.958B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9EE
+F986 ; [.FB41.0020.0002][.95AD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F986
+2F9F0 ; [.FB41.0020.0002][.95B7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F0
+2ED4 ; [.FB41.0020.0004][.95E8.0000.0000] # CJK RADICAL C-SIMPLIFIED GATE
+2FA9 ; [.FB41.0020.0004][.961C.0000.0000] # KANGXI RADICAL MOUND
+2ED5 ; [.FB41.0020.0004][.961C.0000.0000][.0000.0118.0004] # CJK RADICAL MOUND ONE
+2ED6 ; [.FB41.0020.0004][.961D.0000.0000] # CJK RADICAL MOUND TWO
+F9C6 ; [.FB41.0020.0002][.962E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C6
+F951 ; [.FB41.0020.0002][.964B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F951
+FA09 ; [.FB41.0020.0002][.964D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA09
+F959 ; [.FB41.0020.0002][.9675.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F959
+F9D3 ; [.FB41.0020.0002][.9678.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D3
+FAC6 ; [.FB41.0020.0002][.967C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC6
+F9DC ; [.FB41.0020.0002][.9686.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9DC
+F9F1 ; [.FB41.0020.0002][.96A3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F1
+2FAA ; [.FB41.0020.0004][.96B6.0000.0000] # KANGXI RADICAL SLAVE
+FA2F ; [.FB41.0020.0002][.96B7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA2F
+F9B8 ; [.FB41.0020.0002][.96B8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B8
+2FAB ; [.FB41.0020.0004][.96B9.0000.0000] # KANGXI RADICAL SHORT TAILED BIRD
+2F9F3 ; [.FB41.0020.0002][.96C3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F3
+F9EA ; [.FB41.0020.0002][.96E2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9EA
+FA68 ; [.FB41.0020.0002][.96E3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA68
+FAC7 ; [.FB41.0020.0002][.96E3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC7
+2FAC ; [.FB41.0020.0004][.96E8.0000.0000] # KANGXI RADICAL RAIN
+2ED7 ; [.FB41.0020.0004][.96E8.0000.0000][.0000.0118.0004] # CJK RADICAL RAIN
+F9B2 ; [.FB41.0020.0002][.96F6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B2
+F949 ; [.FB41.0020.0002][.96F7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F949
+2F9F5 ; [.FB41.0020.0002][.9723.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F5
+F938 ; [.FB41.0020.0002][.9732.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F938
+F9B3 ; [.FB41.0020.0002][.9748.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B3
+2FAD ; [.FB41.0020.0004][.9751.0000.0000] # KANGXI RADICAL BLUE
+2ED8 ; [.FB41.0020.0004][.9752.0000.0000] # CJK RADICAL BLUE
+FA1C ; [.FB41.0020.0002][.9756.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA1C
+FAC8 ; [.FB41.0020.0002][.9756.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC8
+2FAE ; [.FB41.0020.0004][.975E.0000.0000] # KANGXI RADICAL WRONG
+2FAF ; [.FB41.0020.0004][.9762.0000.0000] # KANGXI RADICAL FACE
+2FB0 ; [.FB41.0020.0004][.9769.0000.0000] # KANGXI RADICAL LEATHER
+2FB1 ; [.FB41.0020.0004][.97CB.0000.0000] # KANGXI RADICAL TANNED LEATHER
+FAC9 ; [.FB41.0020.0002][.97DB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAC9
+2F9FA ; [.FB41.0020.0002][.97E0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9FA
+2ED9 ; [.FB41.0020.0004][.97E6.0000.0000] # CJK RADICAL C-SIMPLIFIED TANNED LEATHER
+2FB2 ; [.FB41.0020.0004][.97ED.0000.0000] # KANGXI RADICAL LEEK
+2FB3 ; [.FB41.0020.0004][.97F3.0000.0000] # KANGXI RADICAL SOUND
+FA69 ; [.FB41.0020.0002][.97FF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA69
+FACA ; [.FB41.0020.0002][.97FF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FACA
+2FB4 ; [.FB41.0020.0004][.9801.0000.0000] # KANGXI RADICAL LEAF
+32A0 ; [.FB41.0020.0006][.9805.0000.0000] # CIRCLED IDEOGRAPH ITEM
+FACB ; [.FB41.0020.0002][.980B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FACB
+2F9FE ; [.FB41.0020.0002][.980B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9FE
+2F9FF ; [.FB41.0020.0002][.980B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9FF
+F9B4 ; [.FB41.0020.0002][.9818.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9B4
+2FA00 ; [.FB41.0020.0002][.9829.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA00
+FA6A ; [.FB41.0020.0002][.983B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA6A
+FACC ; [.FB41.0020.0002][.983B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FACC
+F9D0 ; [.FB41.0020.0002][.985E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9D0
+2EDA ; [.FB41.0020.0004][.9875.0000.0000] # CJK RADICAL C-SIMPLIFIED LEAF
+2FB5 ; [.FB41.0020.0004][.98A8.0000.0000] # KANGXI RADICAL WIND
+2EDB ; [.FB41.0020.0004][.98CE.0000.0000] # CJK RADICAL C-SIMPLIFIED WIND
+2FB6 ; [.FB41.0020.0004][.98DB.0000.0000] # KANGXI RADICAL FLY
+2EDC ; [.FB41.0020.0004][.98DE.0000.0000] # CJK RADICAL C-SIMPLIFIED FLY
+2EDD ; [.FB41.0020.0004][.98DF.0000.0000] # CJK RADICAL EAT ONE
+2FB7 ; [.FB41.0020.0004][.98DF.0000.0000] # KANGXI RADICAL EAT
+2EDF ; [.FB41.0020.0004][.98E0.0000.0000] # CJK RADICAL EAT THREE
+2EDE ; [.FB41.0020.0004][.98E0.0000.0000][.0000.0118.0004] # CJK RADICAL EAT TWO
+2FA02 ; [.FB41.0020.0002][.98E2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA02
+FA2A ; [.FB41.0020.0002][.98EF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA2A
+FA2B ; [.FB41.0020.0002][.98FC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA2B
+FA2C ; [.FB41.0020.0002][.9928.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA2C
+2FA04 ; [.FB41.0020.0002][.9929.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA04
+2EE0 ; [.FB41.0020.0004][.9963.0000.0000] # CJK RADICAL C-SIMPLIFIED EAT
+2FB8 ; [.FB41.0020.0004][.9996.0000.0000] # KANGXI RADICAL HEAD
+2EE1 ; [.FB41.0020.0004][.9996.0000.0000][.0000.0118.0004] # CJK RADICAL HEAD
+2FB9 ; [.FB41.0020.0004][.9999.0000.0000] # KANGXI RADICAL FRAGRANT
+2FA05 ; [.FB41.0020.0002][.99A7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA05
+2FBA ; [.FB41.0020.0004][.99AC.0000.0000] # KANGXI RADICAL HORSE
+2FA06 ; [.FB41.0020.0002][.99C2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA06
+F91A ; [.FB41.0020.0002][.99F1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F91A
+2FA07 ; [.FB41.0020.0002][.99FE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA07
+F987 ; [.FB41.0020.0002][.9A6A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F987
+2EE2 ; [.FB41.0020.0004][.9A6C.0000.0000] # CJK RADICAL C-SIMPLIFIED HORSE
+2FBB ; [.FB41.0020.0004][.9AA8.0000.0000] # KANGXI RADICAL BONE
+2EE3 ; [.FB41.0020.0004][.9AA8.0000.0000][.0000.0118.0004] # CJK RADICAL BONE
+2FBC ; [.FB41.0020.0004][.9AD8.0000.0000] # KANGXI RADICAL TALL
+2FBD ; [.FB41.0020.0004][.9ADF.0000.0000] # KANGXI RADICAL HAIR
+FACD ; [.FB41.0020.0002][.9B12.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FACD
+2FA0A ; [.FB41.0020.0002][.9B12.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA0A
+2FBE ; [.FB41.0020.0004][.9B25.0000.0000] # KANGXI RADICAL FIGHT
+2FBF ; [.FB41.0020.0004][.9B2F.0000.0000] # KANGXI RADICAL SACRIFICIAL WINE
+2FC0 ; [.FB41.0020.0004][.9B32.0000.0000] # KANGXI RADICAL CAULDRON
+2FC1 ; [.FB41.0020.0004][.9B3C.0000.0000] # KANGXI RADICAL GHOST
+2EE4 ; [.FB41.0020.0004][.9B3C.0000.0000][.0000.0118.0004] # CJK RADICAL GHOST
+2FC2 ; [.FB41.0020.0004][.9B5A.0000.0000] # KANGXI RADICAL FISH
+F939 ; [.FB41.0020.0002][.9B6F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F939
+2FA0B ; [.FB41.0020.0002][.9C40.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA0B
+F9F2 ; [.FB41.0020.0002][.9C57.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F2
+2EE5 ; [.FB41.0020.0004][.9C7C.0000.0000] # CJK RADICAL C-SIMPLIFIED FISH
+2FC3 ; [.FB41.0020.0004][.9CE5.0000.0000] # KANGXI RADICAL BIRD
+2FA0C ; [.FB41.0020.0002][.9CFD.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA0C
+2FA0F ; [.FB41.0020.0002][.9D67.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA0F
+FA2D ; [.FB41.0020.0002][.9DB4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA2D
+F93A ; [.FB41.0020.0002][.9DFA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F93A
+F920 ; [.FB41.0020.0002][.9E1E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F920
+2EE6 ; [.FB41.0020.0004][.9E1F.0000.0000] # CJK RADICAL C-SIMPLIFIED BIRD
+2FC4 ; [.FB41.0020.0004][.9E75.0000.0000] # KANGXI RADICAL SALT
+2EE7 ; [.FB41.0020.0004][.9E75.0000.0000][.0000.0118.0004] # CJK RADICAL C-SIMPLIFIED SALT
+F940 ; [.FB41.0020.0002][.9E7F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F940
+2FC5 ; [.FB41.0020.0004][.9E7F.0000.0000] # KANGXI RADICAL DEER
+F988 ; [.FB41.0020.0002][.9E97.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F988
+F9F3 ; [.FB41.0020.0002][.9E9F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9F3
+2FC6 ; [.FB41.0020.0004][.9EA5.0000.0000] # KANGXI RADICAL WHEAT
+2EE8 ; [.FB41.0020.0004][.9EA6.0000.0000] # CJK RADICAL SIMPLIFIED WHEAT
+2FA15 ; [.FB41.0020.0002][.9EBB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA15
+2FC7 ; [.FB41.0020.0004][.9EBB.0000.0000] # KANGXI RADICAL HEMP
+2FC8 ; [.FB41.0020.0004][.9EC3.0000.0000] # KANGXI RADICAL YELLOW
+2EE9 ; [.FB41.0020.0004][.9EC4.0000.0000] # CJK RADICAL SIMPLIFIED YELLOW
+2FC9 ; [.FB41.0020.0004][.9ECD.0000.0000] # KANGXI RADICAL MILLET
+F989 ; [.FB41.0020.0002][.9ECE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F989
+2FCA ; [.FB41.0020.0004][.9ED1.0000.0000] # KANGXI RADICAL BLACK
+2FA17 ; [.FB41.0020.0002][.9EF9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA17
+2FCB ; [.FB41.0020.0004][.9EF9.0000.0000] # KANGXI RADICAL EMBROIDERY
+2FCC ; [.FB41.0020.0004][.9EFD.0000.0000] # KANGXI RADICAL FROG
+2FA18 ; [.FB41.0020.0002][.9EFE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA18
+2EEA ; [.FB41.0020.0004][.9EFE.0000.0000] # CJK RADICAL C-SIMPLIFIED FROG
+2FA19 ; [.FB41.0020.0002][.9F05.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA19
+2FCD ; [.FB41.0020.0004][.9F0E.0000.0000] # KANGXI RADICAL TRIPOD
+2FA1A ; [.FB41.0020.0002][.9F0F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA1A
+2FCE ; [.FB41.0020.0004][.9F13.0000.0000] # KANGXI RADICAL DRUM
+2FA1B ; [.FB41.0020.0002][.9F16.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA1B
+2FCF ; [.FB41.0020.0004][.9F20.0000.0000] # KANGXI RADICAL RAT
+2FA1C ; [.FB41.0020.0002][.9F3B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA1C
+2FD0 ; [.FB41.0020.0004][.9F3B.0000.0000] # KANGXI RADICAL NOSE
+FAD8 ; [.FB41.0020.0002][.9F43.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD8
+2FD1 ; [.FB41.0020.0004][.9F4A.0000.0000] # KANGXI RADICAL EVEN
+2EEB ; [.FB41.0020.0004][.9F4A.0000.0000][.0000.0118.0004] # CJK RADICAL J-SIMPLIFIED EVEN
+2EEC ; [.FB41.0020.0004][.9F50.0000.0000] # CJK RADICAL C-SIMPLIFIED EVEN
+2FD2 ; [.FB41.0020.0004][.9F52.0000.0000] # KANGXI RADICAL TOOTH
+2EED ; [.FB41.0020.0004][.9F52.0000.0000][.0000.0118.0004] # CJK RADICAL J-SIMPLIFIED TOOTH
+2EEE ; [.FB41.0020.0004][.9F7F.0000.0000] # CJK RADICAL C-SIMPLIFIED TOOTH
+F9C4 ; [.FB41.0020.0002][.9F8D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F9C4
+2FD3 ; [.FB41.0020.0004][.9F8D.0000.0000] # KANGXI RADICAL DRAGON
+2EEF ; [.FB41.0020.0004][.9F8D.0000.0000][.0000.0118.0004] # CJK RADICAL J-SIMPLIFIED DRAGON
+FAD9 ; [.FB41.0020.0002][.9F8E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD9
+2EF0 ; [.FB41.0020.0004][.9F99.0000.0000] # CJK RADICAL C-SIMPLIFIED DRAGON
+F907 ; [.FB41.0020.0002][.9F9C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F907
+F908 ; [.FB41.0020.0002][.9F9C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-F908
+FACE ; [.FB41.0020.0002][.9F9C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FACE
+2FD4 ; [.FB41.0020.0004][.9F9C.0000.0000] # KANGXI RADICAL TURTLE
+2EF1 ; [.FB41.0020.0004][.9F9C.0000.0000][.0000.0118.0004] # CJK RADICAL TURTLE
+2EF2 ; [.FB41.0020.0004][.9F9C.0000.0000][.0000.0119.0004] # CJK RADICAL J-SIMPLIFIED TURTLE
+2EF3 ; [.FB41.0020.0004][.9F9F.0000.0000] # CJK RADICAL C-SIMPLIFIED TURTLE
+2FD5 ; [.FB41.0020.0004][.9FA0.0000.0000] # KANGXI RADICAL FLUTE
+FA0E ; [.FB41.0020.0002][.FA0E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA0E
+FA0F ; [.FB41.0020.0002][.FA0F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA0F
+FA11 ; [.FB41.0020.0002][.FA11.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA11
+FA13 ; [.FB41.0020.0002][.FA13.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA13
+FA14 ; [.FB41.0020.0002][.FA14.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA14
+FA1F ; [.FB41.0020.0002][.FA1F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA1F
+FA21 ; [.FB41.0020.0002][.FA21.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA21
+FA23 ; [.FB41.0020.0002][.FA23.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA23
+FA24 ; [.FB41.0020.0002][.FA24.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA24
+FA27 ; [.FB41.0020.0002][.FA27.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA27
+FA28 ; [.FB41.0020.0002][.FA28.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA28
+FA29 ; [.FB41.0020.0002][.FA29.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA29
+2F80C ; [.FB80.0020.0002][.B49E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F80C
+2F813 ; [.FB80.0020.0002][.B4B9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F813
+2F9CA ; [.FB80.0020.0002][.B4BB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9CA
+2F81F ; [.FB80.0020.0002][.B4DF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F81F
+2F824 ; [.FB80.0020.0002][.B515.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F824
+2F867 ; [.FB80.0020.0002][.B6EE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F867
+2F868 ; [.FB80.0020.0002][.B6FC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F868
+2F876 ; [.FB80.0020.0002][.B781.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F876
+2F883 ; [.FB80.0020.0002][.B82F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F883
+2F888 ; [.FB80.0020.0002][.B862.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F888
+2F88A ; [.FB80.0020.0002][.B87C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F88A
+2F896 ; [.FB80.0020.0002][.B8C7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F896
+2F89B ; [.FB80.0020.0002][.B8E3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F89B
+2F8A2 ; [.FB80.0020.0002][.B91C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8A2
+2F8A1 ; [.FB80.0020.0002][.B93A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8A1
+2F8C2 ; [.FB80.0020.0002][.BA2E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C2
+2F8C7 ; [.FB80.0020.0002][.BA6C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8C7
+2F8D1 ; [.FB80.0020.0002][.BAE4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D1
+2F8D0 ; [.FB80.0020.0002][.BB08.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D0
+2F8CE ; [.FB80.0020.0002][.BB19.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8CE
+2F8DE ; [.FB80.0020.0002][.BB49.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8DE
+FAD2 ; [.FB80.0020.0002][.BB9D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD2
+2F8E7 ; [.FB80.0020.0002][.BB9D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E7
+2F8EE ; [.FB80.0020.0002][.BC18.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8EE
+2F8F2 ; [.FB80.0020.0002][.BC4E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F2
+2F90A ; [.FB80.0020.0002][.BD33.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F90A
+2F916 ; [.FB80.0020.0002][.BD96.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F916
+2F92A ; [.FB80.0020.0002][.BEAC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F92A
+2F92C ; [.FB80.0020.0002][.BEB8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F92C
+2F92D ; [.FB80.0020.0002][.BEB8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F92D
+2F933 ; [.FB80.0020.0002][.BF1B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F933
+2F93E ; [.FB80.0020.0002][.BFFC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F93E
+2F93F ; [.FB80.0020.0002][.C008.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F93F
+FAD3 ; [.FB80.0020.0002][.C018.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD3
+FAD4 ; [.FB80.0020.0002][.C039.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD4
+2F949 ; [.FB80.0020.0002][.C039.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F949
+2F94B ; [.FB80.0020.0002][.C046.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F94B
+2F94C ; [.FB80.0020.0002][.C096.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F94C
+2F951 ; [.FB80.0020.0002][.C0E3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F951
+2F958 ; [.FB80.0020.0002][.C12F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F958
+2F960 ; [.FB80.0020.0002][.C202.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F960
+2F964 ; [.FB80.0020.0002][.C227.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F964
+2F967 ; [.FB80.0020.0002][.C2A0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F967
+2F96D ; [.FB80.0020.0002][.C301.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F96D
+2F971 ; [.FB80.0020.0002][.C334.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F971
+2F974 ; [.FB80.0020.0002][.C359.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F974
+2F981 ; [.FB80.0020.0002][.C3D5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F981
+2F8D7 ; [.FB80.0020.0002][.C3D9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8D7
+2F984 ; [.FB80.0020.0002][.C40B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F984
+2F98E ; [.FB80.0020.0002][.C46B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F98E
+2F9A7 ; [.FB80.0020.0002][.C52B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9A7
+2F9AE ; [.FB80.0020.0002][.C55D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9AE
+2F9AF ; [.FB80.0020.0002][.C561.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9AF
+2F9B2 ; [.FB80.0020.0002][.C56B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9B2
+2F9BF ; [.FB80.0020.0002][.C5D7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9BF
+2F9C2 ; [.FB80.0020.0002][.C5F9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9C2
+2F9C8 ; [.FB80.0020.0002][.C635.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9C8
+2F9CD ; [.FB80.0020.0002][.C6BE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9CD
+2F9CE ; [.FB80.0020.0002][.C6C7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9CE
+2F9EF ; [.FB80.0020.0002][.C995.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9EF
+2F9F2 ; [.FB80.0020.0002][.C9E6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F2
+2F9F8 ; [.FB80.0020.0002][.CA6E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F8
+2F9F9 ; [.FB80.0020.0002][.CA76.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F9
+2F9FC ; [.FB80.0020.0002][.CAB2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9FC
+2FA03 ; [.FB80.0020.0002][.CB33.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA03
+2FA08 ; [.FB80.0020.0002][.CBCE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA08
+2FA0D ; [.FB80.0020.0002][.CCCE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA0D
+2FA0E ; [.FB80.0020.0002][.CCED.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA0E
+2FA11 ; [.FB80.0020.0002][.CCF8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA11
+2FA16 ; [.FB80.0020.0002][.CD56.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA16
+2F803 ; [.FB84.0020.0002][.8122.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F803
+2F812 ; [.FB84.0020.0002][.851C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F812
+2F91B ; [.FB84.0020.0002][.8525.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F91B
+2F816 ; [.FB84.0020.0002][.854B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F816
+2F80D ; [.FB84.0020.0002][.863A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F80D
+2F9D9 ; [.FB84.0020.0002][.8804.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D9
+2F9DD ; [.FB84.0020.0002][.88DE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9DD
+2F834 ; [.FB84.0020.0002][.8A2C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F834
+2F838 ; [.FB84.0020.0002][.8B63.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F838
+2F859 ; [.FB84.0020.0002][.94E4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F859
+2F860 ; [.FB84.0020.0002][.96A8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F860
+2F861 ; [.FB84.0020.0002][.96EA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F861
+2F86C ; [.FB84.0020.0002][.99C8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F86C
+2F871 ; [.FB84.0020.0002][.9B18.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F871
+2F8F8 ; [.FB84.0020.0002][.9D0B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F8
+2F87B ; [.FB84.0020.0002][.9DE4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F87B
+2F87D ; [.FB84.0020.0002][.9DE6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F87D
+2F889 ; [.FB84.0020.0002][.A183.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F889
+2F939 ; [.FB84.0020.0002][.A19F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F939
+2F891 ; [.FB84.0020.0002][.A331.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F891
+2F892 ; [.FB84.0020.0002][.A331.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F892
+2F8A4 ; [.FB84.0020.0002][.A6D4.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8A4
+FAD0 ; [.FB84.0020.0002][.A844.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD0
+FACF ; [.FB84.0020.0002][.A84A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FACF
+2F8B8 ; [.FB84.0020.0002][.AB0C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8B8
+2F8BE ; [.FB84.0020.0002][.ABF1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8BE
+2F8CA ; [.FB84.0020.0002][.B00A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8CA
+2F897 ; [.FB84.0020.0002][.B2B8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F897
+2F980 ; [.FB84.0020.0002][.B35F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F980
+2F989 ; [.FB84.0020.0002][.B393.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F989
+2F98A ; [.FB84.0020.0002][.B39C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F98A
+2F8DD ; [.FB84.0020.0002][.B3C3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8DD
+FAD1 ; [.FB84.0020.0002][.B3D5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD1
+2F8E3 ; [.FB84.0020.0002][.B46D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8E3
+2F8EC ; [.FB84.0020.0002][.B6A3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8EC
+2F8F0 ; [.FB84.0020.0002][.B8A7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F0
+2F8F7 ; [.FB84.0020.0002][.BA8D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F7
+2F8F9 ; [.FB84.0020.0002][.BAFA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8F9
+2F8FB ; [.FB84.0020.0002][.BCBC.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F8FB
+2F906 ; [.FB84.0020.0002][.BD1E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F906
+2F90D ; [.FB84.0020.0002][.BED1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F90D
+2F910 ; [.FB84.0020.0002][.BF5E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F910
+2F911 ; [.FB84.0020.0002][.BF8E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F911
+2F91D ; [.FB84.0020.0002][.C263.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F91D
+FA6C ; [.FB84.0020.0002][.C2EE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FA6C
+2F91F ; [.FB84.0020.0002][.C3AB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F91F
+2F923 ; [.FB84.0020.0002][.C608.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F923
+2F926 ; [.FB84.0020.0002][.C735.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F926
+2F927 ; [.FB84.0020.0002][.C814.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F927
+2F935 ; [.FB84.0020.0002][.CC36.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F935
+2F937 ; [.FB84.0020.0002][.CC92.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F937
+2F93B ; [.FB84.0020.0002][.CFA1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F93B
+2F93C ; [.FB84.0020.0002][.CFB8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F93C
+2F93D ; [.FB84.0020.0002][.D044.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F93D
+2F942 ; [.FB84.0020.0002][.D0F2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F942
+2F941 ; [.FB84.0020.0002][.D0F3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F941
+2F943 ; [.FB84.0020.0002][.D119.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F943
+2F944 ; [.FB84.0020.0002][.D133.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F944
+FAD5 ; [.FB84.0020.0002][.D249.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD5
+2F94D ; [.FB84.0020.0002][.D41D.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F94D
+2F952 ; [.FB84.0020.0002][.D626.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F952
+2F954 ; [.FB84.0020.0002][.D69A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F954
+2F955 ; [.FB84.0020.0002][.D6C5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F955
+2F95C ; [.FB84.0020.0002][.D97C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F95C
+2F95D ; [.FB84.0020.0002][.DAA7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F95D
+2F95E ; [.FB84.0020.0002][.DAA7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F95E
+2F961 ; [.FB84.0020.0002][.DBAB.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F961
+2F965 ; [.FB84.0020.0002][.DC80.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F965
+FAD6 ; [.FB84.0020.0002][.DCD0.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD6
+2F96B ; [.FB84.0020.0002][.DF86.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F96B
+2F898 ; [.FB84.0020.0002][.E1DA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F898
+2F972 ; [.FB84.0020.0002][.E228.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F972
+2F973 ; [.FB84.0020.0002][.E247.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F973
+2F975 ; [.FB84.0020.0002][.E2D9.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F975
+2F977 ; [.FB84.0020.0002][.E33E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F977
+2F97B ; [.FB84.0020.0002][.E4DA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F97B
+2F97C ; [.FB84.0020.0002][.E523.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F97C
+2F97E ; [.FB84.0020.0002][.E5A8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F97E
+2F987 ; [.FB84.0020.0002][.E7A7.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F987
+2F988 ; [.FB84.0020.0002][.E7B5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F988
+2F997 ; [.FB84.0020.0002][.EB3C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F997
+2F9A4 ; [.FB84.0020.0002][.EC36.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9A4
+2F9A6 ; [.FB84.0020.0002][.ECD5.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9A6
+2F9A5 ; [.FB84.0020.0002][.ED6B.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9A5
+2F9AD ; [.FB84.0020.0002][.EF2C.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9AD
+2F9B0 ; [.FB84.0020.0002][.EFB1.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9B0
+2F9B1 ; [.FB84.0020.0002][.F0D2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9B1
+2F9AB ; [.FB84.0020.0002][.F3CA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9AB
+2F9C5 ; [.FB84.0020.0002][.F667.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9C5
+2F9CB ; [.FB84.0020.0002][.F8AE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9CB
+2F9CC ; [.FB84.0020.0002][.F966.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9CC
+2F9D3 ; [.FB84.0020.0002][.FCA8.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D3
+FAD7 ; [.FB84.0020.0002][.FED3.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-FAD7
+2F9D8 ; [.FB84.0020.0002][.FF2F.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9D8
+2F9E0 ; [.FB85.0020.0002][.85D2.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E0
+2F9E1 ; [.FB85.0020.0002][.85ED.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E1
+2F9E5 ; [.FB85.0020.0002][.872E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9E5
+2F9ED ; [.FB85.0020.0002][.8BFA.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9ED
+2F9F1 ; [.FB85.0020.0002][.8D77.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F1
+2F9F6 ; [.FB85.0020.0002][.9145.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F6
+2F81C ; [.FB85.0020.0002][.91DF.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F81C
+2F9F7 ; [.FB85.0020.0002][.921A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9F7
+2F9FB ; [.FB85.0020.0002][.940A.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9FB
+2F9FD ; [.FB85.0020.0002][.9496.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F9FD
+2FA01 ; [.FB85.0020.0002][.95B6.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA01
+2FA09 ; [.FB85.0020.0002][.9B30.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA09
+2FA10 ; [.FB85.0020.0002][.A0CE.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA10
+2FA12 ; [.FB85.0020.0002][.A105.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA12
+2FA13 ; [.FB85.0020.0002][.A20E.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA13
+2FA14 ; [.FB85.0020.0002][.A291.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA14
+2F88F ; [.FB85.0020.0002][.A392.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2F88F
+2FA1D ; [.FB85.0020.0002][.A600.0000.0000] # CJK COMPATIBILITY IDEOGRAPH-2FA1D
+FFFD ; [.FFFD.0020.0002] # REPLACEMENT CHARACTER
+
+# EOF
diff --git a/mysql-test/suite/atomic/disabled.def b/mysql-test/suite/atomic/disabled.def
new file mode 100644
index 00000000000..3e1f2d6a2c3
--- /dev/null
+++ b/mysql-test/suite/atomic/disabled.def
@@ -0,0 +1,12 @@
+##############################################################################
+#
+# List the test cases that are to be disabled temporarily.
+#
+# Separate the test case name and the comment with ':'.
+#
+# <testcasename> : BUG#<xxxx> <date disabled> <disabler> <comment>
+#
+# Do not use any TAB characters for whitespace.
+#
+##############################################################################
+rename_trigger : MDEV-29282 2022:-08-16 Igor Babaev
diff --git a/mysql-test/suite/binlog/r/binlog_mysqlbinlog2.result b/mysql-test/suite/binlog/r/binlog_mysqlbinlog2.result
index d2e904508dc..11abd6e8973 100644
--- a/mysql-test/suite/binlog/r/binlog_mysqlbinlog2.result
+++ b/mysql-test/suite/binlog/r/binlog_mysqlbinlog2.result
@@ -25,7 +25,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -97,7 +97,7 @@ SET INSERT_ID=1/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -163,7 +163,7 @@ SET INSERT_ID=3/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773144/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -208,7 +208,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -253,7 +253,7 @@ SET INSERT_ID=3/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773144/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -280,7 +280,7 @@ SET INSERT_ID=3/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773144/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -325,7 +325,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -368,7 +368,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -430,7 +430,7 @@ SET INSERT_ID=6/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773143/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -460,7 +460,7 @@ SET INSERT_ID=1/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -516,7 +516,7 @@ SET INSERT_ID=6/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773143/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -546,7 +546,7 @@ SET INSERT_ID=3/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773144/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -584,7 +584,7 @@ SET INSERT_ID=6/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773143/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -611,7 +611,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -687,7 +687,7 @@ SET INSERT_ID=3/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773144/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -725,7 +725,7 @@ SET INSERT_ID=6/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773143/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -752,7 +752,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -794,7 +794,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -866,7 +866,7 @@ SET INSERT_ID=1/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -931,7 +931,7 @@ SET INSERT_ID=3/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773144/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -976,7 +976,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1020,7 +1020,7 @@ SET INSERT_ID=3/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773144/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1047,7 +1047,7 @@ SET INSERT_ID=3/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773144/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1092,7 +1092,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1134,7 +1134,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1196,7 +1196,7 @@ SET INSERT_ID=6/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773143/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1226,7 +1226,7 @@ SET INSERT_ID=1/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1282,7 +1282,7 @@ SET INSERT_ID=6/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773143/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1311,7 +1311,7 @@ SET INSERT_ID=3/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773144/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1349,7 +1349,7 @@ SET INSERT_ID=6/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773143/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1376,7 +1376,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1450,7 +1450,7 @@ SET INSERT_ID=3/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773144/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1488,7 +1488,7 @@ SET INSERT_ID=6/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773143/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1515,7 +1515,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1557,7 +1557,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1773142/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row.result b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row.result
index 9195f9fd3ad..816084d7464 100644
--- a/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row.result
+++ b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row.result
@@ -376,7 +376,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -5386,7 +5386,7 @@ DELIMITER /*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_innodb.result b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_innodb.result
index 96059d009c0..65e2f824e39 100644
--- a/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_innodb.result
+++ b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_innodb.result
@@ -2270,7 +2270,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
@@ -5279,7 +5279,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
@@ -5679,7 +5679,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
@@ -6317,7 +6317,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
diff --git a/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_myisam.result b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_myisam.result
index 630a9f1d381..3f838c8c369 100644
--- a/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_myisam.result
+++ b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_myisam.result
@@ -2268,7 +2268,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
@@ -5300,7 +5300,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
@@ -5706,7 +5706,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
@@ -6354,7 +6354,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
diff --git a/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_trans.result b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_trans.result
index 748b92df1a8..5a27afaae71 100644
--- a/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_trans.result
+++ b/mysql-test/suite/binlog/r/binlog_mysqlbinlog_row_trans.result
@@ -146,7 +146,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/binlog/r/binlog_row_annotate.result b/mysql-test/suite/binlog/r/binlog_row_annotate.result
index ffdb31cdbeb..bf114d8cfa9 100644
--- a/mysql-test/suite/binlog/r/binlog_row_annotate.result
+++ b/mysql-test/suite/binlog/r/binlog_row_annotate.result
@@ -116,7 +116,7 @@ ROLLBACK/*!*/;
#010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -354,7 +354,7 @@ ROLLBACK/*!*/;
#010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -513,7 +513,7 @@ ROLLBACK/*!*/;
#010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -739,7 +739,7 @@ ROLLBACK/*!*/;
#010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -977,7 +977,7 @@ ROLLBACK/*!*/;
#010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -1136,7 +1136,7 @@ ROLLBACK/*!*/;
#010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result b/mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result
index 74aef814785..6d10d5420e4 100644
--- a/mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result
+++ b/mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result
@@ -22,7 +22,7 @@ START TRANSACTION
#Q> insert into t2 values (@v)
SET TIMESTAMP=10000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -92,7 +92,7 @@ DELIMITER /*!*/;
use `test`/*!*/;
SET TIMESTAMP=XXX/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
diff --git a/mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_options.result b/mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_options.result
index dc7750b975e..fe08f6e9fe9 100644
--- a/mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_options.result
+++ b/mysql-test/suite/binlog/r/binlog_row_mysqlbinlog_options.result
@@ -50,7 +50,7 @@ use `new_test1`/*!*/;
#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -291,7 +291,7 @@ use `new_test1`/*!*/;
#010909 4:46:40 server id # end_log_pos # CRC32 XXX Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result b/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result
index e449025eee9..c78365a847e 100644
--- a/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result
+++ b/mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result
@@ -21,7 +21,7 @@ SET @`v`:=_ucs2 X'006100620063' COLLATE `ucs2_general_ci`/*!*/;
use `test`/*!*/;
SET TIMESTAMP=10000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -94,7 +94,7 @@ DELIMITER /*!*/;
use `test`/*!*/;
SET TIMESTAMP=XXX/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb3 *//*!*/;
diff --git a/mysql-test/suite/binlog/r/binlog_table_map_optional_metadata.result b/mysql-test/suite/binlog/r/binlog_table_map_optional_metadata.result
index 5e85a72f693..21275409f36 100644
--- a/mysql-test/suite/binlog/r/binlog_table_map_optional_metadata.result
+++ b/mysql-test/suite/binlog/r/binlog_table_map_optional_metadata.result
@@ -5,7 +5,8 @@ SET GLOBAL binlog_row_metadata = MINIMAL;
#
CREATE TABLE t1(c_year YEAR, c_date DATE, c_time TIME, c_time_f TIME(3),
c_datetime DATETIME, c_datetime_f DATETIME(3),
-c_timestamp TIMESTAMP, c_timestamp_f TIMESTAMP(3) DEFAULT "2017-1-1 10:10:10");
+c_timestamp TIMESTAMP NOT NULL DEFAULT NOW(),
+c_timestamp_f TIMESTAMP(3) DEFAULT "2017-1-1 10:10:10");
INSERT INTO t1(c_year) VALUES(2017);
# Columns(YEAR,
# DATE,
@@ -14,7 +15,7 @@ INSERT INTO t1(c_year) VALUES(2017);
# DATETIME,
# DATETIME(3),
# TIMESTAMP NOT NULL,
-# TIMESTAMP(3) NOT NULL)
+# TIMESTAMP(3))
DROP TABLE t1;
RESET MASTER;
#
diff --git a/mysql-test/suite/binlog/r/binlog_unsafe.result b/mysql-test/suite/binlog/r/binlog_unsafe.result
index a8143ef086e..0c0b0e77915 100644
--- a/mysql-test/suite/binlog/r/binlog_unsafe.result
+++ b/mysql-test/suite/binlog/r/binlog_unsafe.result
@@ -2609,6 +2609,9 @@ INSERT INTO t1 VALUES (VERSION());
Warnings:
Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
INSERT INTO t1 VALUES (RAND());
+INSERT INTO t1 VALUES (RANDOM_BYTES(1000));
+Warnings:
+Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave
DELETE FROM t1;
SET TIME_ZONE= '+03:00';
SET TIMESTAMP=1000000;
diff --git a/mysql-test/suite/binlog/r/flashback.result b/mysql-test/suite/binlog/r/flashback.result
index 7d65a8ec2b3..da08f814783 100644
--- a/mysql-test/suite/binlog/r/flashback.result
+++ b/mysql-test/suite/binlog/r/flashback.result
@@ -60,7 +60,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -422,7 +422,7 @@ COMMIT
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/binlog/t/binlog_table_map_optional_metadata.test b/mysql-test/suite/binlog/t/binlog_table_map_optional_metadata.test
index 9fd201e0cb9..4577c6c1de1 100644
--- a/mysql-test/suite/binlog/t/binlog_table_map_optional_metadata.test
+++ b/mysql-test/suite/binlog/t/binlog_table_map_optional_metadata.test
@@ -29,7 +29,8 @@ SET GLOBAL binlog_row_metadata = MINIMAL;
--echo #
CREATE TABLE t1(c_year YEAR, c_date DATE, c_time TIME, c_time_f TIME(3),
c_datetime DATETIME, c_datetime_f DATETIME(3),
- c_timestamp TIMESTAMP, c_timestamp_f TIMESTAMP(3) DEFAULT "2017-1-1 10:10:10");
+ c_timestamp TIMESTAMP NOT NULL DEFAULT NOW(),
+ c_timestamp_f TIMESTAMP(3) DEFAULT "2017-1-1 10:10:10");
INSERT INTO t1(c_year) VALUES(2017);
--source include/print_optional_metadata.inc
diff --git a/mysql-test/suite/binlog/t/binlog_unsafe.test b/mysql-test/suite/binlog/t/binlog_unsafe.test
index 673712ff209..8b2a00e174c 100644
--- a/mysql-test/suite/binlog/t/binlog_unsafe.test
+++ b/mysql-test/suite/binlog/t/binlog_unsafe.test
@@ -651,7 +651,7 @@ DROP TABLE t1,t2,t3;
#
# BUG#47995: Mark user functions as unsafe
-# BUG#49222: Mare RAND() unsafe
+# BUG#49222: Mark RAND() unsafe
#
# Test that the system functions that are supposed to be marked unsafe
# generate a warning. Each INSERT statement below should generate a
@@ -678,6 +678,7 @@ INSERT INTO t1 VALUES (UUID()); #marked unsafe before BUG#47995
INSERT INTO t1 VALUES (UUID_SHORT()); #marked unsafe before BUG#47995
INSERT INTO t1 VALUES (VERSION()); #marked unsafe in BUG#47995
INSERT INTO t1 VALUES (RAND()); #marked unsafe in BUG#49222
+INSERT INTO t1 VALUES (RANDOM_BYTES(1000)); #marked unsafe in MDEV-25704
DELETE FROM t1;
# Since we replicate the TIMESTAMP variable, functions affected by the
diff --git a/mysql-test/suite/binlog_encryption/binlog_mdev_20574_old_binlog.result b/mysql-test/suite/binlog_encryption/binlog_mdev_20574_old_binlog.result
index cf660297640..a8d96642bd1 100644
--- a/mysql-test/suite/binlog_encryption/binlog_mdev_20574_old_binlog.result
+++ b/mysql-test/suite/binlog_encryption/binlog_mdev_20574_old_binlog.result
@@ -12,7 +12,7 @@ include/rpl_start_server.inc [server_number=1]
connection slave;
RESET SLAVE;
RESET MASTER;
-CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4, master_use_gtid=no;
include/start_slave.inc
DESC t1;
Field Type Null Key Default Extra
diff --git a/mysql-test/suite/binlog_encryption/binlog_mdev_20574_old_binlog.test b/mysql-test/suite/binlog_encryption/binlog_mdev_20574_old_binlog.test
index 417df631878..3f8220630ba 100644
--- a/mysql-test/suite/binlog_encryption/binlog_mdev_20574_old_binlog.test
+++ b/mysql-test/suite/binlog_encryption/binlog_mdev_20574_old_binlog.test
@@ -36,7 +36,7 @@
RESET SLAVE;
RESET MASTER;
--replace_result $SERVER_MYPORT_1 SERVER_MYPORT_1
-eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4;
+eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4, master_use_gtid=no;
--source include/start_slave.inc
--sync_with_master
DESC t1;
diff --git a/mysql-test/suite/binlog_encryption/binlog_row_annotate.result b/mysql-test/suite/binlog_encryption/binlog_row_annotate.result
index 80b9c5d476c..2614020b7a9 100644
--- a/mysql-test/suite/binlog_encryption/binlog_row_annotate.result
+++ b/mysql-test/suite/binlog_encryption/binlog_row_annotate.result
@@ -120,7 +120,7 @@ ROLLBACK/*!*/;
#010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -361,7 +361,7 @@ ROLLBACK/*!*/;
#010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -523,7 +523,7 @@ ROLLBACK/*!*/;
#010909 4:46:40 server id # end_log_pos # Query thread_id=# exec_time=# error_code=0 xid=<xid>
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/binlog_encryption/encrypted_master_switch_to_unencrypted.result b/mysql-test/suite/binlog_encryption/encrypted_master_switch_to_unencrypted.result
index d632c565ad2..a628d0d409b 100644
--- a/mysql-test/suite/binlog_encryption/encrypted_master_switch_to_unencrypted.result
+++ b/mysql-test/suite/binlog_encryption/encrypted_master_switch_to_unencrypted.result
@@ -4,6 +4,11 @@
include/rpl_init.inc [topology=1->2]
connection server_2;
include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection server_1;
+connection server_2;
+include/stop_slave.inc
#####################################################
# Part 1: unencrypted master
#####################################################
@@ -63,7 +68,9 @@ SHOW TABLES;
Tables_in_test
table1_no_encryption
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
##########
# Cleanup
##########
diff --git a/mysql-test/suite/binlog_encryption/encrypted_master_switch_to_unencrypted.test b/mysql-test/suite/binlog_encryption/encrypted_master_switch_to_unencrypted.test
index 1e1b0cbd353..d36086da73b 100644
--- a/mysql-test/suite/binlog_encryption/encrypted_master_switch_to_unencrypted.test
+++ b/mysql-test/suite/binlog_encryption/encrypted_master_switch_to_unencrypted.test
@@ -20,6 +20,13 @@
--let $rpl_topology= 1->2
--source include/rpl_init.inc
+--connection server_2
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
+--connection server_1
+
--enable_connect_log
# We stop replication because we want it to happen after the switch
@@ -132,7 +139,8 @@ SHOW TABLES;
--disable_connect_log
--source include/stop_slave.inc
--enable_connect_log
-reset slave;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
--echo ##########
--echo # Cleanup
diff --git a/mysql-test/suite/binlog_encryption/multisource.result b/mysql-test/suite/binlog_encryption/multisource.result
index ad1f2e24f9e..4b53b4653cd 100644
--- a/mysql-test/suite/binlog_encryption/multisource.result
+++ b/mysql-test/suite/binlog_encryption/multisource.result
@@ -99,7 +99,8 @@ set default_master_connection = '';
change master to
master_port=MYPORT_2,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave;
include/wait_for_slave_to_start.inc
#
diff --git a/mysql-test/suite/binlog_encryption/rpl_binlog_errors.result b/mysql-test/suite/binlog_encryption/rpl_binlog_errors.result
index 4c667bd7f5a..0c79b079bd6 100644
--- a/mysql-test/suite/binlog_encryption/rpl_binlog_errors.result
+++ b/mysql-test/suite/binlog_encryption/rpl_binlog_errors.result
@@ -232,6 +232,9 @@ connection master;
#######################################################################
include/rpl_reset.inc
connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
call mtr.add_suppression("Slave I/O: Relay log write failure: could not queue event from master.*");
call mtr.add_suppression("Error writing file .*");
call mtr.add_suppression("Could not use .*");
@@ -277,5 +280,7 @@ include/stop_slave_sql.inc
Warnings:
Note 1255 Slave already has been stopped
RESET SLAVE;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
RESET MASTER;
include/rpl_end.inc
diff --git a/mysql-test/suite/binlog_encryption/rpl_cant_read_event_incident.result b/mysql-test/suite/binlog_encryption/rpl_cant_read_event_incident.result
index 5aff978538f..86659816f6c 100644
--- a/mysql-test/suite/binlog_encryption/rpl_cant_read_event_incident.result
+++ b/mysql-test/suite/binlog_encryption/rpl_cant_read_event_incident.result
@@ -2,6 +2,9 @@ include/master-slave.inc
[connection master]
connection slave;
include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+include/stop_slave.inc
connection master;
call mtr.add_suppression("Error in Log_event::read_log_event()");
include/rpl_stop_server.inc [server_number=1]
@@ -10,7 +13,9 @@ show binlog events;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
connection slave;
call mtr.add_suppression("Slave I/O: Got fatal error 1236 from master when reading data from binary log");
-reset slave;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
start slave;
include/wait_for_slave_param.inc [Last_IO_Errno]
Last_IO_Errno = '1236'
@@ -20,6 +25,8 @@ reset master;
connection slave;
stop slave;
reset slave;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
drop table if exists t;
reset master;
End of the tests
diff --git a/mysql-test/suite/binlog_encryption/rpl_checksum.result b/mysql-test/suite/binlog_encryption/rpl_checksum.result
index 22220b8e9fb..0b894e05a46 100644
--- a/mysql-test/suite/binlog_encryption/rpl_checksum.result
+++ b/mysql-test/suite/binlog_encryption/rpl_checksum.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
call mtr.add_suppression('Slave can not handle replication events with the checksum that master is configured to log');
call mtr.add_suppression('Replication event checksum verification failed');
call mtr.add_suppression('Relay log write failure: could not queue event from master');
@@ -122,7 +127,9 @@ must be zero
0
connection slave;
stop slave;
-reset slave;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
set @@global.binlog_checksum= IF(floor((rand()*1000)%2), "CRC32", "NONE");
flush logs;
connection master;
diff --git a/mysql-test/suite/binlog_encryption/rpl_corruption.result b/mysql-test/suite/binlog_encryption/rpl_corruption.result
index 73bb373d6be..7c60e15a567 100644
--- a/mysql-test/suite/binlog_encryption/rpl_corruption.result
+++ b/mysql-test/suite/binlog_encryption/rpl_corruption.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
call mtr.add_suppression('Found invalid event in binary log');
call mtr.add_suppression('Slave I/O: Relay log write failure: could not queue event from master');
call mtr.add_suppression('event read from binlog did not pass crc check');
diff --git a/mysql-test/suite/binlog_encryption/rpl_gtid_basic.result b/mysql-test/suite/binlog_encryption/rpl_gtid_basic.result
index 4e17669605f..99eda3b61a0 100644
--- a/mysql-test/suite/binlog_encryption/rpl_gtid_basic.result
+++ b/mysql-test/suite/binlog_encryption/rpl_gtid_basic.result
@@ -69,6 +69,8 @@ INSERT INTO t2 VALUES (5, "i1a");
connection server_4;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = MASTER_PORT,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
SELECT * FROM t1 ORDER BY a;
a b
@@ -89,6 +91,8 @@ connection server_2;
include/stop_slave.inc
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_4,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
connection server_4;
UPDATE t2 SET b="j1a" WHERE a=5;
@@ -117,6 +121,8 @@ include/save_master_gtid.inc
connection server_3;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_4,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
include/sync_with_master_gtid.inc
SELECT * FROM t2 ORDER BY a;
diff --git a/mysql-test/suite/binlog_encryption/rpl_mixed_binlog_max_cache_size.result b/mysql-test/suite/binlog_encryption/rpl_mixed_binlog_max_cache_size.result
index 944ad9331ad..e94e097f41f 100644
--- a/mysql-test/suite/binlog_encryption/rpl_mixed_binlog_max_cache_size.result
+++ b/mysql-test/suite/binlog_encryption/rpl_mixed_binlog_max_cache_size.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
call mtr.add_suppression("Write to binary log failed: Multi-row statements required more than .max_binlog_stmt_cache_size");
call mtr.add_suppression("Write to binary log failed: Multi-statement transaction required more than .max_binlog_cache_size");
diff --git a/mysql-test/suite/binlog_encryption/rpl_semi_sync.result b/mysql-test/suite/binlog_encryption/rpl_semi_sync.result
index d18bd1efda7..edd5e7748e0 100644
--- a/mysql-test/suite/binlog_encryption/rpl_semi_sync.result
+++ b/mysql-test/suite/binlog_encryption/rpl_semi_sync.result
@@ -6,16 +6,18 @@ call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
+set sql_log_bin=0;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");
+set sql_log_bin=1;
connection master;
#
# Uninstall semi-sync plugins on master and slave
#
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
set global rpl_semi_sync_master_enabled= 0;
set global rpl_semi_sync_slave_enabled= 0;
connection master;
@@ -310,7 +312,7 @@ Variable_name Value
Rpl_semi_sync_master_yes_tx 0
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/kill_binlog_dump_threads.inc
connection slave;
include/start_slave.inc
@@ -340,7 +342,7 @@ Rpl_semi_sync_master_yes_tx 3
#
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
connection master;
reset master;
include/kill_binlog_dump_threads.inc
diff --git a/mysql-test/suite/binlog_encryption/rpl_skip_replication.result b/mysql-test/suite/binlog_encryption/rpl_skip_replication.result
index 59d5b50e5cc..96e0a30331d 100644
--- a/mysql-test/suite/binlog_encryption/rpl_skip_replication.result
+++ b/mysql-test/suite/binlog_encryption/rpl_skip_replication.result
@@ -1,6 +1,11 @@
include/master-slave.inc
[connection master]
connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
+connection slave;
CREATE USER 'nonsuperuser'@'127.0.0.1';
GRANT ALTER,CREATE,DELETE,DROP,EVENT,INSERT,PROCESS,REPLICATION SLAVE,
SELECT,UPDATE ON *.* TO 'nonsuperuser'@'127.0.0.1';
diff --git a/mysql-test/suite/compat/maxdb/rpl_mariadb_timestamp.result b/mysql-test/suite/compat/maxdb/rpl_mariadb_timestamp.result
index df3bbca0fa2..727c79492ed 100644
--- a/mysql-test/suite/compat/maxdb/rpl_mariadb_timestamp.result
+++ b/mysql-test/suite/compat/maxdb/rpl_mariadb_timestamp.result
@@ -5,7 +5,7 @@ include/master-slave.inc
#
SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:00:00');
SET sql_mode=DEFAULT;
-CREATE TABLE t1 (a TIMESTAMP);
+CREATE TABLE t1 (a TIMESTAMP NOT NULL DEFAULT NOW());
INSERT INTO t1 VALUES (NULL);
INSERT INTO t1 VALUES ('2001-01-01 10:20:30');
SET sql_mode=MAXDB;
@@ -14,7 +14,7 @@ SET timestamp=DEFAULT;
include/show_binlog_events.inc
Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Gtid # # GTID #-#-#
-master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a TIMESTAMP)
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a TIMESTAMP NOT NULL DEFAULT NOW())
master-bin.000001 # Gtid # # BEGIN GTID #-#-#
master-bin.000001 # Annotate_rows # # INSERT INTO t1 VALUES (NULL)
master-bin.000001 # Table_map # # table_id: # (test.t1)
@@ -42,7 +42,7 @@ SET sql_mode=DEFAULT;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `a` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SHOW CREATE TABLE t2;
Table Create Table
diff --git a/mysql-test/suite/compat/maxdb/rpl_mariadb_timestamp.test b/mysql-test/suite/compat/maxdb/rpl_mariadb_timestamp.test
index 50663229937..f4a826615eb 100644
--- a/mysql-test/suite/compat/maxdb/rpl_mariadb_timestamp.test
+++ b/mysql-test/suite/compat/maxdb/rpl_mariadb_timestamp.test
@@ -7,7 +7,7 @@
SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:00:00');
SET sql_mode=DEFAULT;
-CREATE TABLE t1 (a TIMESTAMP);
+CREATE TABLE t1 (a TIMESTAMP NOT NULL DEFAULT NOW());
INSERT INTO t1 VALUES (NULL);
INSERT INTO t1 VALUES ('2001-01-01 10:20:30');
SET sql_mode=MAXDB;
@@ -17,7 +17,6 @@ SET timestamp=DEFAULT;
--let $binlog_file = LAST
source include/show_binlog_events.inc;
-
--sync_slave_with_master
SELECT * FROM t1;
SET sql_mode=DEFAULT;
diff --git a/mysql-test/suite/compat/maxdb/type_timestamp.result b/mysql-test/suite/compat/maxdb/type_timestamp.result
index 7bc0613bc56..f6612ab18da 100644
--- a/mysql-test/suite/compat/maxdb/type_timestamp.result
+++ b/mysql-test/suite/compat/maxdb/type_timestamp.result
@@ -11,18 +11,18 @@ max_timestamp maxdb_schema.TIMESTAMP
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `def_timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `mdb_timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `ora_timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `def_timestamp` timestamp NULL DEFAULT NULL,
+ `mdb_timestamp` timestamp NULL DEFAULT NULL,
+ `ora_timestamp` timestamp NULL DEFAULT NULL,
`max_timestamp` datetime DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
SET sql_mode=MAXDB;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE "t1" (
- "def_timestamp" mariadb_schema.timestamp NOT NULL DEFAULT current_timestamp(),
- "mdb_timestamp" mariadb_schema.timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- "ora_timestamp" mariadb_schema.timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ "def_timestamp" mariadb_schema.timestamp NULL DEFAULT NULL,
+ "mdb_timestamp" mariadb_schema.timestamp NULL DEFAULT NULL,
+ "ora_timestamp" mariadb_schema.timestamp NULL DEFAULT NULL,
"max_timestamp" datetime DEFAULT NULL
)
DROP TABLE t1;
@@ -37,8 +37,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE "t1" (
"def_timestamp" datetime DEFAULT NULL,
- "mdb_timestamp" mariadb_schema.timestamp NOT NULL DEFAULT current_timestamp(),
- "ora_timestamp" mariadb_schema.timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ "mdb_timestamp" mariadb_schema.timestamp NULL DEFAULT NULL,
+ "ora_timestamp" mariadb_schema.timestamp NULL DEFAULT NULL,
"max_timestamp" datetime DEFAULT NULL
)
SET sql_mode=DEFAULT;
@@ -46,8 +46,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`def_timestamp` datetime DEFAULT NULL,
- `mdb_timestamp` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `ora_timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `mdb_timestamp` timestamp NULL DEFAULT NULL,
+ `ora_timestamp` timestamp NULL DEFAULT NULL,
`max_timestamp` datetime DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/compat/oracle/r/sp.result b/mysql-test/suite/compat/oracle/r/sp.result
index 2e212530ae5..409ea3b8e3f 100644
--- a/mysql-test/suite/compat/oracle/r/sp.result
+++ b/mysql-test/suite/compat/oracle/r/sp.result
@@ -1796,7 +1796,7 @@ def tm6 tm6 11 17 15 Y 128 6 63
def dt0 dt0 12 19 19 Y 128 0 63
def dt3 dt3 12 23 23 Y 128 3 63
def dt6 dt6 12 26 26 Y 128 6 63
-def ts0 ts0 7 19 19 Y 9376 0 63
+def ts0 ts0 7 19 19 Y 160 0 63
def ts3 ts3 7 23 23 Y 160 3 63
def ts6 ts6 7 26 26 Y 160 6 63
bit6 0
diff --git a/mysql-test/suite/engines/funcs/r/db_alter_collate_ascii.result b/mysql-test/suite/engines/funcs/r/db_alter_collate_ascii.result
index b86c28e7344..ea092d1211f 100644
--- a/mysql-test/suite/engines/funcs/r/db_alter_collate_ascii.result
+++ b/mysql-test/suite/engines/funcs/r/db_alter_collate_ascii.result
@@ -224,6 +224,190 @@ utf8mb4_general_nopad_ci utf8mb4 1069 # #
utf8mb4_nopad_bin utf8mb4 1070 # #
utf8mb4_unicode_nopad_ci utf8mb4 1248 # #
utf8mb4_unicode_520_nopad_ci utf8mb4 1270 # #
+uca1400_ai_ci NULL NULL NULL # #
+uca1400_ai_cs NULL NULL NULL # #
+uca1400_as_ci NULL NULL NULL # #
+uca1400_as_cs NULL NULL NULL # #
+uca1400_nopad_ai_ci NULL NULL NULL # #
+uca1400_nopad_ai_cs NULL NULL NULL # #
+uca1400_nopad_as_ci NULL NULL NULL # #
+uca1400_nopad_as_cs NULL NULL NULL # #
+uca1400_icelandic_ai_ci NULL NULL NULL # #
+uca1400_icelandic_ai_cs NULL NULL NULL # #
+uca1400_icelandic_as_ci NULL NULL NULL # #
+uca1400_icelandic_as_cs NULL NULL NULL # #
+uca1400_icelandic_nopad_ai_ci NULL NULL NULL # #
+uca1400_icelandic_nopad_ai_cs NULL NULL NULL # #
+uca1400_icelandic_nopad_as_ci NULL NULL NULL # #
+uca1400_icelandic_nopad_as_cs NULL NULL NULL # #
+uca1400_latvian_ai_ci NULL NULL NULL # #
+uca1400_latvian_ai_cs NULL NULL NULL # #
+uca1400_latvian_as_ci NULL NULL NULL # #
+uca1400_latvian_as_cs NULL NULL NULL # #
+uca1400_latvian_nopad_ai_ci NULL NULL NULL # #
+uca1400_latvian_nopad_ai_cs NULL NULL NULL # #
+uca1400_latvian_nopad_as_ci NULL NULL NULL # #
+uca1400_latvian_nopad_as_cs NULL NULL NULL # #
+uca1400_romanian_ai_ci NULL NULL NULL # #
+uca1400_romanian_ai_cs NULL NULL NULL # #
+uca1400_romanian_as_ci NULL NULL NULL # #
+uca1400_romanian_as_cs NULL NULL NULL # #
+uca1400_romanian_nopad_ai_ci NULL NULL NULL # #
+uca1400_romanian_nopad_ai_cs NULL NULL NULL # #
+uca1400_romanian_nopad_as_ci NULL NULL NULL # #
+uca1400_romanian_nopad_as_cs NULL NULL NULL # #
+uca1400_slovenian_ai_ci NULL NULL NULL # #
+uca1400_slovenian_ai_cs NULL NULL NULL # #
+uca1400_slovenian_as_ci NULL NULL NULL # #
+uca1400_slovenian_as_cs NULL NULL NULL # #
+uca1400_slovenian_nopad_ai_ci NULL NULL NULL # #
+uca1400_slovenian_nopad_ai_cs NULL NULL NULL # #
+uca1400_slovenian_nopad_as_ci NULL NULL NULL # #
+uca1400_slovenian_nopad_as_cs NULL NULL NULL # #
+uca1400_polish_ai_ci NULL NULL NULL # #
+uca1400_polish_ai_cs NULL NULL NULL # #
+uca1400_polish_as_ci NULL NULL NULL # #
+uca1400_polish_as_cs NULL NULL NULL # #
+uca1400_polish_nopad_ai_ci NULL NULL NULL # #
+uca1400_polish_nopad_ai_cs NULL NULL NULL # #
+uca1400_polish_nopad_as_ci NULL NULL NULL # #
+uca1400_polish_nopad_as_cs NULL NULL NULL # #
+uca1400_estonian_ai_ci NULL NULL NULL # #
+uca1400_estonian_ai_cs NULL NULL NULL # #
+uca1400_estonian_as_ci NULL NULL NULL # #
+uca1400_estonian_as_cs NULL NULL NULL # #
+uca1400_estonian_nopad_ai_ci NULL NULL NULL # #
+uca1400_estonian_nopad_ai_cs NULL NULL NULL # #
+uca1400_estonian_nopad_as_ci NULL NULL NULL # #
+uca1400_estonian_nopad_as_cs NULL NULL NULL # #
+uca1400_spanish_ai_ci NULL NULL NULL # #
+uca1400_spanish_ai_cs NULL NULL NULL # #
+uca1400_spanish_as_ci NULL NULL NULL # #
+uca1400_spanish_as_cs NULL NULL NULL # #
+uca1400_spanish_nopad_ai_ci NULL NULL NULL # #
+uca1400_spanish_nopad_ai_cs NULL NULL NULL # #
+uca1400_spanish_nopad_as_ci NULL NULL NULL # #
+uca1400_spanish_nopad_as_cs NULL NULL NULL # #
+uca1400_swedish_ai_ci NULL NULL NULL # #
+uca1400_swedish_ai_cs NULL NULL NULL # #
+uca1400_swedish_as_ci NULL NULL NULL # #
+uca1400_swedish_as_cs NULL NULL NULL # #
+uca1400_swedish_nopad_ai_ci NULL NULL NULL # #
+uca1400_swedish_nopad_ai_cs NULL NULL NULL # #
+uca1400_swedish_nopad_as_ci NULL NULL NULL # #
+uca1400_swedish_nopad_as_cs NULL NULL NULL # #
+uca1400_turkish_ai_ci NULL NULL NULL # #
+uca1400_turkish_ai_cs NULL NULL NULL # #
+uca1400_turkish_as_ci NULL NULL NULL # #
+uca1400_turkish_as_cs NULL NULL NULL # #
+uca1400_turkish_nopad_ai_ci NULL NULL NULL # #
+uca1400_turkish_nopad_ai_cs NULL NULL NULL # #
+uca1400_turkish_nopad_as_ci NULL NULL NULL # #
+uca1400_turkish_nopad_as_cs NULL NULL NULL # #
+uca1400_czech_ai_ci NULL NULL NULL # #
+uca1400_czech_ai_cs NULL NULL NULL # #
+uca1400_czech_as_ci NULL NULL NULL # #
+uca1400_czech_as_cs NULL NULL NULL # #
+uca1400_czech_nopad_ai_ci NULL NULL NULL # #
+uca1400_czech_nopad_ai_cs NULL NULL NULL # #
+uca1400_czech_nopad_as_ci NULL NULL NULL # #
+uca1400_czech_nopad_as_cs NULL NULL NULL # #
+uca1400_danish_ai_ci NULL NULL NULL # #
+uca1400_danish_ai_cs NULL NULL NULL # #
+uca1400_danish_as_ci NULL NULL NULL # #
+uca1400_danish_as_cs NULL NULL NULL # #
+uca1400_danish_nopad_ai_ci NULL NULL NULL # #
+uca1400_danish_nopad_ai_cs NULL NULL NULL # #
+uca1400_danish_nopad_as_ci NULL NULL NULL # #
+uca1400_danish_nopad_as_cs NULL NULL NULL # #
+uca1400_lithuanian_ai_ci NULL NULL NULL # #
+uca1400_lithuanian_ai_cs NULL NULL NULL # #
+uca1400_lithuanian_as_ci NULL NULL NULL # #
+uca1400_lithuanian_as_cs NULL NULL NULL # #
+uca1400_lithuanian_nopad_ai_ci NULL NULL NULL # #
+uca1400_lithuanian_nopad_ai_cs NULL NULL NULL # #
+uca1400_lithuanian_nopad_as_ci NULL NULL NULL # #
+uca1400_lithuanian_nopad_as_cs NULL NULL NULL # #
+uca1400_slovak_ai_ci NULL NULL NULL # #
+uca1400_slovak_ai_cs NULL NULL NULL # #
+uca1400_slovak_as_ci NULL NULL NULL # #
+uca1400_slovak_as_cs NULL NULL NULL # #
+uca1400_slovak_nopad_ai_ci NULL NULL NULL # #
+uca1400_slovak_nopad_ai_cs NULL NULL NULL # #
+uca1400_slovak_nopad_as_ci NULL NULL NULL # #
+uca1400_slovak_nopad_as_cs NULL NULL NULL # #
+uca1400_spanish2_ai_ci NULL NULL NULL # #
+uca1400_spanish2_ai_cs NULL NULL NULL # #
+uca1400_spanish2_as_ci NULL NULL NULL # #
+uca1400_spanish2_as_cs NULL NULL NULL # #
+uca1400_spanish2_nopad_ai_ci NULL NULL NULL # #
+uca1400_spanish2_nopad_ai_cs NULL NULL NULL # #
+uca1400_spanish2_nopad_as_ci NULL NULL NULL # #
+uca1400_spanish2_nopad_as_cs NULL NULL NULL # #
+uca1400_roman_ai_ci NULL NULL NULL # #
+uca1400_roman_ai_cs NULL NULL NULL # #
+uca1400_roman_as_ci NULL NULL NULL # #
+uca1400_roman_as_cs NULL NULL NULL # #
+uca1400_roman_nopad_ai_ci NULL NULL NULL # #
+uca1400_roman_nopad_ai_cs NULL NULL NULL # #
+uca1400_roman_nopad_as_ci NULL NULL NULL # #
+uca1400_roman_nopad_as_cs NULL NULL NULL # #
+uca1400_persian_ai_ci NULL NULL NULL # #
+uca1400_persian_ai_cs NULL NULL NULL # #
+uca1400_persian_as_ci NULL NULL NULL # #
+uca1400_persian_as_cs NULL NULL NULL # #
+uca1400_persian_nopad_ai_ci NULL NULL NULL # #
+uca1400_persian_nopad_ai_cs NULL NULL NULL # #
+uca1400_persian_nopad_as_ci NULL NULL NULL # #
+uca1400_persian_nopad_as_cs NULL NULL NULL # #
+uca1400_esperanto_ai_ci NULL NULL NULL # #
+uca1400_esperanto_ai_cs NULL NULL NULL # #
+uca1400_esperanto_as_ci NULL NULL NULL # #
+uca1400_esperanto_as_cs NULL NULL NULL # #
+uca1400_esperanto_nopad_ai_ci NULL NULL NULL # #
+uca1400_esperanto_nopad_ai_cs NULL NULL NULL # #
+uca1400_esperanto_nopad_as_ci NULL NULL NULL # #
+uca1400_esperanto_nopad_as_cs NULL NULL NULL # #
+uca1400_hungarian_ai_ci NULL NULL NULL # #
+uca1400_hungarian_ai_cs NULL NULL NULL # #
+uca1400_hungarian_as_ci NULL NULL NULL # #
+uca1400_hungarian_as_cs NULL NULL NULL # #
+uca1400_hungarian_nopad_ai_ci NULL NULL NULL # #
+uca1400_hungarian_nopad_ai_cs NULL NULL NULL # #
+uca1400_hungarian_nopad_as_ci NULL NULL NULL # #
+uca1400_hungarian_nopad_as_cs NULL NULL NULL # #
+uca1400_sinhala_ai_ci NULL NULL NULL # #
+uca1400_sinhala_ai_cs NULL NULL NULL # #
+uca1400_sinhala_as_ci NULL NULL NULL # #
+uca1400_sinhala_as_cs NULL NULL NULL # #
+uca1400_sinhala_nopad_ai_ci NULL NULL NULL # #
+uca1400_sinhala_nopad_ai_cs NULL NULL NULL # #
+uca1400_sinhala_nopad_as_ci NULL NULL NULL # #
+uca1400_sinhala_nopad_as_cs NULL NULL NULL # #
+uca1400_german2_ai_ci NULL NULL NULL # #
+uca1400_german2_ai_cs NULL NULL NULL # #
+uca1400_german2_as_ci NULL NULL NULL # #
+uca1400_german2_as_cs NULL NULL NULL # #
+uca1400_german2_nopad_ai_ci NULL NULL NULL # #
+uca1400_german2_nopad_ai_cs NULL NULL NULL # #
+uca1400_german2_nopad_as_ci NULL NULL NULL # #
+uca1400_german2_nopad_as_cs NULL NULL NULL # #
+uca1400_vietnamese_ai_ci NULL NULL NULL # #
+uca1400_vietnamese_ai_cs NULL NULL NULL # #
+uca1400_vietnamese_as_ci NULL NULL NULL # #
+uca1400_vietnamese_as_cs NULL NULL NULL # #
+uca1400_vietnamese_nopad_ai_ci NULL NULL NULL # #
+uca1400_vietnamese_nopad_ai_cs NULL NULL NULL # #
+uca1400_vietnamese_nopad_as_ci NULL NULL NULL # #
+uca1400_vietnamese_nopad_as_cs NULL NULL NULL # #
+uca1400_croatian_ai_ci NULL NULL NULL # #
+uca1400_croatian_ai_cs NULL NULL NULL # #
+uca1400_croatian_as_ci NULL NULL NULL # #
+uca1400_croatian_as_cs NULL NULL NULL # #
+uca1400_croatian_nopad_ai_ci NULL NULL NULL # #
+uca1400_croatian_nopad_ai_cs NULL NULL NULL # #
+uca1400_croatian_nopad_as_ci NULL NULL NULL # #
+uca1400_croatian_nopad_as_cs NULL NULL NULL # #
cp1251_bulgarian_ci cp1251 14 # #
cp1251_ukrainian_ci cp1251 23 # #
cp1251_bin cp1251 50 # #
diff --git a/mysql-test/suite/engines/funcs/r/db_alter_collate_utf8.result b/mysql-test/suite/engines/funcs/r/db_alter_collate_utf8.result
index 6aa05538a32..0bc617071ca 100644
--- a/mysql-test/suite/engines/funcs/r/db_alter_collate_utf8.result
+++ b/mysql-test/suite/engines/funcs/r/db_alter_collate_utf8.result
@@ -224,6 +224,190 @@ utf8mb4_general_nopad_ci utf8mb4 1069 # #
utf8mb4_nopad_bin utf8mb4 1070 # #
utf8mb4_unicode_nopad_ci utf8mb4 1248 # #
utf8mb4_unicode_520_nopad_ci utf8mb4 1270 # #
+uca1400_ai_ci NULL NULL NULL # #
+uca1400_ai_cs NULL NULL NULL # #
+uca1400_as_ci NULL NULL NULL # #
+uca1400_as_cs NULL NULL NULL # #
+uca1400_nopad_ai_ci NULL NULL NULL # #
+uca1400_nopad_ai_cs NULL NULL NULL # #
+uca1400_nopad_as_ci NULL NULL NULL # #
+uca1400_nopad_as_cs NULL NULL NULL # #
+uca1400_icelandic_ai_ci NULL NULL NULL # #
+uca1400_icelandic_ai_cs NULL NULL NULL # #
+uca1400_icelandic_as_ci NULL NULL NULL # #
+uca1400_icelandic_as_cs NULL NULL NULL # #
+uca1400_icelandic_nopad_ai_ci NULL NULL NULL # #
+uca1400_icelandic_nopad_ai_cs NULL NULL NULL # #
+uca1400_icelandic_nopad_as_ci NULL NULL NULL # #
+uca1400_icelandic_nopad_as_cs NULL NULL NULL # #
+uca1400_latvian_ai_ci NULL NULL NULL # #
+uca1400_latvian_ai_cs NULL NULL NULL # #
+uca1400_latvian_as_ci NULL NULL NULL # #
+uca1400_latvian_as_cs NULL NULL NULL # #
+uca1400_latvian_nopad_ai_ci NULL NULL NULL # #
+uca1400_latvian_nopad_ai_cs NULL NULL NULL # #
+uca1400_latvian_nopad_as_ci NULL NULL NULL # #
+uca1400_latvian_nopad_as_cs NULL NULL NULL # #
+uca1400_romanian_ai_ci NULL NULL NULL # #
+uca1400_romanian_ai_cs NULL NULL NULL # #
+uca1400_romanian_as_ci NULL NULL NULL # #
+uca1400_romanian_as_cs NULL NULL NULL # #
+uca1400_romanian_nopad_ai_ci NULL NULL NULL # #
+uca1400_romanian_nopad_ai_cs NULL NULL NULL # #
+uca1400_romanian_nopad_as_ci NULL NULL NULL # #
+uca1400_romanian_nopad_as_cs NULL NULL NULL # #
+uca1400_slovenian_ai_ci NULL NULL NULL # #
+uca1400_slovenian_ai_cs NULL NULL NULL # #
+uca1400_slovenian_as_ci NULL NULL NULL # #
+uca1400_slovenian_as_cs NULL NULL NULL # #
+uca1400_slovenian_nopad_ai_ci NULL NULL NULL # #
+uca1400_slovenian_nopad_ai_cs NULL NULL NULL # #
+uca1400_slovenian_nopad_as_ci NULL NULL NULL # #
+uca1400_slovenian_nopad_as_cs NULL NULL NULL # #
+uca1400_polish_ai_ci NULL NULL NULL # #
+uca1400_polish_ai_cs NULL NULL NULL # #
+uca1400_polish_as_ci NULL NULL NULL # #
+uca1400_polish_as_cs NULL NULL NULL # #
+uca1400_polish_nopad_ai_ci NULL NULL NULL # #
+uca1400_polish_nopad_ai_cs NULL NULL NULL # #
+uca1400_polish_nopad_as_ci NULL NULL NULL # #
+uca1400_polish_nopad_as_cs NULL NULL NULL # #
+uca1400_estonian_ai_ci NULL NULL NULL # #
+uca1400_estonian_ai_cs NULL NULL NULL # #
+uca1400_estonian_as_ci NULL NULL NULL # #
+uca1400_estonian_as_cs NULL NULL NULL # #
+uca1400_estonian_nopad_ai_ci NULL NULL NULL # #
+uca1400_estonian_nopad_ai_cs NULL NULL NULL # #
+uca1400_estonian_nopad_as_ci NULL NULL NULL # #
+uca1400_estonian_nopad_as_cs NULL NULL NULL # #
+uca1400_spanish_ai_ci NULL NULL NULL # #
+uca1400_spanish_ai_cs NULL NULL NULL # #
+uca1400_spanish_as_ci NULL NULL NULL # #
+uca1400_spanish_as_cs NULL NULL NULL # #
+uca1400_spanish_nopad_ai_ci NULL NULL NULL # #
+uca1400_spanish_nopad_ai_cs NULL NULL NULL # #
+uca1400_spanish_nopad_as_ci NULL NULL NULL # #
+uca1400_spanish_nopad_as_cs NULL NULL NULL # #
+uca1400_swedish_ai_ci NULL NULL NULL # #
+uca1400_swedish_ai_cs NULL NULL NULL # #
+uca1400_swedish_as_ci NULL NULL NULL # #
+uca1400_swedish_as_cs NULL NULL NULL # #
+uca1400_swedish_nopad_ai_ci NULL NULL NULL # #
+uca1400_swedish_nopad_ai_cs NULL NULL NULL # #
+uca1400_swedish_nopad_as_ci NULL NULL NULL # #
+uca1400_swedish_nopad_as_cs NULL NULL NULL # #
+uca1400_turkish_ai_ci NULL NULL NULL # #
+uca1400_turkish_ai_cs NULL NULL NULL # #
+uca1400_turkish_as_ci NULL NULL NULL # #
+uca1400_turkish_as_cs NULL NULL NULL # #
+uca1400_turkish_nopad_ai_ci NULL NULL NULL # #
+uca1400_turkish_nopad_ai_cs NULL NULL NULL # #
+uca1400_turkish_nopad_as_ci NULL NULL NULL # #
+uca1400_turkish_nopad_as_cs NULL NULL NULL # #
+uca1400_czech_ai_ci NULL NULL NULL # #
+uca1400_czech_ai_cs NULL NULL NULL # #
+uca1400_czech_as_ci NULL NULL NULL # #
+uca1400_czech_as_cs NULL NULL NULL # #
+uca1400_czech_nopad_ai_ci NULL NULL NULL # #
+uca1400_czech_nopad_ai_cs NULL NULL NULL # #
+uca1400_czech_nopad_as_ci NULL NULL NULL # #
+uca1400_czech_nopad_as_cs NULL NULL NULL # #
+uca1400_danish_ai_ci NULL NULL NULL # #
+uca1400_danish_ai_cs NULL NULL NULL # #
+uca1400_danish_as_ci NULL NULL NULL # #
+uca1400_danish_as_cs NULL NULL NULL # #
+uca1400_danish_nopad_ai_ci NULL NULL NULL # #
+uca1400_danish_nopad_ai_cs NULL NULL NULL # #
+uca1400_danish_nopad_as_ci NULL NULL NULL # #
+uca1400_danish_nopad_as_cs NULL NULL NULL # #
+uca1400_lithuanian_ai_ci NULL NULL NULL # #
+uca1400_lithuanian_ai_cs NULL NULL NULL # #
+uca1400_lithuanian_as_ci NULL NULL NULL # #
+uca1400_lithuanian_as_cs NULL NULL NULL # #
+uca1400_lithuanian_nopad_ai_ci NULL NULL NULL # #
+uca1400_lithuanian_nopad_ai_cs NULL NULL NULL # #
+uca1400_lithuanian_nopad_as_ci NULL NULL NULL # #
+uca1400_lithuanian_nopad_as_cs NULL NULL NULL # #
+uca1400_slovak_ai_ci NULL NULL NULL # #
+uca1400_slovak_ai_cs NULL NULL NULL # #
+uca1400_slovak_as_ci NULL NULL NULL # #
+uca1400_slovak_as_cs NULL NULL NULL # #
+uca1400_slovak_nopad_ai_ci NULL NULL NULL # #
+uca1400_slovak_nopad_ai_cs NULL NULL NULL # #
+uca1400_slovak_nopad_as_ci NULL NULL NULL # #
+uca1400_slovak_nopad_as_cs NULL NULL NULL # #
+uca1400_spanish2_ai_ci NULL NULL NULL # #
+uca1400_spanish2_ai_cs NULL NULL NULL # #
+uca1400_spanish2_as_ci NULL NULL NULL # #
+uca1400_spanish2_as_cs NULL NULL NULL # #
+uca1400_spanish2_nopad_ai_ci NULL NULL NULL # #
+uca1400_spanish2_nopad_ai_cs NULL NULL NULL # #
+uca1400_spanish2_nopad_as_ci NULL NULL NULL # #
+uca1400_spanish2_nopad_as_cs NULL NULL NULL # #
+uca1400_roman_ai_ci NULL NULL NULL # #
+uca1400_roman_ai_cs NULL NULL NULL # #
+uca1400_roman_as_ci NULL NULL NULL # #
+uca1400_roman_as_cs NULL NULL NULL # #
+uca1400_roman_nopad_ai_ci NULL NULL NULL # #
+uca1400_roman_nopad_ai_cs NULL NULL NULL # #
+uca1400_roman_nopad_as_ci NULL NULL NULL # #
+uca1400_roman_nopad_as_cs NULL NULL NULL # #
+uca1400_persian_ai_ci NULL NULL NULL # #
+uca1400_persian_ai_cs NULL NULL NULL # #
+uca1400_persian_as_ci NULL NULL NULL # #
+uca1400_persian_as_cs NULL NULL NULL # #
+uca1400_persian_nopad_ai_ci NULL NULL NULL # #
+uca1400_persian_nopad_ai_cs NULL NULL NULL # #
+uca1400_persian_nopad_as_ci NULL NULL NULL # #
+uca1400_persian_nopad_as_cs NULL NULL NULL # #
+uca1400_esperanto_ai_ci NULL NULL NULL # #
+uca1400_esperanto_ai_cs NULL NULL NULL # #
+uca1400_esperanto_as_ci NULL NULL NULL # #
+uca1400_esperanto_as_cs NULL NULL NULL # #
+uca1400_esperanto_nopad_ai_ci NULL NULL NULL # #
+uca1400_esperanto_nopad_ai_cs NULL NULL NULL # #
+uca1400_esperanto_nopad_as_ci NULL NULL NULL # #
+uca1400_esperanto_nopad_as_cs NULL NULL NULL # #
+uca1400_hungarian_ai_ci NULL NULL NULL # #
+uca1400_hungarian_ai_cs NULL NULL NULL # #
+uca1400_hungarian_as_ci NULL NULL NULL # #
+uca1400_hungarian_as_cs NULL NULL NULL # #
+uca1400_hungarian_nopad_ai_ci NULL NULL NULL # #
+uca1400_hungarian_nopad_ai_cs NULL NULL NULL # #
+uca1400_hungarian_nopad_as_ci NULL NULL NULL # #
+uca1400_hungarian_nopad_as_cs NULL NULL NULL # #
+uca1400_sinhala_ai_ci NULL NULL NULL # #
+uca1400_sinhala_ai_cs NULL NULL NULL # #
+uca1400_sinhala_as_ci NULL NULL NULL # #
+uca1400_sinhala_as_cs NULL NULL NULL # #
+uca1400_sinhala_nopad_ai_ci NULL NULL NULL # #
+uca1400_sinhala_nopad_ai_cs NULL NULL NULL # #
+uca1400_sinhala_nopad_as_ci NULL NULL NULL # #
+uca1400_sinhala_nopad_as_cs NULL NULL NULL # #
+uca1400_german2_ai_ci NULL NULL NULL # #
+uca1400_german2_ai_cs NULL NULL NULL # #
+uca1400_german2_as_ci NULL NULL NULL # #
+uca1400_german2_as_cs NULL NULL NULL # #
+uca1400_german2_nopad_ai_ci NULL NULL NULL # #
+uca1400_german2_nopad_ai_cs NULL NULL NULL # #
+uca1400_german2_nopad_as_ci NULL NULL NULL # #
+uca1400_german2_nopad_as_cs NULL NULL NULL # #
+uca1400_vietnamese_ai_ci NULL NULL NULL # #
+uca1400_vietnamese_ai_cs NULL NULL NULL # #
+uca1400_vietnamese_as_ci NULL NULL NULL # #
+uca1400_vietnamese_as_cs NULL NULL NULL # #
+uca1400_vietnamese_nopad_ai_ci NULL NULL NULL # #
+uca1400_vietnamese_nopad_ai_cs NULL NULL NULL # #
+uca1400_vietnamese_nopad_as_ci NULL NULL NULL # #
+uca1400_vietnamese_nopad_as_cs NULL NULL NULL # #
+uca1400_croatian_ai_ci NULL NULL NULL # #
+uca1400_croatian_ai_cs NULL NULL NULL # #
+uca1400_croatian_as_ci NULL NULL NULL # #
+uca1400_croatian_as_cs NULL NULL NULL # #
+uca1400_croatian_nopad_ai_ci NULL NULL NULL # #
+uca1400_croatian_nopad_ai_cs NULL NULL NULL # #
+uca1400_croatian_nopad_as_ci NULL NULL NULL # #
+uca1400_croatian_nopad_as_cs NULL NULL NULL # #
cp1251_bulgarian_ci cp1251 14 # #
cp1251_ukrainian_ci cp1251 23 # #
cp1251_bin cp1251 50 # #
diff --git a/mysql-test/suite/engines/funcs/r/ix_index_non_string.result b/mysql-test/suite/engines/funcs/r/ix_index_non_string.result
index 84777236ddb..f56fe4f83f4 100644
--- a/mysql-test/suite/engines/funcs/r/ix_index_non_string.result
+++ b/mysql-test/suite/engines/funcs/r/ix_index_non_string.result
@@ -427,7 +427,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/engines/funcs/r/ix_unique_non_string.result b/mysql-test/suite/engines/funcs/r/ix_unique_non_string.result
index b99751d9f6c..9f10a9bfb13 100644
--- a/mysql-test/suite/engines/funcs/r/ix_unique_non_string.result
+++ b/mysql-test/suite/engines/funcs/r/ix_unique_non_string.result
@@ -427,7 +427,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_000010.result b/mysql-test/suite/engines/funcs/r/rpl_000010.result
index ae989f25e1b..a86d71bd33f 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_000010.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_000010.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
create table t1 (n int not null auto_increment primary key);
insert into t1 values(NULL);
insert into t1 values(2);
diff --git a/mysql-test/suite/engines/funcs/r/rpl_change_master.result b/mysql-test/suite/engines/funcs/r/rpl_change_master.result
index 48cec72d917..88801b07bba 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_change_master.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_change_master.result
@@ -26,4 +26,9 @@ connection master;
CHANGE MASTER TO MASTER_USER='root', MASTER_SSL=0, MASTER_SSL_CA='', MASTER_SSL_CERT='',
MASTER_SSL_KEY='', MASTER_SSL_CRL='', MASTER_SSL_CRLPATH='';
CHANGE MASTER TO MASTER_USER='root', MASTER_PASSWORD='', MASTER_SSL=0;
+"Usage of CURRENT_POS in CHANGE MASTER MASTER_USE_GTID is dreprecated.
+CHANGE MASTER TO MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
+CHANGE MASTER TO MASTER_USE_GTID=SLAVE_POS;
include/rpl_end.inc
diff --git a/mysql-test/suite/engines/funcs/r/rpl_log_pos.result b/mysql-test/suite/engines/funcs/r/rpl_log_pos.result
index 7f5f34bf831..74080b3936f 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_log_pos.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_log_pos.result
@@ -9,7 +9,7 @@ File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
connection slave;
include/stop_slave.inc
-change master to master_log_pos=MASTER_LOG_POS;
+change master to master_log_pos=MASTER_LOG_POS, master_use_gtid=no;
start slave;
include/wait_for_slave_io_error.inc [errno=1236]
Last_IO_Error = 'Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event; consider out of disk space on master; the first event 'master-bin.000001' at XXX, the last event read from 'master-bin.000001' at XXX, the last byte read from 'master-bin.000001' at XXX.''
@@ -23,7 +23,7 @@ drop table if exists t1;
create table t1 (n int);
insert into t1 values (1),(2),(3);
connection slave;
-change master to master_log_pos=MASTER_LOG_POS;
+change master to master_log_pos=MASTER_LOG_POS, master_use_gtid=no;
start slave;
select * from t1 ORDER BY n;
n
diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result b/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result
index b9e98d5a97d..5e595447e50 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_row_reset_slave.result
@@ -7,7 +7,7 @@ include/stop_slave.inc
change master to master_user='test';
Master_User = 'test'
Master_Host = '127.0.0.1'
-reset slave;
+include/reset_slave.inc
Master_User = 'test'
Master_Host = '127.0.0.1'
change master to master_user='root';
@@ -15,13 +15,13 @@ include/start_slave.inc
Master_User = 'root'
Master_Host = '127.0.0.1'
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
connection master;
create temporary table t1 (a int);
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
show status like 'slave_open_temp_tables';
Variable_name Value
@@ -30,7 +30,7 @@ connection master;
drop temporary table if exists t1;
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/check_slave_no_error.inc
change master to master_user='impossible_user_name';
start slave;
@@ -44,13 +44,14 @@ change master to master_user='impossible_user_name';
start slave;
include/wait_for_slave_io_error.inc [errno=1045]
include/stop_slave_sql.inc
-reset slave;
+include/reset_slave.inc
include/check_slave_no_error.inc
change master to master_user='root';
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
include/stop_slave.inc
reset slave all;
+set @@global.gtid_slave_pos= "";
start slave;
ERROR HY000: Misconfigured slave: MASTER_HOST was not set; Fix in config file or with CHANGE MASTER TO
CHANGE MASTER TO MASTER_HOST= 'MASTER_HOST', MASTER_USER= 'MASTER_USER', MASTER_PORT= MASTER_PORT;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_row_until.result b/mysql-test/suite/engines/funcs/r/rpl_row_until.result
index 82268ce72eb..8ef10bf47b5 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_row_until.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_row_until.result
@@ -10,7 +10,7 @@ INSERT INTO t2 VALUES (3),(4);
DROP TABLE t2;
connection slave;
include/stop_slave.inc
-RESET SLAVE;
+include/reset_slave.inc
CHANGE MASTER TO MASTER_USER='root', MASTER_CONNECT_RETRY=1, MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_MYPORT;
connection slave;
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_drop_t1;
@@ -52,7 +52,7 @@ START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=MASTER
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS;
include/stop_slave.inc
-RESET SLAVE;
+include/reset_slave.inc
include/start_slave.inc
include/rpl_reset.inc
connection master;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_server_id2.result b/mysql-test/suite/engines/funcs/r/rpl_server_id2.result
index 74145645920..3d8eeb02ca6 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_server_id2.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_server_id2.result
@@ -1,6 +1,9 @@
include/master-slave.inc
[connection master]
connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
create table t1 (n int);
reset master;
stop slave;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_sp.result b/mysql-test/suite/engines/funcs/r/rpl_sp.result
index d158fe8bfd6..264a1505275 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_sp.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_sp.result
@@ -771,7 +771,7 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
SET TIMESTAMP=t/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result b/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result
index 1ba2d1b624b..0a365b30b38 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_stm_reset_slave.result
@@ -7,7 +7,7 @@ include/stop_slave.inc
change master to master_user='test';
Master_User = 'test'
Master_Host = '127.0.0.1'
-reset slave;
+include/reset_slave.inc
Master_User = 'test'
Master_Host = '127.0.0.1'
change master to master_user='root';
@@ -15,13 +15,13 @@ include/start_slave.inc
Master_User = 'root'
Master_Host = '127.0.0.1'
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
connection master;
create temporary table t1 (a int);
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
show status like 'slave_open_temp_tables';
Variable_name Value
@@ -30,7 +30,7 @@ connection master;
drop temporary table if exists t1;
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/check_slave_no_error.inc
change master to master_user='impossible_user_name';
start slave;
@@ -44,13 +44,14 @@ change master to master_user='impossible_user_name';
start slave;
include/wait_for_slave_io_error.inc [errno=1045]
include/stop_slave_sql.inc
-reset slave;
+include/reset_slave.inc
include/check_slave_no_error.inc
change master to master_user='root';
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
include/stop_slave.inc
reset slave all;
+set @@global.gtid_slave_pos= "";
start slave;
ERROR HY000: Misconfigured slave: MASTER_HOST was not set; Fix in config file or with CHANGE MASTER TO
CHANGE MASTER TO MASTER_HOST= 'MASTER_HOST', MASTER_USER= 'MASTER_USER', MASTER_PORT= MASTER_PORT;
diff --git a/mysql-test/suite/engines/funcs/r/rpl_trigger.result b/mysql-test/suite/engines/funcs/r/rpl_trigger.result
index b5b88670fc6..3913508d032 100644
--- a/mysql-test/suite/engines/funcs/r/rpl_trigger.result
+++ b/mysql-test/suite/engines/funcs/r/rpl_trigger.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
create table t1 (a int auto_increment, primary key (a), b int, rand_value double not null);
create table t2 (a int auto_increment, primary key (a), b int);
@@ -960,7 +965,9 @@ include/rpl_stop_server.inc [server_number=1]
include/rpl_start_server.inc [server_number=1]
--> Master binlog: Server ver: 5.0.16-debug-log, Binlog ver: 4
connection slave;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
include/start_slave.inc
SELECT MASTER_POS_WAIT('master-bin.000001', 513) >= 0;
MASTER_POS_WAIT('master-bin.000001', 513) >= 0
@@ -991,7 +998,9 @@ DROP TRIGGER trg1;
DROP TABLE t1;
DROP TABLE t2;
include/stop_slave.inc
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
SHOW TABLES LIKE 't_';
Tables_in_test (t_)
diff --git a/mysql-test/suite/engines/funcs/r/ta_2part_column_to_pk.result b/mysql-test/suite/engines/funcs/r/ta_2part_column_to_pk.result
index 626c5a6de45..43178243129 100644
--- a/mysql-test/suite/engines/funcs/r/ta_2part_column_to_pk.result
+++ b/mysql-test/suite/engines/funcs/r/ta_2part_column_to_pk.result
@@ -342,8 +342,8 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD PRIMARY KEY (c1,c2);
SHOW TABLES;
@@ -352,8 +352,8 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NOT NULL,
PRIMARY KEY (`c1`,`c2`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/engines/funcs/r/ta_2part_diff_to_pk.result b/mysql-test/suite/engines/funcs/r/ta_2part_diff_to_pk.result
index 54f83cfad51..ec163b21e57 100644
--- a/mysql-test/suite/engines/funcs/r/ta_2part_diff_to_pk.result
+++ b/mysql-test/suite/engines/funcs/r/ta_2part_diff_to_pk.result
@@ -398,7 +398,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` bit(1) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -410,7 +410,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` bit(1) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -846,7 +846,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` tinyint(4) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -858,7 +858,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` tinyint(4) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -1294,7 +1294,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` smallint(6) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -1306,7 +1306,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` smallint(6) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -1742,7 +1742,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` mediumint(9) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -1754,7 +1754,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` mediumint(9) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -2190,7 +2190,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -2202,7 +2202,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -2638,7 +2638,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -2650,7 +2650,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -3086,7 +3086,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` bigint(20) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -3098,7 +3098,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` bigint(20) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -3534,7 +3534,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` double NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -3546,7 +3546,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` double NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -3982,7 +3982,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` double NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -3994,7 +3994,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` double NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -4430,7 +4430,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` float NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -4442,7 +4442,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` float NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -4878,7 +4878,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` decimal(10,0) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -4890,7 +4890,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` decimal(10,0) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -5326,7 +5326,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` decimal(10,0) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -5338,7 +5338,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` decimal(10,0) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -5774,7 +5774,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` date NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -5786,7 +5786,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` date NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -6222,7 +6222,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` time NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -6234,7 +6234,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` time NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
@@ -6279,7 +6279,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` bit(1) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6291,7 +6291,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` bit(1) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6307,7 +6307,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` tinyint(4) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6319,7 +6319,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` tinyint(4) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6335,7 +6335,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` smallint(6) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6347,7 +6347,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` smallint(6) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6363,7 +6363,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` mediumint(9) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6375,7 +6375,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` mediumint(9) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6391,7 +6391,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6403,7 +6403,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6419,7 +6419,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6431,7 +6431,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6447,7 +6447,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` bigint(20) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6459,7 +6459,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` bigint(20) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6475,7 +6475,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` double NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6487,7 +6487,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` double NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6503,7 +6503,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` double NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6515,7 +6515,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` double NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6531,7 +6531,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` float NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6543,7 +6543,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` float NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6559,7 +6559,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` decimal(10,0) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6571,7 +6571,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` decimal(10,0) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6587,7 +6587,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` decimal(10,0) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6599,7 +6599,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` decimal(10,0) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6615,7 +6615,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` date NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6627,7 +6627,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` date NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6643,7 +6643,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` time NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6655,7 +6655,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` time NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6670,8 +6670,8 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6682,8 +6682,8 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -6699,7 +6699,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` year(4) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -6711,7 +6711,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` year(4) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
PRIMARY KEY (`c1`,`c2`)
@@ -7118,7 +7118,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` year(4) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL
@@ -7130,7 +7130,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` year(4) NOT NULL,
`c3` int(11) DEFAULT NULL,
`c4` varchar(10) NOT NULL,
diff --git a/mysql-test/suite/engines/funcs/r/ta_3part_column_to_pk.result b/mysql-test/suite/engines/funcs/r/ta_3part_column_to_pk.result
index b0eab6dc214..dda36fa2fb0 100644
--- a/mysql-test/suite/engines/funcs/r/ta_3part_column_to_pk.result
+++ b/mysql-test/suite/engines/funcs/r/ta_3part_column_to_pk.result
@@ -370,9 +370,9 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD PRIMARY KEY (c1,c2,c3);
SHOW TABLES;
@@ -381,9 +381,9 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`,`c2`,`c3`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/engines/funcs/r/ta_add_column.result b/mysql-test/suite/engines/funcs/r/ta_add_column.result
index 063f41c62e6..43212cec556 100644
--- a/mysql-test/suite/engines/funcs/r/ta_add_column.result
+++ b/mysql-test/suite/engines/funcs/r/ta_add_column.result
@@ -842,7 +842,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 BIT NOT NULL;
SHOW TABLES;
@@ -851,7 +851,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` bit(1) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -1898,7 +1898,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TINYINT NOT NULL;
SHOW TABLES;
@@ -1907,7 +1907,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` tinyint(4) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2954,7 +2954,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 SMALLINT NOT NULL;
SHOW TABLES;
@@ -2963,7 +2963,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` smallint(6) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -4010,7 +4010,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 MEDIUMINT NOT NULL;
SHOW TABLES;
@@ -4019,7 +4019,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` mediumint(9) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -5066,7 +5066,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 INT NOT NULL;
SHOW TABLES;
@@ -5075,7 +5075,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -6122,7 +6122,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 INTEGER NOT NULL;
SHOW TABLES;
@@ -6131,7 +6131,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -7178,7 +7178,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 BIGINT NOT NULL;
SHOW TABLES;
@@ -7187,7 +7187,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` bigint(20) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -8234,7 +8234,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 REAL NOT NULL;
SHOW TABLES;
@@ -8243,7 +8243,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` double NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -9290,7 +9290,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 DOUBLE NOT NULL;
SHOW TABLES;
@@ -9299,7 +9299,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` double NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -10346,7 +10346,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 FLOAT NOT NULL;
SHOW TABLES;
@@ -10355,7 +10355,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` float NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -11402,7 +11402,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 DECIMAL NOT NULL;
SHOW TABLES;
@@ -11411,7 +11411,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` decimal(10,0) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -12458,7 +12458,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 NUMERIC NOT NULL;
SHOW TABLES;
@@ -12467,7 +12467,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` decimal(10,0) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -13514,7 +13514,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 DATE NOT NULL;
SHOW TABLES;
@@ -13523,7 +13523,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` date NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -14570,7 +14570,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TIME NOT NULL;
SHOW TABLES;
@@ -14579,7 +14579,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` time NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -15328,7 +15328,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` bit(1) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15350,7 +15350,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` tinyint(4) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15372,7 +15372,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` smallint(6) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15394,7 +15394,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` mediumint(9) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15416,7 +15416,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15438,7 +15438,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15460,7 +15460,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` bigint(20) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15482,7 +15482,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` double NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15504,7 +15504,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` double NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15526,7 +15526,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` float NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15548,7 +15548,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` decimal(10,0) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15570,7 +15570,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` decimal(10,0) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15592,7 +15592,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` date NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15614,7 +15614,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` time NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15626,7 +15626,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TIMESTAMP NOT NULL;
SHOW TABLES;
@@ -15635,8 +15635,8 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15658,7 +15658,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` year(4) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15680,7 +15680,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` tinyblob NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15702,7 +15702,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` blob NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15724,7 +15724,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` mediumblob NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15746,7 +15746,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` longblob NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15768,7 +15768,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` tinytext NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15790,7 +15790,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` text NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15812,7 +15812,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` mediumtext NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15834,7 +15834,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` longtext NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -16682,7 +16682,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 YEAR NOT NULL;
SHOW TABLES;
@@ -16691,7 +16691,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` year(4) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -17738,7 +17738,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TINYBLOB NOT NULL;
SHOW TABLES;
@@ -17747,7 +17747,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` tinyblob NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -18794,7 +18794,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 BLOB NOT NULL;
SHOW TABLES;
@@ -18803,7 +18803,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` blob NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -19850,7 +19850,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 MEDIUMBLOB NOT NULL;
SHOW TABLES;
@@ -19859,7 +19859,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` mediumblob NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -20906,7 +20906,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 LONGBLOB NOT NULL;
SHOW TABLES;
@@ -20915,7 +20915,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` longblob NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -21962,7 +21962,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TINYTEXT NOT NULL;
SHOW TABLES;
@@ -21971,7 +21971,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` tinytext NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -23018,7 +23018,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TEXT NOT NULL;
SHOW TABLES;
@@ -23027,7 +23027,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` text NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -24074,7 +24074,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 MEDIUMTEXT NOT NULL;
SHOW TABLES;
@@ -24083,7 +24083,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` mediumtext NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -25130,7 +25130,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 LONGTEXT NOT NULL;
SHOW TABLES;
@@ -25139,7 +25139,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` longtext NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/engines/funcs/r/ta_add_column2.result b/mysql-test/suite/engines/funcs/r/ta_add_column2.result
index 79afc094045..9ff6012049d 100644
--- a/mysql-test/suite/engines/funcs/r/ta_add_column2.result
+++ b/mysql-test/suite/engines/funcs/r/ta_add_column2.result
@@ -2568,7 +2568,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` char(15) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -2590,7 +2590,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(15) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -2612,7 +2612,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` binary(15) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -2634,7 +2634,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` varbinary(15) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c2` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/r/ta_add_column_first.result b/mysql-test/suite/engines/funcs/r/ta_add_column_first.result
index d0657802547..a968cf4d034 100644
--- a/mysql-test/suite/engines/funcs/r/ta_add_column_first.result
+++ b/mysql-test/suite/engines/funcs/r/ta_add_column_first.result
@@ -842,7 +842,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 BIT NOT NULL FIRST;
SHOW TABLES;
@@ -852,7 +852,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` bit(1) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -1898,7 +1898,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TINYINT NOT NULL FIRST;
SHOW TABLES;
@@ -1908,7 +1908,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` tinyint(4) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -2954,7 +2954,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 SMALLINT NOT NULL FIRST;
SHOW TABLES;
@@ -2964,7 +2964,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` smallint(6) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -4010,7 +4010,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 MEDIUMINT NOT NULL FIRST;
SHOW TABLES;
@@ -4020,7 +4020,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` mediumint(9) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -5066,7 +5066,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 INT NOT NULL FIRST;
SHOW TABLES;
@@ -5076,7 +5076,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` int(11) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -6122,7 +6122,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 INTEGER NOT NULL FIRST;
SHOW TABLES;
@@ -6132,7 +6132,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` int(11) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -7178,7 +7178,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 BIGINT NOT NULL FIRST;
SHOW TABLES;
@@ -7188,7 +7188,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` bigint(20) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -8234,7 +8234,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 REAL NOT NULL FIRST;
SHOW TABLES;
@@ -8244,7 +8244,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` double NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -9290,7 +9290,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 DOUBLE NOT NULL FIRST;
SHOW TABLES;
@@ -9300,7 +9300,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` double NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -10346,7 +10346,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 FLOAT NOT NULL FIRST;
SHOW TABLES;
@@ -10356,7 +10356,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` float NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -11402,7 +11402,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 DECIMAL NOT NULL FIRST;
SHOW TABLES;
@@ -11412,7 +11412,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` decimal(10,0) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -12458,7 +12458,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 NUMERIC NOT NULL FIRST;
SHOW TABLES;
@@ -12468,7 +12468,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` decimal(10,0) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -13514,7 +13514,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 DATE NOT NULL FIRST;
SHOW TABLES;
@@ -13524,7 +13524,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` date NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -14570,7 +14570,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TIME NOT NULL FIRST;
SHOW TABLES;
@@ -14580,7 +14580,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` time NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -15626,7 +15626,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 YEAR NOT NULL FIRST;
SHOW TABLES;
@@ -15636,7 +15636,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` year(4) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -16682,7 +16682,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TINYBLOB NOT NULL FIRST;
SHOW TABLES;
@@ -16692,7 +16692,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` tinyblob NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -17738,7 +17738,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 BLOB NOT NULL FIRST;
SHOW TABLES;
@@ -17748,7 +17748,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` blob NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -18794,7 +18794,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 MEDIUMBLOB NOT NULL FIRST;
SHOW TABLES;
@@ -18804,7 +18804,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` mediumblob NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -19850,7 +19850,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 LONGBLOB NOT NULL FIRST;
SHOW TABLES;
@@ -19860,7 +19860,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` longblob NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -20906,7 +20906,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TINYTEXT NOT NULL FIRST;
SHOW TABLES;
@@ -20916,7 +20916,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` tinytext NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -21962,7 +21962,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 TEXT NOT NULL FIRST;
SHOW TABLES;
@@ -21972,7 +21972,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` text NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -23018,7 +23018,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 MEDIUMTEXT NOT NULL FIRST;
SHOW TABLES;
@@ -23028,7 +23028,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` mediumtext NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -24074,7 +24074,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c2 LONGTEXT NOT NULL FIRST;
SHOW TABLES;
@@ -24084,7 +24084,7 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c2` longtext NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/r/ta_add_column_first2.result b/mysql-test/suite/engines/funcs/r/ta_add_column_first2.result
index 406729e93dd..0810d21c259 100644
--- a/mysql-test/suite/engines/funcs/r/ta_add_column_first2.result
+++ b/mysql-test/suite/engines/funcs/r/ta_add_column_first2.result
@@ -2567,7 +2567,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c1` char(15) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2589,7 +2589,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c1` varchar(15) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2611,7 +2611,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c1` binary(15) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2633,7 +2633,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c1` varbinary(15) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/engines/funcs/r/ta_add_column_middle.result b/mysql-test/suite/engines/funcs/r/ta_add_column_middle.result
index 014c7ae6486..5473812d7d5 100644
--- a/mysql-test/suite/engines/funcs/r/ta_add_column_middle.result
+++ b/mysql-test/suite/engines/funcs/r/ta_add_column_middle.result
@@ -1071,8 +1071,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 BIT NOT NULL AFTER c2;
@@ -1083,9 +1083,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` bit(1) NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2415,8 +2415,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 TINYINT NOT NULL AFTER c2;
@@ -2427,9 +2427,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` tinyint(4) NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -3759,8 +3759,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 SMALLINT NOT NULL AFTER c2;
@@ -3771,9 +3771,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` smallint(6) NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -5103,8 +5103,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 MEDIUMINT NOT NULL AFTER c2;
@@ -5115,9 +5115,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` mediumint(9) NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -6447,8 +6447,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 INT NOT NULL AFTER c2;
@@ -6459,9 +6459,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` int(11) NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -7791,8 +7791,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 INTEGER NOT NULL AFTER c2;
@@ -7803,9 +7803,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` int(11) NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -9135,8 +9135,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 BIGINT NOT NULL AFTER c2;
@@ -9147,9 +9147,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` bigint(20) NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -10479,8 +10479,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 REAL NOT NULL AFTER c2;
@@ -10491,9 +10491,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` double NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -11823,8 +11823,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 DOUBLE NOT NULL AFTER c2;
@@ -11835,9 +11835,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` double NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -13167,8 +13167,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 FLOAT NOT NULL AFTER c2;
@@ -13179,9 +13179,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` float NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -14511,8 +14511,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 DECIMAL NOT NULL AFTER c2;
@@ -14523,9 +14523,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` decimal(10,0) NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -15855,8 +15855,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 NUMERIC NOT NULL AFTER c2;
@@ -15867,9 +15867,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` decimal(10,0) NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -17199,8 +17199,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 DATE NOT NULL AFTER c2;
@@ -17211,9 +17211,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` date NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -18543,8 +18543,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 TIME NOT NULL AFTER c2;
@@ -18555,9 +18555,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` time NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -19508,7 +19508,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` bit(1) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` bit(1) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19536,7 +19536,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` tinyint(4) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` tinyint(4) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19564,7 +19564,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` smallint(6) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` smallint(6) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19592,7 +19592,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` mediumint(9) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` mediumint(9) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19620,7 +19620,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` int(11) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19648,7 +19648,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` int(11) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19676,7 +19676,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` bigint(20) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` bigint(20) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19704,7 +19704,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` double NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` double NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19732,7 +19732,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` double NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` double NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19760,7 +19760,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` float NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` float NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19788,7 +19788,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` decimal(10,0) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` decimal(10,0) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19816,7 +19816,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` decimal(10,0) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` decimal(10,0) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19844,7 +19844,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` date NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` date NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19872,7 +19872,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` time NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` time NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19887,8 +19887,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 TIMESTAMP NOT NULL AFTER c2;
@@ -19899,9 +19899,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c4` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c4` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -19928,7 +19928,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` year(4) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` year(4) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19956,7 +19956,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` tinyblob NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` tinyblob NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -19984,7 +19984,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` blob NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` blob NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -20012,7 +20012,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` mediumblob NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` mediumblob NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -20040,7 +20040,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` longblob NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` longblob NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -20068,7 +20068,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` tinytext NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` tinytext NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -20096,7 +20096,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` text NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` text NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -20124,7 +20124,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` mediumtext NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` mediumtext NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -20152,7 +20152,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` longtext NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` longtext NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -21231,8 +21231,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 YEAR NOT NULL AFTER c2;
@@ -21243,9 +21243,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` year(4) NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -22575,8 +22575,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 TINYBLOB NOT NULL AFTER c2;
@@ -22587,9 +22587,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` tinyblob NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -23919,8 +23919,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 BLOB NOT NULL AFTER c2;
@@ -23931,9 +23931,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` blob NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -25263,8 +25263,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 MEDIUMBLOB NOT NULL AFTER c2;
@@ -25275,9 +25275,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` mediumblob NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -26607,8 +26607,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 LONGBLOB NOT NULL AFTER c2;
@@ -26619,9 +26619,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` longblob NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -27951,8 +27951,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 TINYTEXT NOT NULL AFTER c2;
@@ -27963,9 +27963,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` tinytext NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -29295,8 +29295,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 TEXT NOT NULL AFTER c2;
@@ -29307,9 +29307,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` text NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -30639,8 +30639,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 MEDIUMTEXT NOT NULL AFTER c2;
@@ -30651,9 +30651,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` mediumtext NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -31983,8 +31983,8 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD c4 LONGTEXT NOT NULL AFTER c2;
@@ -31995,9 +31995,9 @@ SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
- `c2` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c2` timestamp NOT NULL,
`c4` longtext NOT NULL,
- `c3` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c3` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/engines/funcs/r/ta_add_column_middle2.result b/mysql-test/suite/engines/funcs/r/ta_add_column_middle2.result
index e7eefc269be..c8ed71f99f3 100644
--- a/mysql-test/suite/engines/funcs/r/ta_add_column_middle2.result
+++ b/mysql-test/suite/engines/funcs/r/ta_add_column_middle2.result
@@ -3268,7 +3268,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` char(15) NOT NULL,
`c2` int(11) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` char(20) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -3296,7 +3296,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` varchar(15) NOT NULL,
`c2` int(11) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` varchar(20) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -3324,7 +3324,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` binary(15) NOT NULL,
`c2` int(11) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` binary(20) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
@@ -3352,7 +3352,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`c1` varbinary(15) NOT NULL,
`c2` int(11) NOT NULL,
- `c4` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c4` timestamp NOT NULL,
`c3` varbinary(20) NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
diff --git a/mysql-test/suite/engines/funcs/r/ta_add_string2.result b/mysql-test/suite/engines/funcs/r/ta_add_string2.result
index 7d50fa3b61d..9f829dd3b2f 100644
--- a/mysql-test/suite/engines/funcs/r/ta_add_string2.result
+++ b/mysql-test/suite/engines/funcs/r/ta_add_string2.result
@@ -842,7 +842,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t5 ADD c2 CHAR(5) NOT NULL;
SHOW TABLES;
@@ -851,7 +851,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` char(5) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t5;
@@ -1898,7 +1898,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t5 ADD c2 VARCHAR(5) NOT NULL;
SHOW TABLES;
@@ -1907,7 +1907,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` varchar(5) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t5;
@@ -2954,7 +2954,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t5 ADD c2 BINARY(5) NOT NULL;
SHOW TABLES;
@@ -2963,7 +2963,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` binary(5) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t5;
@@ -4010,7 +4010,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t5 ADD c2 VARBINARY(5) NOT NULL;
SHOW TABLES;
@@ -4019,7 +4019,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` varbinary(5) NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t5;
diff --git a/mysql-test/suite/engines/funcs/r/ta_add_string_first2.result b/mysql-test/suite/engines/funcs/r/ta_add_string_first2.result
index a656f1d48e1..f5c61673a21 100644
--- a/mysql-test/suite/engines/funcs/r/ta_add_string_first2.result
+++ b/mysql-test/suite/engines/funcs/r/ta_add_string_first2.result
@@ -842,7 +842,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t5 ADD c2 CHAR(5) NOT NULL FIRST;
SHOW TABLES;
@@ -852,7 +852,7 @@ SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
`c2` char(5) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t5;
SHOW TABLES;
@@ -1898,7 +1898,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t5 ADD c2 VARCHAR(5) NOT NULL FIRST;
SHOW TABLES;
@@ -1908,7 +1908,7 @@ SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
`c2` varchar(5) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t5;
SHOW TABLES;
@@ -2954,7 +2954,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t5 ADD c2 BINARY(5) NOT NULL FIRST;
SHOW TABLES;
@@ -2964,7 +2964,7 @@ SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
`c2` binary(5) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t5;
SHOW TABLES;
@@ -4010,7 +4010,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t5 ADD c2 VARBINARY(5) NOT NULL FIRST;
SHOW TABLES;
@@ -4020,7 +4020,7 @@ SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
`c2` varbinary(5) NOT NULL,
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t5;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/r/ta_add_string_middle2.result b/mysql-test/suite/engines/funcs/r/ta_add_string_middle2.result
index 4829892354f..56fbf597cdc 100644
--- a/mysql-test/suite/engines/funcs/r/ta_add_string_middle2.result
+++ b/mysql-test/suite/engines/funcs/r/ta_add_string_middle2.result
@@ -398,7 +398,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` char(10) DEFAULT NULL,
PRIMARY KEY (`c1`)
@@ -410,7 +410,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c4` char(5) DEFAULT NULL,
`c3` char(10) DEFAULT NULL,
@@ -846,7 +846,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` char(10) NOT NULL,
PRIMARY KEY (`c1`)
@@ -858,7 +858,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c4` char(5) NOT NULL,
`c3` char(10) NOT NULL,
@@ -1294,7 +1294,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` varchar(10) DEFAULT NULL,
PRIMARY KEY (`c1`)
@@ -1306,7 +1306,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c4` varchar(5) DEFAULT NULL,
`c3` varchar(10) DEFAULT NULL,
@@ -1742,7 +1742,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` varchar(10) NOT NULL,
PRIMARY KEY (`c1`)
@@ -1754,7 +1754,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c4` varchar(5) NOT NULL,
`c3` varchar(10) NOT NULL,
@@ -2190,7 +2190,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` binary(10) DEFAULT NULL,
PRIMARY KEY (`c1`)
@@ -2202,7 +2202,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c4` binary(5) DEFAULT NULL,
`c3` binary(10) DEFAULT NULL,
@@ -2638,7 +2638,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` binary(10) NOT NULL,
PRIMARY KEY (`c1`)
@@ -2650,7 +2650,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c4` binary(5) NOT NULL,
`c3` binary(10) NOT NULL,
@@ -3086,7 +3086,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` varbinary(10) DEFAULT NULL,
PRIMARY KEY (`c1`)
@@ -3098,7 +3098,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c4` varbinary(5) DEFAULT NULL,
`c3` varbinary(10) DEFAULT NULL,
@@ -3534,7 +3534,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c3` varbinary(10) NOT NULL,
PRIMARY KEY (`c1`)
@@ -3546,7 +3546,7 @@ t5
SHOW CREATE TABLE t5;
Table Create Table
t5 CREATE TABLE `t5` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
`c2` int(11) NOT NULL,
`c4` varbinary(5) NOT NULL,
`c3` varbinary(10) NOT NULL,
diff --git a/mysql-test/suite/engines/funcs/r/ta_add_unique_index.result b/mysql-test/suite/engines/funcs/r/ta_add_unique_index.result
index 1ec7f876355..5394c24bf5d 100644
--- a/mysql-test/suite/engines/funcs/r/ta_add_unique_index.result
+++ b/mysql-test/suite/engines/funcs/r/ta_add_unique_index.result
@@ -314,7 +314,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD UNIQUE (c1);
SHOW TABLES;
@@ -323,7 +323,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `c1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -666,7 +666,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD UNIQUE KEY (c1);
SHOW TABLES;
@@ -675,7 +675,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `c1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -1018,7 +1018,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD UNIQUE INDEX (c1);
SHOW TABLES;
@@ -1027,7 +1027,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `c1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -1370,7 +1370,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT UNIQUE (c1);
SHOW TABLES;
@@ -1379,7 +1379,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `c1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -1722,7 +1722,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT UNIQUE KEY (c1);
SHOW TABLES;
@@ -1731,7 +1731,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `c1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2074,7 +2074,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT UNIQUE INDEX (c1);
SHOW TABLES;
@@ -2083,7 +2083,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `c1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2426,7 +2426,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT cst1 UNIQUE (c1);
SHOW TABLES;
@@ -2435,7 +2435,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `cst1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2778,7 +2778,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT cst1 UNIQUE KEY (c1);
SHOW TABLES;
@@ -2787,7 +2787,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `cst1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -3130,7 +3130,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT cst1 UNIQUE INDEX (c1);
SHOW TABLES;
@@ -3139,7 +3139,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `cst1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -3482,7 +3482,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD UNIQUE i1 (c1);
SHOW TABLES;
@@ -3491,7 +3491,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -3834,7 +3834,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD UNIQUE KEY i1 (c1);
SHOW TABLES;
@@ -3843,7 +3843,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -4186,7 +4186,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD UNIQUE INDEX i1 (c1);
SHOW TABLES;
@@ -4195,7 +4195,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -4538,7 +4538,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT UNIQUE i1 (c1);
SHOW TABLES;
@@ -4547,7 +4547,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -4890,7 +4890,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT UNIQUE KEY i1 (c1);
SHOW TABLES;
@@ -4899,7 +4899,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -5242,7 +5242,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT UNIQUE INDEX i1 (c1);
SHOW TABLES;
@@ -5251,7 +5251,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -5594,7 +5594,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT cst1 UNIQUE i1 (c1);
SHOW TABLES;
@@ -5603,7 +5603,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -5946,7 +5946,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT cst1 UNIQUE KEY i1 (c1);
SHOW TABLES;
@@ -5955,7 +5955,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -6298,7 +6298,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD CONSTRAINT cst1 UNIQUE INDEX i1 (c1);
SHOW TABLES;
@@ -6307,7 +6307,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/engines/funcs/r/ta_column_to_index.result b/mysql-test/suite/engines/funcs/r/ta_column_to_index.result
index 42906329967..b5e0a265674 100644
--- a/mysql-test/suite/engines/funcs/r/ta_column_to_index.result
+++ b/mysql-test/suite/engines/funcs/r/ta_column_to_index.result
@@ -314,7 +314,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD KEY (c1);
SHOW TABLES;
@@ -323,7 +323,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `c1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -666,7 +666,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD KEY USING BTREE (c1);
SHOW TABLES;
@@ -675,7 +675,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `c1` (`c1`) USING BTREE
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -1018,7 +1018,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD KEY USING HASH (c1);
SHOW TABLES;
@@ -1027,7 +1027,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `c1` (`c1`) USING HASH
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -1370,7 +1370,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD INDEX (c1);
SHOW TABLES;
@@ -1379,7 +1379,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `c1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -1722,7 +1722,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD INDEX USING BTREE (c1);
SHOW TABLES;
@@ -1731,7 +1731,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `c1` (`c1`) USING BTREE
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2074,7 +2074,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD INDEX USING HASH (c1);
SHOW TABLES;
@@ -2083,7 +2083,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `c1` (`c1`) USING HASH
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2426,7 +2426,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD KEY i1 (c1);
SHOW TABLES;
@@ -2435,7 +2435,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -2778,7 +2778,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD KEY i1 USING BTREE (c1);
SHOW TABLES;
@@ -2787,7 +2787,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`) USING BTREE
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -3130,7 +3130,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD KEY i1 USING HASH (c1);
SHOW TABLES;
@@ -3139,7 +3139,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`) USING HASH
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -3482,7 +3482,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD INDEX i1 (c1);
SHOW TABLES;
@@ -3491,7 +3491,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -3834,7 +3834,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD INDEX i1 USING BTREE (c1);
SHOW TABLES;
@@ -3843,7 +3843,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`) USING BTREE
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
@@ -4186,7 +4186,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD INDEX i1 USING HASH (c1);
SHOW TABLES;
@@ -4195,7 +4195,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`) USING HASH
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/engines/funcs/r/ta_column_to_not_null.result b/mysql-test/suite/engines/funcs/r/ta_column_to_not_null.result
index fe2ee35aa22..5fdec6d8c80 100644
--- a/mysql-test/suite/engines/funcs/r/ta_column_to_not_null.result
+++ b/mysql-test/suite/engines/funcs/r/ta_column_to_not_null.result
@@ -309,7 +309,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -813,7 +813,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/r/ta_column_to_null.result b/mysql-test/suite/engines/funcs/r/ta_column_to_null.result
index 239e8016d58..96e2236e063 100644
--- a/mysql-test/suite/engines/funcs/r/ta_column_to_null.result
+++ b/mysql-test/suite/engines/funcs/r/ta_column_to_null.result
@@ -300,7 +300,7 @@ t2
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t2 MODIFY c1 TIMESTAMP NULL;
SHOW TABLES;
@@ -804,7 +804,7 @@ t2
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t2 CHANGE c1 c1 TIMESTAMP NULL;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/r/ta_column_to_pk.result b/mysql-test/suite/engines/funcs/r/ta_column_to_pk.result
index b012a6c2446..3624e905cb2 100644
--- a/mysql-test/suite/engines/funcs/r/ta_column_to_pk.result
+++ b/mysql-test/suite/engines/funcs/r/ta_column_to_pk.result
@@ -314,7 +314,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD PRIMARY KEY (c1);
SHOW TABLES;
@@ -323,7 +323,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
diff --git a/mysql-test/suite/engines/funcs/r/ta_drop_column.result b/mysql-test/suite/engines/funcs/r/ta_drop_column.result
index 207b847c403..840e4c78325 100644
--- a/mysql-test/suite/engines/funcs/r/ta_drop_column.result
+++ b/mysql-test/suite/engines/funcs/r/ta_drop_column.result
@@ -300,8 +300,8 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NULL DEFAULT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 DROP c2;
ALTER TABLE t1 DROP c1;
@@ -309,7 +309,7 @@ ERROR 42000: You can't delete all columns with ALTER TABLE; use DROP TABLE inste
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -636,8 +636,8 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NULL DEFAULT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 DROP COLUMN c2;
ALTER TABLE t1 DROP COLUMN c1;
@@ -645,7 +645,7 @@ ERROR 42000: You can't delete all columns with ALTER TABLE; use DROP TABLE inste
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/r/ta_drop_index.result b/mysql-test/suite/engines/funcs/r/ta_drop_index.result
index 75e366bfa0f..bada7f1dc71 100644
--- a/mysql-test/suite/engines/funcs/r/ta_drop_index.result
+++ b/mysql-test/suite/engines/funcs/r/ta_drop_index.result
@@ -314,7 +314,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 DROP KEY i1;
@@ -324,7 +324,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -666,7 +666,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 DROP KEY i1;
@@ -676,7 +676,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -1018,7 +1018,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 DROP KEY i1;
@@ -1028,7 +1028,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -1370,7 +1370,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 DROP INDEX i1;
@@ -1380,7 +1380,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -1722,7 +1722,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 DROP INDEX i1;
@@ -1732,7 +1732,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
@@ -2074,7 +2074,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
KEY `i1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 DROP INDEX i1;
@@ -2084,7 +2084,7 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/r/ta_drop_pk_number.result b/mysql-test/suite/engines/funcs/r/ta_drop_pk_number.result
index 79858857742..9af57069422 100644
--- a/mysql-test/suite/engines/funcs/r/ta_drop_pk_number.result
+++ b/mysql-test/suite/engines/funcs/r/ta_drop_pk_number.result
@@ -314,7 +314,7 @@ t9
SHOW CREATE TABLE t9;
Table Create Table
t9 CREATE TABLE `t9` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t9 DROP PRIMARY KEY;
@@ -324,7 +324,7 @@ t9
SHOW CREATE TABLE t9;
Table Create Table
t9 CREATE TABLE `t9` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t9;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/r/ta_rename.result b/mysql-test/suite/engines/funcs/r/ta_rename.result
index 7a1490e4f79..1528e6fe7eb 100644
--- a/mysql-test/suite/engines/funcs/r/ta_rename.result
+++ b/mysql-test/suite/engines/funcs/r/ta_rename.result
@@ -356,8 +356,8 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NULL DEFAULT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 RENAME t2;
SHOW TABLES;
@@ -368,8 +368,8 @@ ERROR 42S02: Unknown table 'test.t1'
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NULL DEFAULT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t2;
SHOW TABLES;
@@ -756,8 +756,8 @@ t1
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NULL DEFAULT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 RENAME TO t2;
SHOW TABLES;
@@ -768,8 +768,8 @@ ERROR 42S02: Unknown table 'test.t1'
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `c1` timestamp NOT NULL,
+ `c2` timestamp NULL DEFAULT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t2;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/r/tc_column_key.result b/mysql-test/suite/engines/funcs/r/tc_column_key.result
index 54772842bea..2b3fa1c0918 100644
--- a/mysql-test/suite/engines/funcs/r/tc_column_key.result
+++ b/mysql-test/suite/engines/funcs/r/tc_column_key.result
@@ -227,7 +227,7 @@ t9
SHOW CREATE TABLE t9;
Table Create Table
t9 CREATE TABLE `t9` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t9;
diff --git a/mysql-test/suite/engines/funcs/r/tc_column_not_null.result b/mysql-test/suite/engines/funcs/r/tc_column_not_null.result
index 9add115123d..eca7439adfa 100644
--- a/mysql-test/suite/engines/funcs/r/tc_column_not_null.result
+++ b/mysql-test/suite/engines/funcs/r/tc_column_not_null.result
@@ -210,7 +210,7 @@ t2
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t2;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/r/tc_column_primary_key_number.result b/mysql-test/suite/engines/funcs/r/tc_column_primary_key_number.result
index f01e18283f6..42be2e20f22 100644
--- a/mysql-test/suite/engines/funcs/r/tc_column_primary_key_number.result
+++ b/mysql-test/suite/engines/funcs/r/tc_column_primary_key_number.result
@@ -227,7 +227,7 @@ t9
SHOW CREATE TABLE t9;
Table Create Table
t9 CREATE TABLE `t9` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t9;
diff --git a/mysql-test/suite/engines/funcs/r/tc_column_unique_key.result b/mysql-test/suite/engines/funcs/r/tc_column_unique_key.result
index ef6033e73f4..5fb8cd5be6c 100644
--- a/mysql-test/suite/engines/funcs/r/tc_column_unique_key.result
+++ b/mysql-test/suite/engines/funcs/r/tc_column_unique_key.result
@@ -227,7 +227,7 @@ t9
SHOW CREATE TABLE t9;
Table Create Table
t9 CREATE TABLE `t9` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NOT NULL,
UNIQUE KEY `c1` (`c1`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t9;
diff --git a/mysql-test/suite/engines/funcs/r/tc_multicolumn_different.result b/mysql-test/suite/engines/funcs/r/tc_multicolumn_different.result
index 1baef8e3266..4b5cf0b7a0b 100644
--- a/mysql-test/suite/engines/funcs/r/tc_multicolumn_different.result
+++ b/mysql-test/suite/engines/funcs/r/tc_multicolumn_different.result
@@ -333,7 +333,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -713,7 +713,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -1093,7 +1093,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -1473,7 +1473,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -1853,7 +1853,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -2233,7 +2233,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -2613,7 +2613,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -2993,7 +2993,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -3373,7 +3373,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -3753,7 +3753,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -4133,7 +4133,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -4513,7 +4513,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -4893,7 +4893,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -5273,7 +5273,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -5653,7 +5653,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -6033,7 +6033,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -6413,7 +6413,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -6793,7 +6793,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -7173,7 +7173,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -7553,7 +7553,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -7933,7 +7933,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -8313,7 +8313,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -8693,7 +8693,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -9073,7 +9073,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -9453,7 +9453,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -9833,7 +9833,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -10213,7 +10213,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -10593,7 +10593,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -10973,7 +10973,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -11353,7 +11353,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -11733,7 +11733,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -12113,7 +12113,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -12493,7 +12493,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -12873,7 +12873,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -13253,7 +13253,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -13633,7 +13633,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -14013,7 +14013,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -14393,7 +14393,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -14773,7 +14773,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -15153,7 +15153,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -15533,7 +15533,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -15913,7 +15913,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -16293,7 +16293,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -16673,7 +16673,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -17053,7 +17053,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -17433,7 +17433,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -17813,7 +17813,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -18193,7 +18193,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -18573,7 +18573,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -18953,7 +18953,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -19333,7 +19333,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -19713,7 +19713,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -20093,7 +20093,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -20473,7 +20473,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -20853,7 +20853,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -21233,7 +21233,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -21613,7 +21613,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -21993,7 +21993,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -22373,7 +22373,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -22753,7 +22753,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -23133,7 +23133,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -23513,7 +23513,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -23893,7 +23893,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -24273,7 +24273,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -24653,7 +24653,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -25033,7 +25033,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -25413,7 +25413,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -25793,7 +25793,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -26173,7 +26173,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -26553,7 +26553,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -26933,7 +26933,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -27313,7 +27313,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -27693,7 +27693,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -28073,7 +28073,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -28453,7 +28453,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -28833,7 +28833,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -29213,7 +29213,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -29593,7 +29593,7 @@ m3 CREATE TABLE `m3` (
`c2` char(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` char(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -29973,7 +29973,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -30353,7 +30353,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -30733,7 +30733,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -31113,7 +31113,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -31493,7 +31493,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -31873,7 +31873,7 @@ m3 CREATE TABLE `m3` (
`c2` varchar(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` varchar(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -32253,7 +32253,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -32633,7 +32633,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -33013,7 +33013,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -33393,7 +33393,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -33773,7 +33773,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -34153,7 +34153,7 @@ m3 CREATE TABLE `m3` (
`c2` binary(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` binary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -34533,7 +34533,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` tinyint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -34913,7 +34913,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` smallint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -35293,7 +35293,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` mediumint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -35673,7 +35673,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -36053,7 +36053,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` int(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
@@ -36433,7 +36433,7 @@ m3 CREATE TABLE `m3` (
`c2` varbinary(25) NOT NULL,
`c3` bigint(4) DEFAULT NULL,
`c4` varbinary(15) NOT NULL,
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c5` timestamp NOT NULL,
`c6` decimal(10,8) NOT NULL DEFAULT 3.14159200,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
diff --git a/mysql-test/suite/engines/funcs/r/tc_multicolumn_same.result b/mysql-test/suite/engines/funcs/r/tc_multicolumn_same.result
index 81bd62e94d1..bcece36b0d4 100644
--- a/mysql-test/suite/engines/funcs/r/tc_multicolumn_same.result
+++ b/mysql-test/suite/engines/funcs/r/tc_multicolumn_same.result
@@ -313,10 +313,10 @@ SHOW CREATE TABLE m1;
Table Create Table
m1 CREATE TABLE `m1` (
`c1` timestamp NULL DEFAULT NULL,
- `c2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c2` timestamp NOT NULL,
`c3` timestamp NULL DEFAULT NULL,
- `c4` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
- `c5` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `c4` timestamp NOT NULL,
+ `c5` timestamp NOT NULL,
PRIMARY KEY (`c4`),
UNIQUE KEY `c5` (`c5`)
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
diff --git a/mysql-test/suite/engines/funcs/r/tc_temporary_column.result b/mysql-test/suite/engines/funcs/r/tc_temporary_column.result
index 4f5c0b01b8e..03627817a35 100644
--- a/mysql-test/suite/engines/funcs/r/tc_temporary_column.result
+++ b/mysql-test/suite/engines/funcs/r/tc_temporary_column.result
@@ -500,7 +500,7 @@ Tables_in_test
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TEMPORARY TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `c1` timestamp NOT NULL
) ENGINE=ENGINE DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
SHOW TABLES;
diff --git a/mysql-test/suite/engines/funcs/t/rpl_trigger.test b/mysql-test/suite/engines/funcs/t/rpl_trigger.test
index 4f61e738200..12eef32ef83 100644
--- a/mysql-test/suite/engines/funcs/t/rpl_trigger.test
+++ b/mysql-test/suite/engines/funcs/t/rpl_trigger.test
@@ -5,6 +5,12 @@
--source include/have_binlog_format_mixed_or_statement.inc
--source include/master-slave.inc
+connection slave;
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+--connection master
+
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
#
@@ -315,7 +321,8 @@ let $binlog_version= query_get_value(SHOW BINLOG EVENTS, Info, 1);
# Make the slave to replay the new binlog.
connection slave;
-RESET SLAVE;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
--source include/start_slave.inc
SELECT MASTER_POS_WAIT('master-bin.000001', 513) >= 0;
@@ -342,7 +349,7 @@ DROP TABLE t1;
DROP TABLE t2;
--source include/stop_slave.inc
-RESET SLAVE;
+--source include/reset_slave.inc
# The master should be clean.
diff --git a/mysql-test/suite/federated/federatedx_versioning.test b/mysql-test/suite/federated/federatedx_versioning.test
index 6c3247cea55..4d2f2d35139 100644
--- a/mysql-test/suite/federated/federatedx_versioning.test
+++ b/mysql-test/suite/federated/federatedx_versioning.test
@@ -12,7 +12,7 @@ eval create or replace table t1 (
with system versioning;
--replace_result $MASTER_MYPORT MASTER_MYPORT
eval create or replace table tf engine=FEDERATED connection='mysql://root@127.0.0.1:$MASTER_MYPORT/test/t1';
---replace_result $MASTER_MYPORT MASTER_MYPORT $sys_datatype_expl SYS_TYPE 19710101000000 "'1971-01-01 00:00:00.000000'" " NOT NULL" ""
+--replace_result $MASTER_MYPORT MASTER_MYPORT $sys_datatype_expl SYS_TYPE 19710101000000 "'1971-01-01 00:00:00.000000'" "NOT NULL " ""
show create table tf;
--echo # INSERT
insert into t1 values (1);
diff --git a/mysql-test/suite/funcs_1/r/charset_collation.result b/mysql-test/suite/funcs_1/r/charset_collation.result
index 002fcf55365..c0c36d9e729 100644
--- a/mysql-test/suite/funcs_1/r/charset_collation.result
+++ b/mysql-test/suite/funcs_1/r/charset_collation.result
@@ -31,11 +31,11 @@ AND (collation_name LIKE CONCAT(character_set_name,'_general_ci')
OR
collation_name LIKE CONCAT(character_set_name,'_bin'))
ORDER BY collation_name, character_set_name;
-COLLATION_NAME CHARACTER_SET_NAME
-latin1_bin latin1
-latin1_general_ci latin1
-utf8mb3_bin utf8mb3
-utf8mb3_general_ci utf8mb3
+COLLATION_NAME CHARACTER_SET_NAME FULL_COLLATION_NAME ID IS_DEFAULT
+latin1_bin latin1 latin1_bin 47
+latin1_general_ci latin1 latin1_general_ci 48
+utf8mb3_bin utf8mb3 utf8mb3_bin 83
+utf8mb3_general_ci utf8mb3 utf8mb3_general_ci 33 Yes
connection default;
disconnect con;
DROP USER dbdict_test@localhost;
diff --git a/mysql-test/suite/funcs_1/r/is_character_sets.result b/mysql-test/suite/funcs_1/r/is_character_sets.result
index 6a1671a473c..57215693979 100644
--- a/mysql-test/suite/funcs_1/r/is_character_sets.result
+++ b/mysql-test/suite/funcs_1/r/is_character_sets.result
@@ -29,21 +29,21 @@ DROP FUNCTION test.f1;
DESCRIBE information_schema.CHARACTER_SETS;
Field Type Null Key Default Extra
CHARACTER_SET_NAME varchar(32) NO NULL
-DEFAULT_COLLATE_NAME varchar(32) NO NULL
+DEFAULT_COLLATE_NAME varchar(64) NO NULL
DESCRIPTION varchar(60) NO NULL
MAXLEN bigint(3) NO NULL
SHOW CREATE TABLE information_schema.CHARACTER_SETS;
Table Create Table
CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` (
`CHARACTER_SET_NAME` varchar(32) NOT NULL,
- `DEFAULT_COLLATE_NAME` varchar(32) NOT NULL,
+ `DEFAULT_COLLATE_NAME` varchar(64) NOT NULL,
`DESCRIPTION` varchar(60) NOT NULL,
`MAXLEN` bigint(3) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SHOW COLUMNS FROM information_schema.CHARACTER_SETS;
Field Type Null Key Default Extra
CHARACTER_SET_NAME varchar(32) NO NULL
-DEFAULT_COLLATE_NAME varchar(32) NO NULL
+DEFAULT_COLLATE_NAME varchar(64) NO NULL
DESCRIPTION varchar(60) NO NULL
MAXLEN bigint(3) NO NULL
# Testcases 3.2.2.2 and 3.2.2.3 are checked in suite/funcs_1/t/charset_collation*.test
diff --git a/mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result b/mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result
index d1663dfcde4..fbd7654984e 100644
--- a/mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result
+++ b/mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result
@@ -28,18 +28,27 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
Field Type Null Key Default Extra
-COLLATION_NAME varchar(32) NO NULL
+COLLATION_NAME varchar(64) NO NULL
CHARACTER_SET_NAME varchar(32) NO NULL
+FULL_COLLATION_NAME varchar(64) NO NULL
+ID bigint(11) NO NULL
+IS_DEFAULT varchar(3) NO NULL
SHOW CREATE TABLE information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
Table Create Table
COLLATION_CHARACTER_SET_APPLICABILITY CREATE TEMPORARY TABLE `COLLATION_CHARACTER_SET_APPLICABILITY` (
- `COLLATION_NAME` varchar(32) NOT NULL,
- `CHARACTER_SET_NAME` varchar(32) NOT NULL
+ `COLLATION_NAME` varchar(64) NOT NULL,
+ `CHARACTER_SET_NAME` varchar(32) NOT NULL,
+ `FULL_COLLATION_NAME` varchar(64) NOT NULL,
+ `ID` bigint(11) NOT NULL,
+ `IS_DEFAULT` varchar(3) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SHOW COLUMNS FROM information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
Field Type Null Key Default Extra
-COLLATION_NAME varchar(32) NO NULL
+COLLATION_NAME varchar(64) NO NULL
CHARACTER_SET_NAME varchar(32) NO NULL
+FULL_COLLATION_NAME varchar(64) NO NULL
+ID bigint(11) NO NULL
+IS_DEFAULT varchar(3) NO NULL
# Testcases 3.2.4.2 and 3.2.4.3 are checked in suite/funcs_1/t/charset_collation*.test
########################################################################
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
diff --git a/mysql-test/suite/funcs_1/r/is_collations.result b/mysql-test/suite/funcs_1/r/is_collations.result
index 1e840d50717..979b477b8bc 100644
--- a/mysql-test/suite/funcs_1/r/is_collations.result
+++ b/mysql-test/suite/funcs_1/r/is_collations.result
@@ -28,28 +28,28 @@ DROP FUNCTION test.f1;
#########################################################################
DESCRIBE information_schema.COLLATIONS;
Field Type Null Key Default Extra
-COLLATION_NAME varchar(32) NO NULL
-CHARACTER_SET_NAME varchar(32) NO NULL
-ID bigint(11) NO NULL
-IS_DEFAULT varchar(3) NO NULL
+COLLATION_NAME varchar(64) NO NULL
+CHARACTER_SET_NAME varchar(32) YES NULL
+ID bigint(11) YES NULL
+IS_DEFAULT varchar(3) YES NULL
IS_COMPILED varchar(3) NO NULL
SORTLEN bigint(3) NO NULL
SHOW CREATE TABLE information_schema.COLLATIONS;
Table Create Table
COLLATIONS CREATE TEMPORARY TABLE `COLLATIONS` (
- `COLLATION_NAME` varchar(32) NOT NULL,
- `CHARACTER_SET_NAME` varchar(32) NOT NULL,
- `ID` bigint(11) NOT NULL,
- `IS_DEFAULT` varchar(3) NOT NULL,
+ `COLLATION_NAME` varchar(64) NOT NULL,
+ `CHARACTER_SET_NAME` varchar(32),
+ `ID` bigint(11),
+ `IS_DEFAULT` varchar(3),
`IS_COMPILED` varchar(3) NOT NULL,
`SORTLEN` bigint(3) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SHOW COLUMNS FROM information_schema.COLLATIONS;
Field Type Null Key Default Extra
-COLLATION_NAME varchar(32) NO NULL
-CHARACTER_SET_NAME varchar(32) NO NULL
-ID bigint(11) NO NULL
-IS_DEFAULT varchar(3) NO NULL
+COLLATION_NAME varchar(64) NO NULL
+CHARACTER_SET_NAME varchar(32) YES NULL
+ID bigint(11) YES NULL
+IS_DEFAULT varchar(3) YES NULL
IS_COMPILED varchar(3) NO NULL
SORTLEN bigint(3) NO NULL
# Testcases 3.2.3.2 and 3.2.3.3 are checked in suite/funcs_1/t/charset_collation*.test
diff --git a/mysql-test/suite/funcs_1/r/is_columns.result b/mysql-test/suite/funcs_1/r/is_columns.result
index 7cd949c36aa..3d03a1d288a 100644
--- a/mysql-test/suite/funcs_1/r/is_columns.result
+++ b/mysql-test/suite/funcs_1/r/is_columns.result
@@ -42,7 +42,7 @@ NUMERIC_PRECISION bigint(21) unsigned YES NULL
NUMERIC_SCALE bigint(21) unsigned YES NULL
DATETIME_PRECISION bigint(21) unsigned YES NULL
CHARACTER_SET_NAME varchar(32) YES NULL
-COLLATION_NAME varchar(32) YES NULL
+COLLATION_NAME varchar(64) YES NULL
COLUMN_TYPE longtext NO NULL
COLUMN_KEY varchar(3) NO NULL
EXTRA varchar(80) NO NULL
@@ -67,7 +67,7 @@ COLUMNS CREATE TEMPORARY TABLE `COLUMNS` (
`NUMERIC_SCALE` bigint(21) unsigned,
`DATETIME_PRECISION` bigint(21) unsigned,
`CHARACTER_SET_NAME` varchar(32),
- `COLLATION_NAME` varchar(32),
+ `COLLATION_NAME` varchar(64),
`COLUMN_TYPE` longtext NOT NULL,
`COLUMN_KEY` varchar(3) NOT NULL,
`EXTRA` varchar(80) NOT NULL,
@@ -92,7 +92,7 @@ NUMERIC_PRECISION bigint(21) unsigned YES NULL
NUMERIC_SCALE bigint(21) unsigned YES NULL
DATETIME_PRECISION bigint(21) unsigned YES NULL
CHARACTER_SET_NAME varchar(32) YES NULL
-COLLATION_NAME varchar(32) YES NULL
+COLLATION_NAME varchar(64) YES NULL
COLUMN_TYPE longtext NO NULL
COLUMN_KEY varchar(3) NO NULL
EXTRA varchar(80) NO NULL
diff --git a/mysql-test/suite/funcs_1/r/is_columns_is.result b/mysql-test/suite/funcs_1/r/is_columns_is.result
index 3664f6861af..c88a3a9ac8d 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_is.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_is.result
@@ -21,7 +21,7 @@ def information_schema APPLICABLE_ROLES IS_DEFAULT 4 NULL YES varchar 3 9 NULL N
def information_schema APPLICABLE_ROLES IS_GRANTABLE 3 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL
def information_schema APPLICABLE_ROLES ROLE_NAME 2 NULL NO varchar 128 384 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(128) select NEVER NULL
def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
-def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema CHARACTER_SETS DESCRIPTION 3 NULL NO varchar 60 180 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(60) select NEVER NULL
def information_schema CHARACTER_SETS MAXLEN 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) select NEVER NULL
def information_schema CHECK_CONSTRAINTS CHECK_CLAUSE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL
@@ -55,18 +55,21 @@ def information_schema CLIENT_STATISTICS SELECT_COMMANDS 15 NULL NO bigint NULL
def information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS 2 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL
def information_schema CLIENT_STATISTICS TOTAL_SSL_CONNECTIONS 24 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL
def information_schema CLIENT_STATISTICS UPDATE_COMMANDS 16 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) select NEVER NULL
-def information_schema COLLATIONS CHARACTER_SET_NAME 2 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
-def information_schema COLLATIONS COLLATION_NAME 1 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
-def information_schema COLLATIONS ID 3 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(11) select NEVER NULL
+def information_schema COLLATIONS CHARACTER_SET_NAME 2 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema COLLATIONS COLLATION_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
+def information_schema COLLATIONS ID 3 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(11) select NEVER NULL
def information_schema COLLATIONS IS_COMPILED 5 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL
-def information_schema COLLATIONS IS_DEFAULT 4 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL
+def information_schema COLLATIONS IS_DEFAULT 4 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL
def information_schema COLLATIONS SORTLEN 6 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) select NEVER NULL
def information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
-def information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY ID 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(11) select NEVER NULL
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY IS_DEFAULT 5 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL
def information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL
def information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL
def information_schema COLUMNS CHARACTER_SET_NAME 14 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
-def information_schema COLUMNS COLLATION_NAME 15 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema COLUMNS COLLATION_NAME 15 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema COLUMNS COLUMN_COMMENT 20 NULL NO varchar 1024 3072 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1024) select NEVER NULL
def information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL
def information_schema COLUMNS COLUMN_KEY 17 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL
@@ -100,9 +103,9 @@ def information_schema ENGINES SUPPORT 2 NULL NO varchar 8 24 NULL NULL NULL utf
def information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL
def information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL
def information_schema EVENTS CHARACTER_SET_CLIENT 22 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
-def information_schema EVENTS COLLATION_CONNECTION 23 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema EVENTS COLLATION_CONNECTION 23 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema EVENTS CREATED 17 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL
-def information_schema EVENTS DATABASE_COLLATION 24 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema EVENTS DATABASE_COLLATION 24 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema EVENTS DEFINER 4 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) select NEVER NULL
def information_schema EVENTS ENDS 14 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL
def information_schema EVENTS EVENT_BODY 6 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) select NEVER NULL
@@ -298,10 +301,10 @@ def information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH 7 NULL YES int NULL NUL
def information_schema ROUTINES CHARACTER_OCTET_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) select NEVER NULL
def information_schema ROUTINES CHARACTER_SET_CLIENT 29 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
def information_schema ROUTINES CHARACTER_SET_NAME 12 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
-def information_schema ROUTINES COLLATION_CONNECTION 30 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema ROUTINES COLLATION_CONNECTION 30 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema ROUTINES COLLATION_NAME 13 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema ROUTINES CREATED 24 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime select NEVER NULL
-def information_schema ROUTINES DATABASE_COLLATION 31 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema ROUTINES DATABASE_COLLATION 31 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema ROUTINES DATA_TYPE 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema ROUTINES DATETIME_PRECISION 11 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL
def information_schema ROUTINES DEFINER 28 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) select NEVER NULL
@@ -327,7 +330,7 @@ def information_schema ROUTINES SQL_MODE 26 NULL NO varchar 8192 24576 NULL NULL
def information_schema ROUTINES SQL_PATH 22 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema SCHEMATA CATALOG_NAME 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL
def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
-def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema SCHEMATA SCHEMA_COMMENT 6 NULL NO varchar 1024 3072 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1024) select NEVER NULL
def information_schema SCHEMATA SCHEMA_NAME 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL
@@ -391,7 +394,7 @@ def information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 20 0
def information_schema TABLES MAX_INDEX_LENGTH 22 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL
def information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) select NEVER NULL
def information_schema TABLES TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL
-def information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema TABLES TABLE_COMMENT 21 NULL NO varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) select NEVER NULL
def information_schema TABLES TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned select NEVER NULL
@@ -436,9 +439,9 @@ def information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 6
def information_schema TRIGGERS ACTION_STATEMENT 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext select NEVER NULL
def information_schema TRIGGERS ACTION_TIMING 12 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) select NEVER NULL
def information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
-def information_schema TRIGGERS COLLATION_CONNECTION 21 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema TRIGGERS COLLATION_CONNECTION 21 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL 2 NULL NULL datetime(2) select NEVER NULL
-def information_schema TRIGGERS DATABASE_COLLATION 22 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema TRIGGERS DATABASE_COLLATION 22 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema TRIGGERS DEFINER 19 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) select NEVER NULL
def information_schema TRIGGERS EVENT_MANIPULATION 4 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) select NEVER NULL
def information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) select NEVER NULL
@@ -480,7 +483,7 @@ def information_schema USER_STATISTICS USER 1 NULL NO varchar 128 384 NULL NULL
def information_schema VIEWS ALGORITHM 11 NULL NO varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) select NEVER NULL
def information_schema VIEWS CHARACTER_SET_CLIENT 9 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
def information_schema VIEWS CHECK_OPTION 5 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) select NEVER NULL
-def information_schema VIEWS COLLATION_CONNECTION 10 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) select NEVER NULL
+def information_schema VIEWS COLLATION_CONNECTION 10 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) select NEVER NULL
def information_schema VIEWS DEFINER 7 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) select NEVER NULL
def information_schema VIEWS IS_UPDATABLE 6 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) select NEVER NULL
def information_schema VIEWS SECURITY_TYPE 8 NULL NO varchar 7 21 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(7) select NEVER NULL
@@ -569,7 +572,7 @@ COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH C
3.0000 information_schema APPLICABLE_ROLES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
3.0000 information_schema APPLICABLE_ROLES IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8mb3 utf8mb3_general_ci varchar(60)
NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(3)
3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
@@ -603,14 +606,17 @@ NULL information_schema CLIENT_STATISTICS ACCESS_DENIED bigint NULL NULL NULL NU
NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES bigint NULL NULL NULL NULL bigint(21)
NULL information_schema CLIENT_STATISTICS TOTAL_SSL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema CLIENT_STATISTICS MAX_STATEMENT_TIME_EXCEEDED bigint NULL NULL NULL NULL bigint(21)
-3.0000 information_schema COLLATIONS COLLATION_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema COLLATIONS COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
NULL information_schema COLLATIONS ID bigint NULL NULL NULL NULL bigint(11)
3.0000 information_schema COLLATIONS IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
3.0000 information_schema COLLATIONS IS_COMPILED varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
NULL information_schema COLLATIONS SORTLEN bigint NULL NULL NULL NULL bigint(3)
-3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
+NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY ID bigint NULL NULL NULL NULL bigint(11)
+3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
3.0000 information_schema COLUMNS TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
3.0000 information_schema COLUMNS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema COLUMNS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
@@ -625,7 +631,7 @@ NULL information_schema COLUMNS NUMERIC_PRECISION bigint NULL NULL NULL NULL big
NULL information_schema COLUMNS NUMERIC_SCALE bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema COLUMNS DATETIME_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned
3.0000 information_schema COLUMNS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema COLUMNS COLLATION_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema COLUMNS COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
1.0000 information_schema COLUMNS COLUMN_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext
3.0000 information_schema COLUMNS COLUMN_KEY varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
3.0000 information_schema COLUMNS EXTRA varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80)
@@ -669,8 +675,8 @@ NULL information_schema EVENTS LAST_EXECUTED datetime NULL NULL NULL NULL dateti
3.0000 information_schema EVENTS EVENT_COMMENT varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
NULL information_schema EVENTS ORIGINATOR bigint NULL NULL NULL NULL bigint(10)
3.0000 information_schema EVENTS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema EVENTS COLLATION_CONNECTION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema EVENTS DATABASE_COLLATION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema EVENTS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
+3.0000 information_schema EVENTS DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
NULL information_schema FILES FILE_ID bigint NULL NULL NULL NULL bigint(4)
3.0000 information_schema FILES FILE_NAME varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
3.0000 information_schema FILES FILE_TYPE varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20)
@@ -871,12 +877,12 @@ NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datet
1.0000 information_schema ROUTINES ROUTINE_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext
3.0000 information_schema ROUTINES DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384)
3.0000 information_schema ROUTINES CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema ROUTINES DATABASE_COLLATION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
+3.0000 information_schema ROUTINES DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema SCHEMATA CATALOG_NAME varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
3.0000 information_schema SCHEMATA SCHEMA_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema SCHEMATA SQL_PATH varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
3.0000 information_schema SCHEMATA SCHEMA_COMMENT varchar 1024 3072 utf8mb3 utf8mb3_general_ci varchar(1024)
3.0000 information_schema SCHEMA_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385)
@@ -942,7 +948,7 @@ NULL information_schema TABLES AUTO_INCREMENT bigint NULL NULL NULL NULL bigint(
NULL information_schema TABLES CREATE_TIME datetime NULL NULL NULL NULL datetime
NULL information_schema TABLES UPDATE_TIME datetime NULL NULL NULL NULL datetime
NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime
-3.0000 information_schema TABLES TABLE_COLLATION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema TABLES TABLE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
3.0000 information_schema TABLES CREATE_OPTIONS varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048)
3.0000 information_schema TABLES TABLE_COMMENT varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048)
@@ -994,8 +1000,8 @@ NULL information_schema TRIGGERS CREATED datetime NULL NULL NULL NULL datetime(2
3.0000 information_schema TRIGGERS SQL_MODE varchar 8192 24576 utf8mb3 utf8mb3_general_ci varchar(8192)
3.0000 information_schema TRIGGERS DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384)
3.0000 information_schema TRIGGERS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema TRIGGERS COLLATION_CONNECTION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema TRIGGERS DATABASE_COLLATION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema TRIGGERS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
+3.0000 information_schema TRIGGERS DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema USER_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385)
3.0000 information_schema USER_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
3.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
@@ -1034,5 +1040,5 @@ NULL information_schema USER_STATISTICS MAX_STATEMENT_TIME_EXCEEDED bigint NULL
3.0000 information_schema VIEWS DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384)
3.0000 information_schema VIEWS SECURITY_TYPE varchar 7 21 utf8mb3 utf8mb3_general_ci varchar(7)
3.0000 information_schema VIEWS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema VIEWS COLLATION_CONNECTION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema VIEWS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema VIEWS ALGORITHM varchar 10 30 utf8mb3 utf8mb3_general_ci varchar(10)
diff --git a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
index 622f839901f..bb12a0c38df 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
@@ -21,7 +21,7 @@ def information_schema APPLICABLE_ROLES IS_DEFAULT 4 NULL YES varchar 3 9 NULL N
def information_schema APPLICABLE_ROLES IS_GRANTABLE 3 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL
def information_schema APPLICABLE_ROLES ROLE_NAME 2 NULL NO varchar 128 384 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(128) NEVER NULL
def information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
-def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema CHARACTER_SETS DESCRIPTION 3 NULL NO varchar 60 180 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(60) NEVER NULL
def information_schema CHARACTER_SETS MAXLEN 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) NEVER NULL
def information_schema CHECK_CONSTRAINTS CHECK_CLAUSE 6 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL
@@ -55,18 +55,21 @@ def information_schema CLIENT_STATISTICS SELECT_COMMANDS 15 NULL NO bigint NULL
def information_schema CLIENT_STATISTICS TOTAL_CONNECTIONS 2 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL
def information_schema CLIENT_STATISTICS TOTAL_SSL_CONNECTIONS 24 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL
def information_schema CLIENT_STATISTICS UPDATE_COMMANDS 16 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(21) NEVER NULL
-def information_schema COLLATIONS CHARACTER_SET_NAME 2 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
-def information_schema COLLATIONS COLLATION_NAME 1 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
-def information_schema COLLATIONS ID 3 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(11) NEVER NULL
+def information_schema COLLATIONS CHARACTER_SET_NAME 2 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema COLLATIONS COLLATION_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
+def information_schema COLLATIONS ID 3 NULL YES bigint NULL NULL 19 0 NULL NULL NULL bigint(11) NEVER NULL
def information_schema COLLATIONS IS_COMPILED 5 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL
-def information_schema COLLATIONS IS_DEFAULT 4 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL
+def information_schema COLLATIONS IS_DEFAULT 4 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL
def information_schema COLLATIONS SORTLEN 6 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(3) NEVER NULL
def information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
-def information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY ID 4 NULL NO bigint NULL NULL 19 0 NULL NULL NULL bigint(11) NEVER NULL
+def information_schema COLLATION_CHARACTER_SET_APPLICABILITY IS_DEFAULT 5 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL
def information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL
def information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL
def information_schema COLUMNS CHARACTER_SET_NAME 14 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
-def information_schema COLUMNS COLLATION_NAME 15 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema COLUMNS COLLATION_NAME 15 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema COLUMNS COLUMN_COMMENT 20 NULL NO varchar 1024 3072 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1024) NEVER NULL
def information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL
def information_schema COLUMNS COLUMN_KEY 17 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL
@@ -100,9 +103,9 @@ def information_schema ENGINES SUPPORT 2 NULL NO varchar 8 24 NULL NULL NULL utf
def information_schema ENGINES TRANSACTIONS 4 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL
def information_schema ENGINES XA 5 NULL YES varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL
def information_schema EVENTS CHARACTER_SET_CLIENT 22 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
-def information_schema EVENTS COLLATION_CONNECTION 23 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema EVENTS COLLATION_CONNECTION 23 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema EVENTS CREATED 17 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL
-def information_schema EVENTS DATABASE_COLLATION 24 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema EVENTS DATABASE_COLLATION 24 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema EVENTS DEFINER 4 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) NEVER NULL
def information_schema EVENTS ENDS 14 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL
def information_schema EVENTS EVENT_BODY 6 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) NEVER NULL
@@ -298,10 +301,10 @@ def information_schema ROUTINES CHARACTER_MAXIMUM_LENGTH 7 NULL YES int NULL NUL
def information_schema ROUTINES CHARACTER_OCTET_LENGTH 8 NULL YES int NULL NULL 10 0 NULL NULL NULL int(21) NEVER NULL
def information_schema ROUTINES CHARACTER_SET_CLIENT 29 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
def information_schema ROUTINES CHARACTER_SET_NAME 12 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
-def information_schema ROUTINES COLLATION_CONNECTION 30 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema ROUTINES COLLATION_CONNECTION 30 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema ROUTINES COLLATION_NAME 13 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema ROUTINES CREATED 24 NULL NO datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL
-def information_schema ROUTINES DATABASE_COLLATION 31 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema ROUTINES DATABASE_COLLATION 31 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema ROUTINES DATA_TYPE 6 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema ROUTINES DATETIME_PRECISION 11 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL
def information_schema ROUTINES DEFINER 28 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) NEVER NULL
@@ -327,7 +330,7 @@ def information_schema ROUTINES SQL_MODE 26 NULL NO varchar 8192 24576 NULL NULL
def information_schema ROUTINES SQL_PATH 22 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema SCHEMATA CATALOG_NAME 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL
def information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
-def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema SCHEMATA SCHEMA_COMMENT 6 NULL NO varchar 1024 3072 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(1024) NEVER NULL
def information_schema SCHEMATA SCHEMA_NAME 2 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL
@@ -391,7 +394,7 @@ def information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 20 0
def information_schema TABLES MAX_INDEX_LENGTH 22 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL
def information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) NEVER NULL
def information_schema TABLES TABLE_CATALOG 1 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL
-def information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema TABLES TABLE_COMMENT 21 NULL NO varchar 2048 6144 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(2048) NEVER NULL
def information_schema TABLES TABLE_NAME 3 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 20 0 NULL NULL NULL bigint(21) unsigned NEVER NULL
@@ -436,9 +439,9 @@ def information_schema TRIGGERS ACTION_REFERENCE_OLD_TABLE 13 NULL YES varchar 6
def information_schema TRIGGERS ACTION_STATEMENT 10 NULL NO longtext 4294967295 4294967295 NULL NULL NULL utf8mb3 utf8mb3_general_ci longtext NEVER NULL
def information_schema TRIGGERS ACTION_TIMING 12 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) NEVER NULL
def information_schema TRIGGERS CHARACTER_SET_CLIENT 20 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
-def information_schema TRIGGERS COLLATION_CONNECTION 21 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema TRIGGERS COLLATION_CONNECTION 21 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema TRIGGERS CREATED 17 NULL YES datetime NULL NULL NULL NULL 2 NULL NULL datetime(2) NEVER NULL
-def information_schema TRIGGERS DATABASE_COLLATION 22 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema TRIGGERS DATABASE_COLLATION 22 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema TRIGGERS DEFINER 19 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) NEVER NULL
def information_schema TRIGGERS EVENT_MANIPULATION 4 NULL NO varchar 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(6) NEVER NULL
def information_schema TRIGGERS EVENT_OBJECT_CATALOG 5 NULL NO varchar 512 1536 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(512) NEVER NULL
@@ -480,7 +483,7 @@ def information_schema USER_STATISTICS USER 1 NULL NO varchar 128 384 NULL NULL
def information_schema VIEWS ALGORITHM 11 NULL NO varchar 10 30 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(10) NEVER NULL
def information_schema VIEWS CHARACTER_SET_CLIENT 9 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
def information_schema VIEWS CHECK_OPTION 5 NULL NO varchar 8 24 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(8) NEVER NULL
-def information_schema VIEWS COLLATION_CONNECTION 10 NULL NO varchar 32 96 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(32) NEVER NULL
+def information_schema VIEWS COLLATION_CONNECTION 10 NULL NO varchar 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(64) NEVER NULL
def information_schema VIEWS DEFINER 7 NULL NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(384) NEVER NULL
def information_schema VIEWS IS_UPDATABLE 6 NULL NO varchar 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(3) NEVER NULL
def information_schema VIEWS SECURITY_TYPE 8 NULL NO varchar 7 21 NULL NULL NULL utf8mb3 utf8mb3_general_ci varchar(7) NEVER NULL
@@ -569,7 +572,7 @@ COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH C
3.0000 information_schema APPLICABLE_ROLES IS_GRANTABLE varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
3.0000 information_schema APPLICABLE_ROLES IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8mb3 utf8mb3_general_ci varchar(60)
NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(3)
3.0000 information_schema CHECK_CONSTRAINTS CONSTRAINT_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
@@ -603,14 +606,17 @@ NULL information_schema CLIENT_STATISTICS ACCESS_DENIED bigint NULL NULL NULL NU
NULL information_schema CLIENT_STATISTICS EMPTY_QUERIES bigint NULL NULL NULL NULL bigint(21)
NULL information_schema CLIENT_STATISTICS TOTAL_SSL_CONNECTIONS bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema CLIENT_STATISTICS MAX_STATEMENT_TIME_EXCEEDED bigint NULL NULL NULL NULL bigint(21)
-3.0000 information_schema COLLATIONS COLLATION_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema COLLATIONS COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
NULL information_schema COLLATIONS ID bigint NULL NULL NULL NULL bigint(11)
3.0000 information_schema COLLATIONS IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
3.0000 information_schema COLLATIONS IS_COMPILED varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
NULL information_schema COLLATIONS SORTLEN bigint NULL NULL NULL NULL bigint(3)
-3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY FULL_COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
+NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY ID bigint NULL NULL NULL NULL bigint(11)
+3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY IS_DEFAULT varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
3.0000 information_schema COLUMNS TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
3.0000 information_schema COLUMNS TABLE_SCHEMA varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema COLUMNS TABLE_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
@@ -625,7 +631,7 @@ NULL information_schema COLUMNS NUMERIC_PRECISION bigint NULL NULL NULL NULL big
NULL information_schema COLUMNS NUMERIC_SCALE bigint NULL NULL NULL NULL bigint(21) unsigned
NULL information_schema COLUMNS DATETIME_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned
3.0000 information_schema COLUMNS CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema COLUMNS COLLATION_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema COLUMNS COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
1.0000 information_schema COLUMNS COLUMN_TYPE longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext
3.0000 information_schema COLUMNS COLUMN_KEY varchar 3 9 utf8mb3 utf8mb3_general_ci varchar(3)
3.0000 information_schema COLUMNS EXTRA varchar 80 240 utf8mb3 utf8mb3_general_ci varchar(80)
@@ -669,8 +675,8 @@ NULL information_schema EVENTS LAST_EXECUTED datetime NULL NULL NULL NULL dateti
3.0000 information_schema EVENTS EVENT_COMMENT varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
NULL information_schema EVENTS ORIGINATOR bigint NULL NULL NULL NULL bigint(10)
3.0000 information_schema EVENTS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema EVENTS COLLATION_CONNECTION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema EVENTS DATABASE_COLLATION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema EVENTS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
+3.0000 information_schema EVENTS DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
NULL information_schema FILES FILE_ID bigint NULL NULL NULL NULL bigint(4)
3.0000 information_schema FILES FILE_NAME varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
3.0000 information_schema FILES FILE_TYPE varchar 20 60 utf8mb3 utf8mb3_general_ci varchar(20)
@@ -871,12 +877,12 @@ NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datet
1.0000 information_schema ROUTINES ROUTINE_COMMENT longtext 4294967295 4294967295 utf8mb3 utf8mb3_general_ci longtext
3.0000 information_schema ROUTINES DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384)
3.0000 information_schema ROUTINES CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema ROUTINES DATABASE_COLLATION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema ROUTINES COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
+3.0000 information_schema ROUTINES DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema SCHEMATA CATALOG_NAME varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
3.0000 information_schema SCHEMATA SCHEMA_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema SCHEMATA SQL_PATH varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
3.0000 information_schema SCHEMATA SCHEMA_COMMENT varchar 1024 3072 utf8mb3 utf8mb3_general_ci varchar(1024)
3.0000 information_schema SCHEMA_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385)
@@ -942,7 +948,7 @@ NULL information_schema TABLES AUTO_INCREMENT bigint NULL NULL NULL NULL bigint(
NULL information_schema TABLES CREATE_TIME datetime NULL NULL NULL NULL datetime
NULL information_schema TABLES UPDATE_TIME datetime NULL NULL NULL NULL datetime
NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime
-3.0000 information_schema TABLES TABLE_COLLATION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema TABLES TABLE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
3.0000 information_schema TABLES CREATE_OPTIONS varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048)
3.0000 information_schema TABLES TABLE_COMMENT varchar 2048 6144 utf8mb3 utf8mb3_general_ci varchar(2048)
@@ -994,8 +1000,8 @@ NULL information_schema TRIGGERS CREATED datetime NULL NULL NULL NULL datetime(2
3.0000 information_schema TRIGGERS SQL_MODE varchar 8192 24576 utf8mb3 utf8mb3_general_ci varchar(8192)
3.0000 information_schema TRIGGERS DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384)
3.0000 information_schema TRIGGERS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema TRIGGERS COLLATION_CONNECTION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema TRIGGERS DATABASE_COLLATION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema TRIGGERS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
+3.0000 information_schema TRIGGERS DATABASE_COLLATION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema USER_PRIVILEGES GRANTEE varchar 385 1155 utf8mb3 utf8mb3_general_ci varchar(385)
3.0000 information_schema USER_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8mb3 utf8mb3_general_ci varchar(512)
3.0000 information_schema USER_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
@@ -1034,5 +1040,5 @@ NULL information_schema USER_STATISTICS MAX_STATEMENT_TIME_EXCEEDED bigint NULL
3.0000 information_schema VIEWS DEFINER varchar 384 1152 utf8mb3 utf8mb3_general_ci varchar(384)
3.0000 information_schema VIEWS SECURITY_TYPE varchar 7 21 utf8mb3 utf8mb3_general_ci varchar(7)
3.0000 information_schema VIEWS CHARACTER_SET_CLIENT varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
-3.0000 information_schema VIEWS COLLATION_CONNECTION varchar 32 96 utf8mb3 utf8mb3_general_ci varchar(32)
+3.0000 information_schema VIEWS COLLATION_CONNECTION varchar 64 192 utf8mb3 utf8mb3_general_ci varchar(64)
3.0000 information_schema VIEWS ALGORITHM varchar 10 30 utf8mb3 utf8mb3_general_ci varchar(10)
diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql.result b/mysql-test/suite/funcs_1/r/is_columns_mysql.result
index b50ae58df28..dbcead827ee 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_mysql.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql.result
@@ -46,11 +46,11 @@ def mysql db User 3 '' NO char 128 384 NULL NULL NULL utf8mb3 utf8mb3_bin char(1
def mysql event body 3 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob select,insert,update,references NEVER NULL
def mysql event body_utf8 22 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob select,insert,update,references NEVER NULL
def mysql event character_set_client 19 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) select,insert,update,references NEVER NULL
-def mysql event collation_connection 20 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) select,insert,update,references NEVER NULL
+def mysql event collation_connection 20 NULL YES char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) select,insert,update,references NEVER NULL
def mysql event comment 16 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) select,insert,update,references NEVER NULL
def mysql event created 8 current_timestamp() NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update current_timestamp() select,insert,update,references NEVER NULL
def mysql event db 1 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) PRI select,insert,update,references NEVER NULL
-def mysql event db_collation 21 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) select,insert,update,references NEVER NULL
+def mysql event db_collation 21 NULL YES char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) select,insert,update,references NEVER NULL
def mysql event definer 4 '' NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_bin varchar(384) select,insert,update,references NEVER NULL
def mysql event ends 12 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select,insert,update,references NEVER NULL
def mysql event execute_at 5 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select,insert,update,references NEVER NULL
@@ -121,11 +121,11 @@ def mysql proc aggregate 21 'NONE' NO enum 5 15 NULL NULL NULL utf8mb3 utf8mb3_g
def mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob select,insert,update,references NEVER NULL
def mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob select,insert,update,references NEVER NULL
def mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) select,insert,update,references NEVER NULL
-def mysql proc collation_connection 18 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) select,insert,update,references NEVER NULL
+def mysql proc collation_connection 18 NULL YES char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) select,insert,update,references NEVER NULL
def mysql proc comment 16 NULL NO text 65535 65535 NULL NULL NULL utf8mb3 utf8mb3_bin text select,insert,update,references NEVER NULL
def mysql proc created 13 current_timestamp() NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update current_timestamp() select,insert,update,references NEVER NULL
def mysql proc db 1 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) PRI select,insert,update,references NEVER NULL
-def mysql proc db_collation 19 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) select,insert,update,references NEVER NULL
+def mysql proc db_collation 19 NULL YES char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) select,insert,update,references NEVER NULL
def mysql proc definer 12 '' NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_bin varchar(384) select,insert,update,references NEVER NULL
def mysql proc is_deterministic 7 'NO' NO enum 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci enum('YES','NO') select,insert,update,references NEVER NULL
def mysql proc language 5 'SQL' NO enum 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci enum('SQL') select,insert,update,references NEVER NULL
@@ -389,8 +389,8 @@ NULL mysql event ends datetime NULL NULL NULL NULL datetime
NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned
1.0000 mysql event time_zone char 64 64 latin1 latin1_swedish_ci char(64)
3.0000 mysql event character_set_client char 32 96 utf8mb3 utf8mb3_bin char(32)
-3.0000 mysql event collation_connection char 32 96 utf8mb3 utf8mb3_bin char(32)
-3.0000 mysql event db_collation char 32 96 utf8mb3 utf8mb3_bin char(32)
+3.0000 mysql event collation_connection char 64 192 utf8mb3 utf8mb3_bin char(64)
+3.0000 mysql event db_collation char 64 192 utf8mb3 utf8mb3_bin char(64)
1.0000 mysql event body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
3.0000 mysql func name char 64 192 utf8mb3 utf8mb3_bin char(64)
NULL mysql func ret tinyint NULL NULL NULL NULL tinyint(1)
@@ -461,8 +461,8 @@ NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp
3.0000 mysql proc sql_mode set 561 1683 utf8mb3 utf8mb3_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL')
1.0000 mysql proc comment text 65535 65535 utf8mb3 utf8mb3_bin text
3.0000 mysql proc character_set_client char 32 96 utf8mb3 utf8mb3_bin char(32)
-3.0000 mysql proc collation_connection char 32 96 utf8mb3 utf8mb3_bin char(32)
-3.0000 mysql proc db_collation char 32 96 utf8mb3 utf8mb3_bin char(32)
+3.0000 mysql proc collation_connection char 64 192 utf8mb3 utf8mb3_bin char(64)
+3.0000 mysql proc db_collation char 64 192 utf8mb3 utf8mb3_bin char(64)
1.0000 mysql proc body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
3.0000 mysql proc aggregate enum 5 15 utf8mb3 utf8mb3_general_ci enum('NONE','GROUP')
3.0000 mysql procs_priv Host char 255 765 utf8mb3 utf8mb3_bin char(255)
diff --git a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
index 96751dfd176..d609a2f4b73 100644
--- a/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
@@ -46,11 +46,11 @@ def mysql db User 3 '' NO char 128 384 NULL NULL NULL utf8mb3 utf8mb3_bin char(1
def mysql event body 3 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob NEVER NULL
def mysql event body_utf8 22 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob NEVER NULL
def mysql event character_set_client 19 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) NEVER NULL
-def mysql event collation_connection 20 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) NEVER NULL
+def mysql event collation_connection 20 NULL YES char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) NEVER NULL
def mysql event comment 16 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) NEVER NULL
def mysql event created 8 current_timestamp() NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update current_timestamp() NEVER NULL
def mysql event db 1 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) PRI NEVER NULL
-def mysql event db_collation 21 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) NEVER NULL
+def mysql event db_collation 21 NULL YES char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) NEVER NULL
def mysql event definer 4 '' NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_bin varchar(384) NEVER NULL
def mysql event ends 12 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL
def mysql event execute_at 5 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL
@@ -107,11 +107,11 @@ def mysql proc aggregate 21 'NONE' NO enum 5 15 NULL NULL NULL utf8mb3 utf8mb3_g
def mysql proc body 11 NULL NO longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob NEVER NULL
def mysql proc body_utf8 20 NULL YES longblob 4294967295 4294967295 NULL NULL NULL NULL NULL longblob NEVER NULL
def mysql proc character_set_client 17 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) NEVER NULL
-def mysql proc collation_connection 18 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) NEVER NULL
+def mysql proc collation_connection 18 NULL YES char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) NEVER NULL
def mysql proc comment 16 NULL NO text 65535 65535 NULL NULL NULL utf8mb3 utf8mb3_bin text NEVER NULL
def mysql proc created 13 current_timestamp() NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update current_timestamp() NEVER NULL
def mysql proc db 1 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) PRI NEVER NULL
-def mysql proc db_collation 19 NULL YES char 32 96 NULL NULL NULL utf8mb3 utf8mb3_bin char(32) NEVER NULL
+def mysql proc db_collation 19 NULL YES char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) NEVER NULL
def mysql proc definer 12 '' NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_bin varchar(384) NEVER NULL
def mysql proc is_deterministic 7 'NO' NO enum 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci enum('YES','NO') NEVER NULL
def mysql proc language 5 'SQL' NO enum 3 9 NULL NULL NULL utf8mb3 utf8mb3_general_ci enum('SQL') NEVER NULL
@@ -386,8 +386,8 @@ NULL mysql event ends datetime NULL NULL NULL NULL datetime
NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned
1.0000 mysql event time_zone char 64 64 latin1 latin1_swedish_ci char(64)
3.0000 mysql event character_set_client char 32 96 utf8mb3 utf8mb3_bin char(32)
-3.0000 mysql event collation_connection char 32 96 utf8mb3 utf8mb3_bin char(32)
-3.0000 mysql event db_collation char 32 96 utf8mb3 utf8mb3_bin char(32)
+3.0000 mysql event collation_connection char 64 192 utf8mb3 utf8mb3_bin char(64)
+3.0000 mysql event db_collation char 64 192 utf8mb3 utf8mb3_bin char(64)
1.0000 mysql event body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
3.0000 mysql func name char 64 192 utf8mb3 utf8mb3_bin char(64)
NULL mysql func ret tinyint NULL NULL NULL NULL tinyint(1)
@@ -444,8 +444,8 @@ NULL mysql proc modified timestamp NULL NULL NULL NULL timestamp
3.0000 mysql proc sql_mode set 561 1683 utf8mb3 utf8mb3_general_ci set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL')
1.0000 mysql proc comment text 65535 65535 utf8mb3 utf8mb3_bin text
3.0000 mysql proc character_set_client char 32 96 utf8mb3 utf8mb3_bin char(32)
-3.0000 mysql proc collation_connection char 32 96 utf8mb3 utf8mb3_bin char(32)
-3.0000 mysql proc db_collation char 32 96 utf8mb3 utf8mb3_bin char(32)
+3.0000 mysql proc collation_connection char 64 192 utf8mb3 utf8mb3_bin char(64)
+3.0000 mysql proc db_collation char 64 192 utf8mb3 utf8mb3_bin char(64)
1.0000 mysql proc body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
3.0000 mysql proc aggregate enum 5 15 utf8mb3 utf8mb3_general_ci enum('NONE','GROUP')
3.0000 mysql procs_priv Host char 255 765 utf8mb3 utf8mb3_bin char(255)
diff --git a/mysql-test/suite/funcs_1/r/is_events.result b/mysql-test/suite/funcs_1/r/is_events.result
index a597d43f0ea..7df12ee2771 100644
--- a/mysql-test/suite/funcs_1/r/is_events.result
+++ b/mysql-test/suite/funcs_1/r/is_events.result
@@ -50,8 +50,8 @@ LAST_EXECUTED datetime YES NULL
EVENT_COMMENT varchar(64) NO NULL
ORIGINATOR bigint(10) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
SHOW CREATE TABLE information_schema.EVENTS;
Table Create Table
EVENTS CREATE TEMPORARY TABLE `EVENTS` (
@@ -77,8 +77,8 @@ EVENTS CREATE TEMPORARY TABLE `EVENTS` (
`EVENT_COMMENT` varchar(64) NOT NULL,
`ORIGINATOR` bigint(10) NOT NULL,
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL,
- `COLLATION_CONNECTION` varchar(32) NOT NULL,
- `DATABASE_COLLATION` varchar(32) NOT NULL
+ `COLLATION_CONNECTION` varchar(64) NOT NULL,
+ `DATABASE_COLLATION` varchar(64) NOT NULL
) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SHOW COLUMNS FROM information_schema.EVENTS;
Field Type Null Key Default Extra
@@ -104,8 +104,8 @@ LAST_EXECUTED datetime YES NULL
EVENT_COMMENT varchar(64) NO NULL
ORIGINATOR bigint(10) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
SELECT event_catalog, event_name, event_body, event_type, event_type,
status, on_completion
FROM information_schema.events
diff --git a/mysql-test/suite/funcs_1/r/is_routines.result b/mysql-test/suite/funcs_1/r/is_routines.result
index a1931a964ce..1b293444b27 100644
--- a/mysql-test/suite/funcs_1/r/is_routines.result
+++ b/mysql-test/suite/funcs_1/r/is_routines.result
@@ -58,8 +58,8 @@ SQL_MODE varchar(8192) NO NULL
ROUTINE_COMMENT longtext NO NULL
DEFINER varchar(384) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
SHOW CREATE TABLE information_schema.ROUTINES;
Table Create Table
ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
@@ -92,8 +92,8 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
`ROUTINE_COMMENT` longtext NOT NULL,
`DEFINER` varchar(384) NOT NULL,
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL,
- `COLLATION_CONNECTION` varchar(32) NOT NULL,
- `DATABASE_COLLATION` varchar(32) NOT NULL
+ `COLLATION_CONNECTION` varchar(64) NOT NULL,
+ `DATABASE_COLLATION` varchar(64) NOT NULL
) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SHOW COLUMNS FROM information_schema.ROUTINES;
Field Type Null Key Default Extra
@@ -126,8 +126,8 @@ SQL_MODE varchar(8192) NO NULL
ROUTINE_COMMENT longtext NO NULL
DEFINER varchar(384) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
USE test;
DROP PROCEDURE IF EXISTS sp_for_routines;
DROP FUNCTION IF EXISTS function_for_routines;
diff --git a/mysql-test/suite/funcs_1/r/is_routines_embedded.result b/mysql-test/suite/funcs_1/r/is_routines_embedded.result
index dba5e7f330e..dfd663a6a96 100644
--- a/mysql-test/suite/funcs_1/r/is_routines_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_routines_embedded.result
@@ -58,8 +58,8 @@ SQL_MODE varchar(8192) NO NULL
ROUTINE_COMMENT longtext NO NULL
DEFINER varchar(384) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
SHOW CREATE TABLE information_schema.ROUTINES;
Table Create Table
ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
@@ -92,8 +92,8 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
`ROUTINE_COMMENT` longtext NOT NULL,
`DEFINER` varchar(384) NOT NULL,
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL,
- `COLLATION_CONNECTION` varchar(32) NOT NULL,
- `DATABASE_COLLATION` varchar(32) NOT NULL
+ `COLLATION_CONNECTION` varchar(64) NOT NULL,
+ `DATABASE_COLLATION` varchar(64) NOT NULL
) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SHOW COLUMNS FROM information_schema.ROUTINES;
Field Type Null Key Default Extra
@@ -126,8 +126,8 @@ SQL_MODE varchar(8192) NO NULL
ROUTINE_COMMENT longtext NO NULL
DEFINER varchar(384) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
USE test;
DROP PROCEDURE IF EXISTS sp_for_routines;
DROP FUNCTION IF EXISTS function_for_routines;
diff --git a/mysql-test/suite/funcs_1/r/is_schemata.result b/mysql-test/suite/funcs_1/r/is_schemata.result
index 5a12c63fe25..ff33306b8f9 100644
--- a/mysql-test/suite/funcs_1/r/is_schemata.result
+++ b/mysql-test/suite/funcs_1/r/is_schemata.result
@@ -31,7 +31,7 @@ Field Type Null Key Default Extra
CATALOG_NAME varchar(512) NO NULL
SCHEMA_NAME varchar(64) NO NULL
DEFAULT_CHARACTER_SET_NAME varchar(32) NO NULL
-DEFAULT_COLLATION_NAME varchar(32) NO NULL
+DEFAULT_COLLATION_NAME varchar(64) NO NULL
SQL_PATH varchar(512) YES NULL
SCHEMA_COMMENT varchar(1024) NO NULL
SHOW CREATE TABLE information_schema.SCHEMATA;
@@ -40,7 +40,7 @@ SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
`CATALOG_NAME` varchar(512) NOT NULL,
`SCHEMA_NAME` varchar(64) NOT NULL,
`DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL,
- `DEFAULT_COLLATION_NAME` varchar(32) NOT NULL,
+ `DEFAULT_COLLATION_NAME` varchar(64) NOT NULL,
`SQL_PATH` varchar(512),
`SCHEMA_COMMENT` varchar(1024) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
@@ -49,7 +49,7 @@ Field Type Null Key Default Extra
CATALOG_NAME varchar(512) NO NULL
SCHEMA_NAME varchar(64) NO NULL
DEFAULT_CHARACTER_SET_NAME varchar(32) NO NULL
-DEFAULT_COLLATION_NAME varchar(32) NO NULL
+DEFAULT_COLLATION_NAME varchar(64) NO NULL
SQL_PATH varchar(512) YES NULL
SCHEMA_COMMENT varchar(1024) NO NULL
SELECT catalog_name, schema_name, sql_path
diff --git a/mysql-test/suite/funcs_1/r/is_schemata_embedded.result b/mysql-test/suite/funcs_1/r/is_schemata_embedded.result
index 0156d6117bd..9f129caa5bf 100644
--- a/mysql-test/suite/funcs_1/r/is_schemata_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_schemata_embedded.result
@@ -31,7 +31,7 @@ Field Type Null Key Default Extra
CATALOG_NAME varchar(512) NO NULL
SCHEMA_NAME varchar(64) NO NULL
DEFAULT_CHARACTER_SET_NAME varchar(32) NO NULL
-DEFAULT_COLLATION_NAME varchar(32) NO NULL
+DEFAULT_COLLATION_NAME varchar(64) NO NULL
SQL_PATH varchar(512) YES NULL
SCHEMA_COMMENT varchar(1024) NO NULL
SHOW CREATE TABLE information_schema.SCHEMATA;
@@ -40,7 +40,7 @@ SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
`CATALOG_NAME` varchar(512) NOT NULL,
`SCHEMA_NAME` varchar(64) NOT NULL,
`DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL,
- `DEFAULT_COLLATION_NAME` varchar(32) NOT NULL,
+ `DEFAULT_COLLATION_NAME` varchar(64) NOT NULL,
`SQL_PATH` varchar(512),
`SCHEMA_COMMENT` varchar(1024) NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
@@ -49,7 +49,7 @@ Field Type Null Key Default Extra
CATALOG_NAME varchar(512) NO NULL
SCHEMA_NAME varchar(64) NO NULL
DEFAULT_CHARACTER_SET_NAME varchar(32) NO NULL
-DEFAULT_COLLATION_NAME varchar(32) NO NULL
+DEFAULT_COLLATION_NAME varchar(64) NO NULL
SQL_PATH varchar(512) YES NULL
SCHEMA_COMMENT varchar(1024) NO NULL
SELECT catalog_name, schema_name, sql_path
diff --git a/mysql-test/suite/funcs_1/r/is_tables.result b/mysql-test/suite/funcs_1/r/is_tables.result
index 35daab13c35..35f7d43d437 100644
--- a/mysql-test/suite/funcs_1/r/is_tables.result
+++ b/mysql-test/suite/funcs_1/r/is_tables.result
@@ -45,7 +45,7 @@ AUTO_INCREMENT bigint(21) unsigned YES NULL
CREATE_TIME datetime YES NULL
UPDATE_TIME datetime YES NULL
CHECK_TIME datetime YES NULL
-TABLE_COLLATION varchar(32) YES NULL
+TABLE_COLLATION varchar(64) YES NULL
CHECKSUM bigint(21) unsigned YES NULL
CREATE_OPTIONS varchar(2048) YES NULL
TABLE_COMMENT varchar(2048) NO NULL
@@ -71,7 +71,7 @@ TABLES CREATE TEMPORARY TABLE `TABLES` (
`CREATE_TIME` datetime,
`UPDATE_TIME` datetime,
`CHECK_TIME` datetime,
- `TABLE_COLLATION` varchar(32),
+ `TABLE_COLLATION` varchar(64),
`CHECKSUM` bigint(21) unsigned,
`CREATE_OPTIONS` varchar(2048),
`TABLE_COMMENT` varchar(2048) NOT NULL,
@@ -97,7 +97,7 @@ AUTO_INCREMENT bigint(21) unsigned YES NULL
CREATE_TIME datetime YES NULL
UPDATE_TIME datetime YES NULL
CHECK_TIME datetime YES NULL
-TABLE_COLLATION varchar(32) YES NULL
+TABLE_COLLATION varchar(64) YES NULL
CHECKSUM bigint(21) unsigned YES NULL
CREATE_OPTIONS varchar(2048) YES NULL
TABLE_COMMENT varchar(2048) NO NULL
diff --git a/mysql-test/suite/funcs_1/r/is_tables_embedded.result b/mysql-test/suite/funcs_1/r/is_tables_embedded.result
index ab42aed82bd..de0c2fb4804 100644
--- a/mysql-test/suite/funcs_1/r/is_tables_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_tables_embedded.result
@@ -45,7 +45,7 @@ AUTO_INCREMENT bigint(21) unsigned YES NULL
CREATE_TIME datetime YES NULL
UPDATE_TIME datetime YES NULL
CHECK_TIME datetime YES NULL
-TABLE_COLLATION varchar(32) YES NULL
+TABLE_COLLATION varchar(64) YES NULL
CHECKSUM bigint(21) unsigned YES NULL
CREATE_OPTIONS varchar(2048) YES NULL
TABLE_COMMENT varchar(2048) NO NULL
@@ -71,7 +71,7 @@ TABLES CREATE TEMPORARY TABLE `TABLES` (
`CREATE_TIME` datetime,
`UPDATE_TIME` datetime,
`CHECK_TIME` datetime,
- `TABLE_COLLATION` varchar(32),
+ `TABLE_COLLATION` varchar(64),
`CHECKSUM` bigint(21) unsigned,
`CREATE_OPTIONS` varchar(2048),
`TABLE_COMMENT` varchar(2048) NOT NULL,
@@ -97,7 +97,7 @@ AUTO_INCREMENT bigint(21) unsigned YES NULL
CREATE_TIME datetime YES NULL
UPDATE_TIME datetime YES NULL
CHECK_TIME datetime YES NULL
-TABLE_COLLATION varchar(32) YES NULL
+TABLE_COLLATION varchar(64) YES NULL
CHECKSUM bigint(21) unsigned YES NULL
CREATE_OPTIONS varchar(2048) YES NULL
TABLE_COMMENT varchar(2048) NO NULL
diff --git a/mysql-test/suite/funcs_1/r/is_triggers.result b/mysql-test/suite/funcs_1/r/is_triggers.result
index 6a1aed781da..99e514cfed9 100644
--- a/mysql-test/suite/funcs_1/r/is_triggers.result
+++ b/mysql-test/suite/funcs_1/r/is_triggers.result
@@ -50,8 +50,8 @@ CREATED datetime(2) YES NULL
SQL_MODE varchar(8192) NO NULL
DEFINER varchar(384) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
SHOW CREATE TABLE information_schema.TRIGGERS;
Table Create Table
TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
@@ -75,8 +75,8 @@ TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
`SQL_MODE` varchar(8192) NOT NULL,
`DEFINER` varchar(384) NOT NULL,
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL,
- `COLLATION_CONNECTION` varchar(32) NOT NULL,
- `DATABASE_COLLATION` varchar(32) NOT NULL
+ `COLLATION_CONNECTION` varchar(64) NOT NULL,
+ `DATABASE_COLLATION` varchar(64) NOT NULL
) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SHOW COLUMNS FROM information_schema.TRIGGERS;
Field Type Null Key Default Extra
@@ -100,8 +100,8 @@ CREATED datetime(2) YES NULL
SQL_MODE varchar(8192) NO NULL
DEFINER varchar(384) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
SELECT * FROM information_schema.triggers
WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
diff --git a/mysql-test/suite/funcs_1/r/is_triggers_embedded.result b/mysql-test/suite/funcs_1/r/is_triggers_embedded.result
index a35297899aa..a16493912ad 100644
--- a/mysql-test/suite/funcs_1/r/is_triggers_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_triggers_embedded.result
@@ -50,8 +50,8 @@ CREATED datetime(2) YES NULL
SQL_MODE varchar(8192) NO NULL
DEFINER varchar(384) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
SHOW CREATE TABLE information_schema.TRIGGERS;
Table Create Table
TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
@@ -75,8 +75,8 @@ TRIGGERS CREATE TEMPORARY TABLE `TRIGGERS` (
`SQL_MODE` varchar(8192) NOT NULL,
`DEFINER` varchar(384) NOT NULL,
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL,
- `COLLATION_CONNECTION` varchar(32) NOT NULL,
- `DATABASE_COLLATION` varchar(32) NOT NULL
+ `COLLATION_CONNECTION` varchar(64) NOT NULL,
+ `DATABASE_COLLATION` varchar(64) NOT NULL
) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SHOW COLUMNS FROM information_schema.TRIGGERS;
Field Type Null Key Default Extra
@@ -100,8 +100,8 @@ CREATED datetime(2) YES NULL
SQL_MODE varchar(8192) NO NULL
DEFINER varchar(384) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
-DATABASE_COLLATION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
+DATABASE_COLLATION varchar(64) NO NULL
SELECT * FROM information_schema.triggers
WHERE trigger_catalog IS NOT NULL OR event_object_catalog IS NOT NULL
OR action_condition IS NOT NULL OR action_reference_old_table IS NOT NULL
diff --git a/mysql-test/suite/funcs_1/r/is_views.result b/mysql-test/suite/funcs_1/r/is_views.result
index c42e4867d75..97ce2d915d8 100644
--- a/mysql-test/suite/funcs_1/r/is_views.result
+++ b/mysql-test/suite/funcs_1/r/is_views.result
@@ -37,7 +37,7 @@ IS_UPDATABLE varchar(3) NO NULL
DEFINER varchar(384) NO NULL
SECURITY_TYPE varchar(7) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
ALGORITHM varchar(10) NO NULL
SHOW CREATE TABLE information_schema.VIEWS;
Table Create Table
@@ -51,7 +51,7 @@ VIEWS CREATE TEMPORARY TABLE `VIEWS` (
`DEFINER` varchar(384) NOT NULL,
`SECURITY_TYPE` varchar(7) NOT NULL,
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL,
- `COLLATION_CONNECTION` varchar(32) NOT NULL,
+ `COLLATION_CONNECTION` varchar(64) NOT NULL,
`ALGORITHM` varchar(10) NOT NULL
) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SHOW COLUMNS FROM information_schema.VIEWS;
@@ -65,7 +65,7 @@ IS_UPDATABLE varchar(3) NO NULL
DEFINER varchar(384) NO NULL
SECURITY_TYPE varchar(7) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
ALGORITHM varchar(10) NO NULL
SELECT table_catalog, table_schema, table_name
FROM information_schema.views WHERE table_catalog <> 'def';
diff --git a/mysql-test/suite/funcs_1/r/is_views_embedded.result b/mysql-test/suite/funcs_1/r/is_views_embedded.result
index 72fcead6bcd..136126d8ab5 100644
--- a/mysql-test/suite/funcs_1/r/is_views_embedded.result
+++ b/mysql-test/suite/funcs_1/r/is_views_embedded.result
@@ -37,7 +37,7 @@ IS_UPDATABLE varchar(3) NO NULL
DEFINER varchar(384) NO NULL
SECURITY_TYPE varchar(7) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
ALGORITHM varchar(10) NO NULL
SHOW CREATE TABLE information_schema.VIEWS;
Table Create Table
@@ -51,7 +51,7 @@ VIEWS CREATE TEMPORARY TABLE `VIEWS` (
`DEFINER` varchar(384) NOT NULL,
`SECURITY_TYPE` varchar(7) NOT NULL,
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL,
- `COLLATION_CONNECTION` varchar(32) NOT NULL,
+ `COLLATION_CONNECTION` varchar(64) NOT NULL,
`ALGORITHM` varchar(10) NOT NULL
) DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
SHOW COLUMNS FROM information_schema.VIEWS;
@@ -65,7 +65,7 @@ IS_UPDATABLE varchar(3) NO NULL
DEFINER varchar(384) NO NULL
SECURITY_TYPE varchar(7) NO NULL
CHARACTER_SET_CLIENT varchar(32) NO NULL
-COLLATION_CONNECTION varchar(32) NO NULL
+COLLATION_CONNECTION varchar(64) NO NULL
ALGORITHM varchar(10) NO NULL
SELECT table_catalog, table_schema, table_name
FROM information_schema.views WHERE table_catalog <> 'def';
diff --git a/mysql-test/suite/galera/r/galera_defaults.result b/mysql-test/suite/galera/r/galera_defaults.result
index 04f45a7c770..84dd782999d 100644
--- a/mysql-test/suite/galera/r/galera_defaults.result
+++ b/mysql-test/suite/galera/r/galera_defaults.result
@@ -1,9 +1,6 @@
connection node_2;
connection node_1;
# Correct Galera library found
-SELECT COUNT(*) `expect 50` FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep_%';
-expect 50
-50
SELECT VARIABLE_NAME, VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME LIKE 'wsrep_%'
@@ -20,6 +17,7 @@ AND VARIABLE_NAME NOT IN (
)
ORDER BY VARIABLE_NAME;
VARIABLE_NAME VARIABLE_VALUE
+WSREP_ALLOWLIST
WSREP_AUTO_INCREMENT_CONTROL ON
WSREP_CAUSAL_READS ON
WSREP_CERTIFICATION_RULES strict
diff --git a/mysql-test/suite/galera/r/galera_gra_log.result b/mysql-test/suite/galera/r/galera_gra_log.result
index 8ac76692262..4146192bb55 100644
--- a/mysql-test/suite/galera/r/galera_gra_log.result
+++ b/mysql-test/suite/galera/r/galera_gra_log.result
@@ -18,7 +18,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=<TIMESTAMP>/*!*/;
SET @@session.pseudo_thread_id=<PSEUDO_THREAD_ID>/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/galera/r/galera_ist_MDEV-28423,debug.rdiff b/mysql-test/suite/galera/r/galera_ist_MDEV-28423,debug.rdiff
index 96e5def88ff..4eda9d7d045 100644
--- a/mysql-test/suite/galera/r/galera_ist_MDEV-28423,debug.rdiff
+++ b/mysql-test/suite/galera/r/galera_ist_MDEV-28423,debug.rdiff
@@ -1,5 +1,5 @@
---- r/galera_ist_MDEV-28423.result
-+++ r/galera_ist_MDEV-28423.reject
+--- suite/galera/r/galera_ist_MDEV-28423.result 2022-06-13 09:40:33.073863796 +0300
++++ suite/galera/r/galera_ist_MDEV-28423.reject 2022-06-13 09:58:59.936874991 +0300
@@ -517,3 +517,187 @@
1
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/r/galera_ist_MDEV-28583,debug.rdiff b/mysql-test/suite/galera/r/galera_ist_MDEV-28583,debug.rdiff
index 9e6530aa9f7..1c33916330a 100644
--- a/mysql-test/suite/galera/r/galera_ist_MDEV-28583,debug.rdiff
+++ b/mysql-test/suite/galera/r/galera_ist_MDEV-28583,debug.rdiff
@@ -1,5 +1,5 @@
---- r/galera_ist_MDEV-28583.result
-+++ r/galera_ist_MDEV-28583.reject
+--- suite/galera/r/galera_ist_MDEV-28583.result 2022-06-11 10:48:16.875034382 +0300
++++ suite/galera/r/galera_ist_MDEV-28583,debug.reject 2022-06-11 11:25:55.616481509 +0300
@@ -517,3 +517,187 @@
1
DROP TABLE t1;
diff --git a/mysql-test/suite/galera/t/galera_defaults.test b/mysql-test/suite/galera/t/galera_defaults.test
index 6b76473d6a6..ff08151327a 100644
--- a/mysql-test/suite/galera/t/galera_defaults.test
+++ b/mysql-test/suite/galera/t/galera_defaults.test
@@ -13,13 +13,11 @@
--source include/force_restart.inc
# Make sure that the test is operating on the right version of galera library.
---let $galera_version=26.4.7
+--let $galera_version=26.4.11
source ../wsrep/include/check_galera_version.inc;
# Global Variables
-SELECT COUNT(*) `expect 50` FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_NAME LIKE 'wsrep_%';
-
SELECT VARIABLE_NAME, VARIABLE_VALUE
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME LIKE 'wsrep_%'
diff --git a/mysql-test/suite/galera/t/galera_var_reject_queries.test b/mysql-test/suite/galera/t/galera_var_reject_queries.test
index 60aabe9bc17..eefa154a2d9 100644
--- a/mysql-test/suite/galera/t/galera_var_reject_queries.test
+++ b/mysql-test/suite/galera/t/galera_var_reject_queries.test
@@ -5,6 +5,10 @@
--source include/galera_cluster.inc
--source include/have_innodb.inc
+if (`select version() not like '10.10.3-%'`) {
+ skip disabled until new C/C;
+}
+
CREATE TABLE t1 (f1 INTEGER NOT NULL PRIMARY KEY) engine=innodb;
--connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1
diff --git a/mysql-test/suite/galera_3nodes/r/galera_allowlist.result b/mysql-test/suite/galera_3nodes/r/galera_allowlist.result
new file mode 100644
index 00000000000..471444d8c08
--- /dev/null
+++ b/mysql-test/suite/galera_3nodes/r/galera_allowlist.result
@@ -0,0 +1,35 @@
+connection node_2;
+connection node_1;
+SELECT COUNT(*) = 3 FROM mysql.wsrep_allowlist;
+COUNT(*) = 3
+1
+connection node_2;
+SELECT COUNT(*) = 3 FROM mysql.wsrep_allowlist;
+COUNT(*) = 3
+1
+connection node_3;
+SET @@global.wsrep_desync = 1;
+SET SESSION wsrep_sync_wait = 0;
+SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
+connection node_1;
+DELETE FROM mysql.wsrep_allowlist WHERE ip LIKE '127.0.0.3';
+SELECT COUNT(*) = 2 FROM mysql.wsrep_allowlist;
+COUNT(*) = 2
+1
+connection node_2;
+SELECT COUNT(*) = 2 FROM mysql.wsrep_allowlist;
+COUNT(*) = 2
+1
+connection node_3;
+SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';
+SET @@global.wsrep_desync = 0;
+connection node_1;
+INSERT INTO mysql.wsrep_allowlist(ip) VALUES ('127.0.0.3');
+connection node_3;
+# restart
+connection node_1;
+CALL mtr.add_suppression('WSREP: Connection not allowed');
+connection node_2;
+CALL mtr.add_suppression('WSREP: Connection not allowed');
+connection node_3;
+CALL mtr.add_suppression('WSREP: Ignoring lack of quorum');
diff --git a/mysql-test/suite/galera_3nodes/t/galera_allowlist.cnf b/mysql-test/suite/galera_3nodes/t/galera_allowlist.cnf
new file mode 100644
index 00000000000..62f24c172af
--- /dev/null
+++ b/mysql-test/suite/galera_3nodes/t/galera_allowlist.cnf
@@ -0,0 +1,26 @@
+!include ../galera_3nodes.cnf
+
+[mysqld]
+wsrep_sst_method=rsync
+
+[mysqld.1]
+wsrep_allowlist="127.0.0.1,127.0.0.2,127.0.0.3"
+
+[mysqld.2]
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.2.#galera_port;gmcast.listen_addr=127.0.0.2;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S'
+
+# Variable is only used on bootstrap node, so this will be ignored
+wsrep_allowlist="127.0.0.1,127.0.0.2,127.0.0.3,127.0.0.4,127.0.0.5"
+
+wsrep_node_address=127.0.0.2
+wsrep_sst_receive_address=127.0.0.2:@mysqld.2.#sst_port
+wsrep_node_incoming_address=127.0.0.2:@mysqld.2.port
+wsrep_sst_receive_address='127.0.0.2:@mysqld.2.#sst_port'
+
+[mysqld.3]
+wsrep_provider_options='repl.causal_read_timeout=PT90S;base_port=@mysqld.3.#galera_port;gmcast.listen_addr=127.0.0.3;evs.suspect_timeout=PT10S;evs.inactive_timeout=PT30S;evs.install_timeout=PT15S;pc.ignore_quorum=TRUE;pc.wait_prim=FALSE'
+
+wsrep_node_address=127.0.0.3
+wsrep_sst_receive_address=127.0.0.3:@mysqld.3.#sst_port
+wsrep_node_incoming_address=127.0.0.3:@mysqld.3.port
+wsrep_sst_receive_address='127.0.0.3:@mysqld.3.#sst_port' \ No newline at end of file
diff --git a/mysql-test/suite/galera_3nodes/t/galera_allowlist.test b/mysql-test/suite/galera_3nodes/t/galera_allowlist.test
new file mode 100644
index 00000000000..74fff61c4f8
--- /dev/null
+++ b/mysql-test/suite/galera_3nodes/t/galera_allowlist.test
@@ -0,0 +1,66 @@
+--source include/galera_cluster.inc
+--source include/have_innodb.inc
+
+# Check that `wsrep_allowlist` variable is loaded
+SELECT COUNT(*) = 3 FROM mysql.wsrep_allowlist;
+
+--connection node_2
+# Check that non-bootstrap nodes doesn't populate `mysql.wsrep_allowlist`
+SELECT COUNT(*) = 3 FROM mysql.wsrep_allowlist;
+
+--let $galera_connection_name = node_3
+--let $galera_server_number = 3
+--source include/galera_connect.inc
+
+--connection node_3
+# Desync and disconnect node 3 from the PC:
+SET @@global.wsrep_desync = 1;
+SET SESSION wsrep_sync_wait = 0;
+SET GLOBAL wsrep_provider_options = 'gmcast.isolate=1';
+
+--connection node_1
+# Wait until node 3 disappears from the PC:
+--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
+--source include/wait_condition.inc
+
+# Delete node ip (127.0.0.3) from allowlist
+DELETE FROM mysql.wsrep_allowlist WHERE ip LIKE '127.0.0.3';
+
+SELECT COUNT(*) = 2 FROM mysql.wsrep_allowlist;
+
+--connection node_2
+SELECT COUNT(*) = 2 FROM mysql.wsrep_allowlist;
+
+--connection node_3
+# Reconnect node 2 to the PC:
+SET GLOBAL wsrep_provider_options = 'gmcast.isolate=0';
+
+# We should reach Primary with cluster size = 1 because of `pc.ignore_quorum=TRUE and pc.wait_prim=FALSE` used in configuration
+--let $wait_condition = SELECT VARIABLE_VALUE = 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
+--source include/wait_condition.inc
+
+# Resync should pass:
+SET @@global.wsrep_desync = 0;
+
+# Shutdown node
+--source include/shutdown_mysqld.inc
+
+--connection node_1
+# Allow node 3 could be reconnected to cluster
+INSERT INTO mysql.wsrep_allowlist(ip) VALUES ('127.0.0.3');
+
+--connection node_3
+--source include/start_mysqld.inc
+--source include/wait_until_connected_again.inc
+
+--connection node_1
+--let $wait_condition = SELECT VARIABLE_VALUE = 3 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
+--source include/wait_condition.inc
+
+CALL mtr.add_suppression('WSREP: Connection not allowed');
+
+--connection node_2
+CALL mtr.add_suppression('WSREP: Connection not allowed');
+
+--connection node_3
+CALL mtr.add_suppression('WSREP: Ignoring lack of quorum');
diff --git a/mysql-test/suite/galera_sr/t/galera_sr_cc_master.test b/mysql-test/suite/galera_sr/t/galera_sr_cc_master.test
index da547c59626..6665a6e728d 100644
--- a/mysql-test/suite/galera_sr/t/galera_sr_cc_master.test
+++ b/mysql-test/suite/galera_sr/t/galera_sr_cc_master.test
@@ -1,6 +1,10 @@
--source include/galera_cluster.inc
--source include/have_innodb.inc
+if (`select version() not like '10.10.3-%'`) {
+ skip disabled until new C/C;
+}
+
#
# Test the effect of Cluster Configuration Change on a concurrently-running SR transaction
# We use SET GLOBAL wsrep_cluster_address = '' to cause the master (node_2) to temporarily
diff --git a/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc b/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc
index 879e2fe857d..4cc107306ba 100644
--- a/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc
+++ b/mysql-test/suite/gcol/inc/gcol_blocked_sql_funcs_main.inc
@@ -251,3 +251,18 @@ drop table t1;
--echo #
--echo # End of 10.3 tests
--echo #
+
+--echo #
+--echo # MDEV-29029 Index corruption and/or assertion failure upon using RANDOM_BYTES for indexed virtual column
+--echo #
+
+create table t1 (a int);
+--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
+alter table t1 add column b binary(32) generated always as (random_bytes(a));
+alter table t1 add column b binary(32) default (random_bytes(a));
+drop table t1;
+
+--echo #
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result
index b9fe877b0f2..a339e549b41 100644
--- a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result
+++ b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_innodb.result
@@ -173,6 +173,18 @@ drop table t1;
#
# End of 10.3 tests
#
+#
+# MDEV-29029 Index corruption and/or assertion failure upon using RANDOM_BYTES for indexed virtual column
+#
+create table t1 (a int);
+alter table t1 add column b binary(32) generated always as (random_bytes(a));
+ERROR HY000: Function or expression 'random_bytes()' cannot be used in the GENERATED ALWAYS AS clause of `b`
+alter table t1 add column b binary(32) default (random_bytes(a));
+drop table t1;
+#
+#
+# End of 10.10 tests
+#
DROP VIEW IF EXISTS v1,v2;
DROP TABLE IF EXISTS t1,t2,t3;
DROP PROCEDURE IF EXISTS p1;
diff --git a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result
index 23fdea42488..c6a4518bb87 100644
--- a/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result
+++ b/mysql-test/suite/gcol/r/gcol_blocked_sql_funcs_myisam.result
@@ -175,6 +175,18 @@ drop table t1;
#
# End of 10.3 tests
#
+#
+# MDEV-29029 Index corruption and/or assertion failure upon using RANDOM_BYTES for indexed virtual column
+#
+create table t1 (a int);
+alter table t1 add column b binary(32) generated always as (random_bytes(a));
+ERROR HY000: Function or expression 'random_bytes()' cannot be used in the GENERATED ALWAYS AS clause of `b`
+alter table t1 add column b binary(32) default (random_bytes(a));
+drop table t1;
+#
+#
+# End of 10.10 tests
+#
DROP VIEW IF EXISTS v1,v2;
DROP TABLE IF EXISTS t1,t2,t3;
DROP PROCEDURE IF EXISTS p1;
diff --git a/mysql-test/suite/gcol/r/gcol_supported_sql_funcs_innodb.result b/mysql-test/suite/gcol/r/gcol_supported_sql_funcs_innodb.result
index 9929f4d1eaa..1b12e0a9bc6 100644
--- a/mysql-test/suite/gcol/r/gcol_supported_sql_funcs_innodb.result
+++ b/mysql-test/suite/gcol/r/gcol_supported_sql_funcs_innodb.result
@@ -2599,7 +2599,7 @@ create table t1 (a timestamp, c bigint generated always as (timestampdiff(MONTH,
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `a` timestamp NULL DEFAULT NULL,
`c` bigint(20) GENERATED ALWAYS AS (timestampdiff(MONTH,`a`,`a`)) VIRTUAL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
insert into t1 values ('2003-02-01',default);
diff --git a/mysql-test/suite/gcol/r/gcol_supported_sql_funcs_myisam.result b/mysql-test/suite/gcol/r/gcol_supported_sql_funcs_myisam.result
index 802e830a587..8553f87dc58 100644
--- a/mysql-test/suite/gcol/r/gcol_supported_sql_funcs_myisam.result
+++ b/mysql-test/suite/gcol/r/gcol_supported_sql_funcs_myisam.result
@@ -2599,7 +2599,7 @@ create table t1 (a timestamp, c bigint generated always as (timestampdiff(MONTH,
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `a` timestamp NULL DEFAULT NULL,
`c` bigint(20) GENERATED ALWAYS AS (timestampdiff(MONTH,`a`,`a`)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
insert into t1 values ('2003-02-01',default);
diff --git a/mysql-test/suite/gcol/r/innodb_virtual_fk.result b/mysql-test/suite/gcol/r/innodb_virtual_fk.result
index faba10161fb..97058bc2c52 100644
--- a/mysql-test/suite/gcol/r/innodb_virtual_fk.result
+++ b/mysql-test/suite/gcol/r/innodb_virtual_fk.result
@@ -712,7 +712,7 @@ SET foreign_key_checks=1;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NULL DEFAULT NULL,
`c2` year(4) DEFAULT NULL,
`c3` time DEFAULT NULL,
`c4` char(10) DEFAULT NULL,
@@ -729,7 +729,7 @@ ERROR HY000: Can't create table `test`.`t1` (errno: 150 "Foreign key constraint
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `c1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `c1` timestamp NULL DEFAULT NULL,
`c2` year(4) DEFAULT NULL,
`c3` time DEFAULT NULL,
`c4` char(10) DEFAULT NULL,
diff --git a/mysql-test/suite/innodb/r/innodb-alter-timestamp.result b/mysql-test/suite/innodb/r/innodb-alter-timestamp.result
index 1609812ed30..1a68c54095a 100644
--- a/mysql-test/suite/innodb/r/innodb-alter-timestamp.result
+++ b/mysql-test/suite/innodb/r/innodb-alter-timestamp.result
@@ -59,16 +59,11 @@ SELECT DISTINCT d1 FROM t1;
d1
NULL
ALTER TABLE t1 CHANGE d1 d1 TIMESTAMP DEFAULT '2017-05-08 16:32:54';
-affected rows: 5
-info: Records: 5 Duplicates: 0 Warnings: 0
-# Note: NULL was changed to CURRENT_TIMESTAMP(),
-# not the specified constant DEFAULT value!
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
SELECT COUNT(DISTINCT d1),COUNT(d1),COUNT(*) FROM t1;
COUNT(DISTINCT d1) COUNT(d1) COUNT(*)
-1 5 5
-SELECT DISTINCT (CURRENT_TIMESTAMP()-d1) <= 60 FROM t1;
-(CURRENT_TIMESTAMP()-d1) <= 60
-1
+0 0 5
drop table t1;
CREATE TABLE t1 (
`i1` INT(10) UNSIGNED NOT NULL,
@@ -111,8 +106,8 @@ t1 CREATE TABLE `t1` (
`i1` int(10) unsigned NOT NULL,
`d1` timestamp NOT NULL DEFAULT current_timestamp(),
`u1` varchar(30) DEFAULT substr(user(),1),
- `d2` timestamp NOT NULL DEFAULT '2017-05-08 16:23:45',
- `d3` timestamp NOT NULL DEFAULT `d1`
+ `d2` timestamp NULL DEFAULT '2017-05-08 16:23:45',
+ `d3` timestamp NULL DEFAULT `d1`
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
ALTER TABLE t1 ADD COLUMN d4 TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
affected rows: 0
diff --git a/mysql-test/suite/innodb/r/innodb-change-buffer-recovery.result b/mysql-test/suite/innodb/r/innodb-change-buffer-recovery.result
index 13e45425872..42fdf680f2e 100644
--- a/mysql-test/suite/innodb/r/innodb-change-buffer-recovery.result
+++ b/mysql-test/suite/innodb/r/innodb-change-buffer-recovery.result
@@ -39,19 +39,13 @@ Table Op Msg_type Msg_text
test.t1 check Error Unknown storage engine 'InnoDB'
test.t1 check error Corrupt
FOUND 1 /innodb_read_only prevents crash recovery/ in mysqld.1.err
-# restart: --innodb-force-recovery=5
+# restart: --innodb-force-recovery=5 --debug-dbug=d,crash_after_log_ibuf_upd_inplace
SELECT * FROM t1 LIMIT 1;
a b c
1 X 1
-SHOW ENGINE INNODB STATUS;
-Type Name Status
-InnoDB insert 0, delete mark 0
SET GLOBAL innodb_fast_shutdown=0;
# restart
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
-SHOW ENGINE INNODB STATUS;
-Type Name Status
-InnoDB
DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/r/innodb.result b/mysql-test/suite/innodb/r/innodb.result
index 47e5f0f5c94..742a822baa0 100644
--- a/mysql-test/suite/innodb/r/innodb.result
+++ b/mysql-test/suite/innodb/r/innodb.result
@@ -1694,15 +1694,6 @@ OK
SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_page_size';
variable_value
16384
-SELECT variable_value - @innodb_rows_deleted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted';
-variable_value - @innodb_rows_deleted_orig
-71
-SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';
-variable_value - @innodb_rows_inserted_orig
-964
-SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';
-variable_value - @innodb_rows_updated_orig
-865
SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits';
variable_value - @innodb_row_lock_waits_orig
0
diff --git a/mysql-test/suite/innodb/r/innodb_ctype_ldml.result b/mysql-test/suite/innodb/r/innodb_ctype_ldml.result
index 82679961d68..22841cca760 100644
--- a/mysql-test/suite/innodb/r/innodb_ctype_ldml.result
+++ b/mysql-test/suite/innodb/r/innodb_ctype_ldml.result
@@ -402,6 +402,7 @@ utf8mb4_test_ci utf8mb4 326 8
utf16_test_ci utf16 327 8
utf8mb4_test_400_ci utf8mb4 328 8
utf8mb4_test_520_nopad_ci utf8mb4 329 8
+utf8mb4_uca1400_test01_as_ci utf8mb4 330 4
latin1_test latin1 331 1
latin1_test2 latin1 332 1
latin1_test2_cs latin1 333 1
@@ -438,6 +439,7 @@ ucs2_test_ci ucs2 358 8
utf8mb4_test_ci utf8mb4 326 8
utf8mb4_test_400_ci utf8mb4 328 8
utf8mb4_test_520_nopad_ci utf8mb4 329 8
+utf8mb4_uca1400_test01_as_ci utf8mb4 330 4
utf16_test_ci utf16 327 8
utf32_test_ci utf32 391 8
show collation like 'ucs2_vn_ci';
diff --git a/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result b/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
index a504bb4aa39..bc5051b1442 100644
--- a/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
+++ b/mysql-test/suite/innodb/r/innodb_skip_innodb_is_tables.result
@@ -70,8 +70,6 @@ buffer_pool_pages_free buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL N
buffer_pages_created buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of pages created (innodb_pages_created)
buffer_pages_written buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of pages written (innodb_pages_written)
buffer_pages_read buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of pages read (innodb_pages_read)
-buffer_index_sec_rec_cluster_reads buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of secondary record reads triggered cluster read
-buffer_index_sec_rec_cluster_reads_avoided buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of secondary record reads avoided triggering cluster read
buffer_data_reads buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Amount of data read in bytes (innodb_data_reads)
buffer_data_written buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Amount of data written in bytes (innodb_data_written)
buffer_flush_batch_scanned buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 set_owner Total pages scanned as part of flush batch
@@ -226,14 +224,6 @@ innodb_dict_lru_count_idle server 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NU
innodb_dblwr_writes server 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of doublewrite operations that have been performed (innodb_dblwr_writes)
innodb_dblwr_pages_written server 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of pages that have been written for doublewrite operations (innodb_dblwr_pages_written)
innodb_page_size server 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 value InnoDB page size in bytes (innodb_page_size)
-dml_reads dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of rows read
-dml_inserts dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of rows inserted
-dml_deletes dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of rows deleted
-dml_updates dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of rows updated
-dml_system_reads dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of system rows read
-dml_system_inserts dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of system rows inserted
-dml_system_deletes dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of system rows deleted
-dml_system_updates dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of system rows updated
ddl_background_drop_indexes ddl 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 counter Number of indexes waiting to be dropped after failed index creation
ddl_online_create_index ddl 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 counter Number of indexes being created online
ddl_pending_alter_table ddl 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 counter Number of ALTER TABLE, CREATE INDEX, DROP INDEX in progress
diff --git a/mysql-test/suite/innodb/r/innodb_status_variables.result b/mysql-test/suite/innodb/r/innodb_status_variables.result
index 086e4e1d1e7..2271cf48b14 100644
--- a/mysql-test/suite/innodb/r/innodb_status_variables.result
+++ b/mysql-test/suite/innodb/r/innodb_status_variables.result
@@ -74,14 +74,6 @@ INNODB_ROW_LOCK_TIME
INNODB_ROW_LOCK_TIME_AVG
INNODB_ROW_LOCK_TIME_MAX
INNODB_ROW_LOCK_WAITS
-INNODB_ROWS_DELETED
-INNODB_ROWS_INSERTED
-INNODB_ROWS_READ
-INNODB_ROWS_UPDATED
-INNODB_SYSTEM_ROWS_DELETED
-INNODB_SYSTEM_ROWS_INSERTED
-INNODB_SYSTEM_ROWS_READ
-INNODB_SYSTEM_ROWS_UPDATED
INNODB_NUM_OPEN_FILES
INNODB_TRUNCATED_STATUS_WRITES
INNODB_AVAILABLE_UNDO_LOGS
@@ -106,8 +98,6 @@ INNODB_INSTANT_ALTER_COLUMN
INNODB_ONLINEDDL_ROWLOG_ROWS
INNODB_ONLINEDDL_ROWLOG_PCT_USED
INNODB_ONLINEDDL_PCT_PROGRESS
-INNODB_SECONDARY_INDEX_TRIGGERED_CLUSTER_READS
-INNODB_SECONDARY_INDEX_TRIGGERED_CLUSTER_READS_AVOIDED
INNODB_ENCRYPTION_ROTATION_PAGES_READ_FROM_CACHE
INNODB_ENCRYPTION_ROTATION_PAGES_READ_FROM_DISK
INNODB_ENCRYPTION_ROTATION_PAGES_MODIFIED
diff --git a/mysql-test/suite/innodb/r/instant_alter_debug.result b/mysql-test/suite/innodb/r/instant_alter_debug.result
index 5f74c234260..7205fc48b50 100644
--- a/mysql-test/suite/innodb/r/instant_alter_debug.result
+++ b/mysql-test/suite/innodb/r/instant_alter_debug.result
@@ -78,9 +78,7 @@ c7 VARCHAR(257) CHARACTER SET latin1,
c8 VARCHAR(257) CHARACTER SET binary
) ENGINE=InnoDB;
INSERT INTO t9 () VALUES ();
-ALTER TABLE t9 ADD COLUMN IF NOT EXISTS t TIMESTAMP NULL KEY;
-Warnings:
-Note 1061 Multiple primary key defined
+ALTER TABLE t9 ADD COLUMN IF NOT EXISTS t TIMESTAMP NULL;
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL rebuilt WAIT_FOR dml';
OPTIMIZE TABLE t9;
connection dml;
diff --git a/mysql-test/suite/innodb/r/monitor.result b/mysql-test/suite/innodb/r/monitor.result
index 922c66a068f..24cd0ed064e 100644
--- a/mysql-test/suite/innodb/r/monitor.result
+++ b/mysql-test/suite/innodb/r/monitor.result
@@ -36,8 +36,6 @@ buffer_pool_pages_free disabled
buffer_pages_created disabled
buffer_pages_written disabled
buffer_pages_read disabled
-buffer_index_sec_rec_cluster_reads disabled
-buffer_index_sec_rec_cluster_reads_avoided disabled
buffer_data_reads disabled
buffer_data_written disabled
buffer_flush_batch_scanned disabled
@@ -192,14 +190,6 @@ innodb_dict_lru_count_idle disabled
innodb_dblwr_writes disabled
innodb_dblwr_pages_written disabled
innodb_page_size disabled
-dml_reads disabled
-dml_inserts disabled
-dml_deletes disabled
-dml_updates disabled
-dml_system_reads disabled
-dml_system_inserts disabled
-dml_system_deletes disabled
-dml_system_updates disabled
ddl_background_drop_indexes disabled
ddl_online_create_index disabled
ddl_pending_alter_table disabled
@@ -391,134 +381,6 @@ where name='trx_rollbacks';
name max_count min_count count max_count_reset min_count_reset count_reset status
trx_rollbacks 1 NULL 1 1 NULL 1 enabled
set global innodb_monitor_disable = module_trx;
-set global innodb_monitor_enable = module_dml;
-insert into monitor_test values(9);
-update monitor_test set col = 10 where col = 9;
-select name, max_count, min_count, count,
-max_count_reset, min_count_reset, count_reset,
-if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-name max_count min_count count max_count_reset min_count_reset count_reset status
-dml_reads 2 NULL 2 2 NULL 2 enabled
-dml_inserts 1 NULL 1 1 NULL 1 enabled
-dml_deletes 0 NULL 0 0 NULL 0 enabled
-dml_updates 2 NULL 2 2 NULL 2 enabled
-dml_system_reads 0 NULL 0 0 NULL 0 enabled
-dml_system_inserts 0 NULL 0 0 NULL 0 enabled
-dml_system_deletes 0 NULL 0 0 NULL 0 enabled
-dml_system_updates 0 NULL 0 0 NULL 0 enabled
-delete from monitor_test;
-select name, max_count, min_count, count,
-max_count_reset, min_count_reset, count_reset,
-if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-name max_count min_count count max_count_reset min_count_reset count_reset status
-dml_reads 4 NULL 4 4 NULL 4 enabled
-dml_inserts 1 NULL 1 1 NULL 1 enabled
-dml_deletes 2 NULL 2 2 NULL 2 enabled
-dml_updates 2 NULL 2 2 NULL 2 enabled
-dml_system_reads 0 NULL 0 0 NULL 0 enabled
-dml_system_inserts 0 NULL 0 0 NULL 0 enabled
-dml_system_deletes 0 NULL 0 0 NULL 0 enabled
-dml_system_updates 0 NULL 0 0 NULL 0 enabled
-set global innodb_monitor_reset = module_dml;
-select name, max_count, min_count, count,
-max_count_reset, min_count_reset, count_reset,
-if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-name max_count min_count count max_count_reset min_count_reset count_reset status
-dml_reads 4 NULL 4 0 NULL 0 enabled
-dml_inserts 1 NULL 1 0 NULL 0 enabled
-dml_deletes 2 NULL 2 0 NULL 0 enabled
-dml_updates 2 NULL 2 0 NULL 0 enabled
-dml_system_reads 0 NULL 0 0 NULL 0 enabled
-dml_system_inserts 0 NULL 0 0 NULL 0 enabled
-dml_system_deletes 0 NULL 0 0 NULL 0 enabled
-dml_system_updates 0 NULL 0 0 NULL 0 enabled
-insert into monitor_test values(9);
-insert into monitor_test values(1);
-delete from monitor_test;
-select name, max_count, min_count, count,
-max_count_reset, min_count_reset, count_reset,
-if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-name max_count min_count count max_count_reset min_count_reset count_reset status
-dml_reads 6 NULL 6 2 NULL 2 enabled
-dml_inserts 3 NULL 3 2 NULL 2 enabled
-dml_deletes 4 NULL 4 2 NULL 2 enabled
-dml_updates 2 NULL 2 0 NULL 0 enabled
-dml_system_reads 0 NULL 0 0 NULL 0 enabled
-dml_system_inserts 0 NULL 0 0 NULL 0 enabled
-dml_system_deletes 0 NULL 0 0 NULL 0 enabled
-dml_system_updates 0 NULL 0 0 NULL 0 enabled
-set global innodb_monitor_reset_all = module_dml;
-select name, max_count, min_count, count,
-max_count_reset, min_count_reset, count_reset,
-if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-name max_count min_count count max_count_reset min_count_reset count_reset status
-dml_reads 6 NULL 6 2 NULL 2 enabled
-dml_inserts 3 NULL 3 2 NULL 2 enabled
-dml_deletes 4 NULL 4 2 NULL 2 enabled
-dml_updates 2 NULL 2 0 NULL 0 enabled
-dml_system_reads 0 NULL 0 0 NULL 0 enabled
-dml_system_inserts 0 NULL 0 0 NULL 0 enabled
-dml_system_deletes 0 NULL 0 0 NULL 0 enabled
-dml_system_updates 0 NULL 0 0 NULL 0 enabled
-set global innodb_monitor_disable = module_dml;
-select name, max_count, min_count, count,
-max_count_reset, min_count_reset, count_reset,
-if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-name max_count min_count count max_count_reset min_count_reset count_reset status
-dml_reads 6 NULL 6 2 NULL 2 disabled
-dml_inserts 3 NULL 3 2 NULL 2 disabled
-dml_deletes 4 NULL 4 2 NULL 2 disabled
-dml_updates 2 NULL 2 0 NULL 0 disabled
-dml_system_reads 0 NULL 0 0 NULL 0 disabled
-dml_system_inserts 0 NULL 0 0 NULL 0 disabled
-dml_system_deletes 0 NULL 0 0 NULL 0 disabled
-dml_system_updates 0 NULL 0 0 NULL 0 disabled
-set global innodb_monitor_reset_all = module_dml;
-select name, max_count, min_count, count,
-max_count_reset, min_count_reset, count_reset,
-if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-name max_count min_count count max_count_reset min_count_reset count_reset status
-dml_reads NULL NULL 0 NULL NULL 0 disabled
-dml_inserts NULL NULL 0 NULL NULL 0 disabled
-dml_deletes NULL NULL 0 NULL NULL 0 disabled
-dml_updates NULL NULL 0 NULL NULL 0 disabled
-dml_system_reads NULL NULL 0 NULL NULL 0 disabled
-dml_system_inserts NULL NULL 0 NULL NULL 0 disabled
-dml_system_deletes NULL NULL 0 NULL NULL 0 disabled
-dml_system_updates NULL NULL 0 NULL NULL 0 disabled
-set global innodb_monitor_enable = dml_inserts;
-insert into monitor_test values(9);
-insert into monitor_test values(1);
-delete from monitor_test;
-select name, max_count, min_count, count,
-max_count_reset, min_count_reset, count_reset,
-if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-name max_count min_count count max_count_reset min_count_reset count_reset status
-dml_reads NULL NULL 0 NULL NULL 0 disabled
-dml_inserts 2 NULL 2 2 NULL 2 enabled
-dml_deletes NULL NULL 0 NULL NULL 0 disabled
-dml_updates NULL NULL 0 NULL NULL 0 disabled
-dml_system_reads NULL NULL 0 NULL NULL 0 disabled
-dml_system_inserts NULL NULL 0 NULL NULL 0 disabled
-dml_system_deletes NULL NULL 0 NULL NULL 0 disabled
-dml_system_updates NULL NULL 0 NULL NULL 0 disabled
-set global innodb_monitor_disable = module_dml;
drop table monitor_test;
set global innodb_monitor_enable = file_num_open_files;
select name, max_count, min_count, count,
diff --git a/mysql-test/suite/innodb/t/innodb-alter-timestamp.test b/mysql-test/suite/innodb/t/innodb-alter-timestamp.test
index e1c263dc5d0..95df8d6b649 100644
--- a/mysql-test/suite/innodb/t/innodb-alter-timestamp.test
+++ b/mysql-test/suite/innodb/t/innodb-alter-timestamp.test
@@ -48,10 +48,7 @@ SELECT DISTINCT d1 FROM t1;
--enable_info
ALTER TABLE t1 CHANGE d1 d1 TIMESTAMP DEFAULT '2017-05-08 16:32:54';
--disable_info
---echo # Note: NULL was changed to CURRENT_TIMESTAMP(),
---echo # not the specified constant DEFAULT value!
SELECT COUNT(DISTINCT d1),COUNT(d1),COUNT(*) FROM t1;
-SELECT DISTINCT (CURRENT_TIMESTAMP()-d1) <= 60 FROM t1;
drop table t1;
CREATE TABLE t1 (
diff --git a/mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test b/mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test
index 129037e783b..dbce2f91948 100644
--- a/mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test
+++ b/mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test
@@ -67,16 +67,12 @@ CHECK TABLE t1;
let SEARCH_PATTERN=innodb_read_only prevents crash recovery;
--source include/search_pattern_in_file.inc
---let $restart_parameters= --innodb-force-recovery=5
+--let $restart_parameters= --innodb-force-recovery=5 --debug-dbug=d,crash_after_log_ibuf_upd_inplace
--source include/start_mysqld.inc
SELECT * FROM t1 LIMIT 1;
-replace_regex /.*operations:.* (insert.*), delete \d.*discarded .*/\1/;
-SHOW ENGINE INNODB STATUS;
# Slow shutdown will not merge the changes due to innodb_force_recovery=5.
SET GLOBAL innodb_fast_shutdown=0;
--let $restart_parameters=
--source include/restart_mysqld.inc
CHECK TABLE t1;
-replace_regex /.*operations:.* insert [1-9][0-9]*, delete mark [1-9][0-9]*, delete \d.*discarded .*//;
-SHOW ENGINE INNODB STATUS;
DROP TABLE t1;
diff --git a/mysql-test/suite/innodb/t/innodb.test b/mysql-test/suite/innodb/t/innodb.test
index 3b3b2770df7..58e9899bd40 100644
--- a/mysql-test/suite/innodb/t/innodb.test
+++ b/mysql-test/suite/innodb/t/innodb.test
@@ -25,9 +25,6 @@ call mtr.add_suppression("\\[ERROR\\] InnoDB: in ALTER TABLE `test`.`t1`");
call mtr.add_suppression("\\[ERROR\\] InnoDB: in RENAME TABLE table `test`.`t1`");
--disable_warnings
-SET @innodb_rows_deleted_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted');
-SET @innodb_rows_inserted_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted');
-SET @innodb_rows_updated_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated');
SET @innodb_row_lock_waits_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits');
SET @innodb_row_lock_current_waits_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_current_waits');
SET @innodb_row_lock_time_orig = (SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_time');
@@ -1319,9 +1316,6 @@ drop table t1;
# uses previous ones(pages_created, rows_deleted, ...).
SELECT IF(variable_value BETWEEN 488 AND 512, 'OK', variable_value) FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_buffer_pool_pages_total';
SELECT variable_value FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_page_size';
-SELECT variable_value - @innodb_rows_deleted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_deleted';
-SELECT variable_value - @innodb_rows_inserted_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_inserted';
-SELECT variable_value - @innodb_rows_updated_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_rows_updated';
# Test for row locks InnoDB status variables.
SELECT variable_value - @innodb_row_lock_waits_orig FROM information_schema.global_status WHERE LOWER(variable_name) = 'innodb_row_lock_waits';
diff --git a/mysql-test/suite/innodb/t/instant_alter_debug.test b/mysql-test/suite/innodb/t/instant_alter_debug.test
index c6eca884907..64f94a78f2e 100644
--- a/mysql-test/suite/innodb/t/instant_alter_debug.test
+++ b/mysql-test/suite/innodb/t/instant_alter_debug.test
@@ -91,7 +91,7 @@ CREATE TABLE t9 (
c8 VARCHAR(257) CHARACTER SET binary
) ENGINE=InnoDB;
INSERT INTO t9 () VALUES ();
-ALTER TABLE t9 ADD COLUMN IF NOT EXISTS t TIMESTAMP NULL KEY;
+ALTER TABLE t9 ADD COLUMN IF NOT EXISTS t TIMESTAMP NULL;
SET DEBUG_SYNC='row_log_table_apply1_before SIGNAL rebuilt WAIT_FOR dml';
--send
OPTIMIZE TABLE t9;
diff --git a/mysql-test/suite/innodb/t/monitor.test b/mysql-test/suite/innodb/t/monitor.test
index 3a004b22751..731c2b034fb 100644
--- a/mysql-test/suite/innodb/t/monitor.test
+++ b/mysql-test/suite/innodb/t/monitor.test
@@ -254,93 +254,6 @@ where name='trx_rollbacks';
set global innodb_monitor_disable = module_trx;
-# Test DML Module
-set global innodb_monitor_enable = module_dml;
-
-insert into monitor_test values(9);
-
-update monitor_test set col = 10 where col = 9;
-
-select name, max_count, min_count, count,
- max_count_reset, min_count_reset, count_reset,
- if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-
-delete from monitor_test;
-
-select name, max_count, min_count, count,
- max_count_reset, min_count_reset, count_reset,
- if(enabled,'enabled','disabled') status
- from information_schema.innodb_metrics
- where name like "dml%";
-
-# test reset counter while the counter is on
-set global innodb_monitor_reset = module_dml;
-
-select name, max_count, min_count, count,
- max_count_reset, min_count_reset, count_reset,
- if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-
-# insert/delete some rows after the reset
-insert into monitor_test values(9);
-insert into monitor_test values(1);
-
-delete from monitor_test;
-
-select name, max_count, min_count, count,
- max_count_reset, min_count_reset, count_reset,
- if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-
-# We do not allow reset_all while the counter is on, nothing
-# should be reset here
-set global innodb_monitor_reset_all = module_dml;
-
-select name, max_count, min_count, count,
- max_count_reset, min_count_reset, count_reset,
- if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-
-# Turn off the counter
-set global innodb_monitor_disable = module_dml;
-
-select name, max_count, min_count, count,
- max_count_reset, min_count_reset, count_reset,
- if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-
-# Reset all counter values
-set global innodb_monitor_reset_all = module_dml;
-
-select name, max_count, min_count, count,
- max_count_reset, min_count_reset, count_reset,
- if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-
-# Open individual counter "dml_inserts"
-set global innodb_monitor_enable = dml_inserts;
-
-insert into monitor_test values(9);
-insert into monitor_test values(1);
-
-delete from monitor_test;
-
-# Only counter "dml_inserts" should be updated
-select name, max_count, min_count, count,
- max_count_reset, min_count_reset, count_reset,
- if(enabled,'enabled','disabled') status
-from information_schema.innodb_metrics
-where name like "dml%";
-
-set global innodb_monitor_disable = module_dml;
-
drop table monitor_test;
set global innodb_monitor_enable = file_num_open_files;
diff --git a/mysql-test/suite/mariabackup/slave_info_norpl.result b/mysql-test/suite/mariabackup/slave_info_norpl.result
index 9fcd67a8916..04ca2fb2242 100644
--- a/mysql-test/suite/mariabackup/slave_info_norpl.result
+++ b/mysql-test/suite/mariabackup/slave_info_norpl.result
@@ -31,28 +31,30 @@ CHANGE MASTER 'master4' TO MASTER_HOST='localhost', MASTER_PORT=10004, MASTER_US
CHANGE MASTER 'master5' TO MASTER_HOST='localhost', MASTER_PORT=10005, MASTER_USE_GTID=slave_pos;
lineno line
1 SET GLOBAL gtid_slave_pos = '<NUM-NUM-NUM>,<NUM-NUM-NUM>';
-2 CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=<NUM>;
-3 CHANGE MASTER 'master2' TO MASTER_LOG_FILE='', MASTER_LOG_POS=<NUM>;
+2 CHANGE MASTER TO master_use_gtid = slave_pos;
+3 CHANGE MASTER 'master2' TO master_use_gtid = slave_pos;
4 CHANGE MASTER 'master3' TO master_use_gtid = slave_pos;
5 CHANGE MASTER 'master4' TO MASTER_LOG_FILE='', MASTER_LOG_POS=<NUM>;
6 CHANGE MASTER 'master5' TO master_use_gtid = slave_pos;
line
-[00] YYYY-MM-DD hh:mm:ss MySQL slave binlog position: gtid_slave_pos '<NUM-NUM-NUM>,<NUM-NUM-NUM>'; master '' filename '' position '0'; master 'master2' filename '' position '0'; master 'master3' master_use_gtid = slave_pos; master 'master4' filename '' position '0'; master 'master5' master_use_gtid = slave_pos
+[00] YYYY-MM-DD hh:mm:ss MySQL slave binlog position: gtid_slave_pos '<NUM-NUM-NUM>,<NUM-NUM-NUM>'; master '' master_use_gtid = slave_pos; master 'master2' master_use_gtid = slave_pos; master 'master3' master_use_gtid = slave_pos; master 'master4' filename '' position '0'; master 'master5' master_use_gtid = slave_pos
CHANGE MASTER TO MASTER_HOST='localhost', MASTER_PORT=10000, MASTER_USE_GTID=slave_pos;
lineno line
1 SET GLOBAL gtid_slave_pos = '<NUM-NUM-NUM>,<NUM-NUM-NUM>';
2 CHANGE MASTER TO master_use_gtid = slave_pos;
-3 CHANGE MASTER 'master2' TO MASTER_LOG_FILE='', MASTER_LOG_POS=<NUM>;
+3 CHANGE MASTER 'master2' TO master_use_gtid = slave_pos;
4 CHANGE MASTER 'master3' TO master_use_gtid = slave_pos;
5 CHANGE MASTER 'master4' TO MASTER_LOG_FILE='', MASTER_LOG_POS=<NUM>;
6 CHANGE MASTER 'master5' TO master_use_gtid = slave_pos;
line
-[00] YYYY-MM-DD hh:mm:ss MySQL slave binlog position: gtid_slave_pos '<NUM-NUM-NUM>,<NUM-NUM-NUM>'; master '' master_use_gtid = slave_pos; master 'master2' filename '' position '0'; master 'master3' master_use_gtid = slave_pos; master 'master4' filename '' position '0'; master 'master5' master_use_gtid = slave_pos
+[00] YYYY-MM-DD hh:mm:ss MySQL slave binlog position: gtid_slave_pos '<NUM-NUM-NUM>,<NUM-NUM-NUM>'; master '' master_use_gtid = slave_pos; master 'master2' master_use_gtid = slave_pos; master 'master3' master_use_gtid = slave_pos; master 'master4' filename '' position '0'; master 'master5' master_use_gtid = slave_pos
RESET SLAVE ALL;
RESET SLAVE 'master2' ALL;
RESET SLAVE 'master3' ALL;
RESET SLAVE 'master4' ALL;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
RESET SLAVE 'master5' ALL;
#
# End of 10.2 tests
diff --git a/mysql-test/suite/multi_source/gtid.result b/mysql-test/suite/multi_source/gtid.result
index 0ed1062b70f..dde53ca67b4 100644
--- a/mysql-test/suite/multi_source/gtid.result
+++ b/mysql-test/suite/multi_source/gtid.result
@@ -48,7 +48,11 @@ INSERT INTO t2 VALUES (2, "switch1");
INSERT INTO t3 VALUES (202, "switch1 b");
connection slave2;
CHANGE MASTER 'slave1' TO master_port=MYPORT_1, master_host='127.0.0.1', master_user='root', master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
CHANGE MASTER 'slave2' TO master_port=MYPORT_2, master_host='127.0.0.1', master_user='root', master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
SET default_master_connection = 'slave1';
START SLAVE;
include/wait_for_slave_to_start.inc
@@ -76,6 +80,8 @@ connection slave2;
include/sync_with_master_gtid.inc
connection slave1;
CHANGE MASTER TO master_port=MYPORT_4, master_host='127.0.0.1', master_user='root', master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
START SLAVE;
SELECT * FROM t1 ORDER BY a;
a b
diff --git a/mysql-test/suite/multi_source/info_logs.result b/mysql-test/suite/multi_source/info_logs.result
index b0a112aaf3b..c19620b46cc 100644
--- a/mysql-test/suite/multi_source/info_logs.result
+++ b/mysql-test/suite/multi_source/info_logs.result
@@ -10,7 +10,8 @@ multi-master.info
change master 'master1' to
master_port=MYPORT_1,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave 'master1';
set default_master_connection = 'master1';
include/wait_for_slave_to_start.inc
@@ -28,7 +29,8 @@ master1
change master 'MASTER 2.2' to
master_port=MYPORT_2,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave 'MASTER 2.2';
set default_master_connection = 'MASTER 2.2';
include/wait_for_slave_to_start.inc
@@ -53,6 +55,8 @@ stop slave 'master1';
set default_master_connection = 'master1';
include/wait_for_slave_to_stop.inc
reset slave 'master1' all;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
#
# List of files matching '*info*' pattern
# after 'master1' was completely reset, 'MASTER 2.2' still running
@@ -69,7 +73,8 @@ set default_master_connection = '';
change master to
master_port=MYPORT_1,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave;
include/wait_for_slave_to_start.inc
connect master1,127.0.0.1,root,,,$SERVER_MYPORT_1;
diff --git a/mysql-test/suite/multi_source/info_logs.test b/mysql-test/suite/multi_source/info_logs.test
index 234e317e5ce..f8352978645 100644
--- a/mysql-test/suite/multi_source/info_logs.test
+++ b/mysql-test/suite/multi_source/info_logs.test
@@ -30,7 +30,8 @@
eval change master 'master1' to
master_port=$SERVER_MYPORT_1,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave 'master1';
set default_master_connection = 'master1';
@@ -54,7 +55,8 @@ set default_master_connection = 'master1';
eval change master 'MASTER 2.2' to
master_port=$SERVER_MYPORT_2,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave 'MASTER 2.2';
set default_master_connection = 'MASTER 2.2';
@@ -107,7 +109,8 @@ set default_master_connection = '';
eval change master to
master_port=$SERVER_MYPORT_1,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave;
--source include/wait_for_slave_to_start.inc
diff --git a/mysql-test/suite/multi_source/mdev-8874.result b/mysql-test/suite/multi_source/mdev-8874.result
index aa9cc39b403..12bc251f4e2 100644
--- a/mysql-test/suite/multi_source/mdev-8874.result
+++ b/mysql-test/suite/multi_source/mdev-8874.result
@@ -24,9 +24,9 @@ insert into t1 values(1);
create table t2(a int);
insert into t2 values(1);
connection server_4;
-change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root';
-change master 'm2' to master_port=MYPORT_2 , master_host='127.0.0.1', master_user='root';
-change master to master_port=MYPORT_3 , master_host='127.0.0.1', master_user='root';
+change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
+change master 'm2' to master_port=MYPORT_2 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
+change master to master_port=MYPORT_3 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
start all slaves;
set default_master_connection = 'm1';
include/wait_for_slave_to_start.inc
@@ -65,14 +65,20 @@ Note 1938 SLAVE 'm2' stopped
Note 1938 SLAVE '' stopped
Note 1938 SLAVE 'm1' stopped
RESET SLAVE 'm1' ALL ;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
RESET SLAVE 'm2' ALL ;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
RESET SLAVE ALL ;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
drop database a;
drop database b;
drop database c;
-change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root';
-change master 'm2' to master_port=MYPORT_2 , master_host='127.0.0.1', master_user='root';
-change master to master_port=MYPORT_3 , master_host='127.0.0.1', master_user='root';
+change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
+change master 'm2' to master_port=MYPORT_2 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
+change master to master_port=MYPORT_3 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
start all slaves;
Warnings:
Note 1937 SLAVE 'm2' started
@@ -124,3 +130,6 @@ SET default_master_connection = "m2";
include/wait_for_slave_to_stop.inc
SET default_master_connection = "";
include/wait_for_slave_to_stop.inc
+RESET SLAVE ALL;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
diff --git a/mysql-test/suite/multi_source/mdev-8874.test b/mysql-test/suite/multi_source/mdev-8874.test
index d03c255b911..1a99ae73d9b 100644
--- a/mysql-test/suite/multi_source/mdev-8874.test
+++ b/mysql-test/suite/multi_source/mdev-8874.test
@@ -40,11 +40,11 @@ insert into t2 values(1);
--connection server_4
--disable_warnings
--replace_result $SERVER_MYPORT_1 MYPORT_1
-eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root';
+eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
--replace_result $SERVER_MYPORT_2 MYPORT_2
-eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root';
+eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
--replace_result $SERVER_MYPORT_3 MYPORT_3
-eval change master to master_port=$SERVER_MYPORT_3 , master_host='127.0.0.1', master_user='root';
+eval change master to master_port=$SERVER_MYPORT_3 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
start all slaves;
set default_master_connection = 'm1';
--source include/wait_for_slave_to_start.inc
@@ -78,11 +78,11 @@ drop database a;
drop database b;
drop database c;
--replace_result $SERVER_MYPORT_1 MYPORT_1
-eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root';
+eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
--replace_result $SERVER_MYPORT_2 MYPORT_2
-eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root';
+eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
--replace_result $SERVER_MYPORT_3 MYPORT_3
-eval change master to master_port=$SERVER_MYPORT_3 , master_host='127.0.0.1', master_user='root';
+eval change master to master_port=$SERVER_MYPORT_3 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
start all slaves;
set default_master_connection = 'm1';
--source include/wait_for_slave_to_start.inc
@@ -139,3 +139,4 @@ SET default_master_connection = "m2";
--source include/wait_for_slave_to_stop.inc
SET default_master_connection = "";
--source include/wait_for_slave_to_stop.inc
+RESET SLAVE ALL;
diff --git a/mysql-test/suite/multi_source/mdev-9544.result b/mysql-test/suite/multi_source/mdev-9544.result
index 42e6b6a9f56..452964fd862 100644
--- a/mysql-test/suite/multi_source/mdev-9544.result
+++ b/mysql-test/suite/multi_source/mdev-9544.result
@@ -24,9 +24,9 @@ insert into t1 values(1);
create table t2(a int);
insert into t2 values(1);
connection server_4;
-change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root';
-change master 'm2' to master_port=MYPORT_2 , master_host='127.0.0.1', master_user='root';
-change master to master_port=MYPORT_3 , master_host='127.0.0.1', master_user='root';
+change master 'm1' to master_port=MYPORT_1 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
+change master 'm2' to master_port=MYPORT_2 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
+change master to master_port=MYPORT_3 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
start all slaves;
set default_master_connection = 'm1';
include/wait_for_slave_to_start.inc
@@ -88,3 +88,6 @@ SET default_master_connection = "m2";
include/wait_for_slave_to_stop.inc
SET default_master_connection = "";
include/wait_for_slave_to_stop.inc
+change master to master_use_gtid=slave_pos;
+change master 'm1' to master_use_gtid=slave_pos;
+change master 'm2' to master_use_gtid=slave_pos;
diff --git a/mysql-test/suite/multi_source/mdev-9544.test b/mysql-test/suite/multi_source/mdev-9544.test
index f532a63a585..fd89bdfa744 100644
--- a/mysql-test/suite/multi_source/mdev-9544.test
+++ b/mysql-test/suite/multi_source/mdev-9544.test
@@ -37,11 +37,11 @@ insert into t2 values(1);
--connection server_4
--disable_warnings
--replace_result $SERVER_MYPORT_1 MYPORT_1
-eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root';
+eval change master 'm1' to master_port=$SERVER_MYPORT_1 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
--replace_result $SERVER_MYPORT_2 MYPORT_2
-eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root';
+eval change master 'm2' to master_port=$SERVER_MYPORT_2 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
--replace_result $SERVER_MYPORT_3 MYPORT_3
-eval change master to master_port=$SERVER_MYPORT_3 , master_host='127.0.0.1', master_user='root';
+eval change master to master_port=$SERVER_MYPORT_3 , master_host='127.0.0.1', master_user='root', master_use_gtid=no;
start all slaves;
set default_master_connection = 'm1';
--source include/wait_for_slave_to_start.inc
@@ -114,3 +114,7 @@ SET default_master_connection = "m2";
SET default_master_connection = "";
--source include/wait_for_slave_to_stop.inc
+# Reset for check-testcase
+change master to master_use_gtid=slave_pos;
+change master 'm1' to master_use_gtid=slave_pos;
+change master 'm2' to master_use_gtid=slave_pos;
diff --git a/mysql-test/suite/multi_source/multi_source_slave_alias_replica.result b/mysql-test/suite/multi_source/multi_source_slave_alias_replica.result
index b1aa31d059a..25cd85d7018 100644
--- a/mysql-test/suite/multi_source/multi_source_slave_alias_replica.result
+++ b/mysql-test/suite/multi_source/multi_source_slave_alias_replica.result
@@ -64,7 +64,7 @@ Replicate_Ignore_Server_Ids
Master_Server_Id 1
Master_SSL_Crl
Master_SSL_Crlpath
-Using_Gtid No
+Using_Gtid Slave_Pos
Gtid_IO_Pos
Replicate_Do_Domain_Ids
Replicate_Ignore_Domain_Ids
@@ -125,7 +125,7 @@ Replicate_Ignore_Server_Ids
Master_Server_Id 2
Master_SSL_Crl
Master_SSL_Crlpath
-Using_Gtid No
+Using_Gtid Slave_Pos
Gtid_IO_Pos
Replicate_Do_Domain_Ids
Replicate_Ignore_Domain_Ids
diff --git a/mysql-test/suite/multi_source/multisource.result b/mysql-test/suite/multi_source/multisource.result
index ad1f2e24f9e..4b53b4653cd 100644
--- a/mysql-test/suite/multi_source/multisource.result
+++ b/mysql-test/suite/multi_source/multisource.result
@@ -99,7 +99,8 @@ set default_master_connection = '';
change master to
master_port=MYPORT_2,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave;
include/wait_for_slave_to_start.inc
#
diff --git a/mysql-test/suite/multi_source/multisource_for_channel.result b/mysql-test/suite/multi_source/multisource_for_channel.result
index cb1224b416f..9b4efae09b5 100644
--- a/mysql-test/suite/multi_source/multisource_for_channel.result
+++ b/mysql-test/suite/multi_source/multisource_for_channel.result
@@ -7,7 +7,8 @@ ERROR HY000: Incorrect arguments to MASTER_HOST
change master to
master_port=MYPORT_1,
master_host='127.0.0.1',
-master_user='root'
+master_user='root',
+master_use_gtid=no
for channel 'master1';
start slave for channel 'master1';
set default_master_connection = 'master1';
@@ -102,7 +103,8 @@ set default_master_connection = '';
change master to
master_port=MYPORT_2,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave;
include/wait_for_slave_to_start.inc
#
@@ -322,6 +324,8 @@ Last_SQL_Errno = '0'
# reset slave
#
RESET SLAVE for channel 'master1';
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
show slave status for channel 'master1'
Master_Port = 'MYPORT_1'
diff --git a/mysql-test/suite/multi_source/multisource_for_channel.test b/mysql-test/suite/multi_source/multisource_for_channel.test
index a95b272d5b1..b3feb4b9da6 100644
--- a/mysql-test/suite/multi_source/multisource_for_channel.test
+++ b/mysql-test/suite/multi_source/multisource_for_channel.test
@@ -29,7 +29,8 @@ change master to master_host='' for channel 'abc2';
eval change master to
master_port=$SERVER_MYPORT_1,
master_host='127.0.0.1',
-master_user='root'
+master_user='root',
+master_use_gtid=no
for channel 'master1';
start slave for channel 'master1';
@@ -154,7 +155,8 @@ set default_master_connection = '';
eval change master to
master_port=$SERVER_MYPORT_2,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave;
--source include/wait_for_slave_to_start.inc
diff --git a/mysql-test/suite/multi_source/reset_slave.result b/mysql-test/suite/multi_source/reset_slave.result
index c048784e28d..a55a6ec235f 100644
--- a/mysql-test/suite/multi_source/reset_slave.result
+++ b/mysql-test/suite/multi_source/reset_slave.result
@@ -14,14 +14,14 @@ connection slave;
stop slave 'master1';
show slave 'master1' status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error Replicate_Ignore_Server_Ids Master_Server_Id Master_SSL_Crl Master_SSL_Crlpath Using_Gtid Gtid_IO_Pos Replicate_Do_Domain_Ids Replicate_Ignore_Domain_Ids Parallel_Mode SQL_Delay SQL_Remaining_Delay Slave_SQL_Running_State Slave_DDL_Groups Slave_Non_Transactional_Groups Slave_Transactional_Groups
- 127.0.0.1 root MYPORT_1 60 master-bin.000001 <read_master_log_pos> mysqld-relay-bin-master1.000002 <relay_log_pos> master-bin.000001 No No 0 0 <read_master_log_pos> <relay_log_space> None 0 No NULL No 0 0 1 No optimistic 0 NULL 2 1 0
+ 127.0.0.1 root MYPORT_1 60 master-bin.000001 <read_master_log_pos> mysqld-relay-bin-master1.000002 <relay_log_pos> master-bin.000001 No No 0 0 <read_master_log_pos> <relay_log_space> None 0 No NULL No 0 0 1 Slave_Pos 0-1-3 optimistic 0 NULL 2 1 0
mysqld-relay-bin-master1.000001
mysqld-relay-bin-master1.000002
mysqld-relay-bin-master1.index
reset slave 'master1';
show slave 'master1' status;
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error Replicate_Ignore_Server_Ids Master_Server_Id Master_SSL_Crl Master_SSL_Crlpath Using_Gtid Gtid_IO_Pos Replicate_Do_Domain_Ids Replicate_Ignore_Domain_Ids Parallel_Mode SQL_Delay SQL_Remaining_Delay Slave_SQL_Running_State Slave_DDL_Groups Slave_Non_Transactional_Groups Slave_Transactional_Groups
- 127.0.0.1 root MYPORT_1 60 4 <relay_log_pos> No No 0 0 0 <relay_log_space> None 0 No NULL No 0 0 1 No optimistic 0 NULL 2 1 0
+ 127.0.0.1 root MYPORT_1 60 4 <relay_log_pos> No No 0 0 0 <relay_log_space> None 0 No NULL No 0 0 1 Slave_Pos optimistic 0 NULL 2 1 0
reset slave 'master1' all;
show slave 'master1' status;
ERROR HY000: There is no master connection 'master1'
diff --git a/mysql-test/suite/multi_source/simple.result b/mysql-test/suite/multi_source/simple.result
index 191cd0a1a0f..5a167907b3b 100644
--- a/mysql-test/suite/multi_source/simple.result
+++ b/mysql-test/suite/multi_source/simple.result
@@ -62,7 +62,7 @@ Replicate_Ignore_Server_Ids
Master_Server_Id 1
Master_SSL_Crl
Master_SSL_Crlpath
-Using_Gtid No
+Using_Gtid Slave_Pos
Gtid_IO_Pos
Replicate_Do_Domain_Ids
Replicate_Ignore_Domain_Ids
@@ -123,7 +123,7 @@ Replicate_Ignore_Server_Ids
Master_Server_Id 2
Master_SSL_Crl
Master_SSL_Crlpath
-Using_Gtid No
+Using_Gtid Slave_Pos
Gtid_IO_Pos
Replicate_Do_Domain_Ids
Replicate_Ignore_Domain_Ids
@@ -148,7 +148,7 @@ CHANNEL_NAME slave2
HOST 127.0.0.1
PORT #
USER root
-USING_GTID NO
+USING_GTID SLAVE_POS
SSL_ALLOWED NO
SSL_CA_FILE
SSL_CA_PATH
@@ -168,7 +168,7 @@ CHANNEL_NAME slave1
HOST 127.0.0.1
PORT #
USER root
-USING_GTID NO
+USING_GTID SLAVE_POS
SSL_ALLOWED NO
SSL_CA_FILE
SSL_CA_PATH
@@ -249,7 +249,7 @@ Replicate_Ignore_Server_Ids
Master_Server_Id 1
Master_SSL_Crl
Master_SSL_Crlpath
-Using_Gtid No
+Using_Gtid Slave_Pos
Gtid_IO_Pos
Replicate_Do_Domain_Ids
Replicate_Ignore_Domain_Ids
@@ -306,7 +306,7 @@ Replicate_Ignore_Server_Ids
Master_Server_Id 1
Master_SSL_Crl
Master_SSL_Crlpath
-Using_Gtid No
+Using_Gtid Slave_Pos
Gtid_IO_Pos
Replicate_Do_Domain_Ids
Replicate_Ignore_Domain_Ids
@@ -367,7 +367,7 @@ Replicate_Ignore_Server_Ids
Master_Server_Id 2
Master_SSL_Crl
Master_SSL_Crlpath
-Using_Gtid No
+Using_Gtid Slave_Pos
Gtid_IO_Pos
Replicate_Do_Domain_Ids
Replicate_Ignore_Domain_Ids
@@ -430,7 +430,7 @@ Replicate_Ignore_Server_Ids
Master_Server_Id 2
Master_SSL_Crl
Master_SSL_Crlpath
-Using_Gtid No
+Using_Gtid Slave_Pos
Gtid_IO_Pos
Replicate_Do_Domain_Ids
Replicate_Ignore_Domain_Ids
@@ -495,7 +495,7 @@ Replicate_Ignore_Server_Ids
Master_Server_Id 2
Master_SSL_Crl
Master_SSL_Crlpath
-Using_Gtid No
+Using_Gtid Slave_Pos
Gtid_IO_Pos
Replicate_Do_Domain_Ids
Replicate_Ignore_Domain_Ids
diff --git a/mysql-test/suite/multi_source/skip_counter.result b/mysql-test/suite/multi_source/skip_counter.result
index 03103af21b9..4573d54ca38 100644
--- a/mysql-test/suite/multi_source/skip_counter.result
+++ b/mysql-test/suite/multi_source/skip_counter.result
@@ -12,7 +12,8 @@ connect slave,127.0.0.1,root,,,$SERVER_MYPORT_3;
change master 'master1' to
master_port=MYPORT_1,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave 'master1';
set default_master_connection = 'master1';
include/wait_for_slave_to_start.inc
@@ -20,7 +21,8 @@ set default_master_connection = 'master2';
change master 'master2' to
master_port=MYPORT_2,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
set global sql_slave_skip_counter = 2;
select @@global.sql_slave_skip_counter;
@@global.sql_slave_skip_counter
diff --git a/mysql-test/suite/multi_source/skip_counter.test b/mysql-test/suite/multi_source/skip_counter.test
index e53d0276a91..e89480f55c5 100644
--- a/mysql-test/suite/multi_source/skip_counter.test
+++ b/mysql-test/suite/multi_source/skip_counter.test
@@ -38,7 +38,8 @@ create table db.t3 (i int) engine=MyISAM;
eval change master 'master1' to
master_port=$SERVER_MYPORT_1,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave 'master1';
set default_master_connection = 'master1';
@@ -53,7 +54,8 @@ set default_master_connection = 'master2';
eval change master 'master2' to
master_port=$SERVER_MYPORT_2,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
# the schema creation will be replicated from the 1st master,
# so we want to skip it in the second replication connection
diff --git a/mysql-test/suite/parts/r/rpl_partition.result b/mysql-test/suite/parts/r/rpl_partition.result
index 0ec36a2c72a..6378e0ef834 100644
--- a/mysql-test/suite/parts/r/rpl_partition.result
+++ b/mysql-test/suite/parts/r/rpl_partition.result
@@ -128,7 +128,7 @@ show create table t3;
Table t3
Create Table CREATE TABLE `t3` (
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
- `dt` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `dt` timestamp NULL DEFAULT NULL,
`user` char(255) DEFAULT NULL,
`uuidf` longblob DEFAULT NULL,
`fkid` mediumint(9) DEFAULT NULL,
diff --git a/mysql-test/suite/perfschema/r/digest_view.result b/mysql-test/suite/perfschema/r/digest_view.result
index a5996cc0083..3fd7a090459 100644
--- a/mysql-test/suite/perfschema/r/digest_view.result
+++ b/mysql-test/suite/perfschema/r/digest_view.result
@@ -191,17 +191,17 @@ SELECT SCHEMA_NAME, DIGEST, DIGEST_TEXT, COUNT_STAR
FROM performance_schema.events_statements_summary_by_digest
ORDER BY DIGEST_TEXT;
SCHEMA_NAME DIGEST DIGEST_TEXT COUNT_STAR
-test 27a9ab161a63050c84a63c6f77ebeb33 EXPLAIN SELECT * FROM `test` . `v1` 1
-test ab0ab27c04f3a294feb86bede4331f86 EXPLAIN SELECT * FROM `test` . `v1` WHERE `a` = ? 1
-test 2e722346a5c2ef820946bcd04ccac208 EXPLAIN SELECT * FROM `test` . `v1` WHERE `b` > ? 1
-test 07baf2264db30b6b25302603436ebe82 EXPLAIN SELECT `a` , `b` FROM `test` . `v1` 1
-test 3a7dbc963635ab0de6e160e0a4212bce EXPLAIN SELECT `b` , `a` FROM `test` . `v1` 1
-test 6b845c2e3a7421997e3b610d14b5c842 SELECT * FROM `test` . `v1` 1
-test cb2ee099edbf6e0e5ee6ae14f3b1498a SELECT * FROM `test` . `v1` WHERE `a` = ? 1
-test e2dc5a300d2ba54ebb987a2ca6b90d93 SELECT * FROM `test` . `v1` WHERE `b` > ? 1
-test c68e0f99323f7bb7732c7b5cf32c0ec2 SELECT `a` , `b` FROM `test` . `v1` 1
-test 43c5de955c9a72d2bb6f49db5c0ad3e7 SELECT `b` , `a` FROM `test` . `v1` 1
-test 1678258ba15f7ccc63fd7b833763914a TRUNCATE TABLE `performance_schema` . `events_statements_summary_by_digest` 1
+test 333a53e537d74bf74dd28c78ad5b23dd EXPLAIN SELECT * FROM `test` . `v1` 1
+test 1fb578da66e6583bae8e64061486f1b1 EXPLAIN SELECT * FROM `test` . `v1` WHERE `a` = ? 1
+test 923bca939a55826e231e1335016ba418 EXPLAIN SELECT * FROM `test` . `v1` WHERE `b` > ? 1
+test 6fa6d75432fd499d1c7d6f964c8310a2 EXPLAIN SELECT `a` , `b` FROM `test` . `v1` 1
+test 3421da1ec8ecb8cac97e12a0609f73cb EXPLAIN SELECT `b` , `a` FROM `test` . `v1` 1
+test c2f68fd41bfbf3acd52eb5e7306b0c00 SELECT * FROM `test` . `v1` 1
+test dd68812cbe4c1ed5a38921222981f8c5 SELECT * FROM `test` . `v1` WHERE `a` = ? 1
+test 7563bcc32c6d0d872c8d9f0bf7717e6a SELECT * FROM `test` . `v1` WHERE `b` > ? 1
+test 0817c53833dc6adbca581e8fe4c598c7 SELECT `a` , `b` FROM `test` . `v1` 1
+test a5f13903c70812ae08fa8c084e9cd503 SELECT `b` , `a` FROM `test` . `v1` 1
+test 66b14a14f2a42e1335dd28dfad8ea084 TRUNCATE TABLE `performance_schema` . `events_statements_summary_by_digest` 1
DROP TABLE test.v1;
CREATE VIEW test.v1 AS SELECT * FROM test.t1;
EXPLAIN SELECT * from test.v1;
@@ -248,19 +248,19 @@ SELECT SCHEMA_NAME, DIGEST, DIGEST_TEXT, COUNT_STAR
FROM performance_schema.events_statements_summary_by_digest
ORDER BY DIGEST_TEXT;
SCHEMA_NAME DIGEST DIGEST_TEXT COUNT_STAR
-test 342cd5e41944d5f857f92b1e374857de CREATE VIEW `test` . `v1` AS SELECT * FROM `test` . `t1` 1
-test 2653f30030efcb6125121daa8eadf418 DROP TABLE `test` . `v1` 1
-test 27a9ab161a63050c84a63c6f77ebeb33 EXPLAIN SELECT * FROM `test` . `v1` 2
-test ab0ab27c04f3a294feb86bede4331f86 EXPLAIN SELECT * FROM `test` . `v1` WHERE `a` = ? 2
-test 2e722346a5c2ef820946bcd04ccac208 EXPLAIN SELECT * FROM `test` . `v1` WHERE `b` > ? 2
-test 07baf2264db30b6b25302603436ebe82 EXPLAIN SELECT `a` , `b` FROM `test` . `v1` 2
-test 3a7dbc963635ab0de6e160e0a4212bce EXPLAIN SELECT `b` , `a` FROM `test` . `v1` 2
-test 6b845c2e3a7421997e3b610d14b5c842 SELECT * FROM `test` . `v1` 2
-test cb2ee099edbf6e0e5ee6ae14f3b1498a SELECT * FROM `test` . `v1` WHERE `a` = ? 2
-test e2dc5a300d2ba54ebb987a2ca6b90d93 SELECT * FROM `test` . `v1` WHERE `b` > ? 2
-test a13cfeda6d474d29546719d76dcfa831 SELECT SCHEMA_NAME , `DIGEST` , `DIGEST_TEXT` , `COUNT_STAR` FROM `performance_schema` . `events_statements_summary_by_digest` ORDER BY `DIGEST_TEXT` 1
-test c68e0f99323f7bb7732c7b5cf32c0ec2 SELECT `a` , `b` FROM `test` . `v1` 2
-test 43c5de955c9a72d2bb6f49db5c0ad3e7 SELECT `b` , `a` FROM `test` . `v1` 2
-test 1678258ba15f7ccc63fd7b833763914a TRUNCATE TABLE `performance_schema` . `events_statements_summary_by_digest` 1
+test 98531b331031b84ddfbb2de8b601a704 CREATE VIEW `test` . `v1` AS SELECT * FROM `test` . `t1` 1
+test 5352d7d117e97fecd312e354e9e290ce DROP TABLE `test` . `v1` 1
+test 333a53e537d74bf74dd28c78ad5b23dd EXPLAIN SELECT * FROM `test` . `v1` 2
+test 1fb578da66e6583bae8e64061486f1b1 EXPLAIN SELECT * FROM `test` . `v1` WHERE `a` = ? 2
+test 923bca939a55826e231e1335016ba418 EXPLAIN SELECT * FROM `test` . `v1` WHERE `b` > ? 2
+test 6fa6d75432fd499d1c7d6f964c8310a2 EXPLAIN SELECT `a` , `b` FROM `test` . `v1` 2
+test 3421da1ec8ecb8cac97e12a0609f73cb EXPLAIN SELECT `b` , `a` FROM `test` . `v1` 2
+test c2f68fd41bfbf3acd52eb5e7306b0c00 SELECT * FROM `test` . `v1` 2
+test dd68812cbe4c1ed5a38921222981f8c5 SELECT * FROM `test` . `v1` WHERE `a` = ? 2
+test 7563bcc32c6d0d872c8d9f0bf7717e6a SELECT * FROM `test` . `v1` WHERE `b` > ? 2
+test 21c19dd7ef5b894f3e32d0585cb3007f SELECT SCHEMA_NAME , `DIGEST` , `DIGEST_TEXT` , `COUNT_STAR` FROM `performance_schema` . `events_statements_summary_by_digest` ORDER BY `DIGEST_TEXT` 1
+test 0817c53833dc6adbca581e8fe4c598c7 SELECT `a` , `b` FROM `test` . `v1` 2
+test a5f13903c70812ae08fa8c084e9cd503 SELECT `b` , `a` FROM `test` . `v1` 2
+test 66b14a14f2a42e1335dd28dfad8ea084 TRUNCATE TABLE `performance_schema` . `events_statements_summary_by_digest` 1
DROP VIEW test.v1;
DROP TABLE test.t1;
diff --git a/mysql-test/suite/perfschema/r/start_server_low_digest_sql_length.result b/mysql-test/suite/perfschema/r/start_server_low_digest_sql_length.result
index 13b51569b60..ff554155f33 100644
--- a/mysql-test/suite/perfschema/r/start_server_low_digest_sql_length.result
+++ b/mysql-test/suite/perfschema/r/start_server_low_digest_sql_length.result
@@ -8,5 +8,5 @@ SELECT 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
####################################
SELECT event_name, digest, digest_text, sql_text FROM events_statements_history_long;
event_name digest digest_text sql_text
-statement/sql/select 1fd0cdb6b5aa22bd0809a39b2dc2ac70 SELECT ? + ? + SELECT ...
-statement/sql/truncate 0a9c405cebde6df4be315dae86ff398a TRUNCATE TABLE truncat...
+statement/sql/select 96a6bb95edaf100857f09c968aca354b SELECT ? + ? + SELECT ...
+statement/sql/truncate c1d647bb870f2c63c22a16707bb8aee3 TRUNCATE TABLE truncat...
diff --git a/mysql-test/suite/perfschema/t/show_sanity.test b/mysql-test/suite/perfschema/t/show_sanity.test
index 171bbfa8bd6..3ca88b556f8 100644
--- a/mysql-test/suite/perfschema/t/show_sanity.test
+++ b/mysql-test/suite/perfschema/t/show_sanity.test
@@ -496,7 +496,6 @@ insert into test.sanity values
("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_UNDO_LOG_TRUNCATE"),
("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_UNDO_TABLESPACES"),
("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_USE_NATIVE_AIO"),
- ("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_VERSION"),
("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INNODB_WRITE_IO_THREADS"),
("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "INTERNAL_TMP_DISK_STORAGE_ENGINE"),
("JUNK: GLOBAL-ONLY", "I_S.SESSION_VARIABLES", "KEY_BUFFER_SIZE"),
diff --git a/mysql-test/suite/period/r/create.result b/mysql-test/suite/period/r/create.result
index e5fa2d1797d..ad9985d792e 100644
--- a/mysql-test/suite/period/r/create.result
+++ b/mysql-test/suite/period/r/create.result
@@ -16,8 +16,8 @@ show create table t;
Table Create Table
t CREATE TABLE `t` (
`id` int(11) NOT NULL,
- `s` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
- `e` timestamp(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',
+ `s` timestamp(6) NOT NULL,
+ `e` timestamp(6) NOT NULL,
PERIOD FOR `mytime` (`s`, `e`),
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
diff --git a/mysql-test/suite/plugins/r/test_sql_service.result b/mysql-test/suite/plugins/r/test_sql_service.result
index e5f09b67b6b..2983da28cc9 100644
--- a/mysql-test/suite/plugins/r/test_sql_service.result
+++ b/mysql-test/suite/plugins/r/test_sql_service.result
@@ -67,7 +67,7 @@ set global test_sql_service_execute_sql_global= 'drop table test.t1';
show status like 'test_sql_query_result';
Variable_name Value
Test_sql_query_result Error 1051 returned. Unknown table 'test.t1'
-create table t1 (id int, time timestamp);
+create table t1 (id int, time timestamp not null default now());
insert into t1 values (1, NULL), (2, NULL), (3, NULL), (4, NULL), (5, NULL);
set global test_sql_service_execute_sql_global= 'select * FROM test.t1 WHERE time < DATE_SUB(NOW(), interval 5 minute)';
show status like 'test_sql_query_result';
diff --git a/mysql-test/suite/plugins/t/test_sql_service.test b/mysql-test/suite/plugins/t/test_sql_service.test
index 0a45cb663f4..2f53c1d5b3e 100644
--- a/mysql-test/suite/plugins/t/test_sql_service.test
+++ b/mysql-test/suite/plugins/t/test_sql_service.test
@@ -61,7 +61,7 @@ show status like 'test_sql_query_result';
set global test_sql_service_execute_sql_global= 'drop table test.t1';
show status like 'test_sql_query_result';
-create table t1 (id int, time timestamp);
+create table t1 (id int, time timestamp not null default now());
insert into t1 values (1, NULL), (2, NULL), (3, NULL), (4, NULL), (5, NULL);
set global test_sql_service_execute_sql_global= 'select * FROM test.t1 WHERE time < DATE_SUB(NOW(), interval 5 minute)';
show status like 'test_sql_query_result';
diff --git a/mysql-test/suite/rpl/include/multisource.inc b/mysql-test/suite/rpl/include/multisource.inc
index 7a2d9ea79b2..96c4a9aa348 100644
--- a/mysql-test/suite/rpl/include/multisource.inc
+++ b/mysql-test/suite/rpl/include/multisource.inc
@@ -159,7 +159,8 @@ set default_master_connection = '';
eval change master to
master_port=$SERVER_MYPORT_2,
master_host='127.0.0.1',
-master_user='root';
+master_user='root',
+master_use_gtid=no;
start slave;
--source include/wait_for_slave_to_start.inc
diff --git a/mysql-test/suite/rpl/include/rpl_binlog_errors.inc b/mysql-test/suite/rpl/include/rpl_binlog_errors.inc
index bf92736a2af..ab95c9b4ee3 100644
--- a/mysql-test/suite/rpl/include/rpl_binlog_errors.inc
+++ b/mysql-test/suite/rpl/include/rpl_binlog_errors.inc
@@ -389,6 +389,11 @@ RESET MASTER;
--source include/rpl_reset.inc
-- connection slave
+# Slave tests rely on logic of non-gtid mode
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
# slave suppressions
call mtr.add_suppression("Slave I/O: Relay log write failure: could not queue event from master.*");
diff --git a/mysql-test/suite/rpl/include/rpl_binlog_max_cache_size.test b/mysql-test/suite/rpl/include/rpl_binlog_max_cache_size.test
index d750554b4ec..2634a6027a3 100644
--- a/mysql-test/suite/rpl/include/rpl_binlog_max_cache_size.test
+++ b/mysql-test/suite/rpl/include/rpl_binlog_max_cache_size.test
@@ -21,6 +21,13 @@
# and slave are diverging.
#
########################################################################################
+
+--connection slave
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+--connection master
+
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
call mtr.add_suppression("Write to binary log failed: Multi-row statements required more than .max_binlog_stmt_cache_size");
call mtr.add_suppression("Write to binary log failed: Multi-statement transaction required more than .max_binlog_cache_size");
diff --git a/mysql-test/suite/rpl/include/rpl_cant_read_event_incident.inc b/mysql-test/suite/rpl/include/rpl_cant_read_event_incident.inc
index 7dfef023947..7c1d0ea25e2 100644
--- a/mysql-test/suite/rpl/include/rpl_cant_read_event_incident.inc
+++ b/mysql-test/suite/rpl/include/rpl_cant_read_event_incident.inc
@@ -22,6 +22,10 @@
--source include/master-slave.inc
--connection slave
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
# Make sure the slave is stopped while we are messing with master.
# Otherwise we get occasional failures as the slave manages to re-connect
# to the newly started master and we get extra events applied, causing
@@ -49,7 +53,8 @@ show binlog events;
--connection slave
call mtr.add_suppression("Slave I/O: Got fatal error 1236 from master when reading data from binary log");
-reset slave;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
start slave;
# ER_MASTER_FATAL_ERROR_READING_BINLOG 1236
diff --git a/mysql-test/suite/rpl/include/rpl_change_master_demote.inc b/mysql-test/suite/rpl/include/rpl_change_master_demote.inc
new file mode 100644
index 00000000000..4c563454a5b
--- /dev/null
+++ b/mysql-test/suite/rpl/include/rpl_change_master_demote.inc
@@ -0,0 +1,89 @@
+#
+# This file tests that a master can be demoted to a slave using
+# CHANGE MASTER TO MASTER_DEMOTE_TO_SLAVE=1 and replication will work correctly
+# afterwards.
+#
+# param $ignore_domain_ids : List of GTID domain ids to use for
+# CHANGE MASTER TO IGNORE_DOMAIN_IDS
+#
+
+--let $include_filename= rpl_change_master_demote.inc
+--source include/begin_include_file.inc
+
+--echo ##############################################
+--echo # Connection semantics change:
+--echo # * True primary is now connection 'slave'
+--echo # * True replica is now connection 'master'
+--echo ##############################################
+
+--connection master
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+
+--let $extra_cm_args=
+if (`SELECT strcmp("$ignore_domain_ids","") != 0`)
+{
+ --let $extra_cm_args=, ignore_domain_ids=($ignore_domain_ids)
+}
+
+--echo # First ensure gtid_slave_pos after master_demote_to_slave matches
+--echo # gtid_current_pos calculation
+--let $current_pos= `SELECT @@gtid_current_pos`
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SLAVE_MYPORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1 $extra_cm_args
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+--let $slave_pos= `SELECT @@gtid_slave_pos`
+--echo # Validating gtid_slave_pos == gtid_binlog_pos..
+if ($slave_pos != $current_pos)
+{
+ SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+ die gtid_slave_pos calculation after master_demote_to_slave=1 differs from gtid_current_pos;
+}
+--echo # ..success
+
+--source include/start_slave.inc
+
+--connection slave
+--source include/stop_slave.inc
+
+--echo # Ensuring replication works correctly after role swap
+--connection slave
+set session gtid_domain_id= 0;
+CREATE TABLE repl_t (a int);
+INSERT INTO repl_t VALUES (1);
+--source include/save_master_gtid.inc
+
+--connection master
+--source include/sync_with_master_gtid.inc
+--echo # Validating that replication works..
+--let $n_replicated_rows= query_get_value(SELECT COUNT(*) FROM repl_t, COUNT(*), 1)
+if ($n_replicated_rows != 1)
+{
+ die "Replication is broken";
+}
+--echo # ..success
+
+--echo # Cleaning up replication check data
+--connection slave
+DROP TABLE repl_t;
+--source include/save_master_gtid.inc
+
+--connection master
+--source include/sync_with_master_gtid.inc
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+
+--echo ##############################################
+--echo # Connection semantics change:
+--echo # * True primary is back to connection 'master'
+--echo # * True replica is back to connection 'slave'
+--echo ##############################################
+
+--connection master
+--source include/stop_slave.inc
+
+--connection slave
+--replace_result $MASTER_MYPORT MASTER_PORT
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$MASTER_MYPORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1
+--source include/start_slave.inc
+
+--let $include_filename= rpl_change_master_demote.inc
+--source include/end_include_file.inc
diff --git a/mysql-test/suite/rpl/include/rpl_checksum.inc b/mysql-test/suite/rpl/include/rpl_checksum.inc
index 17a986dc308..fc765744b3f 100644
--- a/mysql-test/suite/rpl/include/rpl_checksum.inc
+++ b/mysql-test/suite/rpl/include/rpl_checksum.inc
@@ -11,6 +11,12 @@
--source include/have_binlog_format_mixed.inc
--source include/master-slave.inc
+--connection slave
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
+--connection master
call mtr.add_suppression('Slave can not handle replication events with the checksum that master is configured to log');
call mtr.add_suppression('Replication event checksum verification failed');
# due to C failure simulation
@@ -196,7 +202,8 @@ select count(*) as 'must be zero' from t2;
#
connection slave;
stop slave;
-reset slave;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
# randomize slave server's own checksum policy
set @@global.binlog_checksum= IF(floor((rand()*1000)%2), "CRC32", "NONE");
diff --git a/mysql-test/suite/rpl/include/rpl_corruption.inc b/mysql-test/suite/rpl/include/rpl_corruption.inc
index c7a913af9d7..cd2a1cc7ef2 100644
--- a/mysql-test/suite/rpl/include/rpl_corruption.inc
+++ b/mysql-test/suite/rpl/include/rpl_corruption.inc
@@ -24,6 +24,12 @@
--source include/have_debug.inc
--source include/master-slave.inc
+--connection slave
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+--connection master
+
# Block legal errors for MTR
call mtr.add_suppression('Found invalid event in binary log');
call mtr.add_suppression('Slave I/O: Relay log write failure: could not queue event from master');
diff --git a/mysql-test/suite/rpl/include/rpl_deadlock.test b/mysql-test/suite/rpl/include/rpl_deadlock.test
index 53002d255f3..7fcf5cbd22c 100644
--- a/mysql-test/suite/rpl/include/rpl_deadlock.test
+++ b/mysql-test/suite/rpl/include/rpl_deadlock.test
@@ -88,7 +88,7 @@ connection slave;
DELETE FROM t2;
# Set slave position to the BEGIN log event
--replace_result $master_pos_begin <master_pos_begin>
-eval CHANGE MASTER TO MASTER_LOG_POS=$master_pos_begin;
+eval CHANGE MASTER TO MASTER_LOG_POS=$master_pos_begin, MASTER_USE_GTID=NO;
BEGIN;
# Hold lock
SELECT * FROM t1 FOR UPDATE;
@@ -121,7 +121,7 @@ SET global max_relay_log_size=0;
DELETE FROM t2;
# Set slave position to the BEGIN log event
--replace_result $master_pos_begin <master_pos_begin>
-eval CHANGE MASTER TO MASTER_LOG_POS=$master_pos_begin;
+eval CHANGE MASTER TO MASTER_LOG_POS=$master_pos_begin, MASTER_USE_GTID=NO;
BEGIN;
# Hold lock
SELECT * FROM t1 FOR UPDATE;
diff --git a/mysql-test/suite/rpl/include/rpl_extra_col_master.test b/mysql-test/suite/rpl/include/rpl_extra_col_master.test
index 0d397b7e3ba..a7abe69db0a 100644
--- a/mysql-test/suite/rpl/include/rpl_extra_col_master.test
+++ b/mysql-test/suite/rpl/include/rpl_extra_col_master.test
@@ -450,7 +450,7 @@ connection master;
--echo ** Stop and Reset Slave **
--echo
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
--echo
--echo ** create table slave side **
eval CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
@@ -507,7 +507,7 @@ sync_slave_with_master;
--echo
--echo *** Create t11 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
) ENGINE=$engine_type;
@@ -563,7 +563,7 @@ sync_slave_with_master;
--echo
--echo *** Create t12 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
) ENGINE=$engine_type;
@@ -614,7 +614,7 @@ sync_slave_with_master;
--echo
--echo *** Create t14 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE=$engine_type;
@@ -689,7 +689,7 @@ connection slave;
#***************************
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
--echo
--echo *** Drop t14 ***
@@ -711,7 +711,7 @@ START SLAVE;
--echo
--echo *** Create t15 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE=$engine_type;
@@ -753,7 +753,7 @@ connection slave;
--let $show_slave_sql_error= 1
--source include/wait_for_slave_sql_error.inc
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
--echo
--echo *** Drop t15 ***
@@ -775,7 +775,7 @@ START SLAVE;
--echo
--echo *** Create t16 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE=$engine_type;
@@ -830,7 +830,7 @@ connection slave;
--let $show_slave_sql_error= 1
--source include/wait_for_slave_sql_error.inc
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
--echo
--echo *** Drop t16 ***
@@ -853,7 +853,7 @@ START SLAVE;
--echo
--echo *** Create t17 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE=$engine_type;
@@ -919,7 +919,7 @@ sync_slave_with_master;
--echo
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE=$engine_type;
@@ -982,7 +982,7 @@ sync_slave_with_master;
--echo
--echo *** Create t5 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE=$engine_type;
diff --git a/mysql-test/suite/rpl/include/rpl_extra_col_slave.test b/mysql-test/suite/rpl/include/rpl_extra_col_slave.test
index a58fa85a72d..680d5724bea 100644
--- a/mysql-test/suite/rpl/include/rpl_extra_col_slave.test
+++ b/mysql-test/suite/rpl/include/rpl_extra_col_slave.test
@@ -25,7 +25,7 @@ call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]*. cannot
sync_slave_with_master;
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
SET @saved_slave_type_conversions = @@slave_type_conversions;
SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
@@ -71,7 +71,7 @@ sync_slave_with_master;
## BUG22086
--echo *** Create t2 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t2 (a INT, b INT PRIMARY KEY, c CHAR(5),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
@@ -96,7 +96,7 @@ START SLAVE;
--let $show_slave_sql_error= 1
--source include/wait_for_slave_sql_error.inc
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
SELECT * FROM t2 ORDER BY a;
connection master;
@@ -116,7 +116,7 @@ sync_slave_with_master;
####################################
--echo *** Create t3 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t3 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
@@ -161,7 +161,7 @@ sync_slave_with_master;
--echo *** Create t4 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t4 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
@@ -204,7 +204,7 @@ sync_slave_with_master;
--echo *** Create t5 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t5 (a INT PRIMARY KEY, b CHAR(5),
c FLOAT, d INT, e DOUBLE,
f DECIMAL(8,2))ENGINE=$engine_type;
@@ -249,7 +249,7 @@ sync_slave_with_master;
--echo *** Create t6 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t6 (a INT PRIMARY KEY, b CHAR(5),
c FLOAT, d INT)ENGINE=$engine_type;
@@ -307,7 +307,7 @@ DROP TABLE t6;
--echo *** Create t7 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t7 (a INT KEY, b BLOB, c CHAR(5),
d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
e CHAR(20) DEFAULT 'Extra Column Testing')
@@ -349,7 +349,7 @@ sync_slave_with_master;
###########################################
--echo *** Create t8 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t8 (a INT KEY, b BLOB, c CHAR(5),
d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
e INT)ENGINE=$engine_type;
@@ -395,7 +395,7 @@ sync_slave_with_master;
# Error reaction is up to sql_mode of the slave sql (bug#38173)
#--echo *** Create t9 on slave ***
STOP SLAVE;
- RESET SLAVE;
+ --source include/reset_slave.inc
eval CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
d TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
@@ -449,7 +449,7 @@ sync_slave_with_master;
############################################
--echo *** Create t10 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
c CHAR(5), e INT DEFAULT '1')ENGINE=$engine_type;
@@ -491,7 +491,7 @@ sync_slave_with_master;
############################################
--echo *** Create t11 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t11 (a INT KEY, b BLOB, f INT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE=$engine_type;
@@ -533,7 +533,7 @@ sync_slave_with_master;
############################################
--echo *** Create t12 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE=$engine_type;
@@ -572,7 +572,7 @@ sync_slave_with_master;
--echo *** BUG 22177 Start ***
--echo *** Create t13 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t13 (a INT KEY, b BLOB, c CHAR(5),
d INT DEFAULT '1',
e TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
@@ -620,7 +620,7 @@ sync_slave_with_master;
--echo *** Create t14 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
@@ -660,7 +660,7 @@ SELECT * FROM t14 ORDER BY c1;
--echo *** Create t14a on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t14a (c1 INT KEY, c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
@@ -690,7 +690,7 @@ sync_slave_with_master;
--replace_column 5 CURRENT_TIMESTAMP
SELECT * FROM t14a ORDER BY c1;
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
--echo *** Master Drop c5 ***
connection master;
@@ -749,7 +749,7 @@ sync_slave_with_master;
--echo *** Create t15 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t15 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT,
c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
@@ -822,7 +822,7 @@ sync_slave_with_master;
--echo *** Create t16 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t16 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT,
c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
@@ -877,7 +877,7 @@ sync_slave_with_master;
--echo *** Create t17 on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
eval CREATE TABLE t17 (a SMALLINT, b INT PRIMARY KEY, c CHAR(5),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
diff --git a/mysql-test/suite/rpl/include/rpl_flsh_tbls.test b/mysql-test/suite/rpl/include/rpl_flsh_tbls.test
index a8cec3d2a1a..491897ae1e5 100644
--- a/mysql-test/suite/rpl/include/rpl_flsh_tbls.test
+++ b/mysql-test/suite/rpl/include/rpl_flsh_tbls.test
@@ -6,6 +6,12 @@
source include/master-slave.inc;
+connection slave;
+source include/stop_slave.inc;
+change master to master_use_gtid=no;
+source include/start_slave.inc;
+connection master;
+
let $SERVER_VERSION=`select version()`;
create table t1 (a int) ENGINE=MyISAM;
diff --git a/mysql-test/suite/rpl/include/rpl_innodb_rows_counters.inc b/mysql-test/suite/rpl/include/rpl_innodb_rows_counters.inc
deleted file mode 100644
index cb51058f0ae..00000000000
--- a/mysql-test/suite/rpl/include/rpl_innodb_rows_counters.inc
+++ /dev/null
@@ -1,48 +0,0 @@
-#########################################
-# Author: Benjamin Renard benj@fb.com
-# Date: 11/15/2013
-# Purpose: Showing the difference between current innodb rows stats and the ones recorded at the beginning of the test
-# Requirements: Having @[master|slave]_[system_]rows_[read|inserted|deleted|updated] counters already created
-#########################################
-
---connection master
-
-select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select @rows_read - @master_rows_read;
-select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select @rows_updated - @master_rows_updated;
-select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select @rows_deleted - @master_rows_deleted;
-select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select @rows_inserted - @master_rows_inserted;
-
-select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select @system_rows_read - @master_system_rows_read;
-select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select @system_rows_updated - @master_system_rows_updated;
-select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select @system_rows_deleted - @master_system_rows_deleted;
-select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-select @system_rows_inserted - @master_system_rows_inserted;
-
---sync_slave_with_master
-
-select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select @rows_read - @slave_rows_read;
-select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select @rows_updated - @slave_rows_updated;
-select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select @rows_deleted - @slave_rows_deleted;
-select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select @rows_inserted - @slave_rows_inserted;
-
-select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select @system_rows_read - @slave_system_rows_read;
-select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select @system_rows_updated - @slave_system_rows_updated;
-select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select @system_rows_deleted - @slave_system_rows_deleted;
-select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-select @system_rows_inserted - @slave_system_rows_inserted;
-
---connection master
diff --git a/mysql-test/suite/rpl/include/rpl_loaddata.test b/mysql-test/suite/rpl/include/rpl_loaddata.test
index f0933c1023f..0a6d03aa837 100644
--- a/mysql-test/suite/rpl/include/rpl_loaddata.test
+++ b/mysql-test/suite/rpl/include/rpl_loaddata.test
@@ -109,7 +109,7 @@ connection slave;
# RESET SLAVE and see if error is cleared in SHOW SLAVE STATUS.
stop slave;
-reset slave;
+--source include/reset_slave.inc
--source include/check_slave_no_error.inc
# Finally, see if logging is done ok on master for a failing LOAD DATA INFILE
diff --git a/mysql-test/suite/rpl/include/rpl_parallel_29322.inc b/mysql-test/suite/rpl/include/rpl_parallel_29322.inc
index 54eb13d7f09..96d75f33fb0 100644
--- a/mysql-test/suite/rpl/include/rpl_parallel_29322.inc
+++ b/mysql-test/suite/rpl/include/rpl_parallel_29322.inc
@@ -19,7 +19,8 @@
--connection slave
--source include/stop_slave.inc
-reset slave;
+--let $master_use_gtid_option=No
+--source include/reset_slave.inc
--connection master
--let $datadir= `SELECT @@datadir`
diff --git a/mysql-test/suite/rpl/include/rpl_reset_slave.test b/mysql-test/suite/rpl/include/rpl_reset_slave.test
index e7a78f36efc..d4c9d70169b 100644
--- a/mysql-test/suite/rpl/include/rpl_reset_slave.test
+++ b/mysql-test/suite/rpl/include/rpl_reset_slave.test
@@ -11,7 +11,9 @@
-- source include/master-slave.inc
sync_slave_with_master;
--disable_query_log
+set sql_log_bin=0;
call mtr.add_suppression('Slave I/O: Get master BINLOG_CHECKSUM failed with error');
+set sql_log_bin=1;
--enable_query_log
let $status_items= Master_User, Master_Host;
source include/show_slave_status.inc;
@@ -20,7 +22,7 @@ source include/stop_slave.inc;
change master to master_user='test';
source include/show_slave_status.inc;
-reset slave;
+--source include/reset_slave.inc
source include/show_slave_status.inc;
change master to master_user='root';
@@ -31,13 +33,13 @@ source include/show_slave_status.inc;
# test of crash with temp tables & RESET SLAVE
# (test to see if RESET SLAVE clears temp tables in memory and disk)
source include/stop_slave.inc;
-reset slave;
+--source include/reset_slave.inc
source include/start_slave.inc;
connection master;
create temporary table t1 (a int);
sync_slave_with_master;
source include/stop_slave.inc;
-reset slave;
+--source include/reset_slave.inc
source include/start_slave.inc;
sync_with_master;
show status like 'slave_open_temp_tables';
@@ -51,7 +53,7 @@ sync_slave_with_master;
# clearing the status
source include/stop_slave.inc;
-reset slave;
+--source include/reset_slave.inc
source include/check_slave_no_error.inc;
#
@@ -79,7 +81,7 @@ let $slave_io_errno= 1045;
--source include/wait_for_slave_io_error.inc
--source include/stop_slave_sql.inc
-reset slave;
+--source include/reset_slave.inc
source include/check_slave_no_error.inc;
change master to master_user='root';
@@ -88,7 +90,7 @@ change master to master_user='root';
# BUG#11809016 - NO WAY TO DISCOVER AN INSTANCE IS NO LONGER A SLAVE FOLLOWING MYSQL BUG#28796
#
-reset slave;
+--source include/reset_slave.inc
--source include/start_slave.inc
--source include/stop_slave.inc
@@ -97,6 +99,7 @@ reset slave;
--let $_slave_master_port= query_get_value(SHOW SLAVE STATUS, Master_Port, 1)
reset slave all;
+set @@global.gtid_slave_pos= "";
--error ER_BAD_SLAVE
start slave;
diff --git a/mysql-test/suite/rpl/include/rpl_semi_sync.inc b/mysql-test/suite/rpl/include/rpl_semi_sync.inc
index c3cd918b5fc..720ec059350 100644
--- a/mysql-test/suite/rpl/include/rpl_semi_sync.inc
+++ b/mysql-test/suite/rpl/include/rpl_semi_sync.inc
@@ -17,9 +17,16 @@ call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
+# While 'Current_Pos' exists as an option for Using_Gtd, keeping these
+# events in the binlog will update gtid_binlog_pos, and the later calls to
+# set `@@global.gtid_slave_pos= ""` will provide warning messages with
+# inconsistent GTID values because the seq_nos are non-deterministic with
+# the masters events coming in concurrently
+set sql_log_bin=0;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");
+set sql_log_bin=1;
connection master;
# wait for dying connections (if any) to disappear
@@ -36,7 +43,7 @@ let $_connections_normal_slave= query_get_value(SHOW STATUS LIKE 'Threads_connec
--echo #
connection slave;
source include/stop_slave.inc;
-reset slave;
+--source include/reset_slave.inc
set global rpl_semi_sync_master_enabled= 0;
set global rpl_semi_sync_slave_enabled= 0;
@@ -351,7 +358,7 @@ show status like 'Rpl_semi_sync_master_yes_tx';
connection slave;
source include/stop_slave.inc;
-reset slave;
+--source include/reset_slave.inc
# Kill the dump thread on master for previous slave connection and
--source include/kill_binlog_dump_threads.inc
@@ -388,7 +395,7 @@ show status like 'Rpl_semi_sync_master_yes_tx';
--echo #
connection slave;
source include/stop_slave.inc;
-reset slave;
+--source include/reset_slave.inc
connection master;
reset master;
diff --git a/mysql-test/suite/rpl/include/rpl_skip_replication.inc b/mysql-test/suite/rpl/include/rpl_skip_replication.inc
index 97fc961d438..d1044c4bf51 100644
--- a/mysql-test/suite/rpl/include/rpl_skip_replication.inc
+++ b/mysql-test/suite/rpl/include/rpl_skip_replication.inc
@@ -19,6 +19,12 @@
--source include/have_innodb.inc
--source include/master-slave.inc
+--connection slave
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+--connection master
+
connection slave;
# Test that SUPER is required to change @@replicate_events_marked_for_skip.
CREATE USER 'nonsuperuser'@'127.0.0.1';
diff --git a/mysql-test/suite/rpl/include/rpl_slave_max_statement_time.inc b/mysql-test/suite/rpl/include/rpl_slave_max_statement_time.inc
new file mode 100644
index 00000000000..e064fb074dc
--- /dev/null
+++ b/mysql-test/suite/rpl/include/rpl_slave_max_statement_time.inc
@@ -0,0 +1,79 @@
+#
+# Helper test file to ensure that an event running on a slave which executes
+# for longer than @@slave_max_statement_time will time out. By default, it will
+# use the sleep function to imitate a long running function. This can be
+# changed to use locks using the parameter with_lock.
+#
+# Parameters:
+# with_lock (boolean, in) : Changes the long running command from using SLEEP
+# to using locks. In particular, the MTR test will take the table level
+# write lock on the slave side, while the slave concurrently tries to
+# execute an insert statement.
+#
+# use_load_data (boolean, in) : If in row logging format, uses LOAD DATA
+# INFILLE command to create Load_log_events to create the events which
+# should time out
+#
+
+--connection master
+create table t1(a int not null auto_increment, b int, primary key(a)) engine=InnoDB;
+--source include/save_master_gtid.inc
+
+--connection slave
+--source include/sync_with_master_gtid.inc
+--source include/stop_slave.inc
+SET @old_slave_max_statement_time=@@GLOBAL.slave_max_statement_time;
+SET GLOBAL slave_max_statement_time=0.75;
+
+--connection master
+--echo # Long running command due to a lock conflict
+if (!$use_load_data)
+{
+ INSERT INTO t1(b) VALUES (1);
+}
+if ($use_load_data)
+{
+ load data infile '../../std_data/rpl_loaddata.dat' into table t1;
+}
+--source include/save_master_gtid.inc
+
+--connection slave1
+ BEGIN; INSERT INTO t1(b) VALUES (1);
+
+--connection slave
+
+--echo # Starting slave to receive event which will take longer to execute
+--echo # than slave_max_statement_time
+START SLAVE;
+
+# ER_SLAVE_STATEMENT_TIMEOUT
+--let $slave_sql_errno= 4192
+--source include/wait_for_slave_sql_error.inc
+
+--echo # Ensuring event was not processed..
+--let $t1_count= `select count(*) from t1`
+if ($t1_count != 0)
+{
+ --die Event should have timed out on the slave and not been executed
+}
+--echo # ..success
+
+--echo # Remove slave timeout and catch up to master
+SET GLOBAL slave_max_statement_time=0;
+
+--connection slave1
+ ROLLBACK;
+
+--source include/start_slave.inc
+--source include/sync_with_master_gtid.inc
+
+--echo # Test case cleanup
+--connection master
+DROP TABLE t1;
+--source include/save_master_gtid.inc
+
+--connection slave
+--source include/sync_with_master_gtid.inc
+--source include/stop_slave.inc
+SET GLOBAL slave_max_statement_time=@old_slave_max_statement_time;
+--source include/start_slave.inc
diff --git a/mysql-test/suite/rpl/include/rpl_start_stop_slave.test b/mysql-test/suite/rpl/include/rpl_start_stop_slave.test
index 32f33b2a31d..ae5f83613fe 100644
--- a/mysql-test/suite/rpl/include/rpl_start_stop_slave.test
+++ b/mysql-test/suite/rpl/include/rpl_start_stop_slave.test
@@ -195,7 +195,7 @@ let $master_pos= `SELECT $master_pos + 1`;
--connection slave
--source include/stop_slave.inc
--replace_regex /[0-9]+/MASTER_POS/
-eval CHANGE MASTER TO master_log_pos=$master_pos;
+eval CHANGE MASTER TO master_log_pos=$master_pos, master_use_gtid=no;
START SLAVE;
# ER_MASTER_FATAL_ERROR_READING_BINLOG 1236
diff --git a/mysql-test/suite/rpl/r/rpl_000010.result b/mysql-test/suite/rpl/r/rpl_000010.result
index ae989f25e1b..a86d71bd33f 100644
--- a/mysql-test/suite/rpl/r/rpl_000010.result
+++ b/mysql-test/suite/rpl/r/rpl_000010.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
create table t1 (n int not null auto_increment primary key);
insert into t1 values(NULL);
insert into t1 values(2);
diff --git a/mysql-test/suite/rpl/r/rpl_auto_increment_bug33029.result b/mysql-test/suite/rpl/r/rpl_auto_increment_bug33029.result
index c75e65ebb6f..49f3ac455f1 100644
--- a/mysql-test/suite/rpl/r/rpl_auto_increment_bug33029.result
+++ b/mysql-test/suite/rpl/r/rpl_auto_increment_bug33029.result
@@ -38,6 +38,8 @@ id
==== Clean up ====
stop slave sql_thread;
include/cleanup_fake_relay_log.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
DROP TABLE t1, t2;
DROP PROCEDURE p1;
DROP PROCEDURE p2;
diff --git a/mysql-test/suite/rpl/r/rpl_binlog_corruption.result b/mysql-test/suite/rpl/r/rpl_binlog_corruption.result
index 5c141eed596..730fb67ebc9 100644
--- a/mysql-test/suite/rpl/r/rpl_binlog_corruption.result
+++ b/mysql-test/suite/rpl/r/rpl_binlog_corruption.result
@@ -14,4 +14,6 @@ include/wait_for_slave_sql_error.inc [errno=1594]
Last_SQL_Error = Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MariaDB code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.
==== Clean up ====
include/cleanup_fake_relay_log.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_binlog_dump_slave_gtid_state_info.result b/mysql-test/suite/rpl/r/rpl_binlog_dump_slave_gtid_state_info.result
index 98688df7273..96b14bc1d9c 100644
--- a/mysql-test/suite/rpl/r/rpl_binlog_dump_slave_gtid_state_info.result
+++ b/mysql-test/suite/rpl/r/rpl_binlog_dump_slave_gtid_state_info.result
@@ -5,6 +5,8 @@ SET GLOBAL LOG_WARNINGS=2;
connection slave;
include/stop_slave.inc
CHANGE MASTER TO MASTER_USE_GTID=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
connection master;
"Test Case 1: Start binlog_dump to slave_server(#), pos(master-bin.000001, ###), using_gtid(1), gtid('')"
diff --git a/mysql-test/suite/rpl/r/rpl_binlog_errors.result b/mysql-test/suite/rpl/r/rpl_binlog_errors.result
index 4c667bd7f5a..0c79b079bd6 100644
--- a/mysql-test/suite/rpl/r/rpl_binlog_errors.result
+++ b/mysql-test/suite/rpl/r/rpl_binlog_errors.result
@@ -232,6 +232,9 @@ connection master;
#######################################################################
include/rpl_reset.inc
connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
call mtr.add_suppression("Slave I/O: Relay log write failure: could not queue event from master.*");
call mtr.add_suppression("Error writing file .*");
call mtr.add_suppression("Could not use .*");
@@ -277,5 +280,7 @@ include/stop_slave_sql.inc
Warnings:
Note 1255 Slave already has been stopped
RESET SLAVE;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
RESET MASTER;
include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_blackhole_row_annotate.result b/mysql-test/suite/rpl/r/rpl_blackhole_row_annotate.result
index 53420891754..2c602ea53aa 100644
--- a/mysql-test/suite/rpl/r/rpl_blackhole_row_annotate.result
+++ b/mysql-test/suite/rpl/r/rpl_blackhole_row_annotate.result
@@ -200,7 +200,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=#/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/rpl/r/rpl_cant_read_event_incident.result b/mysql-test/suite/rpl/r/rpl_cant_read_event_incident.result
index 5aff978538f..86659816f6c 100644
--- a/mysql-test/suite/rpl/r/rpl_cant_read_event_incident.result
+++ b/mysql-test/suite/rpl/r/rpl_cant_read_event_incident.result
@@ -2,6 +2,9 @@ include/master-slave.inc
[connection master]
connection slave;
include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+include/stop_slave.inc
connection master;
call mtr.add_suppression("Error in Log_event::read_log_event()");
include/rpl_stop_server.inc [server_number=1]
@@ -10,7 +13,9 @@ show binlog events;
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
connection slave;
call mtr.add_suppression("Slave I/O: Got fatal error 1236 from master when reading data from binary log");
-reset slave;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
start slave;
include/wait_for_slave_param.inc [Last_IO_Errno]
Last_IO_Errno = '1236'
@@ -20,6 +25,8 @@ reset master;
connection slave;
stop slave;
reset slave;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
drop table if exists t;
reset master;
End of the tests
diff --git a/mysql-test/suite/rpl/r/rpl_change_master.result b/mysql-test/suite/rpl/r/rpl_change_master.result
index 48cec72d917..88801b07bba 100644
--- a/mysql-test/suite/rpl/r/rpl_change_master.result
+++ b/mysql-test/suite/rpl/r/rpl_change_master.result
@@ -26,4 +26,9 @@ connection master;
CHANGE MASTER TO MASTER_USER='root', MASTER_SSL=0, MASTER_SSL_CA='', MASTER_SSL_CERT='',
MASTER_SSL_KEY='', MASTER_SSL_CRL='', MASTER_SSL_CRLPATH='';
CHANGE MASTER TO MASTER_USER='root', MASTER_PASSWORD='', MASTER_SSL=0;
+"Usage of CURRENT_POS in CHANGE MASTER MASTER_USE_GTID is dreprecated.
+CHANGE MASTER TO MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
+CHANGE MASTER TO MASTER_USE_GTID=SLAVE_POS;
include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_change_master_demote.result b/mysql-test/suite/rpl/r/rpl_change_master_demote.result
new file mode 100644
index 00000000000..38cff83829e
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_change_master_demote.result
@@ -0,0 +1,687 @@
+include/master-slave.inc
+[connection master]
+connection slave;
+include/stop_slave.inc
+change master to master_use_gtid=slave_pos;
+include/start_slave.inc
+include/sync_with_master_gtid.inc
+#
+# Test Case 1: When both gtid_binlog_pos and gtid_slave_pos are
+# empty, MASTER_DEMOTE_TO_SLAVE=1 results in no change to replication
+# state.
+#
+include/rpl_change_master_demote.inc
+##############################################
+# Connection semantics change:
+# * True primary is now connection 'slave'
+# * True replica is now connection 'master'
+##############################################
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS
+GTID_CURRENT_POS
+GTID_SLAVE_POS
+# First ensure gtid_slave_pos after master_demote_to_slave matches
+# gtid_current_pos calculation
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1 ;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS
+GTID_CURRENT_POS
+GTID_SLAVE_POS
+# Validating gtid_slave_pos == gtid_binlog_pos..
+# ..success
+connection slave;
+# Ensuring replication works correctly after role swap
+connection slave;
+set session gtid_domain_id= 0;
+CREATE TABLE repl_t (a int);
+INSERT INTO repl_t VALUES (1);
+connection master;
+# Validating that replication works..
+# ..success
+# Cleaning up replication check data
+connection slave;
+DROP TABLE repl_t;
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS
+GTID_CURRENT_POS 0-2-3
+GTID_SLAVE_POS 0-2-3
+##############################################
+# Connection semantics change:
+# * True primary is back to connection 'master'
+# * True replica is back to connection 'slave'
+##############################################
+connection master;
+connection slave;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+#
+# Test Case 2: If gtid_slave_pos is empty, gtid_binlog_pos will
+# completely overwrite it with MASTER_DEMOTE_TO_SLAVE=1.
+#
+connection slave;
+include/stop_slave.inc
+RESET MASTER;
+set @@global.gtid_slave_pos="";
+include/start_slave.inc
+connection master;
+RESET MASTER;
+set @@global.gtid_slave_pos="";
+set session gtid_domain_id= 0;
+CREATE TABLE t1 (a int);
+INSERT INTO t1 VALUES (1);
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/rpl_change_master_demote.inc
+##############################################
+# Connection semantics change:
+# * True primary is now connection 'slave'
+# * True replica is now connection 'master'
+##############################################
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-2
+GTID_CURRENT_POS 0-1-2
+GTID_SLAVE_POS
+# First ensure gtid_slave_pos after master_demote_to_slave matches
+# gtid_current_pos calculation
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1 ;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-2
+GTID_CURRENT_POS 0-1-2
+GTID_SLAVE_POS 0-1-2
+# Validating gtid_slave_pos == gtid_binlog_pos..
+# ..success
+connection slave;
+# Ensuring replication works correctly after role swap
+connection slave;
+set session gtid_domain_id= 0;
+CREATE TABLE repl_t (a int);
+INSERT INTO repl_t VALUES (1);
+connection master;
+# Validating that replication works..
+# ..success
+# Cleaning up replication check data
+connection slave;
+DROP TABLE repl_t;
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-2
+GTID_CURRENT_POS 0-2-5
+GTID_SLAVE_POS 0-2-5
+##############################################
+# Connection semantics change:
+# * True primary is back to connection 'master'
+# * True replica is back to connection 'slave'
+##############################################
+connection master;
+connection slave;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+#
+# Test Case 3: Using a single domain id, if neither gtid_slave_pos nor
+# gtid_binlog_pos are empty, and gtid_binlog_pos is more recent, then
+# gtid_binlog_pos will overwrite gtid_slave_pos when
+# MASTER_DEMOTE_TO_SLAVE=1.
+#
+connection master;
+INSERT INTO t1 VALUES (2);
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/rpl_change_master_demote.inc
+##############################################
+# Connection semantics change:
+# * True primary is now connection 'slave'
+# * True replica is now connection 'master'
+##############################################
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-6
+GTID_CURRENT_POS 0-1-6
+GTID_SLAVE_POS 0-2-5
+# First ensure gtid_slave_pos after master_demote_to_slave matches
+# gtid_current_pos calculation
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1 ;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-6
+GTID_CURRENT_POS 0-1-6
+GTID_SLAVE_POS 0-1-6
+# Validating gtid_slave_pos == gtid_binlog_pos..
+# ..success
+connection slave;
+# Ensuring replication works correctly after role swap
+connection slave;
+set session gtid_domain_id= 0;
+CREATE TABLE repl_t (a int);
+INSERT INTO repl_t VALUES (1);
+connection master;
+# Validating that replication works..
+# ..success
+# Cleaning up replication check data
+connection slave;
+DROP TABLE repl_t;
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-6
+GTID_CURRENT_POS 0-2-9
+GTID_SLAVE_POS 0-2-9
+##############################################
+# Connection semantics change:
+# * True primary is back to connection 'master'
+# * True replica is back to connection 'slave'
+##############################################
+connection master;
+connection slave;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+#
+# Test Case 4: If gtid_slave_pos and gtid_binlog_pos are equivalent,
+# MASTER_DEMOTE_TO_SLAVE=1 will not change gtid_slave_pos.
+#
+connection master;
+# update gtid_binlog_pos and demote it (we have proven this works)
+INSERT INTO t1 VALUES (3);
+# Update to account for statements to verify replication in include file
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+RESET SLAVE ALL;
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/rpl_change_master_demote.inc
+##############################################
+# Connection semantics change:
+# * True primary is now connection 'slave'
+# * True replica is now connection 'master'
+##############################################
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-10
+GTID_CURRENT_POS 0-1-10
+GTID_SLAVE_POS 0-1-10
+# First ensure gtid_slave_pos after master_demote_to_slave matches
+# gtid_current_pos calculation
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1 ;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-10
+GTID_CURRENT_POS 0-1-10
+GTID_SLAVE_POS 0-1-10
+# Validating gtid_slave_pos == gtid_binlog_pos..
+# ..success
+connection slave;
+# Ensuring replication works correctly after role swap
+connection slave;
+set session gtid_domain_id= 0;
+CREATE TABLE repl_t (a int);
+INSERT INTO repl_t VALUES (1);
+connection master;
+# Validating that replication works..
+# ..success
+# Cleaning up replication check data
+connection slave;
+DROP TABLE repl_t;
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-10
+GTID_CURRENT_POS 0-2-13
+GTID_SLAVE_POS 0-2-13
+##############################################
+# Connection semantics change:
+# * True primary is back to connection 'master'
+# * True replica is back to connection 'slave'
+##############################################
+connection master;
+connection slave;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+#
+# Test Case 5: If a new domain id is added into gtid_binlog_pos while
+# gtid_slave_pos already has a state, MASTER_DEMOTE_TO_SLAVE=1 will
+# append a new GTID to gtid_slave_pos with the latest seq_no from that
+# domain.
+#
+connection master;
+# Domain_id
+set session gtid_domain_id= 0;
+INSERT INTO t1 VALUES (4);
+set session gtid_domain_id= 1;
+CREATE TABLE t2 (a int);
+INSERT INTO t2 VALUES (1);
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/rpl_change_master_demote.inc
+##############################################
+# Connection semantics change:
+# * True primary is now connection 'slave'
+# * True replica is now connection 'master'
+##############################################
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-14,1-1-2
+GTID_CURRENT_POS 0-1-14,1-1-2
+GTID_SLAVE_POS 0-2-13
+# First ensure gtid_slave_pos after master_demote_to_slave matches
+# gtid_current_pos calculation
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1 ;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-14,1-1-2
+GTID_CURRENT_POS 0-1-14,1-1-2
+GTID_SLAVE_POS 0-1-14,1-1-2
+# Validating gtid_slave_pos == gtid_binlog_pos..
+# ..success
+connection slave;
+# Ensuring replication works correctly after role swap
+connection slave;
+set session gtid_domain_id= 0;
+CREATE TABLE repl_t (a int);
+INSERT INTO repl_t VALUES (1);
+connection master;
+# Validating that replication works..
+# ..success
+# Cleaning up replication check data
+connection slave;
+DROP TABLE repl_t;
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-14,1-1-2
+GTID_CURRENT_POS 0-2-17,1-1-2
+GTID_SLAVE_POS 0-2-17,1-1-2
+##############################################
+# Connection semantics change:
+# * True primary is back to connection 'master'
+# * True replica is back to connection 'slave'
+##############################################
+connection master;
+connection slave;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+#
+# Test Case 6: If gtid_slave_pos has multiple GTID positions and
+# gtid_binlog_pos contains updates on existing domain ids, new
+# domains, and differing server_ids, MASTER_DEMOTE_TO_SLAVE=1 will
+# update gtid_slave_pos such that it will have the seq_nos only from
+# the GTIDs last applied by this server. In other words, any GTIDs
+# with server ids that don't match that of the demoting server will be
+# ignored in the update.
+#
+connection master;
+# Update to account for statements to verify replication in include file
+set session gtid_domain_id= 0;
+INSERT INTO t1 VALUES (5);
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+RESET SLAVE ALL;
+set session gtid_domain_id= 1;
+INSERT INTO t2 VALUES (2);
+set session gtid_domain_id= 2;
+CREATE TABLE t3 (a int);
+INSERT INTO t3 VALUES (1);
+# The following events have a different server_id and should not go into
+# gtid_slave_pos
+set @old_server_id = @@server_id;
+set session gtid_domain_id= 1;
+set session server_id= 3;
+INSERT INTO t2 VALUES (3);
+set session gtid_domain_id= 4;
+set session server_id= 3;
+CREATE TABLE t5 (a int);
+INSERT INTO t5 VALUES (1);
+set session server_id= @old_server_id;
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/rpl_change_master_demote.inc
+##############################################
+# Connection semantics change:
+# * True primary is now connection 'slave'
+# * True replica is now connection 'master'
+##############################################
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-18,1-3-4,2-1-2,4-3-2
+GTID_CURRENT_POS 0-1-18,1-1-2,2-1-2
+GTID_SLAVE_POS 0-1-18,1-1-2
+# First ensure gtid_slave_pos after master_demote_to_slave matches
+# gtid_current_pos calculation
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1 ;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-18,1-3-4,2-1-2,4-3-2
+GTID_CURRENT_POS 0-1-18,1-1-2,2-1-2
+GTID_SLAVE_POS 0-1-18,1-1-2,2-1-2
+# Validating gtid_slave_pos == gtid_binlog_pos..
+# ..success
+connection slave;
+# Ensuring replication works correctly after role swap
+connection slave;
+set session gtid_domain_id= 0;
+CREATE TABLE repl_t (a int);
+INSERT INTO repl_t VALUES (1);
+connection master;
+# Validating that replication works..
+# ..success
+# Cleaning up replication check data
+connection slave;
+DROP TABLE repl_t;
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-18,1-3-4,2-1-2,4-3-2
+GTID_CURRENT_POS 0-2-21,1-3-4,2-1-2,4-3-2
+GTID_SLAVE_POS 0-2-21,1-3-4,2-1-2,4-3-2
+##############################################
+# Connection semantics change:
+# * True primary is back to connection 'master'
+# * True replica is back to connection 'slave'
+##############################################
+connection master;
+connection slave;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+#
+# Test Case 7: If MASTER_DEMOTE_TO_SLAVE=1 is combined with
+# IGNORE_DOMAIN_IDS such that gtid_binlog_pos has more recent GTIDs
+# than gtid_slave_pos in ignored domains, the CHANGE MASTER TO command
+# will still update gtid_slave_pos with the most recent transactions
+# from gtid_binlog_pos, despite being ignored by CHANGE MASTER TO
+# because they were already applied on the server.
+#
+connection master;
+set session gtid_domain_id= 2;
+INSERT INTO t3 VALUES (2);
+set session gtid_domain_id= 3;
+CREATE TABLE t4 (a int);
+INSERT INTO t4 VALUES (1);
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/rpl_change_master_demote.inc
+##############################################
+# Connection semantics change:
+# * True primary is now connection 'slave'
+# * True replica is now connection 'master'
+##############################################
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-18,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_CURRENT_POS 0-2-21,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-2-21,1-3-4,2-1-2,4-3-2
+# First ensure gtid_slave_pos after master_demote_to_slave matches
+# gtid_current_pos calculation
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1 , ignore_domain_ids=(2,3);
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-18,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_CURRENT_POS 0-2-21,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-2-21,1-3-4,2-1-3,3-1-2,4-3-2
+# Validating gtid_slave_pos == gtid_binlog_pos..
+# ..success
+connection slave;
+# Ensuring replication works correctly after role swap
+connection slave;
+set session gtid_domain_id= 0;
+CREATE TABLE repl_t (a int);
+INSERT INTO repl_t VALUES (1);
+connection master;
+# Validating that replication works..
+# ..success
+# Cleaning up replication check data
+connection slave;
+DROP TABLE repl_t;
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-18,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_CURRENT_POS 0-2-24,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-2-24,1-3-4,2-1-3,3-1-2,4-3-2
+##############################################
+# Connection semantics change:
+# * True primary is back to connection 'master'
+# * True replica is back to connection 'slave'
+##############################################
+connection master;
+connection slave;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+#
+# Test Case 8: If gtid_binlog_pos is more recent than gtid_slave_pos,
+# and MASTER_DEMOTE_TO_SLAVE=1 is combined with a later call to
+# START SLAVE UNTIL master_gtid_pos=<G> such that
+# gtid_slave_pos < G < gtid_binlog_pos, then the slave should stop
+# immediately after SSU because gtid_slave_pos should be updated to be
+# after G.
+#
+connection master;
+set session gtid_domain_id= 0;
+INSERT INTO t1 VALUES (6);
+# Tagging ssu_middle_binlog_pos here to be used for START SLAVE UNTIL
+INSERT INTO t1 VALUES (7);
+include/save_master_gtid.inc
+# Ensure slave is up-to-date with master and then disable slave status
+connection slave;
+include/sync_with_master_gtid.inc
+include/stop_slave.inc
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-2-24,1-3-4,2-1-3,3-1-2,4-3-2
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=Slave_Pos, master_demote_to_slave=1;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+# GTID ssu_middle_binlog_pos should be considered in the past because
+# gtid_slave_pos should be updated using the latest binlog gtids.
+# The following call to sync_with_master_gtid.inc uses the latest
+# binlog position and should still succeed despite the SSU stop
+# position pointing to a previous event (because
+# master_demote_to_slave=1 merges gtid_binlog_pos into gtid_slave_pos).
+START SLAVE UNTIL master_gtid_pos="ssu_middle_binlog_pos";
+Warnings:
+Note 1278 It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL; otherwise, you will get problems if you get an unexpected slave's mariadbd restart
+# Slave needs time to start and stop automatically
+# Validating neither SQL nor IO threads are running..
+# ..success
+# Clean slave state of master
+RESET SLAVE ALL;
+#
+# Test Case 9: If gtid_slave_pos is more recent than gtid_binlog_pos
+# when demoting the master to become a slave, the replication state
+# should be preserved.
+#
+# rpl_change_master_demote.inc should force
+# gtid_slave_pos > gtid_binlog_pos in domain 0 (due to the step which
+# validates replication works)
+connection master;
+include/rpl_change_master_demote.inc
+##############################################
+# Connection semantics change:
+# * True primary is now connection 'slave'
+# * True replica is now connection 'master'
+##############################################
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_CURRENT_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+# First ensure gtid_slave_pos after master_demote_to_slave matches
+# gtid_current_pos calculation
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1 , ignore_domain_ids=(2,3);
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_CURRENT_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+# Validating gtid_slave_pos == gtid_binlog_pos..
+# ..success
+connection slave;
+Warnings:
+Note 1255 Slave already has been stopped
+# Ensuring replication works correctly after role swap
+connection slave;
+set session gtid_domain_id= 0;
+CREATE TABLE repl_t (a int);
+INSERT INTO repl_t VALUES (1);
+connection master;
+# Validating that replication works..
+# ..success
+# Cleaning up replication check data
+connection slave;
+DROP TABLE repl_t;
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_CURRENT_POS 0-2-29,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-2-29,1-3-4,2-1-3,3-1-2,4-3-2
+##############################################
+# Connection semantics change:
+# * True primary is back to connection 'master'
+# * True replica is back to connection 'slave'
+##############################################
+connection master;
+connection slave;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+# Demote master to slave with the more recent gtid_slave_pos
+connection master;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+# Validating gtid_slave_pos is unchanged..
+# ..success
+# Validating gtid_slave_pos == gtid_binlog_pos..
+# ..success
+# Clean slave state of master
+RESET SLAVE ALL;
+#
+# Test Case 10: MASTER_DEMOTE_TO_SLAVE=0 should not change replication
+# state, regardless of gtid_slave_pos in comparison to gtid_binlog_pos.
+#
+# In domain 0, make gtid_slave_pos > gtid_binlog_pos
+connection master;
+include/rpl_change_master_demote.inc
+##############################################
+# Connection semantics change:
+# * True primary is now connection 'slave'
+# * True replica is now connection 'master'
+##############################################
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_CURRENT_POS 0-2-29,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-2-29,1-3-4,2-1-3,3-1-2,4-3-2
+# First ensure gtid_slave_pos after master_demote_to_slave matches
+# gtid_current_pos calculation
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1 , ignore_domain_ids=(2,3);
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_CURRENT_POS 0-2-29,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-2-29,1-3-4,2-1-3,3-1-2,4-3-2
+# Validating gtid_slave_pos == gtid_binlog_pos..
+# ..success
+connection slave;
+# Ensuring replication works correctly after role swap
+connection slave;
+set session gtid_domain_id= 0;
+CREATE TABLE repl_t (a int);
+INSERT INTO repl_t VALUES (1);
+connection master;
+# Validating that replication works..
+# ..success
+# Cleaning up replication check data
+connection slave;
+DROP TABLE repl_t;
+connection master;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-26,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_CURRENT_POS 0-2-32,1-3-4,2-1-3,3-1-2,4-3-2
+GTID_SLAVE_POS 0-2-32,1-3-4,2-1-3,3-1-2,4-3-2
+##############################################
+# Connection semantics change:
+# * True primary is back to connection 'master'
+# * True replica is back to connection 'slave'
+##############################################
+connection master;
+connection slave;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+# Tag gtid_slave_pos now (before binlog updates) for later comparison
+connection master;
+# In domain 1, make gtid_slave_pos < gtid_binlog_pos
+set session gtid_domain_id= 1;
+INSERT INTO t2 VALUES (4);
+# In domains 2, 3 and 4, gtid_slave_pos == gtid_binlog_pos
+# Include a new domain id (5)
+set session gtid_domain_id= 5;
+CREATE TABLE t6 (a int);
+INSERT INTO t6 VALUES (1);
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-26,1-1-5,2-1-3,3-1-2,4-3-2,5-1-2
+GTID_SLAVE_POS 0-2-32,1-3-4,2-1-3,3-1-2,4-3-2
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=0;
+# Validating gtid_slave_pos is unchanged..
+# ..success
+# Clean slave state of master
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1;
+RESET SLAVE ALL;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' ORDER BY VARIABLE_NAME ASC;
+VARIABLE_NAME GLOBAL_VALUE
+GTID_BINLOG_POS 0-1-26,1-1-5,2-1-3,3-1-2,4-3-2,5-1-2
+GTID_SLAVE_POS 0-2-32,1-1-5,2-1-3,3-1-2,4-3-2,5-1-2
+#
+#
+# Stop slave for error test cases
+connection slave;
+include/stop_slave.inc
+#
+# Error Case 1: MASTER_DEMOTE_TO_SLAVE=1 combined with
+# MASTER_USE_GTID=NO should result in an error.
+#
+connection master;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=no, master_demote_to_slave=1;
+ERROR HY000: CHANGE MASTER TO option 'MASTER_DEMOTE_TO_SLAVE=TRUE' is missing requirement Using_Gtid=Slave_Pos
+#
+# Error Case 2: Error when MASTER_DEMOTE_TO_SLAVE=1 is used without
+# binary logging enabled.
+#
+connection master;
+# Restarting master without binary log
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=Slave_Pos, master_demote_to_slave=1;
+ERROR HY000: You are not using binary logging
+# Restarting master to re-enable binary log
+connection server_1;
+connection default;
+#
+# Error Case 3: Error when MASTER_DEMOTE_TO_SLAVE is provided a
+# non-boolean value.
+#
+connection master;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SLAVE_PORT, master_user='root', master_use_gtid=Slave_Pos, master_demote_to_slave=invalid;
+ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'invalid' at line 1
+#
+# Cleanup
+#
+connection master;
+DROP TABLE t1, t2, t3, t4, t5, t6;
+include/save_master_gtid.inc
+connection slave;
+include/start_slave.inc
+include/sync_with_master_gtid.inc
+include/rpl_end.inc
+#
+### End rpl_change_master_demote.test
diff --git a/mysql-test/suite/rpl/r/rpl_checksum.result b/mysql-test/suite/rpl/r/rpl_checksum.result
index 21d8ca22feb..7ade3067eae 100644
--- a/mysql-test/suite/rpl/r/rpl_checksum.result
+++ b/mysql-test/suite/rpl/r/rpl_checksum.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
call mtr.add_suppression('Slave can not handle replication events with the checksum that master is configured to log');
call mtr.add_suppression('Replication event checksum verification failed');
call mtr.add_suppression('Relay log write failure: could not queue event from master');
@@ -122,7 +127,9 @@ must be zero
0
connection slave;
stop slave;
-reset slave;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
set @@global.binlog_checksum= IF(floor((rand()*1000)%2), "CRC32", "NONE");
flush logs;
connection master;
diff --git a/mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result b/mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result
index 4ec1e2512d2..85cc0cc7ebc 100644
--- a/mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result
+++ b/mysql-test/suite/rpl/r/rpl_circular_for_4_hosts.result
@@ -184,6 +184,8 @@ connection server_3;
RESET MASTER;
connection server_4;
RESET SLAVE;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
include/rpl_change_topology.inc [new topology=1->2->3->4->1]
include/start_slave.inc
connection server_3;
diff --git a/mysql-test/suite/rpl/r/rpl_colSize.result b/mysql-test/suite/rpl/r/rpl_colSize.result
index 5d72ddcec09..95a30c6ee4d 100644
--- a/mysql-test/suite/rpl/r/rpl_colSize.result
+++ b/mysql-test/suite/rpl/r/rpl_colSize.result
@@ -6,7 +6,7 @@ DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
include/wait_for_slave_to_stop.inc
-RESET SLAVE;
+include/reset_slave.inc
SET @saved_slave_type_conversions = @@slave_type_conversions;
SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
CREATE TABLE t1 (
diff --git a/mysql-test/suite/rpl/r/rpl_corruption.result b/mysql-test/suite/rpl/r/rpl_corruption.result
index 73bb373d6be..7c60e15a567 100644
--- a/mysql-test/suite/rpl/r/rpl_corruption.result
+++ b/mysql-test/suite/rpl/r/rpl_corruption.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
call mtr.add_suppression('Found invalid event in binary log');
call mtr.add_suppression('Slave I/O: Relay log write failure: could not queue event from master');
call mtr.add_suppression('event read from binlog did not pass crc check');
diff --git a/mysql-test/suite/rpl/r/rpl_cross_version.result b/mysql-test/suite/rpl/r/rpl_cross_version.result
index b94b02a24ff..1b67542c106 100644
--- a/mysql-test/suite/rpl/r/rpl_cross_version.result
+++ b/mysql-test/suite/rpl/r/rpl_cross_version.result
@@ -16,5 +16,7 @@ zero
==== Clean up ====
include/stop_slave_sql.inc
include/cleanup_fake_relay_log.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
drop table t1, t3;
include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
index 491b27252b4..16b00cee123 100644
--- a/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
@@ -63,7 +63,7 @@ include/check_slave_is_running.inc
connection slave;
include/stop_slave.inc
DELETE FROM t2;
-CHANGE MASTER TO MASTER_LOG_POS=<master_pos_begin>;
+CHANGE MASTER TO MASTER_LOG_POS=<master_pos_begin>, MASTER_USE_GTID=NO;
BEGIN;
SELECT * FROM t1 FOR UPDATE;
a
@@ -95,7 +95,7 @@ Warnings:
Warning 1292 Truncated incorrect max_relay_log_size value: '0'
include/stop_slave.inc
DELETE FROM t2;
-CHANGE MASTER TO MASTER_LOG_POS=<master_pos_begin>;
+CHANGE MASTER TO MASTER_LOG_POS=<master_pos_begin>, MASTER_USE_GTID=NO;
BEGIN;
SELECT * FROM t1 FOR UPDATE;
a
diff --git a/mysql-test/suite/rpl/r/rpl_delayed_slave.result b/mysql-test/suite/rpl/r/rpl_delayed_slave.result
index e7daa3328ce..c8c3bc36485 100644
--- a/mysql-test/suite/rpl/r/rpl_delayed_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_delayed_slave.result
@@ -3,6 +3,9 @@ include/master-slave.inc
call mtr.add_suppression("Unsafe statement written to the binary log using statement format");
connection slave;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format");
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
connection master;
[on master]
CREATE TABLE t1 (a VARCHAR(100), b INT);
@@ -153,7 +156,9 @@ CHANGE MASTER TO MASTER_DELAY = 71;
include/start_slave.inc
# Asserted this: Delay should be 71 when we set it to 71
include/stop_slave.inc
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
[on master]
connection master;
RESET MASTER;
diff --git a/mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result b/mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result
index 5865b75550f..be98b7e3dcd 100644
--- a/mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_extra_col_master_innodb.result
@@ -437,7 +437,7 @@ connection master;
** Stop and Reset Slave **
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
** create table slave side **
CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
@@ -482,7 +482,7 @@ connection slave;
*** Create t11 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
) ENGINE='InnoDB';
@@ -524,7 +524,7 @@ connection slave;
*** Create t12 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
) ENGINE='InnoDB';
@@ -573,7 +573,7 @@ connection slave;
*** Create t14 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='InnoDB';
@@ -638,7 +638,7 @@ connection slave;
include/wait_for_slave_sql_error.inc [errno=1091]
Last_SQL_Error = 'Error 'Can't DROP COLUMN `c7`; check that it exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7''
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
*** Drop t14 ***
DROP TABLE t14;
@@ -655,7 +655,9 @@ START SLAVE;
*** Create t15 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-103. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='InnoDB';
@@ -693,7 +695,9 @@ connection slave;
include/wait_for_slave_sql_error.inc [errno=1054]
Last_SQL_Error = 'Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7''
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-104. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
*** Drop t15 ***
DROP TABLE t15;
@@ -710,7 +714,9 @@ START SLAVE;
*** Create t16 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-105. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='InnoDB';
@@ -748,7 +754,9 @@ connection slave;
include/wait_for_slave_sql_error.inc [errno=1072]
Last_SQL_Error = 'Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)''
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-106. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
*** Drop t16 ***
DROP TABLE t16;
@@ -765,7 +773,9 @@ START SLAVE;
*** Create t17 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-107. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='InnoDB';
@@ -831,7 +841,7 @@ connection slave;
*** Create t18 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='InnoDB';
@@ -896,7 +906,7 @@ connection slave;
*** Create t5 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='InnoDB';
diff --git a/mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result b/mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result
index f47d79b5b86..53b20b188ba 100644
--- a/mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_extra_col_master_myisam.result
@@ -437,7 +437,7 @@ connection master;
** Stop and Reset Slave **
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
** create table slave side **
CREATE TABLE t10 (a INT PRIMARY KEY, b BLOB, c CHAR(5)
@@ -482,7 +482,7 @@ connection slave;
*** Create t11 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t11 (a INT PRIMARY KEY, b BLOB, c VARCHAR(254)
) ENGINE='MyISAM';
@@ -524,7 +524,7 @@ connection slave;
*** Create t12 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t12 (a INT PRIMARY KEY, b BLOB, c BLOB
) ENGINE='MyISAM';
@@ -573,7 +573,7 @@ connection slave;
*** Create t14 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t14 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='MyISAM';
@@ -638,7 +638,7 @@ connection slave;
include/wait_for_slave_sql_error.inc [errno=1091]
Last_SQL_Error = 'Error 'Can't DROP COLUMN `c7`; check that it exists' on query. Default database: 'test'. Query: 'ALTER TABLE t14 DROP COLUMN c7''
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
*** Drop t14 ***
DROP TABLE t14;
@@ -655,7 +655,9 @@ START SLAVE;
*** Create t15 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-103. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
CREATE TABLE t15 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='MyISAM';
@@ -693,7 +695,9 @@ connection slave;
include/wait_for_slave_sql_error.inc [errno=1054]
Last_SQL_Error = 'Error 'Unknown column 'c7' in 't15'' on query. Default database: 'test'. Query: 'ALTER TABLE t15 ADD COLUMN c2 DECIMAL(8,2) AFTER c7''
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-104. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
*** Drop t15 ***
DROP TABLE t15;
@@ -710,7 +714,9 @@ START SLAVE;
*** Create t16 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-105. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
CREATE TABLE t16 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='MyISAM';
@@ -748,7 +754,9 @@ connection slave;
include/wait_for_slave_sql_error.inc [errno=1072]
Last_SQL_Error = 'Error 'Key column 'c6' doesn't exist in table' on query. Default database: 'test'. Query: 'CREATE INDEX part_of_c6 ON t16 (c6)''
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-106. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
*** Drop t16 ***
DROP TABLE t16;
@@ -765,7 +773,9 @@ START SLAVE;
*** Create t17 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-107. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
CREATE TABLE t17 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='MyISAM';
@@ -831,7 +841,7 @@ connection slave;
*** Create t18 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t18 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='MyISAM';
@@ -896,7 +906,7 @@ connection slave;
*** Create t5 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t5 (c1 INT PRIMARY KEY, c4 BLOB, c5 CHAR(5)
) ENGINE='MyISAM';
diff --git a/mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result b/mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result
index 13077c08e89..ea784e7fc21 100644
--- a/mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result
+++ b/mysql-test/suite/rpl/r/rpl_extra_col_slave_innodb.result
@@ -5,7 +5,7 @@ call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]*. cannot
**** Diff Table Def Start ****
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
SET @saved_slave_type_conversions = @@slave_type_conversions;
SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20),
@@ -42,7 +42,7 @@ DROP TABLE t1;
connection slave;
*** Create t2 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t2 (a INT, b INT PRIMARY KEY, c CHAR(5),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
@@ -66,7 +66,9 @@ START SLAVE;
include/wait_for_slave_sql_error.inc [errno=1677]
Last_SQL_Error = 'Column 2 of table 'test.t2' cannot be converted from type 'char(10 octets)' to type 'char(5 octets) character set latin1''
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-4. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
SELECT * FROM t2 ORDER BY a;
a b c d e
connection master;
@@ -79,7 +81,7 @@ DROP TABLE t2;
connection slave;
*** Create t3 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t3 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
@@ -109,7 +111,7 @@ DROP TABLE t3;
connection slave;
*** Create t4 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t4 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
@@ -138,7 +140,7 @@ DROP TABLE t4;
connection slave;
*** Create t5 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t5 (a INT PRIMARY KEY, b CHAR(5),
c FLOAT, d INT, e DOUBLE,
f DECIMAL(8,2))ENGINE='InnoDB';
@@ -167,7 +169,7 @@ DROP TABLE t5;
connection slave;
*** Create t6 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t6 (a INT PRIMARY KEY, b CHAR(5),
c FLOAT, d INT)ENGINE='InnoDB';
*** Create t6 on Master ***
@@ -198,7 +200,7 @@ connection slave;
**** Extra Colums Start ****
*** Create t7 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t7 (a INT KEY, b BLOB, c CHAR(5),
d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
e CHAR(20) DEFAULT 'Extra Column Testing')
@@ -234,7 +236,7 @@ DROP TABLE t7;
connection slave;
*** Create t8 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t8 (a INT KEY, b BLOB, c CHAR(5),
d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
e INT)ENGINE='InnoDB';
@@ -256,7 +258,7 @@ connection master;
DROP TABLE t8;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
d TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
@@ -289,7 +291,7 @@ DROP TABLE t9;
connection slave;
*** Create t10 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
c CHAR(5), e INT DEFAULT '1')ENGINE='InnoDB';
*** Create t10 on Master ***
@@ -317,7 +319,7 @@ DROP TABLE t10;
connection slave;
*** Create t11 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t11 (a INT KEY, b BLOB, f INT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
*** Create t11 on Master ***
@@ -345,7 +347,7 @@ DROP TABLE t11;
connection slave;
*** Create t12 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='InnoDB';
*** Create t12 on Master ***
@@ -381,7 +383,7 @@ connection slave;
*** BUG 22177 Start ***
*** Create t13 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t13 (a INT KEY, b BLOB, c CHAR(5),
d INT DEFAULT '1',
e TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
@@ -419,7 +421,7 @@ connection slave;
*** Alter Master Table Testing Start ***
*** Create t14 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
@@ -455,7 +457,7 @@ c1 c2 c3 c4 c5 c6 c7
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
*** Create t14a on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t14a (c1 INT KEY, c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
@@ -488,7 +490,7 @@ c1 c4 c5 c6 c7
2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
*** Master Drop c5 ***
connection master;
ALTER TABLE t14a DROP COLUMN c5;
@@ -547,7 +549,7 @@ DROP TABLE t14;
connection slave;
*** Create t15 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t15 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT,
c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
@@ -615,7 +617,7 @@ DROP TABLE t15;
connection slave;
*** Create t16 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t16 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT,
c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
@@ -687,7 +689,7 @@ connection slave;
*** Alter Master End ***
*** Create t17 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t17 (a SMALLINT, b INT PRIMARY KEY, c CHAR(5),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
diff --git a/mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result b/mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result
index 897a87db66f..8ad7e98798a 100644
--- a/mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result
+++ b/mysql-test/suite/rpl/r/rpl_extra_col_slave_myisam.result
@@ -5,7 +5,7 @@ call mtr.add_suppression("Slave SQL.*Column [0-9] of table .test.t[0-9]*. cannot
**** Diff Table Def Start ****
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
SET @saved_slave_type_conversions = @@slave_type_conversions;
SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
CREATE TABLE t1 (a INT, b INT PRIMARY KEY, c CHAR(20),
@@ -42,7 +42,7 @@ DROP TABLE t1;
connection slave;
*** Create t2 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t2 (a INT, b INT PRIMARY KEY, c CHAR(5),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
@@ -66,7 +66,9 @@ START SLAVE;
include/wait_for_slave_sql_error.inc [errno=1677]
Last_SQL_Error = 'Column 2 of table 'test.t2' cannot be converted from type 'char(10 octets)' to type 'char(5 octets) character set latin1''
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-4. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
SELECT * FROM t2 ORDER BY a;
a b c d e
connection master;
@@ -79,7 +81,7 @@ DROP TABLE t2;
connection slave;
*** Create t3 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t3 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
@@ -109,7 +111,7 @@ DROP TABLE t3;
connection slave;
*** Create t4 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t4 (a INT, b INT PRIMARY KEY, c CHAR(20),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
@@ -138,7 +140,7 @@ DROP TABLE t4;
connection slave;
*** Create t5 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t5 (a INT PRIMARY KEY, b CHAR(5),
c FLOAT, d INT, e DOUBLE,
f DECIMAL(8,2))ENGINE='MyISAM';
@@ -167,7 +169,7 @@ DROP TABLE t5;
connection slave;
*** Create t6 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t6 (a INT PRIMARY KEY, b CHAR(5),
c FLOAT, d INT)ENGINE='MyISAM';
*** Create t6 on Master ***
@@ -198,7 +200,7 @@ connection slave;
**** Extra Colums Start ****
*** Create t7 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t7 (a INT KEY, b BLOB, c CHAR(5),
d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
e CHAR(20) DEFAULT 'Extra Column Testing')
@@ -234,7 +236,7 @@ DROP TABLE t7;
connection slave;
*** Create t8 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t8 (a INT KEY, b BLOB, c CHAR(5),
d TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
e INT)ENGINE='MyISAM';
@@ -256,7 +258,7 @@ connection master;
DROP TABLE t8;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t9 (a INT KEY, b BLOB, c CHAR(5),
d TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
@@ -289,7 +291,7 @@ DROP TABLE t9;
connection slave;
*** Create t10 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t10 (a INT KEY, b BLOB, f DOUBLE DEFAULT '233',
c CHAR(5), e INT DEFAULT '1')ENGINE='MyISAM';
*** Create t10 on Master ***
@@ -317,7 +319,7 @@ DROP TABLE t10;
connection slave;
*** Create t11 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t11 (a INT KEY, b BLOB, f INT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
*** Create t11 on Master ***
@@ -345,7 +347,7 @@ DROP TABLE t11;
connection slave;
*** Create t12 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t12 (a INT KEY, b BLOB, f TEXT,
c CHAR(5) DEFAULT 'test', e INT DEFAULT '1')ENGINE='MyISAM';
*** Create t12 on Master ***
@@ -381,7 +383,7 @@ connection slave;
*** BUG 22177 Start ***
*** Create t13 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t13 (a INT KEY, b BLOB, c CHAR(5),
d INT DEFAULT '1',
e TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
@@ -419,7 +421,7 @@ connection slave;
*** Alter Master Table Testing Start ***
*** Create t14 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t14 (c1 INT KEY, c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
@@ -455,7 +457,7 @@ c1 c2 c3 c4 c5 c6 c7
3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
*** Create t14a on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t14a (c1 INT KEY, c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
c7 TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
@@ -488,7 +490,7 @@ c1 c4 c5 c6 c7
2 b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
3 b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
*** Master Drop c5 ***
connection master;
ALTER TABLE t14a DROP COLUMN c5;
@@ -547,7 +549,7 @@ DROP TABLE t14;
connection slave;
*** Create t15 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t15 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT,
c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
@@ -615,7 +617,7 @@ DROP TABLE t15;
connection slave;
*** Create t16 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t16 (c1 INT KEY, c2 DECIMAL(8,2), c3 TEXT,
c4 BLOB, c5 CHAR(5),
c6 INT DEFAULT '1',
@@ -687,7 +689,7 @@ connection slave;
*** Alter Master End ***
*** Create t17 on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t17 (a SMALLINT, b INT PRIMARY KEY, c CHAR(5),
d FLOAT DEFAULT '2.00',
e CHAR(5) DEFAULT 'TEST2')
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_basic.result b/mysql-test/suite/rpl/r/rpl_gtid_basic.result
index 32df09789cc..fc7505e144f 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_basic.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_basic.result
@@ -69,6 +69,8 @@ INSERT INTO t2 VALUES (5, "i1a");
connection server_4;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = MASTER_PORT,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
SELECT * FROM t1 ORDER BY a;
a b
@@ -89,6 +91,8 @@ connection server_2;
include/stop_slave.inc
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_4,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
connection server_4;
UPDATE t2 SET b="j1a" WHERE a=5;
@@ -117,6 +121,8 @@ include/save_master_gtid.inc
connection server_3;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_4,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
include/sync_with_master_gtid.inc
SELECT * FROM t2 ORDER BY a;
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_crash.result b/mysql-test/suite/rpl/r/rpl_gtid_crash.result
index 153081d9ca5..fc8e69af861 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_crash.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_crash.result
@@ -15,6 +15,8 @@ SET sql_log_bin=1;
include/stop_slave.inc
CHANGE MASTER TO master_host = '127.0.0.1', master_port = MASTER_PORT,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
connection server_1;
INSERT INTO t1 VALUES (2,1);
INSERT INTO t1 VALUES (3,1);
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result b/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result
index 4c35d42d90a..a7cb710cc07 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_errorhandling.result
@@ -75,6 +75,8 @@ INSERT INTO t1 VALUES (2);
SET sql_log_bin = 1;
INSERT INTO t1 VALUES (3);
CHANGE MASTER TO master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
BEGIN;
SET GLOBAL gtid_slave_pos = "100-100-100";
ERROR 25000: You are not allowed to execute this command in a transaction
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_excess_initial_delay.result b/mysql-test/suite/rpl/r/rpl_gtid_excess_initial_delay.result
index 641d186ab78..302bf182ac2 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_excess_initial_delay.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_excess_initial_delay.result
@@ -4,6 +4,8 @@ CREATE TABLE t1 (i INT);
connection slave;
include/stop_slave.inc
CHANGE MASTER TO MASTER_USE_GTID= current_pos, MASTER_DELAY= 10;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
connection master;
INSERT INTO t1 VALUES (1);
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_master_promote.result b/mysql-test/suite/rpl/r/rpl_gtid_master_promote.result
index 15bcb6621ff..19229a3c6c2 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_master_promote.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_master_promote.result
@@ -13,15 +13,23 @@ END|
connection server_2;
include/stop_slave.inc
CHANGE MASTER TO master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
connection server_3;
include/stop_slave.inc
CHANGE MASTER TO master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
connection server_4;
include/stop_slave.inc
CHANGE MASTER TO master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
connection server_5;
include/stop_slave.inc
CHANGE MASTER TO master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
connection server_1;
SET gtid_domain_id= 1;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
@@ -340,6 +348,8 @@ a b
connection server_1;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_2,
master_user = "root", master_use_gtid = current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
SELECT * FROM t1 ORDER BY a;
a
@@ -377,6 +387,8 @@ a b
connection server_1;
include/stop_slave.inc
RESET SLAVE ALL;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'Current_Pos' to 'Slave_Pos'
connection server_2;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_1;
include/start_slave.inc
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_mdev4473.result b/mysql-test/suite/rpl/r/rpl_gtid_mdev4473.result
index 5c80e64dc9b..e61df488d62 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_mdev4473.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_mdev4473.result
@@ -13,6 +13,8 @@ reset slave all;
connection server_1;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_2,
master_user='root', MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
include/wait_for_slave_to_start.inc
connection server_2;
@@ -23,6 +25,8 @@ flush logs;
connection server_3;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_2,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
select * from t1 order by n;
n
@@ -53,14 +57,20 @@ connection server_1;
include/stop_slave.inc
include/wait_for_slave_to_stop.inc
reset slave all;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'Current_Pos' to 'Slave_Pos'
connection server_2;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_1,
master_user = 'root', MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
connection server_3;
include/stop_slave.inc
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_1,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
connection server_1;
drop table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_mdev4820.result b/mysql-test/suite/rpl/r/rpl_gtid_mdev4820.result
index 606207c1d99..cea5aaaeacd 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_mdev4820.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_mdev4820.result
@@ -45,6 +45,8 @@ SET GLOBAL gtid_slave_pos= '0-2-10';
connection server_1;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_2,
master_user= 'root', master_use_gtid=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
START SLAVE;
connection server_2;
INSERT INTO t1 VALUES (11);
@@ -67,11 +69,15 @@ a
11
include/stop_slave.inc
RESET SLAVE ALL;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'Current_Pos' to 'Slave_Pos'
INSERT INTO t1 VALUES (12);
connection server_2;
INSERT INTO t1 VALUES (22);
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_1,
master_user= 'root', master_use_gtid=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
START SLAVE;
SET sql_log_bin= 0;
CALL mtr.add_suppression("which is not in the master's binlog. Since the master's binlog contains GTIDs with higher sequence numbers, it probably means that the slave has diverged");
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_mdev9033.result b/mysql-test/suite/rpl/r/rpl_gtid_mdev9033.result
index 9f0ad66bb83..2471f26bc04 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_mdev9033.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_mdev9033.result
@@ -58,8 +58,8 @@ connection server_3;
include/sync_with_master_gtid.inc
connection server_2;
STOP SLAVE;
-CHANGE MASTER TO MASTER_USE_GTID = NO, IGNORE_DOMAIN_IDS = ();
+CHANGE MASTER TO IGNORE_DOMAIN_IDS = ();
connection server_3;
STOP SLAVE;
-CHANGE MASTER TO MASTER_USE_GTID = NO, IGNORE_DOMAIN_IDS = ();
+CHANGE MASTER TO IGNORE_DOMAIN_IDS = ();
# End of test.
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_misc.result b/mysql-test/suite/rpl/r/rpl_gtid_misc.result
index a5c61759ed6..ad77aa2350e 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_misc.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_misc.result
@@ -10,6 +10,8 @@ SET sql_log_bin= 0;
INSERT INTO t1 VALUES (1);
SET sql_log_bin= 1;
CHANGE MASTER TO master_use_gtid= current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
connection master;
CREATE TEMPORARY TABLE t2 LIKE t1;
INSERT INTO t2 VALUE (1);
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_nobinlog.result b/mysql-test/suite/rpl/r/rpl_gtid_nobinlog.result
index c42348d40ee..de5f30696fe 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_nobinlog.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_nobinlog.result
@@ -22,6 +22,8 @@ include/stop_slave.inc
connection server_1;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SLAVE_PORT,
master_user = 'root', master_use_gtid = current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
START SLAVE;
include/wait_for_slave_to_start.inc
connection server_2;
@@ -46,12 +48,16 @@ a b
4 2
include/stop_slave.inc
RESET SLAVE;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'Current_Pos' to 'Slave_Pos'
INSERT INTO t1 VALUES (5, 1);
INSERT INTO t1 VALUES (6, 1);
include/save_master_gtid.inc
connection server_2;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = MASTER_PORT,
master_use_gtid = current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
START SLAVE;
include/sync_with_master_gtid.inc
SELECT * FROM t1 ORDER BY a;
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_reconnect.result b/mysql-test/suite/rpl/r/rpl_gtid_reconnect.result
index 4f50d7c6d85..6282e116733 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_reconnect.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_reconnect.result
@@ -2,6 +2,8 @@ include/rpl_init.inc [topology=1->2]
connection server_2;
include/stop_slave.inc
CHANGE MASTER TO master_use_gtid= current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
connection server_1;
CREATE TABLE t1 (a INT);
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_sort.result b/mysql-test/suite/rpl/r/rpl_gtid_sort.result
index 34c0fd32766..bb1fb28e0e9 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_sort.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_sort.result
@@ -59,6 +59,8 @@ Variable_name Value
gtid_binlog_state
CHANGE MASTER TO master_host = '127.0.0.1', master_port = MASTER_PORT,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
SHOW VARIABLES LIKE 'gtid_binlog_pos';
Variable_name Value
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_startpos.result b/mysql-test/suite/rpl/r/rpl_gtid_startpos.result
index 3c363004170..846854f8668 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_startpos.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_startpos.result
@@ -12,6 +12,8 @@ connection server_2;
SET GLOBAL gtid_slave_pos="";
CHANGE MASTER TO master_host = '127.0.0.1', master_port = MASTER_PORT,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
SELECT * FROM t1;
a
@@ -34,11 +36,13 @@ connection server_2;
SET GLOBAL gtid_slave_pos="";
CHANGE MASTER TO master_host = '127.0.0.1', master_port = MASTER_PORT,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
START SLAVE;
include/wait_for_slave_io_error.inc [errno=1236]
include/stop_slave.inc
CHANGE MASTER TO master_host = '127.0.0.1', master_port = MASTER_PORT,
-MASTER_LOG_FILE="master-bin.000003", MASTER_LOG_POS=4;
+MASTER_LOG_FILE="master-bin.000003", MASTER_LOG_POS=4, MASTER_USE_GTID=NO;
include/start_slave.inc
SELECT * FROM t1 ORDER BY a;
a
@@ -56,6 +60,8 @@ connection server_2;
SET GLOBAL gtid_slave_pos='0-1-3';
CHANGE MASTER TO master_host = '127.0.0.1', master_port = MASTER_PORT,
MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
include/sync_with_master_gtid.inc
SELECT * FROM t1 ORDER by a;
@@ -90,12 +96,16 @@ connection server_2;
connection server_2;
include/stop_slave.inc
RESET SLAVE ALL;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'Current_Pos' to 'Slave_Pos'
RESET MASTER;
connection server_1;
RESET MASTER;
connection server_2;
SET GLOBAL gtid_slave_pos='';
CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
connection server_1;
CREATE TABLE t1 (a INT PRIMARY KEY);
@@ -119,6 +129,8 @@ connection server_2;
include/stop_slave.inc
DROP TABLE t1;
RESET SLAVE;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'Current_Pos' to 'Slave_Pos'
SET GLOBAL gtid_slave_pos="";
Warnings:
Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-4. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
@@ -145,12 +157,14 @@ a
2
*** Test that RESET SLAVE clears the Using_Gtid flag. ***
include/stop_slave.inc
-RESET SLAVE;
+include/reset_slave.inc
Using_Gtid = 'No'
START SLAVE;
include/wait_for_slave_sql_error.inc [errno=1050]
STOP SLAVE IO_THREAD;
CHANGE MASTER TO MASTER_USE_GTID=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
connection server_1;
INSERT INTO t1 VALUES(3);
@@ -238,6 +252,9 @@ connection server_2;
include/stop_slave.inc
DROP TABLE t1;
RESET SLAVE ALL;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'Current_Pos' to 'Slave_Pos'
+CHANGE MASTER TO MASTER_USE_GTID=NO;
RESET MASTER;
SET GLOBAL gtid_slave_pos= "";
CHANGE MASTER TO master_host='127.0.0.1', master_port=MASTER_PORT, master_user='root', master_use_gtid=no, master_log_file="", master_log_pos= 4;
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result b/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result
index 50f24d56e9a..2bdfcb14123 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_stop_start.result
@@ -6,8 +6,10 @@ INSERT INTO t1 VALUES (1);
connection server_2;
include/stop_slave.inc
Master_Log_File = 'master-bin.000001'
-Using_Gtid = 'No'
+Using_Gtid = 'Slave_Pos'
CHANGE MASTER TO master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
FLUSH LOGS;
connection server_1;
FLUSH LOGS;
diff --git a/mysql-test/suite/rpl/r/rpl_gtid_until.result b/mysql-test/suite/rpl/r/rpl_gtid_until.result
index 1032b8ddd5c..85b066608e5 100644
--- a/mysql-test/suite/rpl/r/rpl_gtid_until.result
+++ b/mysql-test/suite/rpl/r/rpl_gtid_until.result
@@ -1,4 +1,8 @@
include/rpl_init.inc [topology=1->2]
+connection server_2;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
connection server_1;
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
CREATE FUNCTION extract_gtid(d VARCHAR(100), s VARCHAR(100))
@@ -26,6 +30,8 @@ include/stop_slave_io.inc
START SLAVE UNTIL master_gtid_pos = "";
ERROR HY000: START SLAVE UNTIL master_gtid_pos requires that slave is using GTID
CHANGE MASTER TO master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
connection server_1;
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 VALUES(1);
@@ -199,6 +205,8 @@ include/start_slave.inc
connection server_2;
include/stop_slave.inc
RESET SLAVE ALL;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'Current_Pos' to 'Slave_Pos'
RESET MASTER;
SET GLOBAL gtid_slave_pos='';
connection server_1;
@@ -212,6 +220,8 @@ INSERT INTO t1 VALUES (10);
connection server_2;
CHANGE MASTER TO master_host = '127.0.0.1', master_port = SERVER_MYPORT_1,
master_user = "root", master_use_gtid = current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
START SLAVE UNTIL master_gtid_pos = '0-1-2';
include/wait_for_slave_to_start.inc
connection server_1;
diff --git a/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result b/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result
index 1db69ea4b83..88e0214150b 100644
--- a/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result
+++ b/mysql-test/suite/rpl/r/rpl_heartbeat_basic.result
@@ -14,12 +14,12 @@ connection slave;
*** Default value ***
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root';
slave_net_timeout/slave_heartbeat_timeout=2.0000
-RESET SLAVE;
+include/reset_slave.inc
*** Reset slave affect ***
SET @@global.slave_net_timeout=30;
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_CONNECT_RETRY=20, MASTER_HEARTBEAT_PERIOD=5;
-RESET SLAVE;
+include/reset_slave.inc
SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
Variable_name Value
Slave_heartbeat_period 15.000
@@ -31,7 +31,7 @@ SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
Variable_name Value
Slave_heartbeat_period 25.000
SET @@global.slave_net_timeout=@restore_slave_net_timeout;
-RESET SLAVE;
+include/reset_slave.inc
*** Warning if updated slave_net_timeout < slave_heartbeat_timeout ***
SET @@global.slave_net_timeout=FLOOR(SLAVE_HEARTBEAT_TIMEOUT)-1;
@@ -223,11 +223,15 @@ INSERT INTO t1 VALUES (1, 'on slave', NULL);
connection master;
INSERT INTO t1 VALUES (1, 'on master', NULL);
connection slave;
+set sql_log_bin= 0;
call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.. on query.* error.* 1062");
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");
+set sql_log_bin= 1;
Heartbeat events are received while sql thread stopped (1 means 'yes'): 1
include/stop_slave.inc
+set sql_log_bin= 0;
DROP TABLE t1;
+set sql_log_bin= 1;
*** Master send to slave ***
connection master;
@@ -240,7 +244,9 @@ END|
Warnings:
Warning 1105 Event scheduler is switched off, use SET GLOBAL event_scheduler=ON to enable it.
connection slave;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-2. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_CONNECT_RETRY=20, MASTER_HEARTBEAT_PERIOD=5;
include/start_slave.inc
connection master;
@@ -256,8 +262,10 @@ connection slave;
*** Flush logs on slave ***
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+set sql_log_bin= 0;
DROP TABLE t1;
+set sql_log_bin= 1;
connection master;
DROP TABLE t1;
RESET MASTER;
@@ -271,7 +279,7 @@ connection master;
SET @@global.slave_compressed_protocol=1;
connection slave;
include/stop_slave.inc
-RESET SLAVE;
+include/reset_slave.inc
SET @@global.slave_compressed_protocol=1;
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_CONNECT_RETRY=20, MASTER_HEARTBEAT_PERIOD=0.1;
include/start_slave.inc
@@ -283,7 +291,7 @@ SET @@global.slave_compressed_protocol=0;
*** Reset master ***
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_CONNECT_RETRY=20, MASTER_HEARTBEAT_PERIOD=0.1;
include/start_slave.inc
connection master;
@@ -294,7 +302,7 @@ Heartbeat events are received after reset of master (1 means 'yes'): 1
*** Reload master ***
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_PORT, MASTER_USER='root', MASTER_CONNECT_RETRY=20, MASTER_HEARTBEAT_PERIOD=0.1;
include/start_slave.inc
Heartbeat event received
diff --git a/mysql-test/suite/rpl/r/rpl_heartbeat_ssl.result b/mysql-test/suite/rpl/r/rpl_heartbeat_ssl.result
index ff7178ae700..533290d25ca 100644
--- a/mysql-test/suite/rpl/r/rpl_heartbeat_ssl.result
+++ b/mysql-test/suite/rpl/r/rpl_heartbeat_ssl.result
@@ -15,7 +15,8 @@ MASTER_LOG_FILE='MASTER_BINLOG',
MASTER_SSL=1,
MASTER_SSL_CA='MYSQL_TEST_DIR/std_data/cacert.pem',
MASTER_SSL_CERT='MYSQL_TEST_DIR/std_data/client-cert.pem',
-MASTER_SSL_KEY='MYSQL_TEST_DIR/std_data/client-key.pem';
+MASTER_SSL_KEY='MYSQL_TEST_DIR/std_data/client-key.pem',
+MASTER_USE_GTID=NO;
include/start_slave.inc
Master_SSL_Allowed: Yes
Heartbeat event has received
diff --git a/mysql-test/suite/rpl/r/rpl_hrtime.result b/mysql-test/suite/rpl/r/rpl_hrtime.result
index 5f0b8f4123a..230029d9119 100644
--- a/mysql-test/suite/rpl/r/rpl_hrtime.result
+++ b/mysql-test/suite/rpl/r/rpl_hrtime.result
@@ -37,7 +37,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1293832861/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/rpl/r/rpl_innodb_bug68220.result b/mysql-test/suite/rpl/r/rpl_innodb_bug68220.result
deleted file mode 100644
index a9c8c6d612f..00000000000
--- a/mysql-test/suite/rpl/r/rpl_innodb_bug68220.result
+++ /dev/null
@@ -1,233 +0,0 @@
-include/master-slave.inc
-[connection master]
-connection master;
-select variable_value into @master_rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select variable_value into @master_rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select variable_value into @master_rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select variable_value into @master_rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select variable_value into @master_system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select variable_value into @master_system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select variable_value into @master_system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select variable_value into @master_system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-connection slave;
-select variable_value into @slave_rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select variable_value into @slave_rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select variable_value into @slave_rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select variable_value into @slave_rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select variable_value into @slave_system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select variable_value into @slave_system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select variable_value into @slave_system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select variable_value into @slave_system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-connection master;
-CREATE DATABASE testdb;
-USE testdb;
-CREATE TABLE testdb.t1 (i int NOT NULL PRIMARY KEY) ENGINE=InnoDB;
-INSERT INTO testdb.t1 VALUES (1);
-connection master;
-select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select @rows_read - @master_rows_read;
-@rows_read - @master_rows_read
-0
-select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select @rows_updated - @master_rows_updated;
-@rows_updated - @master_rows_updated
-0
-select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select @rows_deleted - @master_rows_deleted;
-@rows_deleted - @master_rows_deleted
-0
-select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select @rows_inserted - @master_rows_inserted;
-@rows_inserted - @master_rows_inserted
-1
-select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select @system_rows_read - @master_system_rows_read;
-@system_rows_read - @master_system_rows_read
-0
-select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select @system_rows_updated - @master_system_rows_updated;
-@system_rows_updated - @master_system_rows_updated
-0
-select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select @system_rows_deleted - @master_system_rows_deleted;
-@system_rows_deleted - @master_system_rows_deleted
-0
-select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-select @system_rows_inserted - @master_system_rows_inserted;
-@system_rows_inserted - @master_system_rows_inserted
-0
-connection slave;
-select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select @rows_read - @slave_rows_read;
-@rows_read - @slave_rows_read
-0
-select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select @rows_updated - @slave_rows_updated;
-@rows_updated - @slave_rows_updated
-0
-select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select @rows_deleted - @slave_rows_deleted;
-@rows_deleted - @slave_rows_deleted
-0
-select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select @rows_inserted - @slave_rows_inserted;
-@rows_inserted - @slave_rows_inserted
-1
-select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select @system_rows_read - @slave_system_rows_read;
-@system_rows_read - @slave_system_rows_read
-0
-select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select @system_rows_updated - @slave_system_rows_updated;
-@system_rows_updated - @slave_system_rows_updated
-0
-select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select @system_rows_deleted - @slave_system_rows_deleted;
-@system_rows_deleted - @slave_system_rows_deleted
-0
-select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-select @system_rows_inserted - @slave_system_rows_inserted;
-@system_rows_inserted - @slave_system_rows_inserted
-0
-connection master;
-UPDATE t1 SET i=2 WHERE i=1;
-connection slave;
-connection master;
-select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select @rows_read - @master_rows_read;
-@rows_read - @master_rows_read
-1
-select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select @rows_updated - @master_rows_updated;
-@rows_updated - @master_rows_updated
-1
-select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select @rows_deleted - @master_rows_deleted;
-@rows_deleted - @master_rows_deleted
-0
-select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select @rows_inserted - @master_rows_inserted;
-@rows_inserted - @master_rows_inserted
-1
-select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select @system_rows_read - @master_system_rows_read;
-@system_rows_read - @master_system_rows_read
-0
-select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select @system_rows_updated - @master_system_rows_updated;
-@system_rows_updated - @master_system_rows_updated
-0
-select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select @system_rows_deleted - @master_system_rows_deleted;
-@system_rows_deleted - @master_system_rows_deleted
-0
-select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-select @system_rows_inserted - @master_system_rows_inserted;
-@system_rows_inserted - @master_system_rows_inserted
-0
-connection slave;
-select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select @rows_read - @slave_rows_read;
-@rows_read - @slave_rows_read
-1
-select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select @rows_updated - @slave_rows_updated;
-@rows_updated - @slave_rows_updated
-1
-select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select @rows_deleted - @slave_rows_deleted;
-@rows_deleted - @slave_rows_deleted
-0
-select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select @rows_inserted - @slave_rows_inserted;
-@rows_inserted - @slave_rows_inserted
-1
-select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select @system_rows_read - @slave_system_rows_read;
-@system_rows_read - @slave_system_rows_read
-0
-select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select @system_rows_updated - @slave_system_rows_updated;
-@system_rows_updated - @slave_system_rows_updated
-0
-select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select @system_rows_deleted - @slave_system_rows_deleted;
-@system_rows_deleted - @slave_system_rows_deleted
-0
-select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-select @system_rows_inserted - @slave_system_rows_inserted;
-@system_rows_inserted - @slave_system_rows_inserted
-0
-connection master;
-DELETE FROM t1 WHERE i=2;
-connection master;
-select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select @rows_read - @master_rows_read;
-@rows_read - @master_rows_read
-2
-select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select @rows_updated - @master_rows_updated;
-@rows_updated - @master_rows_updated
-1
-select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select @rows_deleted - @master_rows_deleted;
-@rows_deleted - @master_rows_deleted
-1
-select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select @rows_inserted - @master_rows_inserted;
-@rows_inserted - @master_rows_inserted
-1
-select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select @system_rows_read - @master_system_rows_read;
-@system_rows_read - @master_system_rows_read
-0
-select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select @system_rows_updated - @master_system_rows_updated;
-@system_rows_updated - @master_system_rows_updated
-0
-select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select @system_rows_deleted - @master_system_rows_deleted;
-@system_rows_deleted - @master_system_rows_deleted
-0
-select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-select @system_rows_inserted - @master_system_rows_inserted;
-@system_rows_inserted - @master_system_rows_inserted
-0
-connection slave;
-select variable_value into @rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select @rows_read - @slave_rows_read;
-@rows_read - @slave_rows_read
-2
-select variable_value into @rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select @rows_updated - @slave_rows_updated;
-@rows_updated - @slave_rows_updated
-1
-select variable_value into @rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select @rows_deleted - @slave_rows_deleted;
-@rows_deleted - @slave_rows_deleted
-1
-select variable_value into @rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select @rows_inserted - @slave_rows_inserted;
-@rows_inserted - @slave_rows_inserted
-1
-select variable_value into @system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select @system_rows_read - @slave_system_rows_read;
-@system_rows_read - @slave_system_rows_read
-0
-select variable_value into @system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select @system_rows_updated - @slave_system_rows_updated;
-@system_rows_updated - @slave_system_rows_updated
-0
-select variable_value into @system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select @system_rows_deleted - @slave_system_rows_deleted;
-@system_rows_deleted - @slave_system_rows_deleted
-0
-select variable_value into @system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-select @system_rows_inserted - @slave_system_rows_inserted;
-@system_rows_inserted - @slave_system_rows_inserted
-0
-connection master;
-DROP TABLE t1;
-DROP DATABASE testdb;
-connection slave;
-include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/rpl_loaddata.result b/mysql-test/suite/rpl/r/rpl_loaddata.result
index e759f34bb9d..0be197642e9 100644
--- a/mysql-test/suite/rpl/r/rpl_loaddata.result
+++ b/mysql-test/suite/rpl/r/rpl_loaddata.result
@@ -57,7 +57,9 @@ load data infile '../../std_data/rpl_loaddata.dat' into table t1;
connection slave;
include/wait_for_slave_sql_error.inc [errno=1062]
stop slave;
-reset slave;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-14. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
include/check_slave_no_error.inc
connection master;
reset master;
diff --git a/mysql-test/suite/rpl/r/rpl_log_pos.result b/mysql-test/suite/rpl/r/rpl_log_pos.result
index 7f5f34bf831..74080b3936f 100644
--- a/mysql-test/suite/rpl/r/rpl_log_pos.result
+++ b/mysql-test/suite/rpl/r/rpl_log_pos.result
@@ -9,7 +9,7 @@ File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000001 # <Binlog_Do_DB> <Binlog_Ignore_DB>
connection slave;
include/stop_slave.inc
-change master to master_log_pos=MASTER_LOG_POS;
+change master to master_log_pos=MASTER_LOG_POS, master_use_gtid=no;
start slave;
include/wait_for_slave_io_error.inc [errno=1236]
Last_IO_Error = 'Got fatal error 1236 from master when reading data from binary log: 'binlog truncated in the middle of event; consider out of disk space on master; the first event 'master-bin.000001' at XXX, the last event read from 'master-bin.000001' at XXX, the last byte read from 'master-bin.000001' at XXX.''
@@ -23,7 +23,7 @@ drop table if exists t1;
create table t1 (n int);
insert into t1 values (1),(2),(3);
connection slave;
-change master to master_log_pos=MASTER_LOG_POS;
+change master to master_log_pos=MASTER_LOG_POS, master_use_gtid=no;
start slave;
select * from t1 ORDER BY n;
n
diff --git a/mysql-test/suite/rpl/r/rpl_manual_change_index_file.result b/mysql-test/suite/rpl/r/rpl_manual_change_index_file.result
index 78a86437867..9de66d179a6 100644
--- a/mysql-test/suite/rpl/r/rpl_manual_change_index_file.result
+++ b/mysql-test/suite/rpl/r/rpl_manual_change_index_file.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
FLUSH LOGS;
CREATE TABLE t1(c1 INT);
connection slave;
diff --git a/mysql-test/suite/rpl/r/rpl_mariadb_slave_capability.result b/mysql-test/suite/rpl/r/rpl_mariadb_slave_capability.result
index ac846ac6c00..68e8b22dd02 100644
--- a/mysql-test/suite/rpl/r/rpl_mariadb_slave_capability.result
+++ b/mysql-test/suite/rpl/r/rpl_mariadb_slave_capability.result
@@ -4,6 +4,9 @@ connection master;
set @old_master_binlog_checksum= @@global.binlog_checksum;
connection slave;
include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+include/stop_slave.inc
# Test slave with no capability gets dummy event, which is ignored.
set @old_dbug= @@global.debug_dbug;
SET @@global.debug_dbug='+d,simulate_slave_capability_none';
diff --git a/mysql-test/suite/rpl/r/rpl_mdev382.result b/mysql-test/suite/rpl/r/rpl_mdev382.result
index b88b47b2dfa..6a91d9d89de 100644
--- a/mysql-test/suite/rpl/r/rpl_mdev382.result
+++ b/mysql-test/suite/rpl/r/rpl_mdev382.result
@@ -179,7 +179,7 @@ ROLLBACK/*!*/;
use `db1``; select 'oops!'`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -279,7 +279,7 @@ ROLLBACK/*!*/;
use `db1``; select 'oops!'`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -388,7 +388,7 @@ START TRANSACTION
use `ts``et`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/rpl/r/rpl_mdev6020.result b/mysql-test/suite/rpl/r/rpl_mdev6020.result
index b0cb392b04c..fbea6ac38d2 100644
--- a/mysql-test/suite/rpl/r/rpl_mdev6020.result
+++ b/mysql-test/suite/rpl/r/rpl_mdev6020.result
@@ -13,7 +13,7 @@ SET @old_engine= @@GLOBAL.default_storage_engine;
SET GLOBAL default_storage_engine=InnoDB;
SET @old_parallel= @@GLOBAL.slave_parallel_threads;
SET GLOBAL slave_parallel_threads=12;
-CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4, master_use_gtid=no;
include/start_slave.inc
connection master;
SET SQL_LOG_BIN=0;
diff --git a/mysql-test/suite/rpl/r/rpl_mdev6386.result b/mysql-test/suite/rpl/r/rpl_mdev6386.result
index d0e5144857a..d62543d8488 100644
--- a/mysql-test/suite/rpl/r/rpl_mdev6386.result
+++ b/mysql-test/suite/rpl/r/rpl_mdev6386.result
@@ -11,6 +11,8 @@ CALL mtr.add_suppression("Commit failed due to failure of an earlier commit on w
INSERT INTO t1 VALUES (1, 2);
SET sql_log_bin= 1;
CHANGE MASTER TO master_use_gtid= current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
Contents on slave before:
SELECT * FROM t1 ORDER BY a;
a b
diff --git a/mysql-test/suite/rpl/r/rpl_mdev_17614.result b/mysql-test/suite/rpl/r/rpl_mdev_17614.result
index ba077111522..0cc924749c8 100644
--- a/mysql-test/suite/rpl/r/rpl_mdev_17614.result
+++ b/mysql-test/suite/rpl/r/rpl_mdev_17614.result
@@ -31,7 +31,7 @@ a b c
2 2 3
stop slave;
include/wait_for_slave_to_stop.inc
-reset slave;
+include/reset_slave.inc
connection master;
reset master;
drop table t1;
@@ -191,7 +191,7 @@ a b c
2 2 3
stop slave;
include/wait_for_slave_to_stop.inc
-reset slave;
+include/reset_slave.inc
connection master;
reset master;
drop table t1;
diff --git a/mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result b/mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result
index 944ad9331ad..e94e097f41f 100644
--- a/mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result
+++ b/mysql-test/suite/rpl/r/rpl_mixed_binlog_max_cache_size.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
call mtr.add_suppression("Write to binary log failed: Multi-row statements required more than .max_binlog_stmt_cache_size");
call mtr.add_suppression("Write to binary log failed: Multi-statement transaction required more than .max_binlog_cache_size");
diff --git a/mysql-test/suite/rpl/r/rpl_mysql57_stm_temporal_round.result b/mysql-test/suite/rpl/r/rpl_mysql57_stm_temporal_round.result
index bedd103c2a0..7a5cf257458 100644
--- a/mysql-test/suite/rpl/r/rpl_mysql57_stm_temporal_round.result
+++ b/mysql-test/suite/rpl/r/rpl_mysql57_stm_temporal_round.result
@@ -10,7 +10,7 @@ connection master;
include/rpl_stop_server.inc [server_number=1]
include/rpl_start_server.inc [server_number=1]
connection slave;
-CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4, master_use_gtid=no;
include/start_slave.inc
connection master;
connection slave;
diff --git a/mysql-test/suite/rpl/r/rpl_mysql80_stm_temporal_round.result b/mysql-test/suite/rpl/r/rpl_mysql80_stm_temporal_round.result
index 23b3217895a..8e1d3d03952 100644
--- a/mysql-test/suite/rpl/r/rpl_mysql80_stm_temporal_round.result
+++ b/mysql-test/suite/rpl/r/rpl_mysql80_stm_temporal_round.result
@@ -10,7 +10,7 @@ connection master;
include/rpl_stop_server.inc [server_number=1]
include/rpl_start_server.inc [server_number=1]
connection slave;
-CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4, master_use_gtid=no;
include/start_slave.inc
connection master;
connection slave;
diff --git a/mysql-test/suite/rpl/r/rpl_old_master.result b/mysql-test/suite/rpl/r/rpl_old_master.result
index f985bee6832..5e9d8a88a20 100644
--- a/mysql-test/suite/rpl/r/rpl_old_master.result
+++ b/mysql-test/suite/rpl/r/rpl_old_master.result
@@ -8,7 +8,7 @@ include/rpl_start_server.inc [server_number=1]
connection slave;
SET @old_parallel= @@GLOBAL.slave_parallel_threads;
SET GLOBAL slave_parallel_threads=10;
-CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4;
+CHANGE MASTER TO master_host='127.0.0.1', master_port=SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4, master_use_gtid=no;
FLUSH TABLES WITH READ LOCK;
include/start_slave.inc
include/wait_for_slave_param.inc [Seconds_Behind_Master]
diff --git a/mysql-test/suite/rpl/r/rpl_old_master_29078.result b/mysql-test/suite/rpl/r/rpl_old_master_29078.result
index 944c6c2a0bb..093e2ae0c24 100644
--- a/mysql-test/suite/rpl/r/rpl_old_master_29078.result
+++ b/mysql-test/suite/rpl/r/rpl_old_master_29078.result
@@ -47,45 +47,47 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
connection slave;
-set global explicit_defaults_for_timestamp=1;
-reset slave;
+set global explicit_defaults_for_timestamp=0;
+include/reset_slave.inc
include/start_slave.inc
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `f1` timestamp NULL DEFAULT NULL,
- `f2` timestamp NULL DEFAULT NULL
+ `f1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `f2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `a` timestamp NULL DEFAULT NULL
+ `a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
set time_zone='+2:00';
select * from t1;
f1 f2
-NULL NULL
-NULL NULL
+2022-07-23 16:24:48 2022-07-23 16:24:48
+2022-07-23 16:25:35 0000-00-00 00:00:00
drop table t1;
include/stop_slave.inc
-set global explicit_defaults_for_timestamp=0;
-reset slave;
+set global explicit_defaults_for_timestamp=1;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
include/start_slave.inc
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `f1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `f2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `f1` timestamp NULL DEFAULT NULL,
+ `f2` timestamp NULL DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
- `a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
+ `a` timestamp NULL DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
select * from t1;
f1 f2
-2022-07-23 16:24:48 2022-07-23 16:24:48
-2022-07-23 16:25:35 0000-00-00 00:00:00
+NULL NULL
+NULL NULL
drop table t1;
connection master;
drop table t2;
diff --git a/mysql-test/suite/rpl/r/rpl_parallel_29322.result b/mysql-test/suite/rpl/r/rpl_parallel_29322.result
index 55fa6a4acc3..205a7dbc9cf 100644
--- a/mysql-test/suite/rpl/r/rpl_parallel_29322.result
+++ b/mysql-test/suite/rpl/r/rpl_parallel_29322.result
@@ -16,7 +16,7 @@ set @@global.slave_parallel_workers = 1;
include/start_slave.inc
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
connection master;
reset master;
create table t2 (a timestamp, b int);
@@ -109,7 +109,9 @@ connection slave;
set @@global.explicit_defaults_for_timestamp = 1;
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
reset master;
create table t2 (a timestamp, b int);
@@ -201,7 +203,9 @@ set @@global.slave_parallel_workers = 4;
include/start_slave.inc
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
reset master;
create table t2 (a timestamp, b int);
diff --git a/mysql-test/suite/rpl/r/rpl_parallel_mdev6589.result b/mysql-test/suite/rpl/r/rpl_parallel_mdev6589.result
index 47cdb3496da..ed297d10f2a 100644
--- a/mysql-test/suite/rpl/r/rpl_parallel_mdev6589.result
+++ b/mysql-test/suite/rpl/r/rpl_parallel_mdev6589.result
@@ -5,6 +5,8 @@ SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
include/stop_slave.inc
SET GLOBAL slave_parallel_threads=10;
CHANGE MASTER TO master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
*** MDEV-6589: Incorrect relay log start position when restarting SQL thread after error in parallel replication ***
connection server_1;
diff --git a/mysql-test/suite/rpl/r/rpl_parallel_multilevel2.result b/mysql-test/suite/rpl/r/rpl_parallel_multilevel2.result
index 674cd7a32b4..13508815877 100644
--- a/mysql-test/suite/rpl/r/rpl_parallel_multilevel2.result
+++ b/mysql-test/suite/rpl/r/rpl_parallel_multilevel2.result
@@ -18,11 +18,15 @@ SET @old_updates= @@GLOBAL.binlog_direct_non_transactional_updates;
SET GLOBAL binlog_direct_non_transactional_updates=OFF;
SET SESSION binlog_direct_non_transactional_updates=OFF;
CHANGE MASTER TO master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
connection server_3;
SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
include/stop_slave.inc
SET GLOBAL slave_parallel_threads=10;
CHANGE MASTER TO master_use_gtid=current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
connection server_1;
BEGIN;
CREATE TEMPORARY TABLE t2 (a INT PRIMARY KEY) ENGINE=MEMORY;
diff --git a/mysql-test/suite/rpl/r/rpl_parallel_temptable.result b/mysql-test/suite/rpl/r/rpl_parallel_temptable.result
index 1a1c12f836d..9519bffaa27 100644
--- a/mysql-test/suite/rpl/r/rpl_parallel_temptable.result
+++ b/mysql-test/suite/rpl/r/rpl_parallel_temptable.result
@@ -5,6 +5,8 @@ SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
include/stop_slave.inc
SET GLOBAL slave_parallel_threads=5;
CHANGE MASTER TO master_use_gtid= current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/start_slave.inc
connection server_1;
CREATE TABLE t1 (a INT PRIMARY KEY, b VARCHAR(100) CHARACTER SET utf8);
diff --git a/mysql-test/suite/rpl/r/rpl_perfschema_applier_status_by_coordinator.result b/mysql-test/suite/rpl/r/rpl_perfschema_applier_status_by_coordinator.result
index 88e1848d46e..ffffb580518 100644
--- a/mysql-test/suite/rpl/r/rpl_perfschema_applier_status_by_coordinator.result
+++ b/mysql-test/suite/rpl/r/rpl_perfschema_applier_status_by_coordinator.result
@@ -55,6 +55,7 @@ connection slave;
include/stop_slave.inc
reset slave;
reset master;
+set @@global.gtid_slave_pos= "";
set @saved_slave_trans_retry_interval= @@GLOBAL.slave_transaction_retry_interval;
set global slave_transaction_retry_interval=1;
include/start_slave.inc
diff --git a/mysql-test/suite/rpl/r/rpl_perfschema_connect_config.result b/mysql-test/suite/rpl/r/rpl_perfschema_connect_config.result
index 4ace84ffac4..27cb29d3968 100644
--- a/mysql-test/suite/rpl/r/rpl_perfschema_connect_config.result
+++ b/mysql-test/suite/rpl/r/rpl_perfschema_connect_config.result
@@ -87,6 +87,8 @@ include/assert.inc [Value returned by SSS and PS table for Using_Gtid should be
change master to
master_user = 'root',
master_use_gtid= CURRENT_POS;
+Warnings:
+Warning #### 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/assert.inc [Value returned by SSS and PS table for Using_Gtid should be same.]
# 3) Test for Auto_position= SLAVE_POS
diff --git a/mysql-test/suite/rpl/r/rpl_read_new_relay_log_info.result b/mysql-test/suite/rpl/r/rpl_read_new_relay_log_info.result
index 5c0002a911a..e193a7e1126 100644
--- a/mysql-test/suite/rpl/r/rpl_read_new_relay_log_info.result
+++ b/mysql-test/suite/rpl/r/rpl_read_new_relay_log_info.result
@@ -6,7 +6,7 @@ DROP TABLE t1;
connection slave;
==== Check that we can understand the new format of relay-log.info ====
include/stop_slave.inc
-RESET SLAVE;
+include/reset_slave.inc
# Read relay-log.info
START SLAVE IO_THREAD;
include/wait_for_slave_io_to_start.inc
diff --git a/mysql-test/suite/rpl/r/rpl_read_old_relay_log_info.result b/mysql-test/suite/rpl/r/rpl_read_old_relay_log_info.result
index 217bc726e0e..151a00a514b 100644
--- a/mysql-test/suite/rpl/r/rpl_read_old_relay_log_info.result
+++ b/mysql-test/suite/rpl/r/rpl_read_old_relay_log_info.result
@@ -6,7 +6,7 @@ DROP TABLE t1;
connection slave;
==== Check that we still understand the old format of relay-log.info ====
include/stop_slave.inc
-RESET SLAVE;
+include/reset_slave.inc
# Read relay-log.info
START SLAVE IO_THREAD;
include/wait_for_slave_io_to_start.inc
diff --git a/mysql-test/suite/rpl/r/rpl_reset_slave_fail.result b/mysql-test/suite/rpl/r/rpl_reset_slave_fail.result
index 34ce68cb079..ff2da0a900a 100644
--- a/mysql-test/suite/rpl/r/rpl_reset_slave_fail.result
+++ b/mysql-test/suite/rpl/r/rpl_reset_slave_fail.result
@@ -22,7 +22,7 @@ START SLAVE;
ERROR HY000: Could not initialize master info structure for ''; more error messages can be found in the MariaDB error log
START SLAVE;
ERROR HY000: Could not initialize master info structure for ''; more error messages can be found in the MariaDB error log
-RESET SLAVE;
+include/reset_slave.inc
DROP TABLE t1;
START SLAVE UNTIL MASTER_LOG_FILE= 'MASTER_LOG_FILE', MASTER_LOG_POS= MASTER_LOG_POS;;
include/wait_for_slave_sql_to_stop.inc
diff --git a/mysql-test/suite/rpl/r/rpl_row_001.result b/mysql-test/suite/rpl/r/rpl_row_001.result
index 976ac0996bf..926404d29be 100644
--- a/mysql-test/suite/rpl/r/rpl_row_001.result
+++ b/mysql-test/suite/rpl/r/rpl_row_001.result
@@ -6,7 +6,7 @@ connection master;
RESET MASTER;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
connection master;
SELECT COUNT(*) FROM t1;
COUNT(*)
diff --git a/mysql-test/suite/rpl/r/rpl_row_colSize.result b/mysql-test/suite/rpl/r/rpl_row_colSize.result
index 748d83a7f8e..dbfb9325f9c 100644
--- a/mysql-test/suite/rpl/r/rpl_row_colSize.result
+++ b/mysql-test/suite/rpl/r/rpl_row_colSize.result
@@ -11,7 +11,7 @@ Warnings:
Note 1051 Unknown table 'test.t1'
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
CREATE TABLE t1 (a DECIMAL(5,2));
connection master;
CREATE TABLE t1 (a DECIMAL(20, 10));
@@ -25,7 +25,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -34,7 +36,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a DECIMAL(27, 9));
connection master;
CREATE TABLE t1 (a DECIMAL(27, 18));
@@ -48,7 +52,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -57,7 +63,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a NUMERIC(5,2));
connection master;
CREATE TABLE t1 (a NUMERIC(20, 10));
@@ -71,7 +79,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -81,7 +91,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a FLOAT(20));
connection master;
CREATE TABLE t1 (a FLOAT(47));
@@ -95,7 +107,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -105,7 +119,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a BIT(5));
connection master;
CREATE TABLE t1 (a BIT(64));
@@ -119,7 +135,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -128,7 +146,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a BIT(11));
connection master;
CREATE TABLE t1 (a BIT(12));
@@ -142,7 +162,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -152,7 +174,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a SET('4'));
connection master;
CREATE TABLE t1 (a SET('1','2','3','4','5','6','7','8','9'));
@@ -166,7 +190,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -176,7 +202,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a CHAR(10));
connection master;
CREATE TABLE t1 (a CHAR(20));
@@ -190,7 +218,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -200,7 +230,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a ENUM('44','54'));
connection master;
CREATE TABLE t1 (a ENUM(
@@ -245,7 +277,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -255,7 +289,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a VARCHAR(100));
connection master;
CREATE TABLE t1 (a VARCHAR(2000));
@@ -269,7 +305,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -278,7 +316,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a VARCHAR(10));
connection master;
CREATE TABLE t1 (a VARCHAR(200));
@@ -292,7 +332,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -301,7 +343,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a VARCHAR(1000));
connection master;
CREATE TABLE t1 (a VARCHAR(2000));
@@ -315,7 +359,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
@@ -325,7 +371,9 @@ connection master;
DROP TABLE IF EXISTS t1;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
CREATE TABLE t1 (a TINYBLOB);
connection master;
CREATE TABLE t1 (a LONGBLOB);
@@ -339,7 +387,9 @@ SELECT COUNT(*) FROM t1;
COUNT(*)
0
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
diff --git a/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result b/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result
index 660c736795b..8ce08e9d550 100644
--- a/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result
+++ b/mysql-test/suite/rpl/r/rpl_row_flsh_tbls.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+change master to master_use_gtid=no;
+include/start_slave.inc
+connection master;
create table t1 (a int) ENGINE=MyISAM;
insert into t1 values (10);
create table t2 (a int) ENGINE=MyISAM;
diff --git a/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result b/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result
index 0704f5c69a1..bf63dc57c4b 100644
--- a/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result
+++ b/mysql-test/suite/rpl/r/rpl_row_loaddata_concurrent.result
@@ -75,7 +75,9 @@ load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
connection slave;
include/wait_for_slave_sql_error.inc [errno=1062]
stop slave;
-reset slave;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-11. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
include/check_slave_no_error.inc
connection master;
reset master;
diff --git a/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result b/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result
index 83f16122d96..67251e2ef72 100644
--- a/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result
+++ b/mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result
@@ -91,7 +91,7 @@ include/wait_for_slave_to_stop.inc
connection master;
reset master;
connection slave;
-reset slave;
+include/reset_slave.inc
start slave;
include/wait_for_slave_to_start.inc
connection master;
@@ -168,7 +168,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -191,7 +191,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -221,7 +221,7 @@ include/wait_for_slave_to_stop.inc
connection master;
reset master;
connection slave;
-reset slave;
+include/reset_slave.inc
start slave;
include/wait_for_slave_to_start.inc
connection master;
@@ -306,7 +306,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -335,7 +335,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1000000000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
@@ -356,7 +356,7 @@ include/wait_for_slave_to_stop.inc
connection master;
reset master;
connection slave;
-reset slave;
+include/reset_slave.inc
start slave;
include/wait_for_slave_to_start.inc
connection master;
diff --git a/mysql-test/suite/rpl/r/rpl_row_reset_slave.result b/mysql-test/suite/rpl/r/rpl_row_reset_slave.result
index b9e98d5a97d..5e595447e50 100644
--- a/mysql-test/suite/rpl/r/rpl_row_reset_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_row_reset_slave.result
@@ -7,7 +7,7 @@ include/stop_slave.inc
change master to master_user='test';
Master_User = 'test'
Master_Host = '127.0.0.1'
-reset slave;
+include/reset_slave.inc
Master_User = 'test'
Master_Host = '127.0.0.1'
change master to master_user='root';
@@ -15,13 +15,13 @@ include/start_slave.inc
Master_User = 'root'
Master_Host = '127.0.0.1'
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
connection master;
create temporary table t1 (a int);
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
show status like 'slave_open_temp_tables';
Variable_name Value
@@ -30,7 +30,7 @@ connection master;
drop temporary table if exists t1;
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/check_slave_no_error.inc
change master to master_user='impossible_user_name';
start slave;
@@ -44,13 +44,14 @@ change master to master_user='impossible_user_name';
start slave;
include/wait_for_slave_io_error.inc [errno=1045]
include/stop_slave_sql.inc
-reset slave;
+include/reset_slave.inc
include/check_slave_no_error.inc
change master to master_user='root';
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
include/stop_slave.inc
reset slave all;
+set @@global.gtid_slave_pos= "";
start slave;
ERROR HY000: Misconfigured slave: MASTER_HOST was not set; Fix in config file or with CHANGE MASTER TO
CHANGE MASTER TO MASTER_HOST= 'MASTER_HOST', MASTER_USER= 'MASTER_USER', MASTER_PORT= MASTER_PORT;
diff --git a/mysql-test/suite/rpl/r/rpl_row_until.result b/mysql-test/suite/rpl/r/rpl_row_until.result
index 82268ce72eb..8ef10bf47b5 100644
--- a/mysql-test/suite/rpl/r/rpl_row_until.result
+++ b/mysql-test/suite/rpl/r/rpl_row_until.result
@@ -10,7 +10,7 @@ INSERT INTO t2 VALUES (3),(4);
DROP TABLE t2;
connection slave;
include/stop_slave.inc
-RESET SLAVE;
+include/reset_slave.inc
CHANGE MASTER TO MASTER_USER='root', MASTER_CONNECT_RETRY=1, MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_MYPORT;
connection slave;
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_drop_t1;
@@ -52,7 +52,7 @@ START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=MASTER
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS;
include/stop_slave.inc
-RESET SLAVE;
+include/reset_slave.inc
include/start_slave.inc
include/rpl_reset.inc
connection master;
diff --git a/mysql-test/suite/rpl/r/rpl_seconds_behind_master_spike.result b/mysql-test/suite/rpl/r/rpl_seconds_behind_master_spike.result
index 4eeb863bb40..eeafd679187 100644
--- a/mysql-test/suite/rpl/r/rpl_seconds_behind_master_spike.result
+++ b/mysql-test/suite/rpl/r/rpl_seconds_behind_master_spike.result
@@ -2,6 +2,9 @@ include/master-slave.inc
[connection master]
connection slave;
include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+include/stop_slave.inc
SET @save_dbug= @@GLOBAL.debug_dbug;
SET @@global.debug_dbug="+d,pause_sql_thread_on_fde";
include/start_slave.inc
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync.result b/mysql-test/suite/rpl/r/rpl_semi_sync.result
index d18bd1efda7..edd5e7748e0 100644
--- a/mysql-test/suite/rpl/r/rpl_semi_sync.result
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync.result
@@ -6,16 +6,18 @@ call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
+set sql_log_bin=0;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");
+set sql_log_bin=1;
connection master;
#
# Uninstall semi-sync plugins on master and slave
#
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
set global rpl_semi_sync_master_enabled= 0;
set global rpl_semi_sync_slave_enabled= 0;
connection master;
@@ -310,7 +312,7 @@ Variable_name Value
Rpl_semi_sync_master_yes_tx 0
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/kill_binlog_dump_threads.inc
connection slave;
include/start_slave.inc
@@ -340,7 +342,7 @@ Rpl_semi_sync_master_yes_tx 3
#
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
connection master;
reset master;
include/kill_binlog_dump_threads.inc
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync.result b/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync.result
index f2240817489..7341eb547f3 100644
--- a/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync.result
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync.result
@@ -7,16 +7,18 @@ call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
+set sql_log_bin=0;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");
+set sql_log_bin=1;
connection master;
#
# Uninstall semi-sync plugins on master and slave
#
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
set global rpl_semi_sync_master_enabled= 0;
set global rpl_semi_sync_slave_enabled= 0;
connection master;
@@ -311,7 +313,7 @@ Variable_name Value
Rpl_semi_sync_master_yes_tx 0
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/kill_binlog_dump_threads.inc
connection slave;
include/start_slave.inc
@@ -341,7 +343,7 @@ Rpl_semi_sync_master_yes_tx 3
#
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
connection master;
reset master;
include/kill_binlog_dump_threads.inc
diff --git a/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync_row.result b/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync_row.result
index fcced801d65..d75a3a2c9b7 100644
--- a/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync_row.result
+++ b/mysql-test/suite/rpl/r/rpl_semi_sync_after_sync_row.result
@@ -7,16 +7,18 @@ call mtr.add_suppression("Read semi-sync reply");
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.");
call mtr.add_suppression("mysqld: Got an error reading communication packets");
connection slave;
+set sql_log_bin=0;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");
+set sql_log_bin=1;
connection master;
#
# Uninstall semi-sync plugins on master and slave
#
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
set global rpl_semi_sync_master_enabled= 0;
set global rpl_semi_sync_slave_enabled= 0;
connection master;
@@ -311,7 +313,7 @@ Variable_name Value
Rpl_semi_sync_master_yes_tx 0
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/kill_binlog_dump_threads.inc
connection slave;
include/start_slave.inc
@@ -341,7 +343,7 @@ Rpl_semi_sync_master_yes_tx 3
#
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
connection master;
reset master;
include/kill_binlog_dump_threads.inc
diff --git a/mysql-test/suite/rpl/r/rpl_server_id2.result b/mysql-test/suite/rpl/r/rpl_server_id2.result
index 74145645920..3d8eeb02ca6 100644
--- a/mysql-test/suite/rpl/r/rpl_server_id2.result
+++ b/mysql-test/suite/rpl/r/rpl_server_id2.result
@@ -1,6 +1,9 @@
include/master-slave.inc
[connection master]
connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
create table t1 (n int);
reset master;
stop slave;
diff --git a/mysql-test/suite/rpl/r/rpl_server_id_ignore.result b/mysql-test/suite/rpl/r/rpl_server_id_ignore.result
index 22f739d1ec0..3c7f2950d16 100644
--- a/mysql-test/suite/rpl/r/rpl_server_id_ignore.result
+++ b/mysql-test/suite/rpl/r/rpl_server_id_ignore.result
@@ -11,7 +11,7 @@ ignore server id list:
change master to IGNORE_SERVER_IDS= (10, 100);
*** must be 10, 100 ***
ignore server id list: 10, 100
-reset slave;
+include/reset_slave.inc
*** must be empty due to reset slave ***
ignore server id list: 10, 100
change master to IGNORE_SERVER_IDS= (10, 100);
@@ -33,7 +33,7 @@ Tables_in_test
*** allowing events from master ***
stop slave;
include/wait_for_slave_to_stop.inc
-reset slave;
+include/reset_slave.inc
change master to IGNORE_SERVER_IDS= (10, 100);
*** the list must remain (10, 100) after reset slave ***
change master to IGNORE_SERVER_IDS= ();
diff --git a/mysql-test/suite/rpl/r/rpl_skip_replication.result b/mysql-test/suite/rpl/r/rpl_skip_replication.result
index 59d5b50e5cc..96e0a30331d 100644
--- a/mysql-test/suite/rpl/r/rpl_skip_replication.result
+++ b/mysql-test/suite/rpl/r/rpl_skip_replication.result
@@ -1,6 +1,11 @@
include/master-slave.inc
[connection master]
connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
+connection slave;
CREATE USER 'nonsuperuser'@'127.0.0.1';
GRANT ALTER,CREATE,DELETE,DROP,EVENT,INSERT,PROCESS,REPLICATION SLAVE,
SELECT,UPDATE ON *.* TO 'nonsuperuser'@'127.0.0.1';
diff --git a/mysql-test/suite/rpl/r/rpl_slave_alias_replica.result b/mysql-test/suite/rpl/r/rpl_slave_alias_replica.result
index 2a49e80075f..0ede17132df 100644
--- a/mysql-test/suite/rpl/r/rpl_slave_alias_replica.result
+++ b/mysql-test/suite/rpl/r/rpl_slave_alias_replica.result
@@ -30,6 +30,7 @@ include/wait_for_slave_io_to_stop.inc
include/wait_for_slave_sql_to_stop.inc
"Command: RESET SLAVE ALL --> RESET REPLICA ALL"
RESET REPLICA ALL;
+set @@global.gtid_slave_pos= "";
connection master;
RESET MASTER;
CREATE TABLE t(f INT) ENGINE=INNODB;
diff --git a/mysql-test/suite/rpl/r/rpl_slave_max_statement_time.result b/mysql-test/suite/rpl/r/rpl_slave_max_statement_time.result
new file mode 100644
index 00000000000..0314797f6be
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_slave_max_statement_time.result
@@ -0,0 +1,170 @@
+include/master-slave.inc
+[connection master]
+#
+# Set up
+#
+connection master;
+SET STATEMENT sql_log_bin=0 FOR CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format");
+SET STATEMENT sql_log_bin=0 FOR CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format");
+connection slave;
+SET STATEMENT sql_log_bin=0 FOR CALL mtr.add_suppression("Slave log event execution was interrupted");
+SET STATEMENT sql_log_bin=0 FOR CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format");
+SET @save_slave_max_statement_time=@@GLOBAL.slave_max_statement_time;
+#
+# Test Case 1) Using a serial slave, the SQL thread should time out when
+# its underlying event executes for longer than @@slave_max_statement_time.
+#
+connection master;
+create table t1(a int not null auto_increment, b int, primary key(a)) engine=InnoDB;
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/stop_slave.inc
+SET @old_slave_max_statement_time=@@GLOBAL.slave_max_statement_time;
+SET GLOBAL slave_max_statement_time=0.75;
+connection master;
+# Long running command due to a lock conflict
+INSERT INTO t1(b) VALUES (1);
+include/save_master_gtid.inc
+connection slave1;
+BEGIN;
+INSERT INTO t1(b) VALUES (1);
+connection slave;
+# Starting slave to receive event which will take longer to execute
+# than slave_max_statement_time
+START SLAVE;
+include/wait_for_slave_sql_error.inc [errno=4192]
+# Ensuring event was not processed..
+# ..success
+# Remove slave timeout and catch up to master
+SET GLOBAL slave_max_statement_time=0;
+connection slave1;
+ROLLBACK;
+include/start_slave.inc
+include/sync_with_master_gtid.inc
+# Test case cleanup
+connection master;
+DROP TABLE t1;
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/stop_slave.inc
+SET GLOBAL slave_max_statement_time=@old_slave_max_statement_time;
+include/start_slave.inc
+#
+# Test Case 2) Using a parallel slave, a worker thread should time out
+# when its underlying event executes for longer than
+# @@slave_max_statement_time
+#
+include/stop_slave.inc
+SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
+SET @old_parallel_mode=@@GLOBAL.slave_parallel_mode;
+SET GLOBAL slave_parallel_threads=2;
+SET GLOBAL slave_parallel_mode='optimistic';
+include/start_slave.inc
+connection master;
+create table t1(a int not null auto_increment, b int, primary key(a)) engine=InnoDB;
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/stop_slave.inc
+SET @old_slave_max_statement_time=@@GLOBAL.slave_max_statement_time;
+SET GLOBAL slave_max_statement_time=0.75;
+connection master;
+# Long running command due to a lock conflict
+INSERT INTO t1(b) VALUES (1);
+include/save_master_gtid.inc
+connection slave1;
+BEGIN;
+INSERT INTO t1(b) VALUES (1);
+connection slave;
+# Starting slave to receive event which will take longer to execute
+# than slave_max_statement_time
+START SLAVE;
+include/wait_for_slave_sql_error.inc [errno=4192]
+# Ensuring event was not processed..
+# ..success
+# Remove slave timeout and catch up to master
+SET GLOBAL slave_max_statement_time=0;
+connection slave1;
+ROLLBACK;
+include/start_slave.inc
+include/sync_with_master_gtid.inc
+# Test case cleanup
+connection master;
+DROP TABLE t1;
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/stop_slave.inc
+SET GLOBAL slave_max_statement_time=@old_slave_max_statement_time;
+include/start_slave.inc
+include/stop_slave.inc
+SET GLOBAL slave_parallel_mode=@old_parallel_mode;
+SET GLOBAL slave_parallel_threads=@old_parallel_threads;
+include/start_slave.inc
+#
+# Test Case 3) Load-based log events (from LOAD DATA INFILE) should time
+# out if their execution time exceeds @@slave_max_statement_time
+#
+connection master;
+create table t1(a int not null auto_increment, b int, primary key(a)) engine=InnoDB;
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/stop_slave.inc
+SET @old_slave_max_statement_time=@@GLOBAL.slave_max_statement_time;
+SET GLOBAL slave_max_statement_time=0.75;
+connection master;
+# Long running command due to a lock conflict
+load data infile '../../std_data/rpl_loaddata.dat' into table t1;
+include/save_master_gtid.inc
+connection slave1;
+BEGIN;
+INSERT INTO t1(b) VALUES (1);
+connection slave;
+# Starting slave to receive event which will take longer to execute
+# than slave_max_statement_time
+START SLAVE;
+include/wait_for_slave_sql_error.inc [errno=4192]
+# Ensuring event was not processed..
+# ..success
+# Remove slave timeout and catch up to master
+SET GLOBAL slave_max_statement_time=0;
+connection slave1;
+ROLLBACK;
+include/start_slave.inc
+include/sync_with_master_gtid.inc
+# Test case cleanup
+connection master;
+DROP TABLE t1;
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/stop_slave.inc
+SET GLOBAL slave_max_statement_time=@old_slave_max_statement_time;
+include/start_slave.inc
+#
+# Test Case 4) Locally executed long running statements should not time
+# out due to @@slave_max_statement_time
+#
+connection slave;
+include/stop_slave.inc
+SET @old_slave_max_statement_time=@@GLOBAL.slave_max_statement_time;
+SET @old_gtid_domain_id=@@GLOBAL.gtid_domain_id;
+SET @@GLOBAL.slave_max_statement_time=0.75;
+SET @@GLOBAL.gtid_domain_id=1;
+include/start_slave.inc
+CREATE TABLE t2 (a int);
+SET STATEMENT sql_log_bin=0 FOR INSERT INTO t2 SELECT SLEEP(1);
+DROP TABLE t2;
+include/stop_slave.inc
+SET GLOBAL gtid_domain_id=@old_gtid_domain_id;
+SET GLOBAL slave_max_statement_time=@old_slave_max_statement_time;
+include/start_slave.inc
+# Cleanup
+include/stop_slave.inc
+SET GLOBAL slave_max_statement_time=@save_slave_max_statement_time;
+include/start_slave.inc
+include/rpl_end.inc
+# End of rpl_slave_max_statement_time.test
diff --git a/mysql-test/suite/rpl/r/rpl_slave_skip.result b/mysql-test/suite/rpl/r/rpl_slave_skip.result
index b9fe6842a11..8896199f499 100644
--- a/mysql-test/suite/rpl/r/rpl_slave_skip.result
+++ b/mysql-test/suite/rpl/r/rpl_slave_skip.result
@@ -63,7 +63,7 @@ c d
3 27
STOP SLAVE;
include/wait_for_slave_to_stop.inc
-RESET SLAVE;
+include/reset_slave.inc
connection master;
RESET MASTER;
SET SESSION BINLOG_FORMAT=STATEMENT;
diff --git a/mysql-test/suite/rpl/r/rpl_sp.result b/mysql-test/suite/rpl/r/rpl_sp.result
index 0bb3d9dc52a..55a826b3213 100644
--- a/mysql-test/suite/rpl/r/rpl_sp.result
+++ b/mysql-test/suite/rpl/r/rpl_sp.result
@@ -784,7 +784,7 @@ DELIMITER /*!*/;
ROLLBACK/*!*/;
SET TIMESTAMP=t/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/rpl/r/rpl_start_alter_mysqlbinlog_1.result b/mysql-test/suite/rpl/r/rpl_start_alter_mysqlbinlog_1.result
index e008bbc81a7..2c3b694c45d 100644
--- a/mysql-test/suite/rpl/r/rpl_start_alter_mysqlbinlog_1.result
+++ b/mysql-test/suite/rpl/r/rpl_start_alter_mysqlbinlog_1.result
@@ -5,6 +5,8 @@ set global binlog_alter_two_phase=true;
connection slave;
include/stop_slave.inc
change master to master_use_gtid= current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
set global gtid_strict_mode=1;
# Legacy Master Slave
connect master_node,127.0.0.1,root,,$db_name, $M_port;
diff --git a/mysql-test/suite/rpl/r/rpl_start_alter_options.result b/mysql-test/suite/rpl/r/rpl_start_alter_options.result
index 30854b12be1..4c6135aaf5e 100644
--- a/mysql-test/suite/rpl/r/rpl_start_alter_options.result
+++ b/mysql-test/suite/rpl/r/rpl_start_alter_options.result
@@ -3,6 +3,8 @@ include/master-slave.inc
connection slave;
stop slave;
change master to master_use_gtid= current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
SET GLOBAL slave_parallel_threads=4;
set global slave_parallel_mode=optimistic;
set global gtid_strict_mode=1;
@@ -94,6 +96,8 @@ include/start_slave.inc
connection slave;
stop slave;
change master to master_use_gtid= current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
SET GLOBAL slave_parallel_threads=4;
set global slave_parallel_mode=optimistic;
set global gtid_strict_mode=1;
@@ -185,6 +189,8 @@ include/start_slave.inc
connection slave;
stop slave;
change master to master_use_gtid= current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
SET GLOBAL slave_parallel_threads=4;
set global slave_parallel_mode=optimistic;
set global gtid_strict_mode=1;
@@ -315,6 +321,8 @@ include/start_slave.inc
connection slave;
stop slave;
change master to master_use_gtid= current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
SET GLOBAL slave_parallel_threads=4;
set global slave_parallel_mode=optimistic;
set global gtid_strict_mode=1;
@@ -406,6 +414,8 @@ include/start_slave.inc
connection slave;
stop slave;
change master to master_use_gtid= current_pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
SET GLOBAL slave_parallel_threads=4;
set global slave_parallel_mode=optimistic;
set global gtid_strict_mode=1;
diff --git a/mysql-test/suite/rpl/r/rpl_start_alter_restart_master.result b/mysql-test/suite/rpl/r/rpl_start_alter_restart_master.result
index a2aba33aee0..2b53fde52a7 100644
--- a/mysql-test/suite/rpl/r/rpl_start_alter_restart_master.result
+++ b/mysql-test/suite/rpl/r/rpl_start_alter_restart_master.result
@@ -1,6 +1,10 @@
include/master-slave.inc
[connection master]
connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection slave;
SET @old_debug_slave= @@global.debug;
stop slave;
SET GLOBAL slave_parallel_threads=4;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_000001.result b/mysql-test/suite/rpl/r/rpl_stm_000001.result
index 9ef2ca3bc53..5d6d61d175b 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_000001.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_000001.result
@@ -49,7 +49,7 @@ connection master;
reset master;
connection slave;
stop slave;
-reset slave;
+include/reset_slave.inc
connection master;
connection slave;
lock tables t1 read;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result b/mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result
index 944ad9331ad..e94e097f41f 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_binlog_max_cache_size.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
call mtr.add_suppression("Write to binary log failed: Multi-row statements required more than .max_binlog_stmt_cache_size");
call mtr.add_suppression("Write to binary log failed: Multi-statement transaction required more than .max_binlog_cache_size");
diff --git a/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result b/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result
index 660c736795b..8ce08e9d550 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_flsh_tbls.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+change master to master_use_gtid=no;
+include/start_slave.inc
+connection master;
create table t1 (a int) ENGINE=MyISAM;
insert into t1 values (10);
create table t2 (a int) ENGINE=MyISAM;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result b/mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result
index f510eae74f8..a437b66dd78 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_loaddata_concurrent.result
@@ -74,7 +74,9 @@ load data CONCURRENT infile '../../std_data/rpl_loaddata.dat' into table t1;
connection slave;
include/wait_for_slave_sql_error.inc [errno=1062]
stop slave;
-reset slave;
+include/reset_slave.inc
+Warnings:
+Warning 1948 Specified value for @@gtid_slave_pos contains no value for replication domain 0. This conflicts with the binary log which contains GTID 0-2-14. If MASTER_GTID_POS=CURRENT_POS is used, the binlog position will override the new value of @@gtid_slave_pos
include/check_slave_no_error.inc
connection master;
reset master;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result b/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result
index 1ba2d1b624b..0a365b30b38 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_reset_slave.result
@@ -7,7 +7,7 @@ include/stop_slave.inc
change master to master_user='test';
Master_User = 'test'
Master_Host = '127.0.0.1'
-reset slave;
+include/reset_slave.inc
Master_User = 'test'
Master_Host = '127.0.0.1'
change master to master_user='root';
@@ -15,13 +15,13 @@ include/start_slave.inc
Master_User = 'root'
Master_Host = '127.0.0.1'
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
connection master;
create temporary table t1 (a int);
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
show status like 'slave_open_temp_tables';
Variable_name Value
@@ -30,7 +30,7 @@ connection master;
drop temporary table if exists t1;
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
include/check_slave_no_error.inc
change master to master_user='impossible_user_name';
start slave;
@@ -44,13 +44,14 @@ change master to master_user='impossible_user_name';
start slave;
include/wait_for_slave_io_error.inc [errno=1045]
include/stop_slave_sql.inc
-reset slave;
+include/reset_slave.inc
include/check_slave_no_error.inc
change master to master_user='root';
-reset slave;
+include/reset_slave.inc
include/start_slave.inc
include/stop_slave.inc
reset slave all;
+set @@global.gtid_slave_pos= "";
start slave;
ERROR HY000: Misconfigured slave: MASTER_HOST was not set; Fix in config file or with CHANGE MASTER TO
CHANGE MASTER TO MASTER_HOST= 'MASTER_HOST', MASTER_USER= 'MASTER_USER', MASTER_PORT= MASTER_PORT;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result b/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result
index 992e6c2181b..40910b8c1f2 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result
@@ -104,13 +104,15 @@ connection master;
RESET MASTER;
connection slave;
include/stop_slave.inc
-CHANGE MASTER TO master_log_pos=MASTER_POS;
+CHANGE MASTER TO master_log_pos=MASTER_POS, master_use_gtid=no;
START SLAVE;
include/wait_for_slave_param.inc [Last_IO_Errno]
Last_IO_Errno = '1236'
Last_IO_Error = 'Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'master-bin.000001' at XXX, the last event read from 'master-bin.000001' at XXX, the last byte read from 'master-bin.000001' at XXX.''
include/stop_slave.inc
RESET SLAVE;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
RESET MASTER;
connection slave;
diff --git a/mysql-test/suite/rpl/r/rpl_stm_until.result b/mysql-test/suite/rpl/r/rpl_stm_until.result
index 65f188c11a0..b51e3d847e3 100644
--- a/mysql-test/suite/rpl/r/rpl_stm_until.result
+++ b/mysql-test/suite/rpl/r/rpl_stm_until.result
@@ -69,7 +69,9 @@ Note 1254 Slave is already running
connection slave;
include/stop_slave.inc
drop table if exists t1;
-reset slave;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
change master to master_host='127.0.0.1',master_port=MASTER_PORT, master_user='root';
connection master;
drop table if exists t1;
diff --git a/mysql-test/suite/rpl/r/rpl_stop_slave.result b/mysql-test/suite/rpl/r/rpl_stop_slave.result
index a4dbf13290a..50a52d4d4b3 100644
--- a/mysql-test/suite/rpl/r/rpl_stop_slave.result
+++ b/mysql-test/suite/rpl/r/rpl_stop_slave.result
@@ -1,5 +1,10 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+connection master;
# BUG#56118 STOP SLAVE does not wait till trx with CREATE TMP TABLE ends
#
diff --git a/mysql-test/suite/rpl/r/rpl_timestamp.result b/mysql-test/suite/rpl/r/rpl_timestamp.result
index 5e38de40b42..d287bad4492 100644
--- a/mysql-test/suite/rpl/r/rpl_timestamp.result
+++ b/mysql-test/suite/rpl/r/rpl_timestamp.result
@@ -7,15 +7,15 @@ create table t1 (f1 timestamp, f2 timestamp);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `f1` timestamp NULL DEFAULT NULL,
- `f2` timestamp NULL DEFAULT NULL
+ `f1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `f2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
connection slave;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `f1` timestamp NULL DEFAULT NULL,
- `f2` timestamp NULL DEFAULT NULL
+ `f1` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
+ `f2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
connection master;
drop table t1;
@@ -28,7 +28,7 @@ ROLLBACK/*!*/;
use `test`/*!*/;
SET TIMESTAMP=1656940000/*!*/;
SET @@session.pseudo_thread_id=999999999/*!*/;
-SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=1/*!*/;
+SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1, @@session.check_constraint_checks=1, @@session.sql_if_exists=0, @@session.explicit_defaults_for_timestamp=0/*!*/;
SET @@session.sql_mode=1411383296/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C latin1 *//*!*/;
diff --git a/mysql-test/suite/rpl/r/rpl_trigger.result b/mysql-test/suite/rpl/r/rpl_trigger.result
index 06d5a3c895f..f4f700ac477 100644
--- a/mysql-test/suite/rpl/r/rpl_trigger.result
+++ b/mysql-test/suite/rpl/r/rpl_trigger.result
@@ -1,5 +1,9 @@
include/master-slave.inc
[connection master]
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
connection master;
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
@@ -961,7 +965,9 @@ include/rpl_stop_server.inc [server_number=1]
include/rpl_start_server.inc [server_number=1]
--> Master binlog: Server ver: 5.0.16-debug-log, Binlog ver: 4
connection slave;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
START SLAVE;
SELECT MASTER_POS_WAIT('master-bin.000001', 513) >= 0;
MASTER_POS_WAIT('master-bin.000001', 513) >= 0
@@ -992,7 +998,9 @@ DROP TRIGGER trg1;
DROP TABLE t1;
DROP TABLE t2;
STOP SLAVE;
-RESET SLAVE;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection master;
SHOW TABLES LIKE 't_';
Tables_in_test (t_)
@@ -1083,7 +1091,12 @@ drop table t1;
connection slave;
connection master;
include/rpl_reset.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
connection master;
create table t1 ( f int ) engine = innodb;
create table log ( r int ) engine = myisam;
diff --git a/mysql-test/suite/rpl/r/rpl_upgrade_master_info.result b/mysql-test/suite/rpl/r/rpl_upgrade_master_info.result
index ffa041efd27..e58ea5eb0f2 100644
--- a/mysql-test/suite/rpl/r/rpl_upgrade_master_info.result
+++ b/mysql-test/suite/rpl/r/rpl_upgrade_master_info.result
@@ -4,6 +4,8 @@ include/master-slave.inc
connection slave;
include/stop_slave.inc
CHANGE MASTER TO master_use_gtid=CURRENT_POS;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
include/rpl_stop_server.inc [server_number=2]
include/rpl_start_server.inc [server_number=2]
connection master;
diff --git a/mysql-test/suite/rpl/r/rpl_using_gtid_default.result b/mysql-test/suite/rpl/r/rpl_using_gtid_default.result
new file mode 100644
index 00000000000..e077bcd91a4
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_using_gtid_default.result
@@ -0,0 +1,144 @@
+include/master-slave.inc
+[connection master]
+#
+# Slave default configuration should be Slave_Pos
+connection slave;
+#
+# Ensure that a slave configured with Using_Gtid=Slave_Pos will remain
+# as Slave_Pos after RESET SLAVE
+include/stop_slave.inc
+RESET SLAVE;
+# No warning should be given because Slave_Pos never changed
+SHOW WARNINGS;
+Level Code Message
+include/start_slave.inc
+#
+# Ensure that a slave configured with Using_Gtid=No will revert to its
+# default of Slave_Pos after RESET SLAVE for a master which supports
+# GTIDs
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+include/start_slave.inc
+include/stop_slave.inc
+RESET SLAVE;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
+# A notification that Using_Gtid was reverted should exist
+SHOW WARNINGS;
+Level Code Message
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
+include/start_slave.inc
+# Clear SHOW WARNINGS
+#
+# If the primary does not support GTIDs (version < 10), the replica
+# should fall back to Using_Gtid=No on slave start, and should not
+# revert Using_Gtid to Slave_Pos after RESET SLAVE
+include/stop_slave.inc
+RESET SLAVE ALL;
+CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=MASTER_MYPORT, MASTER_USER='root', MASTER_CONNECT_RETRY=1;
+SET @saved_dbug= @@GLOBAL.debug_dbug;
+set @@global.debug_dbug= "d,mock_mariadb_primary_v5_in_get_master_version";
+include/start_slave.inc
+# Replica should detect at start that the primary does not support GTIDs
+# and fall-back to Using_Gtid=No
+# Replica should have an informational message stating it is falling
+# back to Using_Gtid=No
+FOUND 1 /Falling back to Using_Gtid=No because master does not support GTIDs/ in mysqld.2.err
+include/stop_slave.inc
+RESET SLAVE;
+# Replica should know that the primary does not support GTIDs and
+# preserve Using_Gtid=No
+# 'No' was not reverted and therefore no note should be added
+SHOW WARNINGS;
+Level Code Message
+set @@global.debug_dbug= @saved_dbug;
+include/start_slave.inc
+#
+# Ensure that a slave configured with Using_Gtid=Current_Pos will revert
+# to its default of Slave_Pos after RESET SLAVE.
+include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=Current_Pos;
+Warnings:
+Warning 1681 'master_use_gtid=current_pos' is deprecated and will be removed in a future release. Please use master_demote_to_slave=1 instead
+include/start_slave.inc
+include/stop_slave.inc
+RESET SLAVE;
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'Current_Pos' to 'Slave_Pos'
+# A notification that Using_Gtid was reverted should exist
+SHOW WARNINGS;
+Level Code Message
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'Current_Pos' to 'Slave_Pos'
+include/start_slave.inc
+# Clear SHOW WARNINGS
+# The MTR include file rpl_change_topology.inc should implicitly set
+# MASTER_USE_GTID=NO when provided with $rpl_master_log_file. Note that
+# this will switch master and slave roles.
+connection slave;
+include/stop_slave.inc
+include/rpl_change_topology.inc [new topology=2->1]
+# connection 'master' is the slave in this comparison
+connection master;
+# Validating Using_Gtid=No..
+# ..success
+include/rpl_change_topology.inc [new topology=1->2]
+# connection 'slave' is back to slave role
+connection slave;
+# Validating Using_Gtid=Slave_Pos..
+# ..success
+include/start_slave.inc
+#
+# The MTR include file reset_slave.inc should keep/delete GTID state
+# when reset_slave_keep_gtid_state is set, respectively.
+#
+connection master;
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1);
+DROP TABLE t1;
+include/save_master_gtid.inc
+connection slave;
+include/sync_with_master_gtid.inc
+include/stop_slave.inc
+# Tagging gtid_slave_pos before reset_slave.inc as old_slave_pos
+# Using reset_slave_keep_gtid_state=1 should preserve GTID state
+include/reset_slave.inc
+# Tagging gtid_slave_pos after reset_slave.inc as new_slave_pos
+# Validating old_slave_pos == new_slave_pos..
+# ..success
+# Using reset_slave_keep_gtid_state=0 should empty GTID state
+include/reset_slave.inc
+# Tagging gtid_slave_pos as new_slave_pos
+# Validating new_slave_pos is empty..
+# ..success
+set global gtid_slave_pos="old_slave_pos";
+include/start_slave.inc
+#
+# A replica issued CHANGE MASTER TO specified with log coordinates but
+# not master_use_gtid=no should warn the user that Using_Gtid is being
+# changed to No.
+#
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO master_log_pos=io_log_pos, master_log_file='io_log_file';
+Warnings:
+Note 4190 CHANGE MASTER TO is implicitly changing the value of 'Using_Gtid' from 'Slave_Pos' to 'No'
+include/start_slave.inc
+#
+# A replica issued CHANGE MASTER TO specified with log coordinates and
+# master_use_gtid=Slave_Pos should warn the user that the log
+# coordinates will be ignored.
+#
+connection slave;
+include/stop_slave.inc
+CHANGE MASTER TO master_log_pos=io_log_pos, master_log_file='io_log_file', master_use_gtid=Slave_Pos;
+Warnings:
+Note 1618 <MASTER_LOG_FILE> option ignored
+Note 1618 <MASTER_LOG_POS> option ignored
+CHANGE MASTER TO relay_log_pos=relay_log_pos, relay_log_file='relay_log_file', master_use_gtid=Slave_Pos;
+Warnings:
+Note 1618 <RELAY_LOG_FILE> option ignored
+Note 1618 <RELAY_LOG_POS> option ignored
+include/start_slave.inc
+include/rpl_end.inc
+#
+# End of rpl_using_gtid_default.test
diff --git a/mysql-test/suite/rpl/r/rpl_xa_gap_lock.result b/mysql-test/suite/rpl/r/rpl_xa_gap_lock.result
index cb760abe2d2..97e8f2105c4 100644
--- a/mysql-test/suite/rpl/r/rpl_xa_gap_lock.result
+++ b/mysql-test/suite/rpl/r/rpl_xa_gap_lock.result
@@ -38,7 +38,7 @@ include/diff_tables.inc [master:test.t1, slave:test.t1]
include/diff_tables.inc [master:test.t2, slave:test.t2]
DROP TABLE t2, t1;
connection slave;
-CHANGE MASTER TO MASTER_LOG_FILE='LOG_FILE', MASTER_LOG_POS=LOG_POS;
+CHANGE MASTER TO MASTER_LOG_FILE='LOG_FILE', MASTER_LOG_POS=LOG_POS, MASTER_USE_GTID=NO;
SET @@GLOBAL.innodb_limit_optimistic_insert_debug = @saved_innodb_limit_optimistic_insert_debug;
include/start_slave.inc
include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/r/semisync_future-7591.result b/mysql-test/suite/rpl/r/semisync_future-7591.result
index 9dc0ee51e53..80414ac1f8d 100644
--- a/mysql-test/suite/rpl/r/semisync_future-7591.result
+++ b/mysql-test/suite/rpl/r/semisync_future-7591.result
@@ -6,7 +6,7 @@ set global rpl_semi_sync_master_enabled = ON;
connection slave;
include/stop_slave.inc
set global rpl_semi_sync_slave_enabled = ON;
-change master to master_log_file='master-bin.000002', master_log_pos = 320;
+change master to master_log_file='master-bin.000002', master_log_pos = 320, master_use_gtid=no;
start slave;
include/wait_for_slave_io_error.inc [errno=1236]
connection master;
@@ -14,7 +14,9 @@ insert into t1 values (1);
reset master;
connection slave;
include/stop_slave.inc
-reset slave;
+include/reset_slave.inc
+Warnings:
+Note 4190 RESET SLAVE is implicitly changing the value of 'Using_Gtid' from 'No' to 'Slave_Pos'
include/start_slave.inc
set global rpl_semi_sync_slave_enabled = OFF;
connection master;
diff --git a/mysql-test/suite/rpl/t/rpl_000010.test b/mysql-test/suite/rpl/t/rpl_000010.test
index de6337dd723..9ff2d6c562d 100644
--- a/mysql-test/suite/rpl/t/rpl_000010.test
+++ b/mysql-test/suite/rpl/t/rpl_000010.test
@@ -3,6 +3,12 @@
source include/master-slave.inc;
+--connection slave
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+--connection master
+
create table t1 (n int not null auto_increment primary key);
insert into t1 values(NULL);
insert into t1 values(2);
diff --git a/mysql-test/suite/rpl/t/rpl_change_master.test b/mysql-test/suite/rpl/t/rpl_change_master.test
index 9ab49a585e6..2758f9d6e27 100644
--- a/mysql-test/suite/rpl/t/rpl_change_master.test
+++ b/mysql-test/suite/rpl/t/rpl_change_master.test
@@ -108,4 +108,10 @@ CHANGE MASTER TO MASTER_USER='root', MASTER_SSL=0, MASTER_SSL_CA='', MASTER_SSL_
MASTER_SSL_KEY='', MASTER_SSL_CRL='', MASTER_SSL_CRLPATH='';
CHANGE MASTER TO MASTER_USER='root', MASTER_PASSWORD='', MASTER_SSL=0;
+
+# MDEV-20122: Deprecate MASTER_USE_GTID=Current_Pos to favor new MASTER_DEMOTE_TO_SLAVE option
+--echo "Usage of CURRENT_POS in CHANGE MASTER MASTER_USE_GTID is dreprecated.
+CHANGE MASTER TO MASTER_USE_GTID=CURRENT_POS;
+CHANGE MASTER TO MASTER_USE_GTID=SLAVE_POS;
+
--source include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_change_master_demote.test b/mysql-test/suite/rpl/t/rpl_change_master_demote.test
new file mode 100644
index 00000000000..15b55014975
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_change_master_demote.test
@@ -0,0 +1,470 @@
+#
+# Purpose:
+#
+# This test suite ensures that the MASTER_DEMOTE_TO_SLAVE option of
+# CHANGE MASTER TO will merge the binlog GTID position (gtid_binlog_pos) into
+# the replication state (gtid_slave_pos).
+#
+#
+# Methodology:
+#
+# A series of test cases validate that MASTER_DEMOTE_TO_SLAVE correctly
+# merges the binlog GTID state into the replication state. Each test case
+# sets up the context in which it will demote the master to a slave, and then
+# calls into an include file to perform the actual demotion and validation.
+# Specifically, the include file will demote the master to be the slave,
+# promote the slave to be the master, ensure that gtid_slave_pos matches
+# gtid_current_pos, ensure replication works correctly in this new
+# configuration, and return the master and slave to their previous roles.
+#
+# The test cases are as follows:
+# 1) When both gtid_binlog_pos and gtid_slave_pos are empty,
+# MASTER_DEMOTE_TO_SLAVE=1 results in no change to replication state.
+#
+# 2) If gtid_slave_pos is empty, gtid_binlog_pos will completely
+# overwrite it with MASTER_DEMOTE_TO_SLAVE=1.
+#
+# 3) Using a single domain id, if neither gtid_slave_pos nor
+# gtid_binlog_pos are empty, and gtid_binlog_pos is more recent, then
+# gtid_binlog_pos will overwrite gtid_slave_pos when MASTER_DEMOTE_TO_SLAVE=1.
+#
+# 4) If gtid_slave_pos and gtid_binlog_pos are equivalent,
+# MASTER_DEMOTE_TO_SLAVE=1 will not change gtid_slave_pos.
+#
+# 5) If multiple new domain ids are added into gtid_binlog_pos while
+# gtid_slave_pos already has a state, MASTER_DEMOTE_TO_SLAVE=1 will append
+# new GTIDs to gtid_slave_pos with the latest seq_no from each domain.
+#
+# 6) If gtid_slave_pos has multiple GTID positions and gtid_binlog_pos
+# contains updates on existing domain ids, new domains, and differing
+# server_ids, MASTER_DEMOTE_TO_SLAVE=1 will update gtid_slave_pos such that
+# it will have the seq_nos only from the GTIDs last applied by this server.
+# In other words, any GTIDs with server ids that don't match that of the
+# demoting server will be ignored in the update.
+#
+# 7) If MASTER_DEMOTE_TO_SLAVE=1 is combined with IGNORE_DOMAIN_IDS such
+# that gtid_binlog_pos has more recent GTIDs than gtid_slave_pos in ignored
+# domains, the CHANGE MASTER TO command will still update gtid_slave_pos with
+# the most recent transactions from gtid_binlog_pos, despite being ignored by
+# CHANGE MASTER TO because they were already applied on the server.
+#
+# 8) If gtid_binlog_pos is more recent than gtid_slave_pos, and
+# MASTER_DEMOTE_TO_SLAVE=1 is combined with a later call to
+# START SLAVE UNTIL master_gtid_pos=<G> such that
+# gtid_slave_pos < G < gtid_binlog_pos, then the slave should stop
+# immediately after SSU because gtid_slave_pos should already be after the
+# UNTIL GTID.
+#
+# 9) If gtid_slave_pos is more recent than gtid_binlog_pos when demoting
+# the master to become a slave, the replication state should be preserved.
+#
+# 10) MASTER_DEMOTE_TO_SLAVE=0 should not change replication state,
+# regardless of gtid_slave_pos in comparison to gtid_binlog_pos.
+#
+#
+# Error cases:
+# Error Case 1) MASTER_DEMOTE_TO_SLAVE=1 combined with
+# MASTER_USE_GTID=NO should result in an error.
+#
+# Error Case 2) Error when MASTER_DEMOTE_TO_SLAVE=1 is used without
+# binary logging enabled.
+#
+# Error Case 3) Error when MASTER_DEMOTE_TO_SLAVE is provided a
+# non-boolean value.
+#
+#
+# References:
+# MDEV-19801: Change defaults for CHANGE MASTER TO so that GTID-based
+# replication is used by default if master supports it
+#
+--source include/master-slave.inc
+--source include/have_log_bin.inc
+--source include/have_binlog_format_mixed.inc
+
+--connection slave
+--source include/stop_slave.inc
+change master to master_use_gtid=slave_pos;
+--source include/start_slave.inc
+--source include/sync_with_master_gtid.inc
+
+--echo #
+--echo # Test Case 1: When both gtid_binlog_pos and gtid_slave_pos are
+--echo # empty, MASTER_DEMOTE_TO_SLAVE=1 results in no change to replication
+--echo # state.
+--echo #
+--source include/rpl_change_master_demote.inc
+
+
+--echo #
+--echo # Test Case 2: If gtid_slave_pos is empty, gtid_binlog_pos will
+--echo # completely overwrite it with MASTER_DEMOTE_TO_SLAVE=1.
+--echo #
+--connection slave
+--source include/stop_slave.inc
+RESET MASTER;
+set @@global.gtid_slave_pos="";
+--source include/start_slave.inc
+--connection master
+RESET MASTER;
+set @@global.gtid_slave_pos="";
+set session gtid_domain_id= 0;
+CREATE TABLE t1 (a int);
+INSERT INTO t1 VALUES (1);
+--source include/save_master_gtid.inc
+--connection slave
+--source include/sync_with_master_gtid.inc
+--source include/rpl_change_master_demote.inc
+
+
+--echo #
+--echo # Test Case 3: Using a single domain id, if neither gtid_slave_pos nor
+--echo # gtid_binlog_pos are empty, and gtid_binlog_pos is more recent, then
+--echo # gtid_binlog_pos will overwrite gtid_slave_pos when
+--echo # MASTER_DEMOTE_TO_SLAVE=1.
+--echo #
+--connection master
+INSERT INTO t1 VALUES (2);
+--source include/save_master_gtid.inc
+--connection slave
+--source include/sync_with_master_gtid.inc
+--source include/rpl_change_master_demote.inc
+
+
+--echo #
+--echo # Test Case 4: If gtid_slave_pos and gtid_binlog_pos are equivalent,
+--echo # MASTER_DEMOTE_TO_SLAVE=1 will not change gtid_slave_pos.
+--echo #
+--connection master
+
+--echo # update gtid_binlog_pos and demote it (we have proven this works)
+INSERT INTO t1 VALUES (3);
+--echo # Update to account for statements to verify replication in include file
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SLAVE_MYPORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1
+RESET SLAVE ALL;
+
+--source include/save_master_gtid.inc
+--connection slave
+--source include/sync_with_master_gtid.inc
+--source include/rpl_change_master_demote.inc
+
+
+--echo #
+--echo # Test Case 5: If a new domain id is added into gtid_binlog_pos while
+--echo # gtid_slave_pos already has a state, MASTER_DEMOTE_TO_SLAVE=1 will
+--echo # append a new GTID to gtid_slave_pos with the latest seq_no from that
+--echo # domain.
+--echo #
+--connection master
+
+--echo # Domain_id
+set session gtid_domain_id= 0;
+INSERT INTO t1 VALUES (4);
+
+set session gtid_domain_id= 1;
+CREATE TABLE t2 (a int);
+INSERT INTO t2 VALUES (1);
+
+--source include/save_master_gtid.inc
+--connection slave
+--source include/sync_with_master_gtid.inc
+--source include/rpl_change_master_demote.inc
+
+
+--echo #
+--echo # Test Case 6: If gtid_slave_pos has multiple GTID positions and
+--echo # gtid_binlog_pos contains updates on existing domain ids, new
+--echo # domains, and differing server_ids, MASTER_DEMOTE_TO_SLAVE=1 will
+--echo # update gtid_slave_pos such that it will have the seq_nos only from
+--echo # the GTIDs last applied by this server. In other words, any GTIDs
+--echo # with server ids that don't match that of the demoting server will be
+--echo # ignored in the update.
+--echo #
+
+--connection master
+--echo # Update to account for statements to verify replication in include file
+set session gtid_domain_id= 0;
+INSERT INTO t1 VALUES (5);
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SLAVE_MYPORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1
+RESET SLAVE ALL;
+
+set session gtid_domain_id= 1;
+INSERT INTO t2 VALUES (2);
+
+set session gtid_domain_id= 2;
+CREATE TABLE t3 (a int);
+INSERT INTO t3 VALUES (1);
+
+--echo # The following events have a different server_id and should not go into
+--echo # gtid_slave_pos
+set @old_server_id = @@server_id;
+set session gtid_domain_id= 1;
+set session server_id= 3;
+INSERT INTO t2 VALUES (3);
+
+set session gtid_domain_id= 4;
+set session server_id= 3;
+CREATE TABLE t5 (a int);
+INSERT INTO t5 VALUES (1);
+set session server_id= @old_server_id;
+
+--source include/save_master_gtid.inc
+--connection slave
+--source include/sync_with_master_gtid.inc
+--source include/rpl_change_master_demote.inc
+
+
+--echo #
+--echo # Test Case 7: If MASTER_DEMOTE_TO_SLAVE=1 is combined with
+--echo # IGNORE_DOMAIN_IDS such that gtid_binlog_pos has more recent GTIDs
+--echo # than gtid_slave_pos in ignored domains, the CHANGE MASTER TO command
+--echo # will still update gtid_slave_pos with the most recent transactions
+--echo # from gtid_binlog_pos, despite being ignored by CHANGE MASTER TO
+--echo # because they were already applied on the server.
+--echo #
+--connection master
+
+set session gtid_domain_id= 2;
+INSERT INTO t3 VALUES (2);
+
+set session gtid_domain_id= 3;
+CREATE TABLE t4 (a int);
+INSERT INTO t4 VALUES (1);
+
+--source include/save_master_gtid.inc
+--connection slave
+--source include/sync_with_master_gtid.inc
+--let $ignore_domain_ids=2,3
+--source include/rpl_change_master_demote.inc
+
+
+--echo #
+--echo # Test Case 8: If gtid_binlog_pos is more recent than gtid_slave_pos,
+--echo # and MASTER_DEMOTE_TO_SLAVE=1 is combined with a later call to
+--echo # START SLAVE UNTIL master_gtid_pos=<G> such that
+--echo # gtid_slave_pos < G < gtid_binlog_pos, then the slave should stop
+--echo # immediately after SSU because gtid_slave_pos should be updated to be
+--echo # after G.
+--echo #
+
+--connection master
+set session gtid_domain_id= 0;
+INSERT INTO t1 VALUES (6);
+--let $ssu_middle_binlog_pos= `SELECT @@GLOBAL.gtid_binlog_pos`
+--echo # Tagging ssu_middle_binlog_pos here to be used for START SLAVE UNTIL
+INSERT INTO t1 VALUES (7);
+--source include/save_master_gtid.inc
+
+--echo # Ensure slave is up-to-date with master and then disable slave status
+--connection slave
+--source include/sync_with_master_gtid.inc
+--source include/stop_slave.inc
+
+--connection master
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' ORDER BY VARIABLE_NAME ASC;
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SLAVE_MYPORT, master_user='root', master_use_gtid=Slave_Pos, master_demote_to_slave=1
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' ORDER BY VARIABLE_NAME ASC;
+
+--echo # GTID ssu_middle_binlog_pos should be considered in the past because
+--echo # gtid_slave_pos should be updated using the latest binlog gtids.
+--echo # The following call to sync_with_master_gtid.inc uses the latest
+--echo # binlog position and should still succeed despite the SSU stop
+--echo # position pointing to a previous event (because
+--echo # master_demote_to_slave=1 merges gtid_binlog_pos into gtid_slave_pos).
+--replace_result $ssu_middle_binlog_pos ssu_middle_binlog_pos
+eval START SLAVE UNTIL master_gtid_pos="$ssu_middle_binlog_pos";
+
+--echo # Slave needs time to start and stop automatically
+# Note sync_with_master_gtid.inc, wait_for_slave_to_start.inc, and
+# wait_for_slave_to_stop.inc won't work due to replication state and race
+# conditions
+--sleep 1
+
+--echo # Validating neither SQL nor IO threads are running..
+--let $io_state= query_get_value("SHOW SLAVE STATUS", Slave_IO_State, 1)
+if (`SELECT strcmp("$io_state","") != 0`)
+{
+ die "IO thread should not be running after START SLAVE UNTIL master_gtid_pos using a pre-existing GTID";
+}
+--let $sql_state= query_get_value("SHOW SLAVE STATUS", Slave_SQL_Running_State, 1)
+if (`SELECT strcmp("$sql_state","") != 0`)
+{
+ die "SQL thread should not be running after START SLAVE UNTIL master_gtid_pos using a pre-existing GTID";
+}
+--echo # ..success
+
+--echo # Clean slave state of master
+RESET SLAVE ALL;
+
+
+--echo #
+--echo # Test Case 9: If gtid_slave_pos is more recent than gtid_binlog_pos
+--echo # when demoting the master to become a slave, the replication state
+--echo # should be preserved.
+--echo #
+
+--echo # rpl_change_master_demote.inc should force
+--echo # gtid_slave_pos > gtid_binlog_pos in domain 0 (due to the step which
+--echo # validates replication works)
+--connection master
+--source include/rpl_change_master_demote.inc
+
+--let $current_pos= `SELECT @@gtid_current_pos`
+
+--echo # Demote master to slave with the more recent gtid_slave_pos
+--connection master
+--let $old_slave_pos= `SELECT @@gtid_slave_pos`
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SLAVE_MYPORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1
+--let $new_slave_pos= `SELECT @@gtid_slave_pos`
+
+--echo # Validating gtid_slave_pos is unchanged..
+if ($old_slave_pos != $new_slave_pos)
+{
+ SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+ die "gtid_slave_pos should not change when MASTER_DEMOTE_TO_SLAVE=0";
+}
+--echo # ..success
+
+--echo # Validating gtid_slave_pos == gtid_binlog_pos..
+if ($new_slave_pos != $current_pos)
+{
+ SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' OR VARIABLE_NAME LIKE 'gtid_current_pos' ORDER BY VARIABLE_NAME ASC;
+ die gtid_slave_pos calculation after master_demote_to_slave=1 differs from gtid_current_pos;
+}
+--echo # ..success
+
+--echo # Clean slave state of master
+RESET SLAVE ALL;
+
+
+--echo #
+--echo # Test Case 10: MASTER_DEMOTE_TO_SLAVE=0 should not change replication
+--echo # state, regardless of gtid_slave_pos in comparison to gtid_binlog_pos.
+--echo #
+
+--echo # In domain 0, make gtid_slave_pos > gtid_binlog_pos
+--connection master
+--source include/rpl_change_master_demote.inc
+
+--echo # Tag gtid_slave_pos now (before binlog updates) for later comparison
+--let $old_slave_pos= `SELECT @@gtid_slave_pos`
+
+--connection master
+--echo # In domain 1, make gtid_slave_pos < gtid_binlog_pos
+set session gtid_domain_id= 1;
+INSERT INTO t2 VALUES (4);
+
+--echo # In domains 2, 3 and 4, gtid_slave_pos == gtid_binlog_pos
+
+--echo # Include a new domain id (5)
+set session gtid_domain_id= 5;
+CREATE TABLE t6 (a int);
+INSERT INTO t6 VALUES (1);
+
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' ORDER BY VARIABLE_NAME ASC;
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SLAVE_MYPORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=0
+
+--echo # Validating gtid_slave_pos is unchanged..
+--let $new_slave_pos= `SELECT @@gtid_slave_pos`
+if ($old_slave_pos != $new_slave_pos)
+{
+ SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' ORDER BY VARIABLE_NAME ASC;
+ die gtid_slave_pos should not change when MASTER_DEMOTE_TO_SLAVE=0;
+}
+--echo # ..success
+
+--echo # Clean slave state of master
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SLAVE_MYPORT, master_user='root', master_use_gtid=slave_pos, master_demote_to_slave=1
+RESET SLAVE ALL;
+SELECT VARIABLE_NAME, GLOBAL_VALUE FROM INFORMATION_SCHEMA.SYSTEM_VARIABLES WHERE VARIABLE_NAME LIKE 'gtid_binlog_pos' OR VARIABLE_NAME LIKE 'gtid_slave_pos' ORDER BY VARIABLE_NAME ASC;
+
+
+--echo #
+--echo #
+--echo # Stop slave for error test cases
+--connection slave
+--source include/stop_slave.inc
+
+--echo #
+--echo # Error Case 1: MASTER_DEMOTE_TO_SLAVE=1 combined with
+--echo # MASTER_USE_GTID=NO should result in an error.
+--echo #
+--connection master
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--error 4191
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SLAVE_MYPORT, master_user='root', master_use_gtid=no, master_demote_to_slave=1
+
+
+--echo #
+--echo # Error Case 2: Error when MASTER_DEMOTE_TO_SLAVE=1 is used without
+--echo # binary logging enabled.
+--echo #
+--connection master
+
+--echo # Restarting master without binary log
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+wait
+EOF
+--shutdown_server
+--source include/wait_until_disconnected.inc
+--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+restart: --skip-slave-start=1 --skip-log-bin
+EOF
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--error 1381
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SLAVE_MYPORT, master_user='root', master_use_gtid=Slave_Pos, master_demote_to_slave=1
+
+--echo # Restarting master to re-enable binary log
+--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+wait
+EOF
+--shutdown_server
+--source include/wait_until_disconnected.inc
+--append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
+restart: --skip-slave-start=1
+EOF
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
+--connection server_1
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
+--connection default
+--enable_reconnect
+--source include/wait_until_connected_again.inc
+
+
+--echo #
+--echo # Error Case 3: Error when MASTER_DEMOTE_TO_SLAVE is provided a
+--echo # non-boolean value.
+--echo #
+
+--connection master
+--replace_result $SLAVE_MYPORT SLAVE_PORT
+--error 1064
+--eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SLAVE_MYPORT, master_user='root', master_use_gtid=Slave_Pos, master_demote_to_slave=invalid
+
+
+--echo #
+--echo # Cleanup
+--echo #
+--connection master
+DROP TABLE t1, t2, t3, t4, t5, t6;
+--source include/save_master_gtid.inc
+
+--connection slave
+--source include/start_slave.inc
+--source include/sync_with_master_gtid.inc
+
+--source include/rpl_end.inc
+--echo #
+--echo ### End rpl_change_master_demote.test
diff --git a/mysql-test/suite/rpl/t/rpl_colSize.test b/mysql-test/suite/rpl/t/rpl_colSize.test
index d6f817af189..23c8bdc3e2d 100644
--- a/mysql-test/suite/rpl/t/rpl_colSize.test
+++ b/mysql-test/suite/rpl/t/rpl_colSize.test
@@ -17,7 +17,7 @@ DROP TABLE IF EXISTS t1;
sync_slave_with_master;
STOP SLAVE;
--source include/wait_for_slave_to_stop.inc
-RESET SLAVE;
+--source include/reset_slave.inc
SET @saved_slave_type_conversions = @@slave_type_conversions;
SET GLOBAL SLAVE_TYPE_CONVERSIONS = 'ALL_NON_LOSSY';
diff --git a/mysql-test/suite/rpl/t/rpl_delayed_slave.test b/mysql-test/suite/rpl/t/rpl_delayed_slave.test
index 7dd7b9cf6d9..d00e796b66f 100644
--- a/mysql-test/suite/rpl/t/rpl_delayed_slave.test
+++ b/mysql-test/suite/rpl/t/rpl_delayed_slave.test
@@ -63,6 +63,9 @@
call mtr.add_suppression("Unsafe statement written to the binary log using statement format");
--connection slave
call mtr.add_suppression("Unsafe statement written to the binary log using statement format");
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
--connection master
@@ -371,7 +374,8 @@ CHANGE MASTER TO MASTER_DELAY = 71;
--source include/rpl_assert.inc
--source include/stop_slave.inc
-RESET SLAVE;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
--echo [on master]
--connection master
RESET MASTER;
diff --git a/mysql-test/suite/rpl/t/rpl_gtid_mdev9033.test b/mysql-test/suite/rpl/t/rpl_gtid_mdev9033.test
index f8e8642af28..76723e1d265 100644
--- a/mysql-test/suite/rpl/t/rpl_gtid_mdev9033.test
+++ b/mysql-test/suite/rpl/t/rpl_gtid_mdev9033.test
@@ -63,10 +63,10 @@ DROP TABLE t2;
--connection server_2
STOP SLAVE;
-CHANGE MASTER TO MASTER_USE_GTID = NO, IGNORE_DOMAIN_IDS = ();
+CHANGE MASTER TO IGNORE_DOMAIN_IDS = ();
--connection server_3
STOP SLAVE;
-CHANGE MASTER TO MASTER_USE_GTID = NO, IGNORE_DOMAIN_IDS = ();
+CHANGE MASTER TO IGNORE_DOMAIN_IDS = ();
--echo # End of test.
diff --git a/mysql-test/suite/rpl/t/rpl_gtid_startpos.test b/mysql-test/suite/rpl/t/rpl_gtid_startpos.test
index 100d75a8cdc..a7c93ff7ed5 100644
--- a/mysql-test/suite/rpl/t/rpl_gtid_startpos.test
+++ b/mysql-test/suite/rpl/t/rpl_gtid_startpos.test
@@ -54,7 +54,7 @@ START SLAVE;
--replace_result $MASTER_MYPORT MASTER_PORT
eval CHANGE MASTER TO master_host = '127.0.0.1', master_port = $MASTER_MYPORT,
- MASTER_LOG_FILE="master-bin.000003", MASTER_LOG_POS=4;
+ MASTER_LOG_FILE="master-bin.000003", MASTER_LOG_POS=4, MASTER_USE_GTID=NO;
--source include/start_slave.inc
--sync_with_master
SELECT * FROM t1 ORDER BY a;
@@ -185,7 +185,8 @@ SELECT * FROM t1 ORDER BY a;
--echo *** Test that RESET SLAVE clears the Using_Gtid flag. ***
--source include/stop_slave.inc
-RESET SLAVE;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
--let $status_items= Using_Gtid
--source include/show_slave_status.inc
@@ -286,6 +287,7 @@ eval SELECT '$value' AS Gtid_Slave_Pos;
--source include/stop_slave.inc
DROP TABLE t1;
RESET SLAVE ALL;
+CHANGE MASTER TO MASTER_USE_GTID=NO;
RESET MASTER;
SET GLOBAL gtid_slave_pos= "";
diff --git a/mysql-test/suite/rpl/t/rpl_gtid_until.test b/mysql-test/suite/rpl/t/rpl_gtid_until.test
index aa05ecf79ab..49baf7e68e6 100644
--- a/mysql-test/suite/rpl/t/rpl_gtid_until.test
+++ b/mysql-test/suite/rpl/t/rpl_gtid_until.test
@@ -2,6 +2,11 @@
--let $rpl_topology=1->2
--source include/rpl_init.inc
+--connection server_2
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
--connection server_1
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
# Function to extract one GTID from a list.
diff --git a/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
index 45b5d48c13b..d6d14e0278d 100644
--- a/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_basic.test
@@ -52,7 +52,7 @@ let $slave_net_timeout= query_get_value(SHOW VARIABLES LIKE 'slave_net_timeout',
let $slave_heartbeat_timeout= query_get_value(SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period', Value, 1);
let $result= query_get_value(SELECT $slave_net_timeout/$slave_heartbeat_timeout AS Result, Result, 1);
--echo slave_net_timeout/slave_heartbeat_timeout=$result
-RESET SLAVE;
+--source include/reset_slave.inc
--echo
# Reset slave set slave_heartbeat_timeout = slave_net_timeout/2
@@ -62,7 +62,7 @@ SET @@global.slave_net_timeout=30;
--enable_warnings
--replace_result $MASTER_MYPORT MASTER_PORT
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_CONNECT_RETRY=$connect_retry, MASTER_HEARTBEAT_PERIOD=5;
-RESET SLAVE;
+--source include/reset_slave.inc
SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
--echo
@@ -75,7 +75,7 @@ SET @@global.slave_net_timeout=50;
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_CONNECT_RETRY=$connect_retry;
SHOW GLOBAL STATUS LIKE 'slave_heartbeat_period';
SET @@global.slave_net_timeout=@restore_slave_net_timeout;
-RESET SLAVE;
+--source include/reset_slave.inc
--echo
# Set slave_net_timeout less than current value of slave_heartbeat_period
@@ -320,8 +320,10 @@ INSERT INTO t1 VALUES (1, 'on slave', NULL);
--connection master
INSERT INTO t1 VALUES (1, 'on master', NULL);
--connection slave
+set sql_log_bin= 0;
call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.. on query.* error.* 1062");
call mtr.add_suppression("Slave SQL.*Request to stop slave SQL Thread received while applying a group that has non-transactional changes; waiting for completion of the group");
+set sql_log_bin= 1;
let $slave_errno= ER_DUP_ENTRY
--source include/wait_for_slave_sql_error.inc
let $rcvd_heartbeats_before= query_get_value(SHOW STATUS LIKE 'slave_received_heartbeats', Value, 1);
@@ -330,7 +332,9 @@ let $rcvd_heartbeats_after= query_get_value(SHOW STATUS LIKE 'slave_received_hea
let $result= query_get_value(SELECT ($rcvd_heartbeats_after - $rcvd_heartbeats_before) > 0 AS Result, Result, 1);
--echo Heartbeat events are received while sql thread stopped (1 means 'yes'): $result
--source include/stop_slave.inc
+set sql_log_bin= 0;
DROP TABLE t1;
+set sql_log_bin= 1;
--echo
# Check received heartbeat events while master send events to slave
@@ -346,7 +350,7 @@ CREATE EVENT e1
END|
DELIMITER ;|
--connection slave
-RESET SLAVE;
+--source include/reset_slave.inc
--replace_result $MASTER_MYPORT MASTER_PORT
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_CONNECT_RETRY=$connect_retry, MASTER_HEARTBEAT_PERIOD=5;
--source include/start_slave.inc
@@ -404,8 +408,10 @@ DROP EVENT e1;
# Check received heartbeat events while logs flushed on slave
--echo *** Flush logs on slave ***
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
+set sql_log_bin= 0;
DROP TABLE t1;
+set sql_log_bin= 1;
--connection master
DROP TABLE t1;
RESET MASTER;
@@ -435,7 +441,7 @@ let $result= query_get_value(SELECT ($rcvd_heartbeats_after - $rcvd_heartbeats_b
SET @@global.slave_compressed_protocol=1;
--connection slave
--source include/stop_slave.inc
-RESET SLAVE;
+--source include/reset_slave.inc
SET @@global.slave_compressed_protocol=1;
--replace_result $MASTER_MYPORT MASTER_PORT
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_CONNECT_RETRY=$connect_retry, MASTER_HEARTBEAT_PERIOD=0.1;
@@ -455,7 +461,7 @@ SET @@global.slave_compressed_protocol=0;
--echo *** Reset master ***
--connection slave
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
--replace_result $MASTER_MYPORT MASTER_PORT
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_CONNECT_RETRY=$connect_retry, MASTER_HEARTBEAT_PERIOD=0.1;
--source include/start_slave.inc
@@ -474,7 +480,7 @@ let $result= query_get_value(SELECT ($rcvd_heartbeats_after - $rcvd_heartbeats_b
--echo *** Reload master ***
--connection slave
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
--replace_result $MASTER_MYPORT MASTER_PORT
eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_CONNECT_RETRY=$connect_retry, MASTER_HEARTBEAT_PERIOD=0.1;
--source include/start_slave.inc
diff --git a/mysql-test/suite/rpl/t/rpl_heartbeat_ssl.test b/mysql-test/suite/rpl/t/rpl_heartbeat_ssl.test
index 810db4cc6f7..2c41fdeeca8 100644
--- a/mysql-test/suite/rpl/t/rpl_heartbeat_ssl.test
+++ b/mysql-test/suite/rpl/t/rpl_heartbeat_ssl.test
@@ -29,7 +29,8 @@ eval CHANGE MASTER TO
MASTER_SSL=1,
MASTER_SSL_CA='$MYSQL_TEST_DIR/std_data/cacert.pem',
MASTER_SSL_CERT='$MYSQL_TEST_DIR/std_data/client-cert.pem',
- MASTER_SSL_KEY='$MYSQL_TEST_DIR/std_data/client-key.pem';
+ MASTER_SSL_KEY='$MYSQL_TEST_DIR/std_data/client-key.pem',
+ MASTER_USE_GTID=NO;
--source include/start_slave.inc
# Check SSL state of slave
let $slave_ssl_status= query_get_value(SHOW SLAVE STATUS, Master_SSL_Allowed, 1);
diff --git a/mysql-test/suite/rpl/t/rpl_innodb_bug68220.test b/mysql-test/suite/rpl/t/rpl_innodb_bug68220.test
deleted file mode 100644
index 1e4f40a0019..00000000000
--- a/mysql-test/suite/rpl/t/rpl_innodb_bug68220.test
+++ /dev/null
@@ -1,53 +0,0 @@
---source include/have_innodb.inc
---source include/have_binlog_format_row.inc
---source include/master-slave.inc
-
-#
-# Bug#68220: innodb_rows_updated is misleading on slave when *info_repository=TABLE
-#
-
-# created all the base variables at the beginning at the test
---connection master
-select variable_value into @master_rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select variable_value into @master_rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select variable_value into @master_rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select variable_value into @master_rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select variable_value into @master_system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select variable_value into @master_system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select variable_value into @master_system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select variable_value into @master_system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-
---connection slave
-select variable_value into @slave_rows_read from information_schema.global_status where variable_name = 'innodb_rows_read';
-select variable_value into @slave_rows_updated from information_schema.global_status where variable_name = 'innodb_rows_updated';
-select variable_value into @slave_rows_deleted from information_schema.global_status where variable_name = 'innodb_rows_deleted';
-select variable_value into @slave_rows_inserted from information_schema.global_status where variable_name = 'innodb_rows_inserted';
-select variable_value into @slave_system_rows_read from information_schema.global_status where variable_name = 'innodb_system_rows_read';
-select variable_value into @slave_system_rows_updated from information_schema.global_status where variable_name = 'innodb_system_rows_updated';
-select variable_value into @slave_system_rows_deleted from information_schema.global_status where variable_name = 'innodb_system_rows_deleted';
-select variable_value into @slave_system_rows_inserted from information_schema.global_status where variable_name = 'innodb_system_rows_inserted';
-
---connection master
-CREATE DATABASE testdb;
-USE testdb;
-CREATE TABLE testdb.t1 (i int NOT NULL PRIMARY KEY) ENGINE=InnoDB;
-
-# insert a row and show counters on master and slave
-INSERT INTO testdb.t1 VALUES (1);
---source suite/rpl/include/rpl_innodb_rows_counters.inc
-
-# update the row and show counters on master and slave
-UPDATE t1 SET i=2 WHERE i=1;
---sync_slave_with_master
---source suite/rpl/include/rpl_innodb_rows_counters.inc
-
-# delete the row and show counters on master and slave
-DELETE FROM t1 WHERE i=2;
---source suite/rpl/include/rpl_innodb_rows_counters.inc
-
-# clean the test
-DROP TABLE t1;
-DROP DATABASE testdb;
---sync_slave_with_master
-
---source include/rpl_end.inc
diff --git a/mysql-test/suite/rpl/t/rpl_log_pos.test b/mysql-test/suite/rpl/t/rpl_log_pos.test
index 4f63cd32916..1504cba0774 100644
--- a/mysql-test/suite/rpl/t/rpl_log_pos.test
+++ b/mysql-test/suite/rpl/t/rpl_log_pos.test
@@ -26,7 +26,7 @@ source include/stop_slave.inc;
let $wrong_log_pos= `SELECT $read_pos+2`;
--replace_result $wrong_log_pos MASTER_LOG_POS
-eval change master to master_log_pos=$wrong_log_pos;
+eval change master to master_log_pos=$wrong_log_pos, master_use_gtid=no;
start slave;
let $slave_io_errno= 1236;
--let $show_slave_io_error= 1
@@ -45,7 +45,7 @@ insert into t1 values (1),(2),(3);
save_master_pos;
connection slave;
--replace_result 4 MASTER_LOG_POS
-change master to master_log_pos=4;
+change master to master_log_pos=4, master_use_gtid=no;
start slave;
sync_with_master;
select * from t1 ORDER BY n;
diff --git a/mysql-test/suite/rpl/t/rpl_manual_change_index_file.test b/mysql-test/suite/rpl/t/rpl_manual_change_index_file.test
index 1c087c550d0..cd472f6eab6 100644
--- a/mysql-test/suite/rpl/t/rpl_manual_change_index_file.test
+++ b/mysql-test/suite/rpl/t/rpl_manual_change_index_file.test
@@ -1,5 +1,11 @@
source include/master-slave.inc;
+connection slave;
+source include/stop_slave.inc;
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+source include/start_slave.inc;
+connection master;
+
#
# BUG#28421 Infinite loop on slave relay logs
#
diff --git a/mysql-test/suite/rpl/t/rpl_mariadb_slave_capability.test b/mysql-test/suite/rpl/t/rpl_mariadb_slave_capability.test
index 19f2db32cb7..d49851cc8ce 100644
--- a/mysql-test/suite/rpl/t/rpl_mariadb_slave_capability.test
+++ b/mysql-test/suite/rpl/t/rpl_mariadb_slave_capability.test
@@ -12,6 +12,12 @@ set @old_master_binlog_checksum= @@global.binlog_checksum;
#
# Test this by binlog rotation before we log any GTIDs.
connection slave;
+
+# Need to stop/start the master without GTID before setting debug_dbug
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
--source include/stop_slave.inc
--echo # Test slave with no capability gets dummy event, which is ignored.
set @old_dbug= @@global.debug_dbug;
diff --git a/mysql-test/suite/rpl/t/rpl_mdev6020.test b/mysql-test/suite/rpl/t/rpl_mdev6020.test
index ec3fd92f817..06f03be1430 100644
--- a/mysql-test/suite/rpl/t/rpl_mdev6020.test
+++ b/mysql-test/suite/rpl/t/rpl_mdev6020.test
@@ -29,7 +29,7 @@ SET GLOBAL default_storage_engine=InnoDB;
SET @old_parallel= @@GLOBAL.slave_parallel_threads;
SET GLOBAL slave_parallel_threads=12;
--replace_result $SERVER_MYPORT_1 SERVER_MYPORT_1
-eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4;
+eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4, master_use_gtid=no;
--source include/start_slave.inc
--connection master
diff --git a/mysql-test/suite/rpl/t/rpl_mdev_17614.test b/mysql-test/suite/rpl/t/rpl_mdev_17614.test
index c11aad3305e..8d91944a8eb 100644
--- a/mysql-test/suite/rpl/t/rpl_mdev_17614.test
+++ b/mysql-test/suite/rpl/t/rpl_mdev_17614.test
@@ -42,7 +42,7 @@ SELECT * FROM t1;
# restart replication for the next testcase
stop slave;
--source include/wait_for_slave_to_stop.inc
-reset slave;
+--source include/reset_slave.inc
connection master;
reset master;
drop table t1;
@@ -161,7 +161,7 @@ SELECT * FROM t1;
# restart replication for the next testcase
stop slave;
--source include/wait_for_slave_to_stop.inc
-reset slave;
+--source include/reset_slave.inc
connection master;
reset master;
drop table t1;
diff --git a/mysql-test/suite/rpl/t/rpl_mysql57_stm_temporal_round.test b/mysql-test/suite/rpl/t/rpl_mysql57_stm_temporal_round.test
index 675b7db0603..34001382c93 100644
--- a/mysql-test/suite/rpl/t/rpl_mysql57_stm_temporal_round.test
+++ b/mysql-test/suite/rpl/t/rpl_mysql57_stm_temporal_round.test
@@ -43,7 +43,7 @@ CREATE TABLE t1 (id SERIAL, a DATETIME(3));
--connection slave
--replace_result $SERVER_MYPORT_1 SERVER_MYPORT_1
-eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4;
+eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4, master_use_gtid=no;
--source include/start_slave.inc
diff --git a/mysql-test/suite/rpl/t/rpl_mysql80_stm_temporal_round.test b/mysql-test/suite/rpl/t/rpl_mysql80_stm_temporal_round.test
index ad6df9d9993..551764ac220 100644
--- a/mysql-test/suite/rpl/t/rpl_mysql80_stm_temporal_round.test
+++ b/mysql-test/suite/rpl/t/rpl_mysql80_stm_temporal_round.test
@@ -47,7 +47,7 @@ CREATE TABLE t1 (id SERIAL, a DATETIME(3));
--connection slave
--replace_result $SERVER_MYPORT_1 SERVER_MYPORT_1
-eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4;
+eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4, master_use_gtid=no;
--source include/start_slave.inc
diff --git a/mysql-test/suite/rpl/t/rpl_old_master.test b/mysql-test/suite/rpl/t/rpl_old_master.test
index 6ddc227fc14..6faa8212d66 100644
--- a/mysql-test/suite/rpl/t/rpl_old_master.test
+++ b/mysql-test/suite/rpl/t/rpl_old_master.test
@@ -26,7 +26,7 @@
SET @old_parallel= @@GLOBAL.slave_parallel_threads;
SET GLOBAL slave_parallel_threads=10;
--replace_result $SERVER_MYPORT_1 SERVER_MYPORT_1
-eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4;
+eval CHANGE MASTER TO master_host='127.0.0.1', master_port=$SERVER_MYPORT_1, master_user='root', master_log_file='master-bin.000001', master_log_pos=4, master_use_gtid=no;
# Block execution yet when the blocked query timestamp has been already accounted
FLUSH TABLES WITH READ LOCK;
diff --git a/mysql-test/suite/rpl/t/rpl_old_master_29078.test b/mysql-test/suite/rpl/t/rpl_old_master_29078.test
index b19fd6466e5..98db6188e96 100644
--- a/mysql-test/suite/rpl/t/rpl_old_master_29078.test
+++ b/mysql-test/suite/rpl/t/rpl_old_master_29078.test
@@ -23,8 +23,10 @@ create table t2 (a timestamp);
--connection slave
-set global explicit_defaults_for_timestamp=1;
-reset slave;
+set global explicit_defaults_for_timestamp=0;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
+
--source include/start_slave.inc
--sync_with_master
show create table t1;
@@ -34,8 +36,10 @@ select * from t1;
drop table t1;
--source include/stop_slave.inc
-set global explicit_defaults_for_timestamp=0;
-reset slave;
+set global explicit_defaults_for_timestamp=1;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
+
--source include/start_slave.inc
--sync_with_master
show create table t1;
diff --git a/mysql-test/suite/rpl/t/rpl_perfschema_applier_status_by_coordinator.test b/mysql-test/suite/rpl/t/rpl_perfschema_applier_status_by_coordinator.test
index d4f185812e0..44df3ca4ea7 100644
--- a/mysql-test/suite/rpl/t/rpl_perfschema_applier_status_by_coordinator.test
+++ b/mysql-test/suite/rpl/t/rpl_perfschema_applier_status_by_coordinator.test
@@ -212,6 +212,7 @@ reset master;
--source include/stop_slave.inc
reset slave;
reset master;
+set @@global.gtid_slave_pos= "";
set @saved_slave_trans_retry_interval= @@GLOBAL.slave_transaction_retry_interval;
set global slave_transaction_retry_interval=1;
--source include/start_slave.inc
diff --git a/mysql-test/suite/rpl/t/rpl_read_new_relay_log_info.test b/mysql-test/suite/rpl/t/rpl_read_new_relay_log_info.test
index 1e2c8ce2d9f..350071bf3dc 100644
--- a/mysql-test/suite/rpl/t/rpl_read_new_relay_log_info.test
+++ b/mysql-test/suite/rpl/t/rpl_read_new_relay_log_info.test
@@ -12,7 +12,8 @@ DROP TABLE t1;
--echo ==== Check that we can understand the new format of relay-log.info ====
--source include/stop_slave.inc
-RESET SLAVE;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
--let $MYSQLD_DATADIR= `select @@datadir`
# the new version of relay_log.info comes in two versions: with path
@@ -20,6 +21,10 @@ RESET SLAVE;
if ($SYSTEM_PATH_SEPARATOR != /) {
--let $file_suffix= -win
}
+
+# MDEV-19801 changed the default Using_Gtid to Slave_Pos which doesn't
+# automatically purge relay-log.info
+--remove_file $MYSQLD_DATADIR/relay-log.info
--copy_file $MYSQL_TEST_DIR/std_data/new-format-relay-log$file_suffix.info $MYSQLD_DATADIR/relay-log.info
--echo # Read relay-log.info
diff --git a/mysql-test/suite/rpl/t/rpl_read_old_relay_log_info.test b/mysql-test/suite/rpl/t/rpl_read_old_relay_log_info.test
index ce345445c08..d2206b5bef7 100644
--- a/mysql-test/suite/rpl/t/rpl_read_old_relay_log_info.test
+++ b/mysql-test/suite/rpl/t/rpl_read_old_relay_log_info.test
@@ -13,7 +13,8 @@ DROP TABLE t1;
--echo ==== Check that we still understand the old format of relay-log.info ====
--source include/stop_slave.inc
-RESET SLAVE;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
--let $MYSQLD_DATADIR= `select @@datadir`
# the old version of relay_log.info comes in two versions: with path
@@ -21,6 +22,9 @@ RESET SLAVE;
if ($SYSTEM_PATH_SEPARATOR != /) {
--let $file_suffix= -win
}
+# MDEV-19801 changed the default Using_Gtid to Slave_Pos which doesn't
+# automatically purge relay-log.info
+--remove_file $MYSQLD_DATADIR/relay-log.info
--copy_file $MYSQL_TEST_DIR/std_data/old-format-relay-log$file_suffix.info $MYSQLD_DATADIR/relay-log.info
--echo # Read relay-log.info
diff --git a/mysql-test/suite/rpl/t/rpl_reset_slave_fail.test b/mysql-test/suite/rpl/t/rpl_reset_slave_fail.test
index 021dc76d50c..5c7e667695c 100644
--- a/mysql-test/suite/rpl/t/rpl_reset_slave_fail.test
+++ b/mysql-test/suite/rpl/t/rpl_reset_slave_fail.test
@@ -67,7 +67,7 @@ START SLAVE;
# Disable "Warning 1612 Being purged log ./slave-relay-bin.0* was not found"
# because it is different on Unix and Windows systems.
--disable_warnings
-RESET SLAVE;
+--source include/reset_slave.inc
--enable_warnings
DROP TABLE t1;
--replace_result $master_exec_file MASTER_LOG_FILE $master_exec_pos MASTER_LOG_POS
diff --git a/mysql-test/suite/rpl/t/rpl_row_001.test b/mysql-test/suite/rpl/t/rpl_row_001.test
index f66c61ffb6e..887c0961a63 100644
--- a/mysql-test/suite/rpl/t/rpl_row_001.test
+++ b/mysql-test/suite/rpl/t/rpl_row_001.test
@@ -14,7 +14,7 @@ connection master;
RESET MASTER;
connection slave;
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
connection master;
let $1=5000;
diff --git a/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test b/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test
index a249043fa19..9e10aaa6216 100644
--- a/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test
+++ b/mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test
@@ -100,7 +100,7 @@ stop slave;
connection master;
reset master;
connection slave;
-reset slave;
+--source include/reset_slave.inc
start slave;
--source include/wait_for_slave_to_start.inc
connection master;
@@ -167,7 +167,7 @@ stop slave;
connection master;
reset master;
connection slave;
-reset slave;
+--source include/reset_slave.inc
start slave;
--source include/wait_for_slave_to_start.inc
connection master;
@@ -230,7 +230,7 @@ stop slave;
connection master;
reset master;
connection slave;
-reset slave;
+--source include/reset_slave.inc
start slave;
--source include/wait_for_slave_to_start.inc
connection master;
diff --git a/mysql-test/suite/rpl/t/rpl_row_until.test b/mysql-test/suite/rpl/t/rpl_row_until.test
index 478c2206a5a..d318e0d7d26 100644
--- a/mysql-test/suite/rpl/t/rpl_row_until.test
+++ b/mysql-test/suite/rpl/t/rpl_row_until.test
@@ -38,7 +38,7 @@ sync_slave_with_master;
--source include/stop_slave.inc
# Reset slave.
-RESET SLAVE;
+--source include/reset_slave.inc
--replace_result $MASTER_MYPORT MASTER_MYPORT
eval CHANGE MASTER TO MASTER_USER='root', MASTER_CONNECT_RETRY=1, MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT;
@@ -102,7 +102,7 @@ START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=561;
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=740;
--source include/stop_slave.inc
-RESET SLAVE;
+--source include/reset_slave.inc
--source include/start_slave.inc
##############################################################################
diff --git a/mysql-test/suite/rpl/t/rpl_seconds_behind_master_spike.test b/mysql-test/suite/rpl/t/rpl_seconds_behind_master_spike.test
index d1bfbf25bae..600ba9b18d7 100644
--- a/mysql-test/suite/rpl/t/rpl_seconds_behind_master_spike.test
+++ b/mysql-test/suite/rpl/t/rpl_seconds_behind_master_spike.test
@@ -25,6 +25,12 @@
--source include/master-slave.inc
--connection slave
+
+# Using_Gtid needs to start as NO before updating debug_dbug
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
--source include/stop_slave.inc
SET @save_dbug= @@GLOBAL.debug_dbug;
SET @@global.debug_dbug="+d,pause_sql_thread_on_fde";
diff --git a/mysql-test/suite/rpl/t/rpl_server_id2.test b/mysql-test/suite/rpl/t/rpl_server_id2.test
index 6a8493ca278..6dc2f791954 100644
--- a/mysql-test/suite/rpl/t/rpl_server_id2.test
+++ b/mysql-test/suite/rpl/t/rpl_server_id2.test
@@ -2,7 +2,12 @@
# from itself, if running with --replicate-same-server-id.
source include/master-slave.inc;
+
connection slave;
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
create table t1 (n int);
reset master;
# replicate ourselves
diff --git a/mysql-test/suite/rpl/t/rpl_server_id_ignore.test b/mysql-test/suite/rpl/t/rpl_server_id_ignore.test
index 537978f1701..dbe7544bbb1 100644
--- a/mysql-test/suite/rpl/t/rpl_server_id_ignore.test
+++ b/mysql-test/suite/rpl/t/rpl_server_id_ignore.test
@@ -38,7 +38,7 @@ change master to IGNORE_SERVER_IDS= (10, 100);
--echo *** must be 10, 100 ***
let $ignore_list= query_get_value(SHOW SLAVE STATUS, Replicate_Ignore_Server_Ids, 1);
echo ignore server id list: $ignore_list;
-reset slave;
+--source include/reset_slave.inc
--echo *** must be empty due to reset slave ***
let $ignore_list= query_get_value(SHOW SLAVE STATUS, Replicate_Ignore_Server_Ids, 1);
echo ignore server id list: $ignore_list;
@@ -80,7 +80,7 @@ if (`select $slave_relay_pos1 - $slave_relay_pos0`)
stop slave;
source include/wait_for_slave_to_stop.inc;
-reset slave;
+--source include/reset_slave.inc
change master to IGNORE_SERVER_IDS= (10, 100);
--echo *** the list must remain (10, 100) after reset slave ***
let $ignore_list= query_get_value(SHOW SLAVE STATUS, Replicate_Ignore_Server_Ids, 1);
diff --git a/mysql-test/suite/rpl/t/rpl_slave_alias_replica.test b/mysql-test/suite/rpl/t/rpl_slave_alias_replica.test
index 324821a325f..06cf12ab7a9 100644
--- a/mysql-test/suite/rpl/t/rpl_slave_alias_replica.test
+++ b/mysql-test/suite/rpl/t/rpl_slave_alias_replica.test
@@ -65,6 +65,7 @@ STOP REPLICA SQL_THREAD;
--source include/wait_for_slave_sql_to_stop.inc
--echo "Command: RESET SLAVE ALL --> RESET REPLICA ALL"
RESET REPLICA ALL;
+set @@global.gtid_slave_pos= "";
--connection master
RESET MASTER;
diff --git a/mysql-test/suite/rpl/t/rpl_slave_max_statement_time.test b/mysql-test/suite/rpl/t/rpl_slave_max_statement_time.test
new file mode 100644
index 00000000000..b600c8434d5
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_slave_max_statement_time.test
@@ -0,0 +1,110 @@
+#
+# Purpose:
+# This test ensures that the slave can limit the execution time of its
+# events via the global system variable @@slave_max_statement_time.
+#
+# Methodology:
+# This test uses the following test cases to ensure that a slave will
+# correctly limit the execution time of its events:
+# 1) Using a serial slave, the SQL thread should time out when its underlying
+# event executes for longer than @@slave_max_statement_time.
+# 2) Using a parallel slave, a worker thread should time out when its
+# underlying event executes for longer than @@slave_max_statement_time.
+# 3) Load-based log events (from LOAD DATA INFILE) should time out if their
+# execution time exceeds @@slave_max_statement_time
+# 4) Locally executed long running statements should not time out due to
+# @@slave_max_statement_time.
+#
+# References:
+# MDEV-27161: Add option for SQL thread to limit maximum execution time per
+# query replicated
+#
+--source include/have_innodb.inc
+--source include/master-slave.inc
+
+--echo #
+--echo # Set up
+--echo #
+--connection master
+SET STATEMENT sql_log_bin=0 FOR CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format");
+SET STATEMENT sql_log_bin=0 FOR CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format");
+--connection slave
+SET STATEMENT sql_log_bin=0 FOR CALL mtr.add_suppression("Slave log event execution was interrupted");
+SET STATEMENT sql_log_bin=0 FOR CALL mtr.add_suppression("Unsafe statement written to the binary log using statement format");
+SET @save_slave_max_statement_time=@@GLOBAL.slave_max_statement_time;
+
+--let $with_lock= 1
+
+--echo #
+--echo # Test Case 1) Using a serial slave, the SQL thread should time out when
+--echo # its underlying event executes for longer than @@slave_max_statement_time.
+--echo #
+--source include/rpl_slave_max_statement_time.inc
+
+
+--echo #
+--echo # Test Case 2) Using a parallel slave, a worker thread should time out
+--echo # when its underlying event executes for longer than
+--echo # @@slave_max_statement_time
+--echo #
+
+--source include/stop_slave.inc
+SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
+SET @old_parallel_mode=@@GLOBAL.slave_parallel_mode;
+SET GLOBAL slave_parallel_threads=2;
+SET GLOBAL slave_parallel_mode='optimistic';
+--source include/start_slave.inc
+
+--source include/rpl_slave_max_statement_time.inc
+
+--source include/stop_slave.inc
+SET GLOBAL slave_parallel_mode=@old_parallel_mode;
+SET GLOBAL slave_parallel_threads=@old_parallel_threads;
+--source include/start_slave.inc
+
+
+--echo #
+--echo # Test Case 3) Load-based log events (from LOAD DATA INFILE) should time
+--echo # out if their execution time exceeds @@slave_max_statement_time
+--echo #
+--let $use_load_data= 1
+--source include/rpl_slave_max_statement_time.inc
+--let $use_load_data=
+
+
+--echo #
+--echo # Test Case 4) Locally executed long running statements should not time
+--echo # out due to @@slave_max_statement_time
+--echo #
+
+--connection slave
+--source include/stop_slave.inc
+SET @old_slave_max_statement_time=@@GLOBAL.slave_max_statement_time;
+SET @old_gtid_domain_id=@@GLOBAL.gtid_domain_id;
+SET @@GLOBAL.slave_max_statement_time=0.75;
+SET @@GLOBAL.gtid_domain_id=1;
+--source include/start_slave.inc
+
+CREATE TABLE t2 (a int);
+SET STATEMENT sql_log_bin=0 FOR INSERT INTO t2 SELECT SLEEP(1);
+--let $t2_count= `SELECT COUNT(*) FROM t2`
+if ($t2_count != 1)
+{
+ --die Local long running insert statement should have completed
+}
+DROP TABLE t2;
+
+--source include/stop_slave.inc
+SET GLOBAL gtid_domain_id=@old_gtid_domain_id;
+SET GLOBAL slave_max_statement_time=@old_slave_max_statement_time;
+--source include/start_slave.inc
+
+
+--echo # Cleanup
+--source include/stop_slave.inc
+SET GLOBAL slave_max_statement_time=@save_slave_max_statement_time;
+--source include/start_slave.inc
+
+--source include/rpl_end.inc
+
+--echo # End of rpl_slave_max_statement_time.test
diff --git a/mysql-test/suite/rpl/t/rpl_slave_skip.test b/mysql-test/suite/rpl/t/rpl_slave_skip.test
index 2ec80758486..933e7d14f9b 100644
--- a/mysql-test/suite/rpl/t/rpl_slave_skip.test
+++ b/mysql-test/suite/rpl/t/rpl_slave_skip.test
@@ -55,7 +55,7 @@ SELECT * FROM t2;
STOP SLAVE;
--source include/wait_for_slave_to_stop.inc
-RESET SLAVE;
+--source include/reset_slave.inc
connection master;
RESET MASTER;
diff --git a/mysql-test/suite/rpl/t/rpl_start_alter_restart_master.test b/mysql-test/suite/rpl/t/rpl_start_alter_restart_master.test
index eaddaa4db67..aac3af6fc14 100644
--- a/mysql-test/suite/rpl/t/rpl_start_alter_restart_master.test
+++ b/mysql-test/suite/rpl/t/rpl_start_alter_restart_master.test
@@ -10,6 +10,11 @@
--source include/no_valgrind_without_big.inc
--connection slave
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
+--connection slave
SET @old_debug_slave= @@global.debug;
stop slave;
--let $gtid_strict_mode= `select @@gtid_strict_mode`
diff --git a/mysql-test/suite/rpl/t/rpl_stm_000001.test b/mysql-test/suite/rpl/t/rpl_stm_000001.test
index 62b5c5b1cd0..3851e61868b 100644
--- a/mysql-test/suite/rpl/t/rpl_stm_000001.test
+++ b/mysql-test/suite/rpl/t/rpl_stm_000001.test
@@ -53,7 +53,7 @@ connection master;
reset master;
connection slave;
stop slave;
-reset slave;
+--source include/reset_slave.inc
connection master;
let $1=5000;
diff --git a/mysql-test/suite/rpl/t/rpl_stm_until.test b/mysql-test/suite/rpl/t/rpl_stm_until.test
index c9a922e44fa..ebfd355b299 100644
--- a/mysql-test/suite/rpl/t/rpl_stm_until.test
+++ b/mysql-test/suite/rpl/t/rpl_stm_until.test
@@ -19,6 +19,7 @@
-- source include/have_binlog_format_mixed_or_statement.inc
-- source include/master-slave.inc
+--let $master_use_gtid_option= No
-- source include/rpl_reset.inc
# Test is dependent on binlog positions
@@ -127,7 +128,7 @@ source include/stop_slave.inc;
--disable_warnings
drop table if exists t1;
--enable_warnings
-reset slave;
+--source include/reset_slave.inc
--replace_result $MASTER_MYPORT MASTER_PORT
eval change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, master_user='root';
diff --git a/mysql-test/suite/rpl/t/rpl_stop_slave.test b/mysql-test/suite/rpl/t/rpl_stop_slave.test
index 17efa7ade3b..14c6641f120 100644
--- a/mysql-test/suite/rpl/t/rpl_stop_slave.test
+++ b/mysql-test/suite/rpl/t/rpl_stop_slave.test
@@ -4,6 +4,12 @@ source include/have_debug_sync.inc;
source include/have_binlog_format_mixed_or_statement.inc;
source include/master-slave.inc;
+--connection slave
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+--connection master
+
--echo
--echo # BUG#56118 STOP SLAVE does not wait till trx with CREATE TMP TABLE ends
--echo #
diff --git a/mysql-test/suite/rpl/t/rpl_trigger.test b/mysql-test/suite/rpl/t/rpl_trigger.test
index f692816bf82..e442ed94d5a 100644
--- a/mysql-test/suite/rpl/t/rpl_trigger.test
+++ b/mysql-test/suite/rpl/t/rpl_trigger.test
@@ -5,6 +5,12 @@
--source include/have_binlog_format_mixed_or_statement.inc
--source include/have_innodb.inc
--source include/master-slave.inc
+
+connection slave;
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
connection master;
disable_query_log;
@@ -329,7 +335,8 @@ let $binlog_version= query_get_value(SHOW BINLOG EVENTS, Info, 1);
# Make the slave to replay the new binlog.
connection slave;
-RESET SLAVE;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
START SLAVE;
SELECT MASTER_POS_WAIT('master-bin.000001', 513) >= 0;
@@ -362,7 +369,7 @@ DROP TABLE t1;
DROP TABLE t2;
STOP SLAVE;
-RESET SLAVE;
+--source include/reset_slave.inc
# The master should be clean.
@@ -498,6 +505,10 @@ connection master;
--source include/rpl_reset.inc
connection slave;
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+
connection master;
create table t1 ( f int ) engine = innodb;
diff --git a/mysql-test/suite/rpl/t/rpl_using_gtid_default.test b/mysql-test/suite/rpl/t/rpl_using_gtid_default.test
new file mode 100644
index 00000000000..eab5b4dd504
--- /dev/null
+++ b/mysql-test/suite/rpl/t/rpl_using_gtid_default.test
@@ -0,0 +1,303 @@
+#
+# Purpose:
+# This test ensures that a replica's default value for Using_Gtid is set
+# correctly. Specifically, it should default to 'Slave_Pos' unless the primary
+# server does not support GTIDs (if its version is less than 10), in which case
+# the replica should fall back to 'No'.
+#
+# Methodology:
+# Validate the value of Using_Gtid on replica initialization and after
+# RESET SLAVE commands. Specifically, we validate the following use cases:
+#
+# Case 1) A replica will initialize with Slave_Pos if the primary supports
+# GTIDs
+# Case 2) A replica configured with the Using_Gtid=Slave_Pos issued
+# RESET SLAVE will preserve Using_Gtid without any informational
+# messages.
+# Case 3) A replica configured with Using_Gtid=No against a master which
+# supports GTIDs will revert to Using_Gtid=Slave_Pos after issued
+# RESET SLAVE and provide an informational note
+# Case 4) A fresh replica targeting a primary which does not support GTIDs
+# will fall back to Using_Gtid=No when starting. An informational
+# message should be logged.
+# Case 5) A replica connected to a primary which does not support GTIDs
+# should preserve Using_Gtid=No when issued RESET SLAVE. No message
+# should be provided to the user.
+# Case 6) A replica configured with Using_Gtid=Current_Pos should revert
+# to Slave_Pos when issued RESET SLAVE. An informational message
+# should be provided to the user.
+# Case 7) The MTR include file rpl_change_topology.inc should implicitly
+# set MASTER_USE_GTID=NO when provided with $rpl_master_log_file
+# Case 8) The MTR include file reset_slave.inc should keep/delete GTID state
+# when reset_slave_keep_gtid_state is set, respectively.
+# Case 9) A replica issued CHANGE MASTER TO specified with log coordinates
+# but not master_use_gtid=No should warn the user that Using_Gtid is
+# being changed to No.
+# Case 10) A replica issued CHANGE MASTER TO specified with log coordinates
+# and master_use_gtid=Slave_Pos should warn the user that the log
+# coordinates will be ignored.
+#
+# References:
+# MDEV-19801: Change defaults for CHANGE MASTER TO so that GTID-based
+# replication is used by default if master supports it
+#
+--source include/have_debug.inc
+--source include/master-slave.inc
+
+# Format independent test so just use one
+--source include/have_binlog_format_mixed.inc
+
+--echo #
+--echo # Slave default configuration should be Slave_Pos
+--let $expected_default_using_gtid= Slave_Pos
+--connection slave
+--let $using_gtid= query_get_value(SHOW SLAVE STATUS, Using_Gtid, 1)
+if ($using_gtid != $expected_default_using_gtid)
+{
+ --die Using_Gtid had wrong default value of '$using_gtid' when it should have been '$expected_default_using_gtid'
+}
+
+--echo #
+--echo # Ensure that a slave configured with Using_Gtid=Slave_Pos will remain
+--echo # as Slave_Pos after RESET SLAVE
+--source include/stop_slave.inc
+RESET SLAVE;
+--echo # No warning should be given because Slave_Pos never changed
+SHOW WARNINGS;
+--source include/start_slave.inc
+--let $using_gtid= query_get_value(SHOW SLAVE STATUS, Using_Gtid, 1)
+if ($using_gtid != $expected_default_using_gtid)
+{
+ --die Using_Gtid has wrong value of '$using_gtid' when it should be '$expected_default_using_gtid'
+}
+
+
+--echo #
+--echo # Ensure that a slave configured with Using_Gtid=No will revert to its
+--echo # default of Slave_Pos after RESET SLAVE for a master which supports
+--echo # GTIDs
+
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=NO;
+--source include/start_slave.inc
+--source include/stop_slave.inc
+RESET SLAVE;
+--echo # A notification that Using_Gtid was reverted should exist
+SHOW WARNINGS;
+--source include/start_slave.inc
+--let $using_gtid= query_get_value(SHOW SLAVE STATUS, Using_Gtid, 1)
+if ($using_gtid != $expected_default_using_gtid)
+{
+ --die Using_Gtid has wrong value of '$using_gtid' when it should be '$expected_default_using_gtid'
+}
+
+--echo # Clear SHOW WARNINGS
+--disable_query_log
+set SQL_LOG_BIN=0;
+CREATE TABLE t1 (a int);
+DROP TABLE t1;
+set SQL_LOG_BIN=1;
+--enable_query_log
+
+
+--echo #
+--echo # If the primary does not support GTIDs (version < 10), the replica
+--echo # should fall back to Using_Gtid=No on slave start, and should not
+--echo # revert Using_Gtid to Slave_Pos after RESET SLAVE
+
+--source include/stop_slave.inc
+RESET SLAVE ALL;
+
+--replace_result $MASTER_MYPORT MASTER_MYPORT
+--eval CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT, MASTER_USER='root', MASTER_CONNECT_RETRY=1
+SET @saved_dbug= @@GLOBAL.debug_dbug;
+set @@global.debug_dbug= "d,mock_mariadb_primary_v5_in_get_master_version";
+--source include/start_slave.inc
+
+--echo # Replica should detect at start that the primary does not support GTIDs
+--echo # and fall-back to Using_Gtid=No
+--let $using_gtid= query_get_value(SHOW SLAVE STATUS, Using_Gtid, 1)
+if ($using_gtid != 'No')
+{
+ --die Using_Gtid has wrong value of '$using_gtid' when it should be 'No'
+}
+
+--echo # Replica should have an informational message stating it is falling
+--echo # back to Using_Gtid=No
+let $log_error_= `SELECT @@GLOBAL.log_error`;
+if(!$log_error_)
+{
+ # MySQL Server on windows is started with --console and thus
+ # does not know the location of its .err log, use default location
+ let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.2.err;
+}
+--let SEARCH_FILE=$log_error_
+--let SEARCH_PATTERN=Falling back to Using_Gtid=No because master does not support GTIDs
+--source include/search_pattern_in_file.inc
+
+--source include/stop_slave.inc
+RESET SLAVE;
+
+--echo # Replica should know that the primary does not support GTIDs and
+--echo # preserve Using_Gtid=No
+--let $using_gtid= query_get_value(SHOW SLAVE STATUS, Using_Gtid, 1)
+if ($using_gtid != 'No')
+{
+ --die Using_Gtid has wrong value of '$using_gtid' when it should be 'No'
+}
+--echo # 'No' was not reverted and therefore no note should be added
+SHOW WARNINGS;
+set @@global.debug_dbug= @saved_dbug;
+--source include/start_slave.inc
+
+
+--echo #
+--echo # Ensure that a slave configured with Using_Gtid=Current_Pos will revert
+--echo # to its default of Slave_Pos after RESET SLAVE.
+
+--source include/stop_slave.inc
+CHANGE MASTER TO MASTER_USE_GTID=Current_Pos;
+--source include/start_slave.inc
+--source include/stop_slave.inc
+RESET SLAVE;
+--echo # A notification that Using_Gtid was reverted should exist
+SHOW WARNINGS;
+--source include/start_slave.inc
+--let $using_gtid= query_get_value(SHOW SLAVE STATUS, Using_Gtid, 1)
+if ($using_gtid != $expected_default_using_gtid)
+{
+ --die Using_Gtid has wrong value of '$using_gtid' when it should be '$expected_default_using_gtid'
+}
+
+--echo # Clear SHOW WARNINGS
+--disable_query_log
+set SQL_LOG_BIN=0;
+CREATE TABLE t1 (a int);
+DROP TABLE t1;
+set SQL_LOG_BIN=1;
+--enable_query_log
+
+--echo # The MTR include file rpl_change_topology.inc should implicitly set
+--echo # MASTER_USE_GTID=NO when provided with \$rpl_master_log_file. Note that
+--echo # this will switch master and slave roles.
+--connection slave
+--source include/stop_slave.inc
+--let $pos_c= query_get_value(SHOW SLAVE STATUS, Exec_Master_Log_Pos, 1)
+--let $file_c= query_get_value(SHOW SLAVE STATUS, Master_Log_File, 1)
+--let $rpl_master_log_file= 2:$file_c
+--let $rpl_master_log_pos= 2:$pos_c
+--let $rpl_topology= 2->1
+--source include/rpl_change_topology.inc
+
+--echo # connection 'master' is the slave in this comparison
+--connection master
+--let $using_gtid= query_get_value(SHOW SLAVE STATUS, Using_Gtid, 1)
+--echo # Validating Using_Gtid=No..
+if (`SELECT strcmp("$using_gtid","No") != 0`)
+{
+ --die Using_Gtid should be No when calling rpl_change_topology with \$rpl_master_log_file set
+}
+--echo # ..success
+
+--let $rpl_master_log_file=
+--let $rpl_topology= 1->2
+--source include/rpl_change_topology.inc
+
+--echo # connection 'slave' is back to slave role
+--connection slave
+--let $using_gtid= query_get_value(SHOW SLAVE STATUS, Using_Gtid, 1)
+--echo # Validating Using_Gtid=$expected_default_using_gtid..
+if (`SELECT strcmp("$using_gtid","$expected_default_using_gtid")!= 0`)
+{
+ --die Using_Gtid should be back to $expected_default_using_gtid with empty \$rpl_master_log_file
+}
+--echo # ..success
+--source include/start_slave.inc
+
+--echo #
+--echo # The MTR include file reset_slave.inc should keep/delete GTID state
+--echo # when reset_slave_keep_gtid_state is set, respectively.
+--echo #
+--connection master
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (1);
+DROP TABLE t1;
+--source include/save_master_gtid.inc
+
+--connection slave
+--source include/sync_with_master_gtid.inc
+--source include/stop_slave.inc
+
+--echo # Tagging gtid_slave_pos before reset_slave.inc as old_slave_pos
+--let $old_slave_pos= `SELECT @@gtid_slave_pos`
+if (`SELECT strcmp("$old_slave_pos","") = 0`)
+{
+ die gtid_slave_pos is empty but should not be;
+}
+
+--echo # Using reset_slave_keep_gtid_state=1 should preserve GTID state
+--let $master_use_gtid_option=Slave_Pos
+--let $reset_slave_keep_gtid_state=1
+--source include/reset_slave.inc
+
+--echo # Tagging gtid_slave_pos after reset_slave.inc as new_slave_pos
+--let $new_slave_pos= `SELECT @@gtid_slave_pos`
+--echo # Validating old_slave_pos == new_slave_pos..
+if ($old_slave_pos != $new_slave_pos)
+{
+ die gtid_slave_pos unexpectedly changed after running reset_slave.inc;
+}
+--echo # ..success
+
+--echo # Using reset_slave_keep_gtid_state=0 should empty GTID state
+--let $master_use_gtid_option=Slave_Pos
+--let $reset_slave_keep_gtid_state=0
+--source include/reset_slave.inc
+
+--echo # Tagging gtid_slave_pos as new_slave_pos
+--let $new_slave_pos= `SELECT @@gtid_slave_pos`
+--echo # Validating new_slave_pos is empty..
+if (`SELECT strcmp("$new_slave_pos","") != 0`)
+{
+ die gtid_slave_pos should be empty after reset_slave.inc without keeping gtid state;
+}
+--echo # ..success
+--replace_result $old_slave_pos old_slave_pos
+eval set global gtid_slave_pos="$old_slave_pos";
+--source include/start_slave.inc
+
+--echo #
+--echo # A replica issued CHANGE MASTER TO specified with log coordinates but
+--echo # not master_use_gtid=no should warn the user that Using_Gtid is being
+--echo # changed to No.
+--echo #
+--connection slave
+--let $io_log_pos= query_get_value('SHOW SLAVE STATUS', Read_Master_Log_Pos, 1)
+--let $io_log_file= query_get_value('SHOW SLAVE STATUS', Master_Log_File, 1)
+--source include/stop_slave.inc
+--replace_result $io_log_file io_log_file $io_log_pos io_log_pos
+--eval CHANGE MASTER TO master_log_pos=$io_log_pos, master_log_file='$io_log_file'
+--source include/start_slave.inc
+
+
+--echo #
+--echo # A replica issued CHANGE MASTER TO specified with log coordinates and
+--echo # master_use_gtid=Slave_Pos should warn the user that the log
+--echo # coordinates will be ignored.
+--echo #
+--connection slave
+--let $io_log_pos= query_get_value('SHOW SLAVE STATUS', Read_Master_Log_Pos, 1)
+--let $io_log_file= query_get_value('SHOW SLAVE STATUS', Master_Log_File, 1)
+--let $relay_log_pos= 4
+--let $relay_log_file= slave-relay-bin.000001
+--source include/stop_slave.inc
+--replace_result $io_log_file io_log_file $io_log_pos io_log_pos
+--eval CHANGE MASTER TO master_log_pos=$io_log_pos, master_log_file='$io_log_file', master_use_gtid=Slave_Pos
+--replace_result $relay_log_file relay_log_file $relay_log_pos relay_log_pos
+--eval CHANGE MASTER TO relay_log_pos=$relay_log_pos, relay_log_file='$relay_log_file', master_use_gtid=Slave_Pos
+--source include/start_slave.inc
+
+--source include/rpl_end.inc
+
+--echo #
+--echo # End of rpl_using_gtid_default.test
diff --git a/mysql-test/suite/rpl/t/rpl_xa_gap_lock.test b/mysql-test/suite/rpl/t/rpl_xa_gap_lock.test
index 9c48891b889..29e883a19d6 100644
--- a/mysql-test/suite/rpl/t/rpl_xa_gap_lock.test
+++ b/mysql-test/suite/rpl/t/rpl_xa_gap_lock.test
@@ -129,7 +129,7 @@ DROP TABLE t2, t1;
# --enable_query_log
#}
--replace_result $master_file LOG_FILE $master_pos LOG_POS
---eval CHANGE MASTER TO MASTER_LOG_FILE='$master_file', MASTER_LOG_POS=$master_pos
+--eval CHANGE MASTER TO MASTER_LOG_FILE='$master_file', MASTER_LOG_POS=$master_pos, MASTER_USE_GTID=NO
SET @@GLOBAL.innodb_limit_optimistic_insert_debug = @saved_innodb_limit_optimistic_insert_debug;
--source include/start_slave.inc
diff --git a/mysql-test/suite/rpl/t/semisync_future-7591.test b/mysql-test/suite/rpl/t/semisync_future-7591.test
index 866041d2579..793d8bccc18 100644
--- a/mysql-test/suite/rpl/t/semisync_future-7591.test
+++ b/mysql-test/suite/rpl/t/semisync_future-7591.test
@@ -8,7 +8,7 @@ set global rpl_semi_sync_master_enabled = ON;
--connection slave
--source include/stop_slave.inc
set global rpl_semi_sync_slave_enabled = ON;
-change master to master_log_file='master-bin.000002', master_log_pos = 320;
+change master to master_log_file='master-bin.000002', master_log_pos = 320, master_use_gtid=no;
start slave;
--let $slave_io_errno=1236
@@ -20,7 +20,8 @@ reset master;
--connection slave
--source include/stop_slave.inc
-reset slave;
+--let $master_use_gtid_option= No
+--source include/reset_slave.inc
--source include/start_slave.inc
set global rpl_semi_sync_slave_enabled = OFF;
diff --git a/mysql-test/suite/sql_sequence/gtid.result b/mysql-test/suite/sql_sequence/gtid.result
index 5c0003d4ea3..f23ebc56688 100644
--- a/mysql-test/suite/sql_sequence/gtid.result
+++ b/mysql-test/suite/sql_sequence/gtid.result
@@ -68,7 +68,7 @@ connection master;
create sequence s2;
alter table s2 add id int;
ERROR HY000: Sequence 's_db.s2' table structure is invalid (Wrong number of columns)
-alter table s2 add index ind_x(start);
+alter table s2 add index ind_x(start_value);
ERROR HY000: Sequence 's_db.s2' table structure is invalid (Sequence tables cannot have any keys)
drop sequence s2;
###########################################
diff --git a/mysql-test/suite/sql_sequence/gtid.test b/mysql-test/suite/sql_sequence/gtid.test
index 63ed7ec5264..4a096246108 100644
--- a/mysql-test/suite/sql_sequence/gtid.test
+++ b/mysql-test/suite/sql_sequence/gtid.test
@@ -70,7 +70,7 @@ create sequence s2;
alter table s2 add id int;
--error ER_SEQUENCE_INVALID_TABLE_STRUCTURE
-alter table s2 add index ind_x(start);
+alter table s2 add index ind_x(start_value);
drop sequence s2;
--echo ###########################################
diff --git a/mysql-test/suite/sql_sequence/replication.result b/mysql-test/suite/sql_sequence/replication.result
index 762c332dbd6..94b1c72b9e0 100644
--- a/mysql-test/suite/sql_sequence/replication.result
+++ b/mysql-test/suite/sql_sequence/replication.result
@@ -64,7 +64,7 @@ connection master;
create sequence s2;
alter table s2 add id int;
ERROR HY000: Sequence 's_db.s2' table structure is invalid (Wrong number of columns)
-alter table s2 add index ind_x(start);
+alter table s2 add index ind_x(start_value);
ERROR HY000: Sequence 's_db.s2' table structure is invalid (Sequence tables cannot have any keys)
drop sequence s2;
###########################################
diff --git a/mysql-test/suite/sql_sequence/replication.test b/mysql-test/suite/sql_sequence/replication.test
index e26fde8a329..0354737788f 100644
--- a/mysql-test/suite/sql_sequence/replication.test
+++ b/mysql-test/suite/sql_sequence/replication.test
@@ -70,7 +70,7 @@ create sequence s2;
alter table s2 add id int;
--error ER_SEQUENCE_INVALID_TABLE_STRUCTURE
-alter table s2 add index ind_x(start);
+alter table s2 add index ind_x(start_value);
drop sequence s2;
--echo ###########################################
diff --git a/mysql-test/suite/sys_vars/r/allow_suspicious_udfs.result b/mysql-test/suite/sys_vars/r/allow_suspicious_udfs.result
new file mode 100644
index 00000000000..db0b4749e69
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/allow_suspicious_udfs.result
@@ -0,0 +1,11 @@
+#
+# MDEV-24815 Show "--allow-suspicious-udfs" state in SYSTEM VARIABLES
+#
+SELECT @@allow_suspicious_udfs AS EXPECT_0;
+EXPECT_0
+0
+# restart: --allow-suspicious-udfs
+SELECT @@allow_suspicious_udfs AS EXPECT_1;
+EXPECT_1
+1
+# restart: --skip-allow-suspicious-udfs
diff --git a/mysql-test/suite/sys_vars/r/innodb_prefix_index_cluster_optimization_basic.result b/mysql-test/suite/sys_vars/r/innodb_prefix_index_cluster_optimization_basic.result
deleted file mode 100644
index 57b653bcf5e..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_prefix_index_cluster_optimization_basic.result
+++ /dev/null
@@ -1,122 +0,0 @@
-SET @start_global_value = @@global.innodb_prefix_index_cluster_optimization;
-SELECT @start_global_value;
-@start_global_value
-0
-#
-# exists as global only
-#
-Valid values are 'ON' and 'OFF'
-select @@global.innodb_prefix_index_cluster_optimization in (0, 1);
-@@global.innodb_prefix_index_cluster_optimization in (0, 1)
-1
-select @@global.innodb_prefix_index_cluster_optimization;
-@@global.innodb_prefix_index_cluster_optimization
-0
-select @@session.innodb_prefix_index_cluster_optimization;
-ERROR HY000: Variable 'innodb_prefix_index_cluster_optimization' is a GLOBAL variable
-show global variables like 'innodb_prefix_index_cluster_optimization';
-Variable_name Value
-innodb_prefix_index_cluster_optimization OFF
-show session variables like 'innodb_prefix_index_cluster_optimization';
-Variable_name Value
-innodb_prefix_index_cluster_optimization OFF
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION OFF
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION OFF
-#
-# show that it's writable
-#
-set global innodb_prefix_index_cluster_optimization = 'OFF';
-select @@global.innodb_prefix_index_cluster_optimization;
-@@global.innodb_prefix_index_cluster_optimization
-0
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION OFF
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION OFF
-set @@global.innodb_prefix_index_cluster_optimization = 'ON';
-select @@global.innodb_prefix_index_cluster_optimization;
-@@global.innodb_prefix_index_cluster_optimization
-1
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION ON
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION ON
-set global innodb_prefix_index_cluster_optimization = 0;
-select @@global.innodb_prefix_index_cluster_optimization;
-@@global.innodb_prefix_index_cluster_optimization
-0
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION OFF
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION OFF
-set @@global.innodb_prefix_index_cluster_optimization = 1;
-select @@global.innodb_prefix_index_cluster_optimization;
-@@global.innodb_prefix_index_cluster_optimization
-1
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION ON
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION ON
-set session innodb_prefix_index_cluster_optimization = 'OFF';
-ERROR HY000: Variable 'innodb_prefix_index_cluster_optimization' is a GLOBAL variable and should be set with SET GLOBAL
-select @@global.innodb_prefix_index_cluster_optimization;
-@@global.innodb_prefix_index_cluster_optimization
-1
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION ON
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION ON
-set @@session.innodb_prefix_index_cluster_optimization = 'ON';
-ERROR HY000: Variable 'innodb_prefix_index_cluster_optimization' is a GLOBAL variable and should be set with SET GLOBAL
-select @@global.innodb_prefix_index_cluster_optimization;
-@@global.innodb_prefix_index_cluster_optimization
-1
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION ON
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION ON
-#
-# incorrect types
-#
-set global innodb_prefix_index_cluster_optimization = 1.1;
-ERROR 42000: Incorrect argument type to variable 'innodb_prefix_index_cluster_optimization'
-set global innodb_prefix_index_cluster_optimization = 1e1;
-ERROR 42000: Incorrect argument type to variable 'innodb_prefix_index_cluster_optimization'
-set global innodb_prefix_index_cluster_optimization = 2;
-ERROR 42000: Variable 'innodb_prefix_index_cluster_optimization' can't be set to the value of '2'
-set global innodb_prefix_index_cluster_optimization = -3;
-ERROR 42000: Variable 'innodb_prefix_index_cluster_optimization' can't be set to the value of '-3'
-select @@global.innodb_prefix_index_cluster_optimization;
-@@global.innodb_prefix_index_cluster_optimization
-1
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION ON
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-VARIABLE_NAME VARIABLE_VALUE
-INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION ON
-set global innodb_prefix_index_cluster_optimization = 'AUTO';
-ERROR 42000: Variable 'innodb_prefix_index_cluster_optimization' can't be set to the value of 'AUTO'
-#
-# Cleanup
-#
-SET @@global.innodb_prefix_index_cluster_optimization = @start_global_value;
-SELECT @@global.innodb_prefix_index_cluster_optimization;
-@@global.innodb_prefix_index_cluster_optimization
-0
diff --git a/mysql-test/suite/sys_vars/r/innodb_version_basic.result b/mysql-test/suite/sys_vars/r/innodb_version_basic.result
deleted file mode 100644
index 759b5048512..00000000000
--- a/mysql-test/suite/sys_vars/r/innodb_version_basic.result
+++ /dev/null
@@ -1,17 +0,0 @@
-select @@global.innodb_version;
-@@global.innodb_version
-x.y.z
-select @@session.innodb_version;
-ERROR HY000: Variable 'innodb_version' is a GLOBAL variable
-show global variables like 'innodb_version' disabled so to not change with every version;
-show session variables like 'innodb_version' disabled so to not change with every version;
-select VARIABLE_VALUE=@@global.innodb_version from information_schema.global_variables where variable_name='innodb_version';
-VARIABLE_VALUE=@@global.innodb_version
-1
-select VARIABLE_VALUE=@@global.innodb_version from information_schema.session_variables where variable_name='innodb_version';
-VARIABLE_VALUE=@@global.innodb_version
-1
-set global innodb_version=1;
-ERROR HY000: Variable 'innodb_version' is a read only variable
-set session innodb_version=1;
-ERROR HY000: Variable 'innodb_version' is a read only variable
diff --git a/mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result b/mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result
index 99843f0b93f..b4763ae0aa4 100644
--- a/mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result
+++ b/mysql-test/suite/sys_vars/r/optimizer_prune_level_basic.result
@@ -1,35 +1,35 @@
SET @start_global_value = @@global.optimizer_prune_level;
SELECT @start_global_value;
@start_global_value
-1
+2
SET @start_session_value = @@session.optimizer_prune_level;
SELECT @start_session_value;
@start_session_value
-1
+2
'#--------------------FN_DYNVARS_115_01-------------------------#'
SET @@global.optimizer_prune_level = 0;
SET @@global.optimizer_prune_level = DEFAULT;
SELECT @@global.optimizer_prune_level;
@@global.optimizer_prune_level
-1
+2
SET @@session.optimizer_prune_level = 0;
SET @@session.optimizer_prune_level = DEFAULT;
SELECT @@session.optimizer_prune_level;
@@session.optimizer_prune_level
-1
+2
'#--------------------FN_DYNVARS_115_02-------------------------#'
SET @@global.optimizer_prune_level = DEFAULT;
-SELECT @@global.optimizer_prune_level = 1;
-@@global.optimizer_prune_level = 1
+SELECT @@global.optimizer_prune_level = 2;
+@@global.optimizer_prune_level = 2
1
SET @@session.optimizer_prune_level = DEFAULT;
-SELECT @@session.optimizer_prune_level = 1;
-@@session.optimizer_prune_level = 1
+SELECT @@session.optimizer_prune_level = 2;
+@@session.optimizer_prune_level = 2
1
'#--------------------FN_DYNVARS_115_03-------------------------#'
SELECT @@global.optimizer_prune_level;
@@global.optimizer_prune_level
-1
+2
SET @@global.optimizer_prune_level = 0;
SELECT @@global.optimizer_prune_level;
@@global.optimizer_prune_level
@@ -38,6 +38,10 @@ SET @@global.optimizer_prune_level = 1;
SELECT @@global.optimizer_prune_level;
@@global.optimizer_prune_level
1
+SET @@global.optimizer_prune_level = 2;
+SELECT @@global.optimizer_prune_level;
+@@global.optimizer_prune_level
+2
SET @@global.optimizer_prune_level = TRUE;
SELECT @@global.optimizer_prune_level;
@@global.optimizer_prune_level
@@ -49,7 +53,7 @@ SELECT @@global.optimizer_prune_level;
'#--------------------FN_DYNVARS_115_04-------------------------#'
SELECT @@session.optimizer_prune_level;
@@session.optimizer_prune_level
-1
+2
SET @@session.optimizer_prune_level = 0;
SELECT @@session.optimizer_prune_level;
@@session.optimizer_prune_level
@@ -58,6 +62,10 @@ SET @@session.optimizer_prune_level = 1;
SELECT @@session.optimizer_prune_level;
@@session.optimizer_prune_level
1
+SET @@session.optimizer_prune_level = 2;
+SELECT @@session.optimizer_prune_level;
+@@session.optimizer_prune_level
+2
SET @@session.optimizer_prune_level = TRUE;
SELECT @@session.optimizer_prune_level;
@@session.optimizer_prune_level
@@ -69,7 +77,7 @@ SELECT @@session.optimizer_prune_level;
'#------------------FN_DYNVARS_115_05-----------------------#'
SET @@global.optimizer_prune_level = ON;
ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level'
-'Bug# 34840: Since it is a boolean variable, it should not give errors on 'ON' & 'OFF' values';
+'Bug# 34840: Since it is not a boolean variable, it should give errors on 'ON' & 'OFF' values';
SET @@global.optimizer_prune_level = OFF;
ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level'
SET @@global.optimizer_prune_level = 'ONN';
@@ -86,10 +94,16 @@ Warning 1292 Truncated incorrect optimizer_prune_level value: '-1024'
SELECT @@global.optimizer_prune_level;
@@global.optimizer_prune_level
0
-'Bug# 34840: Since it is a boolean variable, it should give errors on numeric values';
+'Bug# 34840: Since it is not a boolean variable, it should no give errors on numeric values';
SET @@global.optimizer_prune_level = 65536;
Warnings:
Warning 1292 Truncated incorrect optimizer_prune_level value: '65536'
+SET @@global.optimizer_prune_level = 3;
+Warnings:
+Warning 1292 Truncated incorrect optimizer_prune_level value: '3'
+select @@global.optimizer_prune_level;
+@@global.optimizer_prune_level
+2
SET @@global.optimizer_prune_level = 65530.34;
ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level'
SET @@global.optimizer_prune_level = test;
@@ -121,7 +135,7 @@ Warnings:
Warning 1292 Truncated incorrect optimizer_prune_level value: '65550'
SELECT @@session.optimizer_prune_level;
@@session.optimizer_prune_level
-1
+2
SET @@session.optimizer_prune_level = test;
ERROR 42000: Incorrect argument type to variable 'optimizer_prune_level'
'#------------------FN_DYNVARS_115_06-----------------------#'
@@ -164,8 +178,8 @@ ERROR 42S22: Unknown column 'optimizer_prune_level' in 'field list'
SET @@global.optimizer_prune_level = @start_global_value;
SELECT @@global.optimizer_prune_level;
@@global.optimizer_prune_level
-1
+2
SET @@session.optimizer_prune_level = @start_session_value;
SELECT @@session.optimizer_prune_level;
@@session.optimizer_prune_level
-1
+2
diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb.result b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
index 8b95878c347..42803695813 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_innodb.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
@@ -1,7 +1,6 @@
select VARIABLE_NAME, SESSION_VALUE, DEFAULT_VALUE, VARIABLE_SCOPE, VARIABLE_TYPE, VARIABLE_COMMENT, NUMERIC_MIN_VALUE, NUMERIC_MAX_VALUE, NUMERIC_BLOCK_SIZE, ENUM_VALUE_LIST, READ_ONLY, COMMAND_LINE_ARGUMENT from information_schema.system_variables
where variable_name like 'innodb%' and
variable_name not in (
-'innodb_version', # always the same as the server version
'innodb_numa_interleave', # only available WITH_NUMA
'innodb_evict_tables_on_commit_debug', # one may want to override this
'innodb_use_native_aio', # default value depends on OS
@@ -1258,10 +1257,10 @@ READ_ONLY YES
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME INNODB_PREFIX_INDEX_CLUSTER_OPTIMIZATION
SESSION_VALUE NULL
-DEFAULT_VALUE OFF
+DEFAULT_VALUE ON
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT Enable prefix optimization to sometimes avoid cluster index lookups.
+VARIABLE_COMMENT Deprecated parameter with no effect
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
index a6bf0fb606a..e018489446b 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded,32bit.rdiff
@@ -1,4 +1,4 @@
-@@ -34,7 +34,7 @@
+@@ -44,7 +44,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_BLOCK_SIZE
VARIABLE_SCOPE GLOBAL
@@ -7,7 +7,7 @@
VARIABLE_COMMENT Block size to be used for Aria index pages.
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 32768
-@@ -44,7 +44,7 @@
+@@ -54,7 +54,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_CHECKPOINT_INTERVAL
VARIABLE_SCOPE GLOBAL
@@ -16,7 +16,7 @@
VARIABLE_COMMENT Interval between tries to do an automatic checkpoints. In seconds; 0 means 'no automatic checkpoints' which makes sense only for testing.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -54,7 +54,7 @@
+@@ -64,7 +64,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_CHECKPOINT_LOG_ACTIVITY
VARIABLE_SCOPE GLOBAL
@@ -25,7 +25,7 @@
VARIABLE_COMMENT Number of bytes that the transaction log has to grow between checkpoints before a new checkpoint is written to the log.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -74,7 +74,7 @@
+@@ -84,7 +84,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME ARIA_FORCE_START_AFTER_RECOVERY_FAILURES
VARIABLE_SCOPE GLOBAL
@@ -34,7 +34,7 @@
VARIABLE_COMMENT Number of consecutive log recovery failures after which logs will be automatically deleted to cure the problem; 0 (the default) disables the feature.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -94,7 +94,7 @@
+@@ -104,7 +104,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_GROUP_COMMIT_INTERVAL
VARIABLE_SCOPE GLOBAL
@@ -43,7 +43,7 @@
VARIABLE_COMMENT Interval between commits in microseconds (1/1000000 sec). 0 stands for no waiting for other threads to come and do a commit in "hard" mode and no sync()/commit at all in "soft" mode. Option has only an effect if aria_group_commit is used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -104,7 +104,7 @@
+@@ -114,7 +114,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_LOG_FILE_SIZE
VARIABLE_SCOPE GLOBAL
@@ -52,7 +52,7 @@
VARIABLE_COMMENT Limit for transaction log size
NUMERIC_MIN_VALUE 8388608
NUMERIC_MAX_VALUE 4294967295
-@@ -134,10 +134,10 @@
+@@ -144,10 +144,10 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_PAGECACHE_AGE_THRESHOLD
VARIABLE_SCOPE GLOBAL
@@ -65,7 +65,7 @@
NUMERIC_BLOCK_SIZE 100
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -154,7 +154,7 @@
+@@ -164,7 +164,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_PAGECACHE_DIVISION_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -74,7 +74,7 @@
VARIABLE_COMMENT The minimum percentage of warm blocks in key cache
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100
-@@ -164,7 +164,7 @@
+@@ -174,7 +174,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_PAGECACHE_FILE_HASH_SIZE
VARIABLE_SCOPE GLOBAL
@@ -83,7 +83,7 @@
VARIABLE_COMMENT Number of hash buckets for open and changed files. If you have a lot of Aria files open you should increase this for faster flush of changes. A good value is probably 1/10 of number of possible open Aria files.
NUMERIC_MIN_VALUE 128
NUMERIC_MAX_VALUE 16384
-@@ -194,7 +194,7 @@
+@@ -204,7 +204,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME ARIA_REPAIR_THREADS
VARIABLE_SCOPE SESSION
@@ -92,7 +92,7 @@
VARIABLE_COMMENT Number of threads to use when repairing Aria tables. The value of 1 disables parallel repair.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 128
-@@ -207,7 +207,7 @@
+@@ -217,7 +217,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE.
NUMERIC_MIN_VALUE 4096
@@ -101,7 +101,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -264,7 +264,7 @@
+@@ -274,7 +274,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME AUTO_INCREMENT_INCREMENT
VARIABLE_SCOPE SESSION
@@ -110,7 +110,7 @@
VARIABLE_COMMENT Auto-increment columns are incremented by this
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 65535
-@@ -274,7 +274,7 @@
+@@ -284,7 +284,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME AUTO_INCREMENT_OFFSET
VARIABLE_SCOPE SESSION
@@ -119,7 +119,7 @@
VARIABLE_COMMENT Offset added to Auto-increment columns. Used when auto-increment-increment != 1
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 65535
-@@ -284,7 +284,7 @@
+@@ -294,7 +294,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME BACK_LOG
VARIABLE_SCOPE GLOBAL
@@ -128,7 +128,7 @@
VARIABLE_COMMENT The number of outstanding connection requests MariaDB can have. This comes into play when the main MariaDB thread gets very many connection requests in a very short time
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65535
-@@ -337,7 +337,7 @@
+@@ -347,7 +347,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the transactional cache for updates to transactional engines for the binary log. If you often use transactions containing many statements, you can increase this to get more performance
NUMERIC_MIN_VALUE 4096
@@ -137,7 +137,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -354,20 +354,20 @@
+@@ -364,20 +364,20 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME BINLOG_COMMIT_WAIT_COUNT
VARIABLE_SCOPE GLOBAL
@@ -162,7 +162,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -384,7 +384,7 @@
+@@ -394,7 +394,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME BINLOG_EXPIRE_LOGS_SECONDS
VARIABLE_SCOPE GLOBAL
@@ -171,7 +171,7 @@
VARIABLE_COMMENT If non-zero, binary logs will be purged after binlog_expire_logs_seconds seconds; It and expire_logs_days are linked, such that changes in one are converted into the other. Possible purges happen at startup and at binary log rotation.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 8553600
-@@ -397,7 +397,7 @@
+@@ -407,7 +407,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of file cache for the binary log
NUMERIC_MIN_VALUE 8192
@@ -180,7 +180,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -447,7 +447,7 @@
+@@ -457,7 +457,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the statement cache for updates to non-transactional engines for the binary log. If you often use statements updating a great number of rows, you can increase this to get more performance.
NUMERIC_MIN_VALUE 4096
@@ -189,7 +189,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -457,7 +457,7 @@
+@@ -467,7 +467,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Size of tree cache used in bulk insert optimisation. Note that this is a limit per thread!
NUMERIC_MIN_VALUE 0
@@ -198,7 +198,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -644,7 +644,7 @@
+@@ -654,7 +654,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME CONNECT_TIMEOUT
VARIABLE_SCOPE GLOBAL
@@ -207,7 +207,7 @@
VARIABLE_COMMENT The number of seconds the mysqld server is waiting for a connect packet before responding with 'Bad handshake'
NUMERIC_MIN_VALUE 2
NUMERIC_MAX_VALUE 31536000
-@@ -694,7 +694,7 @@
+@@ -704,7 +704,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DEADLOCK_SEARCH_DEPTH_LONG
VARIABLE_SCOPE SESSION
@@ -216,7 +216,7 @@
VARIABLE_COMMENT Long search depth for the two-step deadlock detection
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 33
-@@ -704,7 +704,7 @@
+@@ -714,7 +714,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DEADLOCK_SEARCH_DEPTH_SHORT
VARIABLE_SCOPE SESSION
@@ -225,7 +225,7 @@
VARIABLE_COMMENT Short search depth for the two-step deadlock detection
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 32
-@@ -714,7 +714,7 @@
+@@ -724,7 +724,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DEADLOCK_TIMEOUT_LONG
VARIABLE_SCOPE SESSION
@@ -234,7 +234,7 @@
VARIABLE_COMMENT Long timeout for the two-step deadlock detection (in microseconds)
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -724,7 +724,7 @@
+@@ -734,7 +734,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DEADLOCK_TIMEOUT_SHORT
VARIABLE_SCOPE SESSION
@@ -243,7 +243,7 @@
VARIABLE_COMMENT Short timeout for the two-step deadlock detection (in microseconds)
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -774,7 +774,7 @@
+@@ -784,7 +784,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME DEFAULT_WEEK_FORMAT
VARIABLE_SCOPE SESSION
@@ -252,7 +252,7 @@
VARIABLE_COMMENT The default week format used by WEEK() functions
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 7
-@@ -784,7 +784,7 @@
+@@ -794,7 +794,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DELAYED_INSERT_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -261,7 +261,7 @@
VARIABLE_COMMENT After inserting delayed_insert_limit rows, the INSERT DELAYED handler will check if there are any SELECT statements pending. If so, it allows these to execute before continuing.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -794,7 +794,7 @@
+@@ -804,7 +804,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DELAYED_INSERT_TIMEOUT
VARIABLE_SCOPE GLOBAL
@@ -270,7 +270,7 @@
VARIABLE_COMMENT How long a INSERT DELAYED thread should wait for INSERT statements before terminating
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -804,7 +804,7 @@
+@@ -814,7 +814,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DELAYED_QUEUE_SIZE
VARIABLE_SCOPE GLOBAL
@@ -279,7 +279,7 @@
VARIABLE_COMMENT What size queue (in rows) should be allocated for handling INSERT DELAYED. If the queue becomes full, any client that does INSERT DELAYED will wait until there is room in the queue again
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -834,7 +834,7 @@
+@@ -844,7 +844,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME DIV_PRECISION_INCREMENT
VARIABLE_SCOPE SESSION
@@ -288,7 +288,7 @@
VARIABLE_COMMENT Precision of the result of '/' operator will be increased on that value
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 38
-@@ -944,7 +944,7 @@
+@@ -954,7 +954,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME EXTRA_MAX_CONNECTIONS
VARIABLE_SCOPE GLOBAL
@@ -297,7 +297,7 @@
VARIABLE_COMMENT The number of connections on extra-port
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100000
-@@ -974,7 +974,7 @@
+@@ -984,7 +984,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME FLUSH_TIME
VARIABLE_SCOPE GLOBAL
@@ -306,7 +306,7 @@
VARIABLE_COMMENT A dedicated thread is created to flush all tables at the given interval
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -1004,7 +1004,7 @@
+@@ -1014,7 +1014,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME FT_MAX_WORD_LEN
VARIABLE_SCOPE GLOBAL
@@ -315,7 +315,7 @@
VARIABLE_COMMENT The maximum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 84
-@@ -1014,7 +1014,7 @@
+@@ -1024,7 +1024,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME FT_MIN_WORD_LEN
VARIABLE_SCOPE GLOBAL
@@ -324,7 +324,7 @@
VARIABLE_COMMENT The minimum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 84
-@@ -1024,7 +1024,7 @@
+@@ -1034,7 +1034,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME FT_QUERY_EXPANSION_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -333,7 +333,7 @@
VARIABLE_COMMENT Number of best matches to use for query expansion
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1000
-@@ -1194,7 +1194,7 @@
+@@ -1204,7 +1204,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME HISTOGRAM_SIZE
VARIABLE_SCOPE SESSION
@@ -342,7 +342,7 @@
VARIABLE_COMMENT Number of bytes used for a histogram. If set to 0, no histograms are created by ANALYZE.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -1224,7 +1224,7 @@
+@@ -1234,7 +1234,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME HOST_CACHE_SIZE
VARIABLE_SCOPE GLOBAL
@@ -351,7 +351,7 @@
VARIABLE_COMMENT How many host names should be cached to avoid resolving.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65536
-@@ -1334,7 +1334,7 @@
+@@ -1344,7 +1344,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME INTERACTIVE_TIMEOUT
VARIABLE_SCOPE SESSION
@@ -360,7 +360,7 @@
VARIABLE_COMMENT The number of seconds the server waits for activity on an interactive connection before closing it
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -1367,7 +1367,7 @@
+@@ -1377,7 +1377,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the buffer that is used for joins
NUMERIC_MIN_VALUE 128
@@ -369,7 +369,7 @@
NUMERIC_BLOCK_SIZE 128
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1384,7 +1384,7 @@
+@@ -1394,7 +1394,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME JOIN_CACHE_LEVEL
VARIABLE_SCOPE SESSION
@@ -378,7 +378,7 @@
VARIABLE_COMMENT Controls what join operations can be executed with join buffers. Odd numbers are used for plain join buffers while even numbers are used for linked buffers
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 8
-@@ -1407,7 +1407,7 @@
+@@ -1417,7 +1417,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the buffer used for index blocks for MyISAM tables. Increase this to get better index handling (for all reads and multiple writes) to as much as you can afford
NUMERIC_MIN_VALUE 0
@@ -387,7 +387,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1564,7 +1564,7 @@
+@@ -1574,7 +1574,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME LOCK_WAIT_TIMEOUT
VARIABLE_SCOPE SESSION
@@ -396,7 +396,7 @@
VARIABLE_COMMENT Timeout in seconds to wait for a lock before returning an error.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -1684,7 +1684,7 @@
+@@ -1694,7 +1694,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_SLOW_RATE_LIMIT
VARIABLE_SCOPE SESSION
@@ -405,7 +405,7 @@
VARIABLE_COMMENT Write to slow log every #th slow query. Set to 1 to log everything. Increase it to reduce the size of the slow or the performance impact of slow logging
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -1714,7 +1714,7 @@
+@@ -1724,7 +1724,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_WARNINGS
VARIABLE_SCOPE SESSION
@@ -414,7 +414,7 @@
VARIABLE_COMMENT Log some not critical warnings to the general log file.Value can be between 0 and 11. Higher values mean more verbosity
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -1764,7 +1764,7 @@
+@@ -1774,7 +1774,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME MAX_ALLOWED_PACKET
VARIABLE_SCOPE SESSION
@@ -423,7 +423,7 @@
VARIABLE_COMMENT Max packet length to send to or receive from the server
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -1777,14 +1777,14 @@
+@@ -1787,14 +1787,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the total size of the transactional cache
NUMERIC_MIN_VALUE 4096
@@ -440,7 +440,7 @@
VARIABLE_COMMENT Binary log will be rotated automatically when the size exceeds this value.
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 1073741824
-@@ -1797,14 +1797,14 @@
+@@ -1807,14 +1807,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the total size of the statement cache
NUMERIC_MIN_VALUE 4096
@@ -457,7 +457,7 @@
VARIABLE_COMMENT The number of simultaneous clients allowed
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 100000
-@@ -1814,7 +1814,7 @@
+@@ -1824,7 +1824,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_CONNECT_ERRORS
VARIABLE_SCOPE GLOBAL
@@ -466,7 +466,7 @@
VARIABLE_COMMENT If there is more than this number of interrupted connections from a host this host will be blocked from further connections
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -1824,7 +1824,7 @@
+@@ -1834,7 +1834,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_DELAYED_THREADS
VARIABLE_SCOPE SESSION
@@ -475,7 +475,7 @@
VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -1844,7 +1844,7 @@
+@@ -1854,7 +1854,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_ERROR_COUNT
VARIABLE_SCOPE SESSION
@@ -484,7 +484,7 @@
VARIABLE_COMMENT Max number of errors/warnings to store for a statement
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65535
-@@ -1857,14 +1857,14 @@
+@@ -1867,14 +1867,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Don't allow creation of heap tables bigger than this
NUMERIC_MIN_VALUE 16384
@@ -501,7 +501,7 @@
VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -1884,7 +1884,7 @@
+@@ -1894,7 +1894,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_LENGTH_FOR_SORT_DATA
VARIABLE_SCOPE SESSION
@@ -510,7 +510,7 @@
VARIABLE_COMMENT Max number of bytes in sorted records
NUMERIC_MIN_VALUE 4
NUMERIC_MAX_VALUE 8388608
-@@ -1914,7 +1914,7 @@
+@@ -1924,7 +1924,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_RECURSIVE_ITERATIONS
VARIABLE_SCOPE SESSION
@@ -519,7 +519,7 @@
VARIABLE_COMMENT Maximum number of iterations when executing recursive queries
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -1927,14 +1927,14 @@
+@@ -1937,14 +1937,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The maximum size of the container of a rowid filter
NUMERIC_MIN_VALUE 1024
@@ -536,7 +536,7 @@
VARIABLE_COMMENT Limit assumed max number of seeks when looking up rows based on a key
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -1954,7 +1954,7 @@
+@@ -1964,7 +1964,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_SORT_LENGTH
VARIABLE_SCOPE SESSION
@@ -545,7 +545,7 @@
VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored)
NUMERIC_MIN_VALUE 64
NUMERIC_MAX_VALUE 8388608
-@@ -1964,7 +1964,7 @@
+@@ -1974,7 +1974,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_SP_RECURSION_DEPTH
VARIABLE_SCOPE SESSION
@@ -554,7 +554,7 @@
VARIABLE_COMMENT Maximum stored procedure recursion depth
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -1984,7 +1984,7 @@
+@@ -1994,7 +1994,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_TMP_TABLES
VARIABLE_SCOPE SESSION
@@ -563,7 +563,7 @@
VARIABLE_COMMENT Unused, will be removed.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2004,7 +2004,7 @@
+@@ -2014,7 +2014,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_WRITE_LOCK_COUNT
VARIABLE_SCOPE GLOBAL
@@ -572,7 +572,7 @@
VARIABLE_COMMENT After this many write locks, allow some read locks to run in between
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2014,7 +2014,7 @@
+@@ -2024,7 +2024,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME METADATA_LOCKS_CACHE_SIZE
VARIABLE_SCOPE GLOBAL
@@ -581,7 +581,7 @@
VARIABLE_COMMENT Unused
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1048576
-@@ -2024,7 +2024,7 @@
+@@ -2034,7 +2034,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME METADATA_LOCKS_HASH_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -590,7 +590,7 @@
VARIABLE_COMMENT Unused
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1024
-@@ -2034,7 +2034,7 @@
+@@ -2044,7 +2044,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MIN_EXAMINED_ROW_LIMIT
VARIABLE_SCOPE SESSION
@@ -599,7 +599,7 @@
VARIABLE_COMMENT Don't write queries to slow log that examine fewer rows than that
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2044,7 +2044,7 @@
+@@ -2054,7 +2054,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MRR_BUFFER_SIZE
VARIABLE_SCOPE SESSION
@@ -608,7 +608,7 @@
VARIABLE_COMMENT Size of buffer to use when using MRR with range access
NUMERIC_MIN_VALUE 8192
NUMERIC_MAX_VALUE 2147483647
-@@ -2054,7 +2054,7 @@
+@@ -2064,7 +2064,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MYISAM_BLOCK_SIZE
VARIABLE_SCOPE GLOBAL
@@ -617,7 +617,7 @@
VARIABLE_COMMENT Block size to be used for MyISAM index pages
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 16384
-@@ -2064,7 +2064,7 @@
+@@ -2074,7 +2074,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MYISAM_DATA_POINTER_SIZE
VARIABLE_SCOPE GLOBAL
@@ -626,7 +626,7 @@
VARIABLE_COMMENT Default pointer size to be used for MyISAM tables
NUMERIC_MIN_VALUE 2
NUMERIC_MAX_VALUE 7
-@@ -2087,7 +2087,7 @@
+@@ -2097,7 +2097,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Restricts the total memory used for memory mapping of MySQL tables
NUMERIC_MIN_VALUE 7
@@ -635,7 +635,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
-@@ -2104,10 +2104,10 @@
+@@ -2114,10 +2114,10 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME MYISAM_REPAIR_THREADS
VARIABLE_SCOPE SESSION
@@ -648,7 +648,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2117,7 +2117,7 @@
+@@ -2127,7 +2127,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE
NUMERIC_MIN_VALUE 4096
@@ -657,7 +657,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2154,7 +2154,7 @@
+@@ -2164,7 +2164,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME NET_BUFFER_LENGTH
VARIABLE_SCOPE SESSION
@@ -666,7 +666,7 @@
VARIABLE_COMMENT Buffer length for TCP/IP and socket communication
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1048576
-@@ -2164,7 +2164,7 @@
+@@ -2174,7 +2174,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME NET_READ_TIMEOUT
VARIABLE_SCOPE SESSION
@@ -675,7 +675,7 @@
VARIABLE_COMMENT Number of seconds to wait for more data from a connection before aborting the read
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -2174,7 +2174,7 @@
+@@ -2184,7 +2184,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME NET_RETRY_COUNT
VARIABLE_SCOPE SESSION
@@ -684,7 +684,7 @@
VARIABLE_COMMENT If a read on a communication port is interrupted, retry this many times before giving up
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2184,7 +2184,7 @@
+@@ -2194,7 +2194,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME NET_WRITE_TIMEOUT
VARIABLE_SCOPE SESSION
@@ -693,7 +693,7 @@
VARIABLE_COMMENT Number of seconds to wait for a block to be written to a connection before aborting the write
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -2234,7 +2234,7 @@
+@@ -2244,7 +2244,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME OPEN_FILES_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -702,7 +702,16 @@
VARIABLE_COMMENT If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 or autoset then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of file descriptors
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2244,17 +2244,17 @@
+@@ -2254,7 +2254,7 @@
+ COMMAND_LINE_ARGUMENT REQUIRED
+ VARIABLE_NAME OPTIMIZER_EXTRA_PRUNING_DEPTH
+ VARIABLE_SCOPE SESSION
+-VARIABLE_TYPE BIGINT UNSIGNED
++VARIABLE_TYPE INT UNSIGNED
+ VARIABLE_COMMENT If the optimizer needs to enumerate join prefix of this size or larger, then it will try agressively prune away the search space.
+ NUMERIC_MIN_VALUE 0
+ NUMERIC_MAX_VALUE 62
+@@ -2264,17 +2264,17 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_MAX_SEL_ARG_WEIGHT
VARIABLE_SCOPE SESSION
@@ -720,10 +729,10 @@
VARIABLE_SCOPE SESSION
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows
+ VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search: 1 - prune plans based on cost and number of retrieved rows eq_ref: 2 - prune also if we find an eq_ref chain
NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 1
-@@ -2264,7 +2264,7 @@
+ NUMERIC_MAX_VALUE 2
+@@ -2284,7 +2284,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_SEARCH_DEPTH
VARIABLE_SCOPE SESSION
@@ -732,7 +741,7 @@
VARIABLE_COMMENT Maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to compile a query. Values smaller than the number of tables in a relation result in faster optimization, but may produce very bad query plans. If set to 0, the system will automatically pick a reasonable value.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 62
-@@ -2274,7 +2274,7 @@
+@@ -2294,7 +2294,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_SELECTIVITY_SAMPLING_LIMIT
VARIABLE_SCOPE SESSION
@@ -741,7 +750,7 @@
VARIABLE_COMMENT Controls number of record samples to check condition selectivity
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 4294967295
-@@ -2304,17 +2304,17 @@
+@@ -2324,17 +2324,17 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_TRACE_MAX_MEM_SIZE
VARIABLE_SCOPE SESSION
@@ -762,7 +771,7 @@
VARIABLE_COMMENT Controls selectivity of which conditions the optimizer takes into account to calculate cardinality of a partial join when it searches for the best execution plan Meaning: 1 - use selectivity of index backed range conditions to calculate the cardinality of a partial join if the last joined table is accessed by full table scan or an index scan, 2 - use selectivity of index backed range conditions to calculate the cardinality of a partial join in any case, 3 - additionally always use selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join, 4 - use histograms to calculate selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join.5 - additionally use selectivity of certain non-range predicates calculated on record samples
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 5
-@@ -2334,7 +2334,7 @@
+@@ -2354,7 +2354,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME PERFORMANCE_SCHEMA_ACCOUNTS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -771,7 +780,7 @@
VARIABLE_COMMENT Maximum number of instrumented user@host accounts. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2344,7 +2344,7 @@
+@@ -2364,7 +2364,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_DIGESTS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -780,7 +789,7 @@
VARIABLE_COMMENT Size of the statement digest. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2354,7 +2354,7 @@
+@@ -2374,7 +2374,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_STAGES_HISTORY_LONG_SIZE
VARIABLE_SCOPE GLOBAL
@@ -789,7 +798,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_STAGES_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2364,7 +2364,7 @@
+@@ -2384,7 +2384,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_STAGES_HISTORY_SIZE
VARIABLE_SCOPE GLOBAL
@@ -798,7 +807,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STAGES_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2374,7 +2374,7 @@
+@@ -2394,7 +2394,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_STATEMENTS_HISTORY_LONG_SIZE
VARIABLE_SCOPE GLOBAL
@@ -807,7 +816,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_STATEMENTS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2384,7 +2384,7 @@
+@@ -2404,7 +2404,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_STATEMENTS_HISTORY_SIZE
VARIABLE_SCOPE GLOBAL
@@ -816,7 +825,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STATEMENTS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2394,7 +2394,7 @@
+@@ -2414,7 +2414,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_TRANSACTIONS_HISTORY_LONG_SIZE
VARIABLE_SCOPE GLOBAL
@@ -825,7 +834,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_TRANSACTIONS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2404,7 +2404,7 @@
+@@ -2424,7 +2424,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_TRANSACTIONS_HISTORY_SIZE
VARIABLE_SCOPE GLOBAL
@@ -834,7 +843,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_TRANSACTIONS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2414,7 +2414,7 @@
+@@ -2434,7 +2434,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_LONG_SIZE
VARIABLE_SCOPE GLOBAL
@@ -843,7 +852,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_WAITS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2424,7 +2424,7 @@
+@@ -2444,7 +2444,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_SIZE
VARIABLE_SCOPE GLOBAL
@@ -852,7 +861,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_WAITS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2434,7 +2434,7 @@
+@@ -2454,7 +2454,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_HOSTS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -861,7 +870,7 @@
VARIABLE_COMMENT Maximum number of instrumented hosts. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2444,7 +2444,7 @@
+@@ -2464,7 +2464,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_COND_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -870,7 +879,7 @@
VARIABLE_COMMENT Maximum number of condition instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2454,7 +2454,7 @@
+@@ -2474,7 +2474,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_COND_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -879,7 +888,7 @@
VARIABLE_COMMENT Maximum number of instrumented condition objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2464,7 +2464,7 @@
+@@ -2484,7 +2484,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_DIGEST_LENGTH
VARIABLE_SCOPE GLOBAL
@@ -888,7 +897,7 @@
VARIABLE_COMMENT Maximum length considered for digest text, when stored in performance_schema tables.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2474,7 +2474,7 @@
+@@ -2494,7 +2494,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_FILE_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -897,7 +906,7 @@
VARIABLE_COMMENT Maximum number of file instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2484,7 +2484,7 @@
+@@ -2504,7 +2504,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_FILE_HANDLES
VARIABLE_SCOPE GLOBAL
@@ -906,7 +915,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented files.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2494,7 +2494,7 @@
+@@ -2514,7 +2514,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_FILE_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -915,7 +924,7 @@
VARIABLE_COMMENT Maximum number of instrumented files. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2504,7 +2504,7 @@
+@@ -2524,7 +2524,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_INDEX_STAT
VARIABLE_SCOPE GLOBAL
@@ -924,7 +933,7 @@
VARIABLE_COMMENT Maximum number of index statistics for instrumented tables. Use 0 to disable, -1 for automated scaling.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2514,7 +2514,7 @@
+@@ -2534,7 +2534,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_MEMORY_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -933,7 +942,7 @@
VARIABLE_COMMENT Maximum number of memory pool instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1024
-@@ -2524,7 +2524,7 @@
+@@ -2544,7 +2544,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_METADATA_LOCKS
VARIABLE_SCOPE GLOBAL
@@ -942,7 +951,7 @@
VARIABLE_COMMENT Maximum number of metadata locks. Use 0 to disable, -1 for automated scaling.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2534,7 +2534,7 @@
+@@ -2554,7 +2554,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_MUTEX_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -951,7 +960,7 @@
VARIABLE_COMMENT Maximum number of mutex instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2544,7 +2544,7 @@
+@@ -2564,7 +2564,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_MUTEX_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -960,7 +969,7 @@
VARIABLE_COMMENT Maximum number of instrumented MUTEX objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2554,7 +2554,7 @@
+@@ -2574,7 +2574,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_PREPARED_STATEMENTS_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -969,7 +978,7 @@
VARIABLE_COMMENT Maximum number of instrumented prepared statements. Use 0 to disable, -1 for automated scaling.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2564,7 +2564,7 @@
+@@ -2584,7 +2584,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_PROGRAM_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -978,7 +987,7 @@
VARIABLE_COMMENT Maximum number of instrumented programs. Use 0 to disable, -1 for automated scaling.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2574,7 +2574,7 @@
+@@ -2594,7 +2594,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_RWLOCK_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -987,7 +996,7 @@
VARIABLE_COMMENT Maximum number of rwlock instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2584,7 +2584,7 @@
+@@ -2604,7 +2604,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_RWLOCK_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -996,7 +1005,7 @@
VARIABLE_COMMENT Maximum number of instrumented RWLOCK objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2594,7 +2594,7 @@
+@@ -2614,7 +2614,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_SOCKET_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -1005,7 +1014,7 @@
VARIABLE_COMMENT Maximum number of socket instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2604,7 +2604,7 @@
+@@ -2624,7 +2624,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_SOCKET_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -1014,7 +1023,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented sockets. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2614,7 +2614,7 @@
+@@ -2634,7 +2634,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_SQL_TEXT_LENGTH
VARIABLE_SCOPE GLOBAL
@@ -1023,7 +1032,7 @@
VARIABLE_COMMENT Maximum length of displayed sql text.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2624,7 +2624,7 @@
+@@ -2644,7 +2644,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_STAGE_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -1032,7 +1041,7 @@
VARIABLE_COMMENT Maximum number of stage instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2634,7 +2634,7 @@
+@@ -2654,7 +2654,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_STATEMENT_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -1041,7 +1050,7 @@
VARIABLE_COMMENT Maximum number of statement instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2644,7 +2644,7 @@
+@@ -2664,7 +2664,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_STATEMENT_STACK
VARIABLE_SCOPE GLOBAL
@@ -1050,7 +1059,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STATEMENTS_CURRENT.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 256
-@@ -2654,7 +2654,7 @@
+@@ -2674,7 +2674,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_TABLE_HANDLES
VARIABLE_SCOPE GLOBAL
@@ -1059,7 +1068,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented tables. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2664,7 +2664,7 @@
+@@ -2684,7 +2684,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_TABLE_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -1068,7 +1077,7 @@
VARIABLE_COMMENT Maximum number of instrumented tables. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2674,7 +2674,7 @@
+@@ -2694,7 +2694,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_TABLE_LOCK_STAT
VARIABLE_SCOPE GLOBAL
@@ -1077,7 +1086,7 @@
VARIABLE_COMMENT Maximum number of lock statistics for instrumented tables. Use 0 to disable, -1 for automated scaling.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2684,7 +2684,7 @@
+@@ -2704,7 +2704,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_THREAD_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -1086,7 +1095,7 @@
VARIABLE_COMMENT Maximum number of thread instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2694,7 +2694,7 @@
+@@ -2714,7 +2714,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_THREAD_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -1095,7 +1104,7 @@
VARIABLE_COMMENT Maximum number of instrumented threads. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2704,7 +2704,7 @@
+@@ -2724,7 +2724,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_SESSION_CONNECT_ATTRS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -1104,7 +1113,7 @@
VARIABLE_COMMENT Size of session attribute string buffer per thread. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2714,7 +2714,7 @@
+@@ -2734,7 +2734,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_SETUP_ACTORS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -1113,7 +1122,7 @@
VARIABLE_COMMENT Maximum number of rows in SETUP_ACTORS.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2724,7 +2724,7 @@
+@@ -2744,7 +2744,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_SETUP_OBJECTS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -1122,7 +1131,7 @@
VARIABLE_COMMENT Maximum number of rows in SETUP_OBJECTS.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2734,7 +2734,7 @@
+@@ -2754,7 +2754,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_USERS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -1131,7 +1140,7 @@
VARIABLE_COMMENT Maximum number of instrumented users. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2784,7 +2784,7 @@
+@@ -2804,7 +2804,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PRELOAD_BUFFER_SIZE
VARIABLE_SCOPE SESSION
@@ -1140,7 +1149,7 @@
VARIABLE_COMMENT The size of the buffer that is allocated when preloading indexes
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -2804,7 +2804,7 @@
+@@ -2824,7 +2824,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME PROFILING_HISTORY_SIZE
VARIABLE_SCOPE SESSION
@@ -1149,7 +1158,7 @@
VARIABLE_COMMENT Number of statements about which profiling information is maintained. If set to 0, no profiles are stored. See SHOW PROFILES.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100
-@@ -2814,7 +2814,7 @@
+@@ -2834,7 +2834,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PROGRESS_REPORT_TIME
VARIABLE_SCOPE SESSION
@@ -1158,7 +1167,7 @@
VARIABLE_COMMENT Seconds between sending progress reports to the client for time-consuming statements. Set to 0 to disable progress reporting.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2874,7 +2874,7 @@
+@@ -2894,7 +2894,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME QUERY_ALLOC_BLOCK_SIZE
VARIABLE_SCOPE SESSION
@@ -1167,7 +1176,7 @@
VARIABLE_COMMENT Allocation block size for query parsing and execution
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -2884,7 +2884,7 @@
+@@ -2904,7 +2904,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME QUERY_CACHE_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -1176,7 +1185,7 @@
VARIABLE_COMMENT Don't cache results that are bigger than this
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2894,7 +2894,7 @@
+@@ -2914,7 +2914,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME QUERY_CACHE_MIN_RES_UNIT
VARIABLE_SCOPE GLOBAL
@@ -1185,7 +1194,7 @@
VARIABLE_COMMENT The minimum size for blocks allocated by the query cache
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2907,7 +2907,7 @@
+@@ -2927,7 +2927,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The memory allocated to store results from old queries
NUMERIC_MIN_VALUE 0
@@ -1194,7 +1203,7 @@
NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2944,7 +2944,7 @@
+@@ -2964,7 +2964,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME QUERY_PREALLOC_SIZE
VARIABLE_SCOPE SESSION
@@ -1203,7 +1212,7 @@
VARIABLE_COMMENT Persistent buffer for query parsing and execution
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -2957,7 +2957,7 @@
+@@ -2977,7 +2977,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes
NUMERIC_MIN_VALUE 0
@@ -1212,7 +1221,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2967,14 +2967,14 @@
+@@ -2987,14 +2987,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes
NUMERIC_MIN_VALUE 0
@@ -1229,7 +1238,7 @@
VARIABLE_COMMENT Allocation block size for storing ranges during optimization
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 4294967295
-@@ -2984,7 +2984,7 @@
+@@ -3004,7 +3004,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME READ_BUFFER_SIZE
VARIABLE_SCOPE SESSION
@@ -1238,7 +1247,7 @@
VARIABLE_COMMENT Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value
NUMERIC_MIN_VALUE 8192
NUMERIC_MAX_VALUE 2147483647
-@@ -3004,7 +3004,7 @@
+@@ -3024,7 +3024,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME READ_RND_BUFFER_SIZE
VARIABLE_SCOPE SESSION
@@ -1247,7 +1256,7 @@
VARIABLE_COMMENT When reading rows in sorted order after a sort, the rows are read through this buffer to avoid a disk seeks
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 2147483647
-@@ -3024,10 +3024,10 @@
+@@ -3044,10 +3044,10 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME ROWID_MERGE_BUFF_SIZE
VARIABLE_SCOPE SESSION
@@ -1260,7 +1269,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3064,7 +3064,7 @@
+@@ -3084,7 +3084,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SERVER_ID
VARIABLE_SCOPE SESSION
@@ -1269,7 +1278,7 @@
VARIABLE_COMMENT Uniquely identifies the server instance in the community of replication partners
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -3134,7 +3134,7 @@
+@@ -3164,7 +3164,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME SLAVE_MAX_ALLOWED_PACKET
VARIABLE_SCOPE GLOBAL
@@ -1278,7 +1287,7 @@
VARIABLE_COMMENT The maximum packet length to sent successfully from the master to slave.
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -3144,7 +3144,7 @@
+@@ -3174,7 +3174,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SLOW_LAUNCH_TIME
VARIABLE_SCOPE GLOBAL
@@ -1287,7 +1296,7 @@
VARIABLE_COMMENT If creating the thread takes longer than this value (in seconds), the Slow_launch_threads counter will be incremented
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -3187,7 +3187,7 @@
+@@ -3217,7 +3217,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Each thread that needs to do a sort allocates a buffer of this size
NUMERIC_MIN_VALUE 1024
@@ -1296,7 +1305,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3404,7 +3404,7 @@
+@@ -3434,7 +3434,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME STORED_PROGRAM_CACHE
VARIABLE_SCOPE GLOBAL
@@ -1305,7 +1314,7 @@
VARIABLE_COMMENT The soft upper limit for number of cached stored routines for one connection.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 524288
-@@ -3484,7 +3484,7 @@
+@@ -3514,7 +3514,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME TABLE_DEFINITION_CACHE
VARIABLE_SCOPE GLOBAL
@@ -1314,7 +1323,7 @@
VARIABLE_COMMENT The number of cached table definitions
NUMERIC_MIN_VALUE 400
NUMERIC_MAX_VALUE 2097152
-@@ -3494,7 +3494,7 @@
+@@ -3524,7 +3524,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME TABLE_OPEN_CACHE
VARIABLE_SCOPE GLOBAL
@@ -1323,7 +1332,7 @@
VARIABLE_COMMENT The number of cached open tables
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 1048576
-@@ -3554,7 +3554,7 @@
+@@ -3584,7 +3584,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME THREAD_CACHE_SIZE
VARIABLE_SCOPE GLOBAL
@@ -1332,7 +1341,7 @@
VARIABLE_COMMENT How many threads we should keep in a cache for reuse. These are freed after 5 minutes of idle time
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -3637,7 +3637,7 @@
+@@ -3667,7 +3667,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Max size for data for an internal temporary on-disk MyISAM or Aria table.
NUMERIC_MIN_VALUE 1024
@@ -1341,7 +1350,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3647,7 +3647,7 @@
+@@ -3677,7 +3677,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT If an internal in-memory temporary table exceeds this size, MariaDB will automatically convert it to an on-disk MyISAM or Aria table. Same as tmp_table_size.
NUMERIC_MIN_VALUE 0
@@ -1350,7 +1359,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3657,14 +3657,14 @@
+@@ -3687,14 +3687,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Alias for tmp_memory_table_size. If an internal in-memory temporary table exceeds this size, MariaDB will automatically convert it to an on-disk MyISAM or Aria table.
NUMERIC_MIN_VALUE 0
@@ -1367,7 +1376,7 @@
VARIABLE_COMMENT Allocation block size for transactions to be stored in binary log
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 134217728
-@@ -3674,7 +3674,7 @@
+@@ -3704,7 +3704,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME TRANSACTION_PREALLOC_SIZE
VARIABLE_SCOPE SESSION
@@ -1376,7 +1385,7 @@
VARIABLE_COMMENT Persistent buffer for transactions to be stored in binary log
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 134217728
-@@ -3814,7 +3814,7 @@
+@@ -3844,7 +3844,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME WAIT_TIMEOUT
VARIABLE_SCOPE SESSION
@@ -1385,7 +1394,7 @@
VARIABLE_COMMENT The number of seconds the server waits for activity on a connection before closing it
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -3841,7 +3841,7 @@
+@@ -3871,7 +3871,7 @@
VARIABLE_NAME LOG_TC_SIZE
GLOBAL_VALUE_ORIGIN AUTO
VARIABLE_SCOPE GLOBAL
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
index 4d0f34bf451..6d0d147a9db 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result
@@ -12,6 +12,16 @@ variable_name not in (
'log_tc_size','have_sanitizer'
)
order by variable_name;
+VARIABLE_NAME ALLOW_SUSPICIOUS_UDFS
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Allows use of user-defined functions (UDFs) consisting of only one symbol xxx() without corresponding xxx_init() or xxx_deinit(). That also means that one can load any function from any library, for example exit() from libc.so
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME ALTER_ALGORITHM
VARIABLE_SCOPE SESSION
VARIABLE_TYPE ENUM
@@ -2242,6 +2252,16 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME OPTIMIZER_EXTRA_PRUNING_DEPTH
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_COMMENT If the optimizer needs to enumerate join prefix of this size or larger, then it will try agressively prune away the search space.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 62
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_MAX_SEL_ARG_WEIGHT
VARIABLE_SCOPE SESSION
VARIABLE_TYPE BIGINT UNSIGNED
@@ -2255,9 +2275,9 @@ COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_PRUNE_LEVEL
VARIABLE_SCOPE SESSION
VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows
+VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search: 1 - prune plans based on cost and number of retrieved rows eq_ref: 2 - prune also if we find an eq_ref chain
NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 1
+NUMERIC_MAX_VALUE 2
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
@@ -3082,6 +3102,16 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY YES
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME SKIP_GRANT_TABLES
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Start without grant tables. This gives all users FULL ACCESS to all tables.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME SKIP_NAME_RESOLVE
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BOOLEAN
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff
index d4852f1aef9..8ba94d3ba77 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.rdiff
@@ -1,6 +1,4 @@
---- ../../mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result 2021-05-12 15:30:19.783373551 +0530
-+++ ../../mysql-test/suite/sys_vars/r/sysvars_server_notembedded,32bit.reject 2021-05-12 15:32:40.170343130 +0530
-@@ -34,7 +34,7 @@
+@@ -44,7 +44,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_BLOCK_SIZE
VARIABLE_SCOPE GLOBAL
@@ -9,7 +7,7 @@
VARIABLE_COMMENT Block size to be used for Aria index pages.
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 32768
-@@ -44,7 +44,7 @@
+@@ -54,7 +54,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_CHECKPOINT_INTERVAL
VARIABLE_SCOPE GLOBAL
@@ -18,7 +16,7 @@
VARIABLE_COMMENT Interval between tries to do an automatic checkpoints. In seconds; 0 means 'no automatic checkpoints' which makes sense only for testing.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -54,7 +54,7 @@
+@@ -64,7 +64,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_CHECKPOINT_LOG_ACTIVITY
VARIABLE_SCOPE GLOBAL
@@ -27,7 +25,7 @@
VARIABLE_COMMENT Number of bytes that the transaction log has to grow between checkpoints before a new checkpoint is written to the log.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -74,7 +74,7 @@
+@@ -84,7 +84,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME ARIA_FORCE_START_AFTER_RECOVERY_FAILURES
VARIABLE_SCOPE GLOBAL
@@ -36,7 +34,7 @@
VARIABLE_COMMENT Number of consecutive log recovery failures after which logs will be automatically deleted to cure the problem; 0 (the default) disables the feature.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -94,7 +94,7 @@
+@@ -104,7 +104,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_GROUP_COMMIT_INTERVAL
VARIABLE_SCOPE GLOBAL
@@ -45,7 +43,7 @@
VARIABLE_COMMENT Interval between commits in microseconds (1/1000000 sec). 0 stands for no waiting for other threads to come and do a commit in "hard" mode and no sync()/commit at all in "soft" mode. Option has only an effect if aria_group_commit is used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -104,7 +104,7 @@
+@@ -114,7 +114,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_LOG_FILE_SIZE
VARIABLE_SCOPE GLOBAL
@@ -54,7 +52,7 @@
VARIABLE_COMMENT Limit for transaction log size
NUMERIC_MIN_VALUE 8388608
NUMERIC_MAX_VALUE 4294967295
-@@ -134,10 +134,10 @@
+@@ -144,10 +144,10 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_PAGECACHE_AGE_THRESHOLD
VARIABLE_SCOPE GLOBAL
@@ -67,7 +65,7 @@
NUMERIC_BLOCK_SIZE 100
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -154,7 +154,7 @@
+@@ -164,7 +164,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_PAGECACHE_DIVISION_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -76,7 +74,7 @@
VARIABLE_COMMENT The minimum percentage of warm blocks in key cache
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100
-@@ -164,7 +164,7 @@
+@@ -174,7 +174,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME ARIA_PAGECACHE_FILE_HASH_SIZE
VARIABLE_SCOPE GLOBAL
@@ -85,7 +83,7 @@
VARIABLE_COMMENT Number of hash buckets for open and changed files. If you have a lot of Aria files open you should increase this for faster flush of changes. A good value is probably 1/10 of number of possible open Aria files.
NUMERIC_MIN_VALUE 128
NUMERIC_MAX_VALUE 16384
-@@ -194,7 +194,7 @@
+@@ -204,7 +204,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME ARIA_REPAIR_THREADS
VARIABLE_SCOPE SESSION
@@ -94,7 +92,7 @@
VARIABLE_COMMENT Number of threads to use when repairing Aria tables. The value of 1 disables parallel repair.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 128
-@@ -207,7 +207,7 @@
+@@ -217,7 +217,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE.
NUMERIC_MIN_VALUE 4096
@@ -103,7 +101,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -264,7 +264,7 @@
+@@ -274,7 +274,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME AUTO_INCREMENT_INCREMENT
VARIABLE_SCOPE SESSION
@@ -112,7 +110,7 @@
VARIABLE_COMMENT Auto-increment columns are incremented by this
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 65535
-@@ -274,7 +274,7 @@
+@@ -284,7 +284,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME AUTO_INCREMENT_OFFSET
VARIABLE_SCOPE SESSION
@@ -121,7 +119,7 @@
VARIABLE_COMMENT Offset added to Auto-increment columns. Used when auto-increment-increment != 1
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 65535
-@@ -284,7 +284,7 @@
+@@ -294,7 +294,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME BACK_LOG
VARIABLE_SCOPE GLOBAL
@@ -130,7 +128,7 @@
VARIABLE_COMMENT The number of outstanding connection requests MariaDB can have. This comes into play when the main MariaDB thread gets very many connection requests in a very short time
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65535
-@@ -337,7 +337,7 @@
+@@ -357,7 +357,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the transactional cache for updates to transactional engines for the binary log. If you often use transactions containing many statements, you can increase this to get more performance
NUMERIC_MIN_VALUE 4096
@@ -139,7 +137,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -354,20 +354,20 @@
+@@ -374,20 +374,20 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME BINLOG_COMMIT_WAIT_COUNT
VARIABLE_SCOPE GLOBAL
@@ -164,7 +162,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -384,7 +384,7 @@
+@@ -404,7 +404,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME BINLOG_EXPIRE_LOGS_SECONDS
VARIABLE_SCOPE GLOBAL
@@ -173,7 +171,7 @@
VARIABLE_COMMENT If non-zero, binary logs will be purged after binlog_expire_logs_seconds seconds; It and expire_logs_days are linked, such that changes in one are converted into the other. Possible purges happen at startup and at binary log rotation.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 8553600
-@@ -397,7 +397,7 @@
+@@ -417,7 +417,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of file cache for the binary log
NUMERIC_MIN_VALUE 8192
@@ -182,7 +180,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -447,7 +447,7 @@
+@@ -467,7 +467,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the statement cache for updates to non-transactional engines for the binary log. If you often use statements updating a great number of rows, you can increase this to get more performance.
NUMERIC_MIN_VALUE 4096
@@ -191,7 +189,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -457,7 +457,7 @@
+@@ -477,7 +477,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Size of tree cache used in bulk insert optimisation. Note that this is a limit per thread!
NUMERIC_MIN_VALUE 0
@@ -200,7 +198,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -644,7 +644,7 @@
+@@ -664,7 +664,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME CONNECT_TIMEOUT
VARIABLE_SCOPE GLOBAL
@@ -209,7 +207,7 @@
VARIABLE_COMMENT The number of seconds the mysqld server is waiting for a connect packet before responding with 'Bad handshake'
NUMERIC_MIN_VALUE 2
NUMERIC_MAX_VALUE 31536000
-@@ -694,7 +694,7 @@
+@@ -714,7 +714,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DEADLOCK_SEARCH_DEPTH_LONG
VARIABLE_SCOPE SESSION
@@ -218,7 +216,7 @@
VARIABLE_COMMENT Long search depth for the two-step deadlock detection
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 33
-@@ -704,7 +704,7 @@
+@@ -724,7 +724,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DEADLOCK_SEARCH_DEPTH_SHORT
VARIABLE_SCOPE SESSION
@@ -227,7 +225,7 @@
VARIABLE_COMMENT Short search depth for the two-step deadlock detection
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 32
-@@ -714,7 +714,7 @@
+@@ -734,7 +734,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DEADLOCK_TIMEOUT_LONG
VARIABLE_SCOPE SESSION
@@ -236,7 +234,7 @@
VARIABLE_COMMENT Long timeout for the two-step deadlock detection (in microseconds)
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -724,7 +724,7 @@
+@@ -744,7 +744,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DEADLOCK_TIMEOUT_SHORT
VARIABLE_SCOPE SESSION
@@ -245,7 +243,7 @@
VARIABLE_COMMENT Short timeout for the two-step deadlock detection (in microseconds)
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -784,7 +784,7 @@
+@@ -804,7 +804,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME DEFAULT_WEEK_FORMAT
VARIABLE_SCOPE SESSION
@@ -254,7 +252,7 @@
VARIABLE_COMMENT The default week format used by WEEK() functions
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 7
-@@ -794,7 +794,7 @@
+@@ -814,7 +814,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DELAYED_INSERT_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -263,7 +261,7 @@
VARIABLE_COMMENT After inserting delayed_insert_limit rows, the INSERT DELAYED handler will check if there are any SELECT statements pending. If so, it allows these to execute before continuing.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -804,7 +804,7 @@
+@@ -824,7 +824,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DELAYED_INSERT_TIMEOUT
VARIABLE_SCOPE GLOBAL
@@ -272,7 +270,7 @@
VARIABLE_COMMENT How long a INSERT DELAYED thread should wait for INSERT statements before terminating
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -814,7 +814,7 @@
+@@ -834,7 +834,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME DELAYED_QUEUE_SIZE
VARIABLE_SCOPE GLOBAL
@@ -281,7 +279,7 @@
VARIABLE_COMMENT What size queue (in rows) should be allocated for handling INSERT DELAYED. If the queue becomes full, any client that does INSERT DELAYED will wait until there is room in the queue again
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -844,7 +844,7 @@
+@@ -864,7 +864,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME DIV_PRECISION_INCREMENT
VARIABLE_SCOPE SESSION
@@ -290,7 +288,7 @@
VARIABLE_COMMENT Precision of the result of '/' operator will be increased on that value
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 38
-@@ -964,7 +964,7 @@
+@@ -984,7 +984,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME EXTRA_MAX_CONNECTIONS
VARIABLE_SCOPE GLOBAL
@@ -299,7 +297,7 @@
VARIABLE_COMMENT The number of connections on extra-port
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 100000
-@@ -994,7 +994,7 @@
+@@ -1014,7 +1014,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME FLUSH_TIME
VARIABLE_SCOPE GLOBAL
@@ -308,7 +306,7 @@
VARIABLE_COMMENT A dedicated thread is created to flush all tables at the given interval
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -1024,7 +1024,7 @@
+@@ -1044,7 +1044,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME FT_MAX_WORD_LEN
VARIABLE_SCOPE GLOBAL
@@ -317,7 +315,7 @@
VARIABLE_COMMENT The maximum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 84
-@@ -1034,7 +1034,7 @@
+@@ -1054,7 +1054,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME FT_MIN_WORD_LEN
VARIABLE_SCOPE GLOBAL
@@ -326,7 +324,7 @@
VARIABLE_COMMENT The minimum length of the word to be included in a FULLTEXT index. Note: FULLTEXT indexes must be rebuilt after changing this variable
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 84
-@@ -1044,7 +1044,7 @@
+@@ -1064,7 +1064,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME FT_QUERY_EXPANSION_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -335,7 +333,7 @@
VARIABLE_COMMENT Number of best matches to use for query expansion
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1000
-@@ -1294,7 +1294,7 @@
+@@ -1314,7 +1314,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME HISTOGRAM_SIZE
VARIABLE_SCOPE SESSION
@@ -344,7 +342,7 @@
VARIABLE_COMMENT Number of bytes used for a histogram. If set to 0, no histograms are created by ANALYZE.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -1324,7 +1324,7 @@
+@@ -1344,7 +1344,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME HOST_CACHE_SIZE
VARIABLE_SCOPE GLOBAL
@@ -353,7 +351,7 @@
VARIABLE_COMMENT How many host names should be cached to avoid resolving.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65536
-@@ -1434,7 +1434,7 @@
+@@ -1454,7 +1454,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME INTERACTIVE_TIMEOUT
VARIABLE_SCOPE SESSION
@@ -362,7 +360,7 @@
VARIABLE_COMMENT The number of seconds the server waits for activity on an interactive connection before closing it
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -1467,7 +1467,7 @@
+@@ -1487,7 +1487,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the buffer that is used for joins
NUMERIC_MIN_VALUE 128
@@ -371,7 +369,7 @@
NUMERIC_BLOCK_SIZE 128
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1484,7 +1484,7 @@
+@@ -1504,7 +1504,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME JOIN_CACHE_LEVEL
VARIABLE_SCOPE SESSION
@@ -380,7 +378,7 @@
VARIABLE_COMMENT Controls what join operations can be executed with join buffers. Odd numbers are used for plain join buffers while even numbers are used for linked buffers
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 8
-@@ -1507,7 +1507,7 @@
+@@ -1527,7 +1527,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The size of the buffer used for index blocks for MyISAM tables. Increase this to get better index handling (for all reads and multiple writes) to as much as you can afford
NUMERIC_MIN_VALUE 0
@@ -389,7 +387,7 @@
NUMERIC_BLOCK_SIZE 4096
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -1674,7 +1674,7 @@
+@@ -1694,7 +1694,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME LOCK_WAIT_TIMEOUT
VARIABLE_SCOPE SESSION
@@ -398,7 +396,7 @@
VARIABLE_COMMENT Timeout in seconds to wait for a lock before returning an error.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -1824,7 +1824,7 @@
+@@ -1844,7 +1844,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_SLOW_RATE_LIMIT
VARIABLE_SCOPE SESSION
@@ -407,7 +405,7 @@
VARIABLE_COMMENT Write to slow log every #th slow query. Set to 1 to log everything. Increase it to reduce the size of the slow or the performance impact of slow logging
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -1854,7 +1854,7 @@
+@@ -1874,7 +1874,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME LOG_WARNINGS
VARIABLE_SCOPE SESSION
@@ -416,7 +414,7 @@
VARIABLE_COMMENT Log some not critical warnings to the general log file.Value can be between 0 and 11. Higher values mean more verbosity
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -1914,7 +1914,7 @@
+@@ -1934,7 +1934,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME MAX_ALLOWED_PACKET
VARIABLE_SCOPE SESSION
@@ -425,7 +423,7 @@
VARIABLE_COMMENT Max packet length to send to or receive from the server
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -1927,14 +1927,14 @@
+@@ -1947,14 +1947,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the total size of the transactional cache
NUMERIC_MIN_VALUE 4096
@@ -442,7 +440,7 @@
VARIABLE_COMMENT Binary log will be rotated automatically when the size exceeds this value.
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 1073741824
-@@ -1947,14 +1947,14 @@
+@@ -1967,14 +1967,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the total size of the statement cache
NUMERIC_MIN_VALUE 4096
@@ -459,7 +457,7 @@
VARIABLE_COMMENT The number of simultaneous clients allowed
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 100000
-@@ -1964,7 +1964,7 @@
+@@ -1984,7 +1984,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_CONNECT_ERRORS
VARIABLE_SCOPE GLOBAL
@@ -468,7 +466,7 @@
VARIABLE_COMMENT If there is more than this number of interrupted connections from a host this host will be blocked from further connections
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -1974,7 +1974,7 @@
+@@ -1994,7 +1994,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_DELAYED_THREADS
VARIABLE_SCOPE SESSION
@@ -477,7 +475,7 @@
VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -1994,7 +1994,7 @@
+@@ -2014,7 +2014,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_ERROR_COUNT
VARIABLE_SCOPE SESSION
@@ -486,7 +484,7 @@
VARIABLE_COMMENT Max number of errors/warnings to store for a statement
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 65535
-@@ -2007,14 +2007,14 @@
+@@ -2027,14 +2027,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Don't allow creation of heap tables bigger than this
NUMERIC_MIN_VALUE 16384
@@ -503,7 +501,7 @@
VARIABLE_COMMENT Don't start more than this number of threads to handle INSERT DELAYED statements. If set to zero INSERT DELAYED will be not used
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -2034,7 +2034,7 @@
+@@ -2054,7 +2054,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_LENGTH_FOR_SORT_DATA
VARIABLE_SCOPE SESSION
@@ -512,7 +510,7 @@
VARIABLE_COMMENT Max number of bytes in sorted records
NUMERIC_MIN_VALUE 4
NUMERIC_MAX_VALUE 8388608
-@@ -2064,7 +2064,7 @@
+@@ -2084,7 +2084,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_RECURSIVE_ITERATIONS
VARIABLE_SCOPE SESSION
@@ -521,7 +519,7 @@
VARIABLE_COMMENT Maximum number of iterations when executing recursive queries
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2087,14 +2087,14 @@
+@@ -2107,14 +2107,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The maximum size of the container of a rowid filter
NUMERIC_MIN_VALUE 1024
@@ -538,7 +536,7 @@
VARIABLE_COMMENT Limit assumed max number of seeks when looking up rows based on a key
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2114,7 +2114,7 @@
+@@ -2134,7 +2134,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_SORT_LENGTH
VARIABLE_SCOPE SESSION
@@ -547,7 +545,7 @@
VARIABLE_COMMENT The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored)
NUMERIC_MIN_VALUE 64
NUMERIC_MAX_VALUE 8388608
-@@ -2124,7 +2124,7 @@
+@@ -2144,7 +2144,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_SP_RECURSION_DEPTH
VARIABLE_SCOPE SESSION
@@ -556,7 +554,7 @@
VARIABLE_COMMENT Maximum stored procedure recursion depth
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 255
-@@ -2144,7 +2144,7 @@
+@@ -2164,7 +2164,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_TMP_TABLES
VARIABLE_SCOPE SESSION
@@ -565,7 +563,7 @@
VARIABLE_COMMENT Unused, will be removed.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2164,7 +2164,7 @@
+@@ -2184,7 +2184,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MAX_WRITE_LOCK_COUNT
VARIABLE_SCOPE GLOBAL
@@ -574,7 +572,7 @@
VARIABLE_COMMENT After this many write locks, allow some read locks to run in between
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2174,7 +2174,7 @@
+@@ -2194,7 +2194,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME METADATA_LOCKS_CACHE_SIZE
VARIABLE_SCOPE GLOBAL
@@ -583,7 +581,7 @@
VARIABLE_COMMENT Unused
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1048576
-@@ -2184,7 +2184,7 @@
+@@ -2204,7 +2204,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME METADATA_LOCKS_HASH_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -592,7 +590,7 @@
VARIABLE_COMMENT Unused
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 1024
-@@ -2194,7 +2194,7 @@
+@@ -2214,7 +2214,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MIN_EXAMINED_ROW_LIMIT
VARIABLE_SCOPE SESSION
@@ -601,7 +599,7 @@
VARIABLE_COMMENT Don't write queries to slow log that examine fewer rows than that
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2204,7 +2204,7 @@
+@@ -2224,7 +2224,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MRR_BUFFER_SIZE
VARIABLE_SCOPE SESSION
@@ -610,7 +608,7 @@
VARIABLE_COMMENT Size of buffer to use when using MRR with range access
NUMERIC_MIN_VALUE 8192
NUMERIC_MAX_VALUE 2147483647
-@@ -2214,7 +2214,7 @@
+@@ -2234,7 +2234,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MYISAM_BLOCK_SIZE
VARIABLE_SCOPE GLOBAL
@@ -619,7 +617,7 @@
VARIABLE_COMMENT Block size to be used for MyISAM index pages
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 16384
-@@ -2224,7 +2224,7 @@
+@@ -2244,7 +2244,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME MYISAM_DATA_POINTER_SIZE
VARIABLE_SCOPE GLOBAL
@@ -628,7 +626,7 @@
VARIABLE_COMMENT Default pointer size to be used for MyISAM tables
NUMERIC_MIN_VALUE 2
NUMERIC_MAX_VALUE 7
-@@ -2247,7 +2247,7 @@
+@@ -2267,7 +2267,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Restricts the total memory used for memory mapping of MySQL tables
NUMERIC_MIN_VALUE 7
@@ -637,7 +635,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
-@@ -2264,10 +2264,10 @@
+@@ -2284,10 +2284,10 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME MYISAM_REPAIR_THREADS
VARIABLE_SCOPE SESSION
@@ -650,7 +648,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2277,7 +2277,7 @@
+@@ -2297,7 +2297,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The buffer that is allocated when sorting the index when doing a REPAIR or when creating indexes with CREATE INDEX or ALTER TABLE
NUMERIC_MIN_VALUE 4096
@@ -659,7 +657,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -2314,7 +2314,7 @@
+@@ -2334,7 +2334,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME NET_BUFFER_LENGTH
VARIABLE_SCOPE SESSION
@@ -668,7 +666,7 @@
VARIABLE_COMMENT Buffer length for TCP/IP and socket communication
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1048576
-@@ -2324,7 +2324,7 @@
+@@ -2344,7 +2344,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME NET_READ_TIMEOUT
VARIABLE_SCOPE SESSION
@@ -677,7 +675,7 @@
VARIABLE_COMMENT Number of seconds to wait for more data from a connection before aborting the read
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -2334,7 +2334,7 @@
+@@ -2354,7 +2354,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME NET_RETRY_COUNT
VARIABLE_SCOPE SESSION
@@ -686,7 +684,7 @@
VARIABLE_COMMENT If a read on a communication port is interrupted, retry this many times before giving up
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -2344,7 +2344,7 @@
+@@ -2364,7 +2364,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME NET_WRITE_TIMEOUT
VARIABLE_SCOPE SESSION
@@ -695,7 +693,7 @@
VARIABLE_COMMENT Number of seconds to wait for a block to be written to a connection before aborting the write
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -2394,7 +2394,7 @@
+@@ -2414,7 +2414,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME OPEN_FILES_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -704,7 +702,16 @@
VARIABLE_COMMENT If this is not 0, then mysqld will use this value to reserve file descriptors to use with setrlimit(). If this value is 0 or autoset then mysqld will reserve max_connections*5 or max_connections + table_cache*2 (whichever is larger) number of file descriptors
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -2404,17 +2404,17 @@
+@@ -2424,7 +2424,7 @@
+ COMMAND_LINE_ARGUMENT REQUIRED
+ VARIABLE_NAME OPTIMIZER_EXTRA_PRUNING_DEPTH
+ VARIABLE_SCOPE SESSION
+-VARIABLE_TYPE BIGINT UNSIGNED
++VARIABLE_TYPE INT UNSIGNED
+ VARIABLE_COMMENT If the optimizer needs to enumerate join prefix of this size or larger, then it will try agressively prune away the search space.
+ NUMERIC_MIN_VALUE 0
+ NUMERIC_MAX_VALUE 62
+@@ -2434,17 +2434,17 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_MAX_SEL_ARG_WEIGHT
VARIABLE_SCOPE SESSION
@@ -722,10 +729,10 @@
VARIABLE_SCOPE SESSION
-VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_TYPE INT UNSIGNED
- VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows
+ VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search: 1 - prune plans based on cost and number of retrieved rows eq_ref: 2 - prune also if we find an eq_ref chain
NUMERIC_MIN_VALUE 0
- NUMERIC_MAX_VALUE 1
-@@ -2424,7 +2424,7 @@
+ NUMERIC_MAX_VALUE 2
+@@ -2454,7 +2454,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_SEARCH_DEPTH
VARIABLE_SCOPE SESSION
@@ -734,7 +741,7 @@
VARIABLE_COMMENT Maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to compile a query. Values smaller than the number of tables in a relation result in faster optimization, but may produce very bad query plans. If set to 0, the system will automatically pick a reasonable value.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 62
-@@ -2434,7 +2434,7 @@
+@@ -2464,7 +2464,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_SELECTIVITY_SAMPLING_LIMIT
VARIABLE_SCOPE SESSION
@@ -743,7 +750,7 @@
VARIABLE_COMMENT Controls number of record samples to check condition selectivity
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 4294967295
-@@ -2464,17 +2464,17 @@
+@@ -2494,17 +2494,17 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_TRACE_MAX_MEM_SIZE
VARIABLE_SCOPE SESSION
@@ -764,7 +771,7 @@
VARIABLE_COMMENT Controls selectivity of which conditions the optimizer takes into account to calculate cardinality of a partial join when it searches for the best execution plan Meaning: 1 - use selectivity of index backed range conditions to calculate the cardinality of a partial join if the last joined table is accessed by full table scan or an index scan, 2 - use selectivity of index backed range conditions to calculate the cardinality of a partial join in any case, 3 - additionally always use selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join, 4 - use histograms to calculate selectivity of range conditions that are not backed by any index to calculate the cardinality of a partial join.5 - additionally use selectivity of certain non-range predicates calculated on record samples
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 5
-@@ -2494,7 +2494,7 @@
+@@ -2524,7 +2524,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME PERFORMANCE_SCHEMA_ACCOUNTS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -773,7 +780,7 @@
VARIABLE_COMMENT Maximum number of instrumented user@host accounts. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2504,7 +2504,7 @@
+@@ -2534,7 +2534,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_DIGESTS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -782,7 +789,7 @@
VARIABLE_COMMENT Size of the statement digest. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2514,7 +2514,7 @@
+@@ -2544,7 +2544,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_STAGES_HISTORY_LONG_SIZE
VARIABLE_SCOPE GLOBAL
@@ -791,7 +798,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_STAGES_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2524,7 +2524,7 @@
+@@ -2554,7 +2554,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_STAGES_HISTORY_SIZE
VARIABLE_SCOPE GLOBAL
@@ -800,7 +807,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STAGES_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2534,7 +2534,7 @@
+@@ -2564,7 +2564,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_STATEMENTS_HISTORY_LONG_SIZE
VARIABLE_SCOPE GLOBAL
@@ -809,7 +816,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_STATEMENTS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2544,7 +2544,7 @@
+@@ -2574,7 +2574,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_STATEMENTS_HISTORY_SIZE
VARIABLE_SCOPE GLOBAL
@@ -818,7 +825,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STATEMENTS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2554,7 +2554,7 @@
+@@ -2584,7 +2584,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_TRANSACTIONS_HISTORY_LONG_SIZE
VARIABLE_SCOPE GLOBAL
@@ -827,7 +834,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_TRANSACTIONS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2564,7 +2564,7 @@
+@@ -2594,7 +2594,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_TRANSACTIONS_HISTORY_SIZE
VARIABLE_SCOPE GLOBAL
@@ -836,7 +843,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_TRANSACTIONS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2574,7 +2574,7 @@
+@@ -2604,7 +2604,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_LONG_SIZE
VARIABLE_SCOPE GLOBAL
@@ -845,7 +852,7 @@
VARIABLE_COMMENT Number of rows in EVENTS_WAITS_HISTORY_LONG. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2584,7 +2584,7 @@
+@@ -2614,7 +2614,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_EVENTS_WAITS_HISTORY_SIZE
VARIABLE_SCOPE GLOBAL
@@ -854,7 +861,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_WAITS_HISTORY. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2594,7 +2594,7 @@
+@@ -2624,7 +2624,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_HOSTS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -863,7 +870,7 @@
VARIABLE_COMMENT Maximum number of instrumented hosts. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2604,7 +2604,7 @@
+@@ -2634,7 +2634,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_COND_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -872,7 +879,7 @@
VARIABLE_COMMENT Maximum number of condition instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2614,7 +2614,7 @@
+@@ -2644,7 +2644,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_COND_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -881,7 +888,7 @@
VARIABLE_COMMENT Maximum number of instrumented condition objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2624,7 +2624,7 @@
+@@ -2654,7 +2654,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_DIGEST_LENGTH
VARIABLE_SCOPE GLOBAL
@@ -890,7 +897,7 @@
VARIABLE_COMMENT Maximum length considered for digest text, when stored in performance_schema tables.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2634,7 +2634,7 @@
+@@ -2664,7 +2664,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_FILE_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -899,7 +906,7 @@
VARIABLE_COMMENT Maximum number of file instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2644,7 +2644,7 @@
+@@ -2674,7 +2674,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_FILE_HANDLES
VARIABLE_SCOPE GLOBAL
@@ -908,7 +915,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented files.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2654,7 +2654,7 @@
+@@ -2684,7 +2684,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_FILE_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -917,7 +924,7 @@
VARIABLE_COMMENT Maximum number of instrumented files. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2664,7 +2664,7 @@
+@@ -2694,7 +2694,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_INDEX_STAT
VARIABLE_SCOPE GLOBAL
@@ -926,7 +933,7 @@
VARIABLE_COMMENT Maximum number of index statistics for instrumented tables. Use 0 to disable, -1 for automated scaling.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2674,7 +2674,7 @@
+@@ -2704,7 +2704,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_MEMORY_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -935,7 +942,7 @@
VARIABLE_COMMENT Maximum number of memory pool instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1024
-@@ -2684,7 +2684,7 @@
+@@ -2714,7 +2714,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_METADATA_LOCKS
VARIABLE_SCOPE GLOBAL
@@ -944,7 +951,7 @@
VARIABLE_COMMENT Maximum number of metadata locks. Use 0 to disable, -1 for automated scaling.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2694,7 +2694,7 @@
+@@ -2724,7 +2724,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_MUTEX_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -953,7 +960,7 @@
VARIABLE_COMMENT Maximum number of mutex instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2704,7 +2704,7 @@
+@@ -2734,7 +2734,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_MUTEX_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -962,7 +969,7 @@
VARIABLE_COMMENT Maximum number of instrumented MUTEX objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2714,7 +2714,7 @@
+@@ -2744,7 +2744,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_PREPARED_STATEMENTS_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -971,7 +978,7 @@
VARIABLE_COMMENT Maximum number of instrumented prepared statements. Use 0 to disable, -1 for automated scaling.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2724,7 +2724,7 @@
+@@ -2754,7 +2754,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_PROGRAM_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -980,7 +987,7 @@
VARIABLE_COMMENT Maximum number of instrumented programs. Use 0 to disable, -1 for automated scaling.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2734,7 +2734,7 @@
+@@ -2764,7 +2764,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_RWLOCK_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -989,7 +996,7 @@
VARIABLE_COMMENT Maximum number of rwlock instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2744,7 +2744,7 @@
+@@ -2774,7 +2774,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_RWLOCK_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -998,7 +1005,7 @@
VARIABLE_COMMENT Maximum number of instrumented RWLOCK objects. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 104857600
-@@ -2754,7 +2754,7 @@
+@@ -2784,7 +2784,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_SOCKET_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -1007,7 +1014,7 @@
VARIABLE_COMMENT Maximum number of socket instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2764,7 +2764,7 @@
+@@ -2794,7 +2794,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_SOCKET_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -1016,7 +1023,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented sockets. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2774,7 +2774,7 @@
+@@ -2804,7 +2804,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_SQL_TEXT_LENGTH
VARIABLE_SCOPE GLOBAL
@@ -1025,7 +1032,7 @@
VARIABLE_COMMENT Maximum length of displayed sql text.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 1048576
-@@ -2784,7 +2784,7 @@
+@@ -2814,7 +2814,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_STAGE_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -1034,7 +1041,7 @@
VARIABLE_COMMENT Maximum number of stage instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2794,7 +2794,7 @@
+@@ -2824,7 +2824,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_STATEMENT_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -1043,7 +1050,7 @@
VARIABLE_COMMENT Maximum number of statement instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2804,7 +2804,7 @@
+@@ -2834,7 +2834,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_STATEMENT_STACK
VARIABLE_SCOPE GLOBAL
@@ -1052,7 +1059,7 @@
VARIABLE_COMMENT Number of rows per thread in EVENTS_STATEMENTS_CURRENT.
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 256
-@@ -2814,7 +2814,7 @@
+@@ -2844,7 +2844,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_TABLE_HANDLES
VARIABLE_SCOPE GLOBAL
@@ -1061,7 +1068,7 @@
VARIABLE_COMMENT Maximum number of opened instrumented tables. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2824,7 +2824,7 @@
+@@ -2854,7 +2854,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_TABLE_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -1070,7 +1077,7 @@
VARIABLE_COMMENT Maximum number of instrumented tables. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2834,7 +2834,7 @@
+@@ -2864,7 +2864,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_TABLE_LOCK_STAT
VARIABLE_SCOPE GLOBAL
@@ -1079,7 +1086,7 @@
VARIABLE_COMMENT Maximum number of lock statistics for instrumented tables. Use 0 to disable, -1 for automated scaling.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2844,7 +2844,7 @@
+@@ -2874,7 +2874,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_THREAD_CLASSES
VARIABLE_SCOPE GLOBAL
@@ -1088,7 +1095,7 @@
VARIABLE_COMMENT Maximum number of thread instruments.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 256
-@@ -2854,7 +2854,7 @@
+@@ -2884,7 +2884,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_MAX_THREAD_INSTANCES
VARIABLE_SCOPE GLOBAL
@@ -1097,7 +1104,7 @@
VARIABLE_COMMENT Maximum number of instrumented threads. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2864,7 +2864,7 @@
+@@ -2894,7 +2894,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_SESSION_CONNECT_ATTRS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -1106,7 +1113,7 @@
VARIABLE_COMMENT Size of session attribute string buffer per thread. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2874,7 +2874,7 @@
+@@ -2904,7 +2904,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_SETUP_ACTORS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -1115,7 +1122,7 @@
VARIABLE_COMMENT Maximum number of rows in SETUP_ACTORS.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1024
-@@ -2884,7 +2884,7 @@
+@@ -2914,7 +2914,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_SETUP_OBJECTS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -1124,7 +1131,7 @@
VARIABLE_COMMENT Maximum number of rows in SETUP_OBJECTS.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2894,7 +2894,7 @@
+@@ -2924,7 +2924,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PERFORMANCE_SCHEMA_USERS_SIZE
VARIABLE_SCOPE GLOBAL
@@ -1133,7 +1140,7 @@
VARIABLE_COMMENT Maximum number of instrumented users. Use 0 to disable, -1 for automated sizing.
NUMERIC_MIN_VALUE -1
NUMERIC_MAX_VALUE 1048576
-@@ -2944,7 +2944,7 @@
+@@ -2974,7 +2974,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PRELOAD_BUFFER_SIZE
VARIABLE_SCOPE SESSION
@@ -1142,7 +1149,7 @@
VARIABLE_COMMENT The size of the buffer that is allocated when preloading indexes
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -2964,7 +2964,7 @@
+@@ -2994,7 +2994,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME PROFILING_HISTORY_SIZE
VARIABLE_SCOPE SESSION
@@ -1151,7 +1158,7 @@
VARIABLE_COMMENT Number of statements about which profiling information is maintained. If set to 0, no profiles are stored. See SHOW PROFILES.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 100
-@@ -2974,7 +2974,7 @@
+@@ -3004,7 +3004,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME PROGRESS_REPORT_TIME
VARIABLE_SCOPE SESSION
@@ -1160,7 +1167,7 @@
VARIABLE_COMMENT Seconds between sending progress reports to the client for time-consuming statements. Set to 0 to disable progress reporting.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3034,7 +3034,7 @@
+@@ -3064,7 +3064,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME QUERY_ALLOC_BLOCK_SIZE
VARIABLE_SCOPE SESSION
@@ -1169,7 +1176,7 @@
VARIABLE_COMMENT Allocation block size for query parsing and execution
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -3044,7 +3044,7 @@
+@@ -3074,7 +3074,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME QUERY_CACHE_LIMIT
VARIABLE_SCOPE GLOBAL
@@ -1178,7 +1185,7 @@
VARIABLE_COMMENT Don't cache results that are bigger than this
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3054,7 +3054,7 @@
+@@ -3084,7 +3084,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME QUERY_CACHE_MIN_RES_UNIT
VARIABLE_SCOPE GLOBAL
@@ -1187,7 +1194,7 @@
VARIABLE_COMMENT The minimum size for blocks allocated by the query cache
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3067,7 +3067,7 @@
+@@ -3097,7 +3097,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT The memory allocated to store results from old queries
NUMERIC_MIN_VALUE 0
@@ -1196,7 +1203,7 @@
NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3104,7 +3104,7 @@
+@@ -3134,7 +3134,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME QUERY_PREALLOC_SIZE
VARIABLE_SCOPE SESSION
@@ -1205,7 +1212,7 @@
VARIABLE_COMMENT Persistent buffer for query parsing and execution
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 4294967295
-@@ -3117,7 +3117,7 @@
+@@ -3147,7 +3147,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes
NUMERIC_MIN_VALUE 0
@@ -1214,7 +1221,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3127,14 +3127,14 @@
+@@ -3157,14 +3157,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Sets the internal state of the RAND() generator for replication purposes
NUMERIC_MIN_VALUE 0
@@ -1231,7 +1238,7 @@
VARIABLE_COMMENT Allocation block size for storing ranges during optimization
NUMERIC_MIN_VALUE 4096
NUMERIC_MAX_VALUE 4294967295
-@@ -3147,14 +3147,14 @@
+@@ -3177,14 +3177,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Maximum speed(KB/s) to read binlog from master (0 = no limit)
NUMERIC_MIN_VALUE 0
@@ -1248,7 +1255,7 @@
VARIABLE_COMMENT Each thread that does a sequential scan allocates a buffer of this size for each table it scans. If you do many sequential scans, you may want to increase this value
NUMERIC_MIN_VALUE 8192
NUMERIC_MAX_VALUE 2147483647
-@@ -3174,7 +3174,7 @@
+@@ -3204,7 +3204,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME READ_RND_BUFFER_SIZE
VARIABLE_SCOPE SESSION
@@ -1257,7 +1264,7 @@
VARIABLE_COMMENT When reading rows in sorted order after a sort, the rows are read through this buffer to avoid a disk seeks
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 2147483647
-@@ -3384,10 +3384,10 @@
+@@ -3414,10 +3414,10 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME ROWID_MERGE_BUFF_SIZE
VARIABLE_SCOPE SESSION
@@ -1270,7 +1277,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3404,20 +3404,20 @@
+@@ -3434,20 +3434,20 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME RPL_SEMI_SYNC_MASTER_TIMEOUT
VARIABLE_SCOPE GLOBAL
@@ -1295,7 +1302,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3474,10 +3474,10 @@
+@@ -3504,10 +3504,10 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME RPL_SEMI_SYNC_SLAVE_TRACE_LEVEL
VARIABLE_SCOPE GLOBAL
@@ -1308,7 +1315,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -3514,7 +3514,7 @@
+@@ -3544,7 +3544,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SERVER_ID
VARIABLE_SCOPE SESSION
@@ -1317,7 +1324,7 @@
VARIABLE_COMMENT Uniquely identifies the server instance in the community of replication partners
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 4294967295
-@@ -3644,7 +3644,7 @@
+@@ -3684,7 +3684,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SLAVE_DOMAIN_PARALLEL_THREADS
VARIABLE_SCOPE GLOBAL
@@ -1326,7 +1333,7 @@
VARIABLE_COMMENT Maximum number of parallel threads to use on slave for events in a single replication domain. When using multiple domains, this can be used to limit a single domain from grabbing all threads and thus stalling other domains. The default of 0 means to allow a domain to grab as many threads as it wants, up to the value of slave_parallel_threads.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16383
-@@ -3674,7 +3674,7 @@
+@@ -3714,7 +3714,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SLAVE_MAX_ALLOWED_PACKET
VARIABLE_SCOPE GLOBAL
@@ -1335,7 +1342,7 @@
VARIABLE_COMMENT The maximum packet length to sent successfully from the master to slave.
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 1073741824
-@@ -3694,7 +3694,7 @@
+@@ -3734,7 +3734,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SLAVE_PARALLEL_MAX_QUEUED
VARIABLE_SCOPE GLOBAL
@@ -1344,7 +1351,7 @@
VARIABLE_COMMENT Limit on how much memory SQL threads should use per parallel replication thread when reading ahead in the relay log looking for opportunities for parallel replication. Only used when --slave-parallel-threads > 0.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 2147483647
-@@ -3714,7 +3714,7 @@
+@@ -3754,7 +3754,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME SLAVE_PARALLEL_THREADS
VARIABLE_SCOPE GLOBAL
@@ -1353,7 +1360,7 @@
VARIABLE_COMMENT If non-zero, number of threads to spawn to apply in parallel events on the slave that were group-committed on the master or were logged with GTID in different replication domains. Note that these threads are in addition to the IO and SQL threads, which are always created by a replication slave
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16383
-@@ -3724,7 +3724,7 @@
+@@ -3764,7 +3764,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SLAVE_PARALLEL_WORKERS
VARIABLE_SCOPE GLOBAL
@@ -1362,7 +1369,7 @@
VARIABLE_COMMENT Alias for slave_parallel_threads
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16383
-@@ -3764,7 +3764,7 @@
+@@ -3804,7 +3804,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME SLAVE_TRANSACTION_RETRIES
VARIABLE_SCOPE GLOBAL
@@ -1371,7 +1378,7 @@
VARIABLE_COMMENT Number of times the slave SQL thread will retry a transaction in case it failed with a deadlock, elapsed lock wait timeout or listed in slave_transaction_retry_errors, before giving up and stopping
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 4294967295
-@@ -3784,7 +3784,7 @@
+@@ -3824,7 +3824,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SLAVE_TRANSACTION_RETRY_INTERVAL
VARIABLE_SCOPE GLOBAL
@@ -1380,7 +1387,7 @@
VARIABLE_COMMENT Interval of the slave SQL thread will retry a transaction in case it failed with a deadlock or elapsed lock wait timeout or listed in slave_transaction_retry_errors
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 3600
-@@ -3804,7 +3804,7 @@
+@@ -3844,7 +3844,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SLOW_LAUNCH_TIME
VARIABLE_SCOPE GLOBAL
@@ -1389,7 +1396,7 @@
VARIABLE_COMMENT If creating the thread takes longer than this value (in seconds), the Slow_launch_threads counter will be incremented
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 31536000
-@@ -3847,7 +3847,7 @@
+@@ -3887,7 +3887,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Each thread that needs to do a sort allocates a buffer of this size
NUMERIC_MIN_VALUE 1024
@@ -1398,7 +1405,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4074,7 +4074,7 @@
+@@ -4114,7 +4114,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME STORED_PROGRAM_CACHE
VARIABLE_SCOPE GLOBAL
@@ -1407,7 +1414,7 @@
VARIABLE_COMMENT The soft upper limit for number of cached stored routines for one connection.
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 524288
-@@ -4174,7 +4174,7 @@
+@@ -4214,7 +4214,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME TABLE_DEFINITION_CACHE
VARIABLE_SCOPE GLOBAL
@@ -1416,7 +1423,7 @@
VARIABLE_COMMENT The number of cached table definitions
NUMERIC_MIN_VALUE 400
NUMERIC_MAX_VALUE 2097152
-@@ -4184,7 +4184,7 @@
+@@ -4224,7 +4224,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME TABLE_OPEN_CACHE
VARIABLE_SCOPE GLOBAL
@@ -1425,7 +1432,7 @@
VARIABLE_COMMENT The number of cached open tables
NUMERIC_MIN_VALUE 10
NUMERIC_MAX_VALUE 1048576
-@@ -4244,7 +4244,7 @@
+@@ -4284,7 +4284,7 @@
COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME THREAD_CACHE_SIZE
VARIABLE_SCOPE GLOBAL
@@ -1434,7 +1441,7 @@
VARIABLE_COMMENT How many threads we should keep in a cache for reuse. These are freed after 5 minutes of idle time
NUMERIC_MIN_VALUE 0
NUMERIC_MAX_VALUE 16384
-@@ -4417,7 +4417,7 @@
+@@ -4457,7 +4457,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Max size for data for an internal temporary on-disk MyISAM or Aria table.
NUMERIC_MIN_VALUE 1024
@@ -1443,7 +1450,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4427,7 +4427,7 @@
+@@ -4467,7 +4467,7 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT If an internal in-memory temporary table exceeds this size, MariaDB will automatically convert it to an on-disk MyISAM or Aria table. Same as tmp_table_size.
NUMERIC_MIN_VALUE 0
@@ -1452,7 +1459,7 @@
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
-@@ -4437,14 +4437,14 @@
+@@ -4477,14 +4477,14 @@
VARIABLE_TYPE BIGINT UNSIGNED
VARIABLE_COMMENT Alias for tmp_memory_table_size. If an internal in-memory temporary table exceeds this size, MariaDB will automatically convert it to an on-disk MyISAM or Aria table.
NUMERIC_MIN_VALUE 0
@@ -1469,7 +1476,7 @@
VARIABLE_COMMENT Allocation block size for transactions to be stored in binary log
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 134217728
-@@ -4454,7 +4454,7 @@
+@@ -4494,7 +4494,7 @@
COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME TRANSACTION_PREALLOC_SIZE
VARIABLE_SCOPE SESSION
@@ -1478,7 +1485,7 @@
VARIABLE_COMMENT Persistent buffer for transactions to be stored in binary log
NUMERIC_MIN_VALUE 1024
NUMERIC_MAX_VALUE 134217728
-@@ -4594,7 +4594,7 @@
+@@ -4634,7 +4634,7 @@
COMMAND_LINE_ARGUMENT NULL
VARIABLE_NAME WAIT_TIMEOUT
VARIABLE_SCOPE SESSION
@@ -1487,7 +1494,7 @@
VARIABLE_COMMENT The number of seconds the server waits for activity on a connection before closing it
NUMERIC_MIN_VALUE 1
NUMERIC_MAX_VALUE 31536000
-@@ -4621,7 +4621,7 @@
+@@ -4661,7 +4661,7 @@
VARIABLE_NAME LOG_TC_SIZE
GLOBAL_VALUE_ORIGIN AUTO
VARIABLE_SCOPE GLOBAL
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
index abf738f5c15..1b4e49f55be 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
@@ -12,6 +12,16 @@ variable_name not in (
'log_tc_size','have_sanitizer'
)
order by variable_name;
+VARIABLE_NAME ALLOW_SUSPICIOUS_UDFS
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Allows use of user-defined functions (UDFs) consisting of only one symbol xxx() without corresponding xxx_init() or xxx_deinit(). That also means that one can load any function from any library, for example exit() from libc.so
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME ALTER_ALGORITHM
VARIABLE_SCOPE SESSION
VARIABLE_TYPE ENUM
@@ -2412,6 +2422,16 @@ NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME OPTIMIZER_EXTRA_PRUNING_DEPTH
+VARIABLE_SCOPE SESSION
+VARIABLE_TYPE BIGINT UNSIGNED
+VARIABLE_COMMENT If the optimizer needs to enumerate join prefix of this size or larger, then it will try agressively prune away the search space.
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 62
+NUMERIC_BLOCK_SIZE 1
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_MAX_SEL_ARG_WEIGHT
VARIABLE_SCOPE SESSION
VARIABLE_TYPE BIGINT UNSIGNED
@@ -2425,9 +2445,9 @@ COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME OPTIMIZER_PRUNE_LEVEL
VARIABLE_SCOPE SESSION
VARIABLE_TYPE BIGINT UNSIGNED
-VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search; 1 - prune plans based on number of retrieved rows
+VARIABLE_COMMENT Controls the heuristic(s) applied during query optimization to prune less-promising partial plans from the optimizer search space. Meaning: 0 - do not apply any heuristic, thus perform exhaustive search: 1 - prune plans based on cost and number of retrieved rows eq_ref: 2 - prune also if we find an eq_ref chain
NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 1
+NUMERIC_MAX_VALUE 2
NUMERIC_BLOCK_SIZE 1
ENUM_VALUE_LIST NULL
READ_ONLY NO
@@ -3582,6 +3602,16 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY YES
COMMAND_LINE_ARGUMENT NULL
+VARIABLE_NAME SKIP_GRANT_TABLES
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE BOOLEAN
+VARIABLE_COMMENT Start without grant tables. This gives all users FULL ACCESS to all tables.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST OFF,ON
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT OPTIONAL
VARIABLE_NAME SKIP_NAME_RESOLVE
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BOOLEAN
@@ -3692,6 +3722,16 @@ NUMERIC_BLOCK_SIZE 1024
ENUM_VALUE_LIST NULL
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME SLAVE_MAX_STATEMENT_TIME
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE DOUBLE
+VARIABLE_COMMENT A query that has taken more than slave_max_statement_time seconds to run on the slave will be aborted. The argument will be treated as a decimal value with microsecond precision. A value of 0 (default) means no timeout
+NUMERIC_MIN_VALUE 0
+NUMERIC_MAX_VALUE 31536000
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME SLAVE_NET_TIMEOUT
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE INT UNSIGNED
diff --git a/mysql-test/suite/sys_vars/r/sysvars_wsrep.result b/mysql-test/suite/sys_vars/r/sysvars_wsrep.result
index 693af55ed66..305c0e88e5e 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_wsrep.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_wsrep.result
@@ -1,6 +1,21 @@
select * from information_schema.system_variables
where variable_name like 'wsrep%'
order by variable_name;
+VARIABLE_NAME WSREP_ALLOWLIST
+SESSION_VALUE NULL
+GLOBAL_VALUE
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
+DEFAULT_VALUE
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE VARCHAR
+VARIABLE_COMMENT Allowed IP addresses split by comma delimiter
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NULL
+READ_ONLY YES
+COMMAND_LINE_ARGUMENT REQUIRED
+GLOBAL_VALUE_PATH NULL
VARIABLE_NAME WSREP_AUTO_INCREMENT_CONTROL
SESSION_VALUE NULL
GLOBAL_VALUE ON
diff --git a/mysql-test/suite/sys_vars/t/allow_suspicious_udfs.test b/mysql-test/suite/sys_vars/t/allow_suspicious_udfs.test
new file mode 100644
index 00000000000..9179cfbef4d
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/allow_suspicious_udfs.test
@@ -0,0 +1,14 @@
+--echo #
+--echo # MDEV-24815 Show "--allow-suspicious-udfs" state in SYSTEM VARIABLES
+--echo #
+
+SELECT @@allow_suspicious_udfs AS EXPECT_0;
+
+# Restart the server the server with "--allow-suspicious-udfs" option
+--let $restart_parameters = "--allow-suspicious-udfs"
+--source include/restart_mysqld.inc
+SELECT @@allow_suspicious_udfs AS EXPECT_1;
+
+# Disable "--allow-suspicious-udfs" to restore the original state
+--let $restart_parameters = "--skip-allow-suspicious-udfs"
+--source include/restart_mysqld.inc
diff --git a/mysql-test/suite/sys_vars/t/innodb_prefix_index_cluster_optimization_basic.test b/mysql-test/suite/sys_vars/t/innodb_prefix_index_cluster_optimization_basic.test
deleted file mode 100644
index 4e272fbd9c5..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_prefix_index_cluster_optimization_basic.test
+++ /dev/null
@@ -1,76 +0,0 @@
---source include/have_innodb.inc
-
-SET @start_global_value = @@global.innodb_prefix_index_cluster_optimization;
-SELECT @start_global_value;
-
---echo #
---echo # exists as global only
---echo #
-
---echo Valid values are 'ON' and 'OFF'
-select @@global.innodb_prefix_index_cluster_optimization in (0, 1);
-select @@global.innodb_prefix_index_cluster_optimization;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-select @@session.innodb_prefix_index_cluster_optimization;
-show global variables like 'innodb_prefix_index_cluster_optimization';
-show session variables like 'innodb_prefix_index_cluster_optimization';
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-
---echo #
---echo # show that it's writable
---echo #
-
-set global innodb_prefix_index_cluster_optimization = 'OFF';
-select @@global.innodb_prefix_index_cluster_optimization;
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-set @@global.innodb_prefix_index_cluster_optimization = 'ON';
-select @@global.innodb_prefix_index_cluster_optimization;
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-set global innodb_prefix_index_cluster_optimization = 0;
-select @@global.innodb_prefix_index_cluster_optimization;
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-set @@global.innodb_prefix_index_cluster_optimization = 1;
-select @@global.innodb_prefix_index_cluster_optimization;
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-
---error ER_GLOBAL_VARIABLE
-set session innodb_prefix_index_cluster_optimization = 'OFF';
-select @@global.innodb_prefix_index_cluster_optimization;
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-
---error ER_GLOBAL_VARIABLE
-set @@session.innodb_prefix_index_cluster_optimization = 'ON';
-select @@global.innodb_prefix_index_cluster_optimization;
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-
---echo #
---echo # incorrect types
---echo #
-
---error ER_WRONG_TYPE_FOR_VAR
-set global innodb_prefix_index_cluster_optimization = 1.1;
---error ER_WRONG_TYPE_FOR_VAR
-set global innodb_prefix_index_cluster_optimization = 1e1;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_prefix_index_cluster_optimization = 2;
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_prefix_index_cluster_optimization = -3;
-select @@global.innodb_prefix_index_cluster_optimization;
-select * from information_schema.global_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
-select * from information_schema.session_variables where variable_name = 'innodb_prefix_index_cluster_optimization';
---error ER_WRONG_VALUE_FOR_VAR
-set global innodb_prefix_index_cluster_optimization = 'AUTO';
-
---echo #
---echo # Cleanup
---echo #
-
-SET @@global.innodb_prefix_index_cluster_optimization = @start_global_value;
-SELECT @@global.innodb_prefix_index_cluster_optimization;
diff --git a/mysql-test/suite/sys_vars/t/innodb_version_basic.test b/mysql-test/suite/sys_vars/t/innodb_version_basic.test
deleted file mode 100644
index 182841048f7..00000000000
--- a/mysql-test/suite/sys_vars/t/innodb_version_basic.test
+++ /dev/null
@@ -1,30 +0,0 @@
-
-#
-# 2010-01-27 OBN - Added
-#
-
---source include/have_innodb.inc
-
-#
-# show the global and session values;
-#
---let $inno_ver= `select @@global.innodb_version`
---replace_result $inno_ver x.y.z
-select @@global.innodb_version;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-select @@session.innodb_version;
---echo show global variables like 'innodb_version' disabled so to not change with every version;
---echo show session variables like 'innodb_version' disabled so to not change with every version;
---disable_warnings
-select VARIABLE_VALUE=@@global.innodb_version from information_schema.global_variables where variable_name='innodb_version';
-select VARIABLE_VALUE=@@global.innodb_version from information_schema.session_variables where variable_name='innodb_version';
---enable_warnings
-
-#
-# show that it's read-only
-#
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set global innodb_version=1;
---error ER_INCORRECT_GLOBAL_LOCAL_VAR
-set session innodb_version=1;
-
diff --git a/mysql-test/suite/sys_vars/t/optimizer_prune_level_basic.test b/mysql-test/suite/sys_vars/t/optimizer_prune_level_basic.test
index 1e3a8bc3d7f..c857653bc31 100644
--- a/mysql-test/suite/sys_vars/t/optimizer_prune_level_basic.test
+++ b/mysql-test/suite/sys_vars/t/optimizer_prune_level_basic.test
@@ -60,10 +60,10 @@ SELECT @@session.optimizer_prune_level;
###########################################################
SET @@global.optimizer_prune_level = DEFAULT;
-SELECT @@global.optimizer_prune_level = 1;
+SELECT @@global.optimizer_prune_level = 2;
SET @@session.optimizer_prune_level = DEFAULT;
-SELECT @@session.optimizer_prune_level = 1;
+SELECT @@session.optimizer_prune_level = 2;
--echo '#--------------------FN_DYNVARS_115_03-------------------------#'
@@ -77,6 +77,8 @@ SET @@global.optimizer_prune_level = 0;
SELECT @@global.optimizer_prune_level;
SET @@global.optimizer_prune_level = 1;
SELECT @@global.optimizer_prune_level;
+SET @@global.optimizer_prune_level = 2;
+SELECT @@global.optimizer_prune_level;
SET @@global.optimizer_prune_level = TRUE;
SELECT @@global.optimizer_prune_level;
SET @@global.optimizer_prune_level = FALSE;
@@ -94,6 +96,8 @@ SET @@session.optimizer_prune_level = 0;
SELECT @@session.optimizer_prune_level;
SET @@session.optimizer_prune_level = 1;
SELECT @@session.optimizer_prune_level;
+SET @@session.optimizer_prune_level = 2;
+SELECT @@session.optimizer_prune_level;
SET @@session.optimizer_prune_level = TRUE;
SELECT @@session.optimizer_prune_level;
SET @@session.optimizer_prune_level = FALSE;
@@ -107,7 +111,7 @@ SELECT @@session.optimizer_prune_level;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.optimizer_prune_level = ON;
---echo 'Bug# 34840: Since it is a boolean variable, it should not give errors on 'ON' & 'OFF' values';
+--echo 'Bug# 34840: Since it is not a boolean variable, it should give errors on 'ON' & 'OFF' values';
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.optimizer_prune_level = OFF;
--Error ER_WRONG_TYPE_FOR_VAR
@@ -122,9 +126,11 @@ SET @@global.optimizer_prune_level = FELSE;
SET @@global.optimizer_prune_level = -1024;
SELECT @@global.optimizer_prune_level;
---echo 'Bug# 34840: Since it is a boolean variable, it should give errors on numeric values';
+--echo 'Bug# 34840: Since it is not a boolean variable, it should no give errors on numeric values';
SET @@global.optimizer_prune_level = 65536;
+SET @@global.optimizer_prune_level = 3;
+select @@global.optimizer_prune_level;
--Error ER_WRONG_TYPE_FOR_VAR
SET @@global.optimizer_prune_level = 65530.34;
--Error ER_WRONG_TYPE_FOR_VAR
diff --git a/mysql-test/suite/sys_vars/t/sysvars_innodb.test b/mysql-test/suite/sys_vars/t/sysvars_innodb.test
index 6d46c22683f..2680e442da4 100644
--- a/mysql-test/suite/sys_vars/t/sysvars_innodb.test
+++ b/mysql-test/suite/sys_vars/t/sysvars_innodb.test
@@ -8,7 +8,6 @@
select VARIABLE_NAME, SESSION_VALUE, DEFAULT_VALUE, VARIABLE_SCOPE, VARIABLE_TYPE, VARIABLE_COMMENT, NUMERIC_MIN_VALUE, NUMERIC_MAX_VALUE, NUMERIC_BLOCK_SIZE, ENUM_VALUE_LIST, READ_ONLY, COMMAND_LINE_ARGUMENT from information_schema.system_variables
where variable_name like 'innodb%' and
variable_name not in (
- 'innodb_version', # always the same as the server version
'innodb_numa_interleave', # only available WITH_NUMA
'innodb_evict_tables_on_commit_debug', # one may want to override this
'innodb_use_native_aio', # default value depends on OS
diff --git a/mysql-test/suite/vcol/r/vcol_misc.result b/mysql-test/suite/vcol/r/vcol_misc.result
index 17b2f2af00d..eb22e4bfdc5 100644
--- a/mysql-test/suite/vcol/r/vcol_misc.result
+++ b/mysql-test/suite/vcol/r/vcol_misc.result
@@ -403,7 +403,7 @@ Table Create Table
t1 CREATE TABLE `t1` (
`a` datetime DEFAULT NULL,
`b` timestamp GENERATED ALWAYS AS (cast(`a` as datetime)) VIRTUAL,
- `c` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
+ `c` timestamp NULL DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
DROP TABLE t1;
#
diff --git a/mysql-test/suite/vcol/r/vcol_supported_sql_funcs.result b/mysql-test/suite/vcol/r/vcol_supported_sql_funcs.result
index 832047a8d6c..99d8dea36dc 100644
--- a/mysql-test/suite/vcol/r/vcol_supported_sql_funcs.result
+++ b/mysql-test/suite/vcol/r/vcol_supported_sql_funcs.result
@@ -2513,8 +2513,8 @@ create table t1 (a timestamp, b timestamp, c long as (timestampdiff(MONTH, a,b))
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
- `a` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
- `b` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
+ `a` timestamp NULL DEFAULT NULL,
+ `b` timestamp NULL DEFAULT NULL,
`c` mediumtext GENERATED ALWAYS AS (timestampdiff(MONTH,`a`,`b`)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
insert into t1 values ('2003-02-01','2003-05-01',default);
diff --git a/mysql-test/suite/versioning/r/partition,heap.rdiff b/mysql-test/suite/versioning/r/partition,heap.rdiff
index 387a3cee754..d6c8363fc70 100644
--- a/mysql-test/suite/versioning/r/partition,heap.rdiff
+++ b/mysql-test/suite/versioning/r/partition,heap.rdiff
@@ -31,7 +31,7 @@
-Table Create Table
-tp1 CREATE TABLE `tp1` (
- `x` int(11) NOT NULL AUTO_INCREMENT,
-- `t` timestamp(6) NOT NULL DEFAULT '2001-11-11 11:11:11.000000',
+- `t` timestamp(6) NULL DEFAULT '2001-11-11 11:11:11.000000',
- `b` blob /*!100301 COMPRESSED*/ DEFAULT NULL,
- `c` varchar(1033) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
- `u` int(11) DEFAULT NULL,
@@ -56,7 +56,7 @@
-Table Create Table
-t1 CREATE TABLE `t1` (
- `x` int(11) NOT NULL AUTO_INCREMENT,
-- `t` timestamp(6) NOT NULL DEFAULT '2001-11-11 11:11:11.000000',
+- `t` timestamp(6) NULL DEFAULT '2001-11-11 11:11:11.000000',
- `b` blob /*!100301 COMPRESSED*/ DEFAULT NULL,
- `c` varchar(1033) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
- `u` int(11) DEFAULT NULL,
@@ -117,7 +117,7 @@
-Table Create Table
-t1 CREATE TABLE `t1` (
- `x` int(11) NOT NULL AUTO_INCREMENT,
-- `t` timestamp(6) NOT NULL DEFAULT '2001-11-11 11:11:11.000000',
+- `t` timestamp(6) NULL DEFAULT '2001-11-11 11:11:11.000000',
- `b` blob /*!100301 COMPRESSED*/ DEFAULT NULL,
- `c` varchar(1033) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
- `u` int(11) DEFAULT NULL,
@@ -154,7 +154,7 @@
-Table Create Table
-t1 CREATE TABLE `t1` (
- `x` int(11) NOT NULL AUTO_INCREMENT,
-- `t` timestamp(6) NOT NULL DEFAULT '2001-11-11 11:11:11.000000',
+- `t` timestamp(6) NULL DEFAULT '2001-11-11 11:11:11.000000',
- `b` blob /*!100301 COMPRESSED*/ DEFAULT NULL,
- `c` varchar(1033) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
- `u` int(11) DEFAULT NULL,
@@ -189,7 +189,7 @@
-Table Create Table
-t1 CREATE TABLE `t1` (
- `x` int(11) NOT NULL AUTO_INCREMENT,
-- `t` timestamp(6) NOT NULL DEFAULT '2001-11-11 11:11:11.000000',
+- `t` timestamp(6) NULL DEFAULT '2001-11-11 11:11:11.000000',
- `b` blob /*!100301 COMPRESSED*/ DEFAULT NULL,
- `c` varchar(1033) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
- `u` int(11) DEFAULT NULL,
diff --git a/mysql-test/suite/versioning/r/partition.result b/mysql-test/suite/versioning/r/partition.result
index 0266464c5d6..4a3f846ae49 100644
--- a/mysql-test/suite/versioning/r/partition.result
+++ b/mysql-test/suite/versioning/r/partition.result
@@ -2273,7 +2273,7 @@ show create table tp1;
Table Create Table
tp1 CREATE TABLE `tp1` (
`x` int(11) NOT NULL AUTO_INCREMENT,
- `t` timestamp(6) NOT NULL DEFAULT '2001-11-11 11:11:11.000000',
+ `t` timestamp(6) NULL DEFAULT '2001-11-11 11:11:11.000000',
`b` blob /*!100301 COMPRESSED*/ DEFAULT NULL,
`c` varchar(1033) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`u` int(11) DEFAULT NULL,
@@ -2298,7 +2298,7 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`x` int(11) NOT NULL AUTO_INCREMENT,
- `t` timestamp(6) NOT NULL DEFAULT '2001-11-11 11:11:11.000000',
+ `t` timestamp(6) NULL DEFAULT '2001-11-11 11:11:11.000000',
`b` blob /*!100301 COMPRESSED*/ DEFAULT NULL,
`c` varchar(1033) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`u` int(11) DEFAULT NULL,
@@ -2915,7 +2915,7 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`x` int(11) NOT NULL AUTO_INCREMENT,
- `t` timestamp(6) NOT NULL DEFAULT '2001-11-11 11:11:11.000000',
+ `t` timestamp(6) NULL DEFAULT '2001-11-11 11:11:11.000000',
`b` blob /*!100301 COMPRESSED*/ DEFAULT NULL,
`c` varchar(1033) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`u` int(11) DEFAULT NULL,
@@ -2952,7 +2952,7 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`x` int(11) NOT NULL AUTO_INCREMENT,
- `t` timestamp(6) NOT NULL DEFAULT '2001-11-11 11:11:11.000000',
+ `t` timestamp(6) NULL DEFAULT '2001-11-11 11:11:11.000000',
`b` blob /*!100301 COMPRESSED*/ DEFAULT NULL,
`c` varchar(1033) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`u` int(11) DEFAULT NULL,
@@ -2987,7 +2987,7 @@ show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`x` int(11) NOT NULL AUTO_INCREMENT,
- `t` timestamp(6) NOT NULL DEFAULT '2001-11-11 11:11:11.000000',
+ `t` timestamp(6) NULL DEFAULT '2001-11-11 11:11:11.000000',
`b` blob /*!100301 COMPRESSED*/ DEFAULT NULL,
`c` varchar(1033) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
`u` int(11) DEFAULT NULL,
diff --git a/mysql-test/suite/versioning/r/simple.result b/mysql-test/suite/versioning/r/simple.result
index df47f80c9e9..39ced386a71 100644
--- a/mysql-test/suite/versioning/r/simple.result
+++ b/mysql-test/suite/versioning/r/simple.result
@@ -81,7 +81,7 @@ period for system_time(d,e)
) with system versioning;
show columns from t1;
Field Type Null Key Default Extra
-a timestamp(6) NO current_timestamp(6) on update current_timestamp(6)
+a timestamp(6) YES NULL
b timestamp(6) YES NULL VIRTUAL GENERATED
c timestamp(6) YES NULL STORED GENERATED
d timestamp(6) NO NULL STORED GENERATED
@@ -92,8 +92,8 @@ table_schema test
table_name t1
column_name a
ordinal_position 1
-column_default current_timestamp(6)
-is_nullable NO
+column_default NULL
+is_nullable YES
data_type timestamp
character_maximum_length NULL
character_octet_length NULL
@@ -104,7 +104,7 @@ character_set_name NULL
collation_name NULL
column_type timestamp(6)
column_key
-extra on update current_timestamp(6)
+extra
column_comment
is_generated NEVER
generation_expression NULL
diff --git a/mysql-test/suite/wsrep/r/variables.result b/mysql-test/suite/wsrep/r/variables.result
index 8df0210b2d1..2d5d5a66232 100644
--- a/mysql-test/suite/wsrep/r/variables.result
+++ b/mysql-test/suite/wsrep/r/variables.result
@@ -88,6 +88,7 @@ wsrep_thread_count 2
# variables
SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%" ORDER BY VARIABLE_NAME;
VARIABLE_NAME
+WSREP_ALLOWLIST
WSREP_AUTO_INCREMENT_CONTROL
WSREP_CAUSAL_READS
WSREP_CERTIFICATION_RULES
diff --git a/mysql-test/suite/wsrep/r/variables_debug.result b/mysql-test/suite/wsrep/r/variables_debug.result
index 109b25cd898..2ce69827911 100644
--- a/mysql-test/suite/wsrep/r/variables_debug.result
+++ b/mysql-test/suite/wsrep/r/variables_debug.result
@@ -89,6 +89,7 @@ wsrep_thread_count 2
# variables
SELECT VARIABLE_NAME FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME LIKE "wsrep%" ORDER BY VARIABLE_NAME;
VARIABLE_NAME
+WSREP_ALLOWLIST
WSREP_AUTO_INCREMENT_CONTROL
WSREP_CAUSAL_READS
WSREP_CERTIFICATION_RULES
diff --git a/mysql-test/suite/wsrep/t/variables.test b/mysql-test/suite/wsrep/t/variables.test
index e40ac7b8772..c28638e78f1 100644
--- a/mysql-test/suite/wsrep/t/variables.test
+++ b/mysql-test/suite/wsrep/t/variables.test
@@ -3,7 +3,7 @@
--source include/have_innodb.inc
--source include/galera_no_debug_sync.inc
---let $galera_version=26.4.9
+--let $galera_version=26.4.11
source include/check_galera_version.inc;
source include/galera_variables_ok.inc;
diff --git a/mysql-test/suite/wsrep/t/variables_debug.test b/mysql-test/suite/wsrep/t/variables_debug.test
index 29747e48f18..5e90d61c84e 100644
--- a/mysql-test/suite/wsrep/t/variables_debug.test
+++ b/mysql-test/suite/wsrep/t/variables_debug.test
@@ -5,7 +5,7 @@
--source include/have_debug_sync.inc
--source include/galera_have_debug_sync.inc
---let $galera_version=26.4.9
+--let $galera_version=26.4.11
source include/check_galera_version.inc;
source include/galera_variables_ok.inc;
diff --git a/mysys/charset-def.c b/mysys/charset-def.c
index 2e23adc5147..b884fa5c78c 100644
--- a/mysys/charset-def.c
+++ b/mysys/charset-def.c
@@ -15,6 +15,8 @@
#include "mysys_priv.h"
+#include "../strings/ctype-uca.h"
+
/*
Include all compiled character sets into the client
If a client don't want to use all of them, he can define his own
@@ -181,6 +183,74 @@ extern struct charset_info_st my_charset_utf8mb4_unicode_520_nopad_ci;
#endif /* HAVE_UCA_COLLATIONS */
+
+static my_bool
+my_uca1400_collation_definition_add(MY_CHARSET_LOADER *loader,
+ my_cs_encoding_t charset_id,
+ uint tailoring_id,
+ my_bool nopad,
+ my_bool secondary_level,
+ my_bool tertiary_level)
+{
+ struct charset_info_st *tmp;
+ uint collation_id= my_uca1400_make_builtin_collation_id(charset_id,
+ tailoring_id,
+ nopad,
+ secondary_level,
+ tertiary_level);
+ if (!collation_id)
+ return FALSE;
+ if (!(tmp= (struct charset_info_st*)
+ my_once_alloc(sizeof(CHARSET_INFO),MYF(0))))
+ return TRUE;
+ if (my_uca1400_collation_definition_init(loader, tmp, collation_id))
+ return TRUE;
+ add_compiled_collation(tmp);
+ return FALSE;
+}
+
+
+static my_bool
+my_uca1400_collation_definitions_add()
+{
+ my_cs_encoding_t charset_id;
+ MY_CHARSET_LOADER loader;
+ my_charset_loader_init_mysys(&loader);
+ for (charset_id= (my_cs_encoding_t) 0;
+ charset_id <= (my_cs_encoding_t) MY_CS_ENCODING_LAST;
+ charset_id++)
+ {
+ uint tailoring_id;
+ for (tailoring_id= 0 ;
+ tailoring_id < MY_UCA1400_COLLATION_DEFINITION_COUNT;
+ tailoring_id++)
+ {
+ uint nopad;
+ for (nopad= 0; nopad < 2; nopad++)
+ {
+ uint secondary_level;
+ for (secondary_level= 0; secondary_level < 2; secondary_level++)
+ {
+ if (my_uca1400_collation_definition_add(&loader,
+ charset_id, tailoring_id,
+ (my_bool) nopad,
+ (my_bool) secondary_level,
+ FALSE))
+ return TRUE;
+ if (my_uca1400_collation_definition_add(&loader,
+ charset_id, tailoring_id,
+ (my_bool) nopad,
+ (my_bool) secondary_level,
+ TRUE))
+ return TRUE;
+ }
+ }
+ }
+ }
+ return FALSE;
+}
+
+
my_bool init_compiled_charsets(myf flags __attribute__((unused)))
{
CHARSET_INFO *cs;
@@ -470,6 +540,9 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
/* Copy compiled charsets */
for (cs=compiled_charsets; cs->coll_name.str; cs++)
add_compiled_extra_collation((struct charset_info_st *) cs);
+
+ if (my_uca1400_collation_definitions_add())
+ return TRUE;
return FALSE;
}
diff --git a/mysys/charset.c b/mysys/charset.c
index da6180dccba..2b74b7c8c16 100644
--- a/mysys/charset.c
+++ b/mysys/charset.c
@@ -834,9 +834,9 @@ static CHARSET_INFO *find_collation_data_inheritance_source(CHARSET_INFO *cs, my
if (cs->tailoring &&
!strncmp(cs->tailoring, "[import ", 8) &&
(end= strchr(cs->tailoring + 8, ']')) &&
- (beg= cs->tailoring + 8) + MY_CS_NAME_SIZE > end)
+ (beg= cs->tailoring + 8) + MY_CS_COLLATION_NAME_SIZE > end)
{
- char name[MY_CS_NAME_SIZE + 1];
+ char name[MY_CS_COLLATION_NAME_SIZE + 1];
memcpy(name, beg, end - beg);
name[end - beg]= '\0';
return inheritance_source_by_id(cs, get_collation_number(name,MYF(flags)));
diff --git a/mysys/my_rnd.c b/mysys/my_rnd.c
index 0af251b4ade..b1dd8b1f36f 100644
--- a/mysys/my_rnd.c
+++ b/mysys/my_rnd.c
@@ -64,25 +64,3 @@ double my_rnd(struct my_rnd_struct *rand_st)
return (((double) seed1)/rand_st->max_value_dbl);
}
-
-/**
- Generate a random number using the OpenSSL/yaSSL supplied
- random number generator if available.
-
- @param rand_st [INOUT] Structure used for number generation
- only if none of the SSL libraries are
- available.
-
- @retval Generated random number.
-*/
-
-double my_rnd_ssl(struct my_rnd_struct *rand_st)
-{
-#if defined(HAVE_OPENSSL)
- rc= RAND_bytes((unsigned char *) &res, sizeof (unsigned int));
- if (rc)
- return (double)res / (double)UINT_MAX;
-#endif /* defined(HAVE_OPENSSL) */
-
- return my_rnd(rand_st);
-}
diff --git a/plugin/feedback/utils.cc b/plugin/feedback/utils.cc
index bbbd5850089..c31422cc7ec 100644
--- a/plugin/feedback/utils.cc
+++ b/plugin/feedback/utils.cc
@@ -403,7 +403,7 @@ int fill_collation_statistics(THD *thd, TABLE_LIST *tables)
if (my_collation_is_known_id(id) &&
(count= my_collation_statistics_get_use_count(id)))
{
- char name[MY_CS_NAME_SIZE + 32];
+ char name[MY_CS_COLLATION_NAME_SIZE + 32];
size_t namelen= my_snprintf(name, sizeof(name),
"Collation used %s",
get_charset_name(id));
diff --git a/plugin/password_reuse_check/password_reuse_check.c b/plugin/password_reuse_check/password_reuse_check.c
index 8f5973721d8..47c9b4531a8 100644
--- a/plugin/password_reuse_check/password_reuse_check.c
+++ b/plugin/password_reuse_check/password_reuse_check.c
@@ -95,7 +95,7 @@ static int create_table(MYSQL *mysql)
// 512/8 = 64
STRING_WITH_LEN("CREATE TABLE mysql." HISTORY_DB_NAME
" ( hash binary(64),"
- " time timestamp default current_timestamp,"
+ " time timestamp not null default current_timestamp,"
" primary key (hash), index tm (time) )"
" ENGINE=Aria")))
{
diff --git a/plugin/qc_info/qc_info.cc b/plugin/qc_info/qc_info.cc
index a46e2d9fbf2..a73bc8ea9ec 100644
--- a/plugin/qc_info/qc_info.cc
+++ b/plugin/qc_info/qc_info.cc
@@ -96,7 +96,7 @@ static ST_FIELD_INFO qc_info_fields[]=
Column("GROUP_CONCAT_MAX_LENGTH",SLonglong(MY_INT32_NUM_DECIMAL_DIGITS), NOT_NULL),
Column("CHARACTER_SET_CLIENT", CSName(), NOT_NULL),
Column("CHARACTER_SET_RESULT", CSName(), NOT_NULL),
- Column("COLLATION", CSName(), NOT_NULL),
+ Column("COLLATION", CLName(), NOT_NULL),
Column("TIMEZONE", Varchar(50), NOT_NULL),
Column("DEFAULT_WEEK_FORMAT", SLong(), NOT_NULL),
Column("DIV_PRECISION_INCREMENT",SLong(), NOT_NULL),
diff --git a/plugin/type_inet/item_inetfunc.cc b/plugin/type_inet/item_inetfunc.cc
index b23ae04a861..514a3760cd5 100644
--- a/plugin/type_inet/item_inetfunc.cc
+++ b/plugin/type_inet/item_inetfunc.cc
@@ -151,7 +151,7 @@ String *Item_func_inet6_aton::val_str(String *buffer)
if ((null_value= tmp.is_null()))
return NULL;
- Inet4_null ipv4(*tmp.string());
+ Inet4Bundle::Fbt_null ipv4(*tmp.string());
if (!ipv4.is_null())
{
ipv4.to_binary(buffer);
@@ -190,7 +190,7 @@ String *Item_func_inet6_ntoa::val_str_ascii(String *buffer)
if ((null_value= tmp.is_null()))
return NULL;
- Inet4_null ipv4(static_cast<const Binary_string&>(*tmp.string()));
+ Inet4Bundle::Fbt_null ipv4(static_cast<const Binary_string&>(*tmp.string()));
if (!ipv4.is_null())
{
ipv4.to_string(buffer);
@@ -218,7 +218,7 @@ longlong Item_func_is_ipv4::val_int()
{
DBUG_ASSERT(fixed());
String_ptr_and_buffer<STRING_BUFFER_USUAL_SIZE> tmp(args[0]);
- return !tmp.is_null() && !Inet4_null(*tmp.string()).is_null();
+ return !tmp.is_null() && !Inet4Bundle::Fbt_null(*tmp.string()).is_null();
}
class IP6 : public Inet6Bundle::Fbt_null
diff --git a/plugin/type_inet/mysql-test/type_inet/binlog_stm_type_inet4.result b/plugin/type_inet/mysql-test/type_inet/binlog_stm_type_inet4.result
new file mode 100644
index 00000000000..81500ee78f4
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/binlog_stm_type_inet4.result
@@ -0,0 +1,43 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0');
+INSERT INTO t1 VALUES ('255.255.255.255');
+PREPARE stmt FROM 'INSERT INTO t1 VALUES (?)';
+EXECUTE stmt USING CAST('0.0.0.1' AS INET4);
+EXECUTE stmt USING CAST(CONCAT(REPEAT(0x00,3), 0x02) AS INET4);
+DEALLOCATE PREPARE stmt;
+BEGIN NOT ATOMIC
+DECLARE a INET4 DEFAULT '0.0.0.3';
+INSERT INTO t1 VALUES (a);
+END;
+$$
+DROP TABLE t1;
+include/show_binlog_events.inc
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Gtid # # GTID #-#-#
+master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INET4)
+master-bin.000001 # Gtid # # BEGIN GTID #-#-#
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ('0.0.0.0')
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Gtid # # BEGIN GTID #-#-#
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ('255.255.255.255')
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Gtid # # BEGIN GTID #-#-#
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ('0.0.0.1')
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Gtid # # BEGIN GTID #-#-#
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ('0.0.0.2')
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Gtid # # BEGIN GTID #-#-#
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ( NAME_CONST('a','0.0.0.3'))
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Gtid # # GTID #-#-#
+master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/binlog_stm_type_inet4.test b/plugin/type_inet/mysql-test/type_inet/binlog_stm_type_inet4.test
new file mode 100644
index 00000000000..87e8bbe2f46
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/binlog_stm_type_inet4.test
@@ -0,0 +1,40 @@
+--source include/not_embedded.inc
+--source include/have_binlog_format_statement.inc
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+--disable_query_log
+reset master; # get rid of previous tests binlog
+--enable_query_log
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0');
+INSERT INTO t1 VALUES ('255.255.255.255');
+
+PREPARE stmt FROM 'INSERT INTO t1 VALUES (?)';
+EXECUTE stmt USING CAST('0.0.0.1' AS INET4);
+EXECUTE stmt USING CAST(CONCAT(REPEAT(0x00,3), 0x02) AS INET4);
+DEALLOCATE PREPARE stmt;
+
+DELIMITER $$;
+BEGIN NOT ATOMIC
+ DECLARE a INET4 DEFAULT '0.0.0.3';
+ INSERT INTO t1 VALUES (a);
+END;
+$$
+DELIMITER ;$$
+
+DROP TABLE t1;
+
+--let $binlog_file = LAST
+source include/show_binlog_events.inc;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/binlog_table_map_optional_metadata_type_inet4.result b/plugin/type_inet/mysql-test/type_inet/binlog_table_map_optional_metadata_type_inet4.result
new file mode 100644
index 00000000000..f3694903793
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/binlog_table_map_optional_metadata_type_inet4.result
@@ -0,0 +1,61 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+# MDEV-20822 INET6 crashes in combination with RBR extended metadata
+#
+# Using DEFAULT_CHARSET format
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = NO_LOG;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES('0.0.0.0');
+# Columns(BINARY(4))
+DROP TABLE t1;
+RESET MASTER;
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = MINIMAL;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES('0.0.0.0');
+# Columns(BINARY(4))
+DROP TABLE t1;
+RESET MASTER;
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = FULL;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES('0.0.0.0');
+# Columns(`a` BINARY(4))
+DROP TABLE t1;
+RESET MASTER;
+# Using COLUMN_CHARSET format
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = NO_LOG;
+CREATE TABLE t1 (a INET4, b CHAR(16) CHARACTER SET latin1, c CHAR(16) CHARACTER SET utf8);
+INSERT INTO t1 VALUES('0.0.0.0','','');
+# Columns(BINARY(4),
+# BINARY(16),
+# BINARY(48))
+DROP TABLE t1;
+RESET MASTER;
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = MINIMAL;
+CREATE TABLE t1 (a INET4, b CHAR(16) CHARACTER SET latin1, c CHAR(16) CHARACTER SET utf8);
+INSERT INTO t1 VALUES('0.0.0.0','','');
+# Columns(BINARY(4),
+# CHAR(16) CHARSET latin1 COLLATE latin1_swedish_ci,
+# CHAR(16) CHARSET utf8mb3 COLLATE utf8mb3_general_ci)
+DROP TABLE t1;
+RESET MASTER;
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = FULL;
+CREATE TABLE t1 (a INET4, b CHAR(16) CHARACTER SET latin1, c CHAR(16) CHARACTER SET utf8);
+INSERT INTO t1 VALUES('0.0.0.0','','');
+# Columns(`a` BINARY(4),
+# `b` CHAR(16) CHARSET latin1 COLLATE latin1_swedish_ci,
+# `c` CHAR(16) CHARSET utf8mb3 COLLATE utf8mb3_general_ci)
+DROP TABLE t1;
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = DEFAULT;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/binlog_table_map_optional_metadata_type_inet4.test b/plugin/type_inet/mysql-test/type_inet/binlog_table_map_optional_metadata_type_inet4.test
new file mode 100644
index 00000000000..82e76401053
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/binlog_table_map_optional_metadata_type_inet4.test
@@ -0,0 +1,73 @@
+--source include/have_debug.inc
+--source include/have_binlog_format_row.inc
+
+--let $MYSQLD_DATADIR= `select @@datadir`
+--let $binlog_file= $MYSQLD_DATADIR/master-bin.000001
+
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo # MDEV-20822 INET6 crashes in combination with RBR extended metadata
+--echo #
+
+--echo # Using DEFAULT_CHARSET format
+
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = NO_LOG;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES('0.0.0.0');
+--source suite/binlog/include/print_optional_metadata.inc
+DROP TABLE t1;
+RESET MASTER;
+
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = MINIMAL;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES('0.0.0.0');
+--source suite/binlog/include/print_optional_metadata.inc
+DROP TABLE t1;
+RESET MASTER;
+
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = FULL;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES('0.0.0.0');
+--source suite/binlog/include/print_optional_metadata.inc
+DROP TABLE t1;
+RESET MASTER;
+
+--echo # Using COLUMN_CHARSET format
+
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = NO_LOG;
+CREATE TABLE t1 (a INET4, b CHAR(16) CHARACTER SET latin1, c CHAR(16) CHARACTER SET utf8);
+INSERT INTO t1 VALUES('0.0.0.0','','');
+--source suite/binlog/include/print_optional_metadata.inc
+DROP TABLE t1;
+RESET MASTER;
+
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = MINIMAL;
+CREATE TABLE t1 (a INET4, b CHAR(16) CHARACTER SET latin1, c CHAR(16) CHARACTER SET utf8);
+INSERT INTO t1 VALUES('0.0.0.0','','');
+--source suite/binlog/include/print_optional_metadata.inc
+DROP TABLE t1;
+RESET MASTER;
+
+RESET MASTER;
+SET GLOBAL binlog_row_metadata = FULL;
+CREATE TABLE t1 (a INET4, b CHAR(16) CHARACTER SET latin1, c CHAR(16) CHARACTER SET utf8);
+INSERT INTO t1 VALUES('0.0.0.0','','');
+--source suite/binlog/include/print_optional_metadata.inc
+DROP TABLE t1;
+RESET MASTER;
+
+SET GLOBAL binlog_row_metadata = DEFAULT;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/rpl_row_binary_to_inet4.result b/plugin/type_inet/mysql-test/type_inet/rpl_row_binary_to_inet4.result
new file mode 100644
index 00000000000..5921ab25974
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/rpl_row_binary_to_inet4.result
@@ -0,0 +1,36 @@
+include/master-slave.inc
+[connection master]
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+# MDEV-20844 RBR from binary(16) to inet6 fails with error 171: The event was corrupt, leading to illegal data being read
+#
+CREATE TABLE t1 (a BINARY(4));
+connection slave;
+ALTER TABLE t1 MODIFY a INET4;
+connection master;
+INSERT INTO t1 VALUES (0x00000000);
+INSERT INTO t1 VALUES (0xa0000001);
+INSERT INTO t1 VALUES (0xf0000000);
+INSERT INTO t1 VALUES (0xff000001);
+SELECT CAST(a AS INET4) FROM t1 ORDER BY a;
+CAST(a AS INET4)
+0.0.0.0
+160.0.0.1
+240.0.0.0
+255.0.0.1
+connection slave;
+SELECT * FROM t1 ORDER BY a;
+a
+0.0.0.0
+160.0.0.1
+240.0.0.0
+255.0.0.1
+connection master;
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
+include/rpl_end.inc
diff --git a/plugin/type_inet/mysql-test/type_inet/rpl_row_binary_to_inet4.test b/plugin/type_inet/mysql-test/type_inet/rpl_row_binary_to_inet4.test
new file mode 100644
index 00000000000..0b96293dc8b
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/rpl_row_binary_to_inet4.test
@@ -0,0 +1,34 @@
+--source include/have_binlog_format_row.inc
+--source include/master-slave.inc
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo # MDEV-20844 RBR from binary(16) to inet6 fails with error 171: The event was corrupt, leading to illegal data being read
+--echo #
+
+CREATE TABLE t1 (a BINARY(4));
+
+--sync_slave_with_master
+ALTER TABLE t1 MODIFY a INET4;
+
+--connection master
+INSERT INTO t1 VALUES (0x00000000);
+INSERT INTO t1 VALUES (0xa0000001);
+INSERT INTO t1 VALUES (0xf0000000);
+INSERT INTO t1 VALUES (0xff000001);
+SELECT CAST(a AS INET4) FROM t1 ORDER BY a;
+--sync_slave_with_master
+SELECT * FROM t1 ORDER BY a;
+
+--connection master
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
+
+--source include/rpl_end.inc
diff --git a/plugin/type_inet/mysql-test/type_inet/rpl_row_inet4_to_binary.result b/plugin/type_inet/mysql-test/type_inet/rpl_row_inet4_to_binary.result
new file mode 100644
index 00000000000..169300563f9
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/rpl_row_inet4_to_binary.result
@@ -0,0 +1,36 @@
+include/master-slave.inc
+[connection master]
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+# MDEV-20844 RBR from binary(16) to inet6 fails with error 171: The event was corrupt, leading to illegal data being read
+#
+CREATE TABLE t1 (a INET4);
+connection slave;
+ALTER TABLE t1 MODIFY a BINARY(4);
+connection master;
+INSERT INTO t1 VALUES ('0.0.0.0');
+INSERT INTO t1 VALUES ('192.168.0.1');
+INSERT INTO t1 VALUES ('255.0.0.0');
+INSERT INTO t1 VALUES ('255.0.0.1');
+SELECT a FROM t1 ORDER BY a;
+a
+0.0.0.0
+192.168.0.1
+255.0.0.0
+255.0.0.1
+connection slave;
+SELECT CAST(a AS INET4) FROM t1 ORDER BY a;
+CAST(a AS INET4)
+0.0.0.0
+192.168.0.1
+255.0.0.0
+255.0.0.1
+connection master;
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
+include/rpl_end.inc
diff --git a/plugin/type_inet/mysql-test/type_inet/rpl_row_inet4_to_binary.test b/plugin/type_inet/mysql-test/type_inet/rpl_row_inet4_to_binary.test
new file mode 100644
index 00000000000..6200760e1fb
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/rpl_row_inet4_to_binary.test
@@ -0,0 +1,34 @@
+--source include/have_binlog_format_row.inc
+--source include/master-slave.inc
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo # MDEV-20844 RBR from binary(16) to inet6 fails with error 171: The event was corrupt, leading to illegal data being read
+--echo #
+
+CREATE TABLE t1 (a INET4);
+
+--sync_slave_with_master
+ALTER TABLE t1 MODIFY a BINARY(4);
+
+--connection master
+INSERT INTO t1 VALUES ('0.0.0.0');
+INSERT INTO t1 VALUES ('192.168.0.1');
+INSERT INTO t1 VALUES ('255.0.0.0');
+INSERT INTO t1 VALUES ('255.0.0.1');
+SELECT a FROM t1 ORDER BY a;
+--sync_slave_with_master
+SELECT CAST(a AS INET4) FROM t1 ORDER BY a;
+
+--connection master
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
+
+--source include/rpl_end.inc
diff --git a/plugin/type_inet/mysql-test/type_inet/rpl_type_inet4.result b/plugin/type_inet/mysql-test/type_inet/rpl_type_inet4.result
new file mode 100644
index 00000000000..bd1c3dac5c1
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/rpl_type_inet4.result
@@ -0,0 +1,23 @@
+include/master-slave.inc
+[connection master]
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+connection master;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('255.255.255.255');
+connection slave;
+SELECT HEX(a), a FROM t1;
+HEX(a) a
+00000000 0.0.0.0
+FFFFFFFF 255.255.255.255
+connection master;
+DROP TABLE t1;
+connection slave;
+#
+# Start of 10.10 tests
+#
+include/rpl_end.inc
diff --git a/plugin/type_inet/mysql-test/type_inet/rpl_type_inet4.test b/plugin/type_inet/mysql-test/type_inet/rpl_type_inet4.test
new file mode 100644
index 00000000000..af9f6eee54f
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/rpl_type_inet4.test
@@ -0,0 +1,24 @@
+--source include/master-slave.inc
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+connection master;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('255.255.255.255');
+sync_slave_with_master;
+SELECT HEX(a), a FROM t1;
+connection master;
+DROP TABLE t1;
+sync_slave_with_master;
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--source include/rpl_end.inc
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4-debug.result b/plugin/type_inet/mysql-test/type_inet/type_inet4-debug.result
new file mode 100644
index 00000000000..db0eb4332e9
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4-debug.result
@@ -0,0 +1,24 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+SET @old_debug_dbug=@@debug_dbug;
+SET debug_dbug="+d,frm_data_type_info";
+CREATE TABLE t1 (c01 INET4, c02 INET4);
+Warnings:
+Note 1105 build_frm_image: Field data type info length: 14
+Note 1105 DBUG: [0] name='c01' type_info='inet4'
+Note 1105 DBUG: [1] name='c02' type_info='inet4'
+SET debug_dbug=@old_debug_dbug;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `c01` inet4 DEFAULT NULL,
+ `c02` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4-debug.test b/plugin/type_inet/mysql-test/type_inet/type_inet4-debug.test
new file mode 100644
index 00000000000..8910c6c3c57
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4-debug.test
@@ -0,0 +1,22 @@
+--source include/have_debug.inc
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+SET @old_debug_dbug=@@debug_dbug;
+
+SET debug_dbug="+d,frm_data_type_info";
+CREATE TABLE t1 (c01 INET4, c02 INET4);
+SET debug_dbug=@old_debug_dbug;
+
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4.result b/plugin/type_inet/mysql-test/type_inet/type_inet4.result
new file mode 100644
index 00000000000..7763b28e1fb
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4.result
@@ -0,0 +1,2019 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+#
+# Basic CREATE functionality, defaults, metadata
+#
+CREATE TABLE t1 (a INET4 AUTO_INCREMENT);
+ERROR 42000: Incorrect column specifier for column 'a'
+CREATE TABLE t1 (a INET4);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DESCRIBE t1;
+Field Type Null Key Default Extra
+a inet4 YES NULL
+SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='test' AND table_name='t1';
+TABLE_CATALOG def
+TABLE_SCHEMA test
+TABLE_NAME t1
+COLUMN_NAME a
+ORDINAL_POSITION 1
+COLUMN_DEFAULT NULL
+IS_NULLABLE YES
+DATA_TYPE inet4
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE inet4
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+IS_GENERATED NEVER
+GENERATION_EXPRESSION NULL
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.1');
+SELECT * FROM t1;
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def test t1 t1 a a 254 (type=inet4) 15 7 Y 160 0 8
+a
+0.0.0.1
+SELECT CAST('0.0.0.1' AS INET4) AS a;
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def a 254 (type=inet4) 15 7 N 33 0 8
+a
+0.0.0.1
+DROP TABLE t1;
+CREATE TABLE t1 (
+c1 INET4 DEFAULT 0x00000000,
+c2 INET4 DEFAULT 0xFFFFFFFF,
+c3 INET4 DEFAULT '0.0.0.255',
+c4 INET4 DEFAULT '255.0.0.255',
+c5 INET4 DEFAULT CAST(X'FFFF00FF' AS INET4)
+);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `c1` inet4 DEFAULT '0.0.0.0',
+ `c2` inet4 DEFAULT '255.255.255.255',
+ `c3` inet4 DEFAULT '0.0.0.255',
+ `c4` inet4 DEFAULT '255.0.0.255',
+ `c5` inet4 DEFAULT cast(X'ffff00ff' as inet4)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DESCRIBE t1;
+Field Type Null Key Default Extra
+c1 inet4 YES 0.0.0.0
+c2 inet4 YES 255.255.255.255
+c3 inet4 YES 0.0.0.255
+c4 inet4 YES 255.0.0.255
+c5 inet4 YES cast(X'ffff00ff' as inet4)
+SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='test' AND table_name='t1';
+TABLE_CATALOG def
+TABLE_SCHEMA test
+TABLE_NAME t1
+COLUMN_NAME c1
+ORDINAL_POSITION 1
+COLUMN_DEFAULT '0.0.0.0'
+IS_NULLABLE YES
+DATA_TYPE inet4
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE inet4
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+IS_GENERATED NEVER
+GENERATION_EXPRESSION NULL
+TABLE_CATALOG def
+TABLE_SCHEMA test
+TABLE_NAME t1
+COLUMN_NAME c2
+ORDINAL_POSITION 2
+COLUMN_DEFAULT '255.255.255.255'
+IS_NULLABLE YES
+DATA_TYPE inet4
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE inet4
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+IS_GENERATED NEVER
+GENERATION_EXPRESSION NULL
+TABLE_CATALOG def
+TABLE_SCHEMA test
+TABLE_NAME t1
+COLUMN_NAME c3
+ORDINAL_POSITION 3
+COLUMN_DEFAULT '0.0.0.255'
+IS_NULLABLE YES
+DATA_TYPE inet4
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE inet4
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+IS_GENERATED NEVER
+GENERATION_EXPRESSION NULL
+TABLE_CATALOG def
+TABLE_SCHEMA test
+TABLE_NAME t1
+COLUMN_NAME c4
+ORDINAL_POSITION 4
+COLUMN_DEFAULT '255.0.0.255'
+IS_NULLABLE YES
+DATA_TYPE inet4
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE inet4
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+IS_GENERATED NEVER
+GENERATION_EXPRESSION NULL
+TABLE_CATALOG def
+TABLE_SCHEMA test
+TABLE_NAME t1
+COLUMN_NAME c5
+ORDINAL_POSITION 5
+COLUMN_DEFAULT cast(X'ffff00ff' as inet4)
+IS_NULLABLE YES
+DATA_TYPE inet4
+CHARACTER_MAXIMUM_LENGTH NULL
+CHARACTER_OCTET_LENGTH NULL
+NUMERIC_PRECISION NULL
+NUMERIC_SCALE NULL
+DATETIME_PRECISION NULL
+CHARACTER_SET_NAME NULL
+COLLATION_NAME NULL
+COLUMN_TYPE inet4
+COLUMN_KEY
+EXTRA
+PRIVILEGES #
+COLUMN_COMMENT
+IS_GENERATED NEVER
+GENERATION_EXPRESSION NULL
+DROP TABLE t1;
+CREATE TABLE t1 (c1 INET4 DEFAULT 0x00);
+ERROR 42000: Invalid default value for 'c1'
+CREATE TABLE t1 (c1 INET4 DEFAULT '');
+ERROR 42000: Invalid default value for 'c1'
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('x');
+ERROR 22007: Incorrect inet4 value: 'x' for column `test`.`t1`.`a` at row 1
+INSERT INTO t1 VALUES (1);
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t1`.`a`
+INSERT INTO t1 VALUES (TIME'10:20:30');
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t1`.`a`
+INSERT INTO t1 VALUES (0x00);
+ERROR 22007: Incorrect inet4 value: '\x00' for column `test`.`t1`.`a` at row 1
+DROP TABLE t1;
+#
+# CAST
+#
+SELECT CAST('garbage' AS INET4);
+CAST('garbage' AS INET4)
+NULL
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT CAST(0x01 AS INET4);
+CAST(0x01 AS INET4)
+NULL
+Warnings:
+Warning 1292 Incorrect inet4 value: '\x01'
+SELECT CAST(REPEAT(0x00,16) AS INET4);
+CAST(REPEAT(0x00,16) AS INET4)
+NULL
+Warnings:
+Warning 1292 Incorrect inet4 value: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+SELECT CAST(REPEAT(0x11,16) AS INET4);
+CAST(REPEAT(0x11,16) AS INET4)
+NULL
+Warnings:
+Warning 1292 Incorrect inet4 value: '\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11'
+CREATE TABLE t1 AS SELECT CAST('0.0.0.0' AS INET4);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `CAST('0.0.0.0' AS INET4)` inet4 NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t1;
+#
+# Text and binary formats, comparison operators
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES (0x00000000);
+INSERT INTO t1 VALUES (0x00000001);
+INSERT INTO t1 VALUES (0xFF000001);
+INSERT INTO t1 VALUES (0xFF000002);
+SELECT * FROM t1 ORDER BY a;
+a
+0.0.0.0
+0.0.0.1
+255.0.0.1
+255.0.0.2
+SELECT * FROM t1 ORDER BY a DESC;
+a
+255.0.0.2
+255.0.0.1
+0.0.0.1
+0.0.0.0
+SELECT HEX(a),a FROM t1 ORDER BY a;
+HEX(a) a
+00000000 0.0.0.0
+00000001 0.0.0.1
+FF000001 255.0.0.1
+FF000002 255.0.0.2
+SELECT * FROM t1 WHERE a='0.0.0.0';
+a
+0.0.0.0
+SELECT * FROM t1 WHERE a='0.0.0.1';
+a
+0.0.0.1
+SELECT * FROM t1 WHERE a='255.0.0.1';
+a
+255.0.0.1
+SELECT * FROM t1 WHERE a='255.0.0.2';
+a
+255.0.0.2
+SELECT * FROM t1 WHERE a='255.000.000.002';
+a
+255.0.0.2
+SELECT * FROM t1 WHERE a=0x00000000;
+a
+0.0.0.0
+SELECT * FROM t1 WHERE a=0x00000001;
+a
+0.0.0.1
+SELECT * FROM t1 WHERE a=0xff000001;
+a
+255.0.0.1
+SELECT * FROM t1 WHERE a=0xff000002;
+a
+255.0.0.2
+SELECT * FROM t1 WHERE a<'0.0.0.0';
+a
+SELECT * FROM t1 WHERE a<='0.0.0.0';
+a
+0.0.0.0
+SELECT * FROM t1 WHERE a>='255.0.0.2';
+a
+255.0.0.2
+SELECT * FROM t1 WHERE a>'255.0.0.2';
+a
+SELECT * FROM t1 WHERE a IN ('0.0.0.0', '255.0.0.1') ORDER BY a;
+a
+0.0.0.0
+255.0.0.1
+SELECT * FROM t1 WHERE a IN ('0.0.0.0', 0xff000002) ORDER BY a;
+a
+0.0.0.0
+255.0.0.2
+SELECT * FROM t1 WHERE a<'garbage';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a<='garbage';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a='garbage';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a>='garbage';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a>'garbage';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a<0x01;
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: '\x01'
+SELECT * FROM t1 WHERE a<=0x01;
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: '\x01'
+SELECT * FROM t1 WHERE a=0x01;
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: '\x01'
+Warning 1292 Incorrect inet4 value: '\x01'
+SELECT * FROM t1 WHERE a>=0x01;
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: '\x01'
+SELECT * FROM t1 WHERE a>0x01;
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: '\x01'
+SELECT * FROM t1 WHERE a='0.0.0.00';
+a
+0.0.0.0
+SELECT * FROM t1 WHERE a='0.0.0.000';
+a
+0.0.0.0
+SELECT * FROM t1 WHERE a='0.0.00.000';
+a
+0.0.0.0
+SELECT * FROM t1 WHERE a='0.0.0.01';
+a
+0.0.0.1
+SELECT * FROM t1 WHERE a='0.0.0.001';
+a
+0.0.0.1
+SELECT * FROM t1 WHERE a='0.0.00.001';
+a
+0.0.0.1
+SELECT * FROM t1 WHERE a='0.0.0.0000';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: '0.0.0.0000'
+Warning 1292 Incorrect inet4 value: '0.0.0.0000'
+SELECT * FROM t1 WHERE a=0;
+ERROR HY000: Illegal parameter data types inet4 and int for operation '='
+SELECT * FROM t1 WHERE a=0.0;
+ERROR HY000: Illegal parameter data types inet4 and decimal for operation '='
+SELECT * FROM t1 WHERE a=0e0;
+ERROR HY000: Illegal parameter data types inet4 and double for operation '='
+SELECT * FROM t1 WHERE a=TIME'10:20:30';
+ERROR HY000: Illegal parameter data types inet4 and time for operation '='
+SELECT * FROM t1 WHERE a IN ('0.0.0.0', 10);
+ERROR HY000: Illegal parameter data types inet4 and int for operation 'in'
+DROP TABLE t1;
+#
+# cmp_item_fbt: IN for non-constants
+#
+CREATE TABLE t1 (a INET4, b INET4);
+INSERT INTO t1 VALUES ('0.0.0.1', '0.0.0.2');
+SELECT * FROM t1 WHERE '0.0.0.0' IN (a, b);
+a b
+SELECT * FROM t1 WHERE '0.0.0.1' IN (a, b);
+a b
+0.0.0.1 0.0.0.2
+SELECT * FROM t1 WHERE '0.0.0.1' IN (a, b);
+a b
+0.0.0.1 0.0.0.2
+SELECT * FROM t1 WHERE '0.0.0.01' IN (a, b);
+a b
+0.0.0.1 0.0.0.2
+SELECT * FROM t1 WHERE '0.0.0.001' IN (a, b);
+a b
+0.0.0.1 0.0.0.2
+SELECT * FROM t1 WHERE '0.0.0.0001' IN (a, b);
+a b
+Warnings:
+Warning 1292 Incorrect inet4 value: '0.0.0.0001'
+DROP TABLE t1;
+#
+# CASE abbreviations
+#
+CREATE TABLE t1 (
+c INET4,
+c_char CHAR(32),
+c_varchar VARCHAR(32),
+c_tinytext TINYTEXT,
+c_text TEXT,
+c_mediumtext TEXT,
+c_longtext LONGTEXT
+);
+CREATE TABLE t2 AS SELECT
+COALESCE(c, c_char),
+COALESCE(c, c_varchar),
+COALESCE(c, c_tinytext),
+COALESCE(c, c_text),
+COALESCE(c, c_mediumtext),
+COALESCE(c, c_longtext)
+FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `COALESCE(c, c_char)` inet4 DEFAULT NULL,
+ `COALESCE(c, c_varchar)` inet4 DEFAULT NULL,
+ `COALESCE(c, c_tinytext)` inet4 DEFAULT NULL,
+ `COALESCE(c, c_text)` inet4 DEFAULT NULL,
+ `COALESCE(c, c_mediumtext)` inet4 DEFAULT NULL,
+ `COALESCE(c, c_longtext)` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+CREATE TABLE t2 AS SELECT
+LEAST(c, c_char),
+LEAST(c, c_varchar),
+LEAST(c, c_tinytext),
+LEAST(c, c_text),
+LEAST(c, c_mediumtext),
+LEAST(c, c_longtext)
+FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `LEAST(c, c_char)` inet4 DEFAULT NULL,
+ `LEAST(c, c_varchar)` inet4 DEFAULT NULL,
+ `LEAST(c, c_tinytext)` inet4 DEFAULT NULL,
+ `LEAST(c, c_text)` inet4 DEFAULT NULL,
+ `LEAST(c, c_mediumtext)` inet4 DEFAULT NULL,
+ `LEAST(c, c_longtext)` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES (NULL),('0.0.0.1'),('0.0.0.2');
+SELECT COALESCE(a, '0.0.0.0') FROM t1 ORDER BY a;
+COALESCE(a, '0.0.0.0')
+0.0.0.0
+0.0.0.1
+0.0.0.2
+SELECT a, LEAST(a,'0.0.0.0'), LEAST(a,'0.0.0.255') FROM t1 ORDER BY a;
+a LEAST(a,'0.0.0.0') LEAST(a,'0.0.0.255')
+NULL NULL NULL
+0.0.0.1 0.0.0.0 0.0.0.1
+0.0.0.2 0.0.0.0 0.0.0.2
+SELECT a, GREATEST(a,'0.0.0.0'), GREATEST(a,'0.0.0.255') FROM t1 ORDER BY a;
+a GREATEST(a,'0.0.0.0') GREATEST(a,'0.0.0.255')
+NULL NULL NULL
+0.0.0.1 0.0.0.1 0.0.0.255
+0.0.0.2 0.0.0.2 0.0.0.255
+CREATE TABLE t2 AS SELECT
+COALESCE(a, '0.0.0.0'),
+LEAST(a,'0.0.0.0'),
+GREATEST(a,'0.0.0.0')
+FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `COALESCE(a, '0.0.0.0')` inet4 DEFAULT NULL,
+ `LEAST(a,'0.0.0.0')` inet4 DEFAULT NULL,
+ `GREATEST(a,'0.0.0.0')` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+SELECT COALESCE(a, 0x00000000) FROM t1 ORDER BY a;
+COALESCE(a, 0x00000000)
+0.0.0.0
+0.0.0.1
+0.0.0.2
+SELECT a,
+LEAST(a, 0x00000000),
+LEAST(a, 0x0000000f)
+FROM t1 ORDER BY a;
+a LEAST(a, 0x00000000) LEAST(a, 0x0000000f)
+NULL NULL NULL
+0.0.0.1 0.0.0.0 0.0.0.1
+0.0.0.2 0.0.0.0 0.0.0.2
+SELECT a,
+GREATEST(a, 0x00000000),
+GREATEST(a, 0x0000000f)
+FROM t1 ORDER BY a;
+a GREATEST(a, 0x00000000) GREATEST(a, 0x0000000f)
+NULL NULL NULL
+0.0.0.1 0.0.0.1 0.0.0.15
+0.0.0.2 0.0.0.2 0.0.0.15
+CREATE TABLE t2 AS SELECT
+COALESCE(a, 0x00000000),
+LEAST(a,0x00000000),
+GREATEST(a,0x00000000)
+FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `COALESCE(a, 0x00000000)` inet4 DEFAULT NULL,
+ `LEAST(a,0x00000000)` inet4 DEFAULT NULL,
+ `GREATEST(a,0x00000000)` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+SELECT COALESCE(a, 10) FROM t1;
+ERROR HY000: Illegal parameter data types inet4 and int for operation 'coalesce'
+SELECT LEAST(a, 10) FROM t1;
+ERROR HY000: Illegal parameter data types inet4 and int for operation 'least'
+SELECT GREATEST(a, 10) FROM t1;
+ERROR HY000: Illegal parameter data types inet4 and int for operation 'greatest'
+DROP TABLE t1;
+SELECT COALESCE('garbage', CAST('0.0.0.1' AS INET4));
+COALESCE('garbage', CAST('0.0.0.1' AS INET4))
+0.0.0.1
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT COALESCE(0x01, CAST('0.0.0.1' AS INET4));
+COALESCE(0x01, CAST('0.0.0.1' AS INET4))
+0.0.0.1
+Warnings:
+Warning 1292 Incorrect inet4 value: '\x01'
+#
+# Uniqueness
+#
+CREATE TABLE t1 (a INET4 NOT NULL PRIMARY KEY);
+INSERT INTO t1 VALUES ('65.0.0.1'),('97.0.0.1');
+INSERT INTO t1 VALUES ('97.0.0.1');
+ERROR 23000: Duplicate entry '97.0.0.1' for key 'PRIMARY'
+SELECT * FROM t1;
+a
+65.0.0.1
+97.0.0.1
+DROP TABLE t1;
+#
+# Indexes
+#
+CREATE TABLE t1 (a INET4, KEY(a(1)));
+ERROR HY000: Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys
+#
+# Explicit CAST on INSERT
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES (CAST('1.0.0.1' AS INET4));
+INSERT INTO t1 VALUES (CAST('1.0.0.2' AS INET4));
+INSERT INTO t1 VALUES (CAST('1.0.0.3' AS INET4));
+INSERT INTO t1 VALUES (CAST(CONCAT('2','0.0.0.1') AS INET4));
+INSERT INTO t1 VALUES (CAST(CONCAT('2','0.0.0.2') AS INET4));
+INSERT INTO t1 VALUES (CAST(CONCAT('2','0.0.0.3') AS INET4));
+SELECT * FROM t1 ORDER BY a;
+a
+1.0.0.1
+1.0.0.2
+1.0.0.3
+20.0.0.1
+20.0.0.2
+20.0.0.3
+DROP TABLE t1;
+#
+# Explicit CAST and implicit CAST on ALTER
+#
+CREATE TABLE t1 (a VARCHAR(64));
+INSERT INTO t1 VALUES ('garbage'),('0.0.0.0'),('0.0.0.1'),('255.0.0.1'),('255.0.0.2');
+SELECT a, CAST(a AS INET4) FROM t1 ORDER BY a;
+a CAST(a AS INET4)
+0.0.0.0 0.0.0.0
+0.0.0.1 0.0.0.1
+255.0.0.1 255.0.0.1
+255.0.0.2 255.0.0.2
+garbage NULL
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT a, CAST(a AS INET4) FROM t1 ORDER BY CAST(a AS INET4);
+a CAST(a AS INET4)
+garbage NULL
+0.0.0.0 0.0.0.0
+0.0.0.1 0.0.0.1
+255.0.0.1 255.0.0.1
+255.0.0.2 255.0.0.2
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+ALTER TABLE t1 MODIFY a INET4;
+ERROR 22007: Incorrect inet4 value: 'garbage' for column `test`.`t1`.`a` at row 1
+SET sql_mode='';
+ALTER TABLE t1 MODIFY a INET4;
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage' for column `test`.`t1`.`a` at row 1
+SET sql_mode=DEFAULT;
+SELECT * FROM t1 ORDER BY a;
+a
+NULL
+0.0.0.0
+0.0.0.1
+255.0.0.1
+255.0.0.2
+DROP TABLE t1;
+CREATE TABLE t1 (a BINARY(4));
+INSERT INTO t1 VALUES (0x00000000);
+INSERT INTO t1 VALUES (0x00000001);
+INSERT INTO t1 VALUES (0xff000001);
+INSERT INTO t1 VALUES (0xff000002);
+SELECT HEX(a), CAST(a AS INET4) FROM t1 ORDER BY a;
+HEX(a) CAST(a AS INET4)
+00000000 0.0.0.0
+00000001 0.0.0.1
+FF000001 255.0.0.1
+FF000002 255.0.0.2
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1 ORDER BY a;
+a
+0.0.0.0
+0.0.0.1
+255.0.0.1
+255.0.0.2
+DROP TABLE t1;
+#
+# INSERT..SELECT, same data types
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.1'),('0.0.0.2');
+CREATE TABLE t2 (a INET4);
+INSERT INTO t2 SELECT a FROM t1;
+SELECT * FROM t2;
+a
+0.0.0.0
+0.0.0.1
+0.0.0.2
+DROP TABLE t1,t2;
+#
+# Implicit CAST on INSERT..SELECT, text format
+#
+CREATE TABLE t1 (a VARCHAR(64));
+INSERT INTO t1 VALUES ('garbage'),('0.0.0.0'),('0.0.0.1'),('255.0.0.1'),('255.0.0.2');
+CREATE TABLE t2 (a INET4);
+INSERT INTO t2 SELECT a FROM t1;
+ERROR 22007: Incorrect inet4 value: 'garbage' for column `test`.`t2`.`a` at row 1
+SET sql_mode='';
+INSERT INTO t2 SELECT a FROM t1;
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage' for column `test`.`t2`.`a` at row 1
+SELECT * FROM t2 ORDER BY a;
+a
+NULL
+0.0.0.0
+0.0.0.1
+255.0.0.1
+255.0.0.2
+SET sql_mode=DEFAULT;
+DROP TABLE t2;
+CREATE TABLE t2 (a INET4 NOT NULL);
+INSERT INTO t2 SELECT a FROM t1;
+ERROR 22007: Incorrect inet4 value: 'garbage' for column `test`.`t2`.`a` at row 1
+SET sql_mode='';
+INSERT INTO t2 SELECT a FROM t1;
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage' for column `test`.`t2`.`a` at row 1
+SELECT * FROM t2 ORDER BY a;
+a
+0.0.0.0
+0.0.0.0
+0.0.0.1
+255.0.0.1
+255.0.0.2
+SET sql_mode=DEFAULT;
+DROP TABLE t2;
+DROP TABLE t1;
+#
+# Implicit CAST on INSERT..SELECT, binary format
+#
+CREATE TABLE t1 (a BINARY(4));
+INSERT INTO t1 VALUES (0x00000000);
+INSERT INTO t1 VALUES (0x00000001);
+INSERT INTO t1 VALUES (0xff000001);
+INSERT INTO t1 VALUES (0xff000002);
+CREATE TABLE t2 (a INET4);
+INSERT INTO t2 SELECT a FROM t1;
+SELECT a FROM t2 ORDER BY a;
+a
+0.0.0.0
+0.0.0.1
+255.0.0.1
+255.0.0.2
+DROP TABLE t1,t2;
+#
+# CAST to other data types
+#
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS DOUBLE);
+ERROR HY000: Illegal parameter data type inet4 for operation 'double_typecast'
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS FLOAT);
+ERROR HY000: Illegal parameter data type inet4 for operation 'float_typecast'
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS DECIMAL);
+ERROR HY000: Illegal parameter data type inet4 for operation 'decimal_typecast'
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS SIGNED);
+ERROR HY000: Illegal parameter data type inet4 for operation 'cast_as_signed'
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS UNSIGNED);
+ERROR HY000: Illegal parameter data type inet4 for operation 'cast_as_unsigned'
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS TIME);
+ERROR HY000: Illegal parameter data type inet4 for operation 'cast_as_time'
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS DATE);
+ERROR HY000: Illegal parameter data type inet4 for operation 'cast_as_date'
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS DATETIME);
+ERROR HY000: Illegal parameter data type inet4 for operation 'cast_as_datetime'
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS CHAR);
+CAST(CAST('0.0.0.0' AS INET4) AS CHAR)
+0.0.0.0
+CREATE TABLE t1 AS SELECT CAST(CAST('0.0.0.0' AS INET4) AS CHAR) AS a;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` varchar(15) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('255.0.0.255');
+CREATE TABLE t2 AS SELECT
+CAST(a AS CHAR),
+CAST(a AS CHAR(15)),
+CAST(a AS CHAR(530)),
+CAST(a AS CHAR(65535)),
+CAST(a AS CHAR(66000)),
+CAST(a AS CHAR(16777215)),
+CAST(a AS CHAR(16777216))
+FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `CAST(a AS CHAR)` varchar(15) DEFAULT NULL,
+ `CAST(a AS CHAR(15))` varchar(15) DEFAULT NULL,
+ `CAST(a AS CHAR(530))` text DEFAULT NULL,
+ `CAST(a AS CHAR(65535))` text DEFAULT NULL,
+ `CAST(a AS CHAR(66000))` mediumtext DEFAULT NULL,
+ `CAST(a AS CHAR(16777215))` mediumtext DEFAULT NULL,
+ `CAST(a AS CHAR(16777216))` longtext DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+SELECT * FROM t2;
+CAST(a AS CHAR) 255.0.0.255
+CAST(a AS CHAR(15)) 255.0.0.255
+CAST(a AS CHAR(530)) 255.0.0.255
+CAST(a AS CHAR(65535)) 255.0.0.255
+CAST(a AS CHAR(66000)) 255.0.0.255
+CAST(a AS CHAR(16777215)) 255.0.0.255
+CAST(a AS CHAR(16777216)) 255.0.0.255
+DROP TABLE t2;
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('255.0.0.255');
+CREATE TABLE t2 AS SELECT
+CAST(a AS BINARY(4)) AS cb4,
+CAST(a AS BINARY) AS cb,
+CAST(a AS BINARY(16)) AS cb16,
+CAST(a AS BINARY(32)) AS cb32,
+CAST(a AS BINARY(530)) AS cb530,
+CAST(a AS BINARY(65535)) AS cb65535,
+CAST(a AS BINARY(66000)) AS cb66000,
+CAST(a AS BINARY(16777215)) AS cb16777215,
+CAST(a AS BINARY(16777216)) AS cb16777216
+FROM t1 LIMIT 0;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `cb4` binary(4) DEFAULT NULL,
+ `cb` binary(4) DEFAULT NULL,
+ `cb16` binary(16) DEFAULT NULL,
+ `cb32` binary(32) DEFAULT NULL,
+ `cb530` varbinary(530) DEFAULT NULL,
+ `cb65535` blob DEFAULT NULL,
+ `cb66000` mediumblob DEFAULT NULL,
+ `cb16777215` mediumblob DEFAULT NULL,
+ `cb16777216` longblob DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+CREATE TABLE t2 AS SELECT
+CAST(a AS BINARY(4)) AS cb4,
+CAST(a AS BINARY) AS cb,
+CAST(a AS BINARY(16)) AS cb16,
+CAST(a AS BINARY(32)) AS cb32,
+CAST(a AS BINARY(530)) AS cb530,
+CAST(a AS BINARY(65535)) AS cb65535
+FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `cb4` binary(4) DEFAULT NULL,
+ `cb` binary(4) DEFAULT NULL,
+ `cb16` binary(16) DEFAULT NULL,
+ `cb32` binary(32) DEFAULT NULL,
+ `cb530` varbinary(530) DEFAULT NULL,
+ `cb65535` blob DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+SELECT
+HEX(cb4),
+HEX(cb),
+HEX(cb16),
+HEX(cb32),
+LENGTH(cb530),
+LENGTH(cb65535)
+FROM t2;
+HEX(cb4) FF0000FF
+HEX(cb) FF0000FF
+HEX(cb16) FF0000FF000000000000000000000000
+HEX(cb32) FF0000FF00000000000000000000000000000000000000000000000000000000
+LENGTH(cb530) 530
+LENGTH(cb65535) 65535
+DROP TABLE t2;
+DROP TABLE t1;
+#
+# Implicit conversion to other types in INSERT
+#
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (CAST('0.0.0.0' AS INET4));
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t1`.`a`
+DROP TABLE t1;
+CREATE TABLE t1 (a DOUBLE);
+INSERT INTO t1 VALUES (CAST('0.0.0.0' AS INET4));
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t1`.`a`
+DROP TABLE t1;
+CREATE TABLE t1 (a DECIMAL(32,0));
+INSERT INTO t1 VALUES (CAST('0.0.0.0' AS INET4));
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t1`.`a`
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(64));
+INSERT INTO t1 VALUES (CAST('0.0.0.0' AS INET4));
+SELECT * FROM t1;
+a
+0.0.0.0
+DROP TABLE t1;
+CREATE TABLE t1 (a TEXT);
+INSERT INTO t1 VALUES (CAST('0.0.0.0' AS INET4));
+SELECT * FROM t1;
+a
+0.0.0.0
+DROP TABLE t1;
+#
+# Boolean context
+#
+SELECT
+CAST('0.0.0.0' AS INET4) IS TRUE,
+CAST('0.0.0.0' AS INET4) IS FALSE,
+CAST('0.0.0.1' AS INET4) IS TRUE,
+CAST('0.0.0.1' AS INET4) IS FALSE;
+CAST('0.0.0.0' AS INET4) IS TRUE CAST('0.0.0.0' AS INET4) IS FALSE CAST('0.0.0.1' AS INET4) IS TRUE CAST('0.0.0.1' AS INET4) IS FALSE
+0 1 1 0
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.1');
+SELECT a, a IS TRUE, a IS FALSE FROM t1 ORDER BY a;
+a a IS TRUE a IS FALSE
+0.0.0.0 0 1
+0.0.0.1 1 0
+DROP TABLE t1;
+#
+# GROUP BY
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.0');
+INSERT INTO t1 VALUES ('0.0.0.1'),('0.0.0.01'),('0.0.0.001');
+INSERT INTO t1 VALUES ('0.0.0.2'),('0.0.0.2'),('0.0.0.2'),('0.0.0.2');
+SELECT a, COUNT(*) FROM t1 GROUP BY a;
+a COUNT(*)
+0.0.0.0 2
+0.0.0.1 3
+0.0.0.2 4
+DROP TABLE t1;
+#
+# Aggregate functions
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.0');
+INSERT INTO t1 VALUES ('0.0.0.1'),('0.0.0.01'),('0.0.0.001');
+INSERT INTO t1 VALUES ('0.0.0.2'),('0.0.0.2'),('0.0.0.2'),('0.0.0.2');
+SELECT MIN(a),MAX(a) FROM t1;
+MIN(a) MAX(a)
+0.0.0.0 0.0.0.2
+CREATE TABLE t2 AS SELECT MIN(a), MAX(a) FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `MIN(a)` inet4 DEFAULT NULL,
+ `MAX(a)` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+SELECT AVG(a) FROM t1;
+ERROR HY000: Illegal parameter data type inet4 for operation 'avg('
+SELECT AVG(DISTINCT a) FROM t1;
+ERROR HY000: Illegal parameter data type inet4 for operation 'avg(distinct '
+SELECT SUM(a) FROM t1;
+ERROR HY000: Illegal parameter data type inet4 for operation 'sum('
+SELECT SUM(DISTINCT a) FROM t1;
+ERROR HY000: Illegal parameter data type inet4 for operation 'sum(distinct '
+SELECT STDDEV(a) FROM t1;
+ERROR HY000: Illegal parameter data type inet4 for operation 'std('
+SELECT GROUP_CONCAT(a ORDER BY a) FROM t1;
+GROUP_CONCAT(a ORDER BY a)
+0.0.0.0,0.0.0.0,0.0.0.1,0.0.0.1,0.0.0.1,0.0.0.2,0.0.0.2,0.0.0.2,0.0.0.2
+SELECT a, GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a;
+a GROUP_CONCAT(a ORDER BY a)
+0.0.0.0 0.0.0.0,0.0.0.0
+0.0.0.1 0.0.0.1,0.0.0.1,0.0.0.1
+0.0.0.2 0.0.0.2,0.0.0.2,0.0.0.2,0.0.0.2
+DROP TABLE t1;
+#
+# MDEV-21765 Possibly inconsistent behavior of BIT_xx functions with INET4 field
+#
+CREATE TABLE t1 (a INET4);
+SELECT BIT_AND(a) FROM t1;
+ERROR HY000: Illegal parameter data type inet4 for operation 'bit_and('
+SELECT BIT_OR(a) FROM t1;
+ERROR HY000: Illegal parameter data type inet4 for operation 'bit_or('
+SELECT BIT_XOR(a) FROM t1;
+ERROR HY000: Illegal parameter data type inet4 for operation 'bit_xor('
+DROP TABLE t1;
+#
+# Window functions
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.1'),('0.0.0.2'),('0.0.0.3'),('0.0.0.004');
+SELECT
+a,
+LAG(a) OVER (ORDER BY a),
+LEAD(a) OVER (ORDER BY a)
+FROM t1 ORDER BY a;
+a LAG(a) OVER (ORDER BY a) LEAD(a) OVER (ORDER BY a)
+0.0.0.1 NULL 0.0.0.2
+0.0.0.2 0.0.0.1 0.0.0.3
+0.0.0.3 0.0.0.2 0.0.0.4
+0.0.0.4 0.0.0.3 NULL
+SELECT
+a,
+FIRST_VALUE(a) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING),
+LAST_VALUE(a) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
+FROM t1 ORDER BY a;
+a FIRST_VALUE(a) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) LAST_VALUE(a) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
+0.0.0.1 0.0.0.1 0.0.0.2
+0.0.0.2 0.0.0.1 0.0.0.3
+0.0.0.3 0.0.0.2 0.0.0.4
+0.0.0.4 0.0.0.3 0.0.0.4
+DROP TABLE t1;
+#
+# Prepared statements
+#
+EXECUTE IMMEDIATE 'CREATE TABLE t1 AS SELECT ? AS a' USING CAST('0.0.0.0' AS INET4);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` inet4 NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING '0.0.0.1';
+EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING CAST('0.0.0.2' AS INET4);
+EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING 0x00000003;
+EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING CAST(0x00000004 AS INET4);
+SELECT a FROM t1 ORDER BY a;
+a
+0.0.0.0
+0.0.0.1
+0.0.0.2
+0.0.0.3
+0.0.0.4
+EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING '0.0.0.1';
+a
+0.0.0.1
+EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING CAST('0.0.0.2' AS INET4);
+a
+0.0.0.2
+EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING 0x00000003;
+a
+0.0.0.3
+EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING CAST(0x00000004 AS INET4);
+a
+0.0.0.4
+DROP TABLE t1;
+#
+# Character set and collation aggregation
+#
+CREATE TABLE t1 (a INET4);
+CREATE TABLE t2 AS SELECT
+CONCAT(a) AS c1,
+CONCAT(CAST('0.0.0.0' AS INET4)) AS c2
+FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `c1` varchar(15) DEFAULT NULL,
+ `c2` varchar(15) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+CREATE TABLE t2 AS SELECT
+CONCAT(_utf8'1', a) AS c1,
+CONCAT(_utf8'1', CAST('0.0.0.1' AS INET4)) AS c2,
+CONCAT(_utf8'1', COALESCE(a)) AS c3
+FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `c1` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `c2` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL,
+ `c3` varchar(16) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+CREATE TABLE t2 AS SELECT
+CONCAT(_latin1'1', a) AS c1,
+CONCAT(_latin1'1', CAST('0.0.0.1' AS INET4)) AS c2,
+CONCAT(_latin1'1', COALESCE(a)) AS c3
+FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `c1` varchar(16) DEFAULT NULL,
+ `c2` varchar(16) DEFAULT NULL,
+ `c3` varchar(16) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+DROP TABLE t1;
+#
+# UNION
+#
+CREATE TABLE t1 AS SELECT CAST('0.0.0.0' AS INET4) AS c UNION SELECT CAST('0.0.0.1' AS INET4);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `c` inet4 NOT NULL DEFAULT '0.0.0.0'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t1;
+CREATE TABLE t1 AS SELECT CAST('0.0.0.0' AS INET4) AS c UNION SELECT '0.0.0.1';
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `c` inet4 NOT NULL DEFAULT '0.0.0.0'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t1;
+CREATE TABLE t1 AS SELECT '0.0.0.0' AS c UNION SELECT CAST('0.0.0.1' AS INET4);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `c` inet4 NOT NULL DEFAULT '0.0.0.0'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t1;
+CREATE TABLE t1 AS SELECT CAST('0.0.0.0' AS INET4) AS c UNION SELECT 0x00000001;
+SELECT * FROM t1;
+c
+0.0.0.0
+0.0.0.1
+DROP TABLE t1;
+CREATE TABLE t1 AS SELECT CAST('0.0.0.0' AS INET4) AS c UNION SELECT 1;
+ERROR HY000: Illegal parameter data types inet4 and int for operation 'UNION'
+#
+# Unary operators
+#
+SELECT -CAST('0.0.0.0' AS INET4);
+ERROR HY000: Illegal parameter data type inet4 for operation '-'
+SELECT ABS(CAST('0.0.0.0' AS INET4));
+ERROR HY000: Illegal parameter data type inet4 for operation 'abs'
+SELECT ROUND(CAST('0.0.0.0' AS INET4));
+ERROR HY000: Illegal parameter data type inet4 for operation 'round'
+SELECT CEILING(CAST('0.0.0.0' AS INET4));
+ERROR HY000: Illegal parameter data type inet4 for operation 'ceiling'
+SELECT FLOOR(CAST('0.0.0.0' AS INET4));
+ERROR HY000: Illegal parameter data type inet4 for operation 'floor'
+#
+# Arithmetic operators
+#
+SELECT CAST('0.0.0.0' AS INET4) + 1;
+ERROR HY000: Illegal parameter data types inet4 and int for operation '+'
+SELECT CAST('0.0.0.0' AS INET4) - 1;
+ERROR HY000: Illegal parameter data types inet4 and int for operation '-'
+SELECT CAST('0.0.0.0' AS INET4) * 1;
+ERROR HY000: Illegal parameter data types inet4 and int for operation '*'
+SELECT CAST('0.0.0.0' AS INET4) / 1;
+ERROR HY000: Illegal parameter data types inet4 and int for operation '/'
+SELECT CAST('0.0.0.0' AS INET4) MOD 1;
+ERROR HY000: Illegal parameter data types inet4 and int for operation 'MOD'
+#
+# Misc
+#
+SELECT RAND(CAST('0.0.0.0' AS INET4));
+ERROR HY000: Illegal parameter data type inet4 for operation 'rand'
+SELECT FROM_UNIXTIME(CAST('0.0.0.0' AS INET4));
+ERROR HY000: Illegal parameter data type inet4 for operation 'from_unixtime'
+SELECT HOUR(CAST('0.0.0.0' AS INET4));
+ERROR HY000: Illegal parameter data type inet4 for operation 'hour'
+SELECT YEAR(CAST('0.0.0.0' AS INET4));
+ERROR HY000: Illegal parameter data type inet4 for operation 'year'
+SELECT RELEASE_LOCK(CAST('0.0.0.0' AS INET4));
+ERROR HY000: Illegal parameter data type inet4 for operation 'release_lock'
+#
+# Virtual columns
+#
+CREATE TABLE t1 (
+a INT,
+b INET4 GENERATED ALWAYS AS (CAST(CONCAT(RAND(),a) AS INET4)), INDEX(b)
+);
+ERROR HY000: Function or expression 'rand()' cannot be used in the GENERATED ALWAYS AS clause of `b`
+CREATE TABLE t1 (
+a INT,
+b INET4 GENERATED ALWAYS AS (CAST(CONCAT('0.0.0.',a) AS INET4)), INDEX(b)
+);
+INSERT INTO t1 (a) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15);
+SELECT * FROM t1;
+a b
+0 0.0.0.0
+1 0.0.0.1
+2 0.0.0.2
+3 0.0.0.3
+4 0.0.0.4
+5 0.0.0.5
+6 0.0.0.6
+7 0.0.0.7
+8 0.0.0.8
+9 0.0.0.9
+10 0.0.0.10
+11 0.0.0.11
+12 0.0.0.12
+13 0.0.0.13
+14 0.0.0.14
+15 0.0.0.15
+DROP TABLE t1;
+#
+# VIEW
+#
+CREATE TABLE t1 (a INT DEFAULT 0);
+INSERT INTO t1 (a) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15);
+SELECT * FROM t1 ORDER BY a;
+a
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+CREATE VIEW v1 AS SELECT (CAST(CONCAT('0.0.0.',a) AS INET4)) AS c FROM t1;
+SELECT * FROM v1 ORDER BY c;
+c
+0.0.0.0
+0.0.0.1
+0.0.0.2
+0.0.0.3
+0.0.0.4
+0.0.0.5
+0.0.0.6
+0.0.0.7
+0.0.0.8
+0.0.0.9
+0.0.0.10
+0.0.0.11
+0.0.0.12
+0.0.0.13
+0.0.0.14
+0.0.0.15
+DROP VIEW v1;
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4 DEFAULT '0.0.0.0');
+CREATE VIEW v1 AS SELECT * FROM t1;
+SHOW CREATE VIEW v1;
+View Create View character_set_client collation_connection
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a` from `t1` latin1 latin1_swedish_ci
+DESCRIBE v1;
+Field Type Null Key Default Extra
+a inet4 YES 0.0.0.0
+INSERT INTO v1 VALUES ('0.0.0.0'),('0.0.0.1'),('0.0.0.2');
+SELECT * FROM t1;
+a
+0.0.0.0
+0.0.0.1
+0.0.0.2
+DROP VIEW v1;
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4 DEFAULT CAST('0.0.0.0' AS INET4));
+CREATE VIEW v1 AS SELECT * FROM t1;
+SHOW CREATE VIEW v1;
+View Create View character_set_client collation_connection
+v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t1`.`a` AS `a` from `t1` latin1 latin1_swedish_ci
+DESCRIBE v1;
+Field Type Null Key Default Extra
+a inet4 YES cast('0.0.0.0' as inet4)
+INSERT INTO v1 VALUES ('0.0.0.0'),('0.0.0.1'),('0.0.0.2');
+SELECT * FROM t1;
+a
+0.0.0.0
+0.0.0.1
+0.0.0.2
+DROP VIEW v1;
+DROP TABLE t1;
+#
+# Subqueries
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.1'),('0.0.0.2');
+SELECT * FROM t1 WHERE a=(SELECT MIN(a) FROM t1) ORDER BY a;
+a
+0.0.0.0
+SELECT * FROM t1 WHERE a=(SELECT MAX(a) FROM t1) ORDER BY a;
+a
+0.0.0.2
+SELECT * FROM t1 WHERE a IN (SELECT a FROM t1 WHERE a>'0.0.0.0') ORDER BY a;
+a
+0.0.0.1
+0.0.0.2
+DROP TABLE t1;
+#
+# Stored routines
+#
+CREATE PROCEDURE p1(a INET4)
+BEGIN
+DECLARE b INET4 DEFAULT CONCAT('1', a);
+SELECT a, b;
+END;
+$$
+CALL p1('0.0.0.1');
+a b
+0.0.0.1 10.0.0.1
+CALL p1(CAST('0.0.0.2' AS INET4));
+a b
+0.0.0.2 10.0.0.2
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a INET4) RETURNS INET4
+BEGIN
+RETURN CONCAT('1',a);
+END;
+$$
+SELECT f1('0.0.0.1');
+f1('0.0.0.1')
+10.0.0.1
+SELECT f1(CAST('0.0.0.1' AS INET4));
+f1(CAST('0.0.0.1' AS INET4))
+10.0.0.1
+DROP FUNCTION f1;
+#
+# Anchored data types in SP variables
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.1');
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE va TYPE OF t1.a;
+SELECT MAX(a) INTO va FROM t1;
+SELECT va;
+END;
+$$
+CALL p1;
+va
+0.0.0.1
+DROP PROCEDURE p1;
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4, b INET4);
+INSERT INTO t1 VALUES ('0.0.0.12', '0.0.0.111');
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE va ROW TYPE OF t1;
+SELECT MAX(a), MAX(b) INTO va FROM t1;
+SELECT va.a, va.b;
+END;
+$$
+CALL p1;
+va.a va.b
+0.0.0.12 0.0.0.111
+DROP PROCEDURE p1;
+DROP TABLE t1;
+#
+# Optimizer: make_const_item_for_comparison
+#
+CREATE TABLE t1 (id INT, a INET4);
+INSERT INTO t1 VALUES (1,'0.0.0.1'),(2,'0.0.0.2');
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=COALESCE(CAST('0.0.0.1' AS INET4)) AND id>0;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = INET4'0.0.0.1' and `test`.`t1`.`id` > 0
+DROP TABLE t1;
+#
+# Optimizer: equal field propagation
+#
+CREATE TABLE t1 (id INT, a INET4);
+INSERT INTO t1 VALUES (1,'0.0.0.1'),(2,'0.0.0.2');
+EXPLAIN EXTENDED SELECT * FROM t1
+WHERE a=COALESCE(CAST('0.0.0.1' AS INET4))
+AND LENGTH(CONCAT(a,RAND()))>1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = INET4'0.0.0.1' and octet_length(concat(INET4'0.0.0.1',rand())) > 1
+EXPLAIN EXTENDED SELECT * FROM t1
+WHERE a=COALESCE(CAST('0.0.0.1' AS INET4))
+AND LENGTH(a)>1;
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = INET4'0.0.0.1'
+DROP TABLE t1;
+#
+# Optimizer: equal expression propagation
+#
+CREATE TABLE t1 (id INT, a INET4);
+INSERT INTO t1 VALUES (1,'0.0.0.1'),(2,'0.0.0.2');
+EXPLAIN EXTENDED SELECT * FROM t1
+WHERE COALESCE(a)='0.0.0.1' AND COALESCE(a)=CONCAT(a);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`id` AS `id`,`test`.`t1`.`a` AS `a` from `test`.`t1` where coalesce(`test`.`t1`.`a`) = '0.0.0.1' and concat(`test`.`t1`.`a`) = '0.0.0.1'
+DROP TABLE t1;
+#
+# Subquery materialization
+#
+CREATE TABLE t1 (a INET4, b VARCHAR(32), KEY (a), KEY(b)) ;
+INSERT INTO t1 VALUES ('0.0.0.10','0.0.0.11'),('0.0.0.10','0.0.0.11');
+SET @@optimizer_switch='semijoin=off,materialization=on,in_to_exists=off,subquery_cache=off';
+EXPLAIN SELECT * FROM t1 WHERE a IN (SELECT a AS a_inner FROM t1 GROUP BY a_inner);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
+2 MATERIALIZED t1 index NULL a 5 NULL 2 Using index
+EXPLAIN SELECT * FROM t1 WHERE b IN (SELECT a AS a_inner FROM t1 GROUP BY a_inner);
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
+2 DEPENDENT SUBQUERY t1 index_subquery a a 5 func 2 Using index; Using where
+SET @@optimizer_switch=DEFAULT;
+DROP TABLE t1;
+#
+# ALTER from INET4 to INET4
+#
+CREATE TABLE t1 (a INET4, b INT);
+INSERT INTO t1 VALUES ('10.11.12.13', 1);
+ALTER TABLE t1 MODIFY b DECIMAL(10,2);
+SELECT * FROM t1;
+a b
+10.11.12.13 1.00
+DROP TABLE t1;
+#
+# ALTER to character string data types
+#
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS CHAR(15)) FROM t1;
+CAST(a AS CHAR(15))
+10.11.12.13
+ALTER TABLE t1 MODIFY a CHAR(15);
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a VARCHAR(15);
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a TINYTEXT;
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a TEXT;
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a MEDIUMTEXT;
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a LONGTEXT;
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+#
+# ALTER from character string data types
+#
+CREATE OR REPLACE TABLE t1 (a CHAR(64));
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+CAST(a AS INET4)
+10.11.12.13
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a VARCHAR(64));
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+CAST(a AS INET4)
+10.11.12.13
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a TINYTEXT);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+CAST(a AS INET4)
+10.11.12.13
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a TEXT);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+CAST(a AS INET4)
+10.11.12.13
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a MEDIUMTEXT);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+CAST(a AS INET4)
+10.11.12.13
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a LONGTEXT);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+CAST(a AS INET4)
+10.11.12.13
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+#
+# ALTER to binary string data types
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a BINARY(4);
+SELECT HEX(a) FROM t1;
+HEX(a)
+0A0B0C0D
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a BINARY(5);
+SELECT HEX(a) FROM t1;
+HEX(a)
+0A0B0C0D00
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a BINARY(3);
+ERROR 22001: Data too long for column 'a' at row 1
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a TINYBLOB;
+SELECT HEX(a) FROM t1;
+HEX(a)
+0A0B0C0D
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a BLOB;
+SELECT HEX(a) FROM t1;
+HEX(a)
+0A0B0C0D
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a MEDIUMBLOB;
+SELECT HEX(a) FROM t1;
+HEX(a)
+0A0B0C0D
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a LONGBLOB;
+SELECT HEX(a) FROM t1;
+HEX(a)
+0A0B0C0D
+DROP TABLE t1;
+#
+# ALTER from binary string data types
+#
+CREATE TABLE t1 (a BINARY(4));
+INSERT INTO t1 VALUES (X'11121314');
+ALTER TABLE t1 MODIFY a INET4;
+SELECT a FROM t1;
+a
+17.18.19.20
+DROP TABLE t1;
+CREATE TABLE t1 (a BINARY(17));
+INSERT INTO t1 VALUES (X'1112131400');
+ALTER TABLE t1 MODIFY a INET4;
+ERROR 22007: Incorrect inet4 value: '\x11\x12\x13\x14\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' for column `test`.`t1`.`a` at row 1
+DROP TABLE t1;
+CREATE TABLE t1 (a BINARY(3));
+INSERT INTO t1 VALUES (X'111213');
+ALTER TABLE t1 MODIFY a INET4;
+ERROR 22007: Incorrect inet4 value: '\x11\x12\x13' for column `test`.`t1`.`a` at row 1
+DROP TABLE t1;
+CREATE TABLE t1 (a TINYBLOB);
+INSERT INTO t1 VALUES (X'11121314');
+ALTER TABLE t1 MODIFY a INET4;
+SELECT a FROM t1;
+a
+17.18.19.20
+DROP TABLE t1;
+CREATE TABLE t1 (a BLOB);
+INSERT INTO t1 VALUES (X'11121314');
+ALTER TABLE t1 MODIFY a INET4;
+SELECT a FROM t1;
+a
+17.18.19.20
+DROP TABLE t1;
+CREATE TABLE t1 (a MEDIUMBLOB);
+INSERT INTO t1 VALUES (X'11121314');
+ALTER TABLE t1 MODIFY a INET4;
+SELECT a FROM t1;
+a
+17.18.19.20
+DROP TABLE t1;
+CREATE TABLE t1 (a BLOB);
+INSERT INTO t1 VALUES (X'11121314');
+ALTER TABLE t1 MODIFY a INET4;
+SELECT a FROM t1;
+a
+17.18.19.20
+DROP TABLE t1;
+#
+# SET from INET4 to INET4
+#
+CREATE TABLE t1 (a INET4, b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+#
+# SET from INET4 to character string
+#
+CREATE TABLE t1 (a INET4, b CHAR(15));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4, b VARCHAR(15));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4, b TEXT);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4, b ENUM('255.0.0.255'));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4, b SET('255.0.0.255'));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+#
+# SET from character string to INET4
+#
+CREATE TABLE t1 (a CHAR(15), b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+CREATE TABLE t1 (a VARCHAR(15), b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+CREATE TABLE t1 (a TEXT, b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+CREATE TABLE t1 (a ENUM('255.0.0.255'), b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+CREATE TABLE t1 (a SET('255.0.0.255'), b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+#
+# SET from INET4 to binary
+#
+CREATE TABLE t1 (a INET4, b BINARY(4));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT HEX(b) FROM t1;
+HEX(b)
+FF0000FF
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4, b VARBINARY(4));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT HEX(b) FROM t1;
+HEX(b)
+FF0000FF
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4, b BLOB);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT HEX(b) FROM t1;
+HEX(b)
+FF0000FF
+DROP TABLE t1;
+#
+# SET from binary to INET4
+#
+CREATE TABLE t1 (a BINARY(4), b INET4);
+INSERT INTO t1 VALUES (CONCAT(0xFF,REPEAT(0x00,2),0xFF), NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+CREATE TABLE t1 (a VARBINARY(4), b INET4);
+INSERT INTO t1 VALUES (CONCAT(0xFF,REPEAT(0x00,2),0xFF), NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+CREATE TABLE t1 (a BLOB, b INET4);
+INSERT INTO t1 VALUES (CONCAT(0xFF,REPEAT(0x00,2),0xFF), NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+b
+255.0.0.255
+DROP TABLE t1;
+#
+# MDEV-20785 Converting INET6 to CHAR(39) produces garbage without a warning
+#
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS CHAR(15)) FROM t1;
+CAST(a AS CHAR(15))
+10.11.12.13
+ALTER TABLE t1 MODIFY a CHAR(15);
+SELECT * FROM t1;
+a
+10.11.12.13
+DROP TABLE t1;
+#
+# MDEV-20783 INET6 cannot be converted to BINARY(16) (requires clarification in documentation)
+#
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a BINARY(4);
+SELECT HEX(a) FROM t1;
+HEX(a)
+0A0B0C0D
+DROP TABLE t1;
+#
+# MDEV-20795 CAST(inet6 AS BINARY) returns wrong result
+#
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT HEX(CAST(a AS BINARY)) FROM t1;
+HEX(CAST(a AS BINARY))
+0A0B0C0D
+SELECT HEX(CAST(a AS BINARY(4))) FROM t1;
+HEX(CAST(a AS BINARY(4)))
+0A0B0C0D
+DROP TABLE t1;
+#
+# MDEV-20808 CAST from INET6 to FLOAT does not produce an error
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0');
+SELECT CAST(a AS FLOAT) FROM t1;
+ERROR HY000: Illegal parameter data type inet4 for operation 'float_typecast'
+DROP TABLE t1;
+#
+# MDEV-20798 Conversion from INET6 to other types performed without errors or warnings
+#
+CREATE TABLE t1 (a INET4, b INT);
+INSERT INTO t1 (a) VALUES ('0.0.0.0');
+UPDATE t1 SET b=a;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t1`.`b`
+SELECT * FROM t1;
+a b
+0.0.0.0 NULL
+DROP TABLE t1;
+SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30');
+CREATE TABLE t1 (a INET4, b TIMESTAMP);
+INSERT INTO t1 (a) VALUES ('0.0.0.0');
+UPDATE t1 SET b=a;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t1`.`b`
+SELECT * FROM t1;
+a b
+0.0.0.0 NULL
+DROP TABLE t1;
+SET timestamp=DEFAULT;
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 (a) VALUES ('0.0.0.0');
+ALTER TABLE t1 MODIFY a DATE;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t1`.`a`
+DROP TABLE t1;
+#
+# MDEV-20818 ER_CRASHED_ON_USAGE or Assertion `length <= column->length' failed in write_block_record on temporary table
+#
+CREATE TABLE t1 (a INET4);
+SELECT
+CAST(a AS BINARY(0)),
+CAST(a AS BINARY(1)),
+CAST(a AS BINARY(16)),
+CAST(a AS BINARY(255)),
+CAST(a AS BINARY(256)),
+CAST(a AS BINARY(512)),
+CAST(a AS BINARY(513)),
+CAST(a AS BINARY(65532)),
+CAST(a AS BINARY(65533)),
+CAST(a AS BINARY(65534)),
+CAST(a AS BINARY(65535)),
+CAST(a AS BINARY(65536)),
+CAST(a AS BINARY(16777215)),
+CAST(a AS BINARY(16777216))
+FROM t1;
+Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
+def CAST(a AS BINARY(0)) 254 0 0 Y 128 0 63
+def CAST(a AS BINARY(1)) 254 1 0 Y 128 0 63
+def CAST(a AS BINARY(16)) 254 16 0 Y 128 0 63
+def CAST(a AS BINARY(255)) 254 255 0 Y 128 0 63
+def CAST(a AS BINARY(256)) 253 256 0 Y 128 0 63
+def CAST(a AS BINARY(512)) 253 512 0 Y 128 0 63
+def CAST(a AS BINARY(513)) 253 513 0 Y 128 0 63
+def CAST(a AS BINARY(65532)) 253 65532 0 Y 128 0 63
+def CAST(a AS BINARY(65533)) 252 65533 0 Y 128 0 63
+def CAST(a AS BINARY(65534)) 252 65534 0 Y 128 0 63
+def CAST(a AS BINARY(65535)) 252 65535 0 Y 128 0 63
+def CAST(a AS BINARY(65536)) 250 65536 0 Y 128 0 63
+def CAST(a AS BINARY(16777215)) 250 16777215 0 Y 128 0 63
+def CAST(a AS BINARY(16777216)) 251 16777216 0 Y 128 0 63
+CAST(a AS BINARY(0)) CAST(a AS BINARY(1)) CAST(a AS BINARY(16)) CAST(a AS BINARY(255)) CAST(a AS BINARY(256)) CAST(a AS BINARY(512)) CAST(a AS BINARY(513)) CAST(a AS BINARY(65532)) CAST(a AS BINARY(65533)) CAST(a AS BINARY(65534)) CAST(a AS BINARY(65535)) CAST(a AS BINARY(65536)) CAST(a AS BINARY(16777215)) CAST(a AS BINARY(16777216))
+DROP TABLE t1;
+#
+# MDEV-20826 Wrong result of MIN(inet6) with GROUP BY
+#
+CREATE TABLE t1 (id INT, a INET4) ENGINE=MyISAM;
+INSERT INTO t1 VALUES (1, '255.0.0.0'),(1, '128.0.0.0');
+SELECT MIN(a), MAX(a) FROM t1 GROUP BY id;
+MIN(a) MAX(a)
+128.0.0.0 255.0.0.0
+DROP TABLE t1;
+#
+# MDEV-20809 EXTRACT from INET4 value does not produce any warnings
+#
+CREATE TABLE t1 (a INET4);
+SELECT EXTRACT(DAY FROM a) FROM t1;
+ERROR HY000: Illegal parameter data type inet4 for operation 'extract(day)'
+DROP TABLE t1;
+SELECT EXTRACT(DAY FROM CAST('0.0.0.0' AS INET4));
+ERROR HY000: Illegal parameter data type inet4 for operation 'extract(day)'
+#
+# MDEV-22764 Crash with a stored aggregate function returning INET4
+#
+CREATE OR REPLACE AGGREGATE FUNCTION aggregate_min_inet4(x INET4) RETURNS INET4
+BEGIN
+DECLARE res INET4 DEFAULT NULL;
+DECLARE CONTINUE HANDLER FOR NOT FOUND
+RETURN res;
+LOOP
+FETCH GROUP NEXT ROW;
+IF (res IS NULL) OR (res > x) THEN
+SET res= x;
+END IF;
+END LOOP;
+END;
+$$
+CREATE OR REPLACE TABLE t1 (name CHAR(30), val INET4);
+INSERT INTO t1 VALUES ('a', '0.0.0.5');
+INSERT INTO t1 VALUES ('a', '0.0.0.3');
+INSERT INTO t1 VALUES ('b', '0.0.0.1');
+INSERT INTO t1 VALUES ('b', '0.0.0.2');
+INSERT INTO t1 VALUES ('b', '0.0.0.5');
+SELECT name, aggregate_min_inet4(val) pc FROM t1 GROUP BY name;
+name pc
+a 0.0.0.3
+b 0.0.0.1
+CREATE OR REPLACE TABLE t2 (name CHAR(30), val INET4);
+INSERT INTO t2 SELECT name, aggregate_min_inet4(val) pc FROM t1 GROUP BY name;
+SELECT * FROM t2;
+name val
+a 0.0.0.3
+b 0.0.0.1
+DROP TABLE t2;
+DROP TABLE t1;
+DROP FUNCTION aggregate_min_inet4;
+#
+# MDEV-20280 PERCENTILE_DISC() rejects temporal and string input
+#
+CREATE TABLE t1 (name CHAR(30), star_rating INET4);
+INSERT INTO t1 VALUES ('Lord of the Ladybirds', '0.0.0.5');
+INSERT INTO t1 VALUES ('Lord of the Ladybirds', '0.0.0.3');
+INSERT INTO t1 VALUES ('Lady of the Flies', '0.0.0.1');
+INSERT INTO t1 VALUES ('Lady of the Flies', '0.0.0.2');
+INSERT INTO t1 VALUES ('Lady of the Flies', '0.0.0.5');
+SELECT name, PERCENTILE_DISC(0.5)
+WITHIN GROUP (ORDER BY star_rating)
+OVER (PARTITION BY name) AS pc FROM t1;
+name pc
+Lady of the Flies 0.0.0.2
+Lady of the Flies 0.0.0.2
+Lady of the Flies 0.0.0.2
+Lord of the Ladybirds 0.0.0.3
+Lord of the Ladybirds 0.0.0.3
+SELECT name, PERCENTILE_DISC(0)
+WITHIN GROUP (ORDER BY star_rating)
+OVER (PARTITION BY name) AS pc FROM t1;
+name pc
+Lady of the Flies 0.0.0.1
+Lady of the Flies 0.0.0.1
+Lady of the Flies 0.0.0.1
+Lord of the Ladybirds 0.0.0.3
+Lord of the Ladybirds 0.0.0.3
+SELECT name, PERCENTILE_DISC(1)
+WITHIN GROUP (ORDER BY star_rating)
+OVER (PARTITION BY name) AS pc FROM t1;
+name pc
+Lady of the Flies 0.0.0.5
+Lady of the Flies 0.0.0.5
+Lady of the Flies 0.0.0.5
+Lord of the Ladybirds 0.0.0.5
+Lord of the Ladybirds 0.0.0.5
+DROP TABLE t1;
+#
+# MDEV-22758 Assertion `!item->null_value' failed in Type_handler_inet6::make_sort_key_part
+#
+CREATE TABLE t1 (a VARCHAR(8) NOT NULL, b INET4 NOT NULL);
+INSERT INTO t1 VALUES ('foo','0.0.0.0'),('bar','1.0.0.1');
+SELECT * FROM t1 ORDER BY CASE WHEN a THEN b ELSE a END;
+a b
+foo 0.0.0.0
+bar 1.0.0.1
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'foo'
+Warning 1292 Incorrect inet4 value: 'foo'
+Warning 1292 Truncated incorrect DOUBLE value: 'bar'
+Warning 1292 Incorrect inet4 value: 'bar'
+DROP TABLE t1;
+CREATE OR REPLACE TABLE t1 (a VARCHAR(8) NOT NULL);
+INSERT INTO t1 VALUES ('foo'),('bar');
+SELECT * FROM t1 ORDER BY CAST(a AS INET4);
+a
+foo
+bar
+Warnings:
+Warning 1292 Incorrect inet4 value: 'foo'
+Warning 1292 Incorrect inet4 value: 'bar'
+DROP TABLE t1;
+CREATE TABLE t1 (a INET4 NOT NULL, b VARCHAR(32) NOT NULL);
+CREATE TABLE t2 AS SELECT CAST(a AS INET4) AS ca, CAST(b AS INET4) AS cb FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `ca` inet4 NOT NULL,
+ `cb` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+CREATE TABLE t2 AS SELECT COALESCE(a,a), COALESCE(a,b) FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `COALESCE(a,a)` inet4 NOT NULL,
+ `COALESCE(a,b)` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+CREATE TABLE t2 AS SELECT a AS ca,a AS cb FROM t1 UNION SELECT a,b FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `ca` inet4 NOT NULL DEFAULT '0.0.0.0',
+ `cb` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+DROP TABLE t2;
+DROP TABLE t1;
+#
+# MDEV-22758 Assertion `!item->null_value' failed in Type_handler_inet6::make_sort_key_part
+#
+CREATE TABLE t1 (c INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),(NULL);
+SELECT * FROM t1 ORDER BY IFNULL(c, 'foo');
+c
+NULL
+0.0.0.0
+Warnings:
+Warning 1292 Incorrect inet4 value: 'foo'
+DROP TABLE t1;
+CREATE TABLE t1 (c INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),(NULL);
+CREATE TABLE t2 AS SELECT IFNULL(c, 'foo') FROM t1;
+Warnings:
+Warning 1292 Incorrect inet4 value: 'foo'
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `IFNULL(c, 'foo')` inet4 DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+SELECT * FROM t2;
+IFNULL(c, 'foo')
+0.0.0.0
+NULL
+DROP TABLE t2;
+CREATE TABLE t2 AS SELECT IFNULL(c, '0.0.0.1') FROM t1;
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `IFNULL(c, '0.0.0.1')` inet4 NOT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+SELECT * FROM t2;
+IFNULL(c, '0.0.0.1')
+0.0.0.0
+0.0.0.1
+DROP TABLE t2;
+DROP TABLE t1;
+#
+# MDEV-26732 Assertion `0' failed in Item::val_native
+#
+SELECT CAST(CONCAT('0.0.0.0', REPEAT('',RAND())) AS INET4) AS f, var_pop('x') FROM dual HAVING f > '';
+f var_pop('x')
+Warnings:
+Warning 1292 Truncated incorrect DOUBLE value: 'x'
+Warning 1292 Incorrect inet4 value: ''
+SELECT CAST(CONCAT('0.0.0.0', REPEAT('',RAND())) AS INET4) AS f, var_pop(1) FROM dual HAVING f >= '0.0.0.0';
+f var_pop(1)
+0.0.0.0 0.0000
+CREATE TABLE t1(id INET4 NOT NULL PRIMARY KEY, dsc INET4);
+INSERT INTO t1 VALUES ('0.0.0.1', '1.0.0.1'),('0.0.0.3', '1.0.0.3'),('1.0.0.4', NULL);
+CREATE TABLE t2 SELECT COALESCE(t1.dsc), COUNT(*) FROM t1 GROUP BY t1.id;
+SELECT * FROM t2 ORDER BY 1,2;
+COALESCE(t1.dsc) COUNT(*)
+NULL 1
+1.0.0.1 1
+1.0.0.3 1
+DROP TABLE t1, t2;
+#
+# MDEV-24619 Wrong result or Assertion `0' in Item::val_native / Type_handler_inet6::Item_val_native_with_conversion
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.0');
+SELECT IF(1, '0.0.0.0', a) AS f FROM t1 GROUP BY 'foo' HAVING f != '';
+f
+Warnings:
+Warning 1292 Incorrect inet4 value: ''
+SELECT IF(1, '0.0.0.0', a) AS f FROM t1 GROUP BY 'foo' HAVING f != '0.0.0.0';
+f
+SELECT IF(1, '0.0.0.0', a) AS f FROM t1 GROUP BY 'foo' HAVING f != '0.0.0.1';
+f
+0.0.0.0
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4.test b/plugin/type_inet/mysql-test/type_inet/type_inet4.test
new file mode 100644
index 00000000000..b6b6300da47
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4.test
@@ -0,0 +1,1477 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+--echo #
+--echo # Basic CREATE functionality, defaults, metadata
+--echo #
+
+--error ER_WRONG_FIELD_SPEC
+CREATE TABLE t1 (a INET4 AUTO_INCREMENT);
+
+CREATE TABLE t1 (a INET4);
+SHOW CREATE TABLE t1;
+DESCRIBE t1;
+--vertical_results
+--replace_column 19 #
+SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='test' AND table_name='t1';
+--horizontal_results
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.1');
+--enable_metadata
+SELECT * FROM t1;
+SELECT CAST('0.0.0.1' AS INET4) AS a;
+--disable_metadata
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (
+ c1 INET4 DEFAULT 0x00000000,
+ c2 INET4 DEFAULT 0xFFFFFFFF,
+ c3 INET4 DEFAULT '0.0.0.255',
+ c4 INET4 DEFAULT '255.0.0.255',
+ c5 INET4 DEFAULT CAST(X'FFFF00FF' AS INET4)
+);
+SHOW CREATE TABLE t1;
+DESCRIBE t1;
+--vertical_results
+--replace_column 19 #
+SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema='test' AND table_name='t1';
+--horizontal_results
+DROP TABLE t1;
+
+--error ER_INVALID_DEFAULT
+CREATE TABLE t1 (c1 INET4 DEFAULT 0x00);
+--error ER_INVALID_DEFAULT
+CREATE TABLE t1 (c1 INET4 DEFAULT '');
+
+
+CREATE TABLE t1 (a INET4);
+--error ER_TRUNCATED_WRONG_VALUE
+INSERT INTO t1 VALUES ('x');
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+INSERT INTO t1 VALUES (1);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+INSERT INTO t1 VALUES (TIME'10:20:30');
+--error ER_TRUNCATED_WRONG_VALUE
+INSERT INTO t1 VALUES (0x00);
+DROP TABLE t1;
+
+--echo #
+--echo # CAST
+--echo #
+
+SELECT CAST('garbage' AS INET4);
+SELECT CAST(0x01 AS INET4);
+SELECT CAST(REPEAT(0x00,16) AS INET4);
+SELECT CAST(REPEAT(0x11,16) AS INET4);
+
+CREATE TABLE t1 AS SELECT CAST('0.0.0.0' AS INET4);
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # Text and binary formats, comparison operators
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES (0x00000000);
+INSERT INTO t1 VALUES (0x00000001);
+INSERT INTO t1 VALUES (0xFF000001);
+INSERT INTO t1 VALUES (0xFF000002);
+SELECT * FROM t1 ORDER BY a;
+SELECT * FROM t1 ORDER BY a DESC;
+SELECT HEX(a),a FROM t1 ORDER BY a;
+SELECT * FROM t1 WHERE a='0.0.0.0';
+SELECT * FROM t1 WHERE a='0.0.0.1';
+SELECT * FROM t1 WHERE a='255.0.0.1';
+SELECT * FROM t1 WHERE a='255.0.0.2';
+SELECT * FROM t1 WHERE a='255.000.000.002';
+SELECT * FROM t1 WHERE a=0x00000000;
+SELECT * FROM t1 WHERE a=0x00000001;
+SELECT * FROM t1 WHERE a=0xff000001;
+SELECT * FROM t1 WHERE a=0xff000002;
+SELECT * FROM t1 WHERE a<'0.0.0.0';
+SELECT * FROM t1 WHERE a<='0.0.0.0';
+SELECT * FROM t1 WHERE a>='255.0.0.2';
+SELECT * FROM t1 WHERE a>'255.0.0.2';
+SELECT * FROM t1 WHERE a IN ('0.0.0.0', '255.0.0.1') ORDER BY a;
+SELECT * FROM t1 WHERE a IN ('0.0.0.0', 0xff000002) ORDER BY a;
+
+SELECT * FROM t1 WHERE a<'garbage';
+SELECT * FROM t1 WHERE a<='garbage';
+SELECT * FROM t1 WHERE a='garbage';
+SELECT * FROM t1 WHERE a>='garbage';
+SELECT * FROM t1 WHERE a>'garbage';
+
+SELECT * FROM t1 WHERE a<0x01;
+SELECT * FROM t1 WHERE a<=0x01;
+SELECT * FROM t1 WHERE a=0x01;
+SELECT * FROM t1 WHERE a>=0x01;
+SELECT * FROM t1 WHERE a>0x01;
+
+SELECT * FROM t1 WHERE a='0.0.0.00';
+SELECT * FROM t1 WHERE a='0.0.0.000';
+SELECT * FROM t1 WHERE a='0.0.00.000';
+
+SELECT * FROM t1 WHERE a='0.0.0.01';
+SELECT * FROM t1 WHERE a='0.0.0.001';
+SELECT * FROM t1 WHERE a='0.0.00.001';
+
+SELECT * FROM t1 WHERE a='0.0.0.0000';
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT * FROM t1 WHERE a=0;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT * FROM t1 WHERE a=0.0;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT * FROM t1 WHERE a=0e0;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT * FROM t1 WHERE a=TIME'10:20:30';
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT * FROM t1 WHERE a IN ('0.0.0.0', 10);
+
+DROP TABLE t1;
+
+--echo #
+--echo # cmp_item_fbt: IN for non-constants
+--echo #
+
+CREATE TABLE t1 (a INET4, b INET4);
+INSERT INTO t1 VALUES ('0.0.0.1', '0.0.0.2');
+SELECT * FROM t1 WHERE '0.0.0.0' IN (a, b);
+SELECT * FROM t1 WHERE '0.0.0.1' IN (a, b);
+SELECT * FROM t1 WHERE '0.0.0.1' IN (a, b);
+SELECT * FROM t1 WHERE '0.0.0.01' IN (a, b);
+SELECT * FROM t1 WHERE '0.0.0.001' IN (a, b);
+SELECT * FROM t1 WHERE '0.0.0.0001' IN (a, b);
+DROP TABLE t1;
+
+
+--echo #
+--echo # CASE abbreviations
+--echo #
+
+CREATE TABLE t1 (
+ c INET4,
+ c_char CHAR(32),
+ c_varchar VARCHAR(32),
+ c_tinytext TINYTEXT,
+ c_text TEXT,
+ c_mediumtext TEXT,
+ c_longtext LONGTEXT
+);
+CREATE TABLE t2 AS SELECT
+ COALESCE(c, c_char),
+ COALESCE(c, c_varchar),
+ COALESCE(c, c_tinytext),
+ COALESCE(c, c_text),
+ COALESCE(c, c_mediumtext),
+ COALESCE(c, c_longtext)
+FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+CREATE TABLE t2 AS SELECT
+ LEAST(c, c_char),
+ LEAST(c, c_varchar),
+ LEAST(c, c_tinytext),
+ LEAST(c, c_text),
+ LEAST(c, c_mediumtext),
+ LEAST(c, c_longtext)
+FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES (NULL),('0.0.0.1'),('0.0.0.2');
+SELECT COALESCE(a, '0.0.0.0') FROM t1 ORDER BY a;
+SELECT a, LEAST(a,'0.0.0.0'), LEAST(a,'0.0.0.255') FROM t1 ORDER BY a;
+SELECT a, GREATEST(a,'0.0.0.0'), GREATEST(a,'0.0.0.255') FROM t1 ORDER BY a;
+
+CREATE TABLE t2 AS SELECT
+ COALESCE(a, '0.0.0.0'),
+ LEAST(a,'0.0.0.0'),
+ GREATEST(a,'0.0.0.0')
+FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+SELECT COALESCE(a, 0x00000000) FROM t1 ORDER BY a;
+
+SELECT a,
+ LEAST(a, 0x00000000),
+ LEAST(a, 0x0000000f)
+FROM t1 ORDER BY a;
+SELECT a,
+ GREATEST(a, 0x00000000),
+ GREATEST(a, 0x0000000f)
+FROM t1 ORDER BY a;
+
+CREATE TABLE t2 AS SELECT
+ COALESCE(a, 0x00000000),
+ LEAST(a,0x00000000),
+ GREATEST(a,0x00000000)
+FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(a, 10) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT LEAST(a, 10) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT GREATEST(a, 10) FROM t1;
+DROP TABLE t1;
+
+SELECT COALESCE('garbage', CAST('0.0.0.1' AS INET4));
+SELECT COALESCE(0x01, CAST('0.0.0.1' AS INET4));
+
+
+--echo #
+--echo # Uniqueness
+--echo #
+
+CREATE TABLE t1 (a INET4 NOT NULL PRIMARY KEY);
+INSERT INTO t1 VALUES ('65.0.0.1'),('97.0.0.1');
+--error ER_DUP_ENTRY
+INSERT INTO t1 VALUES ('97.0.0.1');
+SELECT * FROM t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # Indexes
+--echo #
+
+--error ER_WRONG_SUB_KEY
+CREATE TABLE t1 (a INET4, KEY(a(1)));
+
+
+--echo #
+--echo # Explicit CAST on INSERT
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES (CAST('1.0.0.1' AS INET4));
+INSERT INTO t1 VALUES (CAST('1.0.0.2' AS INET4));
+INSERT INTO t1 VALUES (CAST('1.0.0.3' AS INET4));
+INSERT INTO t1 VALUES (CAST(CONCAT('2','0.0.0.1') AS INET4));
+INSERT INTO t1 VALUES (CAST(CONCAT('2','0.0.0.2') AS INET4));
+INSERT INTO t1 VALUES (CAST(CONCAT('2','0.0.0.3') AS INET4));
+SELECT * FROM t1 ORDER BY a;
+DROP TABLE t1;
+
+
+--echo #
+--echo # Explicit CAST and implicit CAST on ALTER
+--echo #
+
+CREATE TABLE t1 (a VARCHAR(64));
+INSERT INTO t1 VALUES ('garbage'),('0.0.0.0'),('0.0.0.1'),('255.0.0.1'),('255.0.0.2');
+SELECT a, CAST(a AS INET4) FROM t1 ORDER BY a;
+SELECT a, CAST(a AS INET4) FROM t1 ORDER BY CAST(a AS INET4);
+--error ER_TRUNCATED_WRONG_VALUE
+ALTER TABLE t1 MODIFY a INET4;
+SET sql_mode='';
+ALTER TABLE t1 MODIFY a INET4;
+SET sql_mode=DEFAULT;
+SELECT * FROM t1 ORDER BY a;
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a BINARY(4));
+INSERT INTO t1 VALUES (0x00000000);
+INSERT INTO t1 VALUES (0x00000001);
+INSERT INTO t1 VALUES (0xff000001);
+INSERT INTO t1 VALUES (0xff000002);
+SELECT HEX(a), CAST(a AS INET4) FROM t1 ORDER BY a;
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1 ORDER BY a;
+DROP TABLE t1;
+
+
+--echo #
+--echo # INSERT..SELECT, same data types
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.1'),('0.0.0.2');
+CREATE TABLE t2 (a INET4);
+INSERT INTO t2 SELECT a FROM t1;
+SELECT * FROM t2;
+DROP TABLE t1,t2;
+
+
+--echo #
+--echo # Implicit CAST on INSERT..SELECT, text format
+--echo #
+
+CREATE TABLE t1 (a VARCHAR(64));
+INSERT INTO t1 VALUES ('garbage'),('0.0.0.0'),('0.0.0.1'),('255.0.0.1'),('255.0.0.2');
+
+CREATE TABLE t2 (a INET4);
+--error ER_TRUNCATED_WRONG_VALUE
+INSERT INTO t2 SELECT a FROM t1;
+SET sql_mode='';
+INSERT INTO t2 SELECT a FROM t1;
+SELECT * FROM t2 ORDER BY a;
+SET sql_mode=DEFAULT;
+DROP TABLE t2;
+
+CREATE TABLE t2 (a INET4 NOT NULL);
+--error ER_TRUNCATED_WRONG_VALUE
+INSERT INTO t2 SELECT a FROM t1;
+SET sql_mode='';
+INSERT INTO t2 SELECT a FROM t1;
+SELECT * FROM t2 ORDER BY a;
+SET sql_mode=DEFAULT;
+DROP TABLE t2;
+
+DROP TABLE t1;
+
+
+--echo #
+--echo # Implicit CAST on INSERT..SELECT, binary format
+--echo #
+
+CREATE TABLE t1 (a BINARY(4));
+INSERT INTO t1 VALUES (0x00000000);
+INSERT INTO t1 VALUES (0x00000001);
+INSERT INTO t1 VALUES (0xff000001);
+INSERT INTO t1 VALUES (0xff000002);
+CREATE TABLE t2 (a INET4);
+INSERT INTO t2 SELECT a FROM t1;
+SELECT a FROM t2 ORDER BY a;
+DROP TABLE t1,t2;
+
+
+--echo #
+--echo # CAST to other data types
+--echo #
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS DOUBLE);
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS FLOAT);
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS DECIMAL);
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS SIGNED);
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS UNSIGNED);
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS TIME);
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS DATE);
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS DATETIME);
+
+SELECT CAST(CAST('0.0.0.0' AS INET4) AS CHAR);
+CREATE TABLE t1 AS SELECT CAST(CAST('0.0.0.0' AS INET4) AS CHAR) AS a;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('255.0.0.255');
+CREATE TABLE t2 AS SELECT
+ CAST(a AS CHAR),
+ CAST(a AS CHAR(15)),
+ CAST(a AS CHAR(530)),
+ CAST(a AS CHAR(65535)),
+ CAST(a AS CHAR(66000)),
+ CAST(a AS CHAR(16777215)),
+ CAST(a AS CHAR(16777216))
+FROM t1;
+SHOW CREATE TABLE t2;
+--vertical_results
+SELECT * FROM t2;
+--horizontal_results
+DROP TABLE t2;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('255.0.0.255');
+CREATE TABLE t2 AS SELECT
+ CAST(a AS BINARY(4)) AS cb4,
+ CAST(a AS BINARY) AS cb,
+ CAST(a AS BINARY(16)) AS cb16,
+ CAST(a AS BINARY(32)) AS cb32,
+ CAST(a AS BINARY(530)) AS cb530,
+ CAST(a AS BINARY(65535)) AS cb65535,
+ CAST(a AS BINARY(66000)) AS cb66000,
+ CAST(a AS BINARY(16777215)) AS cb16777215,
+ CAST(a AS BINARY(16777216)) AS cb16777216
+FROM t1 LIMIT 0;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+CREATE TABLE t2 AS SELECT
+ CAST(a AS BINARY(4)) AS cb4,
+ CAST(a AS BINARY) AS cb,
+ CAST(a AS BINARY(16)) AS cb16,
+ CAST(a AS BINARY(32)) AS cb32,
+ CAST(a AS BINARY(530)) AS cb530,
+ CAST(a AS BINARY(65535)) AS cb65535
+FROM t1;
+SHOW CREATE TABLE t2;
+--vertical_results
+SELECT
+ HEX(cb4),
+ HEX(cb),
+ HEX(cb16),
+ HEX(cb32),
+ LENGTH(cb530),
+ LENGTH(cb65535)
+FROM t2;
+--horizontal_results
+DROP TABLE t2;
+DROP TABLE t1;
+
+--echo #
+--echo # Implicit conversion to other types in INSERT
+--echo #
+
+CREATE TABLE t1 (a INT);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+INSERT INTO t1 VALUES (CAST('0.0.0.0' AS INET4));
+DROP TABLE t1;
+
+CREATE TABLE t1 (a DOUBLE);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+INSERT INTO t1 VALUES (CAST('0.0.0.0' AS INET4));
+DROP TABLE t1;
+
+CREATE TABLE t1 (a DECIMAL(32,0));
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+INSERT INTO t1 VALUES (CAST('0.0.0.0' AS INET4));
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(64));
+INSERT INTO t1 VALUES (CAST('0.0.0.0' AS INET4));
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a TEXT);
+INSERT INTO t1 VALUES (CAST('0.0.0.0' AS INET4));
+SELECT * FROM t1;
+DROP TABLE t1;
+
+
+
+--echo #
+--echo # Boolean context
+--echo #
+
+SELECT
+ CAST('0.0.0.0' AS INET4) IS TRUE,
+ CAST('0.0.0.0' AS INET4) IS FALSE,
+ CAST('0.0.0.1' AS INET4) IS TRUE,
+ CAST('0.0.0.1' AS INET4) IS FALSE;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.1');
+SELECT a, a IS TRUE, a IS FALSE FROM t1 ORDER BY a;
+DROP TABLE t1;
+
+##
+## TODO: Error looks like a bug. This should return rows where a<>'0.0.0.0'.
+## The same problem is repeatable with GEOMETRY.
+##
+#CREATE TABLE t1 (a INET4);
+#INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.1'),('0.0.0.2');
+#--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+#SELECT * FROM t1 WHERE a;
+#DROP TABLE t1;
+
+
+--echo #
+--echo # GROUP BY
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.0');
+INSERT INTO t1 VALUES ('0.0.0.1'),('0.0.0.01'),('0.0.0.001');
+INSERT INTO t1 VALUES ('0.0.0.2'),('0.0.0.2'),('0.0.0.2'),('0.0.0.2');
+SELECT a, COUNT(*) FROM t1 GROUP BY a;
+DROP TABLE t1;
+
+--echo #
+--echo # Aggregate functions
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.0');
+INSERT INTO t1 VALUES ('0.0.0.1'),('0.0.0.01'),('0.0.0.001');
+INSERT INTO t1 VALUES ('0.0.0.2'),('0.0.0.2'),('0.0.0.2'),('0.0.0.2');
+SELECT MIN(a),MAX(a) FROM t1;
+
+CREATE TABLE t2 AS SELECT MIN(a), MAX(a) FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT AVG(a) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT AVG(DISTINCT a) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT SUM(a) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT SUM(DISTINCT a) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT STDDEV(a) FROM t1;
+SELECT GROUP_CONCAT(a ORDER BY a) FROM t1;
+SELECT a, GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a;
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-21765 Possibly inconsistent behavior of BIT_xx functions with INET4 field
+--echo #
+
+CREATE TABLE t1 (a INET4);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT BIT_AND(a) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT BIT_OR(a) FROM t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT BIT_XOR(a) FROM t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # Window functions
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.1'),('0.0.0.2'),('0.0.0.3'),('0.0.0.004');
+SELECT
+ a,
+ LAG(a) OVER (ORDER BY a),
+ LEAD(a) OVER (ORDER BY a)
+FROM t1 ORDER BY a;
+
+SELECT
+ a,
+ FIRST_VALUE(a) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING),
+ LAST_VALUE(a) OVER (ORDER BY a ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
+FROM t1 ORDER BY a;
+DROP TABLE t1;
+
+
+--echo #
+--echo # Prepared statements
+--echo #
+
+EXECUTE IMMEDIATE 'CREATE TABLE t1 AS SELECT ? AS a' USING CAST('0.0.0.0' AS INET4);
+SHOW CREATE TABLE t1;
+EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING '0.0.0.1';
+EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING CAST('0.0.0.2' AS INET4);
+EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING 0x00000003;
+EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING CAST(0x00000004 AS INET4);
+SELECT a FROM t1 ORDER BY a;
+EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING '0.0.0.1';
+EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING CAST('0.0.0.2' AS INET4);
+EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING 0x00000003;
+EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING CAST(0x00000004 AS INET4);
+DROP TABLE t1;
+
+
+--echo #
+--echo # Character set and collation aggregation
+--echo #
+
+CREATE TABLE t1 (a INET4);
+
+CREATE TABLE t2 AS SELECT
+ CONCAT(a) AS c1,
+ CONCAT(CAST('0.0.0.0' AS INET4)) AS c2
+FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+CREATE TABLE t2 AS SELECT
+ CONCAT(_utf8'1', a) AS c1,
+ CONCAT(_utf8'1', CAST('0.0.0.1' AS INET4)) AS c2,
+ CONCAT(_utf8'1', COALESCE(a)) AS c3
+FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+CREATE TABLE t2 AS SELECT
+ CONCAT(_latin1'1', a) AS c1,
+ CONCAT(_latin1'1', CAST('0.0.0.1' AS INET4)) AS c2,
+ CONCAT(_latin1'1', COALESCE(a)) AS c3
+FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+DROP TABLE t1;
+
+
+--echo #
+--echo # UNION
+--echo #
+
+CREATE TABLE t1 AS SELECT CAST('0.0.0.0' AS INET4) AS c UNION SELECT CAST('0.0.0.1' AS INET4);
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 AS SELECT CAST('0.0.0.0' AS INET4) AS c UNION SELECT '0.0.0.1';
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 AS SELECT '0.0.0.0' AS c UNION SELECT CAST('0.0.0.1' AS INET4);
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 AS SELECT CAST('0.0.0.0' AS INET4) AS c UNION SELECT 0x00000001;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+CREATE TABLE t1 AS SELECT CAST('0.0.0.0' AS INET4) AS c UNION SELECT 1;
+
+
+--echo #
+--echo # Unary operators
+--echo #
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT -CAST('0.0.0.0' AS INET4);
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT ABS(CAST('0.0.0.0' AS INET4));
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT ROUND(CAST('0.0.0.0' AS INET4));
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT CEILING(CAST('0.0.0.0' AS INET4));
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT FLOOR(CAST('0.0.0.0' AS INET4));
+
+
+--echo #
+--echo # Arithmetic operators
+--echo #
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT CAST('0.0.0.0' AS INET4) + 1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT CAST('0.0.0.0' AS INET4) - 1;
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT CAST('0.0.0.0' AS INET4) * 1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT CAST('0.0.0.0' AS INET4) / 1;
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT CAST('0.0.0.0' AS INET4) MOD 1;
+
+
+--echo #
+--echo # Misc
+--echo #
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT RAND(CAST('0.0.0.0' AS INET4));
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT FROM_UNIXTIME(CAST('0.0.0.0' AS INET4));
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT HOUR(CAST('0.0.0.0' AS INET4));
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT YEAR(CAST('0.0.0.0' AS INET4));
+
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT RELEASE_LOCK(CAST('0.0.0.0' AS INET4));
+
+# QQ
+#SELECT JSON_LENGTH(CAST('0.0.0.0' AS INET4));
+
+--echo #
+--echo # Virtual columns
+--echo #
+
+--error ER_GENERATED_COLUMN_FUNCTION_IS_NOT_ALLOWED
+CREATE TABLE t1 (
+ a INT,
+ b INET4 GENERATED ALWAYS AS (CAST(CONCAT(RAND(),a) AS INET4)), INDEX(b)
+);
+
+CREATE TABLE t1 (
+ a INT,
+ b INET4 GENERATED ALWAYS AS (CAST(CONCAT('0.0.0.',a) AS INET4)), INDEX(b)
+);
+INSERT INTO t1 (a) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15);
+SELECT * FROM t1;
+DROP TABLE t1;
+
+--echo #
+--echo # VIEW
+--echo #
+
+CREATE TABLE t1 (a INT DEFAULT 0);
+INSERT INTO t1 (a) VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15);
+SELECT * FROM t1 ORDER BY a;
+CREATE VIEW v1 AS SELECT (CAST(CONCAT('0.0.0.',a) AS INET4)) AS c FROM t1;
+SELECT * FROM v1 ORDER BY c;
+DROP VIEW v1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4 DEFAULT '0.0.0.0');
+CREATE VIEW v1 AS SELECT * FROM t1;
+SHOW CREATE VIEW v1;
+DESCRIBE v1;
+INSERT INTO v1 VALUES ('0.0.0.0'),('0.0.0.1'),('0.0.0.2');
+SELECT * FROM t1;
+DROP VIEW v1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4 DEFAULT CAST('0.0.0.0' AS INET4));
+CREATE VIEW v1 AS SELECT * FROM t1;
+SHOW CREATE VIEW v1;
+DESCRIBE v1;
+INSERT INTO v1 VALUES ('0.0.0.0'),('0.0.0.1'),('0.0.0.2');
+SELECT * FROM t1;
+DROP VIEW v1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # Subqueries
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.1'),('0.0.0.2');
+SELECT * FROM t1 WHERE a=(SELECT MIN(a) FROM t1) ORDER BY a;
+SELECT * FROM t1 WHERE a=(SELECT MAX(a) FROM t1) ORDER BY a;
+SELECT * FROM t1 WHERE a IN (SELECT a FROM t1 WHERE a>'0.0.0.0') ORDER BY a;
+DROP TABLE t1;
+
+--echo #
+--echo # Stored routines
+--echo #
+
+DELIMITER $$;
+CREATE PROCEDURE p1(a INET4)
+BEGIN
+ DECLARE b INET4 DEFAULT CONCAT('1', a);
+ SELECT a, b;
+END;
+$$
+DELIMITER ;$$
+CALL p1('0.0.0.1');
+CALL p1(CAST('0.0.0.2' AS INET4));
+DROP PROCEDURE p1;
+
+DELIMITER $$;
+CREATE FUNCTION f1(a INET4) RETURNS INET4
+BEGIN
+ RETURN CONCAT('1',a);
+END;
+$$
+DELIMITER ;$$
+SELECT f1('0.0.0.1');
+SELECT f1(CAST('0.0.0.1' AS INET4));
+DROP FUNCTION f1;
+
+--echo #
+--echo # Anchored data types in SP variables
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.1');
+DELIMITER $$;
+CREATE PROCEDURE p1()
+BEGIN
+ DECLARE va TYPE OF t1.a;
+ SELECT MAX(a) INTO va FROM t1;
+ SELECT va;
+END;
+$$
+DELIMITER ;$$
+CALL p1;
+DROP PROCEDURE p1;
+DROP TABLE t1;
+
+
+CREATE TABLE t1 (a INET4, b INET4);
+INSERT INTO t1 VALUES ('0.0.0.12', '0.0.0.111');
+DELIMITER $$;
+CREATE PROCEDURE p1()
+BEGIN
+ DECLARE va ROW TYPE OF t1;
+ SELECT MAX(a), MAX(b) INTO va FROM t1;
+ SELECT va.a, va.b;
+END;
+$$
+DELIMITER ;$$
+CALL p1;
+DROP PROCEDURE p1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # Optimizer: make_const_item_for_comparison
+--echo #
+
+CREATE TABLE t1 (id INT, a INET4);
+INSERT INTO t1 VALUES (1,'0.0.0.1'),(2,'0.0.0.2');
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=COALESCE(CAST('0.0.0.1' AS INET4)) AND id>0;
+DROP TABLE t1;
+
+--echo #
+--echo # Optimizer: equal field propagation
+--echo #
+
+CREATE TABLE t1 (id INT, a INET4);
+INSERT INTO t1 VALUES (1,'0.0.0.1'),(2,'0.0.0.2');
+EXPLAIN EXTENDED SELECT * FROM t1
+WHERE a=COALESCE(CAST('0.0.0.1' AS INET4))
+ AND LENGTH(CONCAT(a,RAND()))>1;
+EXPLAIN EXTENDED SELECT * FROM t1
+WHERE a=COALESCE(CAST('0.0.0.1' AS INET4))
+ AND LENGTH(a)>1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # Optimizer: equal expression propagation
+--echo #
+
+
+CREATE TABLE t1 (id INT, a INET4);
+INSERT INTO t1 VALUES (1,'0.0.0.1'),(2,'0.0.0.2');
+EXPLAIN EXTENDED SELECT * FROM t1
+WHERE COALESCE(a)='0.0.0.1' AND COALESCE(a)=CONCAT(a);
+DROP TABLE t1;
+
+--echo #
+--echo # Subquery materialization
+--echo #
+
+CREATE TABLE t1 (a INET4, b VARCHAR(32), KEY (a), KEY(b)) ;
+INSERT INTO t1 VALUES ('0.0.0.10','0.0.0.11'),('0.0.0.10','0.0.0.11');
+SET @@optimizer_switch='semijoin=off,materialization=on,in_to_exists=off,subquery_cache=off';
+EXPLAIN SELECT * FROM t1 WHERE a IN (SELECT a AS a_inner FROM t1 GROUP BY a_inner);
+EXPLAIN SELECT * FROM t1 WHERE b IN (SELECT a AS a_inner FROM t1 GROUP BY a_inner);
+SET @@optimizer_switch=DEFAULT;
+DROP TABLE t1;
+
+--echo #
+--echo # ALTER from INET4 to INET4
+--echo #
+
+CREATE TABLE t1 (a INET4, b INT);
+INSERT INTO t1 VALUES ('10.11.12.13', 1);
+ALTER TABLE t1 MODIFY b DECIMAL(10,2);
+SELECT * FROM t1;
+DROP TABLE t1;
+
+--echo #
+--echo # ALTER to character string data types
+--echo #
+
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS CHAR(15)) FROM t1;
+ALTER TABLE t1 MODIFY a CHAR(15);
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a VARCHAR(15);
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a TINYTEXT;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a TEXT;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a MEDIUMTEXT;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a LONGTEXT;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # ALTER from character string data types
+--echo #
+
+CREATE OR REPLACE TABLE t1 (a CHAR(64));
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a VARCHAR(64));
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a TINYTEXT);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a TEXT);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a MEDIUMTEXT);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a LONGTEXT);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS INET4) FROM t1;
+ALTER TABLE t1 MODIFY a INET4;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # ALTER to binary string data types
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a BINARY(4);
+SELECT HEX(a) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a BINARY(5);
+SELECT HEX(a) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+--error ER_DATA_TOO_LONG
+ALTER TABLE t1 MODIFY a BINARY(3);
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a TINYBLOB;
+SELECT HEX(a) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a BLOB;
+SELECT HEX(a) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a MEDIUMBLOB;
+SELECT HEX(a) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a LONGBLOB;
+SELECT HEX(a) FROM t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # ALTER from binary string data types
+--echo #
+
+CREATE TABLE t1 (a BINARY(4));
+INSERT INTO t1 VALUES (X'11121314');
+ALTER TABLE t1 MODIFY a INET4;
+SELECT a FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a BINARY(17));
+INSERT INTO t1 VALUES (X'1112131400');
+--error ER_TRUNCATED_WRONG_VALUE
+ALTER TABLE t1 MODIFY a INET4;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a BINARY(3));
+INSERT INTO t1 VALUES (X'111213');
+--error ER_TRUNCATED_WRONG_VALUE
+ALTER TABLE t1 MODIFY a INET4;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a TINYBLOB);
+INSERT INTO t1 VALUES (X'11121314');
+ALTER TABLE t1 MODIFY a INET4;
+SELECT a FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a BLOB);
+INSERT INTO t1 VALUES (X'11121314');
+ALTER TABLE t1 MODIFY a INET4;
+SELECT a FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a MEDIUMBLOB);
+INSERT INTO t1 VALUES (X'11121314');
+ALTER TABLE t1 MODIFY a INET4;
+SELECT a FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a BLOB);
+INSERT INTO t1 VALUES (X'11121314');
+ALTER TABLE t1 MODIFY a INET4;
+SELECT a FROM t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # SET from INET4 to INET4
+--echo #
+
+CREATE TABLE t1 (a INET4, b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+--echo #
+--echo # SET from INET4 to character string
+--echo #
+
+CREATE TABLE t1 (a INET4, b CHAR(15));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4, b VARCHAR(15));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4, b TEXT);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4, b ENUM('255.0.0.255'));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4, b SET('255.0.0.255'));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # SET from character string to INET4
+--echo #
+
+CREATE TABLE t1 (a CHAR(15), b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARCHAR(15), b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a TEXT, b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a ENUM('255.0.0.255'), b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a SET('255.0.0.255'), b INET4);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # SET from INET4 to binary
+--echo #
+
+CREATE TABLE t1 (a INET4, b BINARY(4));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT HEX(b) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4, b VARBINARY(4));
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT HEX(b) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4, b BLOB);
+INSERT INTO t1 VALUES ('255.0.0.255', NULL);
+UPDATE t1 SET b=a;
+SELECT HEX(b) FROM t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # SET from binary to INET4
+--echo #
+
+CREATE TABLE t1 (a BINARY(4), b INET4);
+INSERT INTO t1 VALUES (CONCAT(0xFF,REPEAT(0x00,2),0xFF), NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a VARBINARY(4), b INET4);
+INSERT INTO t1 VALUES (CONCAT(0xFF,REPEAT(0x00,2),0xFF), NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (a BLOB, b INET4);
+INSERT INTO t1 VALUES (CONCAT(0xFF,REPEAT(0x00,2),0xFF), NULL);
+UPDATE t1 SET b=a;
+SELECT b FROM t1;
+DROP TABLE t1;
+
+
+# QQ
+#--echo #
+#--echo # Limit clause parameter
+#--echo # TODO: this should fail.
+#--echo # The test for a valid data type should be moved
+#--echo # from parse time to fix_fields() time, and performed
+#--echo # for both Item_splocal and Item_param.
+#--echo #
+#
+#EXECUTE IMMEDIATE 'SELECT 1 FROM DUAL LIMIT ?' USING CAST('0.0.0.0' AS INET4);
+
+# QQ
+### TODO:
+### - Add hooks to run mysql_client_test with pluggable data types
+###
+### - This should fail with the "illegal data type" error:
+###SELECT CAST('0.0.0.0' AS INET4) DIV 1;
+###
+### - This should fail with the "illegal data type" error:
+### EXTRACT(MINUTE...)
+###
+
+
+--echo #
+--echo # MDEV-20785 Converting INET6 to CHAR(39) produces garbage without a warning
+--echo #
+
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT CAST(a AS CHAR(15)) FROM t1;
+ALTER TABLE t1 MODIFY a CHAR(15);
+SELECT * FROM t1;
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-20783 INET6 cannot be converted to BINARY(16) (requires clarification in documentation)
+--echo #
+
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+ALTER TABLE t1 MODIFY a BINARY(4);
+SELECT HEX(a) FROM t1;
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-20795 CAST(inet6 AS BINARY) returns wrong result
+--echo #
+
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('10.11.12.13');
+SELECT HEX(CAST(a AS BINARY)) FROM t1;
+SELECT HEX(CAST(a AS BINARY(4))) FROM t1;
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-20808 CAST from INET6 to FLOAT does not produce an error
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0');
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT CAST(a AS FLOAT) FROM t1;
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-20798 Conversion from INET6 to other types performed without errors or warnings
+--echo #
+
+CREATE TABLE t1 (a INET4, b INT);
+INSERT INTO t1 (a) VALUES ('0.0.0.0');
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+UPDATE t1 SET b=a;
+SELECT * FROM t1;
+DROP TABLE t1;
+
+SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30');
+CREATE TABLE t1 (a INET4, b TIMESTAMP);
+INSERT INTO t1 (a) VALUES ('0.0.0.0');
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+UPDATE t1 SET b=a;
+SELECT * FROM t1;
+DROP TABLE t1;
+SET timestamp=DEFAULT;
+
+CREATE OR REPLACE TABLE t1 (a INET4);
+INSERT INTO t1 (a) VALUES ('0.0.0.0');
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+ALTER TABLE t1 MODIFY a DATE;
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-20818 ER_CRASHED_ON_USAGE or Assertion `length <= column->length' failed in write_block_record on temporary table
+--echo #
+
+CREATE TABLE t1 (a INET4);
+--enable_metadata
+SELECT
+ CAST(a AS BINARY(0)),
+ CAST(a AS BINARY(1)),
+ CAST(a AS BINARY(16)),
+ CAST(a AS BINARY(255)),
+ CAST(a AS BINARY(256)),
+ CAST(a AS BINARY(512)),
+ CAST(a AS BINARY(513)),
+ CAST(a AS BINARY(65532)),
+ CAST(a AS BINARY(65533)),
+ CAST(a AS BINARY(65534)),
+ CAST(a AS BINARY(65535)),
+ CAST(a AS BINARY(65536)),
+ CAST(a AS BINARY(16777215)),
+ CAST(a AS BINARY(16777216))
+FROM t1;
+--disable_metadata
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-20826 Wrong result of MIN(inet6) with GROUP BY
+--echo #
+
+CREATE TABLE t1 (id INT, a INET4) ENGINE=MyISAM;
+INSERT INTO t1 VALUES (1, '255.0.0.0'),(1, '128.0.0.0');
+SELECT MIN(a), MAX(a) FROM t1 GROUP BY id;
+DROP TABLE t1;
+
+
+--echo #
+--echo # MDEV-20809 EXTRACT from INET4 value does not produce any warnings
+--echo #
+
+CREATE TABLE t1 (a INET4);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT EXTRACT(DAY FROM a) FROM t1;
+DROP TABLE t1;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPE_FOR_OPERATION
+SELECT EXTRACT(DAY FROM CAST('0.0.0.0' AS INET4));
+
+
+--echo #
+--echo # MDEV-22764 Crash with a stored aggregate function returning INET4
+--echo #
+
+DELIMITER $$;
+CREATE OR REPLACE AGGREGATE FUNCTION aggregate_min_inet4(x INET4) RETURNS INET4
+BEGIN
+ DECLARE res INET4 DEFAULT NULL;
+ DECLARE CONTINUE HANDLER FOR NOT FOUND
+ RETURN res;
+ LOOP
+ FETCH GROUP NEXT ROW;
+ IF (res IS NULL) OR (res > x) THEN
+ SET res= x;
+ END IF;
+ END LOOP;
+END;
+$$
+DELIMITER ;$$
+
+CREATE OR REPLACE TABLE t1 (name CHAR(30), val INET4);
+INSERT INTO t1 VALUES ('a', '0.0.0.5');
+INSERT INTO t1 VALUES ('a', '0.0.0.3');
+INSERT INTO t1 VALUES ('b', '0.0.0.1');
+INSERT INTO t1 VALUES ('b', '0.0.0.2');
+INSERT INTO t1 VALUES ('b', '0.0.0.5');
+SELECT name, aggregate_min_inet4(val) pc FROM t1 GROUP BY name;
+
+CREATE OR REPLACE TABLE t2 (name CHAR(30), val INET4);
+INSERT INTO t2 SELECT name, aggregate_min_inet4(val) pc FROM t1 GROUP BY name;
+SELECT * FROM t2;
+DROP TABLE t2;
+
+DROP TABLE t1;
+DROP FUNCTION aggregate_min_inet4;
+
+
+--echo #
+--echo # MDEV-20280 PERCENTILE_DISC() rejects temporal and string input
+--echo #
+
+CREATE TABLE t1 (name CHAR(30), star_rating INET4);
+INSERT INTO t1 VALUES ('Lord of the Ladybirds', '0.0.0.5');
+INSERT INTO t1 VALUES ('Lord of the Ladybirds', '0.0.0.3');
+INSERT INTO t1 VALUES ('Lady of the Flies', '0.0.0.1');
+INSERT INTO t1 VALUES ('Lady of the Flies', '0.0.0.2');
+INSERT INTO t1 VALUES ('Lady of the Flies', '0.0.0.5');
+SELECT name, PERCENTILE_DISC(0.5)
+ WITHIN GROUP (ORDER BY star_rating)
+ OVER (PARTITION BY name) AS pc FROM t1;
+SELECT name, PERCENTILE_DISC(0)
+ WITHIN GROUP (ORDER BY star_rating)
+ OVER (PARTITION BY name) AS pc FROM t1;
+SELECT name, PERCENTILE_DISC(1)
+ WITHIN GROUP (ORDER BY star_rating)
+ OVER (PARTITION BY name) AS pc FROM t1;
+DROP TABLE t1;
+
+
+--echo #
+--echo # MDEV-22758 Assertion `!item->null_value' failed in Type_handler_inet6::make_sort_key_part
+--echo #
+
+CREATE TABLE t1 (a VARCHAR(8) NOT NULL, b INET4 NOT NULL);
+INSERT INTO t1 VALUES ('foo','0.0.0.0'),('bar','1.0.0.1');
+SELECT * FROM t1 ORDER BY CASE WHEN a THEN b ELSE a END;
+DROP TABLE t1;
+
+CREATE OR REPLACE TABLE t1 (a VARCHAR(8) NOT NULL);
+INSERT INTO t1 VALUES ('foo'),('bar');
+SELECT * FROM t1 ORDER BY CAST(a AS INET4);
+DROP TABLE t1;
+
+CREATE TABLE t1 (a INET4 NOT NULL, b VARCHAR(32) NOT NULL);
+CREATE TABLE t2 AS SELECT CAST(a AS INET4) AS ca, CAST(b AS INET4) AS cb FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+CREATE TABLE t2 AS SELECT COALESCE(a,a), COALESCE(a,b) FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+CREATE TABLE t2 AS SELECT a AS ca,a AS cb FROM t1 UNION SELECT a,b FROM t1;
+SHOW CREATE TABLE t2;
+DROP TABLE t2;
+
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-22758 Assertion `!item->null_value' failed in Type_handler_inet6::make_sort_key_part
+--echo #
+
+CREATE TABLE t1 (c INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),(NULL);
+SELECT * FROM t1 ORDER BY IFNULL(c, 'foo');
+DROP TABLE t1;
+
+CREATE TABLE t1 (c INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),(NULL);
+
+# Expect a NULL column
+CREATE TABLE t2 AS SELECT IFNULL(c, 'foo') FROM t1;
+SHOW CREATE TABLE t2;
+SELECT * FROM t2;
+DROP TABLE t2;
+
+# Expect a NOT NULL column
+CREATE TABLE t2 AS SELECT IFNULL(c, '0.0.0.1') FROM t1;
+SHOW CREATE TABLE t2;
+SELECT * FROM t2;
+DROP TABLE t2;
+
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-26732 Assertion `0' failed in Item::val_native
+--echo #
+#
+# This tests Item_copy_fbt::val_native()
+SELECT CAST(CONCAT('0.0.0.0', REPEAT('',RAND())) AS INET4) AS f, var_pop('x') FROM dual HAVING f > '';
+SELECT CAST(CONCAT('0.0.0.0', REPEAT('',RAND())) AS INET4) AS f, var_pop(1) FROM dual HAVING f >= '0.0.0.0';
+
+# This tests Item_copy_fbt::save_in_field()
+CREATE TABLE t1(id INET4 NOT NULL PRIMARY KEY, dsc INET4);
+INSERT INTO t1 VALUES ('0.0.0.1', '1.0.0.1'),('0.0.0.3', '1.0.0.3'),('1.0.0.4', NULL);
+CREATE TABLE t2 SELECT COALESCE(t1.dsc), COUNT(*) FROM t1 GROUP BY t1.id;
+SELECT * FROM t2 ORDER BY 1,2;
+DROP TABLE t1, t2;
+
+--echo #
+--echo # MDEV-24619 Wrong result or Assertion `0' in Item::val_native / Type_handler_inet6::Item_val_native_with_conversion
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('0.0.0.0'),('0.0.0.0');
+SELECT IF(1, '0.0.0.0', a) AS f FROM t1 GROUP BY 'foo' HAVING f != '';
+SELECT IF(1, '0.0.0.0', a) AS f FROM t1 GROUP BY 'foo' HAVING f != '0.0.0.0';
+SELECT IF(1, '0.0.0.0', a) AS f FROM t1 GROUP BY 'foo' HAVING f != '0.0.0.1';
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_csv.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_csv.result
new file mode 100644
index 00000000000..bfade2b6207
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_csv.result
@@ -0,0 +1,54 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+SET default_storage_engine=CSV;
+CREATE TABLE t1 (a INET4 NOT NULL);
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` inet4 NOT NULL
+) ENGINE=CSV DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+FOR i IN 0..255
+DO
+INSERT INTO t1 VALUES (CONCAT('0.0.0.', i));
+END FOR
+$$
+SELECT * FROM t1 WHERE a='0.0.0.255';
+a
+0.0.0.255
+SELECT * FROM t1 WHERE a>='0.0.0.254' ORDER BY a;
+a
+0.0.0.254
+0.0.0.255
+SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','0.0.0.240') ORDER BY a;
+a
+0.0.0.128
+0.0.0.160
+0.0.0.240
+SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND '0.0.0.129' ORDER BY a;
+a
+0.0.0.128
+0.0.0.129
+SELECT * FROM t1 WHERE a=CAST('0.0.0.255' AS INET4);
+a
+0.0.0.255
+UPDATE t1 SET a=CONCAT('12', a) WHERE a LIKE '0.0.0.14_';
+SELECT * FROM t1 WHERE a LIKE '12%' ORDER BY a;
+a
+120.0.0.140
+120.0.0.141
+120.0.0.142
+120.0.0.143
+120.0.0.144
+120.0.0.145
+120.0.0.146
+120.0.0.147
+120.0.0.148
+120.0.0.149
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_csv.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_csv.test
new file mode 100644
index 00000000000..2bccf1c1928
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_csv.test
@@ -0,0 +1,41 @@
+--source include/have_csv.inc
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+SET default_storage_engine=CSV;
+
+CREATE TABLE t1 (a INET4 NOT NULL);
+SHOW CREATE TABLE t1;
+
+DELIMITER $$;
+FOR i IN 0..255
+DO
+ INSERT INTO t1 VALUES (CONCAT('0.0.0.', i));
+END FOR
+$$
+DELIMITER ;$$
+
+SELECT * FROM t1 WHERE a='0.0.0.255';
+
+SELECT * FROM t1 WHERE a>='0.0.0.254' ORDER BY a;
+
+SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','0.0.0.240') ORDER BY a;
+
+SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND '0.0.0.129' ORDER BY a;
+
+SELECT * FROM t1 WHERE a=CAST('0.0.0.255' AS INET4);
+
+UPDATE t1 SET a=CONCAT('12', a) WHERE a LIKE '0.0.0.14_';
+SELECT * FROM t1 WHERE a LIKE '12%' ORDER BY a;
+
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_engines.inc b/plugin/type_inet/mysql-test/type_inet/type_inet4_engines.inc
new file mode 100644
index 00000000000..62a5c80a920
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_engines.inc
@@ -0,0 +1,38 @@
+--echo #
+--echo # Range optimizer
+--echo #
+
+CREATE TABLE t1 (a INET4, INDEX(a));
+SHOW CREATE TABLE t1;
+
+DELIMITER $$;
+FOR i IN 0..255
+DO
+ INSERT INTO t1 VALUES (CONCAT('0.0.0.', i));
+END FOR
+$$
+DELIMITER ;$$
+SELECT * FROM t1 WHERE a='0.0.0.255';
+EXPLAIN SELECT * FROM t1 WHERE a='0.0.0.255';
+SELECT * FROM t1 WHERE a='garbage';
+EXPLAIN SELECT * FROM t1 WHERE a='garbage';
+
+SELECT * FROM t1 WHERE a>='0.0.0.254';
+EXPLAIN SELECT * FROM t1 WHERE a>='0.0.0.254';
+SELECT * FROM t1 WHERE a>='garbage';
+EXPLAIN SELECT * FROM t1 WHERE a>='garbage';
+
+SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','0.0.0.240');
+EXPLAIN SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','0.0.0.240');
+SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','garbage');
+EXPLAIN SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','garbage');
+
+SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND '0.0.0.129';
+EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND '0.0.0.129';
+SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND 'garbage';
+EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND 'garbage';
+
+SELECT * FROM t1 WHERE a=CAST('0.0.0.255' AS INET4);
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=CAST('0.0.0.255' AS INET4);
+
+DROP TABLE t1;
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_innodb.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_innodb.result
new file mode 100644
index 00000000000..536ceda6d18
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_innodb.result
@@ -0,0 +1,119 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+SET default_storage_engine=InnoDB;
+#
+# Range optimizer
+#
+CREATE TABLE t1 (a INET4, INDEX(a));
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` inet4 DEFAULT NULL,
+ KEY `a` (`a`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+FOR i IN 0..255
+DO
+INSERT INTO t1 VALUES (CONCAT('0.0.0.', i));
+END FOR
+$$
+SELECT * FROM t1 WHERE a='0.0.0.255';
+a
+0.0.0.255
+EXPLAIN SELECT * FROM t1 WHERE a='0.0.0.255';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref a a 5 const 1 Using where; Using index
+SELECT * FROM t1 WHERE a='garbage';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+EXPLAIN SELECT * FROM t1 WHERE a='garbage';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a>='0.0.0.254';
+a
+0.0.0.254
+0.0.0.255
+EXPLAIN SELECT * FROM t1 WHERE a>='0.0.0.254';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 2 Using where; Using index
+SELECT * FROM t1 WHERE a>='garbage';
+a
+EXPLAIN SELECT * FROM t1 WHERE a>='garbage';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','0.0.0.240');
+a
+0.0.0.128
+0.0.0.160
+0.0.0.240
+EXPLAIN SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','0.0.0.240');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 3 Using where; Using index
+SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','garbage');
+a
+0.0.0.128
+0.0.0.160
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+EXPLAIN SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','garbage');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 2 Using where; Using index
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND '0.0.0.129';
+a
+0.0.0.128
+0.0.0.129
+EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND '0.0.0.129';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 2 Using where; Using index
+SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND 'garbage';
+a
+EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND 'garbage';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+SELECT * FROM t1 WHERE a=CAST('0.0.0.255' AS INET4);
+a
+0.0.0.255
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=CAST('0.0.0.255' AS INET4);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ref a a 5 const 1 100.00 Using where; Using index
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = INET4'0.0.0.255'
+DROP TABLE t1;
+#
+# MDEV-26742 Assertion `field->type_handler() == this' failed in FixedBinTypeBundle<NATIVE_LEN, MAX_CHAR_LEN>::Type_handler_fbt::stored_field_cmp_to_item
+#
+CREATE TABLE t1 (pk inet4, c text) engine=myisam;
+INSERT INTO t1 VALUES ('0.0.0.0',1);
+CREATE TABLE t2 (d text, KEY (d)) engine=innodb ;
+Warnings:
+Note 1071 Specified key was too long; max key length is 3072 bytes
+INSERT INTO t2 VALUES (2);
+SELECT * FROM t2 JOIN t1 ON ( t1.pk > t2.d);
+d pk c
+Warnings:
+Warning 1292 Incorrect inet4 value: '2'
+UPDATE t2 JOIN t1 ON ( t1.pk > t2.d) SET t1.c = 1;
+ERROR 22007: Incorrect inet4 value: '2'
+SET sql_mode='';
+UPDATE t2 JOIN t1 ON ( t1.pk > t2.d) SET t1.c = 1;
+Warnings:
+Warning 1292 Incorrect inet4 value: '2'
+SET sql_mode=DEFAULT;
+SELECT * FROM t1;
+pk c
+0.0.0.0 1
+SELECT * FROM t2;
+d
+2
+DROP TABLE t1, t2;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_innodb.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_innodb.test
new file mode 100644
index 00000000000..6e5a1640c83
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_innodb.test
@@ -0,0 +1,36 @@
+--source include/have_innodb.inc
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+
+SET default_storage_engine=InnoDB;
+--source type_inet4_engines.inc
+
+--echo #
+--echo # MDEV-26742 Assertion `field->type_handler() == this' failed in FixedBinTypeBundle<NATIVE_LEN, MAX_CHAR_LEN>::Type_handler_fbt::stored_field_cmp_to_item
+--echo #
+
+CREATE TABLE t1 (pk inet4, c text) engine=myisam;
+INSERT INTO t1 VALUES ('0.0.0.0',1);
+CREATE TABLE t2 (d text, KEY (d)) engine=innodb ;
+INSERT INTO t2 VALUES (2);
+SELECT * FROM t2 JOIN t1 ON ( t1.pk > t2.d);
+--error ER_TRUNCATED_WRONG_VALUE
+UPDATE t2 JOIN t1 ON ( t1.pk > t2.d) SET t1.c = 1;
+SET sql_mode='';
+UPDATE t2 JOIN t1 ON ( t1.pk > t2.d) SET t1.c = 1;
+SET sql_mode=DEFAULT;
+SELECT * FROM t1;
+SELECT * FROM t2;
+DROP TABLE t1, t2;
+
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_memory.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_memory.result
new file mode 100644
index 00000000000..d48ab70cce8
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_memory.result
@@ -0,0 +1,159 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+SET default_storage_engine=MEMORY;
+#
+# Range optimizer
+#
+CREATE TABLE t1 (a INET4, INDEX(a));
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` inet4 DEFAULT NULL,
+ KEY `a` (`a`)
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+FOR i IN 0..255
+DO
+INSERT INTO t1 VALUES (CONCAT('0.0.0.', i));
+END FOR
+$$
+SELECT * FROM t1 WHERE a='0.0.0.255';
+a
+0.0.0.255
+EXPLAIN SELECT * FROM t1 WHERE a='0.0.0.255';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref a a 5 const 2 Using where
+SELECT * FROM t1 WHERE a='garbage';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+EXPLAIN SELECT * FROM t1 WHERE a='garbage';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a>='0.0.0.254';
+a
+0.0.0.254
+0.0.0.255
+EXPLAIN SELECT * FROM t1 WHERE a>='0.0.0.254';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL a NULL NULL NULL 256 Using where
+SELECT * FROM t1 WHERE a>='garbage';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+EXPLAIN SELECT * FROM t1 WHERE a>='garbage';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL a NULL NULL NULL 256 Using where
+SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','0.0.0.240');
+a
+0.0.0.128
+0.0.0.160
+0.0.0.240
+EXPLAIN SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','0.0.0.240');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 6 Using where
+SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','garbage');
+a
+0.0.0.128
+0.0.0.160
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+EXPLAIN SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','garbage');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 4 Using where
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND '0.0.0.129';
+a
+0.0.0.128
+0.0.0.129
+EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND '0.0.0.129';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL a NULL NULL NULL 256 Using where
+SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND 'garbage';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+Warning 1292 Incorrect inet4 value: 'garbage'
+EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND 'garbage';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL a NULL NULL NULL 256 Using where
+SELECT * FROM t1 WHERE a=CAST('0.0.0.255' AS INET4);
+a
+0.0.0.255
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=CAST('0.0.0.255' AS INET4);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ref a a 5 const 2 100.00 Using where
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = INET4'0.0.0.255'
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_memory.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_memory.test
new file mode 100644
index 00000000000..8b11f5d9f63
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_memory.test
@@ -0,0 +1,16 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+
+SET default_storage_engine=MEMORY;
+--source type_inet4_engines.inc
+
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_date.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_date.result
new file mode 100644
index 00000000000..13726b2d142
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_date.result
@@ -0,0 +1,353 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (target INET4 DEFAULT '99.99.99.99', source DATE DEFAULT '2001-01-01');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` inet4 DEFAULT '99.99.99.99',
+ `source` date DEFAULT '2001-01-01',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1292 Incorrect inet4 value: '2001-01-01' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 99.99.99.99 2001-01-01
+2 0.0.0.0 2001-01-01
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect inet4 value: '2001-01-01' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 99.99.99.99 2001-01-01
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target date
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src date DEFAULT NULL;
+DECLARE dst inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a inet4) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a inet4) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst inet4)
+BEGIN
+DECLARE src date DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'date' as 'inet4' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS inet4
+BEGIN
+DECLARE rc date DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src date DEFAULT NULL;
+DECLARE cur1 CURSOR(t inet4) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+CREATE TABLE t1 (target DATE DEFAULT '2001-01-01', source INET4 DEFAULT '99.99.99.99');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` date DEFAULT '2001-01-01',
+ `source` inet4 DEFAULT '99.99.99.99',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1265 Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 2001-01-01 99.99.99.99
+2 0000-00-00 99.99.99.99
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect date value: '99.99.99.99' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 2001-01-01 99.99.99.99
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target inet4
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'date' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE dst date DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a date) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a date) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst date)
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst date DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'inet4' as 'date' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS date
+BEGIN
+DECLARE rc inet4 DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE cur1 CURSOR(t date) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst date DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'date' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_date.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_date.test
new file mode 100644
index 00000000000..424c99f6c4d
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_date.test
@@ -0,0 +1,26 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+#
+# The DATE data type has loose control on the incoming data,
+# so values like '0.0.0.0' do not fail when get inserted to a DATE field
+# even though there is an obvious redundant part - the fourth number.
+# Using '99.99.99.99' to make sure the month part is out of the range
+# to guarantee the failure.
+
+CREATE TABLE t1 (target INET4 DEFAULT '99.99.99.99', source DATE DEFAULT '2001-01-01');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+CREATE TABLE t1 (target DATE DEFAULT '2001-01-01', source INET4 DEFAULT '99.99.99.99');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_datetime.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_datetime.result
new file mode 100644
index 00000000000..7c7194f6be7
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_datetime.result
@@ -0,0 +1,353 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (target INET4 DEFAULT '99.99.99.99', source DATETIME DEFAULT '2001-01-01 10:20:30');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` inet4 DEFAULT '99.99.99.99',
+ `source` datetime DEFAULT '2001-01-01 10:20:30',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1292 Incorrect inet4 value: '2001-01-01 10:20:30' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 99.99.99.99 2001-01-01 10:20:30
+2 0.0.0.0 2001-01-01 10:20:30
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect inet4 value: '2001-01-01 10:20:30' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 99.99.99.99 2001-01-01 10:20:30
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target datetime
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src datetime DEFAULT NULL;
+DECLARE dst inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a inet4) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a inet4) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst inet4)
+BEGIN
+DECLARE src datetime DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'datetime' as 'inet4' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS inet4
+BEGIN
+DECLARE rc datetime DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src datetime DEFAULT NULL;
+DECLARE cur1 CURSOR(t inet4) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+CREATE TABLE t1 (target DATETIME DEFAULT '2001-01-01 10:20:30', source INET4 DEFAULT '99.99.99.99');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` datetime DEFAULT '2001-01-01 10:20:30',
+ `source` inet4 DEFAULT '99.99.99.99',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1265 Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 2001-01-01 10:20:30 99.99.99.99
+2 0000-00-00 00:00:00 99.99.99.99
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect datetime value: '99.99.99.99' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 2001-01-01 10:20:30 99.99.99.99
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target inet4
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'datetime' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE dst datetime DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a datetime) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a datetime) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst datetime)
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst datetime DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'inet4' as 'datetime' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS datetime
+BEGIN
+DECLARE rc inet4 DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE cur1 CURSOR(t datetime) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst datetime DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'datetime' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_datetime.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_datetime.test
new file mode 100644
index 00000000000..06495e70fef
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_datetime.test
@@ -0,0 +1,25 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+#
+# The DATETIME data type has loose control on the incoming data,
+# so values like '0.0.0.0' do not fail when get inserted to a DATETIME field.
+# Using '99.99.99.99' to make sure the month part is out of the range
+# to guarantee the failure.
+
+CREATE TABLE t1 (target INET4 DEFAULT '99.99.99.99', source DATETIME DEFAULT '2001-01-01 10:20:30');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+CREATE TABLE t1 (target DATETIME DEFAULT '2001-01-01 10:20:30', source INET4 DEFAULT '99.99.99.99');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_decimal.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_decimal.result
new file mode 100644
index 00000000000..3b93c2fd9da
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_decimal.result
@@ -0,0 +1,353 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (target INET4 DEFAULT '0.0.0.0', source DECIMAL(32,0) DEFAULT 0);
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` inet4 DEFAULT '0.0.0.0',
+ `source` decimal(32,0) DEFAULT 0,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1292 Incorrect inet4 value: '0' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 0.0.0.0 0
+2 0.0.0.0 0
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect inet4 value: '0' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 0.0.0.0 0
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target decimal(32,0)
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src decimal(32,0) DEFAULT NULL;
+DECLARE dst inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a inet4) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a inet4) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst inet4)
+BEGIN
+DECLARE src decimal(32,0) DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'decimal' as 'inet4' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS inet4
+BEGIN
+DECLARE rc decimal(32,0) DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src decimal(32,0) DEFAULT NULL;
+DECLARE cur1 CURSOR(t inet4) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+CREATE TABLE t1 (target DECIMAL(32,0) DEFAULT 0, source INET4 DEFAULT '0.0.0.0');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` decimal(32,0) DEFAULT 0,
+ `source` inet4 DEFAULT '0.0.0.0',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1265 Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 0 0.0.0.0
+2 0 0.0.0.0
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 01000: Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 0 0.0.0.0
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target inet4
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'decimal' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE dst decimal(32,0) DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a decimal(32,0)) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a decimal(32,0)) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst decimal(32,0))
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst decimal(32,0) DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'inet4' as 'decimal' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS decimal(32,0)
+BEGIN
+DECLARE rc inet4 DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE cur1 CURSOR(t decimal(32,0)) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst decimal(32,0) DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'decimal' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_decimal.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_decimal.test
new file mode 100644
index 00000000000..bf158b8fff7
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_decimal.test
@@ -0,0 +1,19 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+CREATE TABLE t1 (target INET4 DEFAULT '0.0.0.0', source DECIMAL(32,0) DEFAULT 0);
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+CREATE TABLE t1 (target DECIMAL(32,0) DEFAULT 0, source INET4 DEFAULT '0.0.0.0');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_double.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_double.result
new file mode 100644
index 00000000000..0987bae1e12
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_double.result
@@ -0,0 +1,353 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (target INET4 DEFAULT '0.0.0.0', source DOUBLE DEFAULT 0);
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` inet4 DEFAULT '0.0.0.0',
+ `source` double DEFAULT 0,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1292 Incorrect inet4 value: '0' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 0.0.0.0 0
+2 0.0.0.0 0
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect inet4 value: '0' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 0.0.0.0 0
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target double
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src double DEFAULT NULL;
+DECLARE dst inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a inet4) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a inet4) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst inet4)
+BEGIN
+DECLARE src double DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'double' as 'inet4' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS inet4
+BEGIN
+DECLARE rc double DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src double DEFAULT NULL;
+DECLARE cur1 CURSOR(t inet4) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+CREATE TABLE t1 (target DOUBLE DEFAULT 0, source INET4 DEFAULT '0.0.0.0');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` double DEFAULT 0,
+ `source` inet4 DEFAULT '0.0.0.0',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1265 Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 0 0.0.0.0
+2 0 0.0.0.0
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 01000: Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 0 0.0.0.0
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target inet4
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'double' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE dst double DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a double) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a double) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst double)
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst double DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'inet4' as 'double' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS double
+BEGIN
+DECLARE rc inet4 DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE cur1 CURSOR(t double) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst double DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'double' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_double.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_double.test
new file mode 100644
index 00000000000..087d09bfa7e
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_double.test
@@ -0,0 +1,19 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+CREATE TABLE t1 (target INET4 DEFAULT '0.0.0.0', source DOUBLE DEFAULT 0);
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+CREATE TABLE t1 (target DOUBLE DEFAULT 0, source INET4 DEFAULT '0.0.0.0');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_int.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_int.result
new file mode 100644
index 00000000000..0a4fe99bdc6
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_int.result
@@ -0,0 +1,353 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (target INET4 DEFAULT '0.0.0.0', source INT DEFAULT 0);
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` inet4 DEFAULT '0.0.0.0',
+ `source` int(11) DEFAULT 0,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1292 Incorrect inet4 value: '0' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 0.0.0.0 0
+2 0.0.0.0 0
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect inet4 value: '0' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 0.0.0.0 0
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target int(11)
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src int(11) DEFAULT NULL;
+DECLARE dst inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a inet4) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a inet4) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst inet4)
+BEGIN
+DECLARE src int(11) DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'int' as 'inet4' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS inet4
+BEGIN
+DECLARE rc int(11) DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src int(11) DEFAULT NULL;
+DECLARE cur1 CURSOR(t inet4) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+CREATE TABLE t1 (target INT DEFAULT 0, source INET4 DEFAULT '0.0.0.0');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` int(11) DEFAULT 0,
+ `source` inet4 DEFAULT '0.0.0.0',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1265 Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 0 0.0.0.0
+2 0 0.0.0.0
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 01000: Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 0 0.0.0.0
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target inet4
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'int' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE dst int(11) DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a int(11)) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a int(11)) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst int(11))
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst int(11) DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'inet4' as 'int' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS int(11)
+BEGIN
+DECLARE rc inet4 DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE cur1 CURSOR(t int(11)) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst int(11) DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'int' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_int.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_int.test
new file mode 100644
index 00000000000..fb65eb70b31
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_int.test
@@ -0,0 +1,19 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+CREATE TABLE t1 (target INET4 DEFAULT '0.0.0.0', source INT DEFAULT 0);
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+CREATE TABLE t1 (target INT DEFAULT 0, source INET4 DEFAULT '0.0.0.0');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_time.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_time.result
new file mode 100644
index 00000000000..09aae4f0bd2
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_time.result
@@ -0,0 +1,353 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (target INET4 DEFAULT '99.99.99.99', source TIME DEFAULT '10:20:30');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` inet4 DEFAULT '99.99.99.99',
+ `source` time DEFAULT '10:20:30',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1292 Incorrect inet4 value: '10:20:30' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 99.99.99.99 10:20:30
+2 0.0.0.0 10:20:30
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect inet4 value: '10:20:30' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 99.99.99.99 10:20:30
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target time
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src time DEFAULT NULL;
+DECLARE dst inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a inet4) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a inet4) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst inet4)
+BEGIN
+DECLARE src time DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'time' as 'inet4' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS inet4
+BEGIN
+DECLARE rc time DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src time DEFAULT NULL;
+DECLARE cur1 CURSOR(t inet4) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+CREATE TABLE t1 (target TIME DEFAULT '10:20:30', source INET4 DEFAULT '99.99.99.99');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` time DEFAULT '10:20:30',
+ `source` inet4 DEFAULT '99.99.99.99',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1265 Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 10:20:30 99.99.99.99
+2 00:00:00 99.99.99.99
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect time value: '99.99.99.99' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 10:20:30 99.99.99.99
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target inet4
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'time' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE dst time DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a time) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a time) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst time)
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst time DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'inet4' as 'time' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS time
+BEGIN
+DECLARE rc inet4 DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE cur1 CURSOR(t time) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst time DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'time' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_time.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_time.test
new file mode 100644
index 00000000000..ae617550ec4
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_time.test
@@ -0,0 +1,26 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+#
+# The DATE data type has loose control on the incoming data,
+# so values like '0.0.0.0' do not fail when get inserted to a DATE field
+# even though there is an obvious redundant part - the fourth number.
+# Using '99.99.99.99' to make sure the month part is out of the range
+# to guarantee the failure.
+
+CREATE TABLE t1 (target INET4 DEFAULT '99.99.99.99', source TIME DEFAULT '10:20:30');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+CREATE TABLE t1 (target TIME DEFAULT '10:20:30', source INET4 DEFAULT '99.99.99.99');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_timestamp.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_timestamp.result
new file mode 100644
index 00000000000..56d2ced2c3f
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_timestamp.result
@@ -0,0 +1,353 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (target INET4 DEFAULT '99.99.99.99', source TIMESTAMP DEFAULT '2001-01-01 10:20:30');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` inet4 DEFAULT '99.99.99.99',
+ `source` timestamp NULL DEFAULT '2001-01-01 10:20:30',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1292 Incorrect inet4 value: '2001-01-01 10:20:30' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 99.99.99.99 2001-01-01 10:20:30
+2 0.0.0.0 2001-01-01 10:20:30
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect inet4 value: '2001-01-01 10:20:30' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 99.99.99.99 2001-01-01 10:20:30
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target timestamp
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src timestamp DEFAULT NULL;
+DECLARE dst inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a inet4) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a inet4) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst inet4)
+BEGIN
+DECLARE src timestamp DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'timestamp' as 'inet4' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS inet4
+BEGIN
+DECLARE rc timestamp DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src timestamp DEFAULT NULL;
+DECLARE cur1 CURSOR(t inet4) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+CREATE TABLE t1 (target TIMESTAMP DEFAULT '2001-01-01 10:20:30', source INET4 DEFAULT '99.99.99.99');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` timestamp NULL DEFAULT '2001-01-01 10:20:30',
+ `source` inet4 DEFAULT '99.99.99.99',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1265 Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 2001-01-01 10:20:30 99.99.99.99
+2 0000-00-00 00:00:00 99.99.99.99
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect datetime value: '99.99.99.99' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 2001-01-01 10:20:30 99.99.99.99
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target inet4
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'timestamp' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE dst timestamp DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a timestamp) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a timestamp) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst timestamp)
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst timestamp DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'inet4' as 'timestamp' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS timestamp
+BEGIN
+DECLARE rc inet4 DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE cur1 CURSOR(t timestamp) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst timestamp DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'timestamp' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_timestamp.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_timestamp.test
new file mode 100644
index 00000000000..a689d2facc5
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_timestamp.test
@@ -0,0 +1,25 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+#
+# The DATETIME data type has loose control on the incoming data,
+# so values like '0.0.0.0' do not fail when get inserted to a DATETIME field.
+# Using '99.99.99.99' to make sure the month part is out of the range
+# to guarantee the failure.
+
+CREATE TABLE t1 (target INET4 DEFAULT '99.99.99.99', source TIMESTAMP DEFAULT '2001-01-01 10:20:30');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+CREATE TABLE t1 (target TIMESTAMP DEFAULT '2001-01-01 10:20:30', source INET4 DEFAULT '99.99.99.99');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_year.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_year.result
new file mode 100644
index 00000000000..b47e7e2383a
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_year.result
@@ -0,0 +1,353 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (target INET4 DEFAULT '0.0.0.0', source YEAR DEFAULT 0);
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` inet4 DEFAULT '0.0.0.0',
+ `source` year(4) DEFAULT 0000,
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1292 Incorrect inet4 value: '0' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 0.0.0.0 0000
+2 0.0.0.0 0000
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 22007: Incorrect inet4 value: '0' for column `test`.`t3`.`target` at row 2
+SELECT * FROM v3;
+id target source
+1 0.0.0.0 0000
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target year(4)
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src year(4) DEFAULT NULL;
+DECLARE dst inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a inet4) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a inet4) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst inet4)
+BEGIN
+DECLARE src year(4) DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'year' as 'inet4' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS inet4
+BEGIN
+DECLARE rc year(4) DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src year(4) DEFAULT NULL;
+DECLARE cur1 CURSOR(t inet4) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst inet4 DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+CREATE TABLE t1 (target YEAR DEFAULT 0, source INET4 DEFAULT '0.0.0.0');
+# Start of type_store_assignment_incompatible.inc
+SET @sql_mode_save= @@sql_mode;
+SET @source_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='source'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @target_type= (SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
+WHERE COLUMN_NAME='target'
+ AND TABLE_NAME='t1'
+ AND TABLE_SCHEMA='test');
+SET @ignore= CASE WHEN @ignore IS NULL OR @ignore = '' THEN ''
+ WHEN @ignore NOT LIKE ' %' THEN CONCAT(' ',@ignore)
+ELSE @ignore
+END;
+CREATE TABLE t2 LIKE t1;
+ALTER TABLE t2 ADD id INT NOT NULL PRIMARY KEY FIRST;
+INSERT INTO t2 VALUES (1,DEFAULT,DEFAULT);
+SHOW CREATE TABLE t2;
+Table Create Table
+t2 CREATE TABLE `t2` (
+ `id` int(11) NOT NULL,
+ `target` year(4) DEFAULT 0000,
+ `source` inet4 DEFAULT '0.0.0.0',
+ PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 VALUES
+(1,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+SET sql_mode='';
+CREATE TABLE t3 LIKE t2;
+ALTER TABLE t3 ENGINE=MyISAM;
+EXECUTE IMMEDIATE
+CONCAT('CREATE VIEW v3 AS SELECT id,',
+IF(@target_type='geometry','AsText(target)','target'), ' AS target,',
+IF(@source_type='geometry','AsText(source)','source'), ' AS source ',
+' FROM t3');
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+Warnings:
+Warning 1265 Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 0000 0.0.0.0
+2 2000 0.0.0.0
+TRUNCATE TABLE t3;
+SET sql_mode=STRICT_ALL_TABLES;
+INSERT INTO t3 VALUES
+(1,
+(SELECT target FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1)),
+(2,
+(SELECT source FROM t2 ORDER BY id LIMIT 1),
+(SELECT source FROM t2 ORDER BY id LIMIT 1));
+ERROR 01000: Data truncated for column 'target' at row 2
+SELECT * FROM v3;
+id target source
+1 0000 0.0.0.0
+TRUNCATE TABLE t3;
+SET sql_mode=@sql_mode_save;
+DROP TABLE t3;
+DROP VIEW v3;
+CREATE TABLE t3 LIKE t2;
+INSERT INTO t3 SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT id,source,source FROM t2;
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) VALUES (1,DEFAULT,DEFAULT) ON DUPLICATE KEY UPDATE target=source;
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `test`.`t3`.`target`
+INSERT INTO t3 (id,target,source) SELECT 1,DEFAULT(t2.target),DEFAULT(t2.source) FROM t2 ON DUPLICATE KEY UPDATE t3.target=t2.source;
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `test`.`t3`.`target`
+UPDATE t3 SET target=source;
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `test`.`t3`.`target`
+UPDATE t2, t3 SET t3.target=t2.source WHERE t2.id=t3.id;
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `test`.`t3`.`target`
+SET @alter=CONCAT('ALTER', @ignore, ' TABLE t3 MODIFY target ', @source_type);
+SELECT @alter;
+@alter
+ALTER TABLE t3 MODIFY target inet4
+EXECUTE IMMEDIATE @alter;
+ERROR HY000: Cannot cast 'year' as 'inet4' in assignment of `test`.`t3`.`target`
+DROP TABLE t3;
+DROP TABLE t2;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE dst year(4) DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CALL p1;
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `dst`
+DROP PROCEDURE p1;
+CREATE FUNCTION f1(a year(4)) RETURNS INT RETURN NULL;;
+SELECT f1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `a`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1(a year(4)) BEGIN END;;
+CALL p1((SELECT source FROM t1 ORDER BY source LIMIT 1));
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `a`
+DROP PROCEDURE p1;
+CREATE PROCEDURE p1(OUT dst year(4))
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+SET dst=src;
+END;
+$$
+CREATE PROCEDURE p2()
+BEGIN
+DECLARE dst year(4) DEFAULT NULL;
+CALL p1(dst);
+END;
+$$
+CALL p2();
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `dst`
+SHOW WARNINGS;
+Level Code Message
+Error 4078 Cannot cast 'inet4' as 'year' in assignment of `dst`
+Note 4094 At line 4 in test.p1
+Note 4094 At line 4 in test.p2
+DROP PROCEDURE p2;
+DROP PROCEDURE p1;
+CREATE FUNCTION f1() RETURNS year(4)
+BEGIN
+DECLARE rc inet4 DEFAULT NULL;
+RETURN rc;
+END;
+$$
+SELECT f1();
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `f1()`
+DROP FUNCTION f1;
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE src inet4 DEFAULT NULL;
+DECLARE cur1 CURSOR(t year(4)) FOR SELECT * FROM t1 WHERE target=t;
+OPEN cur1(src);
+CLOSE cur1;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `t`
+DROP PROCEDURE p1;
+CREATE TABLE t2 LIKE t1;
+INSERT INTO t2 VALUES ();
+CREATE PROCEDURE p1()
+BEGIN
+DECLARE dst year(4) DEFAULT NULL;
+DECLARE cur2 CURSOR FOR SELECT source FROM t2 ORDER BY source LIMIT 1;
+OPEN cur2;
+FETCH cur2 INTO dst;
+CLOSE cur2;
+END;
+$$
+CALL p1();
+ERROR HY000: Cannot cast 'inet4' as 'year' in assignment of `dst`
+DROP PROCEDURE p1;
+DROP TABLE t2;
+# End of type_store_assignment_incompatible.inc
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_year.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_year.test
new file mode 100644
index 00000000000..34d6c1362ed
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mix_year.test
@@ -0,0 +1,19 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+CREATE TABLE t1 (target INET4 DEFAULT '0.0.0.0', source YEAR DEFAULT 0);
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+CREATE TABLE t1 (target YEAR DEFAULT 0, source INET4 DEFAULT '0.0.0.0');
+--source include/type_mix_incompatible.inc
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_myisam.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_myisam.result
new file mode 100644
index 00000000000..d4291e6f8f8
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_myisam.result
@@ -0,0 +1,111 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+SET default_storage_engine=MyISAM;
+#
+# Range optimizer
+#
+CREATE TABLE t1 (a INET4, INDEX(a));
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` inet4 DEFAULT NULL,
+ KEY `a` (`a`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
+FOR i IN 0..255
+DO
+INSERT INTO t1 VALUES (CONCAT('0.0.0.', i));
+END FOR
+$$
+SELECT * FROM t1 WHERE a='0.0.0.255';
+a
+0.0.0.255
+EXPLAIN SELECT * FROM t1 WHERE a='0.0.0.255';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ref a a 5 const 1 Using where; Using index
+SELECT * FROM t1 WHERE a='garbage';
+a
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+EXPLAIN SELECT * FROM t1 WHERE a='garbage';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a>='0.0.0.254';
+a
+0.0.0.254
+0.0.0.255
+EXPLAIN SELECT * FROM t1 WHERE a>='0.0.0.254';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 2 Using where; Using index
+SELECT * FROM t1 WHERE a>='garbage';
+a
+EXPLAIN SELECT * FROM t1 WHERE a>='garbage';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','0.0.0.240');
+a
+0.0.0.128
+0.0.0.160
+0.0.0.240
+EXPLAIN SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','0.0.0.240');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 3 Using where; Using index
+SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','garbage');
+a
+0.0.0.128
+0.0.0.160
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+EXPLAIN SELECT * FROM t1 WHERE a IN ('0.0.0.128','0.0.0.160','garbage');
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 2 Using where; Using index
+Warnings:
+Warning 1292 Incorrect inet4 value: 'garbage'
+SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND '0.0.0.129';
+a
+0.0.0.128
+0.0.0.129
+EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND '0.0.0.129';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range a a 5 NULL 2 Using where; Using index
+SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND 'garbage';
+a
+EXPLAIN SELECT * FROM t1 WHERE a BETWEEN '0.0.0.128' AND 'garbage';
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
+SELECT * FROM t1 WHERE a=CAST('0.0.0.255' AS INET4);
+a
+0.0.0.255
+EXPLAIN EXTENDED SELECT * FROM t1 WHERE a=CAST('0.0.0.255' AS INET4);
+id select_type table type possible_keys key key_len ref rows filtered Extra
+1 SIMPLE t1 ref a a 5 const 1 100.00 Using where; Using index
+Warnings:
+Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = INET4'0.0.0.255'
+DROP TABLE t1;
+#
+# MDEV-26742 Assertion `field->type_handler() == this' failed in FixedBinTypeBundle<NATIVE_LEN, MAX_CHAR_LEN>::Type_handler_fbt::stored_field_cmp_to_item
+#
+CREATE TABLE t1 (c varchar(64), key(c)) engine=myisam;
+INSERT INTO t1 VALUES ('0.0.0.1'),('0.0.0.1'),('0.0.0.2');
+SELECT * FROM t1 WHERE c>CAST('0.0.0.1' AS INET4);
+c
+0.0.0.2
+EXPLAIN SELECT * FROM t1 WHERE c>CAST('0.0.0.1' AS INET4);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index c c 67 NULL 3 Using where; Using index
+SELECT * FROM t1 WHERE c=CAST('0.0.0.1' AS INET4);
+c
+0.0.0.1
+0.0.0.1
+EXPLAIN SELECT * FROM t1 WHERE c=CAST('0.0.0.1' AS INET4);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index c c 67 NULL 3 Using where; Using index
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_myisam.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_myisam.test
new file mode 100644
index 00000000000..a877d992646
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_myisam.test
@@ -0,0 +1,28 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+
+SET default_storage_engine=MyISAM;
+--source type_inet4_engines.inc
+
+--echo #
+--echo # MDEV-26742 Assertion `field->type_handler() == this' failed in FixedBinTypeBundle<NATIVE_LEN, MAX_CHAR_LEN>::Type_handler_fbt::stored_field_cmp_to_item
+--echo #
+
+CREATE TABLE t1 (c varchar(64), key(c)) engine=myisam;
+INSERT INTO t1 VALUES ('0.0.0.1'),('0.0.0.1'),('0.0.0.2');
+SELECT * FROM t1 WHERE c>CAST('0.0.0.1' AS INET4);
+EXPLAIN SELECT * FROM t1 WHERE c>CAST('0.0.0.1' AS INET4);
+SELECT * FROM t1 WHERE c=CAST('0.0.0.1' AS INET4);
+EXPLAIN SELECT * FROM t1 WHERE c=CAST('0.0.0.1' AS INET4);
+DROP TABLE t1;
+
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mysql.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_mysql.result
new file mode 100644
index 00000000000..c7f586fef96
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mysql.result
@@ -0,0 +1,51 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (a INET4);
+Field 1: `a`
+Org_field: `a`
+Catalog: `def`
+Database: `test`
+Table: `t1`
+Org_table: `t1`
+Type: STRING (type=inet4)
+Collation: latin1_swedish_ci (8)
+Length: 15
+Max_length: 0
+Decimals: 0
+Flags: UNSIGNED BINARY
+
+Field 2: `b`
+Org_field: ``
+Catalog: `def`
+Database: ``
+Table: ``
+Org_table: ``
+Type: STRING (type=inet4)
+Collation: latin1_swedish_ci (8)
+Length: 15
+Max_length: 0
+Decimals: 0
+Flags: NOT_NULL UNSIGNED
+
+Field 3: `c`
+Org_field: ``
+Catalog: `def`
+Database: ``
+Table: ``
+Org_table: ``
+Type: STRING (type=inet4)
+Collation: latin1_swedish_ci (8)
+Length: 15
+Max_length: 0
+Decimals: 0
+Flags: UNSIGNED
+
+
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_mysql.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_mysql.test
new file mode 100644
index 00000000000..0e0d6f7dac9
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_mysql.test
@@ -0,0 +1,18 @@
+-- source include/have_working_dns.inc
+-- source include/not_embedded.inc
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+CREATE TABLE t1 (a INET4);
+--exec $MYSQL -t test --column-type-info -e "SELECT a, CAST('0.0.0.0' AS INET4) AS b, COALESCE(a) AS c FROM t1" 2>&1
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_oracle.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_oracle.result
new file mode 100644
index 00000000000..7495a26755b
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_oracle.result
@@ -0,0 +1,29 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-20913 sql_mode=ORACLE: INET6 does not work as a routine parameter type and return type
+#
+SET sql_mode=ORACLE;
+CREATE OR REPLACE FUNCTION f1() RETURN INET4 AS
+BEGIN
+RETURN '255.255.255.255';
+END;
+$$
+SELECT f1();
+f1()
+255.255.255.255
+DROP FUNCTION f1;
+SET sql_mode=ORACLE;
+CREATE OR REPLACE FUNCTION f1(a INET4) RETURN INT AS
+BEGIN
+RETURN LENGTH(a);
+END;
+$$
+SELECT f1('000.000.000.000');
+f1('000.000.000.000')
+7
+DROP FUNCTION f1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_oracle.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_oracle.test
new file mode 100644
index 00000000000..3ff2fe0fcc6
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_oracle.test
@@ -0,0 +1,35 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-20913 sql_mode=ORACLE: INET6 does not work as a routine parameter type and return type
+--echo #
+
+SET sql_mode=ORACLE;
+DELIMITER $$;
+CREATE OR REPLACE FUNCTION f1() RETURN INET4 AS
+BEGIN
+ RETURN '255.255.255.255';
+END;
+$$
+DELIMITER ;$$
+SELECT f1();
+DROP FUNCTION f1;
+
+
+SET sql_mode=ORACLE;
+DELIMITER $$;
+CREATE OR REPLACE FUNCTION f1(a INET4) RETURN INT AS
+BEGIN
+ RETURN LENGTH(a);
+END;
+$$
+DELIMITER ;$$
+SELECT f1('000.000.000.000');
+DROP FUNCTION f1;
+
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_partition.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_partition.result
new file mode 100644
index 00000000000..5cb6c011c13
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_partition.result
@@ -0,0 +1,36 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+# MDEV-20831 Table partitioned by LIST/RANGE COLUMNS(inet6) can be created, but not inserted into
+#
+SET NAMES utf8;
+CREATE TABLE t1 (a INET4)
+PARTITION BY LIST COLUMNS(a)
+(PARTITION p00 VALUES IN (10));
+ERROR HY000: Partition column values of incorrect type
+CREATE TABLE t1 (a INET4)
+PARTITION BY LIST COLUMNS(a)
+(PARTITION p00 VALUES IN (TIME'10:20:30'));
+ERROR HY000: Partition column values of incorrect type
+CREATE TABLE t1 (a INET4)
+PARTITION BY LIST COLUMNS(a)
+(PARTITION p00 VALUES IN ('€'));
+ERROR 22007: Incorrect inet4 value: '€'
+CREATE TABLE t1 (a INET4)
+PARTITION BY LIST COLUMNS(a)
+(PARTITION p00 VALUES IN ('0.0.0.0'),
+PARTITION pFF VALUES IN (0xFFFFFFFF));
+INSERT INTO t1 VALUES ('0.0.0.0');
+INSERT INTO t1 VALUES ('255.255.255.255');
+SELECT * FROM t1 PARTITION (p00);
+a
+0.0.0.0
+SELECT * FROM t1 PARTITION (pFF);
+a
+255.255.255.255
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_partition.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_partition.test
new file mode 100644
index 00000000000..6ca97c4740f
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_partition.test
@@ -0,0 +1,41 @@
+--source include/have_partition.inc
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo # MDEV-20831 Table partitioned by LIST/RANGE COLUMNS(inet6) can be created, but not inserted into
+--echo #
+
+SET NAMES utf8;
+
+--error ER_WRONG_TYPE_COLUMN_VALUE_ERROR
+CREATE TABLE t1 (a INET4)
+ PARTITION BY LIST COLUMNS(a)
+ (PARTITION p00 VALUES IN (10));
+
+--error ER_WRONG_TYPE_COLUMN_VALUE_ERROR
+CREATE TABLE t1 (a INET4)
+ PARTITION BY LIST COLUMNS(a)
+ (PARTITION p00 VALUES IN (TIME'10:20:30'));
+
+--error ER_TRUNCATED_WRONG_VALUE
+CREATE TABLE t1 (a INET4)
+ PARTITION BY LIST COLUMNS(a)
+ (PARTITION p00 VALUES IN ('€'));
+
+CREATE TABLE t1 (a INET4)
+ PARTITION BY LIST COLUMNS(a)
+ (PARTITION p00 VALUES IN ('0.0.0.0'),
+ PARTITION pFF VALUES IN (0xFFFFFFFF));
+INSERT INTO t1 VALUES ('0.0.0.0');
+INSERT INTO t1 VALUES ('255.255.255.255');
+SELECT * FROM t1 PARTITION (p00);
+SELECT * FROM t1 PARTITION (pFF);
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_plugin.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_plugin.result
new file mode 100644
index 00000000000..7d36d8355ce
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_plugin.result
@@ -0,0 +1,31 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+SELECT
+PLUGIN_NAME,
+PLUGIN_VERSION,
+PLUGIN_STATUS,
+PLUGIN_TYPE,
+PLUGIN_AUTHOR,
+PLUGIN_DESCRIPTION,
+PLUGIN_LICENSE,
+PLUGIN_MATURITY,
+PLUGIN_AUTH_VERSION
+FROM INFORMATION_SCHEMA.PLUGINS
+WHERE PLUGIN_TYPE='DATA TYPE'
+ AND PLUGIN_NAME='inet4';
+PLUGIN_NAME inet4
+PLUGIN_VERSION 1.0
+PLUGIN_STATUS ACTIVE
+PLUGIN_TYPE DATA TYPE
+PLUGIN_AUTHOR MariaDB Corporation
+PLUGIN_DESCRIPTION Data type INET4
+PLUGIN_LICENSE GPL
+PLUGIN_MATURITY Alpha
+PLUGIN_AUTH_VERSION 1.0
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_plugin.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_plugin.test
new file mode 100644
index 00000000000..20875fc916e
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_plugin.test
@@ -0,0 +1,27 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+--vertical_results
+SELECT
+ PLUGIN_NAME,
+ PLUGIN_VERSION,
+ PLUGIN_STATUS,
+ PLUGIN_TYPE,
+ PLUGIN_AUTHOR,
+ PLUGIN_DESCRIPTION,
+ PLUGIN_LICENSE,
+ PLUGIN_MATURITY,
+ PLUGIN_AUTH_VERSION
+FROM INFORMATION_SCHEMA.PLUGINS
+ WHERE PLUGIN_TYPE='DATA TYPE'
+ AND PLUGIN_NAME='inet4';
+--horizontal_results
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_stat_tables.result b/plugin/type_inet/mysql-test/type_inet/type_inet4_stat_tables.result
new file mode 100644
index 00000000000..5a0afb686c1
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_stat_tables.result
@@ -0,0 +1,66 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+# MDEV-20800 Server crashes in Field_inet6::store_warning upon updating table statistics
+#
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('1.0.0.1'),('2.0.0.2');
+ANALYZE TABLE t1 PERSISTENT FOR ALL;
+Table Op Msg_type Msg_text
+test.t1 analyze status Engine-independent statistics collected
+test.t1 analyze status OK
+SELECT db_name, table_name, column_name,
+min_value, max_value,
+nulls_ratio, avg_frequency,
+hist_size, hist_type, decode_histogram(hist_type,histogram)
+FROM mysql.column_stats
+WHERE db_name='test' AND table_name='t1';
+db_name test
+table_name t1
+column_name a
+min_value 1.0.0.1
+max_value 2.0.0.2
+nulls_ratio 0.0000
+avg_frequency 1.0000
+hist_size 2
+hist_type JSON_HB
+decode_histogram(hist_type,histogram) {
+ "target_histogram_size": 254,
+ "collected_at": "REPLACED",
+ "collected_by": "REPLACED",
+ "histogram_hb": [
+ {
+ "start": "1.0.0.1",
+ "size": 0.5,
+ "ndv": 1
+ },
+ {
+ "start": "2.0.0.2",
+ "end": "2.0.0.2",
+ "size": 0.5,
+ "ndv": 1
+ }
+ ]
+}
+INSERT INTO t1 VALUES ('3.0.0.3');
+DROP TABLE t1;
+#
+# MDEV-23287 The INET4 data type
+# MDEV-22509: Server crashes in Field_inet6::store_inet6_null_with_warn / Field::maybe_null
+#
+CREATE TABLE t1 (a INT, b INET4 NOT NULL);
+INSERT INTO t1 VALUES (1,'0.0.0.0'),(2,'0.0.0.0');
+ANALYZE TABLE t1 PERSISTENT FOR ALL;
+Table Op Msg_type Msg_text
+test.t1 analyze status Engine-independent statistics collected
+test.t1 analyze status OK
+SELECT t1.a from t1;
+a
+1
+2
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet4_stat_tables.test b/plugin/type_inet/mysql-test/type_inet/type_inet4_stat_tables.test
new file mode 100644
index 00000000000..ea01a6f0735
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet4_stat_tables.test
@@ -0,0 +1,40 @@
+--source include/have_stat_tables.inc
+
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo # MDEV-20800 Server crashes in Field_inet6::store_warning upon updating table statistics
+--echo #
+
+CREATE TABLE t1 (a INET4);
+INSERT INTO t1 VALUES ('1.0.0.1'),('2.0.0.2');
+ANALYZE TABLE t1 PERSISTENT FOR ALL;
+--vertical_results
+--source include/histogram_replaces.inc
+SELECT db_name, table_name, column_name,
+ min_value, max_value,
+ nulls_ratio, avg_frequency,
+ hist_size, hist_type, decode_histogram(hist_type,histogram)
+FROM mysql.column_stats
+WHERE db_name='test' AND table_name='t1';
+--horizontal_results
+INSERT INTO t1 VALUES ('3.0.0.3');
+DROP TABLE t1;
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo # MDEV-22509: Server crashes in Field_inet6::store_inet6_null_with_warn / Field::maybe_null
+--echo #
+
+CREATE TABLE t1 (a INT, b INET4 NOT NULL);
+INSERT INTO t1 VALUES (1,'0.0.0.0'),(2,'0.0.0.0');
+ANALYZE TABLE t1 PERSISTENT FOR ALL;
+SELECT t1.a from t1;
+DROP TABLE t1;
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet6.result b/plugin/type_inet/mysql-test/type_inet/type_inet6.result
index 838a7ee49d3..8d52e85cb91 100644
--- a/plugin/type_inet/mysql-test/type_inet/type_inet6.result
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet6.result
@@ -1928,7 +1928,7 @@ a b
:: NULL
DROP TABLE t1;
SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30');
-CREATE TABLE t1 (a INET6, b TIMESTAMP);
+CREATE TABLE t1 (a INET6, b TIMESTAMP NOT NULL DEFAULT NOW() ON UPDATE NOW());
INSERT INTO t1 (a) VALUES ('::');
UPDATE t1 SET b=a;
ERROR HY000: Cannot cast 'inet6' as 'timestamp' in assignment of `test`.`t1`.`b`
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet6.test b/plugin/type_inet/mysql-test/type_inet/type_inet6.test
index 857a08e7cd1..97370c37ea0 100644
--- a/plugin/type_inet/mysql-test/type_inet/type_inet6.test
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet6.test
@@ -1411,7 +1411,7 @@ SELECT * FROM t1;
DROP TABLE t1;
SET timestamp=UNIX_TIMESTAMP('2001-01-01 10:20:30');
-CREATE TABLE t1 (a INET6, b TIMESTAMP);
+CREATE TABLE t1 (a INET6, b TIMESTAMP NOT NULL DEFAULT NOW() ON UPDATE NOW());
INSERT INTO t1 (a) VALUES ('::');
--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
UPDATE t1 SET b=a;
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet6_mix_inet4.result b/plugin/type_inet/mysql-test/type_inet/type_inet6_mix_inet4.result
new file mode 100644
index 00000000000..0910f2d85e6
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet6_mix_inet4.result
@@ -0,0 +1,19 @@
+#
+# Start of 10.10 tests
+#
+#
+# MDEV-23287 The INET4 data type
+#
+CREATE TABLE t1 (i4 INET4, i6 INET6);
+SELECT * FROM t1 WHERE i4=i6;
+ERROR HY000: Illegal parameter data types inet4 and inet6 for operation '='
+SELECT COALESCE(i4,i6) FROM t1 WHERE i4=i6;
+ERROR HY000: Illegal parameter data types inet4 and inet6 for operation 'coalesce'
+SELECT LEAST(i4,i6) FROM t1 WHERE i4=i6;
+ERROR HY000: Illegal parameter data types inet4 and inet6 for operation 'least'
+SELECT i4 FROM t1 UNION ALL SELECT i6 FROM t1;
+ERROR HY000: Illegal parameter data types inet4 and inet6 for operation 'UNION'
+DROP TABLE t1;
+#
+# End of 10.10 tests
+#
diff --git a/plugin/type_inet/mysql-test/type_inet/type_inet6_mix_inet4.test b/plugin/type_inet/mysql-test/type_inet/type_inet6_mix_inet4.test
new file mode 100644
index 00000000000..ac35b95befd
--- /dev/null
+++ b/plugin/type_inet/mysql-test/type_inet/type_inet6_mix_inet4.test
@@ -0,0 +1,26 @@
+--echo #
+--echo # Start of 10.10 tests
+--echo #
+
+--echo #
+--echo # MDEV-23287 The INET4 data type
+--echo #
+
+# Mixing INET6 and INET4 is not implemented yet
+
+CREATE TABLE t1 (i4 INET4, i6 INET6);
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT * FROM t1 WHERE i4=i6;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT COALESCE(i4,i6) FROM t1 WHERE i4=i6;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT LEAST(i4,i6) FROM t1 WHERE i4=i6;
+--error ER_ILLEGAL_PARAMETER_DATA_TYPES2_FOR_OPERATION
+SELECT i4 FROM t1 UNION ALL SELECT i6 FROM t1;
+
+DROP TABLE t1;
+
+
+--echo #
+--echo # End of 10.10 tests
+--echo #
diff --git a/plugin/type_inet/plugin.cc b/plugin/type_inet/plugin.cc
index 0b57e2bec1f..9eb8de1050a 100644
--- a/plugin/type_inet/plugin.cc
+++ b/plugin/type_inet/plugin.cc
@@ -21,6 +21,13 @@
#include <mysql/plugin_data_type.h>
#include <mysql/plugin_function.h>
+static struct st_mariadb_data_type plugin_descriptor_type_inet4=
+{
+ MariaDB_DATA_TYPE_INTERFACE_VERSION,
+ Inet4Bundle::type_handler_fbt()
+};
+
+
static struct st_mariadb_data_type plugin_descriptor_type_inet6=
{
MariaDB_DATA_TYPE_INTERFACE_VERSION,
@@ -171,6 +178,21 @@ static Plugin_function
maria_declare_plugin(type_inet)
{
MariaDB_DATA_TYPE_PLUGIN, // the plugin type (see include/mysql/plugin.h)
+ &plugin_descriptor_type_inet4,// pointer to type-specific plugin descriptor
+ "inet4", // plugin name
+ "MariaDB Corporation", // plugin author
+ "Data type INET4", // the plugin description
+ PLUGIN_LICENSE_GPL, // the plugin license (see include/mysql/plugin.h)
+ 0, // Pointer to plugin initialization function
+ 0, // Pointer to plugin deinitialization function
+ 0x0100, // Numeric version 0xAABB means AA.BB version
+ NULL, // Status variables
+ NULL, // System variables
+ "1.0", // String version representation
+ MariaDB_PLUGIN_MATURITY_ALPHA // Maturity(see include/mysql/plugin.h)*/
+},
+{
+ MariaDB_DATA_TYPE_PLUGIN, // the plugin type (see include/mysql/plugin.h)
&plugin_descriptor_type_inet6,// pointer to type-specific plugin descriptor
"inet6", // plugin name
"MariaDB Corporation", // plugin author
diff --git a/plugin/type_inet/sql_type_inet.cc b/plugin/type_inet/sql_type_inet.cc
index b8d2ef706a9..3d499620780 100644
--- a/plugin/type_inet/sql_type_inet.cc
+++ b/plugin/type_inet/sql_type_inet.cc
@@ -44,7 +44,7 @@ static const char HEX_DIGITS[]= "0123456789abcdef";
IPv4-part differently on different platforms.
*/
-bool Inet4::ascii_to_ipv4(const char *str, size_t str_length)
+bool Inet4::ascii_to_fbt(const char *str, size_t str_length)
{
if (str_length < 7)
{
@@ -259,8 +259,9 @@ bool Inet6::ascii_to_fbt(const char *str, size_t str_length)
return true;
}
- Inet4_null tmp(group_start_ptr, (size_t) (str_end - group_start_ptr),
- &my_charset_latin1);
+ Inet4Bundle::Fbt_null tmp(group_start_ptr,
+ (size_t) (str_end - group_start_ptr),
+ &my_charset_latin1);
if (tmp.is_null())
{
DBUG_PRINT("error", ("ascii_to_ipv6(%.*s): invalid IPv6 address: "
@@ -268,7 +269,7 @@ bool Inet6::ascii_to_fbt(const char *str, size_t str_length)
return true;
}
- tmp.to_binary(dst, IN_ADDR_SIZE);
+ tmp.to_record(dst, IN_ADDR_SIZE);
dst += IN_ADDR_SIZE;
chars_in_group= 0;
@@ -483,7 +484,7 @@ size_t Inet6::to_string(char *dst, size_t dstsize) const
// the string (dst). Now it's time to dump IPv4-part.
return (size_t) (p - dst) +
- Inet4_null((const char *) (ipv6_bytes + 12), 4).
+ Inet4((const char *) (ipv6_bytes + 12), 4).
to_string(p, dstsize_available);
}
else
@@ -512,3 +513,9 @@ const Name &Inet6::default_value()
static Name def(STRING_WITH_LEN("::"));
return def;
}
+
+const Name &Inet4::default_value()
+{
+ static Name def(STRING_WITH_LEN("0.0.0.0"));
+ return def;
+}
diff --git a/plugin/type_inet/sql_type_inet.h b/plugin/type_inet/sql_type_inet.h
index b0560f1ffe0..3ea06f6600c 100644
--- a/plugin/type_inet/sql_type_inet.h
+++ b/plugin/type_inet/sql_type_inet.h
@@ -48,94 +48,16 @@ typedef FixedBinTypeBundle<Inet6> Inet6Bundle;
/***********************************************************************/
-class Inet4
+class Inet4: public FixedBinTypeStorage<IN_ADDR_SIZE, IN_ADDR_MAX_CHAR_LENGTH>
{
- char m_buffer[IN_ADDR_SIZE];
-protected:
- bool ascii_to_ipv4(const char *str, size_t length);
- bool character_string_to_ipv4(const char *str, size_t str_length,
- CHARSET_INFO *cs)
- {
- if (cs->state & MY_CS_NONASCII)
- {
- char tmp[IN_ADDR_MAX_CHAR_LENGTH];
- String_copier copier;
- uint length= copier.well_formed_copy(&my_charset_latin1, tmp, sizeof(tmp),
- cs, str, str_length);
- return ascii_to_ipv4(tmp, length);
- }
- return ascii_to_ipv4(str, str_length);
- }
- bool binary_to_ipv4(const char *str, size_t length)
- {
- if (length != sizeof(m_buffer))
- return true;
- memcpy(m_buffer, str, length);
- return false;
- }
- // Non-initializing constructor
- Inet4() { }
public:
- void to_binary(char *dst, size_t dstsize) const
- {
- DBUG_ASSERT(dstsize >= sizeof(m_buffer));
- memcpy(dst, m_buffer, sizeof(m_buffer));
- }
- bool to_binary(String *to) const
- {
- return to->copy(m_buffer, sizeof(m_buffer), &my_charset_bin);
- }
+ using FixedBinTypeStorage::FixedBinTypeStorage;
+ bool ascii_to_fbt(const char *str, size_t str_length);
size_t to_string(char *dst, size_t dstsize) const;
- bool to_string(String *to) const
- {
- to->set_charset(&my_charset_latin1);
- if (to->alloc(INET_ADDRSTRLEN))
- return true;
- to->length((uint32) to_string((char*) to->ptr(), INET_ADDRSTRLEN));
- return false;
- }
+ static const Name &default_value();
};
+typedef FixedBinTypeBundle<Inet4> Inet4Bundle;
-class Inet4_null: public Inet4, public Null_flag
-{
-public:
- // Initialize from a text representation
- Inet4_null(const char *str, size_t length, CHARSET_INFO *cs)
- :Null_flag(character_string_to_ipv4(str, length, cs))
- { }
- Inet4_null(const String &str)
- :Inet4_null(str.ptr(), str.length(), str.charset())
- { }
- // Initialize from a binary representation
- Inet4_null(const char *str, size_t length)
- :Null_flag(binary_to_ipv4(str, length))
- { }
- Inet4_null(const Binary_string &str)
- :Inet4_null(str.ptr(), str.length())
- { }
-public:
- const Inet4& to_inet4() const
- {
- DBUG_ASSERT(!is_null());
- return *this;
- }
- void to_binary(char *dst, size_t dstsize) const
- {
- to_inet4().to_binary(dst, dstsize);
- }
- bool to_binary(String *to) const
- {
- return to_inet4().to_binary(to);
- }
- size_t to_string(char *dst, size_t dstsize) const
- {
- return to_inet4().to_string(dst, dstsize);
- }
- bool to_string(String *to) const
- {
- return to_inet4().to_string(to);
- }
-};
#endif /* SQL_TYPE_INET_H */
diff --git a/scripts/mysql_system_tables.sql b/scripts/mysql_system_tables.sql
index fd2f1c95dda..0c33e40cf57 100644
--- a/scripts/mysql_system_tables.sql
+++ b/scripts/mysql_system_tables.sql
@@ -147,7 +147,7 @@ CREATE TABLE IF NOT EXISTS time_zone_transition_type ( Time_zone_id int unsign
CREATE TABLE IF NOT EXISTS time_zone_leap_second ( Transition_time bigint signed NOT NULL, Correction int signed NOT NULL, PRIMARY KEY /*TranTime*/ (Transition_time) ) engine=Aria transactional=1 CHARACTER SET utf8 comment='Leap seconds information for time zones';
-CREATE TABLE IF NOT EXISTS proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE','PACKAGE','PACKAGE BODY') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum( 'CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA') DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob NOT NULL, returns longblob NOT NULL, body longblob NOT NULL, definer varchar(384) collate utf8_bin DEFAULT '' NOT NULL, created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'IGNORE_BAD_TABLE_OPTIONS', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', 'PAD_CHAR_TO_FULL_LENGTH', 'EMPTY_STRING_IS_NULL', 'SIMULTANEOUS_ASSIGNMENT', 'TIME_ROUND_FRACTIONAL') DEFAULT '' NOT NULL, comment text collate utf8_bin NOT NULL, character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, aggregate enum('NONE', 'GROUP') DEFAULT 'NONE' NOT NULL, PRIMARY KEY (db,name,type)) engine=Aria transactional=1 character set utf8 comment='Stored Procedures';
+CREATE TABLE IF NOT EXISTS proc (db char(64) collate utf8_bin DEFAULT '' NOT NULL, name char(64) DEFAULT '' NOT NULL, type enum('FUNCTION','PROCEDURE','PACKAGE','PACKAGE BODY') NOT NULL, specific_name char(64) DEFAULT '' NOT NULL, language enum('SQL') DEFAULT 'SQL' NOT NULL, sql_data_access enum( 'CONTAINS_SQL', 'NO_SQL', 'READS_SQL_DATA', 'MODIFIES_SQL_DATA') DEFAULT 'CONTAINS_SQL' NOT NULL, is_deterministic enum('YES','NO') DEFAULT 'NO' NOT NULL, security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL, param_list blob NOT NULL, returns longblob NOT NULL, body longblob NOT NULL, definer varchar(384) collate utf8_bin DEFAULT '' NOT NULL, created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', sql_mode set( 'REAL_AS_FLOAT', 'PIPES_AS_CONCAT', 'ANSI_QUOTES', 'IGNORE_SPACE', 'IGNORE_BAD_TABLE_OPTIONS', 'ONLY_FULL_GROUP_BY', 'NO_UNSIGNED_SUBTRACTION', 'NO_DIR_IN_CREATE', 'POSTGRESQL', 'ORACLE', 'MSSQL', 'DB2', 'MAXDB', 'NO_KEY_OPTIONS', 'NO_TABLE_OPTIONS', 'NO_FIELD_OPTIONS', 'MYSQL323', 'MYSQL40', 'ANSI', 'NO_AUTO_VALUE_ON_ZERO', 'NO_BACKSLASH_ESCAPES', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'NO_ZERO_IN_DATE', 'NO_ZERO_DATE', 'INVALID_DATES', 'ERROR_FOR_DIVISION_BY_ZERO', 'TRADITIONAL', 'NO_AUTO_CREATE_USER', 'HIGH_NOT_PRECEDENCE', 'NO_ENGINE_SUBSTITUTION', 'PAD_CHAR_TO_FULL_LENGTH', 'EMPTY_STRING_IS_NULL', 'SIMULTANEOUS_ASSIGNMENT', 'TIME_ROUND_FRACTIONAL') DEFAULT '' NOT NULL, comment text collate utf8_bin NOT NULL, character_set_client char(32) collate utf8_bin, collation_connection char(64) collate utf8_bin, db_collation char(64) collate utf8_bin, body_utf8 longblob, aggregate enum('NONE', 'GROUP') DEFAULT 'NONE' NOT NULL, PRIMARY KEY (db,name,type)) engine=Aria transactional=1 character set utf8 comment='Stored Procedures';
CREATE TABLE IF NOT EXISTS procs_priv ( Host char(255) binary DEFAULT '' NOT NULL, Db char(64) binary DEFAULT '' NOT NULL, User char(128) binary DEFAULT '' NOT NULL, Routine_name char(64) COLLATE utf8_general_ci DEFAULT '' NOT NULL, Routine_type enum('FUNCTION','PROCEDURE','PACKAGE','PACKAGE BODY') NOT NULL, Grantor varchar(384) DEFAULT '' NOT NULL, Proc_priv set('Execute','Alter Routine','Grant') COLLATE utf8_general_ci DEFAULT '' NOT NULL, Timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (Host,Db,User,Routine_name,Routine_type), KEY Grantor (Grantor) ) engine=Aria transactional=1 CHARACTER SET utf8 COLLATE utf8_bin comment='Procedure privileges';
@@ -168,7 +168,7 @@ PREPARE stmt FROM @str;
EXECUTE stmt;
DROP PREPARE stmt;
-CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', name char(64) CHARACTER SET utf8 NOT NULL default '', body longblob NOT NULL, definer varchar(384) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', execute_at DATETIME default NULL, interval_value int(11) default NULL, interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') default NULL, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00', last_executed DATETIME default NULL, starts DATETIME default NULL, ends DATETIME default NULL, status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED', on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP', sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL') DEFAULT '' NOT NULL, comment char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', originator INTEGER UNSIGNED NOT NULL, time_zone char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', character_set_client char(32) collate utf8_bin, collation_connection char(32) collate utf8_bin, db_collation char(32) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db, name) ) engine=Aria transactional=1 DEFAULT CHARSET=utf8 COMMENT 'Events';
+CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', name char(64) CHARACTER SET utf8 NOT NULL default '', body longblob NOT NULL, definer varchar(384) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', execute_at DATETIME default NULL, interval_value int(11) default NULL, interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') default NULL, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00', last_executed DATETIME default NULL, starts DATETIME default NULL, ends DATETIME default NULL, status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED', on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP', sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL') DEFAULT '' NOT NULL, comment char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL default '', originator INTEGER UNSIGNED NOT NULL, time_zone char(64) CHARACTER SET latin1 NOT NULL DEFAULT 'SYSTEM', character_set_client char(32) collate utf8_bin, collation_connection char(64) collate utf8_bin, db_collation char(64) collate utf8_bin, body_utf8 longblob, PRIMARY KEY (db, name) ) engine=Aria transactional=1 DEFAULT CHARSET=utf8 COMMENT 'Events';
SET @create_innodb_table_stats="CREATE TABLE IF NOT EXISTS innodb_table_stats (
database_name VARCHAR(64) NOT NULL,
diff --git a/scripts/mysql_system_tables_fix.sql b/scripts/mysql_system_tables_fix.sql
index e29afc2ff07..0381927d70f 100644
--- a/scripts/mysql_system_tables_fix.sql
+++ b/scripts/mysql_system_tables_fix.sql
@@ -515,10 +515,10 @@ UPDATE proc SET character_set_client = @@character_set_client
WHERE character_set_client IS NULL;
ALTER TABLE proc ADD collation_connection
- char(32) collate utf8_bin DEFAULT NULL
+ char(64) collate utf8_bin DEFAULT NULL
AFTER character_set_client;
ALTER TABLE proc MODIFY collation_connection
- char(32) collate utf8_bin DEFAULT NULL;
+ char(64) collate utf8_bin DEFAULT NULL;
SELECT CASE WHEN COUNT(*) > 0 THEN
CONCAT ("WARNING: NULL values of the 'collation_connection' column ('mysql.proc' table) have been updated with a default value (", @@collation_connection, "). Please verify if necessary.")
@@ -530,10 +530,10 @@ UPDATE proc SET collation_connection = @@collation_connection
WHERE collation_connection IS NULL;
ALTER TABLE proc ADD db_collation
- char(32) collate utf8_bin DEFAULT NULL
+ char(64) collate utf8_bin DEFAULT NULL
AFTER collation_connection;
ALTER TABLE proc MODIFY db_collation
- char(32) collate utf8_bin DEFAULT NULL;
+ char(64) collate utf8_bin DEFAULT NULL;
SELECT CASE WHEN COUNT(*) > 0 THEN
CONCAT ("WARNING: NULL values of the 'db_collation' column ('mysql.proc' table) have been updated with default values. Please verify if necessary.")
@@ -639,16 +639,16 @@ ALTER TABLE event MODIFY character_set_client
char(32) collate utf8_bin DEFAULT NULL;
ALTER TABLE event ADD collation_connection
- char(32) collate utf8_bin DEFAULT NULL
+ char(64) collate utf8_bin DEFAULT NULL
AFTER character_set_client;
ALTER TABLE event MODIFY collation_connection
- char(32) collate utf8_bin DEFAULT NULL;
+ char(64) collate utf8_bin DEFAULT NULL;
ALTER TABLE event ADD db_collation
- char(32) collate utf8_bin DEFAULT NULL
+ char(64) collate utf8_bin DEFAULT NULL
AFTER collation_connection;
ALTER TABLE event MODIFY db_collation
- char(32) collate utf8_bin DEFAULT NULL;
+ char(64) collate utf8_bin DEFAULT NULL;
ALTER TABLE event ADD body_utf8 longblob DEFAULT NULL
AFTER db_collation;
@@ -708,7 +708,7 @@ ALTER TABLE user ADD plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL AF
ALTER TABLE user CHANGE auth_string authentication_string TEXT NOT NULL;
ALTER TABLE user ADD password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER authentication_string;
-ALTER TABLE user ADD password_last_changed timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL after password_expired;
+ALTER TABLE user ADD password_last_changed timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP after password_expired;
ALTER TABLE user ADD password_lifetime smallint unsigned DEFAULT NULL after password_last_changed;
ALTER TABLE user ADD account_locked enum('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL after password_lifetime;
ALTER TABLE user ADD is_role enum('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL AFTER account_locked;
@@ -730,7 +730,7 @@ ALTER TABLE user MODIFY plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL
-- used by MariaDB. MariaDB-10.4 will use these in the creation of mysql.global_priv.
-- password_last_changed has a DEFAULT/ON UPDATE of CURRENT_TIMESTAMP to keep track of
-- time until 10.4 added.
- MODIFY IF EXISTS password_last_changed timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER max_statement_time,
+ MODIFY IF EXISTS password_last_changed timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER max_statement_time,
MODIFY IF EXISTS password_lifetime smallint unsigned DEFAULT NULL AFTER password_last_changed,
MODIFY IF EXISTS account_locked enum('N', 'Y') CHARACTER SET utf8 DEFAULT 'N' NOT NULL after password_lifetime;
diff --git a/scripts/sys_schema/tables/sys_config.sql b/scripts/sys_schema/tables/sys_config.sql
index f887d050875..37d0a183edc 100644
--- a/scripts/sys_schema/tables/sys_config.sql
+++ b/scripts/sys_schema/tables/sys_config.sql
@@ -22,7 +22,7 @@
CREATE TABLE IF NOT EXISTS sys_config (
variable VARCHAR(128) PRIMARY KEY,
value VARCHAR(128),
- set_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ set_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
set_by VARCHAR(128)
) ENGINE = Aria;
diff --git a/sql-common/client.c b/sql-common/client.c
index d2c6778e167..916abdea190 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -4089,10 +4089,10 @@ int STDCALL mysql_set_character_set(MYSQL *mysql, const char *cs_name)
if (mysql->options.charset_dir)
charsets_dir= mysql->options.charset_dir;
- if (strlen(cs_name) < MY_CS_NAME_SIZE &&
+ if (strlen(cs_name) < MY_CS_CHARACTER_SET_NAME_SIZE &&
(cs= get_charset_by_csname(cs_name, MY_CS_PRIMARY, MYF(MY_UTF8_IS_UTF8MB3))))
{
- char buff[MY_CS_NAME_SIZE + 10];
+ char buff[MY_CS_CHARACTER_SET_NAME_SIZE + 10];
charsets_dir= save_csdir;
/* Skip execution of "SET NAMES" for pre-4.1 servers */
if (mysql_get_server_version(mysql) < 40100)
diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt
index 208086d6930..b9186845212 100644
--- a/sql/CMakeLists.txt
+++ b/sql/CMakeLists.txt
@@ -23,6 +23,7 @@ IF(WITH_WSREP AND NOT EMBEDDED_LIBRARY)
wsrep_storage_service.cc
wsrep_server_state.cc
wsrep_status.cc
+ wsrep_allowlist_service.cc
wsrep_utils.cc
wsrep_xid.cc
wsrep_check_opts.cc
diff --git a/sql/event_db_repository.cc b/sql/event_db_repository.cc
index cf27e9b7326..9e31ccb3338 100644
--- a/sql/event_db_repository.cc
+++ b/sql/event_db_repository.cc
@@ -150,12 +150,12 @@ const TABLE_FIELD_TYPE event_table_fields[ET_FIELD_COUNT] =
},
{
{ STRING_WITH_LEN("collation_connection") },
- { STRING_WITH_LEN("char(32)") },
+ { STRING_WITH_LEN("char(") },
{ STRING_WITH_LEN("utf8mb3") }
},
{
{ STRING_WITH_LEN("db_collation") },
- { STRING_WITH_LEN("char(32)") },
+ { STRING_WITH_LEN("char(") },
{ STRING_WITH_LEN("utf8mb3") }
},
{
diff --git a/sql/events.cc b/sql/events.cc
index f06068e84e8..6ecdf975178 100644
--- a/sql/events.cc
+++ b/sql/events.cc
@@ -721,15 +721,16 @@ send_show_create_event(THD *thd, Event_timed *et, Protocol *protocol)
field_list.push_back(new (mem_root)
Item_empty_string(thd, "character_set_client",
- MY_CS_NAME_SIZE), mem_root);
+ MY_CS_CHARACTER_SET_NAME_SIZE),
+ mem_root);
field_list.push_back(new (mem_root)
Item_empty_string(thd, "collation_connection",
- MY_CS_NAME_SIZE), mem_root);
+ MY_CS_COLLATION_NAME_SIZE), mem_root);
field_list.push_back(new (mem_root)
Item_empty_string(thd, "Database Collation",
- MY_CS_NAME_SIZE), mem_root);
+ MY_CS_COLLATION_NAME_SIZE), mem_root);
if (protocol->send_result_set_metadata(&field_list,
Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF))
diff --git a/sql/item_create.cc b/sql/item_create.cc
index 7caa0123faf..53acc7946be 100644
--- a/sql/item_create.cc
+++ b/sql/item_create.cc
@@ -1873,6 +1873,19 @@ protected:
};
+class Create_func_random_bytes : public Create_func_arg1
+{
+public:
+ virtual Item *create_1_arg(THD *thd, Item *arg1);
+
+ static Create_func_random_bytes s_singleton;
+
+protected:
+ Create_func_random_bytes() {}
+ virtual ~Create_func_random_bytes() {}
+};
+
+
class Create_func_release_all_locks : public Create_func_arg0
{
public:
@@ -4985,6 +4998,16 @@ Create_func_rand::create_native(THD *thd, const LEX_CSTRING *name,
}
+Create_func_random_bytes Create_func_random_bytes::s_singleton;
+
+Item *Create_func_random_bytes::create_1_arg(THD *thd, Item *arg1)
+{
+ thd->lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_SYSTEM_FUNCTION);
+ thd->lex->uncacheable(UNCACHEABLE_RAND);
+ return new (thd->mem_root) Item_func_random_bytes(thd, arg1);
+}
+
+
Create_func_release_all_locks Create_func_release_all_locks::s_singleton;
Item*
@@ -5804,6 +5827,7 @@ Native_func_registry func_array[] =
{ { STRING_WITH_LEN("POW") }, BUILDER(Create_func_pow)},
{ { STRING_WITH_LEN("POWER") }, BUILDER(Create_func_pow)},
{ { STRING_WITH_LEN("QUOTE") }, BUILDER(Create_func_quote)},
+ { { STRING_WITH_LEN("RANDOM_BYTES")}, BUILDER(Create_func_random_bytes)},
{ { STRING_WITH_LEN("REGEXP_INSTR") }, BUILDER(Create_func_regexp_instr)},
{ { STRING_WITH_LEN("REGEXP_REPLACE") }, BUILDER(Create_func_regexp_replace)},
{ { STRING_WITH_LEN("REGEXP_SUBSTR") }, BUILDER(Create_func_regexp_substr)},
diff --git a/sql/item_func.cc b/sql/item_func.cc
index 7d4b2e01efd..a07595cbbd8 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -778,7 +778,7 @@ bool Item_func_connection_id::fix_fields(THD *thd, Item **ref)
{
if (Item_int_func::fix_fields(thd, ref))
return TRUE;
- thd->thread_specific_used= TRUE;
+ thd->used|= THD::THREAD_SPECIFIC_USED;
value= thd->variables.pseudo_thread_id;
return FALSE;
}
@@ -2821,9 +2821,9 @@ bool Item_func_rand::fix_fields(THD *thd,Item **ref)
Once events are forwarded rather than recreated,
the following can be skipped if inside the slave thread
*/
- if (!thd->rand_used)
+ if (!(thd->used & THD::RAND_USED))
{
- thd->rand_used= 1;
+ thd->used|= THD::RAND_USED;
thd->rand_saved_seed1= thd->rand.seed1;
thd->rand_saved_seed2= thd->rand.seed2;
}
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index cfec9292aac..4d69280cb98 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -733,6 +733,17 @@ bool Item_func_concat::fix_length_and_dec(THD *thd)
Encryption result is longer than original by formula:
@code new_length= org_length + (8-(org_length % 8))+1 @endcode
*/
+bool Item_func_des_encrypt::fix_length_and_dec(THD *thd)
+{
+ set_maybe_null();
+ /* 9 = MAX ((8- (arg_len % 8)) + 1) */
+ max_length = args[0]->max_length + 9;
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, ER_WARN_DEPRECATED_SYNTAX,
+ ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT),
+ func_name_cstring().str);
+ return FALSE;
+}
+
String *Item_func_des_encrypt::val_str(String *str)
{
@@ -833,6 +844,20 @@ error:
}
+bool Item_func_des_decrypt::fix_length_and_dec(THD *thd)
+{
+ set_maybe_null();
+ /* 9 = MAX ((8- (arg_len % 8)) + 1) */
+ max_length= args[0]->max_length;
+ if (max_length >= 9U)
+ max_length-= 9U;
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE, ER_WARN_DEPRECATED_SYNTAX,
+ ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT),
+ func_name_cstring().str);
+ return FALSE;
+}
+
+
String *Item_func_des_decrypt::val_str(String *str)
{
DBUG_ASSERT(fixed());
@@ -1449,6 +1474,70 @@ String *Item_func_sformat::val_str(String *res)
return null_value ? NULL : res;
}
+#include"my_global.h"
+#include <openssl/rand.h>
+#include <openssl/err.h>
+
+bool Item_func_random_bytes::fix_length_and_dec(THD *thd)
+{
+ used_tables_cache|= RAND_TABLE_BIT;
+ if (args[0]->can_eval_in_optimize())
+ {
+ int32 v= (int32) args[0]->val_int();
+ max_length= MY_MAX(0, MY_MIN(v, MAX_RANDOM_BYTES));
+ return false;
+ }
+ max_length= MAX_RANDOM_BYTES;
+ return false;
+}
+
+
+void Item_func_random_bytes::update_used_tables()
+{
+ Item_str_func::update_used_tables();
+ used_tables_cache|= RAND_TABLE_BIT;
+}
+
+
+String *Item_func_random_bytes::val_str(String *str)
+{
+ longlong count= args[0]->val_int();
+
+ if (args[0]->null_value)
+ goto err;
+ null_value= 0;
+
+ if (count < 0 || count > MAX_RANDOM_BYTES)
+ goto err;
+
+ if (count == 0)
+ return make_empty_result(str);
+
+ if (str->alloc((uint) count))
+ goto err;
+
+ str->length(count);
+ str->set_charset(&my_charset_bin);
+ if (my_random_bytes((unsigned char *) str->ptr(), (int32) count))
+ {
+ ulong ssl_err;
+ while ((ssl_err= ERR_get_error()))
+ {
+ char buf[256];
+ ERR_error_string_n(ssl_err, buf, sizeof(buf));
+ sql_print_warning("SSL error: %s", buf);
+ }
+ goto err;
+ }
+
+ return str;
+
+err:
+ null_value= 1;
+ return 0;
+}
+
+
/*********************************************************************/
bool Item_func_regexp_replace::fix_length_and_dec(THD *thd)
{
@@ -3728,14 +3817,10 @@ bool Item_func_set_collation::fix_length_and_dec(THD *thd)
{
if (agg_arg_charsets_for_string_result(collation, args, 1))
return true;
- if (!my_charset_same(collation.collation, m_set_collation))
- {
- my_error(ER_COLLATION_CHARSET_MISMATCH, MYF(0),
- m_set_collation->coll_name.str,
- collation.collation->cs_name.str);
- return TRUE;
- }
- collation.set(m_set_collation, DERIVATION_EXPLICIT,
+ Lex_exact_charset_opt_extended_collate cl(collation.collation, true);
+ if (cl.merge_collation_override(m_set_collation))
+ return true;
+ collation.set(cl.collation().charset_info(), DERIVATION_EXPLICIT,
args[0]->collation.repertoire);
max_length= args[0]->max_length;
return FALSE;
@@ -3753,7 +3838,7 @@ void Item_func_set_collation::print(String *str, enum_query_type query_type)
{
args[0]->print_parenthesised(str, query_type, precedence());
str->append(STRING_WITH_LEN(" collate "));
- str->append(m_set_collation->coll_name);
+ str->append(m_set_collation.collation_name_for_show());
}
String *Item_func_charset::val_str(String *str)
@@ -3785,7 +3870,7 @@ bool Item_func_weight_string::fix_length_and_dec(THD *thd)
{
CHARSET_INFO *cs= args[0]->collation.collation;
collation.set(&my_charset_bin, args[0]->collation.derivation);
- weigth_flags= my_strxfrm_flag_normalize(weigth_flags, cs->levels_for_order);
+ weigth_flags= my_strxfrm_flag_normalize(cs, weigth_flags);
/*
Use result_length if it was given explicitly in constructor,
otherwise calculate max_length using argument's max_length
@@ -3795,7 +3880,8 @@ bool Item_func_weight_string::fix_length_and_dec(THD *thd)
{
size_t char_length;
char_length= ((cs->state & MY_CS_STRNXFRM_BAD_NWEIGHTS) || !nweights) ?
- args[0]->max_char_length() : nweights * cs->levels_for_order;
+ args[0]->max_char_length() : nweights *
+ my_count_bits_uint32(cs->levels_for_order);
max_length= (uint32) cs->strnxfrmlen(char_length * cs->mbmaxlen);
}
set_maybe_null();
diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h
index 68b6f954b0a..30e363e9428 100644
--- a/sql/item_strfunc.h
+++ b/sql/item_strfunc.h
@@ -384,6 +384,32 @@ public:
{ return get_item_copy<Item_func_concat_ws>(thd, this); }
};
+
+class Item_func_random_bytes : public Item_str_func
+{
+public:
+ Item_func_random_bytes(THD *thd, Item *arg1) : Item_str_func(thd, arg1) {}
+ bool fix_length_and_dec(THD *thd) override;
+ void update_used_tables() override;
+ String *val_str(String *) override;
+ LEX_CSTRING func_name_cstring() const override
+ {
+ static LEX_CSTRING name= {STRING_WITH_LEN("random_bytes")};
+ return name;
+ }
+ bool check_vcol_func_processor(void *arg) override
+ {
+ return mark_unsupported_function(func_name(), "()", arg,
+ VCOL_NON_DETERMINISTIC | VCOL_NEXTVAL);
+ }
+ Item *get_copy(THD *thd) override
+ {
+ return get_item_copy<Item_func_random_bytes>(thd, this);
+ }
+ static const int MAX_RANDOM_BYTES= 1024;
+};
+
+
class Item_func_reverse :public Item_str_func
{
String tmp_value;
@@ -897,13 +923,7 @@ public:
Item_func_des_encrypt(THD *thd, Item *a, Item *b)
:Item_str_binary_checksum_func(thd, a, b) {}
String *val_str(String *) override;
- bool fix_length_and_dec(THD *thd) override
- {
- set_maybe_null();
- /* 9 = MAX ((8- (arg_len % 8)) + 1) */
- max_length = args[0]->max_length + 9;
- return FALSE;
- }
+ bool fix_length_and_dec(THD *thd) override;
LEX_CSTRING func_name_cstring() const override
{
static LEX_CSTRING name= {STRING_WITH_LEN("des_encrypt") };
@@ -922,15 +942,7 @@ public:
Item_func_des_decrypt(THD *thd, Item *a, Item *b)
:Item_str_binary_checksum_func(thd, a, b) {}
String *val_str(String *) override;
- bool fix_length_and_dec(THD *thd) override
- {
- set_maybe_null();
- /* 9 = MAX ((8- (arg_len % 8)) + 1) */
- max_length= args[0]->max_length;
- if (max_length >= 9U)
- max_length-= 9U;
- return FALSE;
- }
+ bool fix_length_and_dec(THD *thd) override;
LEX_CSTRING func_name_cstring() const override
{
static LEX_CSTRING name= {STRING_WITH_LEN("des_decrypt") };
@@ -1825,9 +1837,10 @@ public:
class Item_func_set_collation :public Item_str_func
{
- CHARSET_INFO *m_set_collation;
+ Lex_extended_collation_st m_set_collation;
public:
- Item_func_set_collation(THD *thd, Item *a, CHARSET_INFO *set_collation):
+ Item_func_set_collation(THD *thd, Item *a,
+ const Lex_extended_collation_st &set_collation):
Item_str_func(thd, a), m_set_collation(set_collation) {}
String *val_str(String *) override;
bool fix_length_and_dec(THD *thd) override;
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc
index 8399e5dc0ac..26adc4eddaa 100644
--- a/sql/item_timefunc.cc
+++ b/sql/item_timefunc.cc
@@ -1509,7 +1509,7 @@ bool Item_func_from_days::get_date(THD *thd, MYSQL_TIME *ltime, date_mode_t fuzz
void Item_func_curdate_local::store_now_in_TIME(THD *thd, MYSQL_TIME *now_time)
{
thd->variables.time_zone->gmt_sec_to_TIME(now_time, thd->query_start());
- thd->time_zone_used= 1;
+ thd->used |= THD::TIME_ZONE_USED;
}
@@ -1601,7 +1601,7 @@ void Item_func_curtime_local::store_now_in_TIME(THD *thd, MYSQL_TIME *now_time)
now_time->year= now_time->month= now_time->day= 0;
now_time->time_type= MYSQL_TIMESTAMP_TIME;
set_sec_part(thd->query_start_sec_part(), now_time, this);
- thd->time_zone_used= 1;
+ thd->used|= THD::TIME_ZONE_USED;
}
@@ -1667,7 +1667,7 @@ void Item_func_now_local::store_now_in_TIME(THD *thd, MYSQL_TIME *now_time)
{
thd->variables.time_zone->gmt_sec_to_TIME(now_time, thd->query_start());
set_sec_part(thd->query_start_sec_part(), now_time, this);
- thd->time_zone_used= 1;
+ thd->used|= THD::TIME_ZONE_USED;
}
@@ -1710,7 +1710,7 @@ void Item_func_sysdate_local::store_now_in_TIME(THD *thd, MYSQL_TIME *now_time)
my_hrtime_t now= my_hrtime();
thd->variables.time_zone->gmt_sec_to_TIME(now_time, hrtime_to_my_time(now));
set_sec_part(hrtime_sec_part(now), now_time, this);
- thd->time_zone_used= 1;
+ thd->used|= THD::TIME_ZONE_USED;
}
@@ -2732,7 +2732,7 @@ null_date:
bool Item_func_from_unixtime::fix_length_and_dec(THD *thd)
{
- thd->time_zone_used= 1;
+ thd->used|= THD::TIME_ZONE_USED;
tz= thd->variables.time_zone;
Type_std_attributes::set(
Type_temporal_attributes_not_fixed_dec(MAX_DATETIME_WIDTH,
diff --git a/sql/lex.h b/sql/lex.h
index 4ce88ccc2ee..18519d1f8d1 100644
--- a/sql/lex.h
+++ b/sql/lex.h
@@ -385,6 +385,7 @@ SYMBOL symbols[] = {
{ "MASTER_SSL_VERIFY_SERVER_CERT", SYM(MASTER_SSL_VERIFY_SERVER_CERT_SYM)},
{ "MASTER_USER", SYM(MASTER_USER_SYM)},
{ "MASTER_USE_GTID", SYM(MASTER_USE_GTID_SYM)},
+ { "MASTER_DEMOTE_TO_SLAVE", SYM(MASTER_DEMOTE_TO_SLAVE_SYM)},
{ "MASTER_HEARTBEAT_PERIOD", SYM(MASTER_HEARTBEAT_PERIOD_SYM)},
{ "MATCH", SYM(MATCH)},
{ "MAX_CONNECTIONS_PER_HOUR", SYM(MAX_CONNECTIONS_PER_HOUR)},
diff --git a/sql/lex_charset.cc b/sql/lex_charset.cc
index b83d175307f..cfb74a0bf04 100644
--- a/sql/lex_charset.cc
+++ b/sql/lex_charset.cc
@@ -45,7 +45,7 @@ raise_ER_CONFLICTING_DECLARATIONS(const char *clause1,
const char *name2,
bool reverse_order)
{
- char def[MY_CS_NAME_SIZE * 2];
+ char def[MY_CS_CHARACTER_SET_NAME_SIZE * 2];
my_snprintf(def, sizeof(def), "%s (%s)", name1, name1_part2);
raise_ER_CONFLICTING_DECLARATIONS(clause1, def,
clause2, name2,
@@ -127,19 +127,43 @@ Lex_exact_collation::
raise_if_conflicts_with_context_collation(const Lex_context_collation &cl,
bool reverse_order) const
{
- if (cl.is_contextually_typed_collate_default() &&
- !(m_ci->state & MY_CS_PRIMARY))
+ if (cl.is_contextually_typed_collate_default())
{
- raise_ER_CONFLICTING_DECLARATIONS("COLLATE ", m_ci->coll_name.str,
- "COLLATE ", "DEFAULT", reverse_order);
- return true;
+ if (!(m_ci->state & MY_CS_PRIMARY))
+ {
+ raise_ER_CONFLICTING_DECLARATIONS("COLLATE ", m_ci->coll_name.str,
+ "COLLATE ", "DEFAULT", reverse_order);
+ return true;
+ }
+ return false;
}
- if (cl.is_contextually_typed_binary_style() &&
- !(m_ci->state & MY_CS_BINSORT))
+ if (cl.is_contextually_typed_binary_style())
{
- raise_ER_CONFLICTING_DECLARATIONS("COLLATE ", m_ci->coll_name.str,
- "", "BINARY", reverse_order);
+ if (!(m_ci->state & MY_CS_BINSORT))
+ {
+ raise_ER_CONFLICTING_DECLARATIONS("COLLATE ", m_ci->coll_name.str,
+ "", "BINARY", reverse_order);
+ return true;
+ }
+ return false;
+ }
+
+ DBUG_ASSERT(!strncmp(cl.charset_info()->coll_name.str,
+ STRING_WITH_LEN("utf8mb4_uca1400_")));
+
+ Charset_loader_server loader;
+ CHARSET_INFO *ci= loader.get_exact_collation_by_context_name(
+ m_ci,
+ cl.collation_name_context_suffix().str,
+ MYF(0));
+ if (m_ci != ci)
+ {
+ raise_ER_CONFLICTING_DECLARATIONS("COLLATE ",
+ m_ci->coll_name.str,
+ "COLLATE ",
+ cl.collation_name_for_show().str,
+ reverse_order);
return true;
}
return false;
@@ -153,9 +177,16 @@ Lex_context_collation::raise_if_not_equal(const Lex_context_collation &cl) const
Only equal context collations are possible here so far:
- Column grammar only supports BINARY, but does not support COLLATE DEFAULT
- DB/Table grammar only support COLLATE DEFAULT
- But we'll have different collations here - uca140 is coming soon.
*/
- DBUG_ASSERT(m_ci == cl.m_ci);
+ if (m_ci != cl.m_ci)
+ {
+ my_error(ER_CONFLICTING_DECLARATIONS, MYF(0),
+ is_contextually_typed_binary_style() ? "" : "COLLATE ",
+ collation_name_for_show().str,
+ cl.is_contextually_typed_binary_style() ? "" : "COLLATE ",
+ cl.collation_name_for_show().str);
+ return true;
+ }
return false;
}
@@ -193,12 +224,16 @@ bool Lex_exact_charset_opt_extended_collate::
return false;
}
- /*
- A non-binary and non-default contextually typed collation.
- We don't have such yet - the parser cannot produce this.
- But we have "uca1400_as_ci" coming soon.
- */
- DBUG_ASSERT(0);
+ DBUG_ASSERT(!strncmp(cl.charset_info()->coll_name.str,
+ STRING_WITH_LEN("utf8mb4_uca1400_")));
+
+ CHARSET_INFO *ci= Charset_loader_server().
+ get_exact_collation_by_context_name_or_error(m_ci,
+ cl.charset_info()->coll_name.str + 8, MYF(0));
+ if (!ci)
+ return true;
+ m_ci= ci;
+ m_with_collate= true;
return false;
}
@@ -244,7 +279,7 @@ bool Lex_extended_collation_st::
CONTEXT + EXACT
CHAR(10) COLLATE DEFAULT .. COLLATE latin1_swedish_ci
CHAR(10) BINARY .. COLLATE latin1_bin
- CHAR(10) COLLATE uca1400_as_ci .. COLLATE latin1_bin - coming soon
+ CHAR(10) COLLATE uca1400_as_ci .. COLLATE latin1_bin
*/
if (rhs.raise_if_conflicts_with_context_collation(
Lex_context_collation(m_ci), true))
@@ -320,6 +355,38 @@ bool Lex_extended_collation_st::merge(const Lex_extended_collation_st &rhs)
}
+LEX_CSTRING Lex_context_collation::collation_name_for_show() const
+{
+ if (is_contextually_typed_collate_default())
+ return LEX_CSTRING({STRING_WITH_LEN("DEFAULT")});
+ if (is_contextually_typed_binary_style())
+ return LEX_CSTRING({STRING_WITH_LEN("BINARY")});
+ return collation_name_context_suffix();
+}
+
+
+bool Lex_extended_collation_st::set_by_name(const char *name, myf my_flags)
+{
+ Charset_loader_server loader;
+ CHARSET_INFO *cs;
+
+ if (!strncasecmp(name, STRING_WITH_LEN("uca1400_")))
+ {
+ if (!(cs= loader.get_context_collation_or_error(name, my_flags)))
+ return true;
+
+ *this= Lex_extended_collation(Lex_context_collation(cs));
+ return false;
+ }
+
+ if (!(cs= loader.get_exact_collation_or_error(name, my_flags)))
+ return true;
+
+ *this= Lex_extended_collation(Lex_exact_collation(cs));
+ return false;
+}
+
+
/** find a collation with binary comparison rules
*/
CHARSET_INFO *Lex_exact_charset_opt_extended_collate::find_bin_collation() const
@@ -499,6 +566,14 @@ bool Lex_exact_charset_opt_extended_collate::
// CHARACTER SET latin1 [COLLATE latin1_bin] .. COLLATE latin1_bin
if (m_with_collate)
return Lex_exact_collation(m_ci).raise_if_not_equal(cl);
+ return merge_exact_collation_override(cl);
+}
+
+
+bool Lex_exact_charset_opt_extended_collate::
+ merge_exact_collation_override(const Lex_exact_collation &cl)
+{
+ // CHARACTER SET latin1 [COLLATE latin1_bin] .. COLLATE latin1_bin
if (raise_if_not_applicable(cl))
return true;
*this= Lex_exact_charset_opt_extended_collate(cl);
diff --git a/sql/lex_charset.h b/sql/lex_charset.h
index d8d4422b34f..2bbeff8a4a6 100644
--- a/sql/lex_charset.h
+++ b/sql/lex_charset.h
@@ -18,6 +18,126 @@
/*
+ An extention for Charset_loader_mysys,
+ with server error and warning support.
+*/
+class Charset_loader_server: public Charset_loader_mysys
+{
+public:
+ using Charset_loader_mysys::Charset_loader_mysys;
+ void raise_unknown_collation_error(const char *name) const;
+ void raise_not_applicable_error(const char *cs, const char *cl) const;
+
+ /*
+ Find an exact collation by name.
+ Raise an error on a faulure.
+
+ @param cs - the character set
+ @param collation_name - the collation name, e.g. "utf8_bin"
+ @param my_flags - my flags, e.g. MYF(WME)
+ @returns - a NULL pointer in case of failure, or
+ a CHARSET_INFO pointer on success.
+ */
+
+ CHARSET_INFO *
+ get_exact_collation_or_error(const char *name, myf my_flags= MYF(0))
+ {
+ CHARSET_INFO *ci= get_exact_collation(name, my_flags);
+ if (!ci)
+ raise_unknown_collation_error(name);
+ return ci;
+ }
+
+ /*
+ Find an exact collation by a character set and a
+ contextually typed collation name.
+ Raise an error on in case of a faulure.
+
+ @param cs - the character set
+ @param context_cl_name - the context name, e.g. "uca1400_cs_ci"
+ @param my_flags - my flags, e.g. MYF(WME)
+ @returns - a NULL pointer in case of failure, or
+ a CHARSET_INFO pointer on success.
+ */
+ CHARSET_INFO *
+ get_exact_collation_by_context_name_or_error(CHARSET_INFO *cs,
+ const char *name,
+ myf my_flags= MYF(0))
+ {
+ CHARSET_INFO *ci= get_exact_collation_by_context_name(cs, name, my_flags);
+ if (!ci)
+ raise_not_applicable_error(cs->cs_name.str, name);
+ return ci;
+ }
+
+ /*
+ Find an abstract context collation by name.
+ Raise an error on a faulure.
+ The returned pointer needs to be resolved to a character set name.
+ It should not be passed directly to the character set routines.
+
+ @param cs - the character set
+ @param context_cl_name - the context name, e.g. "uca1400_cs_ci"
+ @param my_flags - my flags, e.g. MYF(WME)
+ @returns - a NULL pointer in case of failure, or
+ a CHARSET_INFO pointer on success.
+ */
+
+ CHARSET_INFO *
+ get_context_collation_or_error(const char *collation_name,
+ myf my_flags= MYF(0))
+ {
+ CHARSET_INFO *ci= get_context_collation(collation_name, my_flags);
+ if (!ci)
+ raise_unknown_collation_error(collation_name);
+ return ci;
+ }
+
+ /*
+ Find an exact binary collation in the given character set.
+ Raise an error on a faulure.
+
+ @param cs - the character set
+ @param my_flags - my flags, e.g. MYF(WME)
+ @returns - a NULL pointer in case of failure, or
+ a CHARSET_INFO pointer on success.
+ */
+
+ CHARSET_INFO *
+ get_bin_collation_or_error(CHARSET_INFO *cs,
+ myf my_flags= MYF(0))
+ {
+ const char *cs_name= cs->cs_name.str;
+ if (!(cs= get_bin_collation(cs, my_flags)))
+ {
+ char tmp[65];
+ strxnmov(tmp, sizeof(tmp)-1, cs_name, "_bin", NULL);
+ raise_unknown_collation_error(tmp);
+ }
+ return cs;
+ }
+
+ /*
+ Find an exact default collation in the given character set.
+ This routine does not fail.
+ Any character set must have a default collation.
+
+ @param cs - the character set
+ @param my_flags - my flags, e.g. MYF(WME)
+ @returns - a CHARSET_INFO pointer
+ */
+
+ CHARSET_INFO *get_default_collation(CHARSET_INFO *cs,
+ myf my_flags= MYF(0))
+ {
+ return Charset_loader_mysys::get_default_collation(cs, my_flags);
+ }
+};
+
+
+/////////////////////////////////////////////////////////////////////
+
+/*
An exact character set, e.g:
CHARACTER SET latin1
*/
@@ -96,6 +216,15 @@ public:
return m_ci == &my_collation_contextually_typed_binary;
}
bool raise_if_not_equal(const Lex_context_collation &cl) const;
+ /*
+ Skip the character set prefix, return the suffix.
+ utf8mb4_uca1400_as_ci -> uca1400_as_ci
+ */
+ LEX_CSTRING collation_name_context_suffix() const
+ {
+ return m_ci->get_collation_name(MY_COLLATION_NAME_MODE_CONTEXT);
+ }
+ LEX_CSTRING collation_name_for_show() const;
};
@@ -148,11 +277,23 @@ public:
}
CHARSET_INFO *charset_info() const { return m_ci; }
Type type() const { return m_type; }
+ LEX_CSTRING collation_name_for_show() const
+ {
+ switch (m_type) {
+ case TYPE_CONTEXTUALLY_TYPED:
+ return Lex_context_collation(m_ci).collation_name_for_show();
+ case TYPE_EXACT:
+ return m_ci->coll_name;
+ }
+ DBUG_ASSERT(0);
+ return m_ci->coll_name;
+ }
void set_collate_default()
{
m_ci= &my_collation_contextually_typed_default;
m_type= TYPE_CONTEXTUALLY_TYPED;
}
+ bool set_by_name(const char *name, myf my_flags); // e.g. MY_UTF8_IS_UTF8MB3
bool raise_if_conflicts_with_context_collation(const Lex_context_collation &)
const;
bool merge_exact_charset(const Lex_exact_charset &rhs);
@@ -172,6 +313,10 @@ public:
{
init(rhs.charset_info(), TYPE_EXACT);
}
+ Lex_extended_collation(const Lex_context_collation &rhs)
+ {
+ init(rhs.charset_info(), TYPE_CONTEXTUALLY_TYPED);
+ }
};
@@ -221,6 +366,19 @@ public:
DBUG_ASSERT(0);
return false;
}
+ bool merge_collation_override(const Lex_extended_collation_st &cl)
+ {
+ switch (cl.type()) {
+ case Lex_extended_collation_st::TYPE_EXACT:
+ return merge_exact_collation_override(
+ Lex_exact_collation(cl.charset_info()));
+ case Lex_extended_collation_st::TYPE_CONTEXTUALLY_TYPED:
+ return merge_context_collation_override(
+ Lex_context_collation(cl.charset_info()));
+ }
+ DBUG_ASSERT(0);
+ return false;
+ }
/*
Add a context collation:
CHARACTER SET cs [COLLATE cl] ... COLLATE DEFAULT
@@ -232,6 +390,7 @@ public:
CHARACTER SET cs [COLLATE cl] ... COLLATE latin1_bin
*/
bool merge_exact_collation(const Lex_exact_collation &cl);
+ bool merge_exact_collation_override(const Lex_exact_collation &cl);
Lex_exact_collation collation() const
{
return Lex_exact_collation(m_ci);
@@ -410,6 +569,7 @@ public:
case TYPE_COLLATE_EXACT:
return merge_exact_collation(Lex_exact_collation(cl.charset_info()));
case TYPE_COLLATE_CONTEXTUALLY_TYPED:
+ return merge_context_collation(Lex_context_collation(cl.charset_info()));
case TYPE_CHARACTER_SET:
case TYPE_CHARACTER_SET_COLLATE_EXACT:
break;
@@ -426,7 +586,6 @@ public:
bool merge_column_collate_clause_and_collate_clause(
const Lex_exact_charset_extended_collation_attrs_st &cl)
{
- DBUG_ASSERT(m_type != TYPE_COLLATE_CONTEXTUALLY_TYPED);
DBUG_ASSERT(m_type != TYPE_CHARACTER_SET);
switch (cl.type()) {
case TYPE_EMPTY:
@@ -434,6 +593,7 @@ public:
case TYPE_COLLATE_EXACT:
return merge_exact_collation(Lex_exact_collation(cl.charset_info()));
case TYPE_COLLATE_CONTEXTUALLY_TYPED:
+ return merge_context_collation(Lex_context_collation(cl.charset_info()));
case TYPE_CHARACTER_SET:
case TYPE_CHARACTER_SET_COLLATE_EXACT:
break;
diff --git a/sql/log.cc b/sql/log.cc
index 6392cba1ea9..4572b9cca82 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -834,14 +834,13 @@ bool Log_to_csv_event_handler::
uint field_index;
Silence_log_table_errors error_handler;
Open_tables_backup open_tables_backup;
- bool save_time_zone_used;
+ THD::used_t save_time_zone_used= thd->used & THD::TIME_ZONE_USED;
DBUG_ENTER("log_general");
/*
CSV uses TIME_to_timestamp() internally if table needs to be repaired
- which will set thd->time_zone_used
+ which will set TIME_ZONE_USED
*/
- save_time_zone_used= thd->time_zone_used;
table_list.init_one_table(&MYSQL_SCHEMA_NAME, &GENERAL_LOG_NAME, 0,
TL_WRITE_CONCURRENT_INSERT);
@@ -942,7 +941,7 @@ err:
if (need_close)
close_log_table(thd, &open_tables_backup);
- thd->time_zone_used= save_time_zone_used;
+ thd->used= (thd->used & ~THD::TIME_ZONE_USED) | save_time_zone_used;
DBUG_RETURN(result);
}
@@ -989,7 +988,7 @@ bool Log_to_csv_event_handler::
Silence_log_table_errors error_handler;
Open_tables_backup open_tables_backup;
CHARSET_INFO *client_cs= thd->variables.character_set_client;
- bool save_time_zone_used;
+ THD::used_t save_time_zone_used= thd->used & THD::TIME_ZONE_USED;
ulong query_time= (ulong) MY_MIN(query_utime/1000000, TIME_MAX_VALUE_SECONDS);
ulong lock_time= (ulong) MY_MIN(lock_utime/1000000, TIME_MAX_VALUE_SECONDS);
ulong query_time_micro= (ulong) (query_utime % 1000000);
@@ -997,11 +996,6 @@ bool Log_to_csv_event_handler::
DBUG_ENTER("Log_to_csv_event_handler::log_slow");
thd->push_internal_handler(& error_handler);
- /*
- CSV uses TIME_to_timestamp() internally if table needs to be repaired
- which will set thd->time_zone_used
- */
- save_time_zone_used= thd->time_zone_used;
table_list.init_one_table(&MYSQL_SCHEMA_NAME, &SLOW_LOG_NAME, 0,
TL_WRITE_CONCURRENT_INSERT);
@@ -1129,7 +1123,7 @@ err:
}
if (need_close)
close_log_table(thd, &open_tables_backup);
- thd->time_zone_used= save_time_zone_used;
+ thd->used= (thd->used & ~THD::TIME_ZONE_USED) | save_time_zone_used;
DBUG_RETURN(result);
}
@@ -6896,7 +6890,7 @@ bool MYSQL_BIN_LOG::write(Log_event *event_info, my_bool *with_annotate)
if (write_event(&e, cache_data, file))
goto err;
}
- if (thd->rand_used)
+ if (thd->used & THD::RAND_USED)
{
Rand_log_event e(thd,thd->rand_saved_seed1,thd->rand_saved_seed2,
using_trans, direct);
diff --git a/sql/log_event_server.cc b/sql/log_event_server.cc
index 78fb1a97409..98325fe7498 100644
--- a/sql/log_event_server.cc
+++ b/sql/log_event_server.cc
@@ -200,7 +200,7 @@ static void inline slave_rows_error_report(enum loglevel level, int ha_error,
err->get_sql_errno());
}
- if (ha_error != 0)
+ if (ha_error != 0 && !thd->killed)
rli->report(level, errcode, rgi->gtid_info(),
"Could not execute %s event on table %s.%s;"
"%s handler error %s; "
@@ -1289,7 +1289,7 @@ bool Query_log_event::write()
}
}
- if (thd && thd->query_start_sec_part_used)
+ if (thd && (thd->used & THD::QUERY_START_SEC_PART_USED))
{
*start++= Q_HRNOW;
get_time();
@@ -1415,8 +1415,8 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
bool direct, bool suppress_use, int errcode)
:Log_event(thd_arg,
- (thd_arg->thread_specific_used ? LOG_EVENT_THREAD_SPECIFIC_F :
- 0) |
+ ((thd_arg->used & THD::THREAD_SPECIFIC_USED)
+ ? LOG_EVENT_THREAD_SPECIFIC_F : 0) |
(suppress_use ? LOG_EVENT_SUPPRESS_USE_F : 0),
using_trans),
data_buf(0), query(query_arg), catalog(thd_arg->catalog),
@@ -1502,7 +1502,7 @@ Query_log_event::Query_log_event(THD* thd_arg, const char* query_arg,
int2store(charset, thd_arg->variables.character_set_client->number);
int2store(charset+2, thd_arg->variables.collation_connection->number);
int2store(charset+4, thd_arg->variables.collation_server->number);
- if (thd_arg->time_zone_used)
+ if (thd_arg->used & THD::TIME_ZONE_USED)
{
/*
Note that our event becomes dependent on the Time_zone object
@@ -2953,7 +2953,8 @@ Load_log_event::Load_log_event(THD *thd_arg, const sql_exchange *ex,
enum enum_duplicates handle_dup,
bool ignore, bool using_trans)
:Log_event(thd_arg,
- thd_arg->thread_specific_used ? LOG_EVENT_THREAD_SPECIFIC_F : 0,
+ (thd_arg->used & THD::THREAD_SPECIFIC_USED)
+ ? LOG_EVENT_THREAD_SPECIFIC_F : 0,
using_trans),
thread_id(thd_arg->thread_id),
slave_proxy_id((ulong)thd_arg->variables.pseudo_thread_id),
@@ -4594,7 +4595,9 @@ void User_var_log_event::pack_info(Protocol* protocol)
case STRING_RESULT:
{
/* 15 is for 'COLLATE' and other chars */
- char buf_mem[FN_REFLEN + 512 + 1 + 2*MY_CS_NAME_SIZE+15];
+ char buf_mem[FN_REFLEN + 512 + 1 + 15 +
+ MY_CS_CHARACTER_SET_NAME_SIZE +
+ MY_CS_COLLATION_NAME_SIZE];
String buf(buf_mem, sizeof(buf_mem), system_charset_info);
CHARSET_INFO *cs;
buf.length(0);
@@ -4614,7 +4617,7 @@ void User_var_log_event::pack_info(Protocol* protocol)
return;
old_len= buf.length();
if (buf.reserve(old_len + val_len * 2 + 3 + sizeof(" COLLATE ") +
- MY_CS_NAME_SIZE))
+ MY_CS_COLLATION_NAME_SIZE))
return;
beg= const_cast<char *>(buf.ptr()) + old_len;
end= str_to_hex(beg, val, val_len);
@@ -5733,6 +5736,13 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
DBUG_ASSERT(rgi->thd == thd);
/*
+ Where a Query_log_event can rely on the normal command execution logic to
+ set/reset the slave thread's timer; a Rows_log_event update needs to set
+ the timer itself
+ */
+ thd->set_query_timer();
+
+ /*
If there is no locks taken, this is the first binrow event seen
after the table map events. We should then lock all the tables
used in the transaction and proceed with execution of the actual
@@ -6124,6 +6134,12 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
if (likely(error == 0) && !transactional_table)
thd->transaction->all.modified_non_trans_table=
thd->transaction->stmt.modified_non_trans_table= TRUE;
+ if (likely(error == 0))
+ {
+ error= thd->killed_errno();
+ if (error && !thd->is_error())
+ my_error(error, MYF(0));
+ }
} // row processing loop
while (error == 0 && (m_curr_row != m_rows_end));
@@ -6193,11 +6209,13 @@ int Rows_log_event::do_apply_event(rpl_group_info *rgi)
free_root(thd->mem_root, MYF(MY_KEEP_PREALLOC));
}
+ thd->reset_query_timer();
DBUG_RETURN(error);
err:
restore_empty_query_table_list(thd->lex);
rgi->slave_close_thread_tables(thd);
+ thd->reset_query_timer();
DBUG_RETURN(error);
}
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 08fa4cba9de..9eea34a28ab 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -461,6 +461,8 @@ ulonglong binlog_cache_size=0;
ulonglong binlog_file_cache_size=0;
ulonglong max_binlog_cache_size=0;
ulong slave_max_allowed_packet= 0;
+double slave_max_statement_time_double;
+ulonglong slave_max_statement_time;
ulonglong binlog_stmt_cache_size=0;
ulonglong max_binlog_stmt_cache_size=0;
ulonglong test_flags;
@@ -6365,13 +6367,6 @@ struct my_option my_long_options[]=
{"help", '?', "Display this help and exit.",
&opt_help, &opt_help, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
0, 0},
- {"allow-suspicious-udfs", 0,
- "Allows use of UDFs consisting of only one symbol xxx() "
- "without corresponding xxx_init() or xxx_deinit(). That also means "
- "that one can load any function from any library, for example exit() "
- "from libc.so",
- &opt_allow_suspicious_udfs, &opt_allow_suspicious_udfs,
- 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"ansi", 'a', "Use ANSI SQL syntax instead of MySQL syntax. This mode "
"will also set transaction isolation level 'serializable'.", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
@@ -6696,12 +6691,6 @@ struct my_option my_long_options[]=
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
{"silent-startup", OPT_SILENT, "Don't print [Note] to the error log during startup.",
&opt_silent_startup, &opt_silent_startup, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
-#ifndef DISABLE_GRANT_OPTIONS
- {"skip-grant-tables", 0,
- "Start without grant tables. This gives all users FULL ACCESS to all tables.",
- &opt_noacl, &opt_noacl, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
- 0},
-#endif
{"skip-host-cache", OPT_SKIP_HOST_CACHE, "Don't cache host names.", 0, 0, 0,
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
{"skip-slave-start", 0,
@@ -7398,6 +7387,7 @@ SHOW_VAR status_vars[]= {
{"Handler_update", (char*) offsetof(STATUS_VAR, ha_update_count), SHOW_LONG_STATUS},
{"Handler_write", (char*) offsetof(STATUS_VAR, ha_write_count), SHOW_LONG_STATUS},
SHOW_FUNC_ENTRY("Key", &show_default_keycache),
+ {"optimizer_join_prefixes_check_calls", (char*) offsetof(STATUS_VAR, optimizer_join_prefixes_check_calls), SHOW_LONG_STATUS},
{"Last_query_cost", (char*) offsetof(STATUS_VAR, last_query_cost), SHOW_DOUBLE_STATUS},
#ifndef DBUG_OFF
{"malloc_calls", (char*) &malloc_calls, SHOW_LONG},
@@ -8753,6 +8743,8 @@ static int get_options(int *argc_ptr, char ***argv_ptr)
max_relay_log_size_var->option.def_value=
max_binlog_size_var->option.def_value;
}
+ slave_max_statement_time=
+ double2ulonglong(slave_max_statement_time_double * 1e6);
}
#endif
diff --git a/sql/mysqld.h b/sql/mysqld.h
index b9549054d77..d36e7c0a014 100644
--- a/sql/mysqld.h
+++ b/sql/mysqld.h
@@ -244,6 +244,8 @@ extern ulonglong binlog_cache_size, binlog_stmt_cache_size, binlog_file_cache_si
extern ulonglong max_binlog_cache_size, max_binlog_stmt_cache_size;
extern ulong max_binlog_size;
extern ulong slave_max_allowed_packet;
+extern ulonglong slave_max_statement_time;
+extern double slave_max_statement_time_double;
extern ulong opt_binlog_rows_event_max_size;
extern ulong binlog_row_metadata;
extern ulong thread_cache_size;
diff --git a/sql/opt_split.cc b/sql/opt_split.cc
index 85e2df2dbb3..86ed442814c 100644
--- a/sql/opt_split.cc
+++ b/sql/opt_split.cc
@@ -769,7 +769,7 @@ void JOIN::add_keyuses_for_splitting()
added_keyuse->validity_ref= &keyuse_ext->validity_var;
}
- if (sort_and_filter_keyuse(thd, &keyuse, true))
+ if (sort_and_filter_keyuse(this, &keyuse, true))
goto err;
optimize_keyuse(this, &keyuse);
diff --git a/sql/opt_subselect.cc b/sql/opt_subselect.cc
index a7e4f982aa2..da871e099dd 100644
--- a/sql/opt_subselect.cc
+++ b/sql/opt_subselect.cc
@@ -2895,7 +2895,7 @@ void optimize_semi_joins(JOIN *join, table_map remaining_tables, uint idx,
pos[-1].inner_tables_handled_with_other_sjs;
}
- pos->prefix_cost.convert_from_cost(*current_read_time);
+ pos->prefix_cost= *current_read_time;
pos->prefix_record_count= *current_record_count;
{
@@ -3017,7 +3017,7 @@ void optimize_semi_joins(JOIN *join, table_map remaining_tables, uint idx,
update_sj_state(join, new_join_tab, idx, remaining_tables);
- pos->prefix_cost.convert_from_cost(*current_read_time);
+ pos->prefix_cost= *current_read_time;
pos->prefix_record_count= *current_record_count;
pos->dups_producing_tables= dups_producing_tables;
}
@@ -3108,15 +3108,15 @@ bool Sj_materialization_picker::check_qep(JOIN *join,
else
{
/* This is SJ-Materialization with lookups */
- Cost_estimate prefix_cost;
+ double prefix_cost;
signed int first_tab= (int)idx - mat_info->tables;
- double prefix_rec_count;
+ double prefix_rec_count, mat_read_time;
Json_writer_object trace(join->thd);
trace.add("strategy", "SJ-Materialization");
if (first_tab < (int)join->const_tables)
{
- prefix_cost.reset();
+ prefix_cost= 0;
prefix_rec_count= 1.0;
}
else
@@ -3125,9 +3125,8 @@ bool Sj_materialization_picker::check_qep(JOIN *join,
prefix_rec_count= join->positions[first_tab].prefix_record_count;
}
- double mat_read_time= prefix_cost.total_cost();
mat_read_time=
- COST_ADD(mat_read_time,
+ COST_ADD(prefix_cost,
COST_ADD(mat_info->materialization_cost.total_cost(),
COST_MULT(prefix_rec_count,
mat_info->lookup_cost.total_cost())));
@@ -3172,7 +3171,7 @@ bool Sj_materialization_picker::check_qep(JOIN *join,
}
else
{
- prefix_cost= join->positions[first_tab - 1].prefix_cost.total_cost();
+ prefix_cost= join->positions[first_tab - 1].prefix_cost;
prefix_rec_count= join->positions[first_tab - 1].prefix_record_count;
}
@@ -3536,7 +3535,7 @@ bool Duplicate_weedout_picker::check_qep(JOIN *join,
}
else
{
- dups_cost= join->positions[first_tab - 1].prefix_cost.total_cost();
+ dups_cost= join->positions[first_tab - 1].prefix_cost;
prefix_rec_count= join->positions[first_tab - 1].prefix_record_count;
temptable_rec_size= 8; /* This is not true but we'll make it so */
}
diff --git a/sql/opt_table_elimination.cc b/sql/opt_table_elimination.cc
index 8c4720bdec4..b8e046995e9 100644
--- a/sql/opt_table_elimination.cc
+++ b/sql/opt_table_elimination.cc
@@ -134,6 +134,11 @@
- Nodes representing unique keys. Unique key has
= incoming edges from key component value modules
= outgoing edge to key's table module
+ - Nodes representing unique pseudo-keys for derived tables.
+ Unique pseudo-keys are composed as a result of GROUP BY expressions.
+ Like normal unique keys, they have:
+ = incoming edges from key component value modules
+ = outgoing edge to key's table module
- Inner side of outer join module. Outer join module has
= incoming edges from table value modules
= No outgoing edges. Once we reach it, we know we can eliminate the
@@ -205,6 +210,7 @@ class Dep_module;
class Dep_module_expr;
class Dep_module_goal;
class Dep_module_key;
+ class Dep_module_pseudo_key;
class Dep_analysis_context;
@@ -278,6 +284,8 @@ private:
Dep_module_key *key_dep;
/* Otherwise, this and advance */
uint equality_no;
+ /* Or this one and advance */
+ Dep_module_pseudo_key *pseudo_key_dep;
};
friend class Dep_analysis_context;
friend class Field_dependency_recorder;
@@ -302,12 +310,20 @@ class Dep_value_table : public Dep_value
{
public:
Dep_value_table(TABLE *table_arg) :
- table(table_arg), fields(NULL), keys(NULL)
+ table(table_arg), fields(NULL), keys(NULL), pseudo_key(NULL)
{}
TABLE *table; /* Table this object is representing */
/* Ordered list of fields that belong to this table */
Dep_value_field *fields;
- Dep_module_key *keys; /* Ordered list of Unique keys in this table */
+
+ /* Ordered list of Unique keys in this table */
+ Dep_module_key *keys;
+
+ /*
+ Possible unique pseudo-key applicable for this table
+ (only none or a single one is possible)
+ */
+ Dep_module_pseudo_key *pseudo_key;
/* Iteration over unbound modules that are our dependencies */
Iterator init_unbound_modules_iter(char *buf);
@@ -443,9 +459,63 @@ private:
const size_t Dep_module_key::iterator_size=
ALIGN_SIZE(sizeof(Dep_module_key::Value_iter));
-const size_t Dep_module::iterator_size=
- MY_MAX(Dep_module_expr::iterator_size, Dep_module_key::iterator_size);
+/*
+ A unique pseudo-key module for a derived table.
+ For example, a derived table
+ "SELECT a, count(*) from t1 GROUP BY a"
+ has unique values in its first field "a" due to GROUP BY expression
+ so this can be considered as a unique key for this derived table
+*/
+
+class Dep_module_pseudo_key : public Dep_module
+{
+public:
+ Dep_module_pseudo_key(Dep_value_table *table_arg,
+ MY_BITMAP *exposed_fields,
+ uint exposed_fields_num)
+ : table(table_arg), exposed_fields_map(exposed_fields)
+ {
+ unbound_args= exposed_fields_num;
+ }
+
+ Dep_value_table *table;
+
+ Iterator init_unbound_values_iter(char *buf) override;
+
+ Dep_value *get_next_unbound_value(Dep_analysis_context *dac,
+ Iterator iter) override;
+
+ bool covers_field(int field_index);
+
+ static const size_t iterator_size;
+
+private:
+ /*
+ Bitmap of field numbers in the derived table's SELECT list
+ which are included in the GROUP BY expression.
+ For example, unique pseudo-key for SQL
+ "SELECT count(*), b, a FROM t1 GROUP BY a, b"
+ will include two elements: {2} and {1}, since "a" and "b" are on the
+ GROUP BY list and also are present on the SELECT list with numbers 2 and 1
+ (numeration starts from 0).
+ */
+ MY_BITMAP *exposed_fields_map;
+
+ class Value_iter
+ {
+ public:
+ Dep_value_table *table;
+ };
+};
+
+const size_t Dep_module_pseudo_key::iterator_size=
+ ALIGN_SIZE(sizeof(Dep_module_pseudo_key::Value_iter));
+
+const size_t Dep_module::iterator_size=
+ MY_MAX(Dep_module_expr::iterator_size,
+ MY_MAX(Dep_module_key::iterator_size,
+ Dep_module_pseudo_key::iterator_size));
/*
A module that represents outer join that we're trying to eliminate. If we
@@ -507,13 +577,18 @@ public:
to see if expression equality_mods[expr_no] depends on the given field.
*/
MY_BITMAP expr_deps;
-
- Dep_value_table *create_table_value(TABLE *table);
+
+ Dep_value_table *create_table_value(TABLE_LIST *table_list);
Dep_value_field *get_field_value(Field *field);
#ifndef DBUG_OFF
void dbug_print_deps();
#endif
+
+private:
+ void create_unique_pseudo_key_if_needed(TABLE_LIST *table_list,
+ Dep_value_table *tbl_dep);
+ int find_field_in_list(List<Item> &fields_list, Item *field);
};
@@ -851,7 +926,7 @@ bool check_func_dependency(JOIN *join,
/* Create Dep_value_table objects for all tables we're trying to eliminate */
if (oj_tbl)
{
- if (!dac.create_table_value(oj_tbl->table))
+ if (!dac.create_table_value(oj_tbl))
return FALSE; /* purecov: inspected */
}
else
@@ -861,7 +936,7 @@ bool check_func_dependency(JOIN *join,
{
if (tbl->table && (tbl->table->map & dep_tables))
{
- if (!dac.create_table_value(tbl->table))
+ if (!dac.create_table_value(tbl))
return FALSE; /* purecov: inspected */
}
}
@@ -1577,33 +1652,156 @@ void add_module_expr(Dep_analysis_context *ctx, Dep_module_expr **eq_mod,
DESCRIPTION
Create a Dep_value_table object for the given table. Also create
Dep_module_key objects for all unique keys in the table.
+ Create a unique pseudo-key if this table is derived and has
+ a GROUP BY expression.
RETURN
Created table value object
NULL if out of memory
*/
-Dep_value_table *Dep_analysis_context::create_table_value(TABLE *table)
+Dep_value_table *
+Dep_analysis_context::create_table_value(TABLE_LIST *table_list)
{
Dep_value_table *tbl_dep;
- if (!(tbl_dep= new Dep_value_table(table)))
+ if (!(tbl_dep= new Dep_value_table(table_list->table)))
return NULL; /* purecov: inspected */
Dep_module_key **key_list= &(tbl_dep->keys);
/* Add dependencies for unique keys */
- for (uint i=0; i < table->s->keys; i++)
+ for (uint i= 0; i < table_list->table->s->keys; i++)
{
- KEY *key= table->key_info + i;
+ KEY *key= table_list->table->key_info + i;
if (key->flags & HA_NOSAME)
{
Dep_module_key *key_dep;
- if (!(key_dep= new Dep_module_key(tbl_dep, i, key->user_defined_key_parts)))
+ if (!(key_dep= new Dep_module_key(tbl_dep, i,
+ key->user_defined_key_parts)))
return NULL;
*key_list= key_dep;
key_list= &(key_dep->next_table_key);
}
}
- return table_deps[table->tablenr]= tbl_dep;
+
+ create_unique_pseudo_key_if_needed(table_list, tbl_dep);
+ return table_deps[table_list->table->tablenr]= tbl_dep;
+}
+
+
+/*
+ @brief
+ Check if we can create a unique pseudo-key for the passed table.
+ If we can, create a dependency for it
+
+ @detail
+ Currently, pseudo-key is created for the list of GROUP BY columns.
+
+ TODO: also it can be created if the query uses
+ - SELECT DISTINCT
+ - UNION DISTINCT (not UNION ALL)
+*/
+
+void Dep_analysis_context::create_unique_pseudo_key_if_needed(
+ TABLE_LIST *table_list, Dep_value_table *tbl_dep)
+{
+ auto select_unit= table_list->get_unit();
+ SELECT_LEX *first_select= nullptr;
+ if (select_unit)
+ {
+ first_select= select_unit->first_select();
+
+ /*
+ Exclude UNION (ALL) queries from consideration by checking
+ next_select() == nullptr
+ */
+ if (unlikely(select_unit->first_select()->next_select()))
+ first_select= nullptr;
+ }
+
+ /*
+ GROUP BY expression is considered as a unique pseudo-key
+ for the derived table. Add this pseudo key as a dependency.
+
+ first_select->join is NULL for degenerate derived tables
+ which are known to have just one row and so were already materialized
+ by the optimizer, check this here
+ */
+ if (first_select && first_select->join &&
+ first_select->group_list.elements > 0)
+ {
+ auto max_possible_elements= first_select->join->fields_list.elements;
+ void *buf;
+ MY_BITMAP *exposed_fields= (MY_BITMAP*)
+ current_thd->alloc(sizeof(MY_BITMAP));
+ if (!(buf= current_thd->alloc(bitmap_buffer_size(max_possible_elements))) ||
+ my_bitmap_init(exposed_fields, (my_bitmap_map*)buf,
+ max_possible_elements))
+ // Memory allocation failed
+ return;
+ bitmap_clear_all(exposed_fields);
+ uint exposed_fields_count= 0;
+
+ bool valid= true;
+ for (auto cur_group= first_select->group_list.first;
+ cur_group;
+ cur_group= cur_group->next)
+ {
+ auto elem= *(cur_group->item);
+ /*
+ Make sure GROUP BY elements contain only fields
+ and no functions or other expressions
+ */
+ if (elem->type() != Item::FIELD_ITEM)
+ {
+ valid= false;
+ break;
+ }
+ auto field_no= find_field_in_list(first_select->join->fields_list, elem);
+ if (field_no == -1)
+ {
+ /*
+ This GROUP BY element is not present in the select list. This is a
+ case like this:
+ (SELECT a FROM t1 GROUP by a,b) as TBL
+ Here, the combination of (a,b) is unique, but the select doesn't
+ include "b". "a" alone is not unique, so TBL doesn't have a unique
+ pseudo-key.
+ */
+ valid= false;
+ break;
+ }
+ bitmap_set_bit(exposed_fields, field_no);
+ exposed_fields_count++;
+ }
+ if (valid)
+ {
+ Dep_module_pseudo_key *pseudo_key;
+ pseudo_key= new Dep_module_pseudo_key(tbl_dep, exposed_fields,
+ exposed_fields_count);
+ tbl_dep->pseudo_key= pseudo_key;
+ }
+ }
+}
+
+
+/*
+ Iterate the list of fields and look for the given field.
+ Returns the index of the field if it is found on the list
+ and -1 otherwise
+*/
+
+int Dep_analysis_context::find_field_in_list(List<Item> &fields_list,
+ Item *field)
+{
+ List_iterator<Item> it(fields_list);
+ int field_idx= 0;
+ while (auto next_field= it++)
+ {
+ if (next_field->eq(field, false))
+ return field_idx;
+ field_idx++;
+ }
+ return -1; /*not found*/
}
@@ -1746,11 +1944,39 @@ Dep_value* Dep_module_key::get_next_unbound_value(Dep_analysis_context *dac,
}
+char *Dep_module_pseudo_key::init_unbound_values_iter(char *buf)
+{
+ Value_iter *iter= ALIGN_PTR(my_ptrdiff_t(buf), Value_iter);
+ iter->table= table;
+ return (char *) iter;
+}
+
+Dep_value *
+Dep_module_pseudo_key::get_next_unbound_value(Dep_analysis_context *dac,
+ Dep_module::Iterator iter)
+{
+ Dep_value *res= ((Value_iter *) iter)->table;
+ ((Value_iter *) iter)->table= NULL;
+ return res;
+}
+
+
+/*
+ Check if column number field_no is covered by the pseudo-key.
+*/
+
+bool Dep_module_pseudo_key::covers_field(int field_no)
+{
+ return bitmap_is_set(exposed_fields_map, field_no) > 0;
+}
+
+
Dep_value::Iterator Dep_value_field::init_unbound_modules_iter(char *buf)
{
Module_iter *iter= ALIGN_PTR(my_ptrdiff_t(buf), Module_iter);
iter->key_dep= table->keys;
iter->equality_no= 0;
+ iter->pseudo_key_dep= table->pseudo_key;
return (char*)iter;
}
@@ -1758,7 +1984,8 @@ Dep_value::Iterator Dep_value_field::init_unbound_modules_iter(char *buf)
void
Dep_value_field::make_unbound_modules_iter_skip_keys(Dep_value::Iterator iter)
{
- ((Module_iter*)iter)->key_dep= NULL;
+ ((Module_iter*) iter)->key_dep= NULL;
+ ((Module_iter*) iter)->pseudo_key_dep= NULL;
}
@@ -1786,6 +2013,16 @@ Dep_module* Dep_value_field::get_next_unbound_module(Dep_analysis_context *dac,
}
else
di->key_dep= NULL;
+
+ Dep_module_pseudo_key *pseudo_key_dep= di->pseudo_key_dep;
+ if (pseudo_key_dep && !pseudo_key_dep->is_applicable() &&
+ pseudo_key_dep->covers_field(field->field_index))
+ {
+ di->pseudo_key_dep= NULL;
+ return pseudo_key_dep;
+ }
+ else
+ di->pseudo_key_dep= NULL;
/*
Then walk through [multi]equalities and find those that
@@ -1819,7 +2056,7 @@ static void mark_as_eliminated(JOIN *join, TABLE_LIST *tbl,
TABLE *table;
/*
NOTE: there are TABLE_LIST object that have
- tbl->table!= NULL && tbl->nested_join!=NULL and
+ tbl->table!= NULL && tbl->nested_join!=NULL and
tbl->table == tbl->nested_join->join_list->element(..)->table
*/
if (tbl->nested_join)
@@ -1848,7 +2085,6 @@ static void mark_as_eliminated(JOIN *join, TABLE_LIST *tbl,
tbl->on_expr->walk(&Item::mark_as_eliminated_processor, FALSE, NULL);
}
-
#ifndef DBUG_OFF
/* purecov: begin inspected */
void Dep_analysis_context::dbug_print_deps()
diff --git a/sql/privilege.h b/sql/privilege.h
index 9e505691736..f6980aeb6b1 100644
--- a/sql/privilege.h
+++ b/sql/privilege.h
@@ -570,6 +570,8 @@ constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_EXEC_MODE=
REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_MAX_ALLOWED_PACKET=
REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
+constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_MAX_STATEMENT_TIME=
+ REPL_SLAVE_ADMIN_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_NET_TIMEOUT=
REPL_SLAVE_ADMIN_ACL | SUPER_ACL;
constexpr privilege_t PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_PARALLEL_MAX_QUEUED=
diff --git a/sql/protocol.cc b/sql/protocol.cc
index 33d865a3f9f..eee6236ffe7 100644
--- a/sql/protocol.cc
+++ b/sql/protocol.cc
@@ -876,13 +876,17 @@ bool Protocol_text::store_field_metadata(const THD * thd,
if (charset_for_protocol == &my_charset_bin || thd_charset == NULL)
{
/* No conversion */
- int2store(pos, charset_for_protocol->number);
+ uint id= charset_for_protocol->get_id(MY_COLLATION_ID_TYPE_COMPAT_100800);
+ DBUG_ASSERT(id <= UINT_MAX16);
+ int2store(pos, (uint16) id);
int4store(pos + 2, field.length);
}
else
{
/* With conversion */
- int2store(pos, thd_charset->number);
+ uint id= thd_charset->get_id(MY_COLLATION_ID_TYPE_COMPAT_100800);
+ DBUG_ASSERT(id <= UINT_MAX16);
+ int2store(pos, (uint16) id);
uint32 field_length= field.max_octet_length(charset_for_protocol,
thd_charset);
int4store(pos + 2, field_length);
diff --git a/sql/rpl_mi.cc b/sql/rpl_mi.cc
index b9aea39e547..ab2523d960b 100644
--- a/sql/rpl_mi.cc
+++ b/sql/rpl_mi.cc
@@ -39,7 +39,7 @@ Master_info::Master_info(LEX_CSTRING *connection_name_arg,
clock_diff_with_master(0),
sync_counter(0), heartbeat_period(0), received_heartbeats(0),
master_id(0), prev_master_id(0),
- using_gtid(USE_GTID_NO), events_queued_since_last_gtid(0),
+ using_gtid(USE_GTID_SLAVE_POS), events_queued_since_last_gtid(0),
gtid_reconnect_event_skip_count(0), gtid_event_seen(false),
in_start_all_slaves(0), in_stop_all_slaves(0), in_flush_all_relay_logs(0),
users(0), killed(0),
@@ -210,7 +210,10 @@ void init_master_log_pos(Master_info* mi)
mi->master_log_name[0] = 0;
mi->master_log_pos = BIN_LOG_HEADER_SIZE; // skip magic number
- mi->using_gtid= Master_info::USE_GTID_NO;
+ if (mi->master_supports_gtid)
+ {
+ mi->using_gtid= Master_info::USE_GTID_SLAVE_POS;
+ }
mi->gtid_current_pos.reset();
mi->events_queued_since_last_gtid= 0;
mi->gtid_reconnect_event_skip_count= 0;
diff --git a/sql/rpl_mi.h b/sql/rpl_mi.h
index ecfecabd6c9..6058b7fb34c 100644
--- a/sql/rpl_mi.h
+++ b/sql/rpl_mi.h
@@ -375,6 +375,21 @@ class Master_info : public Slave_reporting_capability
at time its alter info struct is about to be appened to the list.
*/
bool is_shutdown= false;
+
+ /*
+ A replica will default to Slave_Pos for using Using_Gtid; however, we
+ first need to test if the master supports GTIDs. If not, fall back to 'No'.
+ Cache the value so future RESET SLAVE commands don't revert to Slave_Pos.
+ */
+ bool master_supports_gtid= true;
+
+ /*
+ When TRUE, transition this server from being an active master to a slave.
+ This updates the replication state to account for any transactions which
+ were committed into the binary log. In particular, it merges
+ gtid_binlog_pos into gtid_slave_pos.
+ */
+ bool is_demotion= false;
};
struct start_alter_thd_args
diff --git a/sql/share/errmsg-utf8.txt b/sql/share/errmsg-utf8.txt
index ec06427ecae..530ab9c1ed2 100644
--- a/sql/share/errmsg-utf8.txt
+++ b/sql/share/errmsg-utf8.txt
@@ -10074,3 +10074,9 @@ ER_INCONSISTENT_SLAVE_TEMP_TABLE
eng "Replicated query '%s' table `%s.%s` can not be temporary"
ER_VERS_HIST_PART_FAILED
eng "Versioned table %`s.%`s: adding HISTORY partition(s) failed"
+WARN_OPTION_CHANGING
+ eng "%s is implicitly changing the value of '%s' from '%s' to '%s'"
+ER_CM_OPTION_MISSING_REQUIREMENT
+ eng "CHANGE MASTER TO option '%s=%s' is missing requirement %s"
+ER_SLAVE_STATEMENT_TIMEOUT 70100
+ eng "Slave log event execution was interrupted (slave_max_statement_time exceeded)"
diff --git a/sql/slave.cc b/sql/slave.cc
index 4adbccc4968..eac1326df34 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -1775,6 +1775,9 @@ static int get_master_version_and_clock(MYSQL* mysql, Master_info* mi)
}
else
{
+ DBUG_EXECUTE_IF("mock_mariadb_primary_v5_in_get_master_version",
+ version= 5;);
+
/*
Note the following switch will bug when we have MySQL branch 30 ;)
*/
@@ -2358,6 +2361,14 @@ past_checksum:
after_set_capability:
#endif
+ if (!(mi->master_supports_gtid= version >= 10))
+ {
+ sql_print_information(
+ "Slave I/O thread: Falling back to Using_Gtid=No because "
+ "master does not support GTIDs");
+ mi->using_gtid= Master_info::USE_GTID_NO;
+ }
+
if (mi->using_gtid != Master_info::USE_GTID_NO)
{
/* Request dump to start from slave replication GTID state. */
diff --git a/sql/sp.cc b/sql/sp.cc
index 74743347816..6cfe1045b0c 100644
--- a/sql/sp.cc
+++ b/sql/sp.cc
@@ -217,12 +217,12 @@ TABLE_FIELD_TYPE proc_table_fields[MYSQL_PROC_FIELD_COUNT] =
},
{
{ STRING_WITH_LEN("collation_connection") },
- { STRING_WITH_LEN("char(32)") },
+ { STRING_WITH_LEN("char(") },
{ STRING_WITH_LEN("utf8mb3") }
},
{
{ STRING_WITH_LEN("db_collation") },
- { STRING_WITH_LEN("char(32)") },
+ { STRING_WITH_LEN("char(") },
{ STRING_WITH_LEN("utf8mb3") }
},
{
@@ -687,8 +687,7 @@ bool AUTHID::read_from_mysql_proc_row(THD *thd, TABLE *table)
*/
int
-Sp_handler::db_find_routine(THD *thd,
- const Database_qualified_name *name,
+Sp_handler::db_find_routine(THD *thd, const Database_qualified_name *name,
sp_head **sphp) const
{
TABLE *table;
@@ -697,7 +696,7 @@ Sp_handler::db_find_routine(THD *thd,
longlong created;
longlong modified;
Sp_chistics chistics;
- bool saved_time_zone_used= thd->time_zone_used;
+ THD::used_t saved_time_zone_used= thd->used & THD::TIME_ZONE_USED;
bool trans_commited= 0;
sql_mode_t sql_mode;
Stored_program_creation_ctx *creation_ctx;
@@ -763,15 +762,14 @@ Sp_handler::db_find_routine(THD *thd,
thd->commit_whole_transaction_and_close_tables();
new_trans.restore_old_transaction();
- ret= db_load_routine(thd, name, sphp,
- sql_mode, params, returns, body, chistics, definer,
- created, modified, NULL, creation_ctx);
+ ret= db_load_routine(thd, name, sphp, sql_mode, params, returns, body,
+ chistics, definer, created, modified, NULL, creation_ctx);
done:
/*
Restore the time zone flag as the timezone usage in proc table
does not affect replication.
*/
- thd->time_zone_used= saved_time_zone_used;
+ thd->used= (thd->used & ~THD::TIME_ZONE_USED) | saved_time_zone_used;
if (!trans_commited)
{
if (table)
diff --git a/sql/sp_head.cc b/sql/sp_head.cc
index 7e5ea9e6a96..bb1ebb04e26 100644
--- a/sql/sp_head.cc
+++ b/sql/sp_head.cc
@@ -3080,17 +3080,17 @@ sp_head::show_create_routine_get_fields(THD *thd, const Sp_handler *sph,
fields->push_back(new (mem_root)
Item_empty_string(thd, "character_set_client",
- MY_CS_NAME_SIZE),
+ MY_CS_CHARACTER_SET_NAME_SIZE),
mem_root);
fields->push_back(new (mem_root)
Item_empty_string(thd, "collation_connection",
- MY_CS_NAME_SIZE),
+ MY_CS_COLLATION_NAME_SIZE),
mem_root);
fields->push_back(new (mem_root)
Item_empty_string(thd, "Database Collation",
- MY_CS_NAME_SIZE),
+ MY_CS_COLLATION_NAME_SIZE),
mem_root);
}
@@ -3156,17 +3156,17 @@ sp_head::show_create_routine(THD *thd, const Sp_handler *sph)
fields.push_back(new (mem_root)
Item_empty_string(thd, "character_set_client",
- MY_CS_NAME_SIZE),
+ MY_CS_CHARACTER_SET_NAME_SIZE),
thd->mem_root);
fields.push_back(new (mem_root)
Item_empty_string(thd, "collation_connection",
- MY_CS_NAME_SIZE),
+ MY_CS_COLLATION_NAME_SIZE),
thd->mem_root);
fields.push_back(new (mem_root)
Item_empty_string(thd, "Database Collation",
- MY_CS_NAME_SIZE),
+ MY_CS_CHARACTER_SET_NAME_SIZE),
thd->mem_root);
if (protocol->send_result_set_metadata(&fields,
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index 57da25b5800..c3fc62f5f5d 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -637,7 +637,7 @@ THD::THD(my_thread_id id, bool is_wsrep_applier)
protocol_text(this), protocol_binary(this), initial_status_var(0),
m_current_stage_key(0), m_psi(0),
in_sub_stmt(0), log_all_errors(0),
- binlog_unsafe_warning_flags(0),
+ binlog_unsafe_warning_flags(0), used(0),
current_stmt_binlog_format(BINLOG_FORMAT_MIXED),
bulk_param(0),
table_map_for_update(0),
@@ -657,8 +657,6 @@ THD::THD(my_thread_id id, bool is_wsrep_applier)
is_fatal_error(0),
transaction_rollback_request(0),
is_fatal_sub_stmt_error(false),
- rand_used(0),
- time_zone_used(0),
in_lock_tables(0),
bootstrap(0),
derived_tables_processing(FALSE),
@@ -771,11 +769,10 @@ THD::THD(my_thread_id id, bool is_wsrep_applier)
security_ctx= &main_security_ctx;
no_errors= 0;
password= 0;
- query_start_sec_part_used= 0;
count_cuted_fields= CHECK_FIELD_IGNORE;
killed= NOT_KILLED;
killed_err= 0;
- is_slave_error= thread_specific_used= FALSE;
+ is_slave_error= FALSE;
my_hash_clear(&handler_tables_hash);
my_hash_clear(&ull_hash);
tmp_table=0;
@@ -2099,7 +2096,8 @@ int THD::killed_errno()
DBUG_RETURN(ER_QUERY_INTERRUPTED);
case KILL_TIMEOUT:
case KILL_TIMEOUT_HARD:
- DBUG_RETURN(ER_STATEMENT_TIMEOUT);
+ DBUG_RETURN(slave_thread ?
+ ER_SLAVE_STATEMENT_TIMEOUT : ER_STATEMENT_TIMEOUT);
case KILL_SERVER:
case KILL_SERVER_HARD:
DBUG_RETURN(ER_SERVER_SHUTDOWN);
@@ -2235,13 +2233,13 @@ void THD::cleanup_after_query()
thd_progress_end(this);
/*
- Reset rand_used so that detection of calls to rand() will save random
+ Reset RAND_USED so that detection of calls to rand() will save random
seeds if needed by the slave.
- Do not reset rand_used if inside a stored function or trigger because
+ Do not reset RAND_USED if inside a stored function or trigger because
only the call to these operations is logged. Thus only the calling
statement needs to detect rand() calls made by its substatements. These
- substatements must not set rand_used to 0 because it would remove the
+ substatements must not set RAND_USED to 0 because it would remove the
detection of rand() by the calling statement.
*/
if (!in_sub_stmt) /* stored functions and triggers are a special case */
@@ -2249,7 +2247,7 @@ void THD::cleanup_after_query()
/* Forget those values, for next binlogger: */
stmt_depends_on_first_successful_insert_id_in_prev_stmt= 0;
auto_inc_intervals_in_cur_stmt_for_binlog.empty();
- rand_used= 0;
+ used&= ~THD::RAND_USED;
#ifndef EMBEDDED_LIBRARY
/*
Clean possible unused INSERT_ID events by current statement.
@@ -7588,7 +7586,7 @@ MYSQL_TIME THD::query_start_TIME()
MYSQL_TIME res;
variables.time_zone->gmt_sec_to_TIME(&res, query_start());
res.second_part= query_start_sec_part();
- time_zone_used= 1;
+ used|= TIME_ZONE_USED;
return res;
}
@@ -8327,7 +8325,7 @@ Query_arena_stmt::~Query_arena_stmt()
bool THD::timestamp_to_TIME(MYSQL_TIME *ltime, my_time_t ts,
ulong sec_part, date_mode_t fuzzydate)
{
- time_zone_used= 1;
+ used|= TIME_ZONE_USED;
if (ts == 0 && sec_part == 0)
{
if (fuzzydate & TIME_NO_ZERO_DATE)
@@ -8370,3 +8368,21 @@ THD::charset_collation_context_alter_table(const TABLE_SHARE *s)
return Charset_collation_context(get_default_db_collation(this, s->db.str),
s->table_charset);
}
+
+
+void Charset_loader_server::raise_unknown_collation_error(const char *name) const
+{
+ ErrConvString err(name, &my_charset_utf8mb4_general_ci);
+ my_error(ER_UNKNOWN_COLLATION, MYF(0), err.ptr());
+ if (error[0])
+ push_warning_printf(current_thd,
+ Sql_condition::WARN_LEVEL_WARN,
+ ER_UNKNOWN_COLLATION, "%s", error);
+}
+
+
+void Charset_loader_server::raise_not_applicable_error(const char *cs,
+ const char *cl) const
+{
+ my_error(ER_COLLATION_CHARSET_MISMATCH, MYF(0), cl, cs);
+}
diff --git a/sql/sql_class.h b/sql/sql_class.h
index 422216133b0..5369d8d73b1 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -726,6 +726,7 @@ typedef struct system_variables
ulong net_retry_count;
ulong net_wait_timeout;
ulong net_write_timeout;
+ ulong optimizer_extra_pruning_depth;
ulong optimizer_prune_level;
ulong optimizer_search_depth;
ulong optimizer_selectivity_sampling_limit;
@@ -945,6 +946,7 @@ typedef struct system_status_var
ulong filesort_rows_;
ulong filesort_scan_count_;
ulong filesort_pq_sorts_;
+ ulong optimizer_join_prefixes_check_calls;
/* Features used */
ulong feature_custom_aggregate_functions; /* +1 when custom aggregate
@@ -1063,33 +1065,6 @@ static inline void update_global_memory_status(int64 size)
my_atomic_add64_explicit(ptr, size, MY_MEMORY_ORDER_RELAXED);
}
-/**
- Get collation by name, send error to client on failure.
- @param name Collation name
- @param name_cs Character set of the name string
- @return
- @retval NULL on error
- @retval Pointter to CHARSET_INFO with the given name on success
-*/
-static inline CHARSET_INFO *
-mysqld_collation_get_by_name(const char *name, myf utf8_flag,
- CHARSET_INFO *name_cs= system_charset_info)
-{
- CHARSET_INFO *cs;
- MY_CHARSET_LOADER loader;
- my_charset_loader_init_mysys(&loader);
-
- if (!(cs= my_collation_get_by_name(&loader, name, MYF(utf8_flag))))
- {
- ErrConvString err(name, name_cs);
- my_error(ER_UNKNOWN_COLLATION, MYF(0), err.ptr());
- if (loader.error[0])
- push_warning_printf(current_thd,
- Sql_condition::WARN_LEVEL_WARN,
- ER_UNKNOWN_COLLATION, "%s", loader.error);
- }
- return cs;
-}
static inline bool is_supported_parser_charset(CHARSET_INFO *cs)
{
@@ -2925,6 +2900,12 @@ public:
*/
uint32 binlog_unsafe_warning_flags;
+ typedef uint used_t;
+ enum { RAND_USED=1, TIME_ZONE_USED=2, QUERY_START_SEC_PART_USED=4,
+ THREAD_SPECIFIC_USED=8 };
+
+ used_t used;
+
#ifndef MYSQL_CLIENT
binlog_cache_mngr * binlog_setup_trx_data();
/*
@@ -3609,15 +3590,11 @@ public:
Reset to FALSE when we leave the sub-statement mode.
*/
bool is_fatal_sub_stmt_error;
- bool rand_used, time_zone_used;
- bool query_start_sec_part_used;
/* for IS NULL => = last_insert_id() fix in remove_eq_conds() */
bool substitute_null_with_insert_id;
bool in_lock_tables;
bool bootstrap, cleanup_done, free_connection_done;
- /** is set if some thread specific value(s) used in a statement. */
- bool thread_specific_used;
/**
is set if a statement accesses a temporary table created through
CREATE TEMPORARY TABLE.
@@ -3927,7 +3904,7 @@ public:
ulong sec_part, date_mode_t fuzzydate);
inline my_time_t query_start() { return start_time; }
inline ulong query_start_sec_part()
- { query_start_sec_part_used=1; return start_time_sec_part; }
+ { used|= QUERY_START_SEC_PART_USED; return start_time_sec_part; }
MYSQL_TIME query_start_TIME();
time_round_mode_t temporal_round_mode() const
{
@@ -5451,23 +5428,28 @@ public:
{
#ifndef EMBEDDED_LIBRARY
/*
+ Slave vs user threads have timeouts configured via different variables,
+ so pick the appropriate one to use.
+ */
+ ulonglong timeout_val=
+ slave_thread ? slave_max_statement_time : variables.max_statement_time;
+
+ /*
Don't start a query timer if
- If timeouts are not set
- if we are in a stored procedure or sub statement
- - If this is a slave thread
- If we already have set a timeout (happens when running prepared
statements that calls mysql_execute_command())
*/
- if (!variables.max_statement_time || spcont || in_sub_stmt ||
- slave_thread || query_timer.expired == 0)
+ if (!timeout_val || spcont || in_sub_stmt || query_timer.expired == 0)
return;
- thr_timer_settime(&query_timer, variables.max_statement_time);
+ thr_timer_settime(&query_timer, timeout_val);
#endif
}
void reset_query_timer()
{
#ifndef EMBEDDED_LIBRARY
- if (spcont || in_sub_stmt || slave_thread)
+ if (spcont || in_sub_stmt)
return;
if (!query_timer.expired)
thr_timer_end(&query_timer);
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index b308b1e53a0..d31d0b949ba 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -1644,7 +1644,7 @@ bool multi_delete::send_eof()
thd->clear_error();
else
errcode= query_error_code(thd, killed_status == NOT_KILLED);
- thd->thread_specific_used= TRUE;
+ thd->used|= THD::THREAD_SPECIFIC_USED;
StatementBinlog stmt_binlog(thd, thd->binlog_need_stmt_format(transactional_tables));
if (unlikely(thd->binlog_query(THD::ROW_QUERY_TYPE,
thd->query(), thd->query_length(),
diff --git a/sql/sql_i_s.h b/sql/sql_i_s.h
index a3614d889c9..263031ae2c9 100644
--- a/sql/sql_i_s.h
+++ b/sql/sql_i_s.h
@@ -18,7 +18,7 @@
#include "sql_const.h" // MAX_FIELD_VARCHARLENGTH
#include "sql_basic_types.h" // enum_nullability
-#include "sql_string.h" // strlen, MY_CS_NAME_SIZE
+#include "sql_string.h" // strlen, MY_CS_CHARACTER_SET_NAME_SIZE
#include "lex_string.h" // LEX_CSTRING
#include "mysql_com.h" // enum_field_types
#include "my_time.h" // TIME_SECOND_PART_DIGITS
@@ -162,6 +162,11 @@ class Yes_or_empty: public Varchar
{
public:
Yes_or_empty(): Varchar(3) { }
+ static LEX_CSTRING value(bool val)
+ {
+ return val ? Lex_cstring(STRING_WITH_LEN("Yes")) :
+ Lex_cstring();
+ }
};
@@ -196,7 +201,14 @@ public:
class CSName: public Varchar
{
public:
- CSName(): Varchar(MY_CS_NAME_SIZE) { }
+ CSName(): Varchar(MY_CS_CHARACTER_SET_NAME_SIZE) { }
+};
+
+
+class CLName: public Varchar
+{
+public:
+ CLName(): Varchar(MY_CS_COLLATION_NAME_SIZE) { }
};
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index a7fc7afb19f..adcc46637d9 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -2280,7 +2280,8 @@ public:
ulong start_time_sec_part;
sql_mode_t sql_mode;
bool auto_increment_field_not_null;
- bool ignore, log_query, query_start_sec_part_used;
+ bool ignore, log_query;
+ THD::used_t query_start_sec_part_used;
bool stmt_depends_on_first_successful_insert_id_in_prev_stmt;
ulonglong first_successful_insert_id_in_prev_stmt;
ulonglong forced_insert_id;
@@ -2938,7 +2939,7 @@ int write_delayed(THD *thd, TABLE *table, enum_duplicates duplic,
row->start_time= thd->start_time;
row->start_time_sec_part= thd->start_time_sec_part;
- row->query_start_sec_part_used= thd->query_start_sec_part_used;
+ row->query_start_sec_part_used= thd->used & THD::QUERY_START_SEC_PART_USED;
/*
those are for the binlog: LAST_INSERT_ID() has been evaluated at this
time, so record does not need it, but statement-based binlogging of the
@@ -2955,7 +2956,7 @@ int write_delayed(THD *thd, TABLE *table, enum_duplicates duplic,
So we can get time_zone object from thread which handling delayed statement.
See the comment of my_tz_find() for detail.
*/
- if (thd->time_zone_used)
+ if (thd->used & THD::TIME_ZONE_USED)
{
row->time_zone = thd->variables.time_zone;
}
@@ -3569,7 +3570,7 @@ bool Delayed_insert::handle_inserts(void)
thd.start_time=row->start_time;
thd.start_time_sec_part=row->start_time_sec_part;
- thd.query_start_sec_part_used=row->query_start_sec_part_used;
+ thd.used= row->query_start_sec_part_used;
/*
To get the exact auto_inc interval to store in the binlog we must not
use values from the previous interval (of the previous rows).
diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc
index 12205dd357e..9d16f0dad35 100644
--- a/sql/sql_lex.cc
+++ b/sql/sql_lex.cc
@@ -3391,7 +3391,7 @@ bool st_select_lex::test_limit()
-st_select_lex* st_select_lex_unit::outer_select()
+st_select_lex* st_select_lex_unit::outer_select() const
{
return (st_select_lex*) master;
}
@@ -11913,15 +11913,33 @@ bool SELECT_LEX_UNIT::explainable() const
EXPLAIN/ANALYZE unit, when:
(1) if it's a subquery - it's not part of eliminated WHERE/ON clause.
(2) if it's a CTE - it's not hanging (needed for execution)
- (3) if it's a derived - it's not merged
+ (3) if it's a derived - it's not merged or eliminated
if it's not 1/2/3 - it's some weird internal thing, ignore it
*/
+
return item ?
!item->eliminated : // (1)
with_element ?
derived && derived->derived_result &&
!with_element->is_hanging_recursive(): // (2)
derived ?
- derived->is_materialized_derived() : // (3)
+ derived->is_materialized_derived() && // (3)
+ !is_derived_eliminated() :
false;
}
+
+/*
+ Determines whether the derived table was eliminated during
+ the call of eliminate_tables(JOIN *) made at the optimization stage
+ or completely optimized out (for such degenerate statements like
+ "SELECT 1", for example)
+*/
+
+bool SELECT_LEX_UNIT::is_derived_eliminated() const
+{
+ if (!derived)
+ return false;
+ if (!derived->table)
+ return true;
+ return derived->table->map & outer_select()->join->eliminated_tables;
+}
diff --git a/sql/sql_lex.h b/sql/sql_lex.h
index 8e2a16d135d..942e2075ff1 100644
--- a/sql/sql_lex.h
+++ b/sql/sql_lex.h
@@ -499,6 +499,7 @@ struct LEX_MASTER_INFO
uint port, connect_retry;
float heartbeat_period;
int sql_delay;
+ bool is_demotion_opt;
/*
Enum is used for making it possible to detect if the user
changed variable or if it should be left at old value
@@ -541,6 +542,7 @@ struct LEX_MASTER_INFO
gtid_pos_str= null_clex_str;
use_gtid_opt= LEX_GTID_UNCHANGED;
sql_delay= -1;
+ is_demotion_opt= 0;
}
};
@@ -971,7 +973,7 @@ public:
};
void init_query();
- st_select_lex* outer_select();
+ st_select_lex* outer_select() const;
const st_select_lex* first_select() const
{
return reinterpret_cast<const st_select_lex*>(slave);
@@ -1039,6 +1041,9 @@ public:
bool set_lock_to_the_last_select(Lex_select_lock l);
friend class st_select_lex;
+
+private:
+ bool is_derived_eliminated() const;
};
typedef class st_select_lex_unit SELECT_LEX_UNIT;
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 65a156d5061..24a4b4a69c7 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -7561,8 +7561,8 @@ void THD::reset_for_next_command(bool do_clear_error)
}
#endif /* WITH_WSREP */
- query_start_sec_part_used= 0;
- is_fatal_error= time_zone_used= 0;
+ used= 0;
+ is_fatal_error= 0;
variables.option_bits&= ~OPTION_BINLOG_THIS_STMT;
/*
@@ -7581,14 +7581,12 @@ void THD::reset_for_next_command(bool do_clear_error)
transaction->all.reset();
}
DBUG_ASSERT(security_ctx== &main_security_ctx);
- thread_specific_used= FALSE;
if (opt_bin_log)
reset_dynamic(&user_var_events);
DBUG_ASSERT(user_var_events_alloc == &main_mem_root);
enable_slow_log= true;
get_stmt_da()->reset_for_next_command();
- rand_used= 0;
m_sent_row_count= m_examined_row_count= 0;
accessed_rows_and_keys= 0;
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc
index e990b94b43c..d338dc302e6 100644
--- a/sql/sql_repl.cc
+++ b/sql/sql_repl.cc
@@ -3424,6 +3424,16 @@ int reset_slave(THD *thd, Master_info* mi)
goto err;
}
+ if (mi->using_gtid != Master_info::USE_GTID_SLAVE_POS &&
+ mi->master_supports_gtid)
+ {
+ push_warning_printf(
+ thd, Sql_condition::WARN_LEVEL_NOTE, WARN_OPTION_CHANGING,
+ ER_THD(thd, WARN_OPTION_CHANGING), "RESET SLAVE", "Using_Gtid",
+ mi->using_gtid_astext(mi->using_gtid),
+ mi->using_gtid_astext(Master_info::USE_GTID_SLAVE_POS));
+ }
+
/* Clear master's log coordinates and associated information */
mi->clear_in_memory_info(thd->lex->reset_slave_info.all);
@@ -3816,11 +3826,51 @@ bool change_master(THD* thd, Master_info* mi, bool *master_info_added)
if (lex_mi->use_gtid_opt == LEX_MASTER_INFO::LEX_GTID_SLAVE_POS)
mi->using_gtid= Master_info::USE_GTID_SLAVE_POS;
else if (lex_mi->use_gtid_opt == LEX_MASTER_INFO::LEX_GTID_CURRENT_POS)
+ {
mi->using_gtid= Master_info::USE_GTID_CURRENT_POS;
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
+ ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT,
+ ER_THD(thd, ER_WARN_DEPRECATED_SYNTAX),
+ "master_use_gtid=current_pos", "master_demote_to_slave=1");
+ }
else if (lex_mi->use_gtid_opt == LEX_MASTER_INFO::LEX_GTID_NO ||
lex_mi->log_file_name || lex_mi->pos ||
lex_mi->relay_log_name || lex_mi->relay_log_pos)
+ {
+ if (lex_mi->use_gtid_opt != LEX_MASTER_INFO::LEX_GTID_NO)
+ {
+ push_warning_printf(
+ thd, Sql_condition::WARN_LEVEL_NOTE, WARN_OPTION_CHANGING,
+ ER_THD(thd, WARN_OPTION_CHANGING), "CHANGE MASTER TO", "Using_Gtid",
+ mi->using_gtid_astext(mi->using_gtid),
+ mi->using_gtid_astext(Master_info::USE_GTID_NO));
+ }
mi->using_gtid= Master_info::USE_GTID_NO;
+ }
+
+ /*
+ Warn about ignored options if there are GTID/log coordinate option
+ conflicts
+ */
+ if (mi->using_gtid != Master_info::USE_GTID_NO)
+ {
+ if (lex_mi->log_file_name)
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
+ WARN_OPTION_IGNORED,
+ ER_THD(thd, WARN_OPTION_IGNORED), "MASTER_LOG_FILE");
+ if (lex_mi->pos)
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
+ WARN_OPTION_IGNORED,
+ ER_THD(thd, WARN_OPTION_IGNORED), "MASTER_LOG_POS");
+ if (lex_mi->relay_log_name)
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
+ WARN_OPTION_IGNORED,
+ ER_THD(thd, WARN_OPTION_IGNORED), "RELAY_LOG_FILE");
+ if (lex_mi->relay_log_pos)
+ push_warning_printf(thd, Sql_condition::WARN_LEVEL_NOTE,
+ WARN_OPTION_IGNORED,
+ ER_THD(thd, WARN_OPTION_IGNORED), "RELAY_LOG_POS");
+ }
do_ids= ((lex_mi->repl_do_domain_ids_opt ==
LEX_MASTER_INFO::LEX_MI_ENABLE) ?
@@ -3874,6 +3924,40 @@ bool change_master(THD* thd, Master_info* mi, bool *master_info_added)
}
/*
+ MASTER_DEMOTE_TO_SLAVE is set. Merge gtid_binlog_pos into gtid_slave_pos.
+ */
+ if (lex_mi->is_demotion_opt)
+ {
+ String new_gtid_state;
+
+ if (mi->using_gtid != Master_info::USE_GTID_SLAVE_POS)
+ {
+ my_error(ER_CM_OPTION_MISSING_REQUIREMENT, MYF(0),
+ "MASTER_DEMOTE_TO_SLAVE", "TRUE", "Using_Gtid=Slave_Pos");
+ ret= TRUE;
+ goto err;
+ }
+
+ if (!mysql_bin_log.is_open())
+ {
+ my_error(ER_NO_BINARY_LOGGING, MYF(0));
+ ret= TRUE;
+ goto err;
+ }
+
+ if ((ret= rpl_append_gtid_state(&new_gtid_state, true)))
+ goto err;
+
+ if (rpl_global_gtid_slave_state->load(
+ thd, new_gtid_state.ptr(), new_gtid_state.length(), true, true))
+ {
+ my_error(ER_FAILED_GTID_STATE_INIT, MYF(0));
+ ret= TRUE;
+ goto err;
+ }
+ }
+
+ /*
Relay log's IO_CACHE may not be inited, if rli->inited==0 (server was never
a slave before).
*/
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 91c9cac451c..1f48118dd10 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -110,21 +110,22 @@ static ha_rows get_quick_record_count(THD *thd, SQL_SELECT *select,
const key_map *keys,ha_rows limit);
static void optimize_straight_join(JOIN *join, table_map join_tables);
static bool greedy_search(JOIN *join, table_map remaining_tables,
- uint depth, uint prune_level,
- uint use_cond_selectivity);
+ uint depth, uint use_cond_selectivity);
+
enum enum_best_search {
SEARCH_ABORT= -2,
SEARCH_ERROR= -1,
SEARCH_OK= 0,
SEARCH_FOUND_EDGE=1
};
+
static enum_best_search
best_extension_by_limited_search(JOIN *join,
table_map remaining_tables,
uint idx, double record_count,
double read_time, uint depth,
- uint prune_level,
- uint use_cond_selectivity);
+ uint use_cond_selectivity,
+ table_map *processed_eq_ref_tables);
static uint determine_search_depth(JOIN* join);
C_MODE_START
static int join_tab_cmp(const void *dummy, const void* ptr1, const void* ptr2);
@@ -492,6 +493,7 @@ void JOIN::init(THD *thd_arg, List<Item> &fields_arg,
original_join_tab= 0;
explain= NULL;
tmp_table_keep_current_rowid= 0;
+ allowed_top_level_tables= 0;
all_fields= fields_arg;
if (&fields_list != &fields_arg) /* Avoid valgrind-warning */
@@ -2185,6 +2187,9 @@ JOIN::optimize_inner()
thd->restore_active_arena(arena, &backup);
}
+ if (!allowed_top_level_tables)
+ calc_allowed_top_level_tables(select_lex);
+
if (optimize_constant_subqueries())
DBUG_RETURN(1);
@@ -5249,6 +5254,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
int error= 0;
TABLE *UNINIT_VAR(table); /* inited in all loops */
uint i,table_count,const_count,key;
+ uint sort_space;
table_map found_const_table_map, all_table_map;
key_map const_ref, eq_part;
bool has_expensive_keyparts;
@@ -5266,6 +5272,13 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
table_count=join->table_count;
/*
+ best_extension_by_limited_search need sort space for 2POSITIION
+ objects per remaining table, which gives us
+ 2*(T + T-1 + T-2 + T-3...1 POSITIONS) = 2*(T+1)/2*T = (T*T+T)
+ */
+ join->sort_space= sort_space= (table_count*table_count + table_count);
+
+ /*
best_positions is ok to allocate with alloc() as we copy things to it with
memcpy()
*/
@@ -5276,6 +5289,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
&stat_vector, sizeof(JOIN_TAB*)* (table_count +1),
&table_vector, sizeof(TABLE*)*(table_count*2),
&join->positions, sizeof(POSITION)*(table_count + 1),
+ &join->sort_positions, sizeof(POSITION)*(sort_space),
&join->best_positions,
sizeof(POSITION)*(table_count + 1),
NullS))
@@ -5287,6 +5301,8 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
/* Initialize POSITION objects */
for (i=0 ; i <= table_count ; i++)
(void) new ((char*) (join->positions + i)) POSITION;
+ for (i=0 ; i <= sort_space ; i++)
+ (void) new ((char*) (join->sort_positions + i)) POSITION;
join->best_ref= stat_vector;
@@ -5453,6 +5469,17 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
}
}
+ {
+ for (JOIN_TAB *s= stat ; s < stat_end ; s++)
+ {
+ TABLE_LIST *tl= s->table->pos_in_table_list;
+ if (tl->embedding && tl->embedding->sj_subq_pred)
+ {
+ s->embedded_dependent= tl->embedding->original_subq_pred_used_tables;
+ }
+ }
+ }
+
if (thd->trace_started())
trace_table_dependencies(thd, stat, join->table_count);
@@ -5470,7 +5497,7 @@ make_join_statistics(JOIN *join, List<TABLE_LIST> &tables_list,
join->unit->item->get_IN_subquery()->test_strategy(SUBS_IN_TO_EXISTS));
if (keyuse_array->elements &&
- sort_and_filter_keyuse(thd, keyuse_array,
+ sort_and_filter_keyuse(join, keyuse_array,
skip_unprefixed_keyparts))
goto error;
DBUG_EXECUTE("opt", print_keyuse_array(keyuse_array););
@@ -7268,6 +7295,32 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab,
DBUG_RETURN(FALSE);
}
+/*
+ check if key could be used with eq_ref
+
+ The assumption is that all previous key parts where used
+*/
+
+static void remember_if_eq_ref_key(JOIN *join, KEYUSE *use)
+{
+ DBUG_ASSERT(use->keypart != FT_KEYPART && use->key != MAX_KEY);
+ TABLE *table= use->table;
+ KEY *key= table->key_info+use->key;
+ ulong key_flags= table->actual_key_flags(key);
+
+ /*
+ Check if possible eq_ref key
+ This may include keys that does not have HA_NULL_PART_KEY
+ set, but this is ok as best_access_path will resolve this.
+ */
+ if ((key_flags & (HA_NOSAME | HA_EXT_NOSAME)))
+ {
+ uint key_parts= table->actual_n_key_parts(key);
+ if (use->keypart+1 == key_parts)
+ join->eq_ref_tables|= table->map;
+ }
+}
+
/**
Sort the array of possible keys and remove the following key parts:
@@ -7278,14 +7331,19 @@ update_ref_and_keys(THD *thd, DYNAMIC_ARRAY *keyuse,JOIN_TAB *join_tab,
(e.g. if there is a key(a,b,c) but only b < 5 (or a=2 and c < 3) is
used in the query, we drop the partial key parts from consideration).
Special treatment for ft-keys.
+ Update join->eq_ref_tables with a bitmap of all tables that can possible
+ have a EQ_REF key.
*/
-bool sort_and_filter_keyuse(THD *thd, DYNAMIC_ARRAY *keyuse,
+bool sort_and_filter_keyuse(JOIN *join, DYNAMIC_ARRAY *keyuse,
bool skip_unprefixed_keyparts)
{
+ THD *thd= join->thd;
KEYUSE key_end, *prev, *save_pos, *use;
uint found_eq_constant, i;
+ bool found_unprefixed_key_part= 0;
+ join->eq_ref_tables= 0;
DBUG_ASSERT(keyuse->elements);
my_qsort(keyuse->buffer, keyuse->elements, sizeof(KEYUSE),
@@ -7313,18 +7371,45 @@ bool sort_and_filter_keyuse(THD *thd, DYNAMIC_ARRAY *keyuse,
{
if (use->key == prev->key && use->table == prev->table)
{
- if ((prev->keypart+1 < use->keypart && skip_unprefixed_keyparts) ||
- (prev->keypart == use->keypart && found_eq_constant))
- continue; /* remove */
+ if (prev->keypart == use->keypart && found_eq_constant)
+ continue;
+ if (prev->keypart+1 < use->keypart)
+ {
+ found_unprefixed_key_part= 1;
+ if (skip_unprefixed_keyparts)
+ continue; /* remove */
+ }
+ }
+ else
+ {
+ /* Key changed, check if previous key was a primary/unique key lookup */
+ if (prev != &key_end && !found_unprefixed_key_part)
+ remember_if_eq_ref_key(join, prev);
+ found_unprefixed_key_part= 0;
+ if (use->keypart != 0)
+ {
+ found_unprefixed_key_part= 1;
+ if (skip_unprefixed_keyparts)
+ continue; /* remove - first found key part must be 0 */
+ }
}
- else if (use->keypart != 0 && skip_unprefixed_keyparts)
- continue; /* remove - first found must be 0 */
}
-
+ else /* FT_KEY_PART */
+ {
+ if (prev != &key_end && !found_unprefixed_key_part)
+ remember_if_eq_ref_key(join, prev);
+ found_unprefixed_key_part= 1; // This key cannot be EQ_REF
+ }
prev= use;
found_eq_constant= !use->used_tables;
use->table->reginfo.join_tab->checked_keys.set_bit(use->key);
}
+ else
+ {
+ if (prev != &key_end && !found_unprefixed_key_part)
+ remember_if_eq_ref_key(join, prev);
+ prev= &key_end;
+ }
/*
Old gcc used a memcpy(), which is undefined if save_pos==use:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19410
@@ -7338,6 +7423,8 @@ bool sort_and_filter_keyuse(THD *thd, DYNAMIC_ARRAY *keyuse,
use->table->reginfo.join_tab->keyuse= save_pos;
save_pos++;
}
+ if (prev != &key_end && !found_unprefixed_key_part)
+ remember_if_eq_ref_key(join, prev);
i= (uint) (save_pos-(KEYUSE*) keyuse->buffer);
(void) set_dynamic(keyuse,(uchar*) &key_end,i);
keyuse->elements= i;
@@ -7786,6 +7873,8 @@ best_access_path(JOIN *join,
Json_writer_object trace_wrapper(thd, "best_access_path");
+ trace_wrapper.add_table_name(s);
+
bitmap_clear_all(eq_join_set);
loose_scan_opt.init(join, s, remaining_tables);
@@ -7951,7 +8040,8 @@ best_access_path(JOIN *join,
(!(key_flags & HA_NULL_PART_KEY) || // (2)
all_key_parts == notnull_part)) // (3)
{
-
+ /* Check that eq_ref_tables are correctly updated */
+ DBUG_ASSERT(join->eq_ref_tables & table->map);
/* TODO: Adjust cost for covering and clustering key */
type= JT_EQ_REF;
trace_access_idx.add("access_type", join_type_str[type])
@@ -8338,10 +8428,13 @@ best_access_path(JOIN *join,
*/
if (s->key_start_dependent)
key_dependent= s->key_dependent;
+ /* Add dependencey for sub queries */
+ key_dependent|= s->embedded_dependent;
}
/* Check that s->key_dependent contains all used_tables found in s->keyuse */
key_dependent&= ~PSEUDO_TABLE_BITS;
- DBUG_ASSERT((key_dependent & s->key_dependent) == key_dependent);
+ DBUG_ASSERT((key_dependent & (s->key_dependent | s->embedded_dependent)) ==
+ key_dependent);
/*
If there is no key to access the table, but there is an equi-join
@@ -8753,7 +8846,6 @@ bool
choose_plan(JOIN *join, table_map join_tables)
{
uint search_depth= join->thd->variables.optimizer_search_depth;
- uint prune_level= join->thd->variables.optimizer_prune_level;
uint use_cond_selectivity=
join->thd->variables.optimizer_use_condition_selectivity;
bool straight_join= MY_TEST(join->select_options & SELECT_STRAIGHT_JOIN);
@@ -8761,6 +8853,9 @@ choose_plan(JOIN *join, table_map join_tables)
DBUG_ENTER("choose_plan");
join->cur_embedding_map= 0;
+ join->extra_heuristic_pruning= false;
+ join->prune_level= join->thd->variables.optimizer_prune_level;
+
reset_nj_counters(join, join->join_list);
qsort2_cmp jtab_sort_func;
@@ -8817,8 +8912,14 @@ choose_plan(JOIN *join, table_map join_tables)
if (search_depth == 0)
/* Automatically determine a reasonable value for 'search_depth' */
search_depth= determine_search_depth(join);
- if (greedy_search(join, join_tables, search_depth, prune_level,
- use_cond_selectivity))
+
+ if (join->prune_level >= 1 &&
+ search_depth >= thd->variables.optimizer_extra_pruning_depth)
+ {
+ join->extra_heuristic_pruning= true;
+ }
+
+ if (greedy_search(join, join_tables, search_depth, use_cond_selectivity))
DBUG_RETURN(TRUE);
}
@@ -8930,14 +9031,9 @@ join_tab_cmp(const void *dummy, const void* ptr1, const void* ptr2)
if ((cmp= compare_embedding_subqueries(jt1, jt2)) != 0)
return cmp;
/*
- After that,
- take care about ordering imposed by LEFT JOIN constraints,
- possible [eq]ref accesses, and numbers of matching records in the table.
+ After that do ordering according to numbers of
+ records in the table.
*/
- if (jt1->dependent & jt2->table->map)
- return 1;
- if (jt2->dependent & jt1->table->map)
- return -1;
if (jt1->found_records > jt2->found_records)
return 1;
if (jt1->found_records < jt2->found_records)
@@ -8968,10 +9064,15 @@ join_tab_cmp_straight(const void *dummy, const void* ptr1, const void* ptr2)
if ((cmp= compare_embedding_subqueries(jt1, jt2)) != 0)
return cmp;
+ /*
+ We have to check dependency with straight_join as we don't reorder
+ later as we do for other plans in best_extension_by_limited_search().
+ */
if (jt1->dependent & jt2->table->map)
return 1;
if (jt2->dependent & jt1->table->map)
return -1;
+
return jt1 > jt2 ? 1 : (jt1 < jt2 ? -1 : 0);
}
@@ -8993,11 +9094,6 @@ join_tab_cmp_embedded_first(const void *emb, const void* ptr1, const void* ptr2
if (jt1->emb_sj_nest != emb_nest && jt2->emb_sj_nest == emb_nest)
return 1;
- if (jt1->dependent & jt2->table->map)
- return 1;
- if (jt2->dependent & jt1->table->map)
- return -1;
-
if (jt1->found_records > jt2->found_records)
return 1;
if (jt1->found_records < jt2->found_records)
@@ -9070,9 +9166,9 @@ determine_search_depth(JOIN *join)
access method. The final optimal plan is stored in the array
'join->best_positions', and the corresponding cost in 'join->best_read'.
- @param join pointer to the structure providing all context info for
- the query
- @param join_tables set of the tables in the query
+ @param join pointer to the structure providing all context info
+ for the query
+ @param remaining_tables set of the tables in the query
@note
This function can be applied to:
@@ -9101,10 +9197,7 @@ optimize_straight_join(JOIN *join, table_map remaining_tables)
POSITION *position= join->positions + idx;
Json_writer_object trace_one_table(thd);
if (unlikely(thd->trace_started()))
- {
trace_plan_prefix(join, idx, remaining_tables);
- trace_one_table.add_table_name(s);
- }
/* Find the best access method from 's' to the current partial plan */
best_access_path(join, s, remaining_tables, join->positions, idx,
disable_jbuf, record_count,
@@ -9138,7 +9231,7 @@ optimize_straight_join(JOIN *join, table_map remaining_tables)
memcpy((uchar*) join->best_positions, (uchar*) join->positions,
sizeof(POSITION)*idx);
join->join_record_count= record_count;
- join->best_read= read_time - 0.001;
+ join->best_read= read_time - COST_EPS;
}
@@ -9214,8 +9307,6 @@ optimize_straight_join(JOIN *join, table_map remaining_tables)
for the query
@param remaining_tables set of tables not included into the partial plan yet
@param search_depth controlls the exhaustiveness of the search
- @param prune_level the pruning heuristics that should be applied during
- search
@param use_cond_selectivity specifies how the selectivity of the conditions
pushed to a table should be taken into account
@@ -9229,7 +9320,6 @@ static bool
greedy_search(JOIN *join,
table_map remaining_tables,
uint search_depth,
- uint prune_level,
uint use_cond_selectivity)
{
double record_count= 1.0;
@@ -9237,6 +9327,7 @@ greedy_search(JOIN *join,
uint idx= join->const_tables; // index into 'join->best_ref'
uint best_idx;
uint size_remain; // cardinality of remaining_tables
+ table_map usable_tables, eq_ref_tables;
POSITION best_pos;
JOIN_TAB *best_table; // the next plan node to be added to the curr QEP
// ==join->tables or # tables in the sj-mat nest we're optimizing
@@ -9244,21 +9335,26 @@ greedy_search(JOIN *join,
DBUG_ENTER("greedy_search");
/* number of tables that remain to be optimized */
- n_tables= size_remain= my_count_bits(remaining_tables &
- (join->emb_sjm_nest?
- (join->emb_sjm_nest->sj_inner_tables &
- ~join->const_table_map)
- :
- ~(table_map)0));
+ usable_tables= (join->emb_sjm_nest ?
+ (join->emb_sjm_nest->sj_inner_tables &
+ ~join->const_table_map & remaining_tables):
+ remaining_tables);
+ n_tables= size_remain= my_count_bits(usable_tables);
+ join->next_sort_position= join->sort_positions;
do {
- /* Find the extension of the current QEP with the lowest cost */
+ /*
+ Find the extension of the current QEP with the lowest cost
+ We are using remaining_table instead of usable tables here as
+ in case of an emb_sjm_nest, we want to be able to check if
+ an embedded table is depending on an outer table.
+ */
join->best_read= DBL_MAX;
if ((int) best_extension_by_limited_search(join, remaining_tables, idx,
record_count,
read_time, search_depth,
- prune_level,
- use_cond_selectivity) <
+ use_cond_selectivity,
+ &eq_ref_tables) <
(int) SEARCH_OK)
DBUG_RETURN(TRUE);
/*
@@ -9315,13 +9411,13 @@ greedy_search(JOIN *join,
while (pos && best_table != pos)
pos= join->best_ref[++best_idx];
DBUG_ASSERT((pos != NULL)); // should always find 'best_table'
+
/*
- move 'best_table' at the first free position in the array of joins,
- keeping the sorted table order intact
+ Move 'best_table' at the first free position in the array of joins
+ We don't need to keep the array sorted as
+ best_extension_by_limited_search() will sort them.
*/
- memmove(join->best_ref + idx + 1, join->best_ref + idx,
- sizeof(JOIN_TAB*) * (best_idx - idx));
- join->best_ref[idx]= best_table;
+ swap_variables(JOIN_TAB*, join->best_ref[idx], join->best_ref[best_idx]);
/* compute the cost of the new plan extended with 'best_table' */
record_count= COST_MULT(record_count, join->positions[idx].records_read);
@@ -9926,6 +10022,129 @@ check_if_edge_table(POSITION *pos,
}
+struct SORT_POSITION
+{
+ JOIN_TAB **join_tab;
+ POSITION *position;
+};
+
+
+/*
+ Sort SORT_POSITIONS according to expected number of rows found
+ If number of combinations are the same sort according to join_tab order
+ (same table order as used in the original SQL query)
+*/
+
+static int
+sort_positions(SORT_POSITION *a, SORT_POSITION *b)
+{
+ int cmp;
+ if ((cmp= compare_embedding_subqueries(*a->join_tab, *b->join_tab)) != 0)
+ return cmp;
+
+ if (a->position->records_read > b->position->records_read)
+ return 1;
+ if (a->position->records_read < b->position->records_read)
+ return -1;
+ return CMP_NUM(*a->join_tab, *b->join_tab);
+}
+
+
+/*
+ Call best_access_path() for a set of tables and collect results
+
+ @param join JOIN object
+ @param trace_one_table Current optimizer_trace
+ @param pos Pointer to remanining tables
+ @param allowed_tables bitmap of allowed tables. On return set to
+ the collected tables.
+ @param store_poisition Points to where to store next found SORT_POSITION.
+ Will be updated to next free position.
+ @param stop_on_eq_ref Stop searching for more tables if we found an EQ_REF
+ table.
+
+ @return
+ 0 Normal
+ 1 Eq_ref table found (only if stop_on_eq_ref is used)
+
+ join->next_sort_position will be update to next free position.
+*/
+
+static bool
+get_costs_for_tables(JOIN *join, table_map remaining_tables, uint idx,
+ double record_count,
+ Json_writer_object *trace_one_table,
+ JOIN_TAB **pos, SORT_POSITION **store_position,
+ table_map *allowed_tables,
+ bool stop_on_eq_ref)
+{
+ THD *thd= join->thd;
+ POSITION *sort_position= join->next_sort_position;
+ SORT_POSITION *sort_end= *store_position;
+ JOIN_TAB *s;
+ table_map found_tables= 0;
+ bool found_eq_ref= 0;
+ bool disable_jbuf= join->thd->variables.join_cache_level == 0;
+ DBUG_ENTER("get_plans_for_tables");
+
+ s= *pos;
+ do
+ {
+ table_map real_table_bit= s->table->map;
+ if ((*allowed_tables & real_table_bit) &&
+ !(remaining_tables & s->dependent))
+ {
+#ifdef DBUG_ASSERT_EXISTS
+ DBUG_ASSERT(!check_interleaving_with_nj(s));
+ restore_prev_nj_state(s); // Revert effect of check_... call
+#endif
+ sort_end->join_tab= pos;
+ sort_end->position= sort_position;
+
+
+ Json_writer_object wrapper(thd);
+ /* Find the best access method from 's' to the current partial plan */
+ best_access_path(join, s, remaining_tables, join->positions, idx,
+ disable_jbuf, record_count,
+ sort_position, sort_position + 1);
+ found_tables|= s->table->map;
+ sort_end++;
+ sort_position+= 2;
+ if (unlikely(stop_on_eq_ref) && sort_position[-2].type == JT_EQ_REF)
+ {
+ /* Found an eq_ref tables. Use this, ignoring the other tables */
+ found_eq_ref= 1;
+ if (found_tables == s->table->map)
+ break; // First table
+
+ /* Store the found eq_ref table first in store_position */
+ sort_position-= 2;
+ *allowed_tables= s->table->map;
+ (*store_position)->join_tab= pos;
+ (*store_position)->position= sort_position;
+ (*store_position)++;
+ join->next_sort_position[0]= sort_position[0];
+ join->next_sort_position[1]= sort_position[1];
+ join->next_sort_position+= 2;
+ DBUG_RETURN(1);
+ }
+ }
+ else
+ {
+ /* Verify that 'allowed_current_tables' was calculated correctly */
+ DBUG_ASSERT((remaining_tables & s->dependent) ||
+ !(remaining_tables & real_table_bit) ||
+ !(*allowed_tables & real_table_bit) ||
+ check_interleaving_with_nj(s));
+ }
+ } while ((s= *++pos));
+
+ *allowed_tables= found_tables;
+ *store_position= sort_end;
+ join->next_sort_position= sort_position;
+ DBUG_RETURN(found_eq_ref);
+}
+
/**
Find a good, possibly optimal, query execution plan (QEP) by a possibly
exhaustive search.
@@ -10013,8 +10232,7 @@ check_if_edge_table(POSITION *pos,
When 'best_extension_by_limited_search' is called for the first time,
'join->best_read' must be set to the largest possible value (e.g. DBL_MAX).
The actual implementation provides a way to optionally use pruning
- heuristic (controlled by the parameter 'prune_level') to reduce the search
- space by skipping some partial plans.
+ heuristic to reduce the search space by skipping some partial plans.
@note
The parameter 'search_depth' provides control over the recursion
@@ -10033,8 +10251,6 @@ check_if_edge_table(POSITION *pos,
@param search_depth maximum depth of the recursion and thus size of the
found optimal plan
(0 < search_depth <= join->tables+1).
- @param prune_level pruning heuristics that should be applied during
- optimization
(values: 0 = EXHAUSTIVE, 1 = PRUNE_BY_TIME_OR_ROWS)
@param use_cond_selectivity specifies how the selectivity of the conditions
pushed to a table should be taken into account
@@ -10057,22 +10273,27 @@ best_extension_by_limited_search(JOIN *join,
double record_count,
double read_time,
uint search_depth,
- uint prune_level,
- uint use_cond_selectivity)
+ uint use_cond_selectivity,
+ table_map *processed_eq_ref_tables)
{
THD *thd= join->thd;
/*
'join' is a partial plan with lower cost than the best plan so far,
so continue expanding it further with the tables in 'remaining_tables'.
*/
- JOIN_TAB *s, **pos;
+ JOIN_TAB *s;
double best_record_count= DBL_MAX;
double best_read_time= DBL_MAX;
- bool disable_jbuf= join->thd->variables.join_cache_level == 0;
enum_best_search best_res;
+ uint tables_left= join->table_count - idx, found_tables;
+ uint accepted_tables __attribute__((unused));
+ table_map found_eq_ref_tables= 0, used_eq_ref_table= 0;
+ table_map allowed_tables, allowed_current_tables;
+ SORT_POSITION *sort= (SORT_POSITION*) alloca(sizeof(SORT_POSITION)*tables_left);
+ SORT_POSITION *sort_end;
DBUG_ENTER("best_extension_by_limited_search");
- DBUG_EXECUTE_IF("show_explain_probe_best_ext_lim_search",
+ DBUG_EXECUTE_IF("show_explain_probe_best_ext_lim_search",
if (dbug_user_var_equals_int(thd,
"show_explain_probe_select_id",
join->select_lex->select_number))
@@ -10084,30 +10305,98 @@ best_extension_by_limited_search(JOIN *join,
DBUG_EXECUTE("opt", print_plan(join, idx, record_count, read_time, read_time,
"part_plan"););
+ status_var_increment(thd->status_var.optimizer_join_prefixes_check_calls);
- /*
- If we are searching for the execution plan of a materialized semi-join nest
- then allowed_tables contains bits only for the tables from this nest.
- */
- table_map allowed_tables= ~(table_map)0;
if (join->emb_sjm_nest)
- allowed_tables= join->emb_sjm_nest->sj_inner_tables & ~join->const_table_map;
+ {
+ /*
+ If we are searching for the execution plan of a materialized semi-join nest
+ then allowed_tables contains bits only for the tables from this nest.
+ */
+ allowed_tables= (join->emb_sjm_nest->sj_inner_tables & remaining_tables);
+ allowed_current_tables= join->get_allowed_nj_tables(idx) & remaining_tables;
+ }
+ else
+ {
+ /*
+ allowed_tables is used to check if there are tables left that can improve
+ a key search and to see if there are more tables to add in next iteration.
- for (pos= join->best_ref + idx ; (s= *pos) ; pos++)
+ allowed_current_tables tells us which tables we can add to the current
+ plan at this stage.
+ */
+ allowed_tables= remaining_tables;
+ allowed_current_tables= join->get_allowed_nj_tables(idx) & remaining_tables;
+ }
+ DBUG_ASSERT(allowed_tables & remaining_tables);
+
+ sort_end= sort;
{
- table_map real_table_bit= s->table->map;
- DBUG_ASSERT(remaining_tables & real_table_bit);
+ Json_writer_object trace_one_table(thd);
+ JOIN_TAB **best_ref= join->best_ref + idx;
+ if (unlikely(thd->trace_started()))
+ trace_plan_prefix(join, idx, remaining_tables);
- swap_variables(JOIN_TAB*, join->best_ref[idx], *pos);
+ Json_writer_array arr(thd, "get_costs_for_tables");
+
+ if (idx > join->const_tables && join->prune_level >= 2 &&
+ join->positions[idx-1].type == JT_EQ_REF &&
+ (join->eq_ref_tables & allowed_current_tables))
+ {
+ /* Previous table was an EQ REF table, only add other possible EQ_REF
+ tables to the chain, stop after first one is found.
+ */
+ table_map table_map= join->eq_ref_tables & allowed_current_tables;
+ if (get_costs_for_tables(join, remaining_tables, idx, record_count,
+ &trace_one_table, best_ref, &sort_end,
+ &table_map, 1))
+ used_eq_ref_table= (*sort->join_tab)->table->map;
+ else
+ {
+ /* We didn't find another EQ_REF table, add remaining tables */
+ if ((table_map= allowed_current_tables & ~table_map))
+ get_costs_for_tables(join, remaining_tables, idx, record_count,
+ &trace_one_table, best_ref, &sort_end, &table_map,
+ 0);
+ }
+ }
+ else
+ {
+ table_map table_map= allowed_current_tables;
+ get_costs_for_tables(join, remaining_tables, idx, record_count,
+ &trace_one_table, best_ref, &sort_end, &table_map,
+ 0);
+ }
+ found_tables= (uint) (sort_end - sort);
+ DBUG_ASSERT(found_tables > 0);
+
+ /*
+ Sort tables in ascending order of generated row combinations
+ */
+ if (found_tables > 1)
+ my_qsort(sort, found_tables, sizeof(SORT_POSITION),
+ (qsort_cmp) sort_positions);
+ }
+ DBUG_ASSERT(join->next_sort_position <=
+ join->sort_positions + join->sort_space);
- if ((allowed_tables & real_table_bit) &&
- !(remaining_tables & s->dependent) &&
+ accepted_tables= 0;
+ double min_rec_count= DBL_MAX;
+ double min_rec_count_read_time= DBL_MAX;
+
+ double min_cost= DBL_MAX;
+ double min_cost_record_count= DBL_MAX;
+
+ for (SORT_POSITION *pos= sort ; pos < sort_end ; pos++)
+ {
+ s= *pos->join_tab;
+ if (!(found_eq_ref_tables & s->table->map) &&
!check_interleaving_with_nj(s))
{
+ table_map real_table_bit= s->table->map;
double current_record_count, current_read_time;
double partial_join_cardinality;
- POSITION *position= join->positions + idx;
- POSITION loose_scan_pos;
+ POSITION *position= join->positions + idx, *loose_scan_pos;
Json_writer_object trace_one_table(thd);
if (unlikely(thd->trace_started()))
@@ -10116,9 +10405,9 @@ best_extension_by_limited_search(JOIN *join,
trace_one_table.add_table_name(s);
}
- /* Find the best access method from 's' to the current partial plan */
- best_access_path(join, s, remaining_tables, join->positions, idx,
- disable_jbuf, record_count, position, &loose_scan_pos);
+ accepted_tables++;
+ *position= *pos->position; // Get stored result
+ loose_scan_pos= pos->position+1;
/* Compute the cost of the new plan extended with 's' */
current_record_count= COST_MULT(record_count, position->records_read);
@@ -10137,7 +10426,7 @@ best_extension_by_limited_search(JOIN *join,
trace_one_table.add("cost_for_plan", current_read_time);
}
optimize_semi_joins(join, remaining_tables, idx, &current_record_count,
- &current_read_time, &loose_scan_pos);
+ &current_read_time, loose_scan_pos);
/* Expand only partial plans with lower cost than the best QEP so far */
if (current_read_time >= join->best_read)
@@ -10147,7 +10436,11 @@ best_extension_by_limited_search(JOIN *join,
read_time,
current_read_time,
"prune_by_cost"););
- trace_one_table.add("pruned_by_cost", true);
+ trace_one_table
+ .add("pruned_by_cost", true)
+ .add("current_cost", current_read_time)
+ .add("best_cost", join->best_read + COST_EPS);
+
restore_prev_nj_state(s);
restore_prev_sj_state(remaining_tables, s, idx);
continue;
@@ -10157,8 +10450,31 @@ best_extension_by_limited_search(JOIN *join,
Prune some less promising partial plans. This heuristic may miss
the optimal QEPs, thus it results in a non-exhaustive search.
*/
- if (prune_level == 1)
+ if (join->prune_level >= 1)
{
+ // Collect the members with min_cost and min_read_time.
+ bool min_rec_hit= false;
+ bool min_cost_hit= false;
+
+ if (join->extra_heuristic_pruning &&
+ (!(position->key_dependent & allowed_tables) ||
+ position->records_read < 2.0))
+ {
+ if (current_record_count < min_rec_count)
+ {
+ min_rec_count= current_record_count;
+ min_rec_count_read_time= current_read_time;
+ min_rec_hit= true;
+ }
+
+ if (current_read_time < min_cost)
+ {
+ min_cost_record_count= current_record_count;
+ min_cost= current_read_time;
+ min_cost_hit= true;
+ }
+ }
+
if (best_record_count > current_record_count ||
best_read_time > current_read_time ||
(idx == join->const_tables && // 's' is the first table in the QEP
@@ -10183,6 +10499,13 @@ best_extension_by_limited_search(JOIN *join,
}
else
{
+ /*
+ Typically, we get here if:
+ best_record_count < current_record_count &&
+ best_read_time < current_read_time
+ That is, both record_count and read_time are worse than the best_
+ ones. This plan doesn't look promising, prune it away.
+ */
DBUG_EXECUTE("opt", print_plan(join, idx+1,
current_record_count,
read_time,
@@ -10193,6 +10516,25 @@ best_extension_by_limited_search(JOIN *join,
restore_prev_sj_state(remaining_tables, s, idx);
continue;
}
+
+ const char* prune_reason= NULL;
+ if (!min_rec_hit &&
+ current_record_count >= min_rec_count &&
+ current_read_time >= min_rec_count_read_time)
+ prune_reason= "min_record_count";
+
+ if (!min_cost_hit &&
+ current_record_count >= min_cost_record_count &&
+ current_read_time >= min_cost)
+ prune_reason= "min_read_time";
+
+ if (prune_reason)
+ {
+ trace_one_table.add("pruned_by_heuristic", prune_reason);
+ restore_prev_nj_state(s);
+ restore_prev_sj_state(remaining_tables, s, idx);
+ continue;
+ }
}
double pushdown_cond_selectivity= 1.0;
@@ -10215,11 +10557,13 @@ best_extension_by_limited_search(JOIN *join,
}
}
- if ((search_depth > 1) && (remaining_tables & ~real_table_bit) &
- allowed_tables)
+ if ((search_depth > 1) &&
+ ((remaining_tables & ~real_table_bit) & allowed_tables))
{
/* Recursively expand the current partial plan */
Json_writer_array trace_rest(thd, "rest_of_plan");
+
+ swap_variables(JOIN_TAB*, join->best_ref[idx], *pos->join_tab);
best_res=
best_extension_by_limited_search(join,
remaining_tables &
@@ -10228,8 +10572,10 @@ best_extension_by_limited_search(JOIN *join,
partial_join_cardinality,
current_read_time,
search_depth - 1,
- prune_level,
- use_cond_selectivity);
+ use_cond_selectivity,
+ &found_eq_ref_tables);
+ swap_variables(JOIN_TAB*, join->best_ref[idx], *pos->join_tab);
+
if ((int) best_res < (int) SEARCH_OK)
goto end; // Return best_res
if (best_res == SEARCH_FOUND_EDGE &&
@@ -10261,7 +10607,7 @@ best_extension_by_limited_search(JOIN *join,
memcpy((uchar*) join->best_positions, (uchar*) join->positions,
sizeof(POSITION) * (idx + 1));
join->join_record_count= partial_join_cardinality;
- join->best_read= current_read_time - 0.001;
+ join->best_read= current_read_time - COST_EPS;
}
DBUG_EXECUTE("opt", print_plan(join, idx+1,
current_record_count,
@@ -10275,27 +10621,21 @@ best_extension_by_limited_search(JOIN *join,
restore_prev_sj_state(remaining_tables, s, idx);
if (best_res == SEARCH_FOUND_EDGE)
{
- trace_one_table.add("pruned_by_hanging_leaf", true);
+ if (pos+1 < sort_end) // If not last table
+ trace_one_table.add("pruned_by_hanging_leaf", true);
goto end;
}
}
}
+ DBUG_ASSERT(accepted_tables > 0);
best_res= SEARCH_OK;
end:
- /* Restore original table order */
- if (!*pos)
- pos--; // Revert last pos++ in for loop
- if (pos != join->best_ref + idx)
- {
- JOIN_TAB *tmp= join->best_ref[idx];
- uint elements= (uint) (pos - (join->best_ref + idx));
-
- memmove((void*) (join->best_ref + idx),
- (void*) (join->best_ref + idx + 1),
- elements * sizeof(JOIN_TAB*));
- *pos= tmp;
- }
+ join->next_sort_position-= found_tables*2;
+ if (used_eq_ref_table)
+ *processed_eq_ref_tables|= used_eq_ref_table | found_eq_ref_tables;
+ else
+ *processed_eq_ref_tables= 0;
DBUG_RETURN(best_res);
}
@@ -17618,6 +17958,116 @@ static void restore_prev_nj_state(JOIN_TAB *last)
}
+/*
+ Compute allowed_top_level_tables - a bitmap of tables one can put into the
+ join order if the last table in the join prefix is not inside any outer
+ join nest.
+
+ NESTED_JOIN::direct_children_map - a bitmap of tables ... if the last
+ table in the join prefix is inside the join nest.
+
+ Note: it looks like a sensible way to do this is a top-down descent on
+ JOIN::join_list, but apparently that list is missing I_S tables.
+ e.g. for SHOW TABLES WHERE col IN (SELECT ...) it will just have a
+ semi-join nest.
+*/
+
+void JOIN::calc_allowed_top_level_tables(SELECT_LEX *lex)
+{
+ TABLE_LIST *tl;
+ List_iterator<TABLE_LIST> ti(lex->leaf_tables);
+ DBUG_ENTER("JOIN::calc_allowed_top_level_tables");
+ DBUG_ASSERT(allowed_top_level_tables == 0); // Should only be called once
+
+ while ((tl= ti++))
+ {
+ table_map map;
+ TABLE_LIST *embedding= tl->embedding;
+
+ if (tl->table)
+ map= tl->table->map;
+ else
+ {
+ DBUG_ASSERT(tl->jtbm_subselect);
+ map= table_map(1) << tl->jtbm_table_no;
+ }
+
+ if (!(embedding= tl->embedding))
+ {
+ allowed_top_level_tables |= map;
+ continue;
+ }
+
+ // Walk out of any semi-join nests
+ while (embedding && !embedding->on_expr)
+ {
+ // semi-join nest or an INSERT-INTO view...
+ embedding->nested_join->direct_children_map |= map;
+ embedding= embedding->embedding;
+ }
+
+ // Ok we are in the parent nested outer join nest.
+ if (!embedding)
+ {
+ allowed_top_level_tables |= map;
+ continue;
+ }
+ embedding->nested_join->direct_children_map |= map;
+
+ // Walk to grand-parent join nest.
+ embedding= embedding->embedding;
+
+ // Walk out of any semi-join nests
+ while (embedding && !embedding->on_expr)
+ {
+ DBUG_ASSERT(embedding->sj_on_expr);
+ embedding->nested_join->direct_children_map |= map;
+ embedding= embedding->embedding;
+ }
+
+ if (embedding)
+ {
+ DBUG_ASSERT(embedding->on_expr); // Impossible, see above
+ embedding->nested_join->direct_children_map |= map;
+ }
+ else
+ allowed_top_level_tables |= map;
+ }
+ DBUG_VOID_RETURN;
+}
+
+
+/*
+ Get the tables that one is allowed to have as the next table in the
+ current plan
+*/
+
+table_map JOIN::get_allowed_nj_tables(uint idx)
+{
+ TABLE_LIST *last_emb;
+ if (idx > const_tables &&
+ (last_emb= positions[idx-1].table->table->pos_in_table_list->embedding))
+ {
+ for (;last_emb && last_emb != emb_sjm_nest;
+ last_emb= last_emb->embedding)
+ {
+ if (!last_emb->sj_on_expr)
+ {
+ NESTED_JOIN *nest= last_emb->nested_join;
+ if (!nest->is_fully_covered())
+ {
+ // Return tables that are direct members of this join nest
+ return nest->direct_children_map;
+ }
+ }
+ }
+ }
+ // Return bitmap of tables not in any join nest
+ if (emb_sjm_nest)
+ return emb_sjm_nest->nested_join->direct_children_map;
+ return allowed_top_level_tables;
+}
+
/*
Change access methods not to use join buffering and adjust costs accordingly
@@ -17660,7 +18110,7 @@ void optimize_wo_join_buffering(JOIN *join, uint first_tab, uint last_tab,
if (first_tab > join->const_tables)
{
- cost= join->positions[first_tab - 1].prefix_cost.total_cost();
+ cost= join->positions[first_tab - 1].prefix_cost;
rec_count= join->positions[first_tab - 1].prefix_record_count;
}
else
@@ -28926,7 +29376,7 @@ JOIN::reoptimize(Item *added_where, table_map join_tables,
/* added_keyuse contents is copied, and it is no longer needed. */
delete_dynamic(&added_keyuse);
- if (sort_and_filter_keyuse(thd, &keyuse, true))
+ if (sort_and_filter_keyuse(this, &keyuse, true))
return REOPT_ERROR;
optimize_keyuse(this, &keyuse);
diff --git a/sql/sql_select.h b/sql/sql_select.h
index e0fb0960b60..aed58634319 100644
--- a/sql/sql_select.h
+++ b/sql/sql_select.h
@@ -359,6 +359,13 @@ typedef struct st_join_table {
table_map dependent,key_dependent;
/*
+ This is set for embedded sub queries. It contains the table map of
+ the outer expression, like 'A' in the following expression:
+ WHERE A in (SELECT ....)
+ */
+ table_map embedded_dependent;
+
+ /*
1 - use quick select
2 - use "Range checked for each record"
*/
@@ -945,6 +952,9 @@ public:
double prefix_record_count;
+ /* Cost for the join prefix */
+ double prefix_cost;
+
/*
NULL - 'index' or 'range' or 'index_merge' or 'ALL' access is used.
Other - [eq_]ref[_or_null] access is used. Pointer to {t.keypart1 = expr}
@@ -976,9 +986,6 @@ public:
LooseScan_picker loosescan_picker;
Sj_materialization_picker sjmat_picker;
- /* Cumulative cost and record count for the join prefix */
- Cost_estimate prefix_cost;
-
/*
Current optimization state: Semi-join strategy to be used for this
and preceding join tables.
@@ -1254,6 +1261,10 @@ public:
table_map outer_join;
/* Bitmap of tables used in the select list items */
table_map select_list_used_tables;
+ /* Tables that have a possiblity to use EQ_ref */
+ table_map eq_ref_tables;
+
+ table_map allowed_top_level_tables;
ha_rows send_records,found_records,join_examined_rows, accepted_rows;
/*
@@ -1286,9 +1297,12 @@ public:
/* Finally picked QEP. This is result of join optimization */
POSITION *best_positions;
+ POSITION *sort_positions; /* Temporary space used by greedy_search */
+ POSITION *next_sort_position; /* Next free space in sort_positions */
Pushdown_query *pushdown_query;
JOIN_TAB *original_join_tab;
+ uint sort_space;
/******* Join optimization state members start *******/
/*
@@ -1315,6 +1329,13 @@ public:
*/
table_map cur_sj_inner_tables;
+ /* A copy of thd->variables.optimizer_prune_level */
+ uint prune_level;
+ /*
+ If true, do extra heuristic pruning (enabled based on
+ optimizer_extra_pruning_depth)
+ */
+ bool extra_heuristic_pruning;
#ifndef DBUG_OFF
void dbug_verify_sj_inner_tables(uint n_positions) const;
int dbug_join_tab_array_size;
@@ -1751,6 +1772,8 @@ public:
bool transform_in_predicates_into_in_subq(THD *thd);
bool optimize_upper_rownum_func();
+ void calc_allowed_top_level_tables(SELECT_LEX *lex);
+ table_map get_allowed_nj_tables(uint idx);
private:
/**
@@ -2421,7 +2444,7 @@ void fix_list_after_tbl_changes(SELECT_LEX *new_parent, List<TABLE_LIST> *tlist)
double get_tmp_table_lookup_cost(THD *thd, double row_count, uint row_size);
double get_tmp_table_write_cost(THD *thd, double row_count, uint row_size);
void optimize_keyuse(JOIN *join, DYNAMIC_ARRAY *keyuse_array);
-bool sort_and_filter_keyuse(THD *thd, DYNAMIC_ARRAY *keyuse,
+bool sort_and_filter_keyuse(JOIN *join, DYNAMIC_ARRAY *keyuse,
bool skip_unprefixed_keyparts);
struct st_cond_statistic
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index 2320c148b3a..af4d4409115 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -1263,11 +1263,11 @@ mysqld_show_create_get_fields(THD *thd, TABLE_LIST *table_list,
mem_root);
field_list->push_back(new (mem_root)
Item_empty_string(thd, "character_set_client",
- MY_CS_NAME_SIZE),
+ MY_CS_CHARACTER_SET_NAME_SIZE),
mem_root);
field_list->push_back(new (mem_root)
Item_empty_string(thd, "collation_connection",
- MY_CS_NAME_SIZE),
+ MY_CS_COLLATION_NAME_SIZE),
mem_root);
}
else
@@ -6355,16 +6355,39 @@ int fill_schema_collation(THD *thd, TABLE_LIST *tables, COND *cond)
if (!(wild && wild[0] &&
wild_case_compare(scs, tmp_cl->coll_name.str, wild)))
{
- const char *tmp_buff;
+ LEX_CSTRING context_collation_name=
+ tmp_cl->get_collation_name(MY_COLLATION_NAME_MODE_CONTEXT);
+ LEX_CSTRING full_collation_name=
+ tmp_cl->get_collation_name(MY_COLLATION_NAME_MODE_FULL);
+ bool is_context= cmp(context_collation_name, full_collation_name);
+ /*
+ Some collations are applicable to multiple character sets.
+ Display them only once, with the short name (without the
+ character set prefix).
+ */
+ if (is_context &&
+ cmp(tmp_cl->cs_name, Lex_cstring(STRING_WITH_LEN("utf8mb4"))))
+ continue;
restore_record(table, s->default_values);
- table->field[0]->store(tmp_cl->coll_name.str, tmp_cl->coll_name.length,
- scs);
- table->field[1]->store(&tmp_cl->cs_name, scs);
- table->field[2]->store((longlong) tmp_cl->number, TRUE);
- tmp_buff= (tmp_cl->state & MY_CS_PRIMARY) ? "Yes" : "";
- table->field[3]->store(tmp_buff, strlen(tmp_buff), scs);
- tmp_buff= (tmp_cl->state & MY_CS_COMPILED)? "Yes" : "";
- table->field[4]->store(tmp_buff, strlen(tmp_buff), scs);
+ table->field[0]->store(context_collation_name, scs);
+ if (is_context)
+ {
+ table->field[1]->set_null(); // CHARACTER_SET_NAME
+ table->field[2]->set_null(); // ID
+ table->field[3]->set_null(); // IS_DEFAULT
+ }
+ else
+ {
+ table->field[1]->set_notnull(); // CHARACTER_SET_NAME
+ table->field[1]->store(tmp_cl->cs_name, scs);
+ table->field[2]->set_notnull(); // ID
+ table->field[2]->store((longlong) tmp_cl->number, TRUE);
+ table->field[3]->set_notnull(); // IS_DEFAULT
+ table->field[3]->store(
+ Show::Yes_or_empty::value(tmp_cl->default_flag()), scs);
+ }
+ table->field[4]->store(
+ Show::Yes_or_empty::value(tmp_cl->compiled_flag()), scs);
table->field[5]->store((longlong) tmp_cl->strxfrm_multiply, TRUE);
if (schema_table_store_record(thd, table))
return 1;
@@ -6399,8 +6422,16 @@ int fill_schema_coll_charset_app(THD *thd, TABLE_LIST *tables, COND *cond)
!my_charset_same(tmp_cs,tmp_cl))
continue;
restore_record(table, s->default_values);
- table->field[0]->store(&tmp_cl->coll_name, scs);
+ LEX_CSTRING context_collation_name=
+ tmp_cl->get_collation_name(MY_COLLATION_NAME_MODE_CONTEXT);
+ LEX_CSTRING full_collation_name=
+ tmp_cl->get_collation_name(MY_COLLATION_NAME_MODE_FULL);
+ table->field[0]->store(context_collation_name, scs);
table->field[1]->store(&tmp_cl->cs_name, scs);
+ table->field[2]->store(full_collation_name, scs);
+ table->field[3]->store(tmp_cl->number);
+ table->field[4]->store(
+ Show::Yes_or_empty::value(tmp_cl->default_flag()), scs);
if (schema_table_store_record(thd, table))
return 1;
}
@@ -9075,7 +9106,7 @@ ST_FIELD_INFO schema_fields_info[]=
Column("CATALOG_NAME", Catalog(), NOT_NULL),
Column("SCHEMA_NAME", Name(), NOT_NULL, "Database"),
Column("DEFAULT_CHARACTER_SET_NAME", CSName(), NOT_NULL),
- Column("DEFAULT_COLLATION_NAME", CSName(), NOT_NULL),
+ Column("DEFAULT_COLLATION_NAME", CLName(), NOT_NULL),
Column("SQL_PATH", Varchar(FN_REFLEN), NULLABLE),
Column("SCHEMA_COMMENT", Varchar(DATABASE_COMMENT_MAXLEN), NOT_NULL),
CEnd()
@@ -9104,7 +9135,7 @@ ST_FIELD_INFO tables_fields_info[]=
Column("CREATE_TIME", Datetime(0), NULLABLE, "Create_time",OPEN_FULL_TABLE),
Column("UPDATE_TIME", Datetime(0), NULLABLE, "Update_time",OPEN_FULL_TABLE),
Column("CHECK_TIME", Datetime(0), NULLABLE, "Check_time", OPEN_FULL_TABLE),
- Column("TABLE_COLLATION", CSName(), NULLABLE, "Collation", OPEN_FRM_ONLY),
+ Column("TABLE_COLLATION", CLName(), NULLABLE, "Collation", OPEN_FRM_ONLY),
Column("CHECKSUM", ULonglong(), NULLABLE, "Checksum", OPEN_FULL_TABLE),
Column("CREATE_OPTIONS", Varchar(2048),NULLABLE, "Create_options",
OPEN_FULL_TABLE),
@@ -9134,7 +9165,7 @@ ST_FIELD_INFO columns_fields_info[]=
Column("NUMERIC_SCALE", ULonglong(), NULLABLE, OPEN_FRM_ONLY),
Column("DATETIME_PRECISION", ULonglong(), NULLABLE, OPEN_FRM_ONLY),
Column("CHARACTER_SET_NAME", CSName(), NULLABLE, OPEN_FRM_ONLY),
- Column("COLLATION_NAME", CSName(), NULLABLE, "Collation", OPEN_FRM_ONLY),
+ Column("COLLATION_NAME", CLName(), NULLABLE, "Collation", OPEN_FRM_ONLY),
Column("COLUMN_TYPE", Longtext(65535), NOT_NULL, "Type", OPEN_FRM_ONLY),
Column("COLUMN_KEY", Varchar(3), NOT_NULL, "Key", OPEN_FRM_ONLY),
Column("EXTRA", Varchar(80), NOT_NULL, "Extra", OPEN_FRM_ONLY),
@@ -9151,7 +9182,7 @@ ST_FIELD_INFO columns_fields_info[]=
ST_FIELD_INFO charsets_fields_info[]=
{
Column("CHARACTER_SET_NAME", CSName(), NOT_NULL, "Charset"),
- Column("DEFAULT_COLLATE_NAME", CSName(), NOT_NULL, "Default collation"),
+ Column("DEFAULT_COLLATE_NAME", CLName(), NOT_NULL, "Default collation"),
Column("DESCRIPTION", Varchar(60), NOT_NULL, "Description"),
Column("MAXLEN", SLonglong(3), NOT_NULL, "Maxlen"),
CEnd()
@@ -9160,10 +9191,10 @@ ST_FIELD_INFO charsets_fields_info[]=
ST_FIELD_INFO collation_fields_info[]=
{
- Column("COLLATION_NAME", CSName(), NOT_NULL, "Collation"),
- Column("CHARACTER_SET_NAME", CSName(), NOT_NULL, "Charset"),
- Column("ID", SLonglong(MY_INT32_NUM_DECIMAL_DIGITS), NOT_NULL, "Id"),
- Column("IS_DEFAULT", Yes_or_empty(), NOT_NULL, "Default"),
+ Column("COLLATION_NAME", CLName(), NOT_NULL, "Collation"),
+ Column("CHARACTER_SET_NAME", CSName(), NULLABLE, "Charset"),
+ Column("ID", SLonglong(MY_INT32_NUM_DECIMAL_DIGITS), NULLABLE, "Id"),
+ Column("IS_DEFAULT", Yes_or_empty(), NULLABLE, "Default"),
Column("IS_COMPILED", Yes_or_empty(), NOT_NULL, "Compiled"),
Column("SORTLEN", SLonglong(3), NOT_NULL, "Sortlen"),
CEnd()
@@ -9236,8 +9267,8 @@ ST_FIELD_INFO events_fields_info[]=
Column("EVENT_COMMENT", Name(), NOT_NULL),
Column("ORIGINATOR", SLonglong(10),NOT_NULL,"Originator"),
Column("CHARACTER_SET_CLIENT", CSName(), NOT_NULL, "character_set_client"),
- Column("COLLATION_CONNECTION", CSName(), NOT_NULL, "collation_connection"),
- Column("DATABASE_COLLATION", CSName(), NOT_NULL, "Database Collation"),
+ Column("COLLATION_CONNECTION", CLName(), NOT_NULL, "collation_connection"),
+ Column("DATABASE_COLLATION", CLName(), NOT_NULL, "Database Collation"),
CEnd()
};
@@ -9245,8 +9276,11 @@ ST_FIELD_INFO events_fields_info[]=
ST_FIELD_INFO coll_charset_app_fields_info[]=
{
- Column("COLLATION_NAME", CSName(), NOT_NULL),
+ Column("COLLATION_NAME", CLName(), NOT_NULL),
Column("CHARACTER_SET_NAME", CSName(), NOT_NULL),
+ Column("FULL_COLLATION_NAME",CLName(), NOT_NULL),
+ Column("ID", SLonglong(MY_INT32_NUM_DECIMAL_DIGITS), NOT_NULL),
+ Column("IS_DEFAULT", Yes_or_empty(), NOT_NULL),
CEnd()
};
@@ -9282,8 +9316,8 @@ ST_FIELD_INFO proc_fields_info[]=
Column("ROUTINE_COMMENT", Longtext(65535), NOT_NULL, "Comment"),
Column("DEFINER", Definer(), NOT_NULL, "Definer"),
Column("CHARACTER_SET_CLIENT", CSName(), NOT_NULL, "character_set_client"),
- Column("COLLATION_CONNECTION", CSName(), NOT_NULL, "collation_connection"),
- Column("DATABASE_COLLATION", CSName(), NOT_NULL, "Database Collation"),
+ Column("COLLATION_CONNECTION", CLName(), NOT_NULL, "collation_connection"),
+ Column("DATABASE_COLLATION", CLName(), NOT_NULL, "Database Collation"),
CEnd()
};
@@ -9323,7 +9357,7 @@ ST_FIELD_INFO view_fields_info[]=
Column("DEFINER", Definer(), NOT_NULL, OPEN_FRM_ONLY),
Column("SECURITY_TYPE", Varchar(7), NOT_NULL, OPEN_FRM_ONLY),
Column("CHARACTER_SET_CLIENT", CSName(), NOT_NULL, OPEN_FRM_ONLY),
- Column("COLLATION_CONNECTION", CSName(), NOT_NULL, OPEN_FRM_ONLY),
+ Column("COLLATION_CONNECTION", CLName(), NOT_NULL, OPEN_FRM_ONLY),
Column("ALGORITHM", Varchar(10),NOT_NULL, OPEN_FRM_ONLY),
CEnd()
};
@@ -9450,9 +9484,9 @@ ST_FIELD_INFO triggers_fields_info[]=
Column("DEFINER", Definer(), NOT_NULL, "Definer", OPEN_FRM_ONLY),
Column("CHARACTER_SET_CLIENT", CSName(), NOT_NULL, "character_set_client",
OPEN_FRM_ONLY),
- Column("COLLATION_CONNECTION", CSName(), NOT_NULL, "collation_connection",
+ Column("COLLATION_CONNECTION", CLName(), NOT_NULL, "collation_connection",
OPEN_FRM_ONLY),
- Column("DATABASE_COLLATION", CSName(), NOT_NULL, "Database Collation",
+ Column("DATABASE_COLLATION", CLName(), NOT_NULL, "Database Collation",
OPEN_FRM_ONLY),
CEnd()
};
@@ -10018,17 +10052,17 @@ static bool show_create_trigger_impl(THD *thd, Trigger *trigger)
fields.push_back(new (mem_root)
Item_empty_string(thd, "character_set_client",
- MY_CS_NAME_SIZE),
+ MY_CS_CHARACTER_SET_NAME_SIZE),
mem_root);
fields.push_back(new (mem_root)
Item_empty_string(thd, "collation_connection",
- MY_CS_NAME_SIZE),
+ MY_CS_COLLATION_NAME_SIZE),
mem_root);
fields.push_back(new (mem_root)
Item_empty_string(thd, "Database Collation",
- MY_CS_NAME_SIZE),
+ MY_CS_COLLATION_NAME_SIZE),
mem_root);
static const Datetime zero_datetime(Datetime::zero());
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 34e1e8685c2..0c212dee625 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -1817,7 +1817,7 @@ report_error:
table->table ? table->table->s : NULL));
}
DEBUG_SYNC(thd, "rm_table_no_locks_before_binlog");
- thd->thread_specific_used= TRUE;
+ thd->used|= THD::THREAD_SPECIFIC_USED;
error= 0;
err:
@@ -4630,7 +4630,7 @@ int create_table_impl(THD *thd,
if (is_trans != NULL)
*is_trans= table->file->has_transactions();
- thd->thread_specific_used= TRUE;
+ thd->used|= THD::THREAD_SPECIFIC_USED;
create_info->table= table; // Store pointer to table
}
@@ -4821,11 +4821,9 @@ bool mysql_create_table(THD *thd, TABLE_LIST *create_table,
thd->abort_on_warning= thd->is_strict_mode();
if (mysql_create_table_no_lock(thd, &ddl_log_state_create, &ddl_log_state_rm,
- &create_table->db,
- &create_table->table_name, create_info,
- alter_info,
- &is_trans, create_table_mode,
- create_table) > 0)
+ &create_table->db, &create_table->table_name,
+ create_info, alter_info, &is_trans,
+ create_table_mode, create_table) > 0)
{
result= 1;
goto err;
diff --git a/sql/sql_time.cc b/sql/sql_time.cc
index 12e4460ed25..753f78ccc22 100644
--- a/sql/sql_time.cc
+++ b/sql/sql_time.cc
@@ -508,7 +508,7 @@ bool int_to_datetime_with_warn(THD *thd, const Longlong_hybrid &nr,
my_time_t TIME_to_timestamp(THD *thd, const MYSQL_TIME *t, uint *error_code)
{
- thd->time_zone_used= 1;
+ thd->used|= THD::TIME_ZONE_USED;
return thd->variables.time_zone->TIME_to_gmt_sec(t, error_code);
}
@@ -1274,7 +1274,7 @@ mix_date_and_time(MYSQL_TIME *to, const MYSQL_TIME *from)
void set_current_date(THD *thd, MYSQL_TIME *to)
{
thd->variables.time_zone->gmt_sec_to_TIME(to, thd->query_start());
- thd->time_zone_used= 1;
+ thd->used|= THD::TIME_ZONE_USED;
datetime_to_date(to);
}
diff --git a/sql/sql_type.cc b/sql/sql_type.cc
index 1c433043db7..3759c0ba02f 100644
--- a/sql/sql_type.cc
+++ b/sql/sql_type.cc
@@ -1064,7 +1064,7 @@ Datetime::Datetime(THD *thd, const timeval &tv)
{
thd->variables.time_zone->gmt_sec_to_TIME(this, tv.tv_sec);
second_part= tv.tv_usec;
- thd->time_zone_used= 1;
+ thd->used|= THD::TIME_ZONE_USED;
DBUG_ASSERT(is_valid_value_slow());
}
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index 5fecb7d3ce5..538b1a367a4 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -936,6 +936,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b, size_t *yystacksize);
%token <kwd> MASTER_USER_SYM
%token <kwd> MASTER_USE_GTID_SYM
%token <kwd> MASTER_HEARTBEAT_PERIOD_SYM
+%token <kwd> MASTER_DEMOTE_TO_SLAVE_SYM
%token <kwd> MAX_CONNECTIONS_PER_HOUR
%token <kwd> MAX_QUERIES_PER_HOUR
%token <kwd> MAX_ROWS
@@ -2292,6 +2293,10 @@ master_file_def:
my_yyabort_error((ER_DUP_ARGUMENT, MYF(0), "MASTER_use_gtid"));
Lex->mi.use_gtid_opt= LEX_MASTER_INFO::LEX_GTID_NO;
}
+ | MASTER_DEMOTE_TO_SLAVE_SYM '=' bool
+ {
+ Lex->mi.is_demotion_opt= (bool) $3;
+ }
;
optional_connection_name:
@@ -6489,11 +6494,8 @@ old_or_new_charset_name_or_default:
collation_name:
ident_or_text
{
- CHARSET_INFO *cs;
- if (unlikely(!(cs= mysqld_collation_get_by_name($1.str,
- thd->get_utf8_flag()))))
+ if ($$.set_by_name($1.str, thd->get_utf8_flag()))
MYSQL_YYABORT;
- $$= Lex_extended_collation(Lex_exact_collation(cs));
}
;
@@ -9759,8 +9761,7 @@ string_factor_expr:
| string_factor_expr COLLATE_SYM collation_name
{
if (unlikely(!($$= new (thd->mem_root)
- Item_func_set_collation(thd, $1,
- $3.charset_info()))))
+ Item_func_set_collation(thd, $1, $3))))
MYSQL_YYABORT;
}
;
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc
index 2c938f88733..f82727c4349 100644
--- a/sql/sys_vars.cc
+++ b/sql/sys_vars.cc
@@ -728,7 +728,7 @@ static Sys_var_bit Sys_explicit_defaults_for_timestamp(
"as NULL with DEFAULT NULL attribute, Without this option, "
"TIMESTAMP columns are NOT NULL and have implicit DEFAULT clauses.",
SESSION_VAR(option_bits), CMD_LINE(OPT_ARG),
- OPTION_EXPLICIT_DEF_TIMESTAMP, DEFAULT(FALSE), NO_MUTEX_GUARD, IN_BINLOG);
+ OPTION_EXPLICIT_DEF_TIMESTAMP, DEFAULT(TRUE), NO_MUTEX_GUARD, IN_BINLOG);
static Sys_var_ulonglong Sys_bulk_insert_buff_size(
"bulk_insert_buffer_size", "Size of tree cache used in bulk "
@@ -2456,6 +2456,27 @@ Sys_gtid_ignore_duplicates(
DEFAULT(FALSE), NO_MUTEX_GUARD,
NOT_IN_BINLOG, ON_CHECK(check_gtid_ignore_duplicates),
ON_UPDATE(fix_gtid_ignore_duplicates));
+
+static bool
+update_slave_max_statement_time(sys_var *self, THD *thd, enum_var_type type)
+{
+ slave_max_statement_time=
+ double2ulonglong(slave_max_statement_time_double * 1e6);
+
+ return false;
+}
+
+static Sys_var_on_access_global<
+ Sys_var_double, PRIV_SET_SYSTEM_GLOBAL_VAR_SLAVE_MAX_STATEMENT_TIME>
+ Sys_slave_max_statement_time(
+ "slave_max_statement_time",
+ "A query that has taken more than slave_max_statement_time seconds to "
+ "run on the slave will be aborted. The argument will be treated as a "
+ "decimal value with microsecond precision. A value of 0 (default) "
+ "means no timeout",
+ GLOBAL_VAR(slave_max_statement_time_double), CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(0, LONG_TIMEOUT), DEFAULT(0), NO_MUTEX_GUARD,
+ NOT_IN_BINLOG, ON_CHECK(0), ON_UPDATE(update_slave_max_statement_time));
#endif
@@ -2683,6 +2704,20 @@ static Sys_var_mybool Sys_old_mode(
SESSION_VAR(old_mode), CMD_LINE(OPT_ARG), DEFAULT(FALSE), 0, NOT_IN_BINLOG, ON_CHECK(0),
ON_UPDATE(set_old_mode), DEPRECATED("'@@old_mode'"));
+static Sys_var_mybool Sys_opt_allow_suspicious_udfs(
+ "allow_suspicious_udfs",
+ "Allows use of user-defined functions (UDFs) consisting of only one symbol xxx() without corresponding xxx_init() or xxx_deinit(). That also means that one can load any function from any library, for example exit() from libc.so",
+ READ_ONLY GLOBAL_VAR(opt_allow_suspicious_udfs),
+ CMD_LINE(OPT_ARG), DEFAULT(FALSE));
+
+#ifndef DISABLE_GRANT_OPTIONS
+static Sys_var_mybool Sys_skip_grant_tables(
+ "skip_grant_tables",
+ "Start without grant tables. This gives all users FULL ACCESS to all tables.",
+ READ_ONLY GLOBAL_VAR(opt_noacl),
+ CMD_LINE(OPT_ARG), DEFAULT(FALSE));
+#endif
+
static const char *alter_algorithm_modes[]= {"DEFAULT", "COPY", "INPLACE",
"NOCOPY", "INSTANT", NULL};
@@ -2726,9 +2761,10 @@ static Sys_var_ulong Sys_optimizer_prune_level(
"Controls the heuristic(s) applied during query optimization to prune "
"less-promising partial plans from the optimizer search space. "
"Meaning: 0 - do not apply any heuristic, thus perform exhaustive "
- "search; 1 - prune plans based on number of retrieved rows",
+ "search: 1 - prune plans based on cost and number of retrieved rows "
+ "eq_ref: 2 - prune also if we find an eq_ref chain",
SESSION_VAR(optimizer_prune_level), CMD_LINE(REQUIRED_ARG),
- VALID_RANGE(0, 1), DEFAULT(1), BLOCK_SIZE(1));
+ VALID_RANGE(0, 2), DEFAULT(2), BLOCK_SIZE(1));
static Sys_var_ulong Sys_optimizer_selectivity_sampling_limit(
"optimizer_selectivity_sampling_limit",
@@ -2770,6 +2806,13 @@ static Sys_var_ulong Sys_optimizer_search_depth(
SESSION_VAR(optimizer_search_depth), CMD_LINE(REQUIRED_ARG),
VALID_RANGE(0, MAX_TABLES+1), DEFAULT(MAX_TABLES+1), BLOCK_SIZE(1));
+static Sys_var_ulong Sys_optimizer_extra_pruning_depth(
+ "optimizer_extra_pruning_depth",
+ "If the optimizer needs to enumerate join prefix of this size or "
+ "larger, then it will try agressively prune away the search space.",
+ SESSION_VAR(optimizer_extra_pruning_depth), CMD_LINE(REQUIRED_ARG),
+ VALID_RANGE(0, MAX_TABLES+1), DEFAULT(8), BLOCK_SIZE(1));
+
/* this is used in the sigsegv handler */
export const char *optimizer_switch_names[]=
{
@@ -6214,6 +6257,12 @@ static Sys_var_charptr Sys_wsrep_patch_version(
READ_ONLY GLOBAL_VAR(wsrep_patch_version_ptr), CMD_LINE_HELP_ONLY,
DEFAULT(WSREP_PATCH_VERSION));
+
+static Sys_var_charptr Sys_wsrep_allowlist(
+ "wsrep_allowlist", "Allowed IP addresses split by comma delimiter",
+ READ_ONLY GLOBAL_VAR(wsrep_allowlist), CMD_LINE(REQUIRED_ARG),
+ DEFAULT(""));
+
#endif /* WITH_WSREP */
static bool fix_host_cache_size(sys_var *, THD *, enum_var_type)
diff --git a/sql/sys_vars.inl b/sql/sys_vars.inl
index 97e3a28b67e..b1d7bc31255 100644
--- a/sql/sys_vars.inl
+++ b/sql/sys_vars.inl
@@ -2241,7 +2241,7 @@ public:
timezone). If it's the global value which was used we can't replicate
(binlog code stores session value only).
*/
- thd->time_zone_used= 1;
+ thd->used|= THD::TIME_ZONE_USED;
return valptr(thd, session_var(thd, Time_zone *));
}
const uchar *global_value_ptr(THD *thd, const LEX_CSTRING *base) const
diff --git a/sql/table.h b/sql/table.h
index ca8ff1c1848..ff9f93becbf 100644
--- a/sql/table.h
+++ b/sql/table.h
@@ -3154,6 +3154,7 @@ typedef struct st_nested_join
table_map sj_depends_on;
/* Outer non-trivially correlated tables */
table_map sj_corr_tables;
+ table_map direct_children_map;
List<Item_ptr> sj_outer_expr_list;
/**
True if this join nest node is completely covered by the query execution
diff --git a/sql/temporary_tables.cc b/sql/temporary_tables.cc
index 5aacd0e6e99..b43a38e7fa2 100644
--- a/sql/temporary_tables.cc
+++ b/sql/temporary_tables.cc
@@ -427,7 +427,7 @@ bool THD::open_temporary_table(TABLE_LIST *tl)
#endif
table->query_id= query_id;
- thread_specific_used= true;
+ used|= THREAD_SPECIFIC_USED;
/* It is neither a derived table nor non-updatable view. */
tl->updatable= true;
@@ -1355,7 +1355,7 @@ bool THD::log_events_and_free_tmp_shares()
{
if (IS_USER_TABLE(share))
{
- bool save_thread_specific_used= thread_specific_used;
+ used_t save_thread_specific_used= used & THREAD_SPECIFIC_USED;
my_thread_id save_pseudo_thread_id= variables.pseudo_thread_id;
char db_buf[FN_REFLEN];
String db(db_buf, sizeof(db_buf), system_charset_info);
@@ -1405,7 +1405,7 @@ bool THD::log_events_and_free_tmp_shares()
clear_error();
CHARSET_INFO *cs_save= variables.character_set_client;
variables.character_set_client= system_charset_info;
- thread_specific_used= true;
+ used|= THREAD_SPECIFIC_USED;
Query_log_event qinfo(this, s_query.ptr(),
s_query.length() - 1 /* to remove trailing ',' */,
@@ -1438,7 +1438,7 @@ bool THD::log_events_and_free_tmp_shares()
get_stmt_da()->set_overwrite_status(false);
}
variables.pseudo_thread_id= save_pseudo_thread_id;
- thread_specific_used= save_thread_specific_used;
+ used = (used & ~THREAD_SPECIFIC_USED) | save_thread_specific_used;
}
else
{
diff --git a/sql/wsrep_allowlist_service.cc b/sql/wsrep_allowlist_service.cc
new file mode 100644
index 00000000000..23ade8b32b9
--- /dev/null
+++ b/sql/wsrep_allowlist_service.cc
@@ -0,0 +1,56 @@
+/* Copyright 2021-2022 Codership Oy <info@codership.com>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+#include "wsrep_allowlist_service.h"
+
+#include "my_global.h"
+#include "wsrep_mysqld.h"
+#include "wsrep_priv.h"
+#include "wsrep_schema.h"
+
+#include <algorithm>
+#include <memory>
+#include <vector>
+
+class Wsrep_allowlist_service : public wsrep::allowlist_service
+{
+public:
+ bool allowlist_cb(wsrep::allowlist_service::allowlist_key key,
+ const wsrep::const_buffer& value) WSREP_NOEXCEPT override;
+};
+
+bool Wsrep_allowlist_service::allowlist_cb (
+ wsrep::allowlist_service::allowlist_key key,
+ const wsrep::const_buffer& value)
+ WSREP_NOEXCEPT
+{
+ std::string string_value(value.data());
+ bool res= wsrep_schema->allowlist_check(key, string_value);
+ return res;
+}
+
+std::unique_ptr<wsrep::allowlist_service> entrypoint;
+
+wsrep::allowlist_service* wsrep_allowlist_service_init()
+{
+ entrypoint = std::unique_ptr<wsrep::allowlist_service>(new Wsrep_allowlist_service);
+ return entrypoint.get();
+}
+
+void wsrep_allowlist_service_deinit()
+{
+ entrypoint.reset();
+}
+
diff --git a/sql/wsrep_allowlist_service.h b/sql/wsrep_allowlist_service.h
new file mode 100644
index 00000000000..2d96139b5c6
--- /dev/null
+++ b/sql/wsrep_allowlist_service.h
@@ -0,0 +1,29 @@
+/* Copyright 2021 Codership Oy <info@codership.com>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+
+/*
+ Implementation of wsrep provider threads instrumentation.
+ */
+
+#ifndef WSREP_PROVIDER_ALLOWLIST_H
+#define WSREP_PROVIDER_ALLOWLIST_H
+
+#include "wsrep/allowlist_service.hpp"
+
+wsrep::allowlist_service* wsrep_allowlist_service_init();
+
+void wsrep_allowlist_service_deinit();
+
+#endif /* WSREP_PROVIDER_ALLOWLIST_H */
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc
index 04056351874..43e694f6367 100644
--- a/sql/wsrep_mysqld.cc
+++ b/sql/wsrep_mysqld.cc
@@ -84,6 +84,7 @@ const char *wsrep_data_home_dir;
const char *wsrep_dbug_option;
const char *wsrep_notify_cmd;
const char *wsrep_status_file;
+const char *wsrep_allowlist;
ulong wsrep_debug; // Debug level logging
my_bool wsrep_convert_LOCK_to_trx; // Convert locking sessions to trx
@@ -455,6 +456,17 @@ void wsrep_init_schema()
WSREP_ERROR("Failed to init wsrep schema");
unireg_abort(1);
}
+ // If we are bootstraping new cluster we should
+ // clear allowlist table and populate it from variable
+ if (wsrep_new_cluster)
+ {
+ wsrep_schema->clear_allowlist();
+ std::vector<std::string> ip_allowlist;
+ if (wsrep_split_allowlist(ip_allowlist))
+ {
+ wsrep_schema->store_allowlist(ip_allowlist);
+ }
+ }
}
}
@@ -881,10 +893,14 @@ int wsrep_init()
if (!wsrep_data_home_dir || strlen(wsrep_data_home_dir) == 0)
wsrep_data_home_dir= mysql_real_data_home;
- if (Wsrep_server_state::instance().load_provider(wsrep_provider,
- wsrep_provider_options))
+ Wsrep_server_state::init_provider_services();
+ if (Wsrep_server_state::instance().load_provider(
+ wsrep_provider,
+ wsrep_provider_options,
+ Wsrep_server_state::instance().provider_services()))
{
WSREP_ERROR("Failed to load provider");
+ Wsrep_server_state::deinit_provider_services();
return 1;
}
@@ -898,6 +914,7 @@ int wsrep_init()
"supports streaming replication.",
wsrep_provider, global_system_variables.wsrep_trx_fragment_size);
Wsrep_server_state::instance().unload_provider();
+ Wsrep_server_state::deinit_provider_services();
return 1;
}
@@ -1013,6 +1030,8 @@ void wsrep_deinit(bool free_options)
WSREP_DEBUG("wsrep_deinit");
Wsrep_server_state::instance().unload_provider();
+ Wsrep_server_state::deinit_provider_services();
+
provider_name[0]= '\0';
provider_version[0]= '\0';
provider_vendor[0]= '\0';
@@ -1162,8 +1181,9 @@ bool wsrep_start_replication(const char *wsrep_cluster_address)
// --wsrep-new-cluster flag is not used, checking wsrep_cluster_address
// it should match gcomm:// only to be considered as bootstrap node.
// This logic is used in galera.
- if (!wsrep_new_cluster && (strlen(wsrep_cluster_address) == 8) &&
- !strncmp(wsrep_cluster_address, "gcomm://", 8))
+ if (!wsrep_new_cluster &&
+ (strlen(wsrep_cluster_address) == 8) &&
+ !strncmp(wsrep_cluster_address, "gcomm://", 8))
{
wsrep_new_cluster= true;
}
@@ -1794,6 +1814,34 @@ bool wsrep_reload_ssl()
}
}
+bool wsrep_split_allowlist(std::vector<std::string>& allowlist)
+{
+ if (!wsrep_allowlist || 0 == strlen(wsrep_allowlist))
+ {
+ return false;
+ }
+ std::istringstream ss{wsrep_allowlist};
+ std::string token;
+ while (std::getline(ss, token, ','))
+ {
+ if (!token.empty())
+ {
+ struct sockaddr_in sa_4;
+ struct sockaddr_in6 sa_6;
+ if ((inet_pton(AF_INET, token.c_str(), &(sa_4.sin_addr)) != 0) ||
+ (inet_pton(AF_INET6, token.c_str(), &(sa_6.sin6_addr)) != 0))
+ {
+ allowlist.push_back(token);
+ }
+ else
+ {
+ WSREP_WARN("Invalid IP address %s provided in `wsrep_allowlist` variable", token.c_str());
+ }
+ }
+ }
+ return allowlist.size();
+}
+
/*!
* @param db Database string
* @param table Table string
@@ -3329,7 +3377,6 @@ void wsrep_wait_appliers_close(THD *thd)
is also applier, we are still running...
*/
}
-
int wsrep_must_ignore_error(THD* thd)
{
const int error= thd->get_stmt_da()->sql_errno();
diff --git a/sql/wsrep_mysqld.h b/sql/wsrep_mysqld.h
index 982dcdf3042..0d2fcd559ef 100644
--- a/sql/wsrep_mysqld.h
+++ b/sql/wsrep_mysqld.h
@@ -68,6 +68,7 @@ extern ulong wsrep_max_ws_size;
extern ulong wsrep_max_ws_rows;
extern const char* wsrep_notify_cmd;
extern const char* wsrep_status_file;
+extern const char* wsrep_allowlist;
extern my_bool wsrep_certify_nonPK;
extern long int wsrep_protocol_version;
extern my_bool wsrep_desync;
@@ -221,6 +222,7 @@ extern int wsrep_check_opts();
extern void wsrep_prepend_PATH (const char* path);
extern bool wsrep_append_fk_parent_table(THD* thd, TABLE_LIST* table, wsrep::key_array* keys);
extern bool wsrep_reload_ssl();
+extern bool wsrep_split_allowlist(std::vector<std::string>& allowlist);
/* Other global variables */
extern wsrep_seqno_t wsrep_locked_seqno;
diff --git a/sql/wsrep_schema.cc b/sql/wsrep_schema.cc
index 1cfdae2890b..5595e0a090c 100644
--- a/sql/wsrep_schema.cc
+++ b/sql/wsrep_schema.cc
@@ -1,4 +1,4 @@
-/* Copyright (C) 2015-2021 Codership Oy <info@codership.com>
+/* Copyright (C) 2015-2022 Codership Oy <info@codership.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -39,6 +39,7 @@
#define WSREP_STREAMING_TABLE "wsrep_streaming_log"
#define WSREP_CLUSTER_TABLE "wsrep_cluster"
#define WSREP_MEMBERS_TABLE "wsrep_cluster_members"
+#define WSREP_ALLOWLIST_TABLE "wsrep_allowlist"
const char* wsrep_sr_table_name_full= WSREP_SCHEMA "/" WSREP_STREAMING_TABLE;
@@ -46,6 +47,7 @@ static const std::string wsrep_schema_str= WSREP_SCHEMA;
static const std::string sr_table_str= WSREP_STREAMING_TABLE;
static const std::string cluster_table_str= WSREP_CLUSTER_TABLE;
static const std::string members_table_str= WSREP_MEMBERS_TABLE;
+static const std::string allowlist_table_str= WSREP_ALLOWLIST_TABLE;
static const std::string create_cluster_table_str=
"CREATE TABLE IF NOT EXISTS " + wsrep_schema_str + "." + cluster_table_str +
@@ -91,6 +93,13 @@ static const std::string create_frag_table_str=
"PRIMARY KEY (node_uuid, trx_id, seqno)"
") ENGINE=InnoDB STATS_PERSISTENT=0";
+static const std::string create_allowlist_table_str=
+ "CREATE TABLE IF NOT EXISTS " + wsrep_schema_str + "." + allowlist_table_str +
+ "("
+ "ip CHAR(64) NOT NULL,"
+ "PRIMARY KEY (ip)"
+ ") ENGINE=InnoDB STATS_PERSISTENT=0";
+
static const std::string delete_from_cluster_table=
"DELETE FROM " + wsrep_schema_str + "." + cluster_table_str;
@@ -440,11 +449,18 @@ static int insert(TABLE* table) {
}
if ((error= table->file->ha_write_row(table->record[0]))) {
- WSREP_ERROR("Error writing into %s.%s: %d",
- table->s->db.str,
- table->s->table_name.str,
- error);
- ret= 1;
+ if (error == HA_ERR_FOUND_DUPP_KEY) {
+ WSREP_WARN("Duplicate key found when writing into %s.%s",
+ table->s->db.str,
+ table->s->table_name.str);
+ ret= HA_ERR_FOUND_DUPP_KEY;
+ } else {
+ WSREP_ERROR("Error writing into %s.%s: %d",
+ table->s->db.str,
+ table->s->table_name.str,
+ error);
+ ret= 1;
+ }
}
DBUG_RETURN(ret);
@@ -685,6 +701,8 @@ static void wsrep_init_thd_for_schema(THD *thd)
wsrep_store_threadvars(thd);
}
+static bool wsrep_schema_ready= false;
+
int Wsrep_schema::init()
{
DBUG_ENTER("Wsrep_schema::init()");
@@ -720,12 +738,16 @@ int Wsrep_schema::init()
alter_members_table.size()) ||
Wsrep_schema_impl::execute_SQL(thd,
alter_frag_table.c_str(),
- alter_frag_table.size()))
+ alter_frag_table.size()) ||
+ Wsrep_schema_impl::execute_SQL(thd,
+ create_allowlist_table_str.c_str(),
+ create_allowlist_table_str.size()))
{
ret= 1;
}
else
{
+ wsrep_schema_ready= true;
ret= 0;
}
@@ -1496,3 +1518,194 @@ int Wsrep_schema::recover_sr_transactions(THD *orig_thd)
out:
DBUG_RETURN(ret);
}
+
+void Wsrep_schema::clear_allowlist()
+{
+ THD* thd= new THD(next_thread_id());
+ if (!thd)
+ {
+ WSREP_ERROR("Unable to get thd");
+ return;
+ }
+
+ thd->thread_stack= (char*)&thd;
+ wsrep_init_thd_for_schema(thd);
+ TABLE* allowlist_table= 0;
+ int error= 0;
+
+ Wsrep_schema_impl::init_stmt(thd);
+
+ if (Wsrep_schema_impl::open_for_write(thd, allowlist_table_str.c_str(),
+ &allowlist_table) ||
+ Wsrep_schema_impl::init_for_scan(allowlist_table))
+ {
+ WSREP_ERROR("Failed to open mysql.wsrep_allowlist table");
+ goto out;
+ }
+
+ while (0 == error)
+ {
+ if ((error= Wsrep_schema_impl::next_record(allowlist_table)) == 0)
+ {
+ Wsrep_schema_impl::delete_row(allowlist_table);
+ }
+ else if (error == HA_ERR_END_OF_FILE)
+ {
+ continue;
+ }
+ else
+ {
+ WSREP_ERROR("Allowlist table scan returned error %d", error);
+ }
+ }
+
+ Wsrep_schema_impl::end_scan(allowlist_table);
+ Wsrep_schema_impl::finish_stmt(thd);
+out:
+ delete thd;
+}
+
+void Wsrep_schema::store_allowlist(std::vector<std::string>& ip_allowlist)
+{
+ THD* thd= new THD(next_thread_id());
+ if (!thd)
+ {
+ WSREP_ERROR("Unable to get thd");
+ return;
+ }
+
+ thd->thread_stack= (char*)&thd;
+ wsrep_init_thd_for_schema(thd);
+ TABLE* allowlist_table= 0;
+ int error;
+ Wsrep_schema_impl::init_stmt(thd);
+ if (Wsrep_schema_impl::open_for_write(thd, allowlist_table_str.c_str(),
+ &allowlist_table))
+ {
+ WSREP_ERROR("Failed to open mysql.wsrep_allowlist table");
+ goto out;
+ }
+ for (size_t i= 0; i < ip_allowlist.size(); ++i)
+ {
+ Wsrep_schema_impl::store(allowlist_table, 0, ip_allowlist[i]);
+ if ((error= Wsrep_schema_impl::insert(allowlist_table)))
+ {
+ if (error == HA_ERR_FOUND_DUPP_KEY)
+ {
+ WSREP_WARN("Duplicate entry (%s) found in `wsrep_allowlist` list", ip_allowlist[i].c_str());
+ }
+ else
+ {
+ WSREP_ERROR("Failed to write mysql.wsrep_allowlist table: %d", error);
+ goto out;
+ }
+ }
+ }
+ Wsrep_schema_impl::finish_stmt(thd);
+out:
+ delete thd;
+}
+
+typedef struct Allowlist_check_arg
+{
+ Allowlist_check_arg(const std::string& value)
+ : value(value)
+ , response(false)
+ {
+ }
+ std::string value;
+ bool response;
+} Allowlist_check_arg;
+
+static void *allowlist_check_thread(void *param)
+{
+ Allowlist_check_arg *arg= (Allowlist_check_arg *) param;
+
+ my_thread_init();
+ THD thd(0);
+ thd.thread_stack= (char *) &thd;
+ wsrep_init_thd_for_schema(&thd);
+
+ int error;
+ TABLE *allowlist_table= 0;
+ bool match_found_or_empty= false;
+ bool table_have_rows= false;
+ char row[64]= {
+ 0,
+ };
+
+ /*
+ * Read allowlist table
+ */
+ Wsrep_schema_impl::init_stmt(&thd);
+ if (Wsrep_schema_impl::open_for_read(&thd, allowlist_table_str.c_str(),
+ &allowlist_table) ||
+ Wsrep_schema_impl::init_for_scan(allowlist_table))
+ {
+ goto out;
+ }
+ while (true)
+ {
+ if ((error= Wsrep_schema_impl::next_record(allowlist_table)) == 0)
+ {
+ if (Wsrep_schema_impl::scan(allowlist_table, 0, row, sizeof(row)))
+ {
+ goto out;
+ }
+ table_have_rows= true;
+ if (!arg->value.compare(row))
+ {
+ match_found_or_empty= true;
+ break;
+ }
+ }
+ else if (error == HA_ERR_END_OF_FILE)
+ {
+ if (!table_have_rows)
+ {
+ WSREP_DEBUG("allowlist table empty, allowing all connections.");
+ // If table is empty we are allowing all connections
+ match_found_or_empty= true;
+ }
+ break;
+ }
+ else
+ {
+ goto out;
+ }
+ }
+ if (Wsrep_schema_impl::end_scan(allowlist_table))
+ {
+ goto out;
+ }
+ Wsrep_schema_impl::finish_stmt(&thd);
+ (void) trans_commit(&thd);
+out:
+ my_thread_end();
+ arg->response = match_found_or_empty;
+ return 0;
+}
+
+bool Wsrep_schema::allowlist_check(Wsrep_allowlist_key key,
+ const std::string &value)
+{
+ // We don't have wsrep schema initialized at this point
+ if (wsrep_schema_ready == false)
+ {
+ return true;
+ }
+ pthread_t allowlist_check_thd;
+ int ret;
+ Allowlist_check_arg arg(value);
+ ret= mysql_thread_create(0, /* Not instrumented */
+ &allowlist_check_thd, NULL,
+ allowlist_check_thread, &arg);
+ if (ret)
+ {
+ WSREP_ERROR("allowlist_check(): mysql_thread_create() failed: %d (%s)",
+ ret, strerror(ret));
+ return false;
+ }
+ pthread_join(allowlist_check_thd, NULL);
+ return arg.response;
+}
diff --git a/sql/wsrep_schema.h b/sql/wsrep_schema.h
index 36e23998d19..05522e77089 100644
--- a/sql/wsrep_schema.h
+++ b/sql/wsrep_schema.h
@@ -133,6 +133,28 @@ class Wsrep_schema
*/
int recover_sr_transactions(THD* orig_thd);
+
+ /**
+ Delete all rows on bootstrap from `wsrep_allowlist` variable
+ */
+ void clear_allowlist();
+
+ /**
+ Store allowlist ip on bootstrap from `wsrep_allowlist` variable
+ */
+ void store_allowlist(std::vector<std::string>& ip_allowlist);
+
+ /**
+ Scan white list table against accepted connection. Allow if ip
+ is found in table or if table is empty.
+
+ @param key Which allowlist column to compare
+ @param value Value to be checked against allowlist
+
+ @return True if found or empty table, false on not found
+ */
+ bool allowlist_check(Wsrep_allowlist_key key, const std::string& val);
+
private:
/* Non-copyable */
Wsrep_schema(const Wsrep_schema&);
diff --git a/sql/wsrep_server_state.cc b/sql/wsrep_server_state.cc
index 973850871b1..8e5f20c8b96 100644
--- a/sql/wsrep_server_state.cc
+++ b/sql/wsrep_server_state.cc
@@ -16,6 +16,7 @@
#include "my_global.h"
#include "wsrep_api.h"
#include "wsrep_server_state.h"
+#include "wsrep_allowlist_service.h"
#include "wsrep_binlog.h" /* init/deinit group commit */
mysql_mutex_t LOCK_wsrep_server_state;
@@ -26,6 +27,8 @@ PSI_mutex_key key_LOCK_wsrep_server_state;
PSI_cond_key key_COND_wsrep_server_state;
#endif
+wsrep::provider::services Wsrep_server_state::m_provider_services;
+
Wsrep_server_state::Wsrep_server_state(const std::string& name,
const std::string& incoming_address,
const std::string& address,
@@ -74,7 +77,6 @@ void Wsrep_server_state::init_once(const std::string& name,
void Wsrep_server_state::destroy()
{
-
if (m_instance)
{
delete m_instance;
@@ -83,3 +85,16 @@ void Wsrep_server_state::destroy()
mysql_cond_destroy(&COND_wsrep_server_state);
}
}
+
+void Wsrep_server_state::init_provider_services()
+{
+ m_provider_services.allowlist_service= wsrep_allowlist_service_init();
+}
+
+void Wsrep_server_state::deinit_provider_services()
+{
+ if (m_provider_services.allowlist_service)
+ wsrep_allowlist_service_deinit();
+ m_provider_services= wsrep::provider::services();
+}
+
diff --git a/sql/wsrep_server_state.h b/sql/wsrep_server_state.h
index 1ef937300f6..8759f7a9d84 100644
--- a/sql/wsrep_server_state.h
+++ b/sql/wsrep_server_state.h
@@ -55,6 +55,14 @@ public:
{
return (get_provider().capabilities() & capability);
}
+
+ static void init_provider_services();
+ static void deinit_provider_services();
+
+ static const wsrep::provider::services& provider_services()
+ {
+ return m_provider_services;
+ }
private:
Wsrep_server_state(const std::string& name,
@@ -67,6 +75,7 @@ private:
Wsrep_mutex m_mutex;
Wsrep_condition_variable m_cond;
Wsrep_server_service m_service;
+ static wsrep::provider::services m_provider_services;
static Wsrep_server_state* m_instance;
};
diff --git a/sql/wsrep_types.h b/sql/wsrep_types.h
index 9da00e305a7..cd53ab95d0c 100644
--- a/sql/wsrep_types.h
+++ b/sql/wsrep_types.h
@@ -21,9 +21,11 @@
#include "wsrep/seqno.hpp"
#include "wsrep/view.hpp"
+#include "wsrep/allowlist_service.hpp"
typedef wsrep::id Wsrep_id;
typedef wsrep::seqno Wsrep_seqno;
typedef wsrep::view Wsrep_view;
+typedef enum wsrep::allowlist_service::allowlist_key Wsrep_allowlist_key;
#endif /* WSREP_TYPES_H */
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index 662e69f151f..8c33d18af74 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -201,8 +201,6 @@ static my_bool innobase_create_status_file;
my_bool innobase_stats_on_metadata;
static my_bool innodb_optimize_fulltext_only;
-static char* innodb_version_str = (char*) INNODB_VERSION_STR;
-
extern uint srv_fil_crypt_rotate_key_age;
extern uint srv_n_fil_crypt_iops;
@@ -899,6 +897,8 @@ static MYSQL_THDVAR_STR(tmpdir,
"Directory for temporary non-tablespace files.",
innodb_tmpdir_validate, NULL, NULL);
+static size_t truncated_status_writes;
+
static SHOW_VAR innodb_status_variables[]= {
#ifdef BTR_CUR_HASH_ADAPT
{"adaptive_hash_hash_searches", &export_vars.innodb_ahi_hit, SHOW_SIZE_T},
@@ -1007,19 +1007,8 @@ static SHOW_VAR innodb_status_variables[]= {
{"row_lock_time_avg", &export_vars.innodb_row_lock_time_avg, SHOW_SIZE_T},
{"row_lock_time_max", &export_vars.innodb_row_lock_time_max, SHOW_SIZE_T},
{"row_lock_waits", &export_vars.innodb_row_lock_waits, SHOW_SIZE_T},
- {"rows_deleted", &export_vars.innodb_rows_deleted, SHOW_SIZE_T},
- {"rows_inserted", &export_vars.innodb_rows_inserted, SHOW_SIZE_T},
- {"rows_read", &export_vars.innodb_rows_read, SHOW_SIZE_T},
- {"rows_updated", &export_vars.innodb_rows_updated, SHOW_SIZE_T},
- {"system_rows_deleted", &export_vars.innodb_system_rows_deleted,SHOW_SIZE_T},
- {"system_rows_inserted", &export_vars.innodb_system_rows_inserted,
- SHOW_SIZE_T},
- {"system_rows_read", &export_vars.innodb_system_rows_read, SHOW_SIZE_T},
- {"system_rows_updated", &export_vars.innodb_system_rows_updated,
- SHOW_SIZE_T},
{"num_open_files", &fil_system.n_open, SHOW_SIZE_T},
- {"truncated_status_writes", &export_vars.innodb_truncated_status_writes,
- SHOW_SIZE_T},
+ {"truncated_status_writes", &truncated_status_writes, SHOW_SIZE_T},
{"available_undo_logs", &srv_available_undo_logs, SHOW_ULONG},
{"undo_truncations", &export_vars.innodb_undo_truncations, SHOW_ULONG},
@@ -1062,13 +1051,6 @@ static SHOW_VAR innodb_status_variables[]= {
{"onlineddl_pct_progress",
&export_vars.innodb_onlineddl_pct_progress, SHOW_SIZE_T},
- /* Times secondary index lookup triggered cluster lookup and
- times prefix optimization avoided triggering cluster lookup */
- {"secondary_index_triggered_cluster_reads",
- &export_vars.innodb_sec_rec_cluster_reads, SHOW_SIZE_T},
- {"secondary_index_triggered_cluster_reads_avoided",
- &export_vars.innodb_sec_rec_cluster_reads_avoided, SHOW_SIZE_T},
-
/* Encryption */
{"encryption_rotation_pages_read_from_cache",
&export_vars.innodb_encryption_rotation_pages_read_from_cache, SHOW_SIZE_T},
@@ -9006,13 +8988,6 @@ ha_innobase::index_read(
case DB_SUCCESS:
error = 0;
table->status = 0;
- if (m_prebuilt->table->is_system_db) {
- srv_stats.n_system_rows_read.add(
- thd_get_thread_id(m_prebuilt->trx->mysql_thd), 1);
- } else {
- srv_stats.n_rows_read.add(
- thd_get_thread_id(m_prebuilt->trx->mysql_thd), 1);
- }
break;
case DB_RECORD_NOT_FOUND:
@@ -9267,13 +9242,6 @@ ha_innobase::general_fetch(
case DB_SUCCESS:
error = 0;
table->status = 0;
- if (m_prebuilt->table->is_system_db) {
- srv_stats.n_system_rows_read.add(
- thd_get_thread_id(trx->mysql_thd), 1);
- } else {
- srv_stats.n_rows_read.add(
- thd_get_thread_id(trx->mysql_thd), 1);
- }
break;
case DB_RECORD_NOT_FOUND:
error = HA_ERR_END_OF_FILE;
@@ -16165,7 +16133,7 @@ innodb_show_status(
if (flen > MAX_STATUS_SIZE) {
usable_len = MAX_STATUS_SIZE;
- srv_truncated_status_writes++;
+ truncated_status_writes++;
} else {
usable_len = flen;
}
@@ -19319,11 +19287,13 @@ static MYSQL_SYSVAR_UINT(spin_wait_delay, srv_spin_wait_delay,
"Maximum delay between polling for a spin lock (4 by default)",
NULL, NULL, 4, 0, 6000, 0);
+static my_bool innodb_prefix_index_cluster_optimization;
+
static MYSQL_SYSVAR_BOOL(prefix_index_cluster_optimization,
- srv_prefix_index_cluster_optimization,
- PLUGIN_VAR_OPCMDARG,
- "Enable prefix optimization to sometimes avoid cluster index lookups.",
- NULL, NULL, FALSE);
+ innodb_prefix_index_cluster_optimization,
+ PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_DEPRECATED,
+ "Deprecated parameter with no effect",
+ nullptr, nullptr, TRUE);
static MYSQL_SYSVAR_STR(data_file_path, innobase_data_file_path,
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
@@ -19378,10 +19348,6 @@ static MYSQL_SYSVAR_LONG(autoinc_lock_mode, innobase_autoinc_lock_mode,
AUTOINC_OLD_STYLE_LOCKING, /* Minimum value */
AUTOINC_NO_LOCKING, 0); /* Maximum value */
-static MYSQL_SYSVAR_STR(version, innodb_version_str,
- PLUGIN_VAR_NOCMDOPT | PLUGIN_VAR_READONLY,
- "InnoDB version", NULL, NULL, INNODB_VERSION_STR);
-
#ifdef HAVE_URING
# include <sys/utsname.h>
static utsname uname_for_io_uring;
@@ -19775,7 +19741,6 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
MYSQL_SYSVAR(prefix_index_cluster_optimization),
MYSQL_SYSVAR(tmpdir),
MYSQL_SYSVAR(autoinc_lock_mode),
- MYSQL_SYSVAR(version),
MYSQL_SYSVAR(use_native_aio),
#ifdef HAVE_LIBNUMA
MYSQL_SYSVAR(numa_interleave),
@@ -19855,10 +19820,10 @@ maria_declare_plugin(innobase)
PLUGIN_LICENSE_GPL,
innodb_init, /* Plugin Init */
NULL, /* Plugin Deinit */
- INNODB_VERSION_SHORT,
+ MYSQL_VERSION_MAJOR << 8 | MYSQL_VERSION_MINOR,
innodb_status_variables_export,/* status variables */
innobase_system_variables, /* system variables */
- INNODB_VERSION_STR, /* string version */
+ PACKAGE_VERSION,
MariaDB_PLUGIN_MATURITY_STABLE /* maturity */
},
i_s_innodb_trx,
diff --git a/storage/innobase/handler/i_s.cc b/storage/innobase/handler/i_s.cc
index 0379443e81d..9510a4a8bfc 100644
--- a/storage/innobase/handler/i_s.cc
+++ b/storage/innobase/handler/i_s.cc
@@ -534,6 +534,9 @@ static struct st_mysql_information_schema i_s_info =
MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION
};
+/** version number reported by SHOW PLUGINS */
+constexpr unsigned i_s_version= MYSQL_VERSION_MAJOR << 8 | MYSQL_VERSION_MINOR;
+
struct st_maria_plugin i_s_innodb_trx =
{
/* the plugin type (a MYSQL_XXX_PLUGIN value) */
@@ -568,19 +571,8 @@ struct st_maria_plugin i_s_innodb_trx =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
static const LEX_CSTRING lock_mode_values[] =
@@ -792,19 +784,8 @@ struct st_maria_plugin i_s_innodb_locks =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
@@ -955,19 +936,8 @@ struct st_maria_plugin i_s_innodb_lock_waits =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -1144,19 +1114,8 @@ struct st_maria_plugin i_s_innodb_cmp =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
struct st_maria_plugin i_s_innodb_cmp_reset =
@@ -1194,19 +1153,8 @@ struct st_maria_plugin i_s_innodb_cmp_reset =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
@@ -1449,19 +1397,8 @@ struct st_maria_plugin i_s_innodb_cmp_per_index =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
struct st_maria_plugin i_s_innodb_cmp_per_index_reset =
@@ -1499,19 +1436,8 @@ struct st_maria_plugin i_s_innodb_cmp_per_index_reset =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
@@ -1694,19 +1620,8 @@ struct st_maria_plugin i_s_innodb_cmpmem =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
struct st_maria_plugin i_s_innodb_cmpmem_reset =
@@ -1744,19 +1659,8 @@ struct st_maria_plugin i_s_innodb_cmpmem_reset =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
@@ -2176,19 +2080,8 @@ struct st_maria_plugin i_s_innodb_metrics =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -2285,19 +2178,8 @@ struct st_maria_plugin i_s_innodb_ft_default_stopword =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -2454,19 +2336,8 @@ struct st_maria_plugin i_s_innodb_ft_deleted =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
/*******************************************************************//**
@@ -2537,19 +2408,8 @@ struct st_maria_plugin i_s_innodb_ft_being_deleted =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
@@ -2800,19 +2660,8 @@ struct st_maria_plugin i_s_innodb_ft_index_cache =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
/*******************************************************************//**
@@ -3230,19 +3079,8 @@ struct st_maria_plugin i_s_innodb_ft_index_table =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
@@ -3423,19 +3261,8 @@ struct st_maria_plugin i_s_innodb_ft_config =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -3723,19 +3550,8 @@ struct st_maria_plugin i_s_innodb_buffer_stats =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
/** These must correspond to the first values of buf_page_state */
@@ -4259,19 +4075,8 @@ struct st_maria_plugin i_s_innodb_buffer_page =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -4612,19 +4417,8 @@ struct st_maria_plugin i_s_innodb_buffer_page_lru =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
/*******************************************************************//**
@@ -4900,19 +4694,8 @@ struct st_maria_plugin i_s_innodb_sys_tables =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -5127,19 +4910,8 @@ struct st_maria_plugin i_s_innodb_sys_tablestats =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -5366,19 +5138,8 @@ struct st_maria_plugin i_s_innodb_sys_indexes =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -5579,19 +5340,8 @@ struct st_maria_plugin i_s_innodb_sys_columns =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -5766,19 +5516,8 @@ struct st_maria_plugin i_s_innodb_sys_virtual =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
@@ -5961,19 +5700,8 @@ struct st_maria_plugin i_s_innodb_sys_fields =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -6157,19 +5885,8 @@ struct st_maria_plugin i_s_innodb_sys_foreign =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -6353,19 +6070,8 @@ struct st_maria_plugin i_s_innodb_sys_foreign_cols =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -6563,19 +6269,8 @@ struct st_maria_plugin i_s_innodb_sys_tablespaces =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
- MariaDB_PLUGIN_MATURITY_STABLE,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
+ MariaDB_PLUGIN_MATURITY_STABLE
};
namespace Show {
@@ -6799,17 +6494,6 @@ struct st_maria_plugin i_s_innodb_tablespaces_encryption =
/* int (*)(void*); */
i_s_common_deinit,
- /* plugin version (for SHOW PLUGINS) */
- /* unsigned int */
- INNODB_VERSION_SHORT,
-
- /* struct st_mysql_show_var* */
- NULL,
-
- /* struct st_mysql_sys_var** */
- NULL,
-
- /* Maria extension */
- INNODB_VERSION_STR,
+ i_s_version, nullptr, nullptr, PACKAGE_VERSION,
MariaDB_PLUGIN_MATURITY_STABLE
};
diff --git a/storage/innobase/ibuf/ibuf0ibuf.cc b/storage/innobase/ibuf/ibuf0ibuf.cc
index 66e330a0592..2512232c7ca 100644
--- a/storage/innobase/ibuf/ibuf0ibuf.cc
+++ b/storage/innobase/ibuf/ibuf0ibuf.cc
@@ -1214,6 +1214,7 @@ static
void
ibuf_print_ops(
/*===========*/
+ const char* op_name,/*!< in: operation name */
const Atomic_counter<ulint>* ops, /*!< in: operation counts */
FILE* file) /*!< in: file where to print */
{
@@ -1222,11 +1223,11 @@ ibuf_print_ops(
"delete mark",
"delete"
};
- ulint i;
- ut_a(UT_ARR_SIZE(op_names) == IBUF_OP_COUNT);
+ static_assert(array_elements(op_names) == IBUF_OP_COUNT, "");
+ fputs(op_name, file);
- for (i = 0; i < IBUF_OP_COUNT; i++) {
+ for (ulint i = 0; i < IBUF_OP_COUNT; i++) {
fprintf(file, "%s " ULINTPF "%s", op_names[i],
ulint{ops[i]}, (i < (IBUF_OP_COUNT - 1)) ? ", " : "");
}
@@ -4534,23 +4535,28 @@ ibuf_print(
/*=======*/
FILE* file) /*!< in: file where to print */
{
- mysql_mutex_lock(&ibuf_mutex);
-
- fprintf(file,
- "Ibuf: size " ULINTPF ", free list len " ULINTPF ","
- " seg size " ULINTPF ", " ULINTPF " merges\n",
- ulint{ibuf.size},
- ibuf.free_list_len,
- ibuf.seg_size,
- ulint{ibuf.n_merges});
-
- fputs("merged operations:\n ", file);
- ibuf_print_ops(ibuf.n_merged_ops, file);
- fputs("discarded operations:\n ", file);
- ibuf_print_ops(ibuf.n_discarded_ops, file);
+ mysql_mutex_lock(&ibuf_mutex);
+ if (ibuf.empty)
+ {
+ mysql_mutex_unlock(&ibuf_mutex);
+ return;
+ }
- mysql_mutex_unlock(&ibuf_mutex);
+ const ulint size= ibuf.size;
+ const ulint free_list_len= ibuf.free_list_len;
+ const ulint seg_size= ibuf.seg_size;
+ mysql_mutex_unlock(&ibuf_mutex);
+
+ fprintf(file,
+ "-------------\n"
+ "INSERT BUFFER\n"
+ "-------------\n"
+ "size " ULINTPF ", free list len " ULINTPF ","
+ " seg size " ULINTPF ", " ULINTPF " merges\n",
+ size, free_list_len, seg_size, ulint{ibuf.n_merges});
+ ibuf_print_ops("merged operations:\n", ibuf.n_merged_ops, file);
+ ibuf_print_ops("discarded operations:\n", ibuf.n_discarded_ops, file);
}
/** Check the insert buffer bitmaps on IMPORT TABLESPACE.
diff --git a/storage/innobase/include/srv0mon.h b/storage/innobase/include/srv0mon.h
index 1ca2d7a429f..51f3049b81a 100644
--- a/storage/innobase/include/srv0mon.h
+++ b/storage/innobase/include/srv0mon.h
@@ -175,8 +175,6 @@ enum monitor_id_t {
MONITOR_OVLD_PAGE_CREATED,
MONITOR_OVLD_PAGES_WRITTEN,
MONITOR_OVLD_PAGES_READ,
- MONITOR_OVLD_INDEX_SEC_REC_CLUSTER_READS,
- MONITOR_OVLD_INDEX_SEC_REC_CLUSTER_READS_AVOIDED,
MONITOR_OVLD_BYTE_READ,
MONITOR_OVLD_BYTE_WRITTEN,
MONITOR_FLUSH_BATCH_SCANNED,
@@ -374,17 +372,6 @@ enum monitor_id_t {
MONITOR_OVLD_SRV_DBLWR_PAGES_WRITTEN,
MONITOR_OVLD_SRV_PAGE_SIZE,
- /* Data DML related counters */
- MONITOR_MODULE_DML_STATS,
- MONITOR_OLVD_ROW_READ,
- MONITOR_OLVD_ROW_INSERTED,
- MONITOR_OLVD_ROW_DELETED,
- MONITOR_OLVD_ROW_UPDTATED,
- MONITOR_OLVD_SYSTEM_ROW_READ,
- MONITOR_OLVD_SYSTEM_ROW_INSERTED,
- MONITOR_OLVD_SYSTEM_ROW_DELETED,
- MONITOR_OLVD_SYSTEM_ROW_UPDATED,
-
/* Data DDL related counters */
MONITOR_MODULE_DDL_STATS,
MONITOR_BACKGROUND_DROP_INDEX,
diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h
index 41f61567b53..cc78696ee77 100644
--- a/storage/innobase/include/srv0srv.h
+++ b/storage/innobase/include/srv0srv.h
@@ -116,36 +116,6 @@ struct srv_stats_t
/** Number of data read in total (in bytes) */
ulint_ctr_1_t data_read;
- /** Number of rows read. */
- ulint_ctr_n_t n_rows_read;
-
- /** Number of rows updated */
- ulint_ctr_n_t n_rows_updated;
-
- /** Number of rows deleted */
- ulint_ctr_n_t n_rows_deleted;
-
- /** Number of rows inserted */
- ulint_ctr_n_t n_rows_inserted;
-
- /** Number of system rows read. */
- ulint_ctr_n_t n_system_rows_read;
-
- /** Number of system rows updated */
- ulint_ctr_n_t n_system_rows_updated;
-
- /** Number of system rows deleted */
- ulint_ctr_n_t n_system_rows_deleted;
-
- /** Number of system rows inserted */
- ulint_ctr_n_t n_system_rows_inserted;
-
- /** Number of times secondary index lookup triggered cluster lookup */
- ulint_ctr_n_t n_sec_rec_cluster_reads;
-
- /** Number of times prefix optimization avoided triggering cluster lookup */
- ulint_ctr_n_t n_sec_rec_cluster_reads_avoided;
-
/** Number of encryption_get_latest_key_version calls */
ulint_ctr_n_t n_key_requests;
@@ -251,10 +221,6 @@ extern ulong srv_purge_rseg_truncate_frequency;
/** Enable or Disable Truncate of UNDO tablespace. */
extern my_bool srv_undo_log_truncate;
-/* Optimize prefix index queries to skip cluster index lookup when possible */
-/* Enables or disables this prefix optimization. Disabled by default. */
-extern my_bool srv_prefix_index_cluster_optimization;
-
/** Default size of UNDO tablespace (10MiB for innodb_page_size=16k) */
constexpr ulint SRV_UNDO_TABLESPACE_SIZE_IN_PAGES= (10U << 20) /
UNIV_PAGE_SIZE_DEF;
@@ -399,7 +365,6 @@ extern bool srv_monitor_active;
extern ulong srv_n_spin_wait_rounds;
extern uint srv_spin_wait_delay;
-extern ulint srv_truncated_status_writes;
/** Number of initialized rollback segments for persistent undo log */
extern ulong srv_available_undo_logs;
/** Iterations of the loop bounded by 'srv_active' label. */
@@ -701,15 +666,6 @@ struct export_var_t{
/ srv_n_lock_wait_count */
ulint innodb_row_lock_time_max; /*!< srv_n_lock_max_wait_time
/ 1000 */
- ulint innodb_rows_read; /*!< srv_n_rows_read */
- ulint innodb_rows_inserted; /*!< srv_n_rows_inserted */
- ulint innodb_rows_updated; /*!< srv_n_rows_updated */
- ulint innodb_rows_deleted; /*!< srv_n_rows_deleted */
- ulint innodb_system_rows_read; /*!< srv_n_system_rows_read */
- ulint innodb_system_rows_inserted; /*!< srv_n_system_rows_inserted */
- ulint innodb_system_rows_updated; /*!< srv_n_system_rows_updated */
- ulint innodb_system_rows_deleted; /*!< srv_n_system_rows_deleted*/
- ulint innodb_truncated_status_writes; /*!< srv_truncated_status_writes */
/** Number of undo tablespace truncation operations */
ulong innodb_undo_truncations;
@@ -761,9 +717,6 @@ struct export_var_t{
/* Number of temporary tablespace pages decrypted */
ib_int64_t innodb_n_temp_blocks_decrypted;
- ulint innodb_sec_rec_cluster_reads; /*!< srv_sec_rec_cluster_reads */
- ulint innodb_sec_rec_cluster_reads_avoided;/*!< srv_sec_rec_cluster_reads_avoided */
-
ulint innodb_encryption_rotation_pages_read_from_cache;
ulint innodb_encryption_rotation_pages_read_from_disk;
ulint innodb_encryption_rotation_pages_modified;
diff --git a/storage/innobase/include/univ.i b/storage/innobase/include/univ.i
index 2af1f480764..d06343fcabe 100644
--- a/storage/innobase/include/univ.i
+++ b/storage/innobase/include/univ.i
@@ -33,25 +33,6 @@ Created 1/20/1994 Heikki Tuuri
#pragma once
-/* aux macros to convert M into "123" (string) if M is defined like
-#define M 123 */
-#define _IB_TO_STR(s) #s
-#define IB_TO_STR(s) _IB_TO_STR(s)
-
-/* The following is the InnoDB version as shown in
-SELECT plugin_version FROM information_schema.plugins;
-calculated in make_version_string() in sql/sql_show.cc like this:
-"version >> 8" . "version & 0xff"
-because the version is shown with only one dot, we skip the last
-component, i.e. we show M.N.P as M.N */
-#define INNODB_VERSION_SHORT \
- (MYSQL_VERSION_MAJOR << 8 | MYSQL_VERSION_MINOR)
-
-#define INNODB_VERSION_STR \
- IB_TO_STR(MYSQL_VERSION_MAJOR) "." \
- IB_TO_STR(MYSQL_VERSION_MINOR) "." \
- IB_TO_STR(MYSQL_VERSION_PATCH)
-
/** How far ahead should we tell the service manager the timeout
(time in seconds) */
#define INNODB_EXTEND_TIMEOUT_INTERVAL 30
diff --git a/storage/innobase/log/log0log.cc b/storage/innobase/log/log0log.cc
index 4d39381f108..2804143721c 100644
--- a/storage/innobase/log/log0log.cc
+++ b/storage/innobase/log/log0log.cc
@@ -256,16 +256,18 @@ void log_t::header_write(byte *buf, lsn_t lsn, bool encrypted)
mach_write_to_4(my_assume_aligned<4>(buf) + LOG_HEADER_FORMAT,
log_sys.FORMAT_10_8);
mach_write_to_8(my_assume_aligned<8>(buf + LOG_HEADER_START_LSN), lsn);
- static constexpr const char LOG_HEADER_CREATOR_CURRENT[]=
- "MariaDB "
- IB_TO_STR(MYSQL_VERSION_MAJOR) "."
- IB_TO_STR(MYSQL_VERSION_MINOR) "."
- IB_TO_STR(MYSQL_VERSION_PATCH);
-
- strcpy(reinterpret_cast<char*>(buf) + LOG_HEADER_CREATOR,
- LOG_HEADER_CREATOR_CURRENT);
- static_assert(LOG_HEADER_CREATOR_END - LOG_HEADER_CREATOR >=
- sizeof LOG_HEADER_CREATOR_CURRENT, "compatibility");
+
+#if defined __GNUC__ && __GNUC__ > 7
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wstringop-truncation"
+#endif
+ strncpy(reinterpret_cast<char*>(buf) + LOG_HEADER_CREATOR,
+ "MariaDB " PACKAGE_VERSION,
+ LOG_HEADER_CREATOR_END - LOG_HEADER_CREATOR);
+#if defined __GNUC__ && __GNUC__ > 7
+# pragma GCC diagnostic pop
+#endif
+
if (encrypted)
log_crypt_write_header(buf + LOG_HEADER_CREATOR_END);
mach_write_to_4(my_assume_aligned<4>(508 + buf), my_crc32c(0, buf, 508));
diff --git a/storage/innobase/row/row0mysql.cc b/storage/innobase/row/row0mysql.cc
index 64f750d0f13..87c23660887 100644
--- a/storage/innobase/row/row0mysql.cc
+++ b/storage/innobase/row/row0mysql.cc
@@ -1383,12 +1383,6 @@ error_exit:
}
}
- if (table->is_system_db) {
- srv_stats.n_system_rows_inserted.inc(size_t(trx->id));
- } else {
- srv_stats.n_rows_inserted.inc(size_t(trx->id));
- }
-
/* Not protected by dict_sys.latch or table->stats_mutex_lock()
for performance
reasons, we would rather get garbage in stat_n_rows (which is
@@ -1726,20 +1720,8 @@ row_update_for_mysql(row_prebuilt_t* prebuilt)
with a latch. */
dict_table_n_rows_dec(prebuilt->table);
- if (table->is_system_db) {
- srv_stats.n_system_rows_deleted.inc(size_t(trx->id));
- } else {
- srv_stats.n_rows_deleted.inc(size_t(trx->id));
- }
-
update_statistics = !srv_stats_include_delete_marked;
} else {
- if (table->is_system_db) {
- srv_stats.n_system_rows_updated.inc(size_t(trx->id));
- } else {
- srv_stats.n_rows_updated.inc(size_t(trx->id));
- }
-
update_statistics
= !(node->cmpl_info & UPD_NODE_NO_ORD_CHANGE);
}
@@ -1952,8 +1934,6 @@ static dberr_t row_update_vers_insert(que_thr_t* thr, upd_node_t* node)
goto exit;
case DB_SUCCESS:
- srv_stats.n_rows_inserted.inc(
- static_cast<size_t>(trx->id));
dict_stats_update_if_needed(table, *trx);
goto exit;
}
@@ -2037,11 +2017,9 @@ row_update_cascade_for_mysql(
dict_table_n_rows_dec(node->table);
stats = !srv_stats_include_delete_marked;
- srv_stats.n_rows_deleted.inc(size_t(trx->id));
} else {
stats = !(node->cmpl_info
& UPD_NODE_NO_ORD_CHANGE);
- srv_stats.n_rows_updated.inc(size_t(trx->id));
}
if (stats) {
diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc
index b13a727f59f..63be6b0ce86 100644
--- a/storage/innobase/row/row0sel.cc
+++ b/storage/innobase/row/row0sel.cc
@@ -3375,9 +3375,6 @@ Row_sel_get_clust_rec_for_mysql::operator()(
*out_rec = NULL;
trx = thr_get_trx(thr);
- srv_stats.n_sec_rec_cluster_reads.inc(
- thd_get_thread_id(trx->mysql_thd));
-
row_build_row_ref_in_tuple(prebuilt->clust_ref, rec,
sec_index, *offsets);
@@ -4243,11 +4240,11 @@ bool row_search_with_covering_prefix(
const dict_index_t* index = prebuilt->index;
ut_ad(!dict_index_is_clust(index));
- if (dict_index_is_spatial(index)) {
- return false;
- }
-
- if (!srv_prefix_index_cluster_optimization) {
+ /* In ha_innobase::build_template() we choose to access the
+ whole row when using exclusive row locks or In case of fts
+ query, we need to read from clustered index */
+ if (prebuilt->select_lock_type == LOCK_X || prebuilt->in_fts_query
+ || !index->is_btree()) {
return false;
}
@@ -4314,7 +4311,6 @@ bool row_search_with_covering_prefix(
ut_a(templ->rec_field_no != ULINT_UNDEFINED);
}
- srv_stats.n_sec_rec_cluster_reads_avoided.inc();
return true;
}
diff --git a/storage/innobase/srv/srv0mon.cc b/storage/innobase/srv/srv0mon.cc
index 581fd199195..f362708093a 100644
--- a/storage/innobase/srv/srv0mon.cc
+++ b/storage/innobase/srv/srv0mon.cc
@@ -278,18 +278,6 @@ static monitor_info_t innodb_counter_info[] =
MONITOR_EXISTING | MONITOR_DEFAULT_ON),
MONITOR_DEFAULT_START, MONITOR_OVLD_PAGES_READ},
- {"buffer_index_sec_rec_cluster_reads", "buffer",
- "Number of secondary record reads triggered cluster read",
- static_cast<monitor_type_t>(
- MONITOR_EXISTING | MONITOR_DEFAULT_ON),
- MONITOR_DEFAULT_START, MONITOR_OVLD_INDEX_SEC_REC_CLUSTER_READS},
-
- {"buffer_index_sec_rec_cluster_reads_avoided", "buffer",
- "Number of secondary record reads avoided triggering cluster read",
- static_cast<monitor_type_t>(
- MONITOR_EXISTING | MONITOR_DEFAULT_ON),
- MONITOR_DEFAULT_START, MONITOR_OVLD_INDEX_SEC_REC_CLUSTER_READS_AVOIDED},
-
{"buffer_data_reads", "buffer",
"Amount of data read in bytes (innodb_data_reads)",
static_cast<monitor_type_t>(
@@ -1078,50 +1066,6 @@ static monitor_info_t innodb_counter_info[] =
MONITOR_EXISTING | MONITOR_DEFAULT_ON | MONITOR_DISPLAY_CURRENT),
MONITOR_DEFAULT_START, MONITOR_OVLD_SRV_PAGE_SIZE},
- /* ========== Counters for DML operations ========== */
- {"module_dml", "dml", "Statistics for DMLs",
- MONITOR_MODULE,
- MONITOR_DEFAULT_START, MONITOR_MODULE_DML_STATS},
-
- {"dml_reads", "dml", "Number of rows read",
- static_cast<monitor_type_t>(MONITOR_EXISTING),
- MONITOR_DEFAULT_START, MONITOR_OLVD_ROW_READ},
-
- {"dml_inserts", "dml", "Number of rows inserted",
- static_cast<monitor_type_t>(
- MONITOR_EXISTING | MONITOR_DEFAULT_ON),
- MONITOR_DEFAULT_START, MONITOR_OLVD_ROW_INSERTED},
-
- {"dml_deletes", "dml", "Number of rows deleted",
- static_cast<monitor_type_t>(
- MONITOR_EXISTING | MONITOR_DEFAULT_ON),
- MONITOR_DEFAULT_START, MONITOR_OLVD_ROW_DELETED},
-
- {"dml_updates", "dml", "Number of rows updated",
- static_cast<monitor_type_t>(
- MONITOR_EXISTING | MONITOR_DEFAULT_ON),
- MONITOR_DEFAULT_START, MONITOR_OLVD_ROW_UPDTATED},
-
- {"dml_system_reads", "dml", "Number of system rows read",
- static_cast<monitor_type_t>(
- MONITOR_EXISTING | MONITOR_DEFAULT_ON),
- MONITOR_DEFAULT_START, MONITOR_OLVD_SYSTEM_ROW_READ},
-
- {"dml_system_inserts", "dml", "Number of system rows inserted",
- static_cast<monitor_type_t>(
- MONITOR_EXISTING | MONITOR_DEFAULT_ON),
- MONITOR_DEFAULT_START, MONITOR_OLVD_SYSTEM_ROW_INSERTED},
-
- {"dml_system_deletes", "dml", "Number of system rows deleted",
- static_cast<monitor_type_t>(
- MONITOR_EXISTING | MONITOR_DEFAULT_ON),
- MONITOR_DEFAULT_START, MONITOR_OLVD_SYSTEM_ROW_DELETED},
-
- {"dml_system_updates", "dml", "Number of system rows updated",
- static_cast<monitor_type_t>(
- MONITOR_EXISTING | MONITOR_DEFAULT_ON),
- MONITOR_DEFAULT_START, MONITOR_OLVD_SYSTEM_ROW_UPDATED},
-
/* ========== Counters for DDL operations ========== */
{"module_ddl", "ddl", "Statistics for DDLs",
MONITOR_MODULE,
@@ -1469,16 +1413,6 @@ srv_mon_process_existing_counter(
value = buf_pool.stat.n_pages_read;
break;
- /* Number of times secondary index lookup triggered cluster lookup */
- case MONITOR_OVLD_INDEX_SEC_REC_CLUSTER_READS:
- value = srv_stats.n_sec_rec_cluster_reads;
- break;
- /* Number of times prefix optimization avoided triggering cluster
- lookup */
- case MONITOR_OVLD_INDEX_SEC_REC_CLUSTER_READS_AVOIDED:
- value = srv_stats.n_sec_rec_cluster_reads_avoided;
- break;
-
/* innodb_data_reads, the total number of data reads */
case MONITOR_OVLD_BYTE_READ:
value = srv_stats.data_read;
@@ -1547,46 +1481,6 @@ srv_mon_process_existing_counter(
value = srv_buf_pool_size;
break;
- /* innodb_rows_read */
- case MONITOR_OLVD_ROW_READ:
- value = srv_stats.n_rows_read;
- break;
-
- /* innodb_rows_inserted */
- case MONITOR_OLVD_ROW_INSERTED:
- value = srv_stats.n_rows_inserted;
- break;
-
- /* innodb_rows_deleted */
- case MONITOR_OLVD_ROW_DELETED:
- value = srv_stats.n_rows_deleted;
- break;
-
- /* innodb_rows_updated */
- case MONITOR_OLVD_ROW_UPDTATED:
- value = srv_stats.n_rows_updated;
- break;
-
- /* innodb_system_rows_read */
- case MONITOR_OLVD_SYSTEM_ROW_READ:
- value = srv_stats.n_system_rows_read;
- break;
-
- /* innodb_system_rows_inserted */
- case MONITOR_OLVD_SYSTEM_ROW_INSERTED:
- value = srv_stats.n_system_rows_inserted;
- break;
-
- /* innodb_system_rows_deleted */
- case MONITOR_OLVD_SYSTEM_ROW_DELETED:
- value = srv_stats.n_system_rows_deleted;
- break;
-
- /* innodb_system_rows_updated */
- case MONITOR_OLVD_SYSTEM_ROW_UPDATED:
- value = srv_stats.n_system_rows_updated;
- break;
-
/* innodb_row_lock_current_waits */
case MONITOR_OVLD_ROW_LOCK_CURRENT_WAIT:
// dirty read without lock_sys.wait_mutex
diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc
index d534cf3ae4c..ffb7f53c15c 100644
--- a/storage/innobase/srv/srv0srv.cc
+++ b/storage/innobase/srv/srv0srv.cc
@@ -291,10 +291,6 @@ uint srv_fast_shutdown;
/** copy of innodb_status_file; generate a innodb_status.<pid> file */
ibool srv_innodb_status;
-/** innodb_prefix_index_cluster_optimization; whether to optimize
-prefix index queries to skip cluster index lookup when possible */
-my_bool srv_prefix_index_cluster_optimization;
-
/** innodb_stats_transient_sample_pages;
When estimating number of different key values in an index, sample
this many index pages, there are 2 ways to calculate statistics:
@@ -327,16 +323,6 @@ ulong srv_n_spin_wait_rounds;
/** innodb_spin_wait_delay */
uint srv_spin_wait_delay;
-static ulint srv_n_rows_inserted_old;
-static ulint srv_n_rows_updated_old;
-static ulint srv_n_rows_deleted_old;
-static ulint srv_n_rows_read_old;
-static ulint srv_n_system_rows_inserted_old;
-static ulint srv_n_system_rows_updated_old;
-static ulint srv_n_system_rows_deleted_old;
-static ulint srv_n_system_rows_read_old;
-
-ulint srv_truncated_status_writes;
/** Number of initialized rollback segments for persistent undo log */
ulong srv_available_undo_logs;
@@ -692,7 +678,7 @@ static void srv_refresh_innodb_monitor_stats(time_t current_time)
mysql_mutex_lock(&srv_innodb_monitor_mutex);
if (difftime(current_time, srv_last_monitor_time) < 60) {
- /* We referesh InnoDB Monitor values so that averages are
+ /* We refresh InnoDB Monitor values so that averages are
printed from at most 60 last seconds */
mysql_mutex_unlock(&srv_innodb_monitor_mutex);
return;
@@ -709,16 +695,6 @@ static void srv_refresh_innodb_monitor_stats(time_t current_time)
buf_refresh_io_stats();
- srv_n_rows_inserted_old = srv_stats.n_rows_inserted;
- srv_n_rows_updated_old = srv_stats.n_rows_updated;
- srv_n_rows_deleted_old = srv_stats.n_rows_deleted;
- srv_n_rows_read_old = srv_stats.n_rows_read;
-
- srv_n_system_rows_inserted_old = srv_stats.n_system_rows_inserted;
- srv_n_system_rows_updated_old = srv_stats.n_system_rows_updated;
- srv_n_system_rows_deleted_old = srv_stats.n_system_rows_deleted;
- srv_n_system_rows_read_old = srv_stats.n_system_rows_read;
-
mysql_mutex_unlock(&srv_innodb_monitor_mutex);
}
@@ -825,34 +801,36 @@ srv_printf_innodb_monitor(
"--------\n", file);
os_aio_print(file);
- fputs("-------------------------------------\n"
- "INSERT BUFFER AND ADAPTIVE HASH INDEX\n"
- "-------------------------------------\n", file);
ibuf_print(file);
#ifdef BTR_CUR_HASH_ADAPT
- for (ulint i = 0; i < btr_ahi_parts && btr_search_enabled; ++i) {
- const auto part= &btr_search_sys.parts[i];
- part->latch.rd_lock(SRW_LOCK_CALL);
- ut_ad(part->heap->type == MEM_HEAP_FOR_BTR_SEARCH);
- fprintf(file, "Hash table size " ULINTPF
- ", node heap has " ULINTPF " buffer(s)\n",
- part->table.n_cells,
- part->heap->base.count - !part->heap->free_block);
- part->latch.rd_unlock();
- }
+ if (btr_search_enabled) {
+ fputs("-------------------\n"
+ "ADAPTIVE HASH INDEX\n"
+ "-------------------\n", file);
+ for (ulint i = 0; i < btr_ahi_parts; ++i) {
+ const auto part= &btr_search_sys.parts[i];
+ part->latch.rd_lock(SRW_LOCK_CALL);
+ ut_ad(part->heap->type == MEM_HEAP_FOR_BTR_SEARCH);
+ fprintf(file, "Hash table size " ULINTPF
+ ", node heap has " ULINTPF " buffer(s)\n",
+ part->table.n_cells,
+ part->heap->base.count
+ - !part->heap->free_block);
+ part->latch.rd_unlock();
+ }
- /* btr_cur_n_sea_old and btr_cur_n_non_sea_old are protected by
- srv_innodb_monitor_mutex (srv_refresh_innodb_monitor_stats) */
- const ulint with_ahi = btr_cur_n_sea, without_ahi = btr_cur_n_non_sea;
- fprintf(file,
- "%.2f hash searches/s, %.2f non-hash searches/s\n",
- static_cast<double>(with_ahi - btr_cur_n_sea_old)
- / time_elapsed,
- static_cast<double>(without_ahi - btr_cur_n_non_sea_old)
- / time_elapsed);
- btr_cur_n_sea_old = with_ahi;
- btr_cur_n_non_sea_old = without_ahi;
+ const ulint with_ahi = btr_cur_n_sea;
+ const ulint without_ahi = btr_cur_n_non_sea;
+ fprintf(file,
+ "%.2f hash searches/s, %.2f non-hash searches/s\n",
+ static_cast<double>(with_ahi - btr_cur_n_sea_old)
+ / time_elapsed,
+ static_cast<double>(without_ahi - btr_cur_n_non_sea_old)
+ / time_elapsed);
+ btr_cur_n_sea_old = with_ahi;
+ btr_cur_n_non_sea_old = without_ahi;
+ }
#endif /* BTR_CUR_HASH_ADAPT */
fputs("---\n"
@@ -884,63 +862,7 @@ srv_printf_innodb_monitor(
n_reserved);
}
- fprintf(file, "Process ID=0, Main thread ID=0, state: %s\n",
- srv_main_thread_op_info);
- fprintf(file,
- "Number of rows inserted " ULINTPF
- ", updated " ULINTPF
- ", deleted " ULINTPF
- ", read " ULINTPF "\n",
- (ulint) srv_stats.n_rows_inserted,
- (ulint) srv_stats.n_rows_updated,
- (ulint) srv_stats.n_rows_deleted,
- (ulint) srv_stats.n_rows_read);
- fprintf(file,
- "%.2f inserts/s, %.2f updates/s,"
- " %.2f deletes/s, %.2f reads/s\n",
- static_cast<double>(srv_stats.n_rows_inserted
- - srv_n_rows_inserted_old)
- / time_elapsed,
- static_cast<double>(srv_stats.n_rows_updated
- - srv_n_rows_updated_old)
- / time_elapsed,
- static_cast<double>(srv_stats.n_rows_deleted
- - srv_n_rows_deleted_old)
- / time_elapsed,
- static_cast<double>(srv_stats.n_rows_read
- - srv_n_rows_read_old)
- / time_elapsed);
- fprintf(file,
- "Number of system rows inserted " ULINTPF
- ", updated " ULINTPF ", deleted " ULINTPF
- ", read " ULINTPF "\n",
- (ulint) srv_stats.n_system_rows_inserted,
- (ulint) srv_stats.n_system_rows_updated,
- (ulint) srv_stats.n_system_rows_deleted,
- (ulint) srv_stats.n_system_rows_read);
- fprintf(file,
- "%.2f inserts/s, %.2f updates/s,"
- " %.2f deletes/s, %.2f reads/s\n",
- static_cast<double>(srv_stats.n_system_rows_inserted
- - srv_n_system_rows_inserted_old)
- / time_elapsed,
- static_cast<double>(srv_stats.n_system_rows_updated
- - srv_n_system_rows_updated_old)
- / time_elapsed,
- static_cast<double>(srv_stats.n_system_rows_deleted
- - srv_n_system_rows_deleted_old)
- / time_elapsed,
- static_cast<double>(srv_stats.n_system_rows_read
- - srv_n_system_rows_read_old)
- / time_elapsed);
- srv_n_rows_inserted_old = srv_stats.n_rows_inserted;
- srv_n_rows_updated_old = srv_stats.n_rows_updated;
- srv_n_rows_deleted_old = srv_stats.n_rows_deleted;
- srv_n_rows_read_old = srv_stats.n_rows_read;
- srv_n_system_rows_inserted_old = srv_stats.n_system_rows_inserted;
- srv_n_system_rows_updated_old = srv_stats.n_system_rows_updated;
- srv_n_system_rows_deleted_old = srv_stats.n_system_rows_deleted;
- srv_n_system_rows_read_old = srv_stats.n_system_rows_read;
+ fprintf(file, "state: %s\n", srv_main_thread_op_info);
fputs("----------------------------\n"
"END OF INNODB MONITOR OUTPUT\n"
@@ -1078,28 +1000,6 @@ srv_export_innodb_status(void)
/ export_vars.innodb_row_lock_waits)
: 0;
- export_vars.innodb_rows_read = srv_stats.n_rows_read;
-
- export_vars.innodb_rows_inserted = srv_stats.n_rows_inserted;
-
- export_vars.innodb_rows_updated = srv_stats.n_rows_updated;
-
- export_vars.innodb_rows_deleted = srv_stats.n_rows_deleted;
-
- export_vars.innodb_system_rows_read = srv_stats.n_system_rows_read;
-
- export_vars.innodb_system_rows_inserted =
- srv_stats.n_system_rows_inserted;
-
- export_vars.innodb_system_rows_updated =
- srv_stats.n_system_rows_updated;
-
- export_vars.innodb_system_rows_deleted =
- srv_stats.n_system_rows_deleted;
-
- export_vars.innodb_truncated_status_writes =
- srv_truncated_status_writes;
-
export_vars.innodb_page_compression_saved = srv_stats.page_compression_saved;
export_vars.innodb_pages_page_compressed = srv_stats.pages_page_compressed;
export_vars.innodb_page_compressed_trim_op = srv_stats.page_compressed_trim_op;
@@ -1127,11 +1027,6 @@ srv_export_innodb_status(void)
export_vars.innodb_onlineddl_rowlog_pct_used = onlineddl_rowlog_pct_used;
export_vars.innodb_onlineddl_pct_progress = onlineddl_pct_progress;
- export_vars.innodb_sec_rec_cluster_reads =
- srv_stats.n_sec_rec_cluster_reads;
- export_vars.innodb_sec_rec_cluster_reads_avoided =
- srv_stats.n_sec_rec_cluster_reads_avoided;
-
if (!srv_read_only_mode) {
export_vars.innodb_encryption_rotation_pages_read_from_cache =
crypt_stat.pages_read_from_cache;
diff --git a/storage/mroonga/mysql-test/mroonga/storage/r/create_table_TODO_SPLIT_ME.result b/storage/mroonga/mysql-test/mroonga/storage/r/create_table_TODO_SPLIT_ME.result
index d2a00b777ec..a09c2fe2beb 100644
--- a/storage/mroonga/mysql-test/mroonga/storage/r/create_table_TODO_SPLIT_ME.result
+++ b/storage/mroonga/mysql-test/mroonga/storage/r/create_table_TODO_SPLIT_ME.result
@@ -64,7 +64,7 @@ drop table t1;
create table t1 (c1 timestamp);
desc t1;
Field Type Null Key Default Extra
-c1 timestamp NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
+c1 timestamp YES NULL
drop table t1;
create table t1 (c1 datetime);
desc t1;
diff --git a/storage/mroonga/mysql-test/mroonga/wrapper/r/create_table_TODO_SPLIT_ME.result b/storage/mroonga/mysql-test/mroonga/wrapper/r/create_table_TODO_SPLIT_ME.result
index b3814331038..16a7e9e67f3 100644
--- a/storage/mroonga/mysql-test/mroonga/wrapper/r/create_table_TODO_SPLIT_ME.result
+++ b/storage/mroonga/mysql-test/mroonga/wrapper/r/create_table_TODO_SPLIT_ME.result
@@ -63,7 +63,7 @@ drop table t1;
create table t1 (c1 timestamp primary key) COMMENT = 'engine "innodb"';
desc t1;
Field Type Null Key Default Extra
-c1 timestamp NO PRI CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
+c1 timestamp NO PRI NULL
drop table t1;
create table t1 (c1 datetime primary key) COMMENT = 'engine "innodb"';
desc t1;
diff --git a/storage/mroonga/mysql-test/mroonga/wrapper/r/insert_on_duplicate_key_update_multiple_column_primary_key_myisam.result b/storage/mroonga/mysql-test/mroonga/wrapper/r/insert_on_duplicate_key_update_multiple_column_primary_key_myisam.result
index 198eca2a4db..c03e8c14467 100644
--- a/storage/mroonga/mysql-test/mroonga/wrapper/r/insert_on_duplicate_key_update_multiple_column_primary_key_myisam.result
+++ b/storage/mroonga/mysql-test/mroonga/wrapper/r/insert_on_duplicate_key_update_multiple_column_primary_key_myisam.result
@@ -8,7 +8,7 @@ PRIMARY KEY (date, title)
SHOW CREATE TABLE diaries;
Table Create Table
diaries CREATE TABLE `diaries` (
- `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `date` timestamp NOT NULL,
`title` varchar(100) NOT NULL,
`content` text NOT NULL,
PRIMARY KEY (`date`,`title`)
diff --git a/storage/mroonga/mysql-test/mroonga/wrapper/r/insert_on_duplicate_key_update_multiple_column_unique_index_myisam.result b/storage/mroonga/mysql-test/mroonga/wrapper/r/insert_on_duplicate_key_update_multiple_column_unique_index_myisam.result
index 05a9320667f..ee82a9ebd8e 100644
--- a/storage/mroonga/mysql-test/mroonga/wrapper/r/insert_on_duplicate_key_update_multiple_column_unique_index_myisam.result
+++ b/storage/mroonga/mysql-test/mroonga/wrapper/r/insert_on_duplicate_key_update_multiple_column_unique_index_myisam.result
@@ -10,7 +10,7 @@ SHOW CREATE TABLE diaries;
Table Create Table
diaries CREATE TABLE `diaries` (
`id` int(11) NOT NULL AUTO_INCREMENT,
- `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `date` timestamp NOT NULL,
`title` varchar(100) NOT NULL,
`content` text NOT NULL,
PRIMARY KEY (`id`),
diff --git a/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result b/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
index 45c87cc7313..de5ed76ad27 100644
--- a/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
+++ b/storage/rocksdb/mysql-test/rocksdb/r/innodb_i_s_tables_disabled.result
@@ -52,8 +52,6 @@ buffer_pool_pages_free buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL N
buffer_pages_created buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of pages created (innodb_pages_created)
buffer_pages_written buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of pages written (innodb_pages_written)
buffer_pages_read buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of pages read (innodb_pages_read)
-buffer_index_sec_rec_cluster_reads buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of secondary record reads triggered cluster read
-buffer_index_sec_rec_cluster_reads_avoided buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of secondary record reads avoided triggering cluster read
buffer_data_reads buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Amount of data read in bytes (innodb_data_reads)
buffer_data_written buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Amount of data written in bytes (innodb_data_written)
buffer_flush_batch_scanned buffer 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 set_owner Total pages scanned as part of flush batch
@@ -208,14 +206,6 @@ innodb_dict_lru_count_idle server 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NU
innodb_dblwr_writes server 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of doublewrite operations that have been performed (innodb_dblwr_writes)
innodb_dblwr_pages_written server 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of pages that have been written for doublewrite operations (innodb_dblwr_pages_written)
innodb_page_size server 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 value InnoDB page size in bytes (innodb_page_size)
-dml_reads dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of rows read
-dml_inserts dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of rows inserted
-dml_deletes dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of rows deleted
-dml_updates dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of rows updated
-dml_system_reads dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of system rows read
-dml_system_inserts dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of system rows inserted
-dml_system_deletes dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of system rows deleted
-dml_system_updates dml 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 status_counter Number of system rows updated
ddl_background_drop_indexes ddl 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 counter Number of indexes waiting to be dropped after failed index creation
ddl_online_create_index ddl 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 counter Number of indexes being created online
ddl_pending_alter_table ddl 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL 0 counter Number of ALTER TABLE, CREATE INDEX, DROP INDEX in progress
diff --git a/storage/spider/ha_spider.cc b/storage/spider/ha_spider.cc
index 7b1b50d7d8f..09c73b46d25 100644
--- a/storage/spider/ha_spider.cc
+++ b/storage/spider/ha_spider.cc
@@ -81,7 +81,6 @@ ha_spider::ha_spider(
ft_current = NULL;
ft_count = 0;
ft_init_without_index_init = FALSE;
- sql_kinds = 0;
error_mode = 0;
use_spatial_index = FALSE;
use_fields = FALSE;
@@ -92,7 +91,6 @@ ha_spider::ha_spider(
prev_index_rnd_init = SPD_NONE;
direct_aggregate_item_first = NULL;
result_link_idx = 0;
- result_list.have_sql_kind_backup = FALSE;
result_list.sqls = NULL;
result_list.insert_sqls = NULL;
result_list.update_sqls = NULL;
@@ -143,7 +141,6 @@ ha_spider::ha_spider(
ft_current = NULL;
ft_count = 0;
ft_init_without_index_init = FALSE;
- sql_kinds = 0;
error_mode = 0;
use_spatial_index = FALSE;
use_fields = FALSE;
@@ -154,7 +151,6 @@ ha_spider::ha_spider(
prev_index_rnd_init = SPD_NONE;
direct_aggregate_item_first = NULL;
result_link_idx = 0;
- result_list.have_sql_kind_backup = FALSE;
result_list.sqls = NULL;
result_list.insert_sqls = NULL;
result_list.update_sqls = NULL;
@@ -486,7 +482,7 @@ error_wide_handler_alloc:
int ha_spider::close()
{
- int error_num = 0, roop_count, error_num2;
+ int error_num= 0, roop_count;
THD *thd = ha_thd();
backup_error_status();
DBUG_ENTER("ha_spider::close");
@@ -513,17 +509,6 @@ int ha_spider::close()
spider_free(spider_current_trx, direct_aggregate_item_first, MYF(0));
direct_aggregate_item_first = direct_aggregate_item_current;
}
- if (is_clone)
- {
- for (roop_count = 0; roop_count < (int) share->link_count; roop_count++)
- {
- if ((error_num2 = close_opened_handler(roop_count, FALSE)))
- {
- if (check_error_mode(error_num2))
- error_num = error_num2;
- }
- }
- }
for (roop_count = share->use_dbton_count - 1; roop_count >= 0; roop_count--)
{
uint dbton_id = share->use_dbton_ids[roop_count];
@@ -982,13 +967,11 @@ int ha_spider::reset()
{
delete direct_aggregate_item_current->item;
direct_aggregate_item_current->item = NULL;
-#ifdef SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY_AND_THDPTR
if (direct_aggregate_item_current->init_mem_root)
{
free_root(&direct_aggregate_item_current->mem_root, MYF(0));
direct_aggregate_item_current->init_mem_root = FALSE;
}
-#endif
}
direct_aggregate_item_current = direct_aggregate_item_current->next;
}
@@ -1055,12 +1038,6 @@ int ha_spider::reset()
{
result_list.update_sqls[roop_count].length(0);
- if ((error_num2 = close_opened_handler(roop_count, TRUE)))
- {
- if (check_error_mode(error_num2))
- error_num = error_num2;
- }
-
conn_kind[roop_count] = SPIDER_CONN_KIND_MYSQL;
}
result_list.bulk_update_mode = 0;
@@ -1101,10 +1078,8 @@ int ha_spider::reset()
ft_current = NULL;
ft_count = 0;
ft_init_without_index_init = FALSE;
- sql_kinds = 0;
do_direct_update = FALSE;
prev_index_rnd_init = SPD_NONE;
- result_list.have_sql_kind_backup = FALSE;
result_list.direct_order_limit = FALSE;
result_list.direct_limit_offset = FALSE;
result_list.set_split_read = FALSE;
@@ -1263,8 +1238,7 @@ int ha_spider::index_init(
set_select_column_mode();
}
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
result_list.check_direct_order_limit = FALSE;
prev_index_rnd_init = SPD_INDEX;
@@ -1322,8 +1296,6 @@ int ha_spider::index_read_map_internal(
)
use_spatial_index = TRUE;
- if ((error_num = index_handler_init()))
- DBUG_RETURN(check_error_mode_eof(error_num));
if (is_clone)
{
DBUG_PRINT("info",("spider set pt_clone_last_searcher to %p",
@@ -1336,8 +1308,7 @@ int ha_spider::index_read_map_internal(
start_key.key = key;
start_key.keypart_map = keypart_map;
start_key.flag = find_flag;
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
if ((error_num = spider_set_conn_bg_param(this)))
DBUG_RETURN(error_num);
@@ -1385,7 +1356,6 @@ int ha_spider::index_read_map_internal(
result_list.split_read));
DBUG_PRINT("info",("spider result_list.limit_num=%lld",
result_list.limit_num));
- if (sql_kinds & SPIDER_SQL_KIND_SQL)
{
if (result_list.direct_order_limit)
{
@@ -1412,16 +1382,6 @@ int ha_spider::index_read_map_internal(
DBUG_RETURN(error_num);
}
}
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = append_limit_sql_part(
- result_list.internal_offset,
- result_list.limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- DBUG_RETURN(error_num);
- }
- }
int roop_start, roop_end, lock_mode, link_ok;
lock_mode = spider_conn_lock_mode(this);
@@ -1480,13 +1440,8 @@ int ha_spider::index_read_map_internal(
}
} else {
ulong sql_type;
- conn = conns[roop_count];
- if (sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ conn= conns[roop_count];
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
spider_db_handler *dbton_hdl = dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_hdl->need_lock_before_set_sql_for_exec(sql_type))
@@ -1694,8 +1649,6 @@ int ha_spider::index_read_last_map_internal(
DBUG_RETURN(ER_QUERY_INTERRUPTED);
}
do_direct_update = FALSE;
- if ((error_num = index_handler_init()))
- DBUG_RETURN(check_error_mode_eof(error_num));
if (is_clone)
{
DBUG_PRINT("info",("spider set pt_clone_last_searcher to %p",
@@ -1716,8 +1669,7 @@ int ha_spider::index_read_last_map_internal(
start_key.key = key;
start_key.keypart_map = keypart_map;
start_key.flag = HA_READ_KEY_EXACT;
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
if ((error_num = spider_set_conn_bg_param(this)))
DBUG_RETURN(error_num);
@@ -1753,7 +1705,6 @@ int ha_spider::index_read_last_map_internal(
&start_key, NULL, this))
)
DBUG_RETURN(error_num);
- if (sql_kinds & SPIDER_SQL_KIND_SQL)
{
if (result_list.direct_order_limit)
{
@@ -1780,16 +1731,6 @@ int ha_spider::index_read_last_map_internal(
DBUG_RETURN(error_num);
}
}
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = append_limit_sql_part(
- result_list.internal_offset,
- result_list.limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- DBUG_RETURN(error_num);
- }
- }
int roop_start, roop_end, roop_count, tmp_lock_mode, link_ok;
tmp_lock_mode = spider_conn_lock_mode(this);
@@ -1848,13 +1789,8 @@ int ha_spider::index_read_last_map_internal(
}
} else {
ulong sql_type;
- conn = conns[roop_count];
- if (sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ conn= conns[roop_count];
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
spider_db_handler *dbton_hdl = dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_hdl->need_lock_before_set_sql_for_exec(sql_type))
@@ -2113,25 +2049,19 @@ int ha_spider::index_first_internal(
DBUG_RETURN(ER_QUERY_INTERRUPTED);
}
do_direct_update = FALSE;
- if ((error_num = index_handler_init()))
- DBUG_RETURN(check_error_mode_eof(error_num));
if (is_clone)
{
DBUG_PRINT("info",("spider set pt_clone_last_searcher to %p",
pt_clone_source_handler));
pt_clone_source_handler->pt_clone_last_searcher = this;
}
- if (
- sql_is_empty(SPIDER_SQL_TYPE_HANDLER) ||
- sql_is_empty(SPIDER_SQL_TYPE_SELECT_SQL)
- ) {
-/*
- spider_db_free_one_result_for_start_next(this);
-*/
+ {
+ /*
+ spider_db_free_one_result_for_start_next(this);
+ */
if ((error_num = spider_db_free_result(this, FALSE)))
DBUG_RETURN(error_num);
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
check_direct_order_limit();
@@ -2170,7 +2100,6 @@ int ha_spider::index_first_internal(
NULL, NULL, this))
)
DBUG_RETURN(error_num);
- if (sql_kinds & SPIDER_SQL_KIND_SQL)
{
if (result_list.direct_order_limit)
{
@@ -2197,16 +2126,6 @@ int ha_spider::index_first_internal(
DBUG_RETURN(error_num);
}
}
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = append_limit_sql_part(
- result_list.internal_offset,
- result_list.limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- DBUG_RETURN(error_num);
- }
- }
int roop_start, roop_end, roop_count, tmp_lock_mode, link_ok;
tmp_lock_mode = spider_conn_lock_mode(this);
@@ -2265,13 +2184,8 @@ int ha_spider::index_first_internal(
}
} else {
ulong sql_type;
- conn = conns[roop_count];
- if (sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ conn= conns[roop_count];
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
spider_db_handler *dbton_hdl = dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_hdl->need_lock_before_set_sql_for_exec(sql_type))
@@ -2478,25 +2392,19 @@ int ha_spider::index_last_internal(
DBUG_RETURN(ER_QUERY_INTERRUPTED);
}
do_direct_update = FALSE;
- if ((error_num = index_handler_init()))
- DBUG_RETURN(check_error_mode_eof(error_num));
if (is_clone)
{
DBUG_PRINT("info",("spider set pt_clone_last_searcher to %p",
pt_clone_source_handler));
pt_clone_source_handler->pt_clone_last_searcher = this;
}
- if (
- sql_is_empty(SPIDER_SQL_TYPE_HANDLER) ||
- sql_is_empty(SPIDER_SQL_TYPE_SELECT_SQL)
- ) {
-/*
- spider_db_free_one_result_for_start_next(this);
-*/
+ {
+ /*
+ spider_db_free_one_result_for_start_next(this);
+ */
if ((error_num = spider_db_free_result(this, FALSE)))
DBUG_RETURN(error_num);
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
check_direct_order_limit();
@@ -2535,7 +2443,6 @@ int ha_spider::index_last_internal(
NULL, NULL, this))
)
DBUG_RETURN(error_num);
- if (sql_kinds & SPIDER_SQL_KIND_SQL)
{
if (result_list.direct_order_limit)
{
@@ -2562,16 +2469,6 @@ int ha_spider::index_last_internal(
DBUG_RETURN(error_num);
}
}
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = append_limit_sql_part(
- result_list.internal_offset,
- result_list.limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- DBUG_RETURN(error_num);
- }
- }
int roop_start, roop_end, roop_count, tmp_lock_mode, link_ok;
tmp_lock_mode = spider_conn_lock_mode(this);
@@ -2630,13 +2527,8 @@ int ha_spider::index_last_internal(
}
} else {
ulong sql_type;
- conn = conns[roop_count];
- if (sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ conn= conns[roop_count];
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
spider_db_handler *dbton_hdl = dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_hdl->need_lock_before_set_sql_for_exec(sql_type))
@@ -2895,8 +2787,6 @@ int ha_spider::read_range_first_internal(
}
range_key_part = table->key_info[active_index].key_part;
- if ((error_num = index_handler_init()))
- DBUG_RETURN(check_error_mode_eof(error_num));
if (is_clone)
{
DBUG_PRINT("info",("spider set pt_clone_last_searcher to %p",
@@ -2905,8 +2795,7 @@ int ha_spider::read_range_first_internal(
}
spider_db_free_one_result_for_start_next(this);
check_direct_order_limit();
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
if ((error_num = spider_set_conn_bg_param(this)))
DBUG_RETURN(error_num);
@@ -2943,7 +2832,6 @@ int ha_spider::read_range_first_internal(
start_key, eq_range ? NULL : end_key, this))
)
DBUG_RETURN(error_num);
- if (sql_kinds & SPIDER_SQL_KIND_SQL)
{
if (result_list.direct_order_limit)
{
@@ -2970,16 +2858,6 @@ int ha_spider::read_range_first_internal(
DBUG_RETURN(error_num);
}
}
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = append_limit_sql_part(
- result_list.internal_offset,
- result_list.limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- DBUG_RETURN(error_num);
- }
- }
int roop_start, roop_end, roop_count, tmp_lock_mode, link_ok;
tmp_lock_mode = spider_conn_lock_mode(this);
@@ -3038,13 +2916,8 @@ int ha_spider::read_range_first_internal(
}
} else {
ulong sql_type;
- conn = conns[roop_count];
- if (sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ conn= conns[roop_count];
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
spider_db_handler *dbton_hdl = dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_hdl->need_lock_before_set_sql_for_exec(sql_type))
@@ -3227,12 +3100,12 @@ int ha_spider::read_range_first(
use_pre_call = FALSE;
if ((error_num = read_range_next()))
DBUG_RETURN(error_num);
- DBUG_RETURN(check_ha_range_eof());
+ DBUG_RETURN(0);
}
if ((error_num = read_range_first_internal(table->record[0], start_key,
end_key, eq_range, sorted)))
DBUG_RETURN(error_num);
- DBUG_RETURN(check_ha_range_eof());
+ DBUG_RETURN(0);
}
int ha_spider::read_range_next()
@@ -3263,7 +3136,7 @@ int ha_spider::read_range_next()
if ((error_num = spider_db_seek_next(table->record[0], this, search_link_idx,
table)))
DBUG_RETURN(check_error_mode_eof(error_num));
- DBUG_RETURN(check_ha_range_eof());
+ DBUG_RETURN(0);
}
void ha_spider::reset_no_where_cond()
@@ -3440,8 +3313,6 @@ int ha_spider::multi_range_read_next_first(
DBUG_RETURN(ER_QUERY_INTERRUPTED);
}
do_direct_update = FALSE;
- if ((error_num = index_handler_init()))
- DBUG_RETURN(check_error_mode_eof(error_num));
if (is_clone)
{
DBUG_PRINT("info",("spider set pt_clone_last_searcher to %p",
@@ -3457,17 +3328,13 @@ int ha_spider::multi_range_read_next_first(
DBUG_PRINT("info",("spider result_list.finish_flg = FALSE"));
result_list.finish_flg = FALSE;
result_list.record_num = 0;
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
result_list.desc_flg = FALSE;
result_list.sorted = mrr_is_output_sorted;
result_list.key_info = &table->key_info[active_index];
- if (
- multi_range_num == 1 ||
- result_list.multi_split_read <= 1 ||
- (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- ) {
+ if (multi_range_num == 1 || result_list.multi_split_read <= 1)
+ {
if (wide_handler->keyread)
result_list.keyread = TRUE;
else
@@ -3502,7 +3369,6 @@ int ha_spider::multi_range_read_next_first(
NULL : &mrr_cur_range.end_key, this))
)
DBUG_RETURN(error_num);
- if (sql_kinds & SPIDER_SQL_KIND_SQL)
{
if (result_list.direct_order_limit)
{
@@ -3529,16 +3395,6 @@ int ha_spider::multi_range_read_next_first(
DBUG_RETURN(error_num);
}
}
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = append_limit_sql_part(
- result_list.internal_offset + result_list.record_num,
- result_list.limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- DBUG_RETURN(error_num);
- }
- }
int roop_start, roop_end, tmp_lock_mode, link_ok;
tmp_lock_mode = spider_conn_lock_mode(this);
@@ -3595,13 +3451,8 @@ int ha_spider::multi_range_read_next_first(
}
} else {
ulong sql_type;
- conn = conns[roop_count];
- if (sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ conn= conns[roop_count];
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
spider_db_handler *dbton_hdl = dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_hdl->need_lock_before_set_sql_for_exec(sql_type))
@@ -3771,7 +3622,7 @@ int ha_spider::multi_range_read_next_first(
if (!(error_num = spider_db_fetch(table->record[0], this, table)))
{
*range_info = (char *) mrr_cur_range.ptr;
- DBUG_RETURN(check_ha_range_eof());
+ DBUG_RETURN(0);
}
if (
error_num != HA_ERR_END_OF_FILE &&
@@ -3799,7 +3650,6 @@ int ha_spider::multi_range_read_next_first(
DBUG_RETURN(check_error_mode_eof(0));
}
set_where_to_pos_sql(SPIDER_SQL_TYPE_SELECT_SQL);
- set_where_to_pos_sql(SPIDER_SQL_TYPE_HANDLER);
}
DBUG_PRINT("info",("spider range_res2=%d", range_res));
if (error_num)
@@ -3910,34 +3760,11 @@ int ha_spider::multi_range_read_next_first(
if ((error_num = reset_sql_sql(
SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_TMP_SQL)))
DBUG_RETURN(error_num);
- if ((sql_kinds & SPIDER_SQL_KIND_SQL))
- {
- for (roop_count = 0; roop_count < (int) share->link_count;
- roop_count++)
- {
- result_list.sql_kind_backup[roop_count] = sql_kind[roop_count];
- sql_kind[roop_count] = SPIDER_SQL_KIND_SQL;
- }
- result_list.sql_kinds_backup = sql_kinds;
- sql_kinds = SPIDER_SQL_KIND_SQL;
- result_list.have_sql_kind_backup = TRUE;
- }
}
memset(result_list.tmp_table_join_first, 0xFF,
share->link_bitmap_size);
} else {
result_list.tmp_table_join = FALSE;
- if (result_list.have_sql_kind_backup)
- {
- for (roop_count = 0; roop_count < (int) share->link_count;
- roop_count++)
- {
- sql_kind[roop_count] =
- result_list.sql_kind_backup[roop_count];
- }
- sql_kinds = result_list.sql_kinds_backup;
- result_list.have_sql_kind_backup = FALSE;
- }
}
result_list.tmp_table_join_break_after_get_next = FALSE;
@@ -4252,13 +4079,8 @@ int ha_spider::multi_range_read_next_first(
}
} else {
ulong sql_type;
- conn = conns[roop_count];
- if (sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_TMP_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ conn= conns[roop_count];
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_TMP_SQL;
spider_db_handler *dbton_hdl = dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_hdl->need_lock_before_set_sql_for_exec(sql_type))
@@ -4532,8 +4354,7 @@ int ha_spider::multi_range_read_next_first(
DBUG_RETURN(check_error_mode_eof(0));
}
multi_range_cnt = 0;
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
} while (!error_num);
}
@@ -4606,11 +4427,8 @@ int ha_spider::multi_range_read_next_next(
pt_clone_source_handler));
pt_clone_source_handler->pt_clone_last_searcher = this;
}
- if (
- multi_range_num == 1 ||
- result_list.multi_split_read <= 1 ||
- (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- ) {
+ if (multi_range_num == 1 || result_list.multi_split_read <= 1)
+ {
if (!(error_num = spider_db_seek_next(table->record[0], this,
search_link_idx, table)))
{
@@ -4650,7 +4468,6 @@ int ha_spider::multi_range_read_next_next(
DBUG_RETURN(check_error_mode_eof(0));
}
set_where_to_pos_sql(SPIDER_SQL_TYPE_SELECT_SQL);
- set_where_to_pos_sql(SPIDER_SQL_TYPE_HANDLER);
result_list.limit_num =
result_list.internal_limit - result_list.record_num >=
result_list.split_read ?
@@ -4663,7 +4480,6 @@ int ha_spider::multi_range_read_next_next(
NULL : &mrr_cur_range.end_key, this))
)
DBUG_RETURN(error_num);
- if (sql_kinds & SPIDER_SQL_KIND_SQL)
{
if (result_list.direct_order_limit)
{
@@ -4690,16 +4506,6 @@ int ha_spider::multi_range_read_next_next(
DBUG_RETURN(error_num);
}
}
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = append_limit_sql_part(
- result_list.internal_offset + result_list.record_num,
- result_list.limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- DBUG_RETURN(error_num);
- }
- }
int roop_start, roop_end, tmp_lock_mode, link_ok;
tmp_lock_mode = spider_conn_lock_mode(this);
@@ -4756,13 +4562,8 @@ int ha_spider::multi_range_read_next_next(
}
} else {
ulong sql_type;
- conn = conns[roop_count];
- if (sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ conn= conns[roop_count];
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
spider_db_handler *dbton_hdl = dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_hdl->need_lock_before_set_sql_for_exec(sql_type))
@@ -4931,7 +4732,7 @@ int ha_spider::multi_range_read_next_next(
if (!(error_num = spider_db_fetch(table->record[0], this, table)))
{
*range_info = (char *) mrr_cur_range.ptr;
- DBUG_RETURN(check_ha_range_eof());
+ DBUG_RETURN(0);
}
if (
error_num != HA_ERR_END_OF_FILE &&
@@ -5034,8 +4835,7 @@ int ha_spider::multi_range_read_next_next(
}
result_list.record_num = 0;
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
bool tmp_high_priority = wide_handler->high_priority;
@@ -5076,34 +4876,11 @@ int ha_spider::multi_range_read_next_next(
if ((error_num = reset_sql_sql(
SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_TMP_SQL)))
DBUG_RETURN(error_num);
- if ((sql_kinds & SPIDER_SQL_KIND_SQL))
- {
- for (roop_count = 0; roop_count < (int) share->link_count;
- roop_count++)
- {
- result_list.sql_kind_backup[roop_count] = sql_kind[roop_count];
- sql_kind[roop_count] = SPIDER_SQL_KIND_SQL;
- }
- result_list.sql_kinds_backup = sql_kinds;
- sql_kinds = SPIDER_SQL_KIND_SQL;
- result_list.have_sql_kind_backup = TRUE;
- }
}
memset(result_list.tmp_table_join_first, 0xFF,
share->link_bitmap_size);
} else {
result_list.tmp_table_join = FALSE;
- if (result_list.have_sql_kind_backup)
- {
- for (roop_count = 0; roop_count < (int) share->link_count;
- roop_count++)
- {
- sql_kind[roop_count] =
- result_list.sql_kind_backup[roop_count];
- }
- sql_kinds = result_list.sql_kinds_backup;
- result_list.have_sql_kind_backup = FALSE;
- }
}
if (result_list.tmp_table_join)
@@ -5406,13 +5183,8 @@ int ha_spider::multi_range_read_next_next(
}
} else {
ulong sql_type;
- conn = conns[roop_count];
- if (sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_TMP_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ conn= conns[roop_count];
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_TMP_SQL;
spider_db_handler *dbton_hdl = dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_hdl->need_lock_before_set_sql_for_exec(sql_type))
@@ -5684,8 +5456,7 @@ int ha_spider::multi_range_read_next_next(
DBUG_RETURN(check_error_mode_eof(0));
}
multi_range_cnt = 0;
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
} while (!error_num);
}
@@ -5790,8 +5561,7 @@ int ha_spider::rnd_init(
result_list.keyread = FALSE;
init_rnd_handler = FALSE;
- if ((error_num = reset_sql_sql(
- SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER)))
+ if ((error_num= reset_sql_sql(SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
result_list.check_direct_order_limit = FALSE;
}
@@ -5847,8 +5617,6 @@ int ha_spider::rnd_next_internal(
{
if ((error_num = spider_set_conn_bg_param(this)))
DBUG_RETURN(error_num);
- if ((error_num = rnd_handler_init()))
- DBUG_RETURN(check_error_mode_eof(error_num));
check_direct_order_limit();
check_select_column(TRUE);
@@ -5921,7 +5689,6 @@ int ha_spider::rnd_next_internal(
result_list.limit_num =
result_list.internal_limit >= result_list.split_read ?
result_list.split_read : result_list.internal_limit;
- if (sql_kinds & SPIDER_SQL_KIND_SQL)
{
if ((error_num = append_limit_sql_part(
result_list.internal_offset,
@@ -5937,16 +5704,6 @@ int ha_spider::rnd_next_internal(
DBUG_RETURN(error_num);
}
}
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = append_limit_sql_part(
- result_list.internal_offset,
- result_list.limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- DBUG_RETURN(error_num);
- }
- }
int roop_start, roop_end, roop_count, tmp_lock_mode, link_ok;
tmp_lock_mode = spider_conn_lock_mode(this);
@@ -6006,12 +5763,7 @@ int ha_spider::rnd_next_internal(
} else {
SPIDER_CONN *conn = conns[roop_count];
ulong sql_type;
- if (sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
spider_db_handler *dbton_hdl = dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_hdl->need_lock_before_set_sql_for_exec(sql_type))
@@ -6367,7 +6119,7 @@ _ft_vft spider_ft_vft = {
int ha_spider::ft_init()
{
- int roop_count, error_num;
+ int error_num;
DBUG_ENTER("ha_spider::ft_init");
DBUG_PRINT("info",("spider this=%p", this));
if (store_error_num)
@@ -6403,9 +6155,6 @@ int ha_spider::ft_init()
ft_init_and_first = TRUE;
- for (roop_count = 0; roop_count < (int) share->link_count; roop_count++)
- sql_kind[roop_count] = SPIDER_SQL_KIND_SQL;
- sql_kinds = SPIDER_SQL_KIND_SQL;
DBUG_RETURN(0);
}
@@ -6548,7 +6297,6 @@ int ha_spider::ft_read_internal(
append_group_by_sql_part(NULL, 0, SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
}
- if (sql_kinds & SPIDER_SQL_KIND_SQL)
{
if ((error_num = append_limit_sql_part(
result_list.internal_offset,
@@ -6564,16 +6312,6 @@ int ha_spider::ft_read_internal(
DBUG_RETURN(error_num);
}
}
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = append_limit_sql_part(
- result_list.internal_offset,
- result_list.limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- DBUG_RETURN(error_num);
- }
- }
int roop_start, roop_end, roop_count, tmp_lock_mode, link_ok;
tmp_lock_mode = spider_conn_lock_mode(this);
@@ -8417,7 +8155,6 @@ bool ha_spider::check_direct_update_sql_part(
DBUG_RETURN(FALSE);
}
-#ifdef SPIDER_MDEV_16246
/**
Perform initialization for a direct update request.
@@ -8430,9 +8167,6 @@ bool ha_spider::check_direct_update_sql_part(
int ha_spider::direct_update_rows_init(
List<Item> *update_fields
)
-#else
-int ha_spider::direct_update_rows_init()
-#endif
{
st_select_lex *select_lex;
longlong select_limit;
@@ -8549,11 +8283,8 @@ int ha_spider::direct_update_rows(
table_share->db.str, table_share->table_name.str);
DBUG_RETURN(ER_SPIDER_READ_ONLY_NUM);
}
- if (
- (active_index != MAX_KEY && (error_num = index_handler_init())) ||
- (active_index == MAX_KEY && (error_num = rnd_handler_init())) ||
- (error_num = spider_db_direct_update(this, table, update_rows, found_rows))
- )
+ if ((error_num=
+ spider_db_direct_update(this, table, update_rows, found_rows)))
DBUG_RETURN(check_error_mode(error_num));
DBUG_RETURN(0);
@@ -8695,11 +8426,7 @@ int ha_spider::direct_delete_rows(
table_share->db.str, table_share->table_name.str);
DBUG_RETURN(ER_SPIDER_READ_ONLY_NUM);
}
- if (
- (active_index != MAX_KEY && (error_num = index_handler_init())) ||
- (active_index == MAX_KEY && (error_num = rnd_handler_init())) ||
- (error_num = spider_db_direct_delete(this, table, delete_rows))
- )
+ if ((error_num= spider_db_direct_delete(this, table, delete_rows)))
DBUG_RETURN(check_error_mode(error_num));
DBUG_RETURN(0);
@@ -8708,7 +8435,7 @@ int ha_spider::direct_delete_rows(
int ha_spider::delete_all_rows()
{
- int error_num, roop_count;
+ int error_num;
THD *thd = ha_thd();
backup_error_status();
DBUG_ENTER("ha_spider::delete_all_rows");
@@ -8722,9 +8449,6 @@ int ha_spider::delete_all_rows()
DBUG_RETURN(ER_SPIDER_READ_ONLY_NUM);
}
do_direct_update = FALSE;
- sql_kinds = SPIDER_SQL_KIND_SQL;
- for (roop_count = 0; roop_count < (int) share->link_count; roop_count++)
- sql_kind[roop_count] = SPIDER_SQL_KIND_SQL;
if ((error_num = spider_db_delete_all_rows(this)))
DBUG_RETURN(check_error_mode(error_num));
if (wide_handler->sql_command == SQLCOM_TRUNCATE &&
@@ -8746,7 +8470,7 @@ int ha_spider::delete_all_rows()
int ha_spider::truncate()
{
- int error_num, roop_count;
+ int error_num;
THD *thd = ha_thd();
backup_error_status();
DBUG_ENTER("ha_spider::truncate");
@@ -8763,9 +8487,6 @@ int ha_spider::truncate()
DBUG_RETURN(error_num);
}
do_direct_update = FALSE;
- sql_kinds = SPIDER_SQL_KIND_SQL;
- for (roop_count = 0; roop_count < (int) share->link_count; roop_count++)
- sql_kind[roop_count] = SPIDER_SQL_KIND_SQL;
if ((error_num = spider_db_delete_all_rows(this)))
DBUG_RETURN(check_error_mode(error_num));
if (wide_handler->sql_command == SQLCOM_TRUNCATE &&
@@ -10107,7 +9828,6 @@ uint ha_spider::check_partitioned()
void ha_spider::check_direct_order_limit()
{
- int roop_count;
DBUG_ENTER("ha_spider::check_direct_order_limit");
DBUG_PRINT("info",("spider this=%p", this));
if (!result_list.check_direct_order_limit)
@@ -10115,9 +9835,6 @@ void ha_spider::check_direct_order_limit()
if (spider_check_direct_order_limit(this))
{
result_list.direct_order_limit = TRUE;
- sql_kinds = SPIDER_SQL_KIND_SQL;
- for (roop_count = 0; roop_count < (int) share->link_count; roop_count++)
- sql_kind[roop_count] = SPIDER_SQL_KIND_SQL;
} else
result_list.direct_order_limit = FALSE;
@@ -10203,35 +9920,6 @@ bool ha_spider::is_sole_projection_field(
DBUG_RETURN( TRUE );
}
-int ha_spider::check_ha_range_eof()
-{
- DBUG_ENTER("ha_spider::check_ha_range_eof");
- DBUG_PRINT("info",("spider this=%p", this));
- const key_range *end_key = result_list.end_key;
- DBUG_PRINT("info",("spider use_both_key=%s",
- result_list.use_both_key ? "TRUE" : "FALSE"));
- DBUG_PRINT("info",("spider sql_kind[%u]=%u",
- search_link_idx, sql_kind[search_link_idx]));
- DBUG_PRINT("info",("spider sql_command=%u", wide_handler->sql_command));
- if (
- result_list.use_both_key &&
- (sql_kind[search_link_idx] & SPIDER_SQL_KIND_HANDLER) &&
- wide_handler->sql_command != SQLCOM_HA_READ
- ) {
- int cmp_result = key_cmp(result_list.key_info->key_part,
- end_key->key, end_key->length);
- DBUG_PRINT("info",("spider cmp_result=%d", cmp_result));
- if (
- cmp_result > 0 ||
- (end_key->flag == HA_READ_BEFORE_KEY && !cmp_result)
- ) {
- table->status = STATUS_NOT_FOUND;
- DBUG_RETURN(HA_ERR_END_OF_FILE);
- }
- }
- DBUG_RETURN(0);
-}
-
int ha_spider::drop_tmp_tables()
{
int error_num = 0, tmp_error_num, need_mon;
@@ -10377,262 +10065,6 @@ int ha_spider::drop_tmp_tables()
DBUG_RETURN(error_num);
}
-bool ha_spider::handler_opened(
- int link_idx,
- uint tgt_conn_kind
-) {
- DBUG_ENTER("ha_spider::handler_opened");
- DBUG_PRINT("info",("spider this=%p", this));
- DBUG_PRINT("info",("spider link_idx=%d", link_idx));
- DBUG_PRINT("info",("spider tgt_conn_kind=%u", tgt_conn_kind));
- if (
- spider_bit_is_set(m_handler_opened, link_idx)
- ) {
- DBUG_PRINT("info",("spider TRUE"));
- DBUG_RETURN(TRUE);
- }
- DBUG_PRINT("info",("spider FALSE"));
- DBUG_RETURN(FALSE);
-}
-
-void ha_spider::set_handler_opened(
- int link_idx
-) {
- DBUG_ENTER("ha_spider::set_handler_opened");
- DBUG_PRINT("info",("spider this=%p", this));
- spider_set_bit(m_handler_opened, link_idx);
- DBUG_VOID_RETURN;
-}
-
-void ha_spider::clear_handler_opened(
- int link_idx,
- uint tgt_conn_kind
-) {
- DBUG_ENTER("ha_spider::clear_handler_opened");
- DBUG_PRINT("info",("spider this=%p", this));
- spider_clear_bit(m_handler_opened, link_idx);
- DBUG_VOID_RETURN;
-}
-
-int ha_spider::close_opened_handler(
- int link_idx,
- bool release_conn
-) {
- int error_num = 0, error_num2;
- DBUG_ENTER("ha_spider::close_opened_handler");
- DBUG_PRINT("info",("spider this=%p", this));
-
- if (spider_bit_is_set(m_handler_opened, link_idx))
- {
- if ((error_num2 = spider_db_close_handler(this,
- conns[link_idx], link_idx, SPIDER_CONN_KIND_MYSQL))
- ) {
- if (
- share->monitoring_kind[link_idx] &&
- need_mons[link_idx]
- ) {
- error_num2 = spider_ping_table_mon_from_table(
- wide_handler->trx,
- wide_handler->trx->thd,
- share,
- link_idx,
- (uint32) share->monitoring_sid[link_idx],
- share->table_name,
- share->table_name_length,
- conn_link_idx[link_idx],
- NULL,
- 0,
- share->monitoring_kind[link_idx],
- share->monitoring_limit[link_idx],
- share->monitoring_flag[link_idx],
- TRUE
- );
- }
- error_num = error_num2;
- }
- spider_clear_bit(m_handler_opened, link_idx);
- if (release_conn && !conns[link_idx]->join_trx)
- {
- spider_free_conn_from_trx(wide_handler->trx, conns[link_idx],
- FALSE, FALSE, NULL);
- conns[link_idx] = NULL;
- }
- }
- DBUG_RETURN(error_num);
-}
-
-int ha_spider::index_handler_init()
-{
- int lock_mode, error_num;
- int roop_start, roop_end, roop_count;
- DBUG_ENTER("ha_spider::index_handler_init");
- DBUG_PRINT("info",("spider this=%p", this));
- if (!init_index_handler)
- {
- init_index_handler = TRUE;
- lock_mode = spider_conn_lock_mode(this);
- if (lock_mode)
- {
- /* "for update" or "lock in share mode" */
- roop_start = spider_conn_link_idx_next(share->link_statuses,
- conn_link_idx, -1, share->link_count,
- SPIDER_LINK_STATUS_RECOVERY);
- roop_end = share->link_count;
- } else {
- roop_start = search_link_idx;
- roop_end = search_link_idx + 1;
- }
- sql_kinds = 0;
- direct_update_kinds = 0;
- for (roop_count = roop_start; roop_count < roop_end;
- roop_count = spider_conn_link_idx_next(share->link_statuses,
- conn_link_idx, roop_count, share->link_count,
- SPIDER_LINK_STATUS_RECOVERY)
- ) {
- if (
- spider_conn_use_handler(this, lock_mode, roop_count) &&
- spider_conn_need_open_handler(this, active_index, roop_count)
- ) {
- if ((error_num = spider_db_open_handler(this,
- conns[roop_count]
- , roop_count))
- ) {
- if (
- share->monitoring_kind[roop_count] &&
- need_mons[roop_count]
- ) {
- error_num = spider_ping_table_mon_from_table(
- wide_handler->trx,
- wide_handler->trx->thd,
- share,
- roop_count,
- (uint32) share->monitoring_sid[roop_count],
- share->table_name,
- share->table_name_length,
- conn_link_idx[roop_count],
- NULL,
- 0,
- share->monitoring_kind[roop_count],
- share->monitoring_limit[roop_count],
- share->monitoring_flag[roop_count],
- TRUE
- );
- }
- DBUG_RETURN(error_num);
- }
- set_handler_opened(roop_count);
- }
- }
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- st_select_lex *select_lex;
- longlong select_limit;
- longlong offset_limit;
- spider_get_select_limit(this, &select_lex, &select_limit, &offset_limit);
- DBUG_PRINT("info",("spider SPIDER_SQL_KIND_HANDLER"));
- result_list.semi_split_read = 1;
- result_list.semi_split_read_limit = 9223372036854775807LL;
- if (select_limit == 9223372036854775807LL)
- {
- DBUG_PRINT("info",("spider set limit to 1"));
- result_list.semi_split_read_base = 1;
- result_list.split_read = 1;
- } else {
- DBUG_PRINT("info",("spider set limit to %lld", select_limit));
- result_list.semi_split_read_base = select_limit;
- result_list.split_read = select_limit;
- }
- }
- }
- DBUG_RETURN(0);
-}
-
-int ha_spider::rnd_handler_init()
-{
- int error_num, lock_mode;
- int roop_start, roop_end, roop_count;
- DBUG_ENTER("ha_spider::rnd_handler_init");
- DBUG_PRINT("info",("spider this=%p", this));
- if (!init_rnd_handler)
- {
- init_rnd_handler = TRUE;
- lock_mode = spider_conn_lock_mode(this);
- if (lock_mode)
- {
- /* "for update" or "lock in share mode" */
- roop_start = spider_conn_link_idx_next(share->link_statuses,
- conn_link_idx, -1, share->link_count,
- SPIDER_LINK_STATUS_RECOVERY);
- roop_end = share->link_count;
- } else {
- roop_start = search_link_idx;
- roop_end = search_link_idx + 1;
- }
- sql_kinds = 0;
- direct_update_kinds = 0;
- for (roop_count = roop_start; roop_count < roop_end;
- roop_count = spider_conn_link_idx_next(share->link_statuses,
- conn_link_idx, roop_count, share->link_count,
- SPIDER_LINK_STATUS_RECOVERY)
- ) {
- if (
- spider_conn_use_handler(this, lock_mode, roop_count) &&
- spider_conn_need_open_handler(this, MAX_KEY, roop_count)
- ) {
- if ((error_num = spider_db_open_handler(this,
- conns[roop_count]
- , roop_count))
- ) {
- if (
- share->monitoring_kind[roop_count] &&
- need_mons[roop_count]
- ) {
- error_num = spider_ping_table_mon_from_table(
- wide_handler->trx,
- wide_handler->trx->thd,
- share,
- roop_count,
- (uint32) share->monitoring_sid[roop_count],
- share->table_name,
- share->table_name_length,
- conn_link_idx[roop_count],
- NULL,
- 0,
- share->monitoring_kind[roop_count],
- share->monitoring_limit[roop_count],
- share->monitoring_flag[roop_count],
- TRUE
- );
- }
- DBUG_RETURN(error_num);
- }
- set_handler_opened(roop_count);
- }
- }
- if (sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- st_select_lex *select_lex;
- longlong select_limit;
- longlong offset_limit;
- spider_get_select_limit(this, &select_lex, &select_limit, &offset_limit);
- DBUG_PRINT("info",("spider SPIDER_SQL_KIND_HANDLER"));
- result_list.semi_split_read = 1;
- result_list.semi_split_read_limit = 9223372036854775807LL;
- if (select_limit == 9223372036854775807LL)
- {
- DBUG_PRINT("info",("spider set limit to 1"));
- result_list.semi_split_read_base = 1;
- result_list.split_read = 1;
- } else {
- DBUG_PRINT("info",("spider set limit to %lld", select_limit));
- result_list.semi_split_read_base = select_limit;
- result_list.split_read = select_limit;
- }
- }
- }
- DBUG_RETURN(0);
-}
-
void ha_spider::set_error_mode()
{
THD *thd = ha_thd();
@@ -12578,26 +12010,6 @@ int ha_spider::print_item_type(
DBUG_RETURN(0);
}
-bool ha_spider::support_use_handler_sql(
- int use_handler
-) {
- uint roop_count, dbton_id;
- spider_db_handler *dbton_hdl;
- DBUG_ENTER("ha_spider::support_use_handler_sql");
- for (roop_count = 0; roop_count < share->use_sql_dbton_count; roop_count++)
- {
- dbton_id = share->use_sql_dbton_ids[roop_count];
- dbton_hdl = dbton_handler[dbton_id];
- if (
- dbton_hdl->first_link_idx >= 0 &&
- !dbton_hdl->support_use_handler(use_handler)
- ) {
- DBUG_RETURN(FALSE);
- }
- }
- DBUG_RETURN(TRUE);
-}
-
int ha_spider::init_union_table_name_pos_sql()
{
int error_num;
diff --git a/storage/spider/ha_spider.h b/storage/spider/ha_spider.h
index 579700d855b..4dffdf78553 100644
--- a/storage/spider/ha_spider.h
+++ b/storage/spider/ha_spider.h
@@ -59,8 +59,6 @@ public:
const char *mem_calc_func_name;
const char *mem_calc_file_name;
ulong mem_calc_line_no;
- uint sql_kinds;
- uint *sql_kind;
ulonglong *connection_ids;
uint conn_kinds;
uint *conn_kind;
@@ -138,9 +136,6 @@ public:
ulonglong *db_request_id;
uchar *db_request_phase;
- uchar *m_handler_opened;
- uint *m_handler_id;
- char **m_handler_cid;
bool do_direct_update;
uint direct_update_kinds;
spider_index_rnd_init prev_index_rnd_init;
@@ -427,13 +422,9 @@ public:
longlong select_limit,
longlong offset_limit
);
-#ifdef SPIDER_MDEV_16246
int direct_update_rows_init(
List<Item> *update_fields
);
-#else
- int direct_update_rows_init();
-#endif
int direct_update_rows(
ha_rows *update_rows,
ha_rows *found_row
@@ -551,25 +542,7 @@ public:
bool is_sole_projection_field(
uint16 field_index
);
- int check_ha_range_eof();
int drop_tmp_tables();
- bool handler_opened(
- int link_idx,
- uint tgt_conn_kind
- );
- void set_handler_opened(
- int link_idx
- );
- void clear_handler_opened(
- int link_idx,
- uint tgt_conn_kind
- );
- int close_opened_handler(
- int link_idx,
- bool release_conn
- );
- int index_handler_init();
- int rnd_handler_init();
void set_error_mode();
void backup_error_status();
int check_error_mode(
@@ -813,9 +786,6 @@ public:
const char *alias,
uint alias_length
);
- bool support_use_handler_sql(
- int use_handler
- );
int init_union_table_name_pos_sql();
int set_union_table_name_pos_sql();
int append_lock_tables_list();
diff --git a/storage/spider/mysql-test/spider/bugfix/r/index.result b/storage/spider/mysql-test/spider/bugfix/r/index.result
index 2aa0b56ef06..3563744997b 100644
--- a/storage/spider/mysql-test/spider/bugfix/r/index.result
+++ b/storage/spider/mysql-test/spider/bugfix/r/index.result
@@ -64,15 +64,6 @@ create table auto_test_local.t (a int, b char(1), primary key(a desc));
insert into auto_test_local.t VALUES (1,'f'),(2,'g'),(3,'j'), (4,'i'),(5,'h');
create table ts (a int, b char(1), primary key(a desc))
engine=spider comment='wrapper "mysql", srv "s_1", table "t"';
-set spider_use_handler=3;
-Warnings:
-Warning 1287 '@@spider_use_handler' is deprecated and will be removed in a future release
-select a, b from ts where a > 0 and b = 'g' order by a;
-a b
-2 g
-set spider_use_handler=default;
-Warnings:
-Warning 1287 '@@spider_use_handler' is deprecated and will be removed in a future release
select a, b from ts where a > 0 and b = 'g' order by a;
a b
2 g
diff --git a/storage/spider/mysql-test/spider/bugfix/r/mdev_29855.result b/storage/spider/mysql-test/spider/bugfix/r/mdev_29855.result
deleted file mode 100644
index 568613368a3..00000000000
--- a/storage/spider/mysql-test/spider/bugfix/r/mdev_29855.result
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# MDEV-29855 Crash with SPIDER_DIRECT_SQL and spider_udf_ds_use_real_table=1
-#
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-connection child2_1;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-CREATE TABLE tbl_a (
-a INT
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-connection master_1;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-CREATE TABLE tbl_a (
-a INT
-) ENGINE=Spider DEFAULT CHARSET=utf8 COMMENT='table "tbl_a", srv "s_2_1"';
-SET spider_udf_ds_use_real_table=1;
-Warnings:
-Warning 1287 '@@spider_udf_ds_use_real_table' is deprecated and will be removed in a future release
-SELECT SPIDER_DIRECT_SQL('select 1 as 1', 'tbl_a', 'srv "s_2_1"');
-ERROR 3D000: No database selected
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
diff --git a/storage/spider/mysql-test/spider/bugfix/t/index.test b/storage/spider/mysql-test/spider/bugfix/t/index.test
index 5167e40e8c4..10d5025c9c7 100644
--- a/storage/spider/mysql-test/spider/bugfix/t/index.test
+++ b/storage/spider/mysql-test/spider/bugfix/t/index.test
@@ -38,9 +38,6 @@ create table auto_test_local.t (a int, b char(1), primary key(a desc));
insert into auto_test_local.t VALUES (1,'f'),(2,'g'),(3,'j'), (4,'i'),(5,'h');
create table ts (a int, b char(1), primary key(a desc))
engine=spider comment='wrapper "mysql", srv "s_1", table "t"';
-set spider_use_handler=3;
-select a, b from ts where a > 0 and b = 'g' order by a;
-set spider_use_handler=default;
select a, b from ts where a > 0 and b = 'g' order by a;
drop table ts, auto_test_local.t;
diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_29855.cnf b/storage/spider/mysql-test/spider/bugfix/t/mdev_29855.cnf
deleted file mode 100644
index 05dfd8a0bce..00000000000
--- a/storage/spider/mysql-test/spider/bugfix/t/mdev_29855.cnf
+++ /dev/null
@@ -1,3 +0,0 @@
-!include include/default_mysqld.cnf
-!include ../my_1_1.cnf
-!include ../my_2_1.cnf
diff --git a/storage/spider/mysql-test/spider/bugfix/t/mdev_29855.test b/storage/spider/mysql-test/spider/bugfix/t/mdev_29855.test
deleted file mode 100644
index 13cda064c72..00000000000
--- a/storage/spider/mysql-test/spider/bugfix/t/mdev_29855.test
+++ /dev/null
@@ -1,40 +0,0 @@
---echo #
---echo # MDEV-29855 Crash with SPIDER_DIRECT_SQL and spider_udf_ds_use_real_table=1
---echo #
-
-
---disable_query_log
---disable_result_log
---source ../../t/test_init.inc
---enable_result_log
---enable_query_log
-
---connection child2_1
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-eval CREATE TABLE tbl_a (
- a INT
-) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-
---connection master_1
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-eval CREATE TABLE tbl_a (
- a INT
-) $MASTER_1_ENGINE $MASTER_1_CHARSET COMMENT='table "tbl_a", srv "s_2_1"';
-
-SET spider_udf_ds_use_real_table=1;
---error ER_NO_DB_ERROR
-SELECT SPIDER_DIRECT_SQL('select 1 as 1', 'tbl_a', 'srv "s_2_1"');
-
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-
---connection child2_1
-DROP DATABASE IF EXISTS auto_test_remote;
-
---disable_query_log
---disable_result_log
---source ../t/test_deinit.inc
---enable_query_log
---enable_result_log
diff --git a/storage/spider/mysql-test/spider/handler/include/deinit_child2_1.inc b/storage/spider/mysql-test/spider/handler/include/deinit_child2_1.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/deinit_child2_1.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/deinit_child2_2.inc b/storage/spider/mysql-test/spider/handler/include/deinit_child2_2.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/deinit_child2_2.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/deinit_child2_3.inc b/storage/spider/mysql-test/spider/handler/include/deinit_child2_3.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/deinit_child2_3.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/deinit_child3_1.inc b/storage/spider/mysql-test/spider/handler/include/deinit_child3_1.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/deinit_child3_1.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/deinit_child3_2.inc b/storage/spider/mysql-test/spider/handler/include/deinit_child3_2.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/deinit_child3_2.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/deinit_child3_3.inc b/storage/spider/mysql-test/spider/handler/include/deinit_child3_3.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/deinit_child3_3.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/deinit_master_1.inc b/storage/spider/mysql-test/spider/handler/include/deinit_master_1.inc
deleted file mode 100644
index c19e376d10a..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/deinit_master_1.inc
+++ /dev/null
@@ -1 +0,0 @@
---source ../../include/deinit_spider.inc
diff --git a/storage/spider/mysql-test/spider/handler/include/deinit_slave1_1.inc b/storage/spider/mysql-test/spider/handler/include/deinit_slave1_1.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/deinit_slave1_1.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_1.inc b/storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_1.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_1.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_2.inc b/storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_2.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_2.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_3.inc b/storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_3.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child2_3.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_1.inc b/storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_1.inc
deleted file mode 100644
index c19e376d10a..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_1.inc
+++ /dev/null
@@ -1 +0,0 @@
---source ../../include/deinit_spider.inc
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_2.inc b/storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_2.inc
deleted file mode 100644
index c19e376d10a..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_2.inc
+++ /dev/null
@@ -1 +0,0 @@
---source ../../include/deinit_spider.inc
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_3.inc b/storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_3.inc
deleted file mode 100644
index c19e376d10a..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_deinit_child3_3.inc
+++ /dev/null
@@ -1 +0,0 @@
---source ../../include/deinit_spider.inc
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_deinit_master_1.inc b/storage/spider/mysql-test/spider/handler/include/ha_deinit_master_1.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_deinit_master_1.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_init_child2_1.inc b/storage/spider/mysql-test/spider/handler/include/ha_init_child2_1.inc
deleted file mode 100644
index 2684829408d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_init_child2_1.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-let $CHILD2_1_HA_AS_DROP_TABLES=
- $CHILD2_1_DROP_TABLES;
-let $CHILD2_1_HA_AS_CREATE_TABLES=
- $CHILD2_1_CREATE_TABLES;
-let $CHILD2_1_HA_AS_DROP_TABLES2=
- $CHILD2_1_DROP_TABLES2;
-let $CHILD2_1_HA_AS_CREATE_TABLES2=
- $CHILD2_1_CREATE_TABLES2;
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_init_child2_2.inc b/storage/spider/mysql-test/spider/handler/include/ha_init_child2_2.inc
deleted file mode 100644
index 205eaa6fe35..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_init_child2_2.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-let $CHILD2_2_HA_DROP_TABLES=
- $CHILD2_2_DROP_TABLES;
-let $CHILD2_2_HA_CREATE_TABLES=
- $CHILD2_2_CREATE_TABLES;
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_init_child2_3.inc b/storage/spider/mysql-test/spider/handler/include/ha_init_child2_3.inc
deleted file mode 100644
index 55cb858372c..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_init_child2_3.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-let $CHILD2_3_HA_DROP_TABLES=
- $CHILD2_3_DROP_TABLES;
-let $CHILD2_3_HA_CREATE_TABLES=
- $CHILD2_3_CREATE_TABLES;
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_init_child3_1.inc b/storage/spider/mysql-test/spider/handler/include/ha_init_child3_1.inc
deleted file mode 100644
index 3ac4f97b1e0..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_init_child3_1.inc
+++ /dev/null
@@ -1,140 +0,0 @@
---let $CHILD3_1_ENGINE_TYPE=Spider
---let $CHILD3_1_ENGINE=ENGINE=Spider
---source ../../include/init_spider.inc
-eval INSERT INTO mysql.spider_link_mon_servers
-(db_name, table_name, link_id, sid, server, scheme, host, port, socket,
- username, password, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key,
- ssl_verify_server_cert, default_file, default_group) VALUES
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_1_SERVER_ID, 's_3_1', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL),
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_2_SERVER_ID, 's_3_2', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL),
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_3_SERVER_ID, 's_3_3', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL);
-let $CHILD3_1_CHECK_LINK_STATUS=
- SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
- ORDER BY db_name, table_name, link_id;
-let $CHILD3_1_CHECK_LINK_FAILED_LOG=
- SELECT db_name, table_name, link_id FROM mysql.spider_link_failed_log;
-let $CHILD3_1_SET_RECOVERY_STATUS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2", lst "0 2"';
-let $CHILD3_1_SET_OK_STATUS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2", lst "0 1"';
-let $CHILD3_1_SET_OK_STATUS_AS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2", lst "1 0"';
-
-let $CHILD3_1_DROP_TABLES_HA_2_1=
- DROP TABLE IF EXISTS ta_l;
-if ($VERSION_COMPILE_OS_WIN)
-{
- let $CHILD3_1_CREATE_TABLES_HA_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_1_ENGINE $CHILD3_1_CHARSET
- COMMENT='port "$CHILD2_1_MYPORT $CHILD2_2_MYPORT", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2"';
- let $CHILD3_1_CREATE_TABLES_HA_AS_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_1_ENGINE $CHILD3_1_CHARSET
- COMMENT='port "$CHILD2_1_MYPORT $CHILD2_2_MYPORT", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2"';
-}
-if (!$VERSION_COMPILE_OS_WIN)
-{
- let $CHILD3_1_CREATE_TABLES_HA_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_1_ENGINE $CHILD3_1_CHARSET
- COMMENT='socket "$CHILD2_1_MYSOCK $CHILD2_2_MYSOCK", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2"';
- let $CHILD3_1_CREATE_TABLES_HA_AS_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_1_ENGINE $CHILD3_1_CHARSET
- COMMENT='socket "$CHILD2_1_MYSOCK $CHILD2_2_MYSOCK", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2"';
-}
-let $CHILD3_1_DROP_TABLES_HA_P_2_1=
- DROP TABLE IF EXISTS ta_l2;
-let $CHILD3_1_CREATE_TABLES_HA_P_2_1=
- CREATE TABLE ta_l2 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_1_ENGINE $CHILD3_1_CHARSET
- COMMENT='msi "$CHILD3_1_SERVER_ID", mkd "2"'
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001"'
- );
-let $CHILD3_1_CREATE_TABLES_HA_AS_P_2_1=
- CREATE TABLE ta_l2 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_1_ENGINE $CHILD3_1_CHARSET
- COMMENT='msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1"'
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001"'
- );
-let $CHILD3_1_SET_RECOVERY_STATUS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "0 2"'
- );
-let $CHILD3_1_SET_OK_STATUS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "0 1"'
- );
-let $CHILD3_1_SET_OK_STATUS_AS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "1 0"'
- );
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_init_child3_2.inc b/storage/spider/mysql-test/spider/handler/include/ha_init_child3_2.inc
deleted file mode 100644
index cf47099f439..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_init_child3_2.inc
+++ /dev/null
@@ -1,140 +0,0 @@
---let $CHILD3_2_ENGINE_TYPE=Spider
---let $CHILD3_2_ENGINE=ENGINE=Spider
---source ../../include/init_spider.inc
-eval INSERT INTO mysql.spider_link_mon_servers
-(db_name, table_name, link_id, sid, server, scheme, host, port, socket,
- username, password, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key,
- ssl_verify_server_cert, default_file, default_group) VALUES
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_1_SERVER_ID, 's_3_1', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL),
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_2_SERVER_ID, 's_3_2', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL),
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_3_SERVER_ID, 's_3_3', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL);
-let $CHILD3_2_CHECK_LINK_STATUS=
- SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
- ORDER BY db_name, table_name, link_id;
-let $CHILD3_2_CHECK_LINK_FAILED_LOG=
- SELECT db_name, table_name, link_id FROM mysql.spider_link_failed_log;
-let $CHILD3_2_SET_RECOVERY_STATUS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2", lst "0 2"';
-let $CHILD3_2_SET_OK_STATUS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2", lst "0 1"';
-let $CHILD3_2_SET_OK_STATUS_AS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2", lst "1 0"';
-
-let $CHILD3_2_DROP_TABLES_HA_2_1=
- DROP TABLE IF EXISTS ta_l;
-if ($VERSION_COMPILE_OS_WIN)
-{
- let $CHILD3_2_CREATE_TABLES_HA_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_2_ENGINE $CHILD3_2_CHARSET
- COMMENT='port "$CHILD2_1_MYPORT $CHILD2_2_MYPORT", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2"';
- let $CHILD3_2_CREATE_TABLES_HA_AS_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_2_ENGINE $CHILD3_2_CHARSET
- COMMENT='port "$CHILD2_1_MYPORT $CHILD2_2_MYPORT", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2"';
-}
-if (!$VERSION_COMPILE_OS_WIN)
-{
- let $CHILD3_2_CREATE_TABLES_HA_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_2_ENGINE $CHILD3_2_CHARSET
- COMMENT='socket "$CHILD2_1_MYSOCK $CHILD2_2_MYSOCK", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2"';
- let $CHILD3_2_CREATE_TABLES_HA_AS_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_2_ENGINE $CHILD3_2_CHARSET
- COMMENT='socket "$CHILD2_1_MYSOCK $CHILD2_2_MYSOCK", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2"';
-}
-let $CHILD3_2_DROP_TABLES_HA_P_2_1=
- DROP TABLE IF EXISTS ta_l2;
-let $CHILD3_2_CREATE_TABLES_HA_P_2_1=
- CREATE TABLE ta_l2 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_2_ENGINE $CHILD3_2_CHARSET
- COMMENT='msi "$CHILD3_1_SERVER_ID", mkd "2"'
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001"'
- );
-let $CHILD3_2_CREATE_TABLES_HA_AS_P_2_1=
- CREATE TABLE ta_l2 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_2_ENGINE $CHILD3_2_CHARSET
- COMMENT='msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1"'
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001"'
- );
-let $CHILD3_2_SET_RECOVERY_STATUS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "0 2"'
- );
-let $CHILD3_2_SET_OK_STATUS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "0 1"'
- );
-let $CHILD3_2_SET_OK_STATUS_AS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "1 0"'
- );
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_init_child3_3.inc b/storage/spider/mysql-test/spider/handler/include/ha_init_child3_3.inc
deleted file mode 100644
index 094d26b62c6..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_init_child3_3.inc
+++ /dev/null
@@ -1,140 +0,0 @@
---let $CHILD3_3_ENGINE_TYPE=Spider
---let $CHILD3_3_ENGINE=ENGINE=Spider
---source ../../include/init_spider.inc
-eval INSERT INTO mysql.spider_link_mon_servers
-(db_name, table_name, link_id, sid, server, scheme, host, port, socket,
- username, password, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key,
- ssl_verify_server_cert, default_file, default_group) VALUES
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_1_SERVER_ID, 's_3_1', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL),
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_2_SERVER_ID, 's_3_2', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL),
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_3_SERVER_ID, 's_3_3', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL);
-let $CHILD3_3_CHECK_LINK_STATUS=
- SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
- ORDER BY db_name, table_name, link_id;
-let $CHILD3_3_CHECK_LINK_FAILED_LOG=
- SELECT db_name, table_name, link_id FROM mysql.spider_link_failed_log;
-let $CHILD3_3_SET_RECOVERY_STATUS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2", lst "0 2"';
-let $CHILD3_3_SET_OK_STATUS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2", lst "0 1"';
-let $CHILD3_3_SET_OK_STATUS_AS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2", lst "1 0"';
-
-let $CHILD3_3_DROP_TABLES_HA_2_1=
- DROP TABLE IF EXISTS ta_l;
-if ($VERSION_COMPILE_OS_WIN)
-{
- let $CHILD3_3_CREATE_TABLES_HA_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_3_ENGINE $CHILD3_3_CHARSET
- COMMENT='port "$CHILD2_1_MYPORT $CHILD2_2_MYPORT", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2"';
- let $CHILD3_3_CREATE_TABLES_HA_AS_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_3_ENGINE $CHILD3_3_CHARSET
- COMMENT='port "$CHILD2_1_MYPORT $CHILD2_2_MYPORT", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2"';
-}
-if (!$VERSION_COMPILE_OS_WIN)
-{
- let $CHILD3_3_CREATE_TABLES_HA_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_3_ENGINE $CHILD3_3_CHARSET
- COMMENT='socket "$CHILD2_1_MYSOCK $CHILD2_2_MYSOCK", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2"';
- let $CHILD3_3_CREATE_TABLES_HA_AS_2_1=
- CREATE TABLE ta_l (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_3_ENGINE $CHILD3_3_CHARSET
- COMMENT='socket "$CHILD2_1_MYSOCK $CHILD2_2_MYSOCK", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2"';
-}
-let $CHILD3_3_DROP_TABLES_HA_P_2_1=
- DROP TABLE IF EXISTS ta_l2;
-let $CHILD3_3_CREATE_TABLES_HA_P_2_1=
- CREATE TABLE ta_l2 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_3_ENGINE $CHILD3_3_CHARSET
- COMMENT='msi "$CHILD3_1_SERVER_ID", mkd "2"'
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001"'
- );
-let $CHILD3_3_CREATE_TABLES_HA_AS_P_2_1=
- CREATE TABLE ta_l2 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD3_3_ENGINE $CHILD3_3_CHARSET
- COMMENT='msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1"'
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001"'
- );
-let $CHILD3_3_SET_RECOVERY_STATUS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "0 2"'
- );
-let $CHILD3_3_SET_OK_STATUS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "0 1"'
- );
-let $CHILD3_3_SET_OK_STATUS_AS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "1 0"'
- );
diff --git a/storage/spider/mysql-test/spider/handler/include/ha_init_master_1.inc b/storage/spider/mysql-test/spider/handler/include/ha_init_master_1.inc
deleted file mode 100644
index 78797d80ce7..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/ha_init_master_1.inc
+++ /dev/null
@@ -1,105 +0,0 @@
-eval INSERT INTO mysql.spider_link_mon_servers
-(db_name, table_name, link_id, sid, server, scheme, host, port, socket,
- username, password, ssl_ca, ssl_capath, ssl_cert, ssl_cipher, ssl_key,
- ssl_verify_server_cert, default_file, default_group) VALUES
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_1_SERVER_ID, 's_3_1', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL),
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_2_SERVER_ID, 's_3_2', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL),
-('%auto_test_local%', '%ta_l%', '%', $CHILD3_3_SERVER_ID, 's_3_3', NULL, NULL,
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL);
-let $MASTER_1_CHECK_LINK_STATUS=
- SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
- ORDER BY db_name, table_name, link_id;
-let $MASTER_1_CHECK_LINK_FAILED_LOG=
- SELECT db_name, table_name, link_id FROM mysql.spider_link_failed_log;
-let $MASTER_1_SET_RECOVERY_STATUS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2", lst "0 2"';
-let $MASTER_1_SET_OK_STATUS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2", lst "0 1"';
-let $MASTER_1_SET_OK_STATUS_AS_2_1=
- ALTER TABLE ta_l
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2", lst "1 0"';
-let $MASTER_1_COPY_TABLES_2_1=
- SELECT spider_copy_tables('ta_l', '0', '1');
-
-if ($VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT_HA_2_1=
- COMMENT='port "$CHILD2_1_MYPORT $CHILD2_2_MYPORT", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2"';
- let $MASTER_1_COMMENT_HA_AS_2_1=
- COMMENT='port "$CHILD2_1_MYPORT $CHILD2_2_MYPORT", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2"';
-}
-if (!$VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT_HA_2_1=
- COMMENT='socket "$CHILD2_1_MYSOCK $CHILD2_2_MYSOCK", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2",
- database "auto_test_remote auto_test_remote2"';
- let $MASTER_1_COMMENT_HA_AS_2_1=
- COMMENT='socket "$CHILD2_1_MYSOCK $CHILD2_2_MYSOCK", table "ta_r ta_r3"'
- CONNECTION='host "localhost", user "root", password "",
- msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2"';
-}
-let $MASTER_1_COMMENT_HA_P_2_1=
- COMMENT='msi "$CHILD3_1_SERVER_ID", mkd "2"'
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001"'
- );
-let $MASTER_1_COMMENT_HA_AS_P_2_1=
- COMMENT='msi "$CHILD3_1_SERVER_ID", mkd "2", alc "1"'
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001"'
- );
-let $MASTER_1_SET_RECOVERY_STATUS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "0 2"'
- );
-let $MASTER_1_SET_OK_STATUS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "0 1"'
- );
-let $MASTER_1_SET_OK_STATUS_AS_P_2_1=
- ALTER TABLE ta_l2
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "1 0"'
- );
-let $MASTER_1_COPY_TABLES_P_2_1=
- SELECT spider_copy_tables('ta_l2#P#pt2', '0', '1');
-let $MASTER_1_CHECK_HA_STATUS=
- SHOW STATUS LIKE 'Spider_mon_table_cache_version%';
-let $MASTER_1_CHANGE_HA_MON=
- SELECT spider_flush_table_mon_cache();
diff --git a/storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_1.inc b/storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_1.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_1.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_2.inc b/storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_2.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_2.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_3.inc b/storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_3.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/hs_deinit_child2_3.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/hs_deinit_master_1.inc b/storage/spider/mysql-test/spider/handler/include/hs_deinit_master_1.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/hs_deinit_master_1.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/hs_init_child2_1.inc b/storage/spider/mysql-test/spider/handler/include/hs_init_child2_1.inc
deleted file mode 100644
index ee006858b06..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/hs_init_child2_1.inc
+++ /dev/null
@@ -1,24 +0,0 @@
-let $CHILD2_1_HS_DROP_TABLES=
- DROP TABLE IF EXISTS hs_r;
-let $CHILD2_1_HS_CREATE_TABLES=
- CREATE TABLE hs_r (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- d INT DEFAULT 11,
- PRIMARY KEY(a)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_HS_SELECT_TABLES=
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s'), d FROM hs_r ORDER BY a;
-let $CHILD2_1_HS_DROP_TABLES2=
- DROP TABLE IF EXISTS hs_r2;
-let $CHILD2_1_HS_CREATE_TABLES2=
- CREATE TABLE hs_r2 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- d INT DEFAULT 11,
- PRIMARY KEY(a)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_HS_SELECT_TABLES2=
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s'), d FROM hs_r2 ORDER BY a;
diff --git a/storage/spider/mysql-test/spider/handler/include/hs_init_child2_2.inc b/storage/spider/mysql-test/spider/handler/include/hs_init_child2_2.inc
deleted file mode 100644
index 1c5a02d50c8..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/hs_init_child2_2.inc
+++ /dev/null
@@ -1,12 +0,0 @@
-let $CHILD2_2_HS_DROP_TABLES=
- DROP TABLE IF EXISTS hs_r3;
-let $CHILD2_2_HS_CREATE_TABLES=
- CREATE TABLE hs_r3 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- d INT DEFAULT 11,
- PRIMARY KEY(a)
- ) $CHILD2_2_ENGINE $CHILD2_2_CHARSET;
-let $CHILD2_2_HS_SELECT_TABLES=
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s'), d FROM hs_r3 ORDER BY a;
diff --git a/storage/spider/mysql-test/spider/handler/include/hs_init_child2_3.inc b/storage/spider/mysql-test/spider/handler/include/hs_init_child2_3.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/hs_init_child2_3.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/hs_init_master_1.inc b/storage/spider/mysql-test/spider/handler/include/hs_init_master_1.inc
deleted file mode 100644
index 0ff5e2a10d9..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/hs_init_master_1.inc
+++ /dev/null
@@ -1,12 +0,0 @@
-let $MASTER_1_HS_COMMENT_TMP=
- COMMENT='';
-let $MASTER_1_HS_COMMENT_2_1=
- COMMENT='srv "s_2_1", table "hs_r", uhr "1", uhw "1", hrp "$CHILD2_1_HSRPORT", hwp "$CHILD2_1_HSWPORT"';
-let $MASTER_1_HS_COMMENT_P_2_1=
- COMMENT='uhr "1", uhw "1"'
- PARTITION BY RANGE(a) (
- PARTITION pt1 VALUES LESS THAN (4)
- COMMENT='srv "s_2_1", table "hs_r2", hrp "$CHILD2_1_HSRPORT", hwp "$CHILD2_1_HSWPORT"',
- PARTITION pt2 VALUES LESS THAN MAXVALUE
- COMMENT='srv "s_2_2", table "hs_r3", hrp "$CHILD2_2_HSRPORT", hwp "$CHILD2_2_HSWPORT"'
- );
diff --git a/storage/spider/mysql-test/spider/handler/include/init_child2_1.inc b/storage/spider/mysql-test/spider/handler/include/init_child2_1.inc
deleted file mode 100644
index b8b8ceb9875..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/init_child2_1.inc
+++ /dev/null
@@ -1,176 +0,0 @@
-let $CHILD2_1_DROP_TABLES=
- DROP TABLE IF EXISTS ta_r;
-let $CHILD2_1_CREATE_TABLES=
- CREATE TABLE ta_r (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a),
- KEY idx1(b)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_SELECT_TABLES=
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_r ORDER BY a;
-let $CHILD2_1_DROP_TABLES2=
- DROP TABLE IF EXISTS ta_r2;
-let $CHILD2_1_CREATE_TABLES2=
- CREATE TABLE ta_r2 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_SELECT_TABLES2=
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_r2 ORDER BY a;
-let $CHILD2_1_DROP_TABLES3=
- DROP TABLE IF EXISTS ta_r_no_idx;
-let $CHILD2_1_CREATE_TABLES3=
- CREATE TABLE ta_r_no_idx (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10'
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_SELECT_TABLES3=
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_r_no_idx ORDER BY a;
-let $CHILD2_1_DROP_TABLES4=
- DROP TABLE IF EXISTS ta_r_auto_inc;
-let $CHILD2_1_CREATE_TABLES4=
- CREATE TABLE ta_r_auto_inc (
- a INT AUTO_INCREMENT,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_SELECT_TABLES4=
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_r_auto_inc
- ORDER BY a;
-let $CHILD2_1_DROP_TABLES5=
- DROP TABLE IF EXISTS ta_r_int;
-let $CHILD2_1_CREATE_TABLES5=
- CREATE TABLE ta_r_int (
- a INT AUTO_INCREMENT,
- b INT DEFAULT 10,
- c INT DEFAULT 11,
- PRIMARY KEY(a),
- KEY idx1(b),
- KEY idx2(c)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_SELECT_TABLES5=
- SELECT a, b, c FROM ta_r_int ORDER BY a;
-let $CHILD2_1_DROP_TABLES6=
- DROP TABLE IF EXISTS ta_r_3;
-let $CHILD2_1_CREATE_TABLES6=
- CREATE TABLE ta_r_3 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_SELECT_TABLES6=
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_r_3 ORDER BY a;
-let $CHILD2_1_DROP_FT_TABLES=
- DROP TABLE IF EXISTS ft_r;
-let $CHILD2_1_CREATE_FT_TABLES=
- CREATE TABLE ft_r (
- a INT DEFAULT 0,
- b TEXT,
- c TEXT,
- d TEXT,
- PRIMARY KEY(a),
- FULLTEXT INDEX ft_idx1(b),
- FULLTEXT INDEX ft_idx2(c)
- ) $CHILD2_1_FT_ENGINE $CHILD2_1_FT_CHARSET;
-let $CHILD2_1_SELECT_FT_TABLES=
- SELECT a, b, c, d FROM ft_r ORDER BY a;
-let $CHILD2_1_DROP_FT_TABLES2=
- DROP TABLE IF EXISTS ft_r2;
-let $CHILD2_1_CREATE_FT_TABLES2=
- CREATE TABLE ft_r2 (
- a INT DEFAULT 0,
- b TEXT,
- c TEXT,
- d TEXT,
- PRIMARY KEY(a),
- FULLTEXT INDEX ft_idx1(b),
- FULLTEXT INDEX ft_idx2(c)
- ) $CHILD2_1_FT_ENGINE $CHILD2_1_FT_CHARSET;
-let $CHILD2_1_SELECT_FT_TABLES2=
- SELECT a, b, c, d FROM ft_r2 ORDER BY a;
-let $CHILD2_1_DROP_GM_TABLES=
- DROP TABLE IF EXISTS gm_r;
-let $CHILD2_1_CREATE_GM_TABLES=
- CREATE TABLE gm_r (
- a INT DEFAULT 0,
- b GEOMETRY NOT NULL,
- c GEOMETRY NOT NULL,
- PRIMARY KEY(a),
- SPATIAL INDEX sp_idx1(b),
- SPATIAL INDEX sp_idx2(c)
- ) $CHILD2_1_GM_ENGINE $CHILD2_1_GM_CHARSET;
-let $CHILD2_1_SELECT_GM_TABLES=
- SELECT a, b, c FROM gm_r ORDER BY a;
-let $CHILD2_1_DROP_GM_TABLES2=
- DROP TABLE IF EXISTS gm_r2;
-let $CHILD2_1_CREATE_GM_TABLES2=
- CREATE TABLE gm_r2 (
- a INT DEFAULT 0,
- b GEOMETRY NOT NULL,
- c GEOMETRY NOT NULL,
- PRIMARY KEY(a),
- SPATIAL INDEX sp_idx1(b),
- SPATIAL INDEX sp_idx2(c)
- ) $CHILD2_1_GM_ENGINE $CHILD2_1_GM_CHARSET;
-let $CHILD2_1_SELECT_GM_TABLES2=
- SELECT a, b, c FROM gm_r2 ORDER BY a;
-let $CHILD2_1_DROP_LOCK_TABLES1=
- DROP TABLE IF EXISTS t1_1;
-let $CHILD2_1_CREATE_LOCK_TABLES1=
- CREATE TABLE t1_1 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_DROP_LOCK_TABLES2=
- DROP TABLE IF EXISTS t2_2;
-let $CHILD2_1_CREATE_LOCK_TABLES2=
- CREATE TABLE t2_2 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_DROP_INCREMENT_TABLES1=
- DROP TABLE IF EXISTS t1_1;
-let $CHILD2_1_CREATE_INCREMENT_TABLES1=
- CREATE TABLE t1_1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_SELECT_INCREMENT_TABLES1=
- SELECT id FROM t1_1 ORDER BY id;
-let $CHILD2_1_DROP_TEXT_PK_TABLES1=
- DROP TABLE IF EXISTS t1;
-let $CHILD2_1_CREATE_TEXT_PK_TABLES1=
- CREATE TABLE t1 (
- a VARCHAR(255),
- PRIMARY KEY (a)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET2;
-let $CHILD2_1_SELECT_TEXT_PK_TABLES1=
- SELECT a FROM t1 ORDER BY a;
-let $CHILD2_1_DROP_TEXT_KEY_TABLES1=
- DROP TABLE IF EXISTS t1;
-let $CHILD2_1_CREATE_TEXT_KEY_TABLES1=
- CREATE TABLE t1 (
- a VARCHAR(255),
- b VARCHAR(255),
- c VARCHAR(255),
- KEY idx1(a,b),
- KEY idx2(b),
- PRIMARY KEY(c)
- ) $CHILD2_1_ENGINE $CHILD2_1_CHARSET;
-let $CHILD2_1_SELECT_TEXT_KEY_TABLES1=
- SELECT a, b FROM t1 ORDER BY a, b;
-let $CHILD2_1_AUTO_INCREMENT_INCREMENT1=
- SET GLOBAL AUTO_INCREMENT_INCREMENT = 1;
-let $CHILD2_1_AUTO_INCREMENT_INCREMENT2=
- SET GLOBAL AUTO_INCREMENT_INCREMENT = 4;
-let $CHILD2_1_AUTO_INCREMENT_OFFSET1=
- SET GLOBAL AUTO_INCREMENT_OFFSET = 1;
-let $CHILD2_1_AUTO_INCREMENT_OFFSET2=
- SET GLOBAL AUTO_INCREMENT_OFFSET = 2;
diff --git a/storage/spider/mysql-test/spider/handler/include/init_child2_2.inc b/storage/spider/mysql-test/spider/handler/include/init_child2_2.inc
deleted file mode 100644
index 9f0b5e2fe5a..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/init_child2_2.inc
+++ /dev/null
@@ -1,80 +0,0 @@
-let $CHILD2_2_DROP_TABLES=
- DROP TABLE IF EXISTS ta_r3;
-let $CHILD2_2_CREATE_TABLES=
- CREATE TABLE ta_r3 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD2_2_ENGINE $CHILD2_2_CHARSET;
-let $CHILD2_2_DROP_TABLES5=
- DROP TABLE IF EXISTS ta_r_int;
-let $CHILD2_2_CREATE_TABLES5=
- CREATE TABLE ta_r_int (
- a INT AUTO_INCREMENT,
- b INT DEFAULT 10,
- c INT DEFAULT 11,
- PRIMARY KEY(a),
- KEY idx1(b),
- KEY idx2(c)
- ) $CHILD2_2_ENGINE $CHILD2_2_CHARSET;
-let $CHILD2_2_SELECT_TABLES=
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_r3 ORDER BY a;
-let $CHILD2_2_DROP_FT_TABLES=
- DROP TABLE IF EXISTS ft_r3;
-let $CHILD2_2_CREATE_FT_TABLES=
- CREATE TABLE ft_r3 (
- a INT DEFAULT 0,
- b TEXT,
- c TEXT,
- d TEXT,
- PRIMARY KEY(a),
- FULLTEXT INDEX ft_idx1(b),
- FULLTEXT INDEX ft_idx2(c)
- ) $CHILD2_2_FT_ENGINE $CHILD2_2_FT_CHARSET;
-let $CHILD2_2_SELECT_FT_TABLES=
- SELECT a, b, c, d FROM ft_r3 ORDER BY a;
-let $CHILD2_2_DROP_GM_TABLES=
- DROP TABLE IF EXISTS gm_r3;
-let $CHILD2_2_CREATE_GM_TABLES=
- CREATE TABLE gm_r3 (
- a INT DEFAULT 0,
- b GEOMETRY NOT NULL,
- c GEOMETRY NOT NULL,
- PRIMARY KEY(a),
- SPATIAL INDEX sp_idx1(b),
- SPATIAL INDEX sp_idx2(c)
- ) $CHILD2_2_GM_ENGINE $CHILD2_2_GM_CHARSET;
-let $CHILD2_2_SELECT_GM_TABLES=
- SELECT a, b, c FROM gm_r3 ORDER BY a;
-let $CHILD2_2_DROP_LOCK_TABLES1=
- DROP TABLE IF EXISTS t1_2;
-let $CHILD2_2_CREATE_LOCK_TABLES1=
- CREATE TABLE t1_2 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
- ) $CHILD2_2_ENGINE $CHILD2_2_CHARSET;
-let $CHILD2_2_DROP_LOCK_TABLES2=
- DROP TABLE IF EXISTS t2_1;
-let $CHILD2_2_CREATE_LOCK_TABLES2=
- CREATE TABLE t2_1 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
- ) $CHILD2_2_ENGINE $CHILD2_2_CHARSET;
-let $CHILD2_2_DROP_INCREMENT_TABLES1=
- DROP TABLE IF EXISTS t1_2;
-let $CHILD2_2_CREATE_INCREMENT_TABLES1=
- CREATE TABLE t1_2 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $CHILD2_2_ENGINE $CHILD2_2_CHARSET;
-let $CHILD2_2_SELECT_INCREMENT_TABLES1=
- SELECT id FROM t1_2 ORDER BY id;
-let $CHILD2_2_AUTO_INCREMENT_INCREMENT1=
- SET GLOBAL AUTO_INCREMENT_INCREMENT = 1;
-let $CHILD2_2_AUTO_INCREMENT_INCREMENT2=
- SET GLOBAL AUTO_INCREMENT_INCREMENT = 4;
-let $CHILD2_2_AUTO_INCREMENT_OFFSET1=
- SET GLOBAL AUTO_INCREMENT_OFFSET = 1;
-let $CHILD2_2_AUTO_INCREMENT_OFFSET2=
- SET GLOBAL AUTO_INCREMENT_OFFSET = 3;
diff --git a/storage/spider/mysql-test/spider/handler/include/init_child2_3.inc b/storage/spider/mysql-test/spider/handler/include/init_child2_3.inc
deleted file mode 100644
index 05dbb1c3dd1..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/init_child2_3.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-let $CHILD2_3_DROP_TABLES=
- DROP TABLE IF EXISTS ta_r4;
-let $CHILD2_3_CREATE_TABLES=
- CREATE TABLE ta_r4 (
- a INT DEFAULT 10,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $CHILD2_3_ENGINE $CHILD2_3_CHARSET;
-let $CHILD2_3_SELECT_TABLES=
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_r4 ORDER BY a;
diff --git a/storage/spider/mysql-test/spider/handler/include/init_child3_1.inc b/storage/spider/mysql-test/spider/handler/include/init_child3_1.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/init_child3_1.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/init_child3_2.inc b/storage/spider/mysql-test/spider/handler/include/init_child3_2.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/init_child3_2.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/init_child3_3.inc b/storage/spider/mysql-test/spider/handler/include/init_child3_3.inc
deleted file mode 100644
index e69de29bb2d..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/init_child3_3.inc
+++ /dev/null
diff --git a/storage/spider/mysql-test/spider/handler/include/init_master_1.inc b/storage/spider/mysql-test/spider/handler/include/init_master_1.inc
deleted file mode 100644
index 9c487bc73fe..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/init_master_1.inc
+++ /dev/null
@@ -1,186 +0,0 @@
---source ../../include/init_spider.inc
-SET spider_internal_sql_log_off= 0;
-SET spider_use_handler= 3;
-if ($VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT_2_1=
- COMMENT='database "auto_test_remote", table "ta_r"'
- CONNECTION='host "localhost", port "$CHILD2_1_MYPORT", user "root",
- password ""';
-}
-if (!$VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT_2_1=
- COMMENT='database "auto_test_remote", table "ta_r"'
- CONNECTION='host "localhost", socket "$CHILD2_1_MYSOCK", user "root",
- password ""';
-}
-if ($VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT2_2_1=
- COMMENT='database "auto_test_remote", table "ta_r_no_idx"'
- CONNECTION='host "localhost", port "$CHILD2_1_MYPORT", user "root",
- password "", prt "2000000"';
-}
-if (!$VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT2_2_1=
- COMMENT='database "auto_test_remote", table "ta_r_no_idx"'
- CONNECTION='host "localhost", socket "$CHILD2_1_MYSOCK", user "root",
- password "", prt "2000000"';
-}
-let $MASTER_1_COMMENT_P_2_1=
- COMMENT='table "ta_r3"'
- PARTITION BY KEY(a) (
- PARTITION pt1 COMMENT='srv "s_2_1", table "ta_r2",
- priority "1000"',
- PARTITION pt2 COMMENT='srv "s_2_2", priority "1000001"'
- );
-let $MASTER_1_COMMENT2_P_2_1=
- COMMENT='table "ta_r3"'
- PARTITION BY RANGE(a) (
- PARTITION pt1 VALUES LESS THAN (4) COMMENT='srv "s_2_1",
- table "ta_r2", priority "1000"',
- PARTITION pt2 VALUES LESS THAN MAXVALUE
- COMMENT='srv "s_2_2", priority "1000001"'
- );
-if ($VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT3_2_1=
- COMMENT='database "auto_test_remote", table "ta_r_auto_inc"'
- CONNECTION='host "localhost", port "$CHILD2_1_MYPORT", user "root",
- password ""';
-}
-if (!$VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT3_2_1=
- COMMENT='database "auto_test_remote", table "ta_r_auto_inc"'
- CONNECTION='host "localhost", socket "$CHILD2_1_MYSOCK", user "root",
- password ""';
-}
-let $MASTER_1_COMMENT3_P_2_1=
- COMMENT='table "ta_r_int"'
- PARTITION BY LIST(MOD(a, 2)) (
- PARTITION pt1 VALUES IN (0)
- COMMENT='srv "s_2_1", priority "1000"',
- PARTITION pt2 VALUES IN (1)
- COMMENT='srv "s_2_2", priority "1000001"'
- );
-if ($VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT4_2_1=
- COMMENT='database "auto_test_remote", table "ta_r_int"'
- CONNECTION='host "localhost", port "$CHILD2_1_MYPORT", user "root",
- password ""';
-}
-if (!$VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT4_2_1=
- COMMENT='database "auto_test_remote", table "ta_r_int"'
- CONNECTION='host "localhost", socket "$CHILD2_1_MYSOCK", user "root",
- password ""';
-}
-if ($VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT5_2_1=
- COMMENT='database "auto_test_remote", table "ta_r_3"'
- CONNECTION='host "localhost", port "$CHILD2_1_MYPORT", user "root",
- password ""';
-}
-if (!$VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT5_2_1=
- COMMENT='database "auto_test_remote", table "ta_r_3"'
- CONNECTION='host "localhost", socket "$CHILD2_1_MYSOCK", user "root",
- password ""';
-}
-if ($VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT_FT_2_1=
- COMMENT='database "auto_test_remote", table "ft_r"'
- CONNECTION='host "localhost", port "$CHILD2_1_MYPORT", user "root",
- password ""';
-}
-if (!$VERSION_COMPILE_OS_WIN)
-{
- let $MASTER_1_COMMENT_FT_2_1=
- COMMENT='database "auto_test_remote", table "ft_r"'
- CONNECTION='host "localhost", socket "$CHILD2_1_MYSOCK", user "root",
- password ""';
-}
-let $MASTER_1_COMMENT2_FT_P_2_1=
- COMMENT='table "ft_r3"'
- PARTITION BY RANGE(a) (
- PARTITION pt1 VALUES LESS THAN (4) COMMENT='srv "s_2_1",
- table "ft_r2", priority "1000"',
- PARTITION pt2 VALUES LESS THAN MAXVALUE
- COMMENT='srv "s_2_2", priority "1000001"'
- );
-let $MASTER_1_COMMENT_GM_2_1=
- COMMENT='srv "s_2_1", table "gm_r"';
-let $MASTER_1_COMMENT2_GM_P_2_1=
- COMMENT='table "gm_r3"'
- PARTITION BY RANGE(a) (
- PARTITION pt1 VALUES LESS THAN (4) COMMENT='srv "s_2_1",
- table "gm_r2", priority "1000"',
- PARTITION pt2 VALUES LESS THAN MAXVALUE
- COMMENT='srv "s_2_2", priority "1000001"'
- );
-let $MASTER_1_COMMENT_LOCK1=
- COMMENT 'tbl "t1_1 t1_2", srv "s_2_1 s_2_2"';
-let $MASTER_1_COMMENT_LOCK2=
- COMMENT 'tbl "t2_1 t2_2", srv "s_2_2 s_2_1"';
-let $MASTER_1_COMMENT_INCREMENT1_1=
- COMMENT 'aim "2", tbl "t1_1", srv "s_2_1"';
-let $MASTER_1_COMMENT_INCREMENT1_P_1=
- COMMENT 'aim "2"'
- PARTITION BY LIST(MOD(id, 2)) (
- PARTITION pt1 VALUES IN (0)
- COMMENT='tbl "t1_1", srv "s_2_1"',
- PARTITION pt2 VALUES IN (1)
- COMMENT='tbl "t1_2", srv "s_2_2"'
- );
-let $MASTER_1_COMMENT_READONLY1_1=
- COMMENT 'read_only_mode "1", tbl "t1_1", srv "s_2_1"';
-let $MASTER_1_COMMENT_ERROR_MODE1_1=
- COMMENT 'erm "1", ewm "1", tbl "ter1_1", srv "s_2_1"';
-let $MASTER_1_COMMENT_TEXT_PK1_1=
- COMMENT 'tbl "t1", srv "s_2_1"';
-let $MASTER_1_COMMENT_TEXT_KEY1_1=
- COMMENT 'tbl "t1", srv "s_2_1"';
-let $MASTER_1_CHECK_DIRECT_UPDATE_STATUS=
- SHOW STATUS LIKE 'Spider_direct_update';
-let $MASTER_1_CHECK_DIRECT_DELETE_STATUS=
- SHOW STATUS LIKE 'Spider_direct_delete';
-let $MASTER_1_CHECK_DIRECT_ORDER_LIMIT_STATUS=
- SHOW STATUS LIKE 'Spider_direct_order_limit';
-let $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS=
- SHOW STATUS LIKE 'Spider_direct_aggregate';
-let $MASTER_1_AUTO_INCREMENT_INCREMENT1=
- SET SESSION AUTO_INCREMENT_INCREMENT = 1 $STR_SEMICOLON
- SELECT spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 1', '',
- 'srv "s_2_1"') $STR_SEMICOLON
- SELECT spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 1', '',
- 'srv "s_2_2"');
-let $MASTER_1_AUTO_INCREMENT_INCREMENT2=
- SET SESSION AUTO_INCREMENT_INCREMENT = 777 $STR_SEMICOLON
- SELECT spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 4', '',
- 'srv "s_2_1"') $STR_SEMICOLON
- SELECT spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 4', '',
- 'srv "s_2_2"');
-let $MASTER_1_AUTO_INCREMENT_OFFSET1=
- SET SESSION AUTO_INCREMENT_OFFSET = 1 $STR_SEMICOLON
- SELECT spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 1', '',
- 'srv "s_2_1"') $STR_SEMICOLON
- SELECT spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 1', '',
- 'srv "s_2_2"');
-let $MASTER_1_AUTO_INCREMENT_OFFSET2=
- SET SESSION AUTO_INCREMENT_OFFSET = 777 $STR_SEMICOLON
- SELECT spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 2', '',
- 'srv "s_2_1"') $STR_SEMICOLON
- SELECT spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 3', '',
- 'srv "s_2_2"');
-let $MASTER_1_AUTO_INCREMENT_OFFSET3=
- SET SESSION AUTO_INCREMENT_OFFSET = 1;
-let $MASTER_1_AUTO_INCREMENT_OFFSET4=
- SET SESSION AUTO_INCREMENT_OFFSET = 777;
diff --git a/storage/spider/mysql-test/spider/handler/include/init_slave1_1.inc b/storage/spider/mysql-test/spider/handler/include/init_slave1_1.inc
deleted file mode 100644
index 73c3c6b9ef2..00000000000
--- a/storage/spider/mysql-test/spider/handler/include/init_slave1_1.inc
+++ /dev/null
@@ -1,10 +0,0 @@
-let $SLAVE1_1_COMMENT_INCREMENT1_1=
- COMMENT '';
-let $SLAVE1_1_COMMENT_INCREMENT1_P_1=
- COMMENT ''
- PARTITION BY LIST(MOD(id, 2)) (
- PARTITION pt1 VALUES IN (0)
- COMMENT='',
- PARTITION pt2 VALUES IN (1)
- COMMENT=''
- );
diff --git a/storage/spider/mysql-test/spider/handler/my.cnf b/storage/spider/mysql-test/spider/handler/my.cnf
deleted file mode 100644
index 89b91e6a5bd..00000000000
--- a/storage/spider/mysql-test/spider/handler/my.cnf
+++ /dev/null
@@ -1,176 +0,0 @@
-# Use default setting for mysqld processes
-!include include/default_mysqld.cnf
-
-[mysqld.1.1]
-loose_handlersocket_port= 20000
-loose_handlersocket_port_wr= 20001
-loose_handlersocket_threads= 2
-loose_handlersocket_threads_wr= 1
-loose_handlersocket_support_merge_table= 0
-loose_handlersocket_direct_update_mode= 0
-loose_handlersocket_unlimited_boundary= 65536
-loose_handlersocket_bulk_insert= 0
-loose_handlersocket_bulk_insert_timeout= 0
-loose_handlersocket_general_log= 1
-loose_handlersocket_timeout= 30
-loose_handlersocket_close_table_interval=2
-open_files_limit= 4096
-loose_partition= 1
-
-[mysqld.2.1]
-loose_handlersocket_port= 20002
-loose_handlersocket_port_wr= 20003
-loose_handlersocket_threads= 2
-loose_handlersocket_threads_wr= 1
-loose_handlersocket_support_merge_table= 0
-loose_handlersocket_direct_update_mode= 0
-loose_handlersocket_unlimited_boundary= 65536
-loose_handlersocket_bulk_insert= 0
-loose_handlersocket_bulk_insert_timeout= 0
-loose_handlersocket_general_log= 1
-loose_handlersocket_timeout= 30
-loose_handlersocket_close_table_interval=2
-open_files_limit= 4096
-
-[mysqld.2.2]
-loose_handlersocket_port= 20004
-loose_handlersocket_port_wr= 20005
-loose_handlersocket_threads= 2
-loose_handlersocket_threads_wr= 1
-loose_handlersocket_support_merge_table= 0
-loose_handlersocket_direct_update_mode= 0
-loose_handlersocket_unlimited_boundary= 65536
-loose_handlersocket_bulk_insert= 0
-loose_handlersocket_bulk_insert_timeout= 0
-loose_handlersocket_general_log= 1
-loose_handlersocket_timeout= 30
-loose_handlersocket_close_table_interval=2
-open_files_limit= 4096
-
-[mysqld.2.3]
-
-[mysqld.3.1]
-loose_partition= 1
-
-[mysqld.3.2]
-loose_partition= 1
-
-[mysqld.3.3]
-loose_partition= 1
-
-[mysqld.4.1]
-loose_partition= 1
-
-
-[ENV]
-USE_GEOMETRY_TEST= 1
-USE_FULLTEXT_TEST= 1
-USE_HA_TEST= 1
-USE_GENERAL_LOG= 1
-USE_REPLICATION= 1
-MASTER_1_MYPORT= @mysqld.1.1.port
-MASTER_1_HSRPORT= 20000
-MASTER_1_HSWPORT= 20001
-MASTER_1_MYSOCK= @mysqld.1.1.socket
-MASTER_1_ENGINE_TYPE= Spider
-#MASTER_1_ENGINE_TYPE= MyISAM
-MASTER_1_ENGINE= ENGINE=Spider
-MASTER_1_CHARSET= DEFAULT CHARSET=utf8
-MASTER_1_ENGINE2= ENGINE=MyISAM
-MASTER_1_CHARSET2= DEFAULT CHARSET=utf8
-MASTER_1_CHARSET3= DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
-SLAVE1_1_MYPORT= @mysqld.4.1.port
-SLAVE1_1_MYSOCK= @mysqld.4.1.socket
-SLAVE1_1_ENGINE_TYPE= MyISAM
-SLAVE1_1_ENGINE= ENGINE=MyISAM
-SLAVE1_1_CHARSET= DEFAULT CHARSET=utf8
-USE_CHILD_GROUP2= 1
-OUTPUT_CHILD_GROUP2= 0
-CHILD2_1_MYPORT= @mysqld.2.1.port
-CHILD2_1_HSRPORT= 20002
-CHILD2_1_HSWPORT= 20003
-CHILD2_1_MYSOCK= @mysqld.2.1.socket
-CHILD2_1_ENGINE_TYPE= InnoDB
-CHILD2_1_ENGINE= ENGINE=InnoDB
-CHILD2_1_CHARSET= DEFAULT CHARSET=utf8
-CHILD2_1_CHARSET2= DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
-CHILD2_2_MYPORT= @mysqld.2.2.port
-CHILD2_2_HSRPORT= 20004
-CHILD2_2_HSWPORT= 20005
-CHILD2_2_MYSOCK= @mysqld.2.2.socket
-CHILD2_2_ENGINE_TYPE= InnoDB
-CHILD2_2_ENGINE= ENGINE=InnoDB
-CHILD2_2_CHARSET= DEFAULT CHARSET=utf8
-CHILD2_3_MYPORT= @mysqld.2.3.port
-CHILD2_3_MYSOCK= @mysqld.2.3.socket
-CHILD2_3_ENGINE_TYPE= InnoDB
-CHILD2_3_ENGINE= ENGINE=InnoDB
-CHILD2_3_CHARSET= DEFAULT CHARSET=utf8
-CHILD2_1_FT_MYPORT= @mysqld.1.1.port
-CHILD2_1_FT_MYSOCK= @mysqld.1.1.socket
-CHILD2_1_FT_ENGINE_TYPE= MyISAM
-CHILD2_1_FT_ENGINE= ENGINE=MyISAM
-CHILD2_1_FT_CHARSET= DEFAULT CHARSET=utf8
-CHILD2_2_FT_MYPORT= @mysqld.2.2.port
-CHILD2_2_FT_MYSOCK= @mysqld.2.2.socket
-CHILD2_2_FT_ENGINE_TYPE= MyISAM
-CHILD2_2_FT_ENGINE= ENGINE=MyISAM
-CHILD2_2_FT_CHARSET= DEFAULT CHARSET=utf8
-CHILD2_1_GM_MYPORT= @mysqld.2.1.port
-CHILD2_1_GM_MYSOCK= @mysqld.2.1.socket
-CHILD2_1_GM_ENGINE_TYPE= MyISAM
-CHILD2_1_GM_ENGINE= ENGINE=MyISAM
-CHILD2_1_GM_CHARSET= DEFAULT CHARSET=utf8
-CHILD2_2_GM_MYPORT= @mysqld.2.2.port
-CHILD2_2_GM_MYSOCK= @mysqld.2.2.socket
-CHILD2_2_GM_ENGINE_TYPE= MyISAM
-CHILD2_2_GM_ENGINE= ENGINE=MyISAM
-CHILD2_2_GM_CHARSET= DEFAULT CHARSET=utf8
-USE_CHILD_GROUP3= 1
-OUTPUT_CHILD_GROUP3= 0
-CHILD3_1_MYPORT= @mysqld.3.1.port
-CHILD3_1_MYSOCK= @mysqld.3.1.socket
-CHILD3_1_ENGINE_TYPE= InnoDB
-CHILD3_1_ENGINE= ENGINE=InnoDB
-CHILD3_1_CHARSET= DEFAULT CHARSET=utf8
-CHILD3_2_MYPORT= @mysqld.3.2.port
-CHILD3_2_MYSOCK= @mysqld.3.2.socket
-CHILD3_2_ENGINE_TYPE= InnoDB
-CHILD3_2_ENGINE= ENGINE=InnoDB
-CHILD3_2_CHARSET= DEFAULT CHARSET=utf8
-CHILD3_3_MYPORT= @mysqld.3.3.port
-CHILD3_3_MYSOCK= @mysqld.3.3.socket
-CHILD3_3_ENGINE_TYPE= InnoDB
-CHILD3_3_ENGINE= ENGINE=InnoDB
-CHILD3_3_CHARSET= DEFAULT CHARSET=utf8
-
-STR_SEMICOLON= ;
-
-#The followings are set in include/init_xxx.inc files
-# MASTER_1_COMMENT_2_1
-# MASTER_1_COMMENT2_2_1
-# MASTER_1_COMMENT3_2_1
-# MASTER_1_COMMENT4_2_1
-# MASTER_1_COMMENT5_2_1
-# MASTER_1_COMMENT_P_2_1
-# CHILD2_1_DROP_TABLES
-# CHILD2_1_CREATE_TABLES
-# CHILD2_1_SELECT_TABLES
-# CHILD2_1_DROP_TABLES2
-# CHILD2_1_CREATE_TABLES2
-# CHILD2_1_SELECT_TABLES2
-# CHILD2_1_DROP_TABLES3
-# CHILD2_1_CREATE_TABLES3
-# CHILD2_1_SELECT_TABLES3
-# CHILD2_1_DROP_TABLES4
-# CHILD2_1_CREATE_TABLES4
-# CHILD2_1_SELECT_TABLES4
-# CHILD2_1_DROP_TABLES5
-# CHILD2_1_CREATE_TABLES5
-# CHILD2_1_SELECT_TABLES5
-# CHILD2_1_DROP_TABLES6
-# CHILD2_1_CREATE_TABLES6
-# CHILD2_1_SELECT_TABLES6
-# CHILD2_2_DROP_TABLES
-# CHILD2_2_CREATE_TABLES
-# CHILD2_2_SELECT_TABLES
diff --git a/storage/spider/mysql-test/spider/handler/r/basic_sql.result b/storage/spider/mysql-test/spider/handler/r/basic_sql.result
deleted file mode 100644
index 94a09fc317b..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/basic_sql.result
+++ /dev/null
@@ -1,738 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-create table select test
-connection master_1;
-DROP TABLE IF EXISTS tb_l;
-CREATE TABLE tb_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2
-INSERT INTO tb_l (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-DROP TABLE IF EXISTS ta_l;
-CREATE TABLE ta_l (
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-SELECT a, b, c FROM tb_l
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-
-create table ignore select test
-connection master_1;
-DROP TABLE IF EXISTS ta_l;
-DROP TABLE IF EXISTS tb_l;
-CREATE TABLE tb_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2
-INSERT INTO tb_l (a, b, c) VALUES
-(1, 'f', '2008-07-01 10:21:39'),
-(2, 'g', '2000-02-01 00:00:00'),
-(3, 'j', '2007-05-04 20:03:11'),
-(4, 'i', '2003-10-30 05:01:03'),
-(5, 'h', '2001-10-31 23:59:59');
-CREATE TABLE ta_l (
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-IGNORE SELECT a, b, c FROM tb_l
-Warnings:
-Warning 1062 Duplicate entry '1' for key 'PRIMARY'
-Warning 1062 Duplicate entry '2' for key 'PRIMARY'
-Warning 1062 Duplicate entry '3' for key 'PRIMARY'
-Warning 1062 Duplicate entry '4' for key 'PRIMARY'
-Warning 1062 Duplicate entry '5' for key 'PRIMARY'
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-
-create table ignore select test
-connection master_1;
-DROP TABLE IF EXISTS ta_l;
-CREATE TABLE ta_l (
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-REPLACE SELECT a, b, c FROM tb_l
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-create no index table
-connection master_1;
-DROP TABLE IF EXISTS ta_l_no_idx;
-CREATE TABLE ta_l_no_idx
-MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT2_2_1
-SELECT a, b, c FROM tb_l
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l_no_idx ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select table
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select table shared mode
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a
-LOCK IN SHARE MODE;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select table for update
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a
-FOR UPDATE;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select table join
-connection master_1;
-SELECT a.a, a.b, date_format(b.c, '%Y-%m-%d %H:%i:%s') FROM ta_l a, tb_l b
-WHERE a.a = b.a ORDER BY a.a;
-a b date_format(b.c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select table straight_join
-connection master_1;
-SELECT STRAIGHT_JOIN a.a, a.b, date_format(b.c, '%Y-%m-%d %H:%i:%s')
-FROM ta_l a, tb_l b WHERE a.a = b.a ORDER BY a.a;
-a b date_format(b.c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select sql_small_result
-connection master_1;
-SELECT SQL_SMALL_RESULT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select sql_big_result
-connection master_1;
-SELECT SQL_BIG_RESULT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select sql_buffer_result
-connection master_1;
-SELECT SQL_BUFFER_RESULT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select sql_cache
-connection master_1;
-SELECT SQL_CACHE a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select sql_no_cache
-connection master_1;
-SELECT SQL_NO_CACHE a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select sql_calc_found_rows
-connection master_1;
-SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a LIMIT 4;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-connection master_1;
-SELECT found_rows();
-found_rows()
-5
-
-select high_priority
-connection master_1;
-SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select distinct
-connection master_1;
-SELECT DISTINCT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select count
-connection master_1;
-SELECT count(*) FROM ta_l ORDER BY a;
-count(*)
-5
-
-select table join not use index
-connection master_1;
-SELECT a.a, a.b, date_format(a.c, '%Y-%m-%d %H:%i:%s') FROM tb_l a WHERE
-EXISTS (SELECT * FROM ta_l b WHERE b.b = a.b) ORDER BY a.a;
-a b date_format(a.c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select using pushdown
-connection master_1;
-SELECT a.a, a.b, date_format(a.c, '%Y-%m-%d %H:%i:%s') FROM ta_l a WHERE
-a.b = 'g' ORDER BY a.a;
-a b date_format(a.c, '%Y-%m-%d %H:%i:%s')
-2 g 2000-02-01 00:00:00
-
-select using index and pushdown
-connection master_1;
-SELECT a.a, a.b, date_format(a.c, '%Y-%m-%d %H:%i:%s') FROM ta_l a WHERE
-a.a > 0 AND a.b = 'g' ORDER BY a.a;
-a b date_format(a.c, '%Y-%m-%d %H:%i:%s')
-2 g 2000-02-01 00:00:00
-
-insert
-connection master_1;
-TRUNCATE TABLE ta_l;
-connection master_1;
-INSERT INTO ta_l (a, b, c) VALUES (2, 'e', '2008-01-01 23:59:59');
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-2 e 2008-01-01 23:59:59
-
-insert select
-connection master_1;
-TRUNCATE TABLE ta_l;
-connection master_1;
-INSERT INTO ta_l (a, b, c) SELECT a, b, c FROM tb_l;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-insert select a
-connection master_1;
-TRUNCATE TABLE ta_l;
-connection master_1;
-INSERT INTO ta_l (a, b, c) VALUES ((SELECT a FROM tb_l ORDER BY a LIMIT 1),
-'e', '2008-01-01 23:59:59');
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 e 2008-01-01 23:59:59
-
-insert low_priority
-connection master_1;
-TRUNCATE TABLE ta_l;
-connection master_1;
-INSERT LOW_PRIORITY INTO ta_l (a, b, c) values (2, 'e', '2008-01-01 23:59:59');
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-2 e 2008-01-01 23:59:59
-
-insert high_priority
-connection master_1;
-TRUNCATE TABLE ta_l;
-connection master_1;
-INSERT HIGH_PRIORITY INTO ta_l (a, b, c) VALUES (2, 'e',
-'2008-01-01 23:59:59');
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-2 e 2008-01-01 23:59:59
-
-insert ignore
-connection master_1;
-INSERT IGNORE INTO ta_l (a, b, c) VALUES (2, 'd', '2009-02-02 01:01:01');
-Warnings:
-Warning 1062 Duplicate entry '2' for key 'PRIMARY'
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-2 e 2008-01-01 23:59:59
-
-insert update (insert)
-connection master_1;
-TRUNCATE TABLE ta_l;
-connection master_1;
-INSERT INTO ta_l (a, b, c) VALUES (2, 'e', '2008-01-01 23:59:59') ON DUPLICATE
-KEY UPDATE b = 'f', c = '2005-08-08 11:11:11';
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-2 e 2008-01-01 23:59:59
-
-insert update (update)
-connection master_1;
-INSERT INTO ta_l (a, b, c) VALUES (2, 'e', '2008-01-01 23:59:59') ON DUPLICATE
-KEY UPDATE b = 'f', c = '2005-08-08 11:11:11';
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-2 f 2005-08-08 11:11:11
-
-replace
-connection master_1;
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (2, 'e', '2008-01-01 23:59:59');
-connection master_1;
-REPLACE INTO ta_l (a, b, c) VALUES (2, 'f', '2008-02-02 02:02:02');
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-2 f 2008-02-02 02:02:02
-
-replace select
-connection master_1;
-REPLACE INTO ta_l (a, b, c) SELECT a, b, c FROM tb_l;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-replace select a
-connection master_1;
-REPLACE INTO ta_l (a, b, c) VALUES ((SELECT a FROM tb_l ORDER BY a LIMIT 1),
-'e', '2008-01-01 23:59:59');
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 e 2008-01-01 23:59:59
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-replace low_priority
-connection master_1;
-REPLACE LOW_PRIORITY INTO ta_l (a, b, c) VALUES (3, 'g',
-'2009-03-03 03:03:03');
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 e 2008-01-01 23:59:59
-2 g 2000-02-01 00:00:00
-3 g 2009-03-03 03:03:03
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-update
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59');
-connection master_1;
-UPDATE ta_l SET b = 'f', c = '2008-02-02 02:02:02' WHERE a = 2;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 e 2008-01-01 23:59:59
-2 f 2008-02-02 02:02:02
-
-update select
-connection master_1;
-UPDATE ta_l SET b = 'g', c = '2009-03-03 03:03:03' WHERE a IN (SELECT a FROM
-tb_l);
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 g 2009-03-03 03:03:03
-2 g 2009-03-03 03:03:03
-
-update select a
-connection master_1;
-UPDATE ta_l SET b = 'h', c = '2010-04-04 04:04:04' WHERE a = (SELECT a FROM
-tb_l ORDER BY a LIMIT 1);
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 h 2010-04-04 04:04:04
-2 g 2009-03-03 03:03:03
-
-update join
-connection master_1;
-UPDATE ta_l a, tb_l b SET a.b = b.b, a.c = b.c WHERE a.a = b.a;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-
-update join a
-connection master_1;
-UPDATE ta_l a, tb_l b SET a.b = 'g', a.c = '2009-03-03 03:03:03' WHERE
-a.a = b.a;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 g 2009-03-03 03:03:03
-2 g 2009-03-03 03:03:03
-
-update low_priority
-connection master_1;
-UPDATE LOW_PRIORITY ta_l SET b = 'f', c = '2008-02-02 02:02:02' WHERE a = 2;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 g 2009-03-03 03:03:03
-2 f 2008-02-02 02:02:02
-
-update ignore
-connection master_1;
-UPDATE IGNORE ta_l SET a = 1, b = 'g', c = '2009-03-03 03:03:03' WHERE a = 2;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 g 2009-03-03 03:03:03
-2 f 2008-02-02 02:02:02
-
-update pushdown
-connection master_1;
-update ta_l set b = 'j', c = '2009-03-03 03:03:03' where b = 'f';
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 g 2009-03-03 03:03:03
-2 j 2009-03-03 03:03:03
-
-update index pushdown
-connection master_1;
-UPDATE ta_l SET b = 'g', c = '2009-03-03 03:03:03' WHERE a > 0 AND b = 'j';
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 g 2009-03-03 03:03:03
-2 g 2009-03-03 03:03:03
-
-delete
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-connection master_1;
-DELETE FROM ta_l WHERE a = 2;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 e 2008-01-01 23:59:59
-3 e 2008-01-01 23:59:59
-4 e 2008-01-01 23:59:59
-5 e 2008-01-01 23:59:59
-6 e 2008-01-01 23:59:59
-7 e 2008-01-01 23:59:59
-8 e 2008-01-01 23:59:59
-9 e 2008-01-01 23:59:59
-10 j 2008-01-01 23:59:59
-
-delete all
-connection master_1;
-DELETE FROM ta_l;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-
-delete select
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-connection master_1;
-DELETE FROM ta_l WHERE a IN (SELECT a FROM tb_l);
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-6 e 2008-01-01 23:59:59
-7 e 2008-01-01 23:59:59
-8 e 2008-01-01 23:59:59
-9 e 2008-01-01 23:59:59
-10 j 2008-01-01 23:59:59
-
-delete select a
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-connection master_1;
-DELETE FROM ta_l WHERE a = (SELECT a FROM tb_l ORDER BY a LIMIT 1);
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-2 e 2008-01-01 23:59:59
-3 e 2008-01-01 23:59:59
-4 e 2008-01-01 23:59:59
-5 e 2008-01-01 23:59:59
-6 e 2008-01-01 23:59:59
-7 e 2008-01-01 23:59:59
-8 e 2008-01-01 23:59:59
-9 e 2008-01-01 23:59:59
-10 j 2008-01-01 23:59:59
-
-delete join
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-connection master_1;
-DELETE a FROM ta_l a, (SELECT a FROM tb_l ORDER BY a) b WHERE a.a = b.a;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-6 e 2008-01-01 23:59:59
-7 e 2008-01-01 23:59:59
-8 e 2008-01-01 23:59:59
-9 e 2008-01-01 23:59:59
-10 j 2008-01-01 23:59:59
-
-delete low_priority
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-connection master_1;
-DELETE LOW_PRIORITY FROM ta_l WHERE a = 2;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 e 2008-01-01 23:59:59
-3 e 2008-01-01 23:59:59
-4 e 2008-01-01 23:59:59
-5 e 2008-01-01 23:59:59
-6 e 2008-01-01 23:59:59
-7 e 2008-01-01 23:59:59
-8 e 2008-01-01 23:59:59
-9 e 2008-01-01 23:59:59
-10 j 2008-01-01 23:59:59
-
-delete ignore
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-connection master_1;
-DELETE IGNORE FROM ta_l WHERE a = 2;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 e 2008-01-01 23:59:59
-3 e 2008-01-01 23:59:59
-4 e 2008-01-01 23:59:59
-5 e 2008-01-01 23:59:59
-6 e 2008-01-01 23:59:59
-7 e 2008-01-01 23:59:59
-8 e 2008-01-01 23:59:59
-9 e 2008-01-01 23:59:59
-10 j 2008-01-01 23:59:59
-
-delete quick
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-connection master_1;
-DELETE QUICK FROM ta_l WHERE a = 2;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 e 2008-01-01 23:59:59
-3 e 2008-01-01 23:59:59
-4 e 2008-01-01 23:59:59
-5 e 2008-01-01 23:59:59
-6 e 2008-01-01 23:59:59
-7 e 2008-01-01 23:59:59
-8 e 2008-01-01 23:59:59
-9 e 2008-01-01 23:59:59
-10 j 2008-01-01 23:59:59
-
-delete pushdown
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-connection master_1;
-DELETE FROM ta_l WHERE b = 'e';
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-10 j 2008-01-01 23:59:59
-
-delete index pushdown
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-connection master_1;
-DELETE FROM ta_l WHERE a > 0 AND b = 'e';
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-10 j 2008-01-01 23:59:59
-
-truncate
-connection master_1;
-TRUNCATE TABLE ta_l;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/basic_sql_part.result b/storage/spider/mysql-test/spider/handler/r/basic_sql_part.result
deleted file mode 100644
index 0f4029404a7..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/basic_sql_part.result
+++ /dev/null
@@ -1,141 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-connection master_1;
-DROP TABLE IF EXISTS tb_l;
-CREATE TABLE tb_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2
-INSERT INTO tb_l (a, b, c) VALUES
-(1, 'f', '2008-07-01 10:21:39'),
-(2, 'g', '2000-02-01 00:00:00'),
-(3, 'j', '2007-05-04 20:03:11'),
-(4, 'i', '2003-10-30 05:01:03'),
-(5, 'h', '2001-10-31 23:59:59');
-
-create table with partition and select test
-connection master_1;
-CREATE TABLE ta_l2 (
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_COMMENT_P_2_1
-SELECT a, b, c FROM tb_l
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-select partition using pushdown
-connection master_1;
-SELECT a.a, a.b, date_format(a.c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 a WHERE
-a.b = 'g' ORDER BY a.a;
-a b date_format(a.c, '%Y-%m-%d %H:%i:%s')
-2 g 2000-02-01 00:00:00
-
-select partition using index pushdown
-connection master_1;
-SELECT a.a, a.b, date_format(a.c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 a WHERE
-a.a > 0 AND a.b = 'g' ORDER BY a.a;
-a b date_format(a.c, '%Y-%m-%d %H:%i:%s')
-2 g 2000-02-01 00:00:00
-
-update partition pushdown
-connection master_1;
-UPDATE ta_l2 SET b = 'e', c = '2009-03-03 03:03:03' WHERE b = 'j';
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 e 2009-03-03 03:03:03
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-update partition index pushdown
-connection master_1;
-UPDATE ta_l2 SET b = 'j', c = '2009-03-03 03:03:03' WHERE a > 0 AND b = 'e';
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-2 g 2000-02-01 00:00:00
-3 j 2009-03-03 03:03:03
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-delete partition pushdown
-TRUNCATE TABLE ta_l2;
-INSERT INTO ta_l2 SELECT a, b, c FROM tb_l;
-connection master_1;
-DELETE FROM ta_l2 WHERE b = 'g';
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-delete partition index pushdown
-TRUNCATE TABLE ta_l2;
-INSERT INTO ta_l2 SELECT a, b, c FROM tb_l;
-connection master_1;
-DELETE FROM ta_l2 WHERE a > 0 AND b = 'g';
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 f 2008-07-01 10:21:39
-3 j 2007-05-04 20:03:11
-4 i 2003-10-30 05:01:03
-5 h 2001-10-31 23:59:59
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/direct_aggregate.result b/storage/spider/mysql-test/spider/handler/r/direct_aggregate.result
deleted file mode 100644
index 9a8660ba79e..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/direct_aggregate.result
+++ /dev/null
@@ -1,100 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-create table select test
-connection master_1;
-DROP TABLE IF EXISTS ta_l;
-CREATE TABLE ta_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-INSERT INTO ta_l (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-
-direct_aggregating test
-connection master_1;
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-SELECT COUNT(*) FROM ta_l;
-COUNT(*)
-5
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-SELECT MAX(a) FROM ta_l;
-MAX(a)
-5
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-SELECT MIN(a) FROM ta_l;
-MIN(a)
-1
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-SELECT MAX(a) FROM ta_l WHERE a < 5;
-MAX(a)
-4
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-SELECT MIN(a) FROM ta_l WHERE a > 1;
-MIN(a)
-2
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/direct_aggregate_part.result b/storage/spider/mysql-test/spider/handler/r/direct_aggregate_part.result
deleted file mode 100644
index 760b39e16d5..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/direct_aggregate_part.result
+++ /dev/null
@@ -1,90 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-with partition test
-connection master_1;
-CREATE TABLE ta_l2 (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_COMMENT2_P_2_1
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-SELECT COUNT(*) FROM ta_l2;
-COUNT(*)
-5
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-SELECT MAX(a) FROM ta_l2;
-MAX(a)
-5
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-SELECT MIN(a) FROM ta_l2;
-MIN(a)
-1
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-SELECT MAX(a) FROM ta_l2 WHERE a < 5;
-MAX(a)
-4
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-SELECT MIN(a) FROM ta_l2 WHERE a > 1;
-MIN(a)
-2
-SHOW STATUS LIKE 'Spider_direct_aggregate';
-Variable_name Value
-Spider_direct_aggregate 0
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/direct_update.result b/storage/spider/mysql-test/spider/handler/r/direct_update.result
deleted file mode 100644
index 0e536d48617..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/direct_update.result
+++ /dev/null
@@ -1,155 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-create table select test
-connection master_1;
-DROP TABLE IF EXISTS ta_l;
-CREATE TABLE ta_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-INSERT INTO ta_l (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-
-direct_updating test
-connection master_1;
-SHOW STATUS LIKE 'Spider_direct_update';
-Variable_name Value
-Spider_direct_update 0
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-update all rows with function
-UPDATE ta_l SET c = ADDDATE(c, 1);
-SHOW STATUS LIKE 'Spider_direct_update';
-Variable_name Value
-Spider_direct_update 1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-2 b 2000-01-02 00:00:00
-3 e 2007-06-05 20:03:11
-4 d 2003-12-01 05:01:03
-5 c 2002-01-01 23:59:59
-update by primary key
-UPDATE ta_l SET b = 'x' WHERE a = 3;
-SHOW STATUS LIKE 'Spider_direct_update';
-Variable_name Value
-Spider_direct_update 2
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-2 b 2000-01-02 00:00:00
-3 x 2007-06-05 20:03:11
-4 d 2003-12-01 05:01:03
-5 c 2002-01-01 23:59:59
-update by a column without index
-UPDATE ta_l SET c = '2011-10-17' WHERE b = 'x';
-SHOW STATUS LIKE 'Spider_direct_update';
-Variable_name Value
-Spider_direct_update 3
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-2 b 2000-01-02 00:00:00
-3 x 2011-10-17 00:00:00
-4 d 2003-12-01 05:01:03
-5 c 2002-01-01 23:59:59
-update by primary key with order and limit
-UPDATE ta_l SET c = ADDDATE(c, 1) WHERE a < 4 ORDER BY b DESC LIMIT 1;
-SHOW STATUS LIKE 'Spider_direct_update';
-Variable_name Value
-Spider_direct_update 4
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-2 b 2000-01-02 00:00:00
-3 x 2011-10-18 00:00:00
-4 d 2003-12-01 05:01:03
-5 c 2002-01-01 23:59:59
-delete by primary key with order and limit
-DELETE FROM ta_l WHERE a < 4 ORDER BY c LIMIT 1;
-SHOW STATUS LIKE 'Spider_direct_delete';
-Variable_name Value
-Spider_direct_delete 1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-3 x 2011-10-18 00:00:00
-4 d 2003-12-01 05:01:03
-5 c 2002-01-01 23:59:59
-delete by a column without index
-DELETE FROM ta_l WHERE b = 'c';
-SHOW STATUS LIKE 'Spider_direct_delete';
-Variable_name Value
-Spider_direct_delete 2
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-3 x 2011-10-18 00:00:00
-4 d 2003-12-01 05:01:03
-delete by primary key
-DELETE FROM ta_l WHERE a = 3;
-SHOW STATUS LIKE 'Spider_direct_delete';
-Variable_name Value
-Spider_direct_delete 3
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-4 d 2003-12-01 05:01:03
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/direct_update_part.result b/storage/spider/mysql-test/spider/handler/r/direct_update_part.result
deleted file mode 100644
index 7069cd72fda..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/direct_update_part.result
+++ /dev/null
@@ -1,145 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-with partition test
-connection master_1;
-CREATE TABLE ta_l2 (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_COMMENT2_P_2_1
-SHOW STATUS LIKE 'Spider_direct_update';
-Variable_name Value
-Spider_direct_update 0
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-update all rows with function
-UPDATE ta_l2 SET c = ADDDATE(c, 1);
-SHOW STATUS LIKE 'Spider_direct_update';
-Variable_name Value
-Spider_direct_update 2
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-2 b 2000-01-02 00:00:00
-3 e 2007-06-05 20:03:11
-4 d 2003-12-01 05:01:03
-5 c 2002-01-01 23:59:59
-update by primary key
-UPDATE ta_l2 SET b = 'x' WHERE a = 3;
-SHOW STATUS LIKE 'Spider_direct_update';
-Variable_name Value
-Spider_direct_update 3
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-2 b 2000-01-02 00:00:00
-3 x 2007-06-05 20:03:11
-4 d 2003-12-01 05:01:03
-5 c 2002-01-01 23:59:59
-update by a column without index
-UPDATE ta_l2 SET c = '2011-10-17' WHERE b = 'x';
-SHOW STATUS LIKE 'Spider_direct_update';
-Variable_name Value
-Spider_direct_update 5
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-2 b 2000-01-02 00:00:00
-3 x 2011-10-17 00:00:00
-4 d 2003-12-01 05:01:03
-5 c 2002-01-01 23:59:59
-update by primary key with order and limit
-UPDATE ta_l2 SET c = ADDDATE(c, 1) WHERE a < 4 ORDER BY b DESC LIMIT 1;
-SHOW STATUS LIKE 'Spider_direct_update';
-Variable_name Value
-Spider_direct_update 6
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-2 b 2000-01-02 00:00:00
-3 x 2011-10-18 00:00:00
-4 d 2003-12-01 05:01:03
-5 c 2002-01-01 23:59:59
-delete by primary key with order and limit
-DELETE FROM ta_l2 WHERE a < 4 ORDER BY c LIMIT 1;
-SHOW STATUS LIKE 'Spider_direct_delete';
-Variable_name Value
-Spider_direct_delete 1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-3 x 2011-10-18 00:00:00
-4 d 2003-12-01 05:01:03
-5 c 2002-01-01 23:59:59
-delete by a column without index
-DELETE FROM ta_l2 WHERE b = 'c';
-SHOW STATUS LIKE 'Spider_direct_delete';
-Variable_name Value
-Spider_direct_delete 3
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-3 x 2011-10-18 00:00:00
-4 d 2003-12-01 05:01:03
-delete by primary key
-DELETE FROM ta_l2 WHERE a = 3;
-SHOW STATUS LIKE 'Spider_direct_delete';
-Variable_name Value
-Spider_direct_delete 4
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-02 10:21:39
-4 d 2003-12-01 05:01:03
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/function.result b/storage/spider/mysql-test/spider/handler/r/function.result
deleted file mode 100644
index c088a8a9541..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/function.result
+++ /dev/null
@@ -1,160 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-in()
-connection master_1;
-CREATE TABLE t1 (
-a VARCHAR(255),
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET3 MASTER_1_COMMENT_TEXT_PK1_1
-insert into t1 values ('1');
-insert into t1 select a + 1 from t1;
-insert into t1 select a + 2 from t1;
-insert into t1 select a + 4 from t1;
-insert into t1 select a + 8 from t1;
-insert into t1 select a + 16 from t1;
-insert into t1 select a + 32 from t1;
-insert into t1 select a + 64 from t1;
-insert into t1 select a + 128 from t1;
-insert into t1 select a + 256 from t1;
-insert into t1 select a + 512 from t1;
-flush tables;
-connection master_1;
-select a from t1 where a in ('15', '120');
-a
-120
-15
-
-date_sub()
-connection master_1;
-DROP TABLE IF EXISTS ta_l;
-CREATE TABLE ta_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-INSERT INTO ta_l (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-UPDATE ta_l SET c = DATE_SUB(c, INTERVAL 1 YEAR);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2007-08-01 10:21:39
-2 b 1999-01-01 00:00:00
-3 e 2006-06-04 20:03:11
-4 d 2002-11-30 05:01:03
-5 c 2000-12-31 23:59:59
-UPDATE ta_l SET c = DATE_ADD(c, INTERVAL 1 QUARTER);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2007-11-01 10:21:39
-2 b 1999-04-01 00:00:00
-3 e 2006-09-04 20:03:11
-4 d 2003-02-28 05:01:03
-5 c 2001-03-31 23:59:59
-UPDATE ta_l SET c = DATE_SUB(c, INTERVAL 1 MONTH);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2007-10-01 10:21:39
-2 b 1999-03-01 00:00:00
-3 e 2006-08-04 20:03:11
-4 d 2003-01-28 05:01:03
-5 c 2001-02-28 23:59:59
-UPDATE ta_l SET c = DATE_ADD(c, INTERVAL 1 WEEK);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2007-10-08 10:21:39
-2 b 1999-03-08 00:00:00
-3 e 2006-08-11 20:03:11
-4 d 2003-02-04 05:01:03
-5 c 2001-03-07 23:59:59
-UPDATE ta_l SET c = DATE_SUB(c, INTERVAL 1 DAY);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2007-10-07 10:21:39
-2 b 1999-03-07 00:00:00
-3 e 2006-08-10 20:03:11
-4 d 2003-02-03 05:01:03
-5 c 2001-03-06 23:59:59
-UPDATE ta_l SET c = DATE_ADD(c, INTERVAL 1 HOUR);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2007-10-07 11:21:39
-2 b 1999-03-07 01:00:00
-3 e 2006-08-10 21:03:11
-4 d 2003-02-03 06:01:03
-5 c 2001-03-07 00:59:59
-UPDATE ta_l SET c = DATE_SUB(c, INTERVAL 1 MINUTE);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2007-10-07 11:20:39
-2 b 1999-03-07 00:59:00
-3 e 2006-08-10 21:02:11
-4 d 2003-02-03 06:00:03
-5 c 2001-03-07 00:58:59
-UPDATE ta_l SET c = DATE_ADD(c, INTERVAL 1 SECOND);
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2007-10-07 11:20:40
-2 b 1999-03-07 00:59:01
-3 e 2006-08-10 21:02:12
-4 d 2003-02-03 06:00:04
-5 c 2001-03-07 00:59:00
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/ha.result b/storage/spider/mysql-test/spider/handler/r/ha.result
deleted file mode 100644
index 3c37c2d51f0..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/ha.result
+++ /dev/null
@@ -1,286 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-connection child2_3;
-DROP DATABASE IF EXISTS auto_test_remote3;
-CREATE DATABASE auto_test_remote3;
-USE auto_test_remote3;
-connection child3_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child3_2;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child3_3;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-create table test
-connection master_1;
-DROP TABLE IF EXISTS ta_l;
-CREATE TABLE ta_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_HA_2_1
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-INSERT INTO ta_l (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-
-select test
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-
-fail-over test
-connection master_1;
-SHOW STATUS LIKE 'Spider_mon_table_cache_version%';
-Variable_name Value
-Spider_mon_table_cache_version 0
-Spider_mon_table_cache_version_req 1
-INSERT INTO ta_l (a, b, c) VALUES
-(6, 'e', '2011-05-05 20:04:05');
-ERROR HY000: Table 'auto_test_remote2.ta_r3' get a problem
-SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
-ORDER BY db_name, table_name, link_id;
-db_name table_name link_id link_status
-auto_test_local ta_l 0 1
-auto_test_local ta_l 1 3
-SELECT db_name, table_name, link_id FROM mysql.spider_link_failed_log;
-db_name table_name link_id
-auto_test_local ta_l 1
-SHOW STATUS LIKE 'Spider_mon_table_cache_version%';
-Variable_name Value
-Spider_mon_table_cache_version 1
-Spider_mon_table_cache_version_req 1
-INSERT INTO ta_l (a, b, c) VALUES
-(6, 'e', '2011-05-05 20:04:05');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-6 e 2011-05-05 20:04:05
-
-recovery test
-connection master_1;
-ALTER TABLE ta_l
-CONNECTION='host "localhost", user "root", password "",
- msi "5", mkd "2",
- database "auto_test_remote auto_test_remote2", lst "0 2"';
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
-ORDER BY db_name, table_name, link_id;
-db_name table_name link_id link_status
-auto_test_local ta_l 0 1
-auto_test_local ta_l 1 2
-SELECT spider_copy_tables('ta_l', '0', '1');
-spider_copy_tables('ta_l', '0', '1')
-1
-connection master_1;
-ALTER TABLE ta_l
-CONNECTION='host "localhost", user "root", password "",
- msi "5", mkd "2",
- database "auto_test_remote auto_test_remote2", lst "0 1"';
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
-ORDER BY db_name, table_name, link_id;
-db_name table_name link_id link_status
-auto_test_local ta_l 0 1
-auto_test_local ta_l 1 1
-INSERT INTO ta_l (a, b, c) VALUES
-(8, 'g', '2011-05-05 21:33:30');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-6 e 2011-05-05 20:04:05
-8 g 2011-05-05 21:33:30
-DROP TABLE ta_l;
-connection master_1;
-SELECT spider_flush_table_mon_cache();
-spider_flush_table_mon_cache()
-1
-
-active standby test
-create table test
-connection master_1;
-DROP TABLE IF EXISTS ta_l;
-CREATE TABLE ta_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_HA_AS_2_1
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-INSERT INTO ta_l (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-
-select test
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-
-fail-over test
-connection master_1;
-SHOW STATUS LIKE 'Spider_mon_table_cache_version%';
-Variable_name Value
-Spider_mon_table_cache_version 1
-Spider_mon_table_cache_version_req 2
-INSERT INTO ta_l (a, b, c) VALUES
-(6, 'e', '2011-05-05 20:04:05');
-ERROR HY000: Table 'auto_test_remote.ta_r' get a problem
-SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
-ORDER BY db_name, table_name, link_id;
-db_name table_name link_id link_status
-auto_test_local ta_l 0 3
-auto_test_local ta_l 1 1
-SELECT db_name, table_name, link_id FROM mysql.spider_link_failed_log;
-db_name table_name link_id
-auto_test_local ta_l 1
-auto_test_local ta_l 0
-SHOW STATUS LIKE 'Spider_mon_table_cache_version%';
-Variable_name Value
-Spider_mon_table_cache_version 2
-Spider_mon_table_cache_version_req 2
-INSERT INTO ta_l (a, b, c) VALUES
-(6, 'e', '2011-05-05 20:04:05');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-6 e 2011-05-05 20:04:05
-
-recovery test
-connection master_1;
-ALTER TABLE ta_l
-CONNECTION='host "localhost", user "root", password "",
- msi "5", mkd "2", alc "1",
- database "auto_test_remote auto_test_remote2", lst "1 0"';
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
-ORDER BY db_name, table_name, link_id;
-db_name table_name link_id link_status
-auto_test_local ta_l 0 1
-auto_test_local ta_l 1 1
-INSERT INTO ta_l (a, b, c) VALUES
-(8, 'g', '2011-05-05 21:33:30');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-8 g 2011-05-05 21:33:30
-DROP TABLE ta_l;
-connection master_1;
-SELECT spider_flush_table_mon_cache();
-spider_flush_table_mon_cache()
-1
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-connection child2_3;
-DROP DATABASE IF EXISTS auto_test_remote3;
-connection child3_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child3_2;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child3_3;
-DROP DATABASE IF EXISTS auto_test_local;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/ha_part.result b/storage/spider/mysql-test/spider/handler/r/ha_part.result
deleted file mode 100644
index 39fa2655892..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/ha_part.result
+++ /dev/null
@@ -1,311 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-connection child2_3;
-DROP DATABASE IF EXISTS auto_test_remote3;
-CREATE DATABASE auto_test_remote3;
-USE auto_test_remote3;
-connection child3_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child3_2;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child3_3;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-create table with partition test
-connection master_1;
-DROP TABLE IF EXISTS ta_l2;
-CREATE TABLE ta_l2 (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_HA_P_2_1
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-INSERT INTO ta_l2 (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-
-select test
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-
-fail-over test
-connection master_1;
-SHOW STATUS LIKE 'Spider_mon_table_cache_version%';
-Variable_name Value
-Spider_mon_table_cache_version 0
-Spider_mon_table_cache_version_req 1
-INSERT INTO ta_l2 (a, b, c) VALUES
-(6, 'e', '2011-05-05 20:04:05');
-ERROR HY000: Table 'auto_test_remote3.ta_r4' get a problem
-SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
-ORDER BY db_name, table_name, link_id;
-db_name table_name link_id link_status
-auto_test_local ta_l2#P#pt1 0 1
-auto_test_local ta_l2#P#pt1 1 1
-auto_test_local ta_l2#P#pt2 0 1
-auto_test_local ta_l2#P#pt2 1 3
-SELECT db_name, table_name, link_id FROM mysql.spider_link_failed_log;
-db_name table_name link_id
-auto_test_local ta_l2#P#pt2 1
-SHOW STATUS LIKE 'Spider_mon_table_cache_version%';
-Variable_name Value
-Spider_mon_table_cache_version 1
-Spider_mon_table_cache_version_req 1
-INSERT INTO ta_l2 (a, b, c) VALUES
-(6, 'e', '2011-05-05 20:04:05');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-6 e 2011-05-05 20:04:05
-
-recovery test
-connection master_1;
-ALTER TABLE ta_l2
-PARTITION BY KEY(a) (
-PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
-PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "0 2"'
- );
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
-ORDER BY db_name, table_name, link_id;
-db_name table_name link_id link_status
-auto_test_local ta_l2#P#pt1 0 1
-auto_test_local ta_l2#P#pt1 1 1
-auto_test_local ta_l2#P#pt2 0 1
-auto_test_local ta_l2#P#pt2 1 2
-SELECT spider_copy_tables('ta_l2#P#pt2', '0', '1');
-spider_copy_tables('ta_l2#P#pt2', '0', '1')
-1
-connection master_1;
-ALTER TABLE ta_l2
-PARTITION BY KEY(a) (
-PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
-PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "0 1"'
- );
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
-ORDER BY db_name, table_name, link_id;
-db_name table_name link_id link_status
-auto_test_local ta_l2#P#pt1 0 1
-auto_test_local ta_l2#P#pt1 1 1
-auto_test_local ta_l2#P#pt2 0 1
-auto_test_local ta_l2#P#pt2 1 1
-INSERT INTO ta_l2 (a, b, c) VALUES
-(8, 'g', '2011-05-05 21:33:30'),
-(9, 'h', '2011-05-05 22:32:10');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-6 e 2011-05-05 20:04:05
-8 g 2011-05-05 21:33:30
-9 h 2011-05-05 22:32:10
-DROP TABLE ta_l2;
-
-create table with partition test
-connection master_1;
-DROP TABLE IF EXISTS ta_l2;
-CREATE TABLE ta_l2 (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_HA_AS_P_2_1
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-INSERT INTO ta_l2 (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-
-select test
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-
-fail-over test
-connection master_1;
-SHOW STATUS LIKE 'Spider_mon_table_cache_version%';
-Variable_name Value
-Spider_mon_table_cache_version 1
-Spider_mon_table_cache_version_req 1
-INSERT INTO ta_l2 (a, b, c) VALUES
-(6, 'e', '2011-05-05 20:04:05');
-ERROR HY000: Table 'auto_test_remote.ta_r2' get a problem
-SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
-ORDER BY db_name, table_name, link_id;
-db_name table_name link_id link_status
-auto_test_local ta_l2#P#pt1 0 1
-auto_test_local ta_l2#P#pt1 1 1
-auto_test_local ta_l2#P#pt2 0 3
-auto_test_local ta_l2#P#pt2 1 1
-SELECT db_name, table_name, link_id FROM mysql.spider_link_failed_log;
-db_name table_name link_id
-auto_test_local ta_l2#P#pt2 1
-auto_test_local ta_l2#P#pt2 0
-SHOW STATUS LIKE 'Spider_mon_table_cache_version%';
-Variable_name Value
-Spider_mon_table_cache_version 1
-Spider_mon_table_cache_version_req 1
-INSERT INTO ta_l2 (a, b, c) VALUES
-(6, 'e', '2011-05-05 20:04:05');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-3 e 2007-06-04 20:03:11
-5 c 2001-12-31 23:59:59
-6 e 2011-05-05 20:04:05
-
-recovery test
-connection master_1;
-ALTER TABLE ta_l2
-PARTITION BY KEY(a) (
-PARTITION pt1 COMMENT='srv "s_2_1 s_2_2", tbl "ta_r ta_r3",
- priority "1000"',
-PARTITION pt2 COMMENT='srv "s_2_1 s_2_3", tbl "ta_r2 ta_r4",
- priority "1000001", lst "1 0"'
- );
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-SELECT db_name, table_name, link_id, link_status FROM mysql.spider_tables
-ORDER BY db_name, table_name, link_id;
-db_name table_name link_id link_status
-auto_test_local ta_l2#P#pt1 0 1
-auto_test_local ta_l2#P#pt1 1 1
-auto_test_local ta_l2#P#pt2 0 1
-auto_test_local ta_l2#P#pt2 1 1
-INSERT INTO ta_l2 (a, b, c) VALUES
-(8, 'g', '2011-05-05 21:33:30'),
-(9, 'h', '2011-05-05 22:32:10');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-3 e 2007-06-04 20:03:11
-5 c 2001-12-31 23:59:59
-8 g 2011-05-05 21:33:30
-9 h 2011-05-05 22:32:10
-DROP TABLE ta_l2;
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-connection child2_3;
-DROP DATABASE IF EXISTS auto_test_remote3;
-connection child3_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child3_2;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child3_3;
-DROP DATABASE IF EXISTS auto_test_local;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/spider3_fixes.result b/storage/spider/mysql-test/spider/handler/r/spider3_fixes.result
deleted file mode 100644
index abe543fe193..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/spider3_fixes.result
+++ /dev/null
@@ -1,245 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-for slave1_1
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection slave1_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-3.1
-auto_increment
-connection master_1;
-SET @original_spider_auto_increment_mode = @@SESSION.spider_auto_increment_mode;
-SET SESSION spider_auto_increment_mode = -1;
-Warnings:
-Warning 138 The option value -1 (use table value) is deprecated and will be removed in a future release
-connection slave1_1;
-connection master_1;
-DROP TABLE IF EXISTS t1, t2;
-CREATE TABLE t1 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_1
-CREATE TABLE t2 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_1
-MASTER_1_AUTO_INCREMENT_INCREMENT2
-MASTER_1_AUTO_INCREMENT_OFFSET2
-spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 4', '',
-'srv "s_2_1"')
-1
-spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 4', '',
-'srv "s_2_2"')
-1
-spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 2', '',
-'srv "s_2_1"')
-1
-spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 3', '',
-'srv "s_2_2"')
-1
-CREATE TABLE t1 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_1
-CREATE TABLE t2 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_1
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-2
-SELECT MAX(id) FROM t1;
-MAX(id)
-2
-INSERT INTO t2 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-6
-SELECT MAX(id) FROM t2;
-MAX(id)
-6
-MASTER_1_AUTO_INCREMENT_OFFSET3
-INSERT INTO t1 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-10
-SELECT MAX(id) FROM t1;
-MAX(id)
-10
-MASTER_1_AUTO_INCREMENT_OFFSET4
-INSERT INTO t2 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-14
-SELECT MAX(id) FROM t2;
-MAX(id)
-14
-MASTER_1_AUTO_INCREMENT_OFFSET3
-INSERT INTO t1 () VALUES (),(),(),();
-Warnings:
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-18
-SELECT id FROM t1 ORDER BY id;
-id
-2
-6
-10
-14
-18
-22
-26
-30
-MASTER_1_AUTO_INCREMENT_OFFSET4
-INSERT INTO t2 () VALUES (),(),(),();
-Warnings:
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-34
-SELECT id FROM t2 ORDER BY id;
-id
-2
-6
-10
-14
-18
-22
-26
-30
-34
-38
-42
-46
-TRUNCATE TABLE t1;
-TRUNCATE TABLE t2;
-INSERT INTO t1 () VALUES (),(),(),();
-Warnings:
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-2
-SELECT id FROM t1 ORDER BY id;
-id
-2
-6
-10
-14
-INSERT INTO t2 () VALUES (),(),(),();
-Warnings:
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-18
-SELECT id FROM t2 ORDER BY id;
-id
-2
-6
-10
-14
-18
-22
-26
-30
-SET INSERT_ID=5000;
-MASTER_1_AUTO_INCREMENT_OFFSET3
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-34
-SELECT MAX(id) FROM t1;
-MAX(id)
-34
-MASTER_1_AUTO_INCREMENT_OFFSET4
-INSERT INTO t2 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-38
-SELECT MAX(id) FROM t2;
-MAX(id)
-38
-INSERT INTO t1 (id) VALUES (10000);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-42
-SELECT MAX(id) FROM t1;
-MAX(id)
-42
-INSERT INTO t2 (id) VALUES (1000);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-46
-SELECT MAX(id) FROM t2;
-MAX(id)
-46
-SET SESSION spider_auto_increment_mode = @original_spider_auto_increment_mode;
-connection slave1_1;
-SELECT id FROM t1 ORDER BY id;
-id
-2
-34
-777
-1554
-2331
-10000
-connection master_1;
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection slave1_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for slave1_1
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/spider3_fixes_part.result b/storage/spider/mysql-test/spider/handler/r/spider3_fixes_part.result
deleted file mode 100644
index 6c3a1802f1d..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/spider3_fixes_part.result
+++ /dev/null
@@ -1,243 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-for slave1_1
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection slave1_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-auto_increment with partition
-connection master_1;
-SET @original_spider_auto_increment_mode = @@SESSION.spider_auto_increment_mode;
-SET SESSION spider_auto_increment_mode = -1;
-Warnings:
-Warning 138 The option value -1 (use table value) is deprecated and will be removed in a future release
-connection slave1_1;
-connection master_1;
-DROP TABLE IF EXISTS t1, t2;
-CREATE TABLE t1 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_P_1
-CREATE TABLE t2 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_P_1
-MASTER_1_AUTO_INCREMENT_INCREMENT2
-MASTER_1_AUTO_INCREMENT_OFFSET2
-spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 4', '',
-'srv "s_2_1"')
-1
-spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 4', '',
-'srv "s_2_2"')
-1
-spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 2', '',
-'srv "s_2_1"')
-1
-spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 3', '',
-'srv "s_2_2"')
-1
-CREATE TABLE t1 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_P_1
-CREATE TABLE t2 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_P_1
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-3
-SELECT MAX(id) FROM t1;
-MAX(id)
-3
-INSERT INTO t2 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-7
-SELECT MAX(id) FROM t2;
-MAX(id)
-7
-MASTER_1_AUTO_INCREMENT_OFFSET3
-INSERT INTO t1 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-2
-SELECT MAX(id) FROM t1;
-MAX(id)
-7
-MASTER_1_AUTO_INCREMENT_OFFSET4
-INSERT INTO t2 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-6
-SELECT MAX(id) FROM t2;
-MAX(id)
-7
-MASTER_1_AUTO_INCREMENT_OFFSET3
-INSERT INTO t1 () VALUES (),(),(),();
-Warnings:
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-10
-SELECT id FROM t1 ORDER BY id;
-id
-2
-3
-6
-7
-10
-11
-14
-15
-MASTER_1_AUTO_INCREMENT_OFFSET4
-INSERT INTO t2 () VALUES (),(),(),();
-Warnings:
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-18
-SELECT id FROM t2 ORDER BY id;
-id
-2
-3
-6
-7
-10
-11
-14
-15
-18
-19
-22
-23
-TRUNCATE TABLE t1;
-TRUNCATE TABLE t2;
-INSERT INTO t1 () VALUES (),(),(),();
-Warnings:
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-2
-SELECT id FROM t1 ORDER BY id;
-id
-2
-3
-6
-7
-INSERT INTO t2 () VALUES (),(),(),();
-Warnings:
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-10
-SELECT id FROM t2 ORDER BY id;
-id
-2
-3
-6
-7
-10
-11
-14
-15
-SET INSERT_ID=5000;
-MASTER_1_AUTO_INCREMENT_OFFSET3
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-18
-SELECT MAX(id) FROM t1;
-MAX(id)
-18
-MASTER_1_AUTO_INCREMENT_OFFSET4
-INSERT INTO t2 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-19
-SELECT MAX(id) FROM t2;
-MAX(id)
-19
-INSERT INTO t1 (id) VALUES (10000);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-22
-SELECT MAX(id) FROM t1;
-MAX(id)
-22
-INSERT INTO t2 (id) VALUES (1000);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-26
-SELECT MAX(id) FROM t2;
-MAX(id)
-26
-SET SESSION spider_auto_increment_mode = @original_spider_auto_increment_mode;
-connection slave1_1;
-SELECT id FROM t1 ORDER BY id;
-id
-2
-18
-777
-1554
-2331
-10000
-connection master_1;
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection slave1_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for slave1_1
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/spider_fixes.result b/storage/spider/mysql-test/spider/handler/r/spider_fixes.result
deleted file mode 100644
index aa7d2ea40c1..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/spider_fixes.result
+++ /dev/null
@@ -1,640 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-for slave1_1
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection slave1_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-create table and insert
-connection master_1;
-DROP TABLE IF EXISTS tb_l;
-CREATE TABLE tb_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2
-INSERT INTO tb_l (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-DROP TABLE IF EXISTS ta_l;
-CREATE TABLE ta_l (
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-INSERT INTO ta_l SELECT a, b, c FROM tb_l;
-
-2.13
-select table with "order by desc" and "<"
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-WHERE a < 5 ORDER BY a DESC LIMIT 3;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-4 d 2003-11-30 05:01:03
-3 e 2007-06-04 20:03:11
-2 b 2000-01-01 00:00:00
-
-select table with "order by desc" and "<="
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-WHERE a <= 5 ORDER BY a DESC LIMIT 3;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-5 c 2001-12-31 23:59:59
-4 d 2003-11-30 05:01:03
-3 e 2007-06-04 20:03:11
-
-2.14
-update table with range scan and split_read
-connection master_1;
-UPDATE ta_l SET c = '2000-02-02 00:00:00' WHERE a > 1;
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-02-02 00:00:00
-3 e 2000-02-02 00:00:00
-4 d 2000-02-02 00:00:00
-5 c 2000-02-02 00:00:00
-
-2.15
-select table with range scan
-TRUNCATE TABLE ta_l;
-DROP TABLE IF EXISTS ta_l;
-connection master_1;
-CREATE TABLE ta_l (
-a int(11) NOT NULL DEFAULT '0',
-b char(1) DEFAULT NULL,
-c datetime DEFAULT NULL,
-PRIMARY KEY (a, b, c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT5_2_1
-INSERT INTO ta_l SELECT a, b, c FROM tb_l;
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b >= 'b'
-AND c = '2003-11-30 05:01:03';
-a b c
-4 d 2003-11-30 05:01:03
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b > 'b'
-AND c = '2003-11-30 05:01:03';
-a b c
-4 d 2003-11-30 05:01:03
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a >= 4 AND b = 'd'
-AND c = '2003-11-30 05:01:03';
-a b c
-4 d 2003-11-30 05:01:03
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a > 4 AND b = 'c'
-AND c = '2001-12-31 23:59:59';
-a b c
-5 c 2001-12-31 23:59:59
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b <= 'd'
-AND c = '2003-11-30 05:01:03';
-a b c
-4 d 2003-11-30 05:01:03
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b < 'e'
-AND c = '2003-11-30 05:01:03';
-a b c
-4 d 2003-11-30 05:01:03
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a <= 4 AND b = 'b'
-AND c = '2000-01-01 00:00:00';
-a b c
-2 b 2000-01-01 00:00:00
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a < 4 AND b = 'b'
-AND c = '2000-01-01 00:00:00';
-a b c
-2 b 2000-01-01 00:00:00
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b >= 'b'
-AND b <= 'd' AND c = '2003-11-30 05:01:03';
-a b c
-4 d 2003-11-30 05:01:03
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b > 'b'
-AND b < 'e' AND c = '2003-11-30 05:01:03';
-a b c
-4 d 2003-11-30 05:01:03
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a <= 4 AND a >= 1
-AND b >= 'b' AND c = '2003-11-30 05:01:03';
-a b c
-4 d 2003-11-30 05:01:03
-connection master_1;
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a < 4 AND a > 1
-AND b >= 'b' AND c = '2000-01-01 00:00:00';
-a b c
-2 b 2000-01-01 00:00:00
-
-2.16
-auto_increment insert with trigger
-connection master_1;
-CREATE TABLE ta_l_auto_inc (
-a INT AUTO_INCREMENT,
-b CHAR(1) DEFAULT 'c',
-c DATETIME DEFAULT '1999-10-10 10:10:10',
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT3_2_1
-CREATE TABLE tc_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2
-CREATE TRIGGER ins_ta_l_auto_inc AFTER INSERT ON ta_l_auto_inc FOR EACH ROW BEGIN INSERT INTO tc_l (a, b, c) VALUES (NEW.a, NEW.b, NEW.c); END;;
-connection master_1;
-INSERT INTO ta_l_auto_inc (a, b, c) VALUES
-(NULL, 's', '2008-12-31 20:59:59');
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM tc_l ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 s 2008-12-31 20:59:59
-
-2.17
-engine-condition-pushdown with "or" and joining
-connection master_1;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l WHERE a = 1 OR a IN (SELECT a FROM tb_l);
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-1 a 2008-08-01 10:21:39
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-
-2.23
-index merge
-connection master_1;
-CREATE TABLE ta_l_int (
-a INT AUTO_INCREMENT,
-b INT DEFAULT 10,
-c INT DEFAULT 11,
-PRIMARY KEY(a),
-KEY idx1(b),
-KEY idx2(c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT4_2_1
-INSERT INTO ta_l_int (a, b, c) VALUES (1, 2, 3);
-INSERT INTO ta_l_int (a, b, c) SELECT a + 1, b + 1, c + 1 FROM ta_l_int;
-INSERT INTO ta_l_int (a, b, c) SELECT a + 2, b + 2, c + 2 FROM ta_l_int;
-INSERT INTO ta_l_int (a, b, c) SELECT a + 4, b + 4, c + 4 FROM ta_l_int;
-INSERT INTO ta_l_int (a, b, c) SELECT a + 8, b + 8, c + 8 FROM ta_l_int;
-connection master_1;
-SELECT a, b, c FROM ta_l_int force index(primary, idx1, idx2)
-WHERE a = 5 OR b = 5 OR c = 5 ORDER BY a;
-a b c
-3 4 5
-4 5 6
-5 6 7
-
-2.24
-index scan update without PK
-connection master_1;
-DROP TABLE IF EXISTS ta_l_int;
-CREATE TABLE ta_l_int (
-a INT NOT NULL,
-b INT DEFAULT 10,
-c INT DEFAULT 11,
-KEY idx1(b),
-KEY idx2(c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT4_2_1
-SELECT a, b, c FROM ta_l_int ORDER BY a;
-a b c
-1 2 3
-2 3 4
-3 4 5
-4 5 6
-5 6 7
-6 7 8
-7 8 9
-8 9 10
-9 10 11
-10 11 12
-11 12 13
-12 13 14
-13 14 15
-14 15 16
-15 16 17
-16 17 18
-INSERT INTO ta_l_int (a, b, c) VALUES (0, 2, 3);
-INSERT INTO ta_l_int (a, b, c) VALUES (18, 2, 3);
-connection master_1;
-UPDATE ta_l_int SET c = 4 WHERE b = 2;
-connection master_1;
-SELECT a, b, c FROM ta_l_int ORDER BY a;
-a b c
-1 2 4
-2 3 4
-3 4 5
-4 5 6
-5 6 7
-6 7 8
-7 8 9
-8 9 10
-9 10 11
-10 11 12
-11 12 13
-12 13 14
-13 14 15
-14 15 16
-15 16 17
-16 17 18
-17 2 4
-18 2 4
-
-2.25
-direct order limit
-connection master_1;
-SHOW STATUS LIKE 'Spider_direct_order_limit';
-Variable_name Value
-Spider_direct_order_limit 2
-SELECT a, b, c FROM ta_l_int ORDER BY a LIMIT 3;
-a b c
-1 2 4
-2 3 4
-3 4 5
-SHOW STATUS LIKE 'Spider_direct_order_limit';
-Variable_name Value
-Spider_direct_order_limit 3
-
-2.26
-lock tables
-connection master_1;
-DROP TABLE IF EXISTS t1;
-DROP TABLE IF EXISTS t2;
-CREATE TABLE t1 (
-id int(11) NOT NULL,
-PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_LOCK1
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-CREATE TABLE t2 (
-id int(11) NOT NULL,
-PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_LOCK2
-Warnings:
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-Warning 138 The high availability feature of Spider has been deprecated and will be removed in a future release
-LOCK TABLES t1 READ, t2 READ;
-UNLOCK TABLES;
-
-auto_increment
-connection master_1;
-SET @original_spider_auto_increment_mode = @@SESSION.spider_auto_increment_mode;
-SET SESSION spider_auto_increment_mode = -1;
-Warnings:
-Warning 138 The option value -1 (use table value) is deprecated and will be removed in a future release
-connection slave1_1;
-connection master_1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_1
-MASTER_1_AUTO_INCREMENT_INCREMENT2
-MASTER_1_AUTO_INCREMENT_OFFSET2
-spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 4', '',
-'srv "s_2_1"')
-1
-spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 4', '',
-'srv "s_2_2"')
-1
-spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 2', '',
-'srv "s_2_1"')
-1
-spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 3', '',
-'srv "s_2_2"')
-1
-CREATE TABLE t1 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_1
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-2
-SELECT MAX(id) FROM t1;
-MAX(id)
-2
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-6
-SELECT MAX(id) FROM t1;
-MAX(id)
-6
-INSERT INTO t1 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-10
-SELECT MAX(id) FROM t1;
-MAX(id)
-10
-INSERT INTO t1 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-14
-SELECT MAX(id) FROM t1;
-MAX(id)
-14
-INSERT INTO t1 () VALUES (),(),(),();
-Warnings:
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-18
-SELECT id FROM t1 ORDER BY id;
-id
-2
-6
-10
-14
-18
-22
-26
-30
-SET INSERT_ID=5000;
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-34
-SELECT MAX(id) FROM t1;
-MAX(id)
-34
-INSERT INTO t1 (id) VALUES (10000);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-38
-SELECT MAX(id) FROM t1;
-MAX(id)
-38
-INSERT INTO t1 (id) VALUES (1000);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-42
-SELECT MAX(id) FROM t1;
-MAX(id)
-42
-SET SESSION spider_auto_increment_mode = @original_spider_auto_increment_mode;
-connection slave1_1;
-SELECT id FROM t1 ORDER BY id;
-id
-2
-6
-10
-14
-18
-34
-777
-1000
-1554
-2331
-10000
-connection master_1;
-
-read only
-connection master_1;
-SET @original_spider_read_only_mode = @@SESSION.spider_read_only_mode;
-SET SESSION spider_read_only_mode = -1;
-Warnings:
-Warning 138 The option value -1 (use table value) is deprecated and will be removed in a future release
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-id int(11) NOT NULL,
-PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_READONLY1_1
-SELECT id FROM t1 ORDER BY id;
-id
-2
-6
-10
-14
-18
-22
-26
-30
-34
-38
-42
-INSERT INTO t1 (id) VALUES (1);
-ERROR HY000: Table 'auto_test_local.t1' is read only
-UPDATE t1 SET id = 4 WHERE id = 2;
-ERROR HY000: Table 'auto_test_local.t1' is read only
-DELETE FROM t1 WHERE id = 2;
-ERROR HY000: Table 'auto_test_local.t1' is read only
-DELETE FROM t1;
-ERROR HY000: Table 'auto_test_local.t1' is read only
-TRUNCATE t1;
-ERROR HY000: Table 'auto_test_local.t1' is read only
-SET SESSION spider_read_only_mode = @original_spider_read_only_mode;
-
-2.27
-error mode
-connection master_1;
-SET @original_spider_error_read_mode = @@SESSION.spider_error_read_mode;
-SET @original_spider_error_write_mode = @@SESSION.spider_error_write_mode;
-SET SESSION spider_error_read_mode = -1;
-Warnings:
-Warning 138 The option value -1 (use table value) is deprecated and will be removed in a future release
-SET SESSION spider_error_write_mode = -1;
-Warnings:
-Warning 138 The option value -1 (use table value) is deprecated and will be removed in a future release
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-id int(11) NOT NULL,
-PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_ERROR_MODE1_1
-SELECT id FROM t1 ORDER BY id;
-id
-Warnings:
-Error 12702 Remote table 'auto_test_remote.ter1_1' is not found
-Error 1146 Table 'auto_test_remote.ter1_1' doesn't exist
-INSERT INTO t1 (id) VALUES (1);
-Warnings:
-Error 1146 Table 'auto_test_remote.ter1_1' doesn't exist
-DELETE FROM t1;
-Warnings:
-Error 12702 Remote table 'auto_test_remote.ter1_1' is not found
-Error 12702 Remote table 'auto_test_remote.ter1_1' is not found
-Error 1146 Table 'auto_test_remote.ter1_1' doesn't exist
-TRUNCATE t1;
-Warnings:
-Error 1146 Table 'auto_test_remote.ter1_1' doesn't exist
-SET SESSION spider_error_read_mode = @original_spider_error_read_mode;
-SET SESSION spider_error_write_mode = @original_spider_error_write_mode;
-
-3.0
-is null
-connection master_1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-a VARCHAR(255),
-b VARCHAR(255),
-c VARCHAR(255),
-KEY idx1(a,b),
-KEY idx2(b),
-PRIMARY KEY(c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_TEXT_KEY1_1
-insert into t1 values (null, null, '2048');
-insert into t1 values ('1', '1', '1');
-insert into t1 select a + 1, b + 1, c + 1 from t1;
-insert into t1 select a + 2, b + 2, c + 2 from t1;
-insert into t1 select a + 4, b + 4, c + 4 from t1;
-insert into t1 select a + 8, b + 8, c + 8 from t1;
-insert into t1 select a + 16, b + 16, c + 16 from t1;
-insert into t1 select a + 32, b + 32, c + 32 from t1;
-insert into t1 select a + 64, b + 64, c + 64 from t1;
-insert into t1 select a + 128, b + 128, c + 128 from t1;
-insert into t1 select a + 256, b + 256, c + 256 from t1;
-insert into t1 select a + 512, b + 512, c + 512 from t1;
-flush tables;
-connection master_1;
-select a from t1 where a is null order by a limit 30;
-a
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-select b from t1 where b is null order by b limit 30;
-b
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-NULL
-
-direct_order_limit
-connection master_1;
-TRUNCATE TABLE t1;
-insert into t1 values ('1', '1', '1');
-insert into t1 select a + 1, b + 1, c + 1 from t1;
-insert into t1 select a + 2, b + 2, c + 2 from t1;
-insert into t1 select a + 4, b + 4, c + 4 from t1;
-insert into t1 select a + 8, b + 8, c + 8 from t1;
-insert into t1 select a + 16, b + 16, c + 16 from t1;
-insert into t1 select a, b + 32, c + 32 from t1;
-insert into t1 select a, b + 64, c + 64 from t1;
-insert into t1 select a, b + 128, c + 128 from t1;
-flush tables;
-connection master_1;
-select a, b, c from t1 where a = '10' and b <> '100' order by c desc limit 5;
-a b c
-10 74 74
-10 42 42
-10 234 234
-10 202 202
-10 170 170
-select a, c from t1 where a = '10' order by b desc limit 5;
-a c
-10 74
-10 42
-10 234
-10 202
-10 170
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection slave1_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for slave1_1
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/spider_fixes_part.result b/storage/spider/mysql-test/spider/handler/r/spider_fixes_part.result
deleted file mode 100644
index 249f39520c2..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/spider_fixes_part.result
+++ /dev/null
@@ -1,246 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-for slave1_1
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection slave1_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-connection master_1;
-DROP TABLE IF EXISTS tb_l;
-CREATE TABLE tb_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2
-INSERT INTO tb_l (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-
-2.17
-partition with sort
-connection master_1;
-CREATE TABLE ta_l2 (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_COMMENT2_P_2_1
-INSERT INTO ta_l2 SELECT a, b, c FROM tb_l;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 WHERE a > 1
-ORDER BY a;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-2 b 2000-01-01 00:00:00
-3 e 2007-06-04 20:03:11
-4 d 2003-11-30 05:01:03
-5 c 2001-12-31 23:59:59
-
-2.23
-partition update with moving partition
-connection master_1;
-DROP TABLE IF EXISTS ta_l2;
-connection master_1;
-CREATE TABLE ta_l2 (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_COMMENT2_P_2_1
-INSERT INTO ta_l2 (a, b, c) VALUES (3, 'B', '2010-09-26 00:00:00');
-UPDATE ta_l2 SET a = 4 WHERE a = 3;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2;
-a b date_format(c, '%Y-%m-%d %H:%i:%s')
-4 B 2010-09-26 00:00:00
-index merge with partition
-connection master_1;
-DROP TABLE IF EXISTS ta_l_int;
-connection master_1;
-CREATE TABLE ta_l_int (
-a INT AUTO_INCREMENT,
-b INT DEFAULT 10,
-c INT DEFAULT 11,
-PRIMARY KEY(a),
-KEY idx1(b),
-KEY idx2(c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT3_P_2_1
-INSERT INTO ta_l_int (a, b, c) VALUES (1, 2, 3);
-INSERT INTO ta_l_int (a, b, c) SELECT a + 1, b + 1, c + 1 FROM ta_l_int;
-INSERT INTO ta_l_int (a, b, c) SELECT a + 2, b + 2, c + 2 FROM ta_l_int;
-INSERT INTO ta_l_int (a, b, c) SELECT a + 4, b + 4, c + 4 FROM ta_l_int;
-INSERT INTO ta_l_int (a, b, c) SELECT a + 8, b + 8, c + 8 FROM ta_l_int;
-connection master_1;
-SELECT a, b, c FROM ta_l_int force index(primary, idx1, idx2)
-WHERE a = 5 OR b = 5 OR c = 5 ORDER BY a;
-a b c
-3 4 5
-4 5 6
-5 6 7
-
-2.26
-auto_increment with partition
-connection master_1;
-SET @original_spider_auto_increment_mode = @@SESSION.spider_auto_increment_mode;
-SET SESSION spider_auto_increment_mode = -1;
-Warnings:
-Warning 138 The option value -1 (use table value) is deprecated and will be removed in a future release
-connection slave1_1;
-connection master_1;
-DROP TABLE IF EXISTS t1;
-CREATE TABLE t1 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_P_1
-MASTER_1_AUTO_INCREMENT_INCREMENT2
-MASTER_1_AUTO_INCREMENT_OFFSET2
-spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 4', '',
-'srv "s_2_1"')
-1
-spider_direct_sql('SET SESSION AUTO_INCREMENT_INCREMENT = 4', '',
-'srv "s_2_2"')
-1
-spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 2', '',
-'srv "s_2_1"')
-1
-spider_bg_direct_sql('SET SESSION AUTO_INCREMENT_OFFSET = 3', '',
-'srv "s_2_2"')
-1
-CREATE TABLE t1 (
-id int(11) NOT NULL AUTO_INCREMENT,
-PRIMARY KEY (id)
-) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_P_1
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-3
-SELECT MAX(id) FROM t1;
-MAX(id)
-3
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-2
-SELECT MAX(id) FROM t1;
-MAX(id)
-3
-INSERT INTO t1 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-7
-SELECT MAX(id) FROM t1;
-MAX(id)
-7
-INSERT INTO t1 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-6
-SELECT MAX(id) FROM t1;
-MAX(id)
-7
-INSERT INTO t1 () VALUES (),(),(),();
-Warnings:
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-Note 12520 Binlog's auto-inc value is probably different from linked table's auto-inc value
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-10
-SELECT id FROM t1 ORDER BY id;
-id
-2
-3
-6
-7
-10
-11
-14
-15
-SET INSERT_ID=5000;
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-18
-SELECT MAX(id) FROM t1;
-MAX(id)
-18
-INSERT INTO t1 (id) VALUES (10000);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-22
-SELECT MAX(id) FROM t1;
-MAX(id)
-22
-INSERT INTO t1 (id) VALUES (1000);
-SELECT LAST_INSERT_ID();
-LAST_INSERT_ID()
-26
-SELECT MAX(id) FROM t1;
-MAX(id)
-26
-SET SESSION spider_auto_increment_mode = @original_spider_auto_increment_mode;
-connection slave1_1;
-SELECT id FROM t1 ORDER BY id;
-id
-2
-3
-6
-7
-10
-18
-777
-1000
-1554
-2331
-10000
-connection master_1;
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection slave1_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for slave1_1
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/r/vp_fixes.result b/storage/spider/mysql-test/spider/handler/r/vp_fixes.result
deleted file mode 100644
index cc0e4105d61..00000000000
--- a/storage/spider/mysql-test/spider/handler/r/vp_fixes.result
+++ /dev/null
@@ -1,93 +0,0 @@
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-drop and create databases
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-CREATE DATABASE auto_test_remote;
-USE auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-CREATE DATABASE auto_test_remote2;
-USE auto_test_remote2;
-
-test select 1
-connection master_1;
-SELECT 1;
-1
-1
-
-create table and insert
-connection master_1;
-DROP TABLE IF EXISTS tb_l;
-CREATE TABLE tb_l (
-a INT,
-b CHAR(1),
-c DATETIME,
-PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2
-INSERT INTO tb_l (a, b, c) VALUES
-(1, 'a', '2008-08-01 10:21:39'),
-(2, 'b', '2000-01-01 00:00:00'),
-(3, 'e', '2007-06-04 20:03:11'),
-(4, 'd', '2003-11-30 05:01:03'),
-(5, 'c', '2001-12-31 23:59:59');
-DROP TABLE IF EXISTS ta_l;
-CREATE TABLE ta_l (
-PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-INSERT INTO ta_l SELECT a, b, c FROM tb_l;
-
-0.9
-create different primary key table
-connection master_1;
-CREATE TABLE ta_l_int (
-a INT DEFAULT 10,
-b INT AUTO_INCREMENT,
-c INT DEFAULT 11,
-PRIMARY KEY(b)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT4_2_1
-connection master_1;
-INSERT INTO ta_l_int (a, b, c) VALUES (2, NULL, 3);
-create un-correspond primary key table
-connection master_1;
-DROP TABLE IF EXISTS ta_l_int;
-connection master_1;
-CREATE TABLE ta_l_int (
-a INT DEFAULT 10,
-b INT DEFAULT 12,
-c INT DEFAULT 11,
-PRIMARY KEY(c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT4_2_1
-connection master_1;
-INSERT INTO ta_l_int (a, b, c) VALUES (2, NULL, 3);
-
-deinit
-connection master_1;
-DROP DATABASE IF EXISTS auto_test_local;
-connection child2_1;
-DROP DATABASE IF EXISTS auto_test_remote;
-connection child2_2;
-DROP DATABASE IF EXISTS auto_test_remote2;
-for master_1
-for child2
-child2_1
-child2_2
-child2_3
-for child3
-child3_1
-child3_2
-child3_3
-
-end of test
diff --git a/storage/spider/mysql-test/spider/handler/suite.opt b/storage/spider/mysql-test/spider/handler/suite.opt
deleted file mode 100644
index 48457b17309..00000000000
--- a/storage/spider/mysql-test/spider/handler/suite.opt
+++ /dev/null
@@ -1 +0,0 @@
---loose-innodb
diff --git a/storage/spider/mysql-test/spider/handler/suite.pm b/storage/spider/mysql-test/spider/handler/suite.pm
deleted file mode 100644
index af267d047a4..00000000000
--- a/storage/spider/mysql-test/spider/handler/suite.pm
+++ /dev/null
@@ -1,10 +0,0 @@
-package My::Suite::Spider;
-
-@ISA = qw(My::Suite);
-
-return "No Spider engine" unless $ENV{HA_SPIDER_SO};
-return "Not run for embedded server" if $::opt_embedded_server;
-
-sub is_default { 1 }
-
-bless { };
diff --git a/storage/spider/mysql-test/spider/handler/t/basic_sql.test b/storage/spider/mysql-test/spider/handler/t/basic_sql.test
deleted file mode 100644
index 9cf4ce99dc3..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/basic_sql.test
+++ /dev/null
@@ -1,2699 +0,0 @@
-# This test tests by executing basic SQL
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---enable_result_log
---enable_query_log
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo create table select test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES;
- echo CHILD2_1_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS tb_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2;
-eval CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE2 $MASTER_1_CHARSET2;
---enable_query_log
-INSERT INTO tb_l (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l (
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-SELECT a, b, c FROM tb_l;
-if ($MASTER_1_MERGE)
-{
- --error ER_WRONG_OBJECT
- eval CREATE TABLE ta_l (
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1
- SELECT a, b, c FROM tb_l;
- eval CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1;
- INSERT INTO ta_l SELECT a, b, c FROM tb_l;
-}
-if (!$MASTER_1_MERGE)
-{
- eval CREATE TABLE ta_l (
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1
- SELECT a, b, c FROM tb_l;
-}
---enable_query_log
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo create table ignore select test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
-DROP TABLE IF EXISTS tb_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2;
-eval CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE2 $MASTER_1_CHARSET2;
---enable_query_log
-INSERT INTO tb_l (a, b, c) VALUES
- (1, 'f', '2008-07-01 10:21:39'),
- (2, 'g', '2000-02-01 00:00:00'),
- (3, 'j', '2007-05-04 20:03:11'),
- (4, 'i', '2003-10-30 05:01:03'),
- (5, 'h', '2001-10-31 23:59:59');
---disable_query_log
-echo CREATE TABLE ta_l (
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-IGNORE SELECT a, b, c FROM tb_l;
-if ($MASTER_1_MERGE)
-{
- --error ER_WRONG_OBJECT
- eval CREATE TABLE ta_l (
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1
- IGNORE SELECT a, b, c FROM tb_l;
- eval CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1;
- INSERT IGNORE INTO ta_l SELECT a, b, c FROM tb_l;
-}
-if (!$MASTER_1_MERGE)
-{
- eval CREATE TABLE ta_l (
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1
- IGNORE SELECT a, b, c FROM tb_l;
-}
---enable_query_log
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo create table ignore select test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l (
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1
-REPLACE SELECT a, b, c FROM tb_l;
-if ($MASTER_1_MERGE)
-{
- --error ER_WRONG_OBJECT
- eval CREATE TABLE ta_l (
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1
- REPLACE SELECT a, b, c FROM tb_l;
- eval CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1;
- REPLACE INTO ta_l SELECT a, b, c FROM tb_l;
-}
-if (!$MASTER_1_MERGE)
-{
- eval CREATE TABLE ta_l (
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1
- REPLACE SELECT a, b, c FROM tb_l;
-}
---enable_query_log
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%replace %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo create no index table
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES3;
- echo CHILD2_1_CREATE_TABLES3;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES3;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES3;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS ta_l_no_idx;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l_no_idx
-MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT2_2_1
-SELECT a, b, c FROM tb_l;
-if ($MASTER_1_NEEDPK)
-{
- --error ER_REQUIRES_PRIMARY_KEY
- eval CREATE TABLE ta_l_no_idx
- $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT2_2_1
- SELECT a, b, c FROM tb_l;
- eval CREATE TABLE ta_l_no_idx (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT2_2_1;
- INSERT INTO ta_l_no_idx SELECT a, b, c FROM tb_l;
-}
-if (!$MASTER_1_NEEDPK)
-{
- if ($MASTER_1_MERGE)
- {
- --error ER_WRONG_OBJECT
- eval CREATE TABLE ta_l_no_idx
- $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT2_2_1
- SELECT a, b, c FROM tb_l;
- eval CREATE TABLE ta_l_no_idx (
- a INT,
- b CHAR(1),
- c DATETIME
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT2_2_1;
- INSERT INTO ta_l_no_idx SELECT a, b, c FROM tb_l;
- }
- if (!$MASTER_1_MERGE)
- {
- eval CREATE TABLE ta_l_no_idx
- $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT2_2_1
- SELECT a, b, c FROM tb_l;
- }
-}
---enable_query_log
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_TABLES3;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l_no_idx ORDER BY a;
-
---echo
---echo select table
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select table shared mode
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a
-LOCK IN SHARE MODE;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select table for update
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a
-FOR UPDATE;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select table join
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a.a, a.b, date_format(b.c, '%Y-%m-%d %H:%i:%s') FROM ta_l a, tb_l b
-WHERE a.a = b.a ORDER BY a.a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select table straight_join
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT STRAIGHT_JOIN a.a, a.b, date_format(b.c, '%Y-%m-%d %H:%i:%s')
-FROM ta_l a, tb_l b WHERE a.a = b.a ORDER BY a.a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select sql_small_result
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT SQL_SMALL_RESULT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select sql_big_result
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT SQL_BIG_RESULT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select sql_buffer_result
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT SQL_BUFFER_RESULT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select sql_cache
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT SQL_CACHE a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select sql_no_cache
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT SQL_NO_CACHE a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select sql_calc_found_rows
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT SQL_CALC_FOUND_ROWS a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a LIMIT 4;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT found_rows();
-
---echo
---echo select high_priority
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT HIGH_PRIORITY a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select distinct
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT DISTINCT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select count
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT count(*) FROM ta_l ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select table join not use index
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a.a, a.b, date_format(a.c, '%Y-%m-%d %H:%i:%s') FROM tb_l a WHERE
-EXISTS (SELECT * FROM ta_l b WHERE b.b = a.b) ORDER BY a.a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select using pushdown
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a.a, a.b, date_format(a.c, '%Y-%m-%d %H:%i:%s') FROM ta_l a WHERE
-a.b = 'g' ORDER BY a.a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select using index and pushdown
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a.a, a.b, date_format(a.c, '%Y-%m-%d %H:%i:%s') FROM ta_l a WHERE
-a.a > 0 AND a.b = 'g' ORDER BY a.a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo insert
---connection master_1
-TRUNCATE TABLE ta_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-INSERT INTO ta_l (a, b, c) VALUES (2, 'e', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo insert select
---connection master_1
-TRUNCATE TABLE ta_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-INSERT INTO ta_l (a, b, c) SELECT a, b, c FROM tb_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo insert select a
---connection master_1
-TRUNCATE TABLE ta_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-INSERT INTO ta_l (a, b, c) VALUES ((SELECT a FROM tb_l ORDER BY a LIMIT 1),
-'e', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo insert low_priority
---connection master_1
-TRUNCATE TABLE ta_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-INSERT LOW_PRIORITY INTO ta_l (a, b, c) values (2, 'e', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo insert high_priority
---connection master_1
-TRUNCATE TABLE ta_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-INSERT HIGH_PRIORITY INTO ta_l (a, b, c) VALUES (2, 'e',
-'2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo insert ignore
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-INSERT IGNORE INTO ta_l (a, b, c) VALUES (2, 'd', '2009-02-02 01:01:01');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo insert update (insert)
---connection master_1
-TRUNCATE TABLE ta_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-INSERT INTO ta_l (a, b, c) VALUES (2, 'e', '2008-01-01 23:59:59') ON DUPLICATE
-KEY UPDATE b = 'f', c = '2005-08-08 11:11:11';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%update %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo insert update (update)
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-INSERT INTO ta_l (a, b, c) VALUES (2, 'e', '2008-01-01 23:59:59') ON DUPLICATE
-KEY UPDATE b = 'f', c = '2005-08-08 11:11:11';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%update %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo replace
---connection master_1
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (2, 'e', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-REPLACE INTO ta_l (a, b, c) VALUES (2, 'f', '2008-02-02 02:02:02');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'replace %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo replace select
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-REPLACE INTO ta_l (a, b, c) SELECT a, b, c FROM tb_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'replace %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo replace select a
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-REPLACE INTO ta_l (a, b, c) VALUES ((SELECT a FROM tb_l ORDER BY a LIMIT 1),
-'e', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'replace %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo replace low_priority
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-REPLACE LOW_PRIORITY INTO ta_l (a, b, c) VALUES (3, 'g',
-'2009-03-03 03:03:03');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'replace %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'insert %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo update
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-UPDATE ta_l SET b = 'f', c = '2008-02-02 02:02:02' WHERE a = 2;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo update select
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-UPDATE ta_l SET b = 'g', c = '2009-03-03 03:03:03' WHERE a IN (SELECT a FROM
-tb_l);
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo update select a
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-UPDATE ta_l SET b = 'h', c = '2010-04-04 04:04:04' WHERE a = (SELECT a FROM
-tb_l ORDER BY a LIMIT 1);
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo update join
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-UPDATE ta_l a, tb_l b SET a.b = b.b, a.c = b.c WHERE a.a = b.a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo update join a
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-UPDATE ta_l a, tb_l b SET a.b = 'g', a.c = '2009-03-03 03:03:03' WHERE
-a.a = b.a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo update low_priority
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-UPDATE LOW_PRIORITY ta_l SET b = 'f', c = '2008-02-02 02:02:02' WHERE a = 2;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo update ignore
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-UPDATE IGNORE ta_l SET a = 1, b = 'g', c = '2009-03-03 03:03:03' WHERE a = 2;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo update pushdown
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-update ta_l set b = 'j', c = '2009-03-03 03:03:03' where b = 'f';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo update index pushdown
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-UPDATE ta_l SET b = 'g', c = '2009-03-03 03:03:03' WHERE a > 0 AND b = 'j';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo delete
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-DELETE FROM ta_l WHERE a = 2;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo delete all
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-DELETE FROM ta_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo delete select
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-DELETE FROM ta_l WHERE a IN (SELECT a FROM tb_l);
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo delete select a
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-DELETE FROM ta_l WHERE a = (SELECT a FROM tb_l ORDER BY a LIMIT 1);
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo delete join
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-DELETE a FROM ta_l a, (SELECT a FROM tb_l ORDER BY a) b WHERE a.a = b.a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo delete low_priority
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-DELETE LOW_PRIORITY FROM ta_l WHERE a = 2;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo delete ignore
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-DELETE IGNORE FROM ta_l WHERE a = 2;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo delete quick
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-DELETE QUICK FROM ta_l WHERE a = 2;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo delete pushdown
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-DELETE FROM ta_l WHERE b = 'e';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo delete index pushdown
-TRUNCATE TABLE ta_l;
-INSERT INTO ta_l (a, b, c) VALUES (1, 'e', '2008-01-01 23:59:59'),
-(2, 'e', '2008-01-01 23:59:59'), (3, 'e', '2008-01-01 23:59:59'),
-(4, 'e', '2008-01-01 23:59:59'), (5, 'e', '2008-01-01 23:59:59'),
-(6, 'e', '2008-01-01 23:59:59'), (7, 'e', '2008-01-01 23:59:59'),
-(8, 'e', '2008-01-01 23:59:59'), (9, 'e', '2008-01-01 23:59:59'),
-(10, 'j', '2008-01-01 23:59:59');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-DELETE FROM ta_l WHERE a > 0 AND b = 'e';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo truncate
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-TRUNCATE TABLE ta_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'truncate %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/basic_sql_part.test b/storage/spider/mysql-test/spider/handler/t/basic_sql_part.test
deleted file mode 100644
index 1bb18358d5d..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/basic_sql_part.test
+++ /dev/null
@@ -1,571 +0,0 @@
-# This test tests by executing basic SQL
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---enable_result_log
---enable_query_log
-if (!$HAVE_PARTITION)
-{
- --disable_query_log
- --disable_result_log
- --source test_deinit.inc
- --enable_result_log
- --enable_query_log
- --enable_warnings
- skip Test requires partitioning;
-}
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS tb_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2;
-eval CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE2 $MASTER_1_CHARSET2;
---enable_query_log
-INSERT INTO tb_l (a, b, c) VALUES
- (1, 'f', '2008-07-01 10:21:39'),
- (2, 'g', '2000-02-01 00:00:00'),
- (3, 'j', '2007-05-04 20:03:11'),
- (4, 'i', '2003-10-30 05:01:03'),
- (5, 'h', '2001-10-31 23:59:59');
-
---echo
---echo create table with partition and select test
-if ($HAVE_PARTITION)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_TABLES;
- echo CHILD2_2_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_2_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES2;
- echo CHILD2_1_CREATE_TABLES2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES2;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- --disable_query_log
- echo CREATE TABLE ta_l2 (
- PRIMARY KEY(a)
- ) MASTER_1_ENGINE MASTER_1_COMMENT_P_2_1
- SELECT a, b, c FROM tb_l;
- if ($MASTER_1_MERGE)
- {
- --error ER_WRONG_OBJECT
- eval CREATE TABLE ta_l2 (
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_COMMENT_P_2_1
- SELECT a, b, c FROM tb_l;
- eval CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_COMMENT_P_2_1;
- INSERT INTO ta_l2 SELECT a, b, c FROM tb_l;
- }
- if (!$MASTER_1_MERGE)
- {
- eval CREATE TABLE ta_l2 (
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_COMMENT_P_2_1
- SELECT a, b, c FROM tb_l;
- }
- --enable_query_log
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_TABLES2;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-}
-
---echo
---echo select partition using pushdown
-if ($HAVE_PARTITION)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a.a, a.b, date_format(a.c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 a WHERE
- a.b = 'g' ORDER BY a.a;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
---echo
---echo select partition using index pushdown
-if ($HAVE_PARTITION)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a.a, a.b, date_format(a.c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 a WHERE
- a.a > 0 AND a.b = 'g' ORDER BY a.a;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
---echo
---echo update partition pushdown
-if ($HAVE_PARTITION)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- UPDATE ta_l2 SET b = 'e', c = '2009-03-03 03:03:03' WHERE b = 'j';
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES2;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-}
-
---echo
---echo update partition index pushdown
-if ($HAVE_PARTITION)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- UPDATE ta_l2 SET b = 'j', c = '2009-03-03 03:03:03' WHERE a > 0 AND b = 'e';
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'update %';
- }
- eval $CHILD2_1_SELECT_TABLES2;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-}
-
---echo
---echo delete partition pushdown
-if ($HAVE_PARTITION)
-{
- TRUNCATE TABLE ta_l2;
- INSERT INTO ta_l2 SELECT a, b, c FROM tb_l;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- DELETE FROM ta_l2 WHERE b = 'g';
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES2;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-}
-
---echo
---echo delete partition index pushdown
-if ($HAVE_PARTITION)
-{
- TRUNCATE TABLE ta_l2;
- INSERT INTO ta_l2 SELECT a, b, c FROM tb_l;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- DELETE FROM ta_l2 WHERE a > 0 AND b = 'g';
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE 'delete %';
- }
- eval $CHILD2_1_SELECT_TABLES2;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
-}
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/connect_child2_1.inc b/storage/spider/mysql-test/spider/handler/t/connect_child2_1.inc
deleted file mode 100644
index cd9b0c9ca9b..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/connect_child2_1.inc
+++ /dev/null
@@ -1 +0,0 @@
---connect (child2_1, localhost, root, , , $CHILD2_1_MYPORT, $CHILD2_1_MYSOCK)
diff --git a/storage/spider/mysql-test/spider/handler/t/connect_child2_2.inc b/storage/spider/mysql-test/spider/handler/t/connect_child2_2.inc
deleted file mode 100644
index e145f66b630..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/connect_child2_2.inc
+++ /dev/null
@@ -1 +0,0 @@
---connect (child2_2, localhost, root, , , $CHILD2_2_MYPORT, $CHILD2_2_MYSOCK)
diff --git a/storage/spider/mysql-test/spider/handler/t/connect_child2_3.inc b/storage/spider/mysql-test/spider/handler/t/connect_child2_3.inc
deleted file mode 100644
index d356348d8ea..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/connect_child2_3.inc
+++ /dev/null
@@ -1 +0,0 @@
---connect (child2_3, localhost, root, , , $CHILD2_3_MYPORT, $CHILD2_3_MYSOCK)
diff --git a/storage/spider/mysql-test/spider/handler/t/connect_child3_1.inc b/storage/spider/mysql-test/spider/handler/t/connect_child3_1.inc
deleted file mode 100644
index 03e5c188c89..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/connect_child3_1.inc
+++ /dev/null
@@ -1 +0,0 @@
---connect (child3_1, localhost, root, , , $CHILD3_1_MYPORT, $CHILD3_1_MYSOCK)
diff --git a/storage/spider/mysql-test/spider/handler/t/connect_child3_2.inc b/storage/spider/mysql-test/spider/handler/t/connect_child3_2.inc
deleted file mode 100644
index d62a7ada824..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/connect_child3_2.inc
+++ /dev/null
@@ -1 +0,0 @@
---connect (child3_2, localhost, root, , , $CHILD3_2_MYPORT, $CHILD3_2_MYSOCK)
diff --git a/storage/spider/mysql-test/spider/handler/t/connect_child3_3.inc b/storage/spider/mysql-test/spider/handler/t/connect_child3_3.inc
deleted file mode 100644
index fb49f5bfdac..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/connect_child3_3.inc
+++ /dev/null
@@ -1 +0,0 @@
---connect (child3_3, localhost, root, , , $CHILD3_3_MYPORT, $CHILD3_3_MYSOCK)
diff --git a/storage/spider/mysql-test/spider/handler/t/connect_master_1.inc b/storage/spider/mysql-test/spider/handler/t/connect_master_1.inc
deleted file mode 100644
index 0c129ce5775..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/connect_master_1.inc
+++ /dev/null
@@ -1 +0,0 @@
---connect (master_1, localhost, root, , , $MASTER_1_MYPORT, $MASTER_1_MYSOCK)
diff --git a/storage/spider/mysql-test/spider/handler/t/connect_slave1_1.inc b/storage/spider/mysql-test/spider/handler/t/connect_slave1_1.inc
deleted file mode 100644
index 45a822743e0..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/connect_slave1_1.inc
+++ /dev/null
@@ -1 +0,0 @@
---connect (slave1_1, localhost, root, , , $SLAVE1_1_MYPORT, $SLAVE1_1_MYSOCK)
diff --git a/storage/spider/mysql-test/spider/handler/t/direct_aggregate.test b/storage/spider/mysql-test/spider/handler/t/direct_aggregate.test
deleted file mode 100644
index 5c0c37f483d..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/direct_aggregate.test
+++ /dev/null
@@ -1,179 +0,0 @@
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---enable_result_log
---enable_query_log
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo create table select test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES;
- echo CHILD2_1_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1;
-eval CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1;
---enable_query_log
-INSERT INTO ta_l (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
-
---echo
---echo direct_aggregating test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
-SELECT COUNT(*) FROM ta_l;
-eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
-SELECT MAX(a) FROM ta_l;
-eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
-SELECT MIN(a) FROM ta_l;
-eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
-SELECT MAX(a) FROM ta_l WHERE a < 5;
-eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
-SELECT MIN(a) FROM ta_l WHERE a > 1;
-eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%handler %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/direct_aggregate_part.test b/storage/spider/mysql-test/spider/handler/t/direct_aggregate_part.test
deleted file mode 100644
index cb0b55e9788..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/direct_aggregate_part.test
+++ /dev/null
@@ -1,192 +0,0 @@
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---enable_result_log
---enable_query_log
-if (!$HAVE_PARTITION)
-{
- --disable_query_log
- --disable_result_log
- --source test_deinit.inc
- --enable_result_log
- --enable_query_log
- --enable_warnings
- skip Test requires partitioning;
-}
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo with partition test
-if ($HAVE_PARTITION)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_TABLES;
- echo CHILD2_2_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_2_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES2;
- echo CHILD2_1_CREATE_TABLES2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES2;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- --disable_query_log
- echo CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) MASTER_1_ENGINE MASTER_1_COMMENT2_P_2_1;
- eval CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_COMMENT2_P_2_1;
- INSERT INTO ta_l2 (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
- --enable_query_log
- eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
- SELECT COUNT(*) FROM ta_l2;
- eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
- SELECT MAX(a) FROM ta_l2;
- eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
- SELECT MIN(a) FROM ta_l2;
- eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
- SELECT MAX(a) FROM ta_l2 WHERE a < 5;
- eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
- SELECT MIN(a) FROM ta_l2 WHERE a > 1;
- eval $MASTER_1_CHECK_DIRECT_AGGREGATE_STATUS;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%handler %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%handler %';
- }
- eval $CHILD2_1_SELECT_TABLES2;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/direct_update.test b/storage/spider/mysql-test/spider/handler/t/direct_update.test
deleted file mode 100644
index 94f27e2859c..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/direct_update.test
+++ /dev/null
@@ -1,198 +0,0 @@
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---enable_result_log
---enable_query_log
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo create table select test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES;
- echo CHILD2_1_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1;
-eval CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1;
---enable_query_log
-INSERT INTO ta_l (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
-
---echo
---echo direct_updating test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-eval $MASTER_1_CHECK_DIRECT_UPDATE_STATUS;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
---echo update all rows with function
-UPDATE ta_l SET c = ADDDATE(c, 1);
-eval $MASTER_1_CHECK_DIRECT_UPDATE_STATUS;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
---echo update by primary key
-UPDATE ta_l SET b = 'x' WHERE a = 3;
-eval $MASTER_1_CHECK_DIRECT_UPDATE_STATUS;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
---echo update by a column without index
-UPDATE ta_l SET c = '2011-10-17' WHERE b = 'x';
-eval $MASTER_1_CHECK_DIRECT_UPDATE_STATUS;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
---echo update by primary key with order and limit
-UPDATE ta_l SET c = ADDDATE(c, 1) WHERE a < 4 ORDER BY b DESC LIMIT 1;
-eval $MASTER_1_CHECK_DIRECT_UPDATE_STATUS;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
---echo delete by primary key with order and limit
-DELETE FROM ta_l WHERE a < 4 ORDER BY c LIMIT 1;
-eval $MASTER_1_CHECK_DIRECT_DELETE_STATUS;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
---echo delete by a column without index
-DELETE FROM ta_l WHERE b = 'c';
-eval $MASTER_1_CHECK_DIRECT_DELETE_STATUS;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
---echo delete by primary key
-DELETE FROM ta_l WHERE a = 3;
-eval $MASTER_1_CHECK_DIRECT_DELETE_STATUS;
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%handler %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/direct_update_part.test b/storage/spider/mysql-test/spider/handler/t/direct_update_part.test
deleted file mode 100644
index e8f1882594c..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/direct_update_part.test
+++ /dev/null
@@ -1,211 +0,0 @@
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---enable_result_log
---enable_query_log
-if (!$HAVE_PARTITION)
-{
- --disable_query_log
- --disable_result_log
- --source test_deinit.inc
- --enable_result_log
- --enable_query_log
- --enable_warnings
- skip Test requires partitioning;
-}
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo with partition test
-if ($HAVE_PARTITION)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_TABLES;
- echo CHILD2_2_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_2_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES2;
- echo CHILD2_1_CREATE_TABLES2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES2;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- --disable_query_log
- echo CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) MASTER_1_ENGINE MASTER_1_COMMENT2_P_2_1;
- eval CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_COMMENT2_P_2_1;
- INSERT INTO ta_l2 (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
- --enable_query_log
- eval $MASTER_1_CHECK_DIRECT_UPDATE_STATUS;
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- --echo update all rows with function
- UPDATE ta_l2 SET c = ADDDATE(c, 1);
- eval $MASTER_1_CHECK_DIRECT_UPDATE_STATUS;
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- --echo update by primary key
- UPDATE ta_l2 SET b = 'x' WHERE a = 3;
- eval $MASTER_1_CHECK_DIRECT_UPDATE_STATUS;
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- --echo update by a column without index
- UPDATE ta_l2 SET c = '2011-10-17' WHERE b = 'x';
- eval $MASTER_1_CHECK_DIRECT_UPDATE_STATUS;
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- --echo update by primary key with order and limit
- UPDATE ta_l2 SET c = ADDDATE(c, 1) WHERE a < 4 ORDER BY b DESC LIMIT 1;
- eval $MASTER_1_CHECK_DIRECT_UPDATE_STATUS;
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- --echo delete by primary key with order and limit
- DELETE FROM ta_l2 WHERE a < 4 ORDER BY c LIMIT 1;
- eval $MASTER_1_CHECK_DIRECT_DELETE_STATUS;
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- --echo delete by a column without index
- DELETE FROM ta_l2 WHERE b = 'c';
- eval $MASTER_1_CHECK_DIRECT_DELETE_STATUS;
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- --echo delete by primary key
- DELETE FROM ta_l2 WHERE a = 3;
- eval $MASTER_1_CHECK_DIRECT_DELETE_STATUS;
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%handler %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%handler %';
- }
- eval $CHILD2_1_SELECT_TABLES2;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/function.test b/storage/spider/mysql-test/spider/handler/t/function.test
deleted file mode 100644
index 2472e774782..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/function.test
+++ /dev/null
@@ -1,253 +0,0 @@
-# This test tests for using functions
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---enable_result_log
---enable_query_log
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo in()
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_result_log
- }
- --disable_query_log
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- echo CHILD2_1_DROP_TEXT_PK_TABLES1;
- echo CHILD2_1_CREATE_TEXT_PK_TABLES1;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TEXT_PK_TABLES1;
- --enable_warnings
- eval $CHILD2_1_CREATE_TEXT_PK_TABLES1;
- --enable_query_log
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_result_log
- }
-}
---connection master_1
---disable_query_log
-echo CREATE TABLE t1 (
- a VARCHAR(255),
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET3 MASTER_1_COMMENT_TEXT_PK1_1;
-eval CREATE TABLE t1 (
- a VARCHAR(255),
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET3 $MASTER_1_COMMENT_TEXT_PK1_1;
---enable_query_log
-insert into t1 values ('1');
-insert into t1 select a + 1 from t1;
-insert into t1 select a + 2 from t1;
-insert into t1 select a + 4 from t1;
-insert into t1 select a + 8 from t1;
-insert into t1 select a + 16 from t1;
-insert into t1 select a + 32 from t1;
-insert into t1 select a + 64 from t1;
-insert into t1 select a + 128 from t1;
-insert into t1 select a + 256 from t1;
-insert into t1 select a + 512 from t1;
-flush tables;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-select a from t1 where a in ('15', '120');
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TEXT_PK_TABLES1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo date_sub()
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES;
- echo CHILD2_1_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1;
-eval CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1;
---enable_query_log
-INSERT INTO ta_l (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-UPDATE ta_l SET c = DATE_SUB(c, INTERVAL 1 YEAR);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-UPDATE ta_l SET c = DATE_ADD(c, INTERVAL 1 QUARTER);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-UPDATE ta_l SET c = DATE_SUB(c, INTERVAL 1 MONTH);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-UPDATE ta_l SET c = DATE_ADD(c, INTERVAL 1 WEEK);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-UPDATE ta_l SET c = DATE_SUB(c, INTERVAL 1 DAY);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-UPDATE ta_l SET c = DATE_ADD(c, INTERVAL 1 HOUR);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-UPDATE ta_l SET c = DATE_SUB(c, INTERVAL 1 MINUTE);
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-UPDATE ta_l SET c = DATE_ADD(c, INTERVAL 1 SECOND);
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%update %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/ha.test b/storage/spider/mysql-test/spider/handler/t/ha.test
deleted file mode 100644
index c36b7363a6d..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/ha.test
+++ /dev/null
@@ -1,878 +0,0 @@
-# This test tests for ha features
-if ($USE_HA_TEST)
-{
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---source ha_test_init.inc
---enable_result_log
---enable_query_log
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
- --connection child2_3
- DROP DATABASE IF EXISTS auto_test_remote3;
- CREATE DATABASE auto_test_remote3;
- USE auto_test_remote3;
-}
-if ($USE_CHILD_GROUP3)
-{
- --connection child3_1
- DROP DATABASE IF EXISTS auto_test_local;
- CREATE DATABASE auto_test_local;
- USE auto_test_local;
- --connection child3_2
- DROP DATABASE IF EXISTS auto_test_local;
- CREATE DATABASE auto_test_local;
- USE auto_test_local;
- --connection child3_3
- DROP DATABASE IF EXISTS auto_test_local;
- CREATE DATABASE auto_test_local;
- USE auto_test_local;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- --connection child2_3
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- SELECT 1;
- --connection child3_2
- SELECT 1;
- --connection child3_3
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo create table test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES;
- echo CHILD2_1_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_TABLES;
- echo CHILD2_2_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_2_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- --disable_warnings
- eval $CHILD3_1_DROP_TABLES_HA_2_1;
- --enable_warnings
- eval $CHILD3_1_CREATE_TABLES_HA_2_1;
- --connection child3_2
- --disable_warnings
- eval $CHILD3_2_DROP_TABLES_HA_2_1;
- --enable_warnings
- eval $CHILD3_2_CREATE_TABLES_HA_2_1;
- --connection child3_3
- --disable_warnings
- eval $CHILD3_3_DROP_TABLES_HA_2_1;
- --enable_warnings
- eval $CHILD3_3_CREATE_TABLES_HA_2_1;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_HA_2_1;
-eval CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_HA_2_1;
---enable_query_log
-INSERT INTO ta_l (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
-
---echo
---echo select test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo fail-over test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_HA_DROP_TABLES;
- }
- --disable_warnings
- eval $CHILD2_2_HA_DROP_TABLES;
- --enable_warnings
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-eval $MASTER_1_CHECK_HA_STATUS;
---error 12511
-INSERT INTO ta_l (a, b, c) VALUES
- (6, 'e', '2011-05-05 20:04:05');
-eval $MASTER_1_CHECK_LINK_STATUS;
-eval $MASTER_1_CHECK_LINK_FAILED_LOG;
-eval $MASTER_1_CHECK_HA_STATUS;
-INSERT INTO ta_l (a, b, c) VALUES
- (6, 'e', '2011-05-05 20:04:05');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- eval $CHILD3_1_CHECK_LINK_STATUS;
- eval $CHILD3_1_CHECK_LINK_FAILED_LOG;
- --connection child3_2
- eval $CHILD3_2_CHECK_LINK_STATUS;
- eval $CHILD3_2_CHECK_LINK_FAILED_LOG;
- --connection child3_3
- eval $CHILD3_3_CHECK_LINK_STATUS;
- eval $CHILD3_3_CHECK_LINK_FAILED_LOG;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo recovery test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_HA_CREATE_TABLES;
- }
- eval $CHILD2_2_HA_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- eval $CHILD3_1_SET_RECOVERY_STATUS_2_1;
- eval $CHILD3_1_CHECK_LINK_STATUS;
- --connection child3_2
- eval $CHILD3_2_SET_RECOVERY_STATUS_2_1;
- eval $CHILD3_2_CHECK_LINK_STATUS;
- --connection child3_3
- eval $CHILD3_3_SET_RECOVERY_STATUS_2_1;
- eval $CHILD3_3_CHECK_LINK_STATUS;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-eval $MASTER_1_SET_RECOVERY_STATUS_2_1;
-eval $MASTER_1_CHECK_LINK_STATUS;
-eval $MASTER_1_COPY_TABLES_2_1;
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- eval $CHILD3_1_SET_OK_STATUS_2_1;
- eval $CHILD3_1_CHECK_LINK_STATUS;
- --connection child3_2
- eval $CHILD3_2_SET_OK_STATUS_2_1;
- eval $CHILD3_2_CHECK_LINK_STATUS;
- --connection child3_3
- eval $CHILD3_3_SET_OK_STATUS_2_1;
- eval $CHILD3_3_CHECK_LINK_STATUS;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-eval $MASTER_1_SET_OK_STATUS_2_1;
-eval $MASTER_1_CHECK_LINK_STATUS;
-INSERT INTO ta_l (a, b, c) VALUES
- (8, 'g', '2011-05-05 21:33:30');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-DROP TABLE ta_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- --disable_warnings
- eval $CHILD3_1_DROP_TABLES_HA_2_1;
- --enable_warnings
- --connection child3_2
- --disable_warnings
- eval $CHILD3_2_DROP_TABLES_HA_2_1;
- --enable_warnings
- --connection child3_3
- --disable_warnings
- eval $CHILD3_3_DROP_TABLES_HA_2_1;
- --enable_warnings
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---connection master_1
-eval $MASTER_1_CHANGE_HA_MON;
-
---echo
---echo active standby test
---echo create table test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES;
- echo CHILD2_1_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_TABLES;
- echo CHILD2_2_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_2_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- --disable_warnings
- eval $CHILD3_1_DROP_TABLES_HA_2_1;
- --enable_warnings
- eval $CHILD3_1_CREATE_TABLES_HA_AS_2_1;
- --connection child3_2
- --disable_warnings
- eval $CHILD3_2_DROP_TABLES_HA_2_1;
- --enable_warnings
- eval $CHILD3_2_CREATE_TABLES_HA_AS_2_1;
- --connection child3_3
- --disable_warnings
- eval $CHILD3_3_DROP_TABLES_HA_2_1;
- --enable_warnings
- eval $CHILD3_3_CREATE_TABLES_HA_AS_2_1;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_HA_AS_2_1;
-eval CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_HA_AS_2_1;
---enable_query_log
-INSERT INTO ta_l (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
-
---echo
---echo select test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo fail-over test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_HA_AS_DROP_TABLES;
- }
- --disable_warnings
- eval $CHILD2_1_HA_AS_DROP_TABLES;
- --enable_warnings
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-eval $MASTER_1_CHECK_HA_STATUS;
---error 12511
-INSERT INTO ta_l (a, b, c) VALUES
- (6, 'e', '2011-05-05 20:04:05');
-eval $MASTER_1_CHECK_LINK_STATUS;
-eval $MASTER_1_CHECK_LINK_FAILED_LOG;
-eval $MASTER_1_CHECK_HA_STATUS;
-INSERT INTO ta_l (a, b, c) VALUES
- (6, 'e', '2011-05-05 20:04:05');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- eval $CHILD3_1_CHECK_LINK_STATUS;
- eval $CHILD3_1_CHECK_LINK_FAILED_LOG;
- --connection child3_2
- eval $CHILD3_2_CHECK_LINK_STATUS;
- eval $CHILD3_2_CHECK_LINK_FAILED_LOG;
- --connection child3_3
- eval $CHILD3_3_CHECK_LINK_STATUS;
- eval $CHILD3_3_CHECK_LINK_FAILED_LOG;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo recovery test
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_HA_AS_CREATE_TABLES;
- }
- eval $CHILD2_1_HA_AS_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- eval $CHILD3_1_SET_OK_STATUS_AS_2_1;
- eval $CHILD3_1_CHECK_LINK_STATUS;
- --connection child3_2
- eval $CHILD3_2_SET_OK_STATUS_AS_2_1;
- eval $CHILD3_2_CHECK_LINK_STATUS;
- --connection child3_3
- eval $CHILD3_3_SET_OK_STATUS_AS_2_1;
- eval $CHILD3_3_CHECK_LINK_STATUS;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-eval $MASTER_1_SET_OK_STATUS_AS_2_1;
-eval $MASTER_1_CHECK_LINK_STATUS;
-INSERT INTO ta_l (a, b, c) VALUES
- (8, 'g', '2011-05-05 21:33:30');
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-DROP TABLE ta_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- --disable_warnings
- eval $CHILD3_1_DROP_TABLES_HA_2_1;
- --enable_warnings
- --connection child3_2
- --disable_warnings
- eval $CHILD3_2_DROP_TABLES_HA_2_1;
- --enable_warnings
- --connection child3_3
- --disable_warnings
- eval $CHILD3_3_DROP_TABLES_HA_2_1;
- --enable_warnings
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---connection master_1
-eval $MASTER_1_CHANGE_HA_MON;
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- --connection child2_3
- DROP DATABASE IF EXISTS auto_test_remote3;
-}
-if ($USE_CHILD_GROUP3)
-{
- --connection child3_1
- DROP DATABASE IF EXISTS auto_test_local;
- --connection child3_2
- DROP DATABASE IF EXISTS auto_test_local;
- --connection child3_3
- DROP DATABASE IF EXISTS auto_test_local;
-}
---disable_query_log
---disable_result_log
---source ha_test_deinit.inc
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
-}
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/ha_part.test b/storage/spider/mysql-test/spider/handler/t/ha_part.test
deleted file mode 100644
index 33fe9850b68..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/ha_part.test
+++ /dev/null
@@ -1,1017 +0,0 @@
-# This test tests for ha features
-if ($USE_HA_TEST)
-{
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---source ha_test_init.inc
---enable_result_log
---enable_query_log
-if (!$HAVE_PARTITION)
-{
- --disable_query_log
- --disable_result_log
- --source ha_test_deinit.inc
- --source test_deinit.inc
- --enable_result_log
- --enable_query_log
- --enable_warnings
- skip Test requires partitioning;
-}
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
- --connection child2_3
- DROP DATABASE IF EXISTS auto_test_remote3;
- CREATE DATABASE auto_test_remote3;
- USE auto_test_remote3;
-}
-if ($USE_CHILD_GROUP3)
-{
- --connection child3_1
- DROP DATABASE IF EXISTS auto_test_local;
- CREATE DATABASE auto_test_local;
- USE auto_test_local;
- --connection child3_2
- DROP DATABASE IF EXISTS auto_test_local;
- CREATE DATABASE auto_test_local;
- USE auto_test_local;
- --connection child3_3
- DROP DATABASE IF EXISTS auto_test_local;
- CREATE DATABASE auto_test_local;
- USE auto_test_local;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- --connection child2_3
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-if ($USE_CHILD_GROUP3)
-{
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- SELECT 1;
- --connection child3_2
- SELECT 1;
- --connection child3_3
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
-if ($HAVE_PARTITION)
-{
- --echo
- --echo create table with partition test
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES;
- echo CHILD2_1_DROP_TABLES2;
- echo CHILD2_1_CREATE_TABLES;
- echo CHILD2_1_CREATE_TABLES2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES;
- eval $CHILD2_1_DROP_TABLES2;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES;
- eval $CHILD2_1_CREATE_TABLES2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_TABLES;
- echo CHILD2_2_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_2_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_3
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_3_DROP_TABLES;
- echo CHILD2_3_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_3_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_3_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- if ($USE_CHILD_GROUP3)
- {
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- --disable_warnings
- eval $CHILD3_1_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- eval $CHILD3_1_CREATE_TABLES_HA_P_2_1;
- --connection child3_2
- --disable_warnings
- eval $CHILD3_2_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- eval $CHILD3_2_CREATE_TABLES_HA_P_2_1;
- --connection child3_3
- --disable_warnings
- eval $CHILD3_3_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- eval $CHILD3_3_CREATE_TABLES_HA_P_2_1;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- --disable_warnings
- DROP TABLE IF EXISTS ta_l2;
- --enable_warnings
- --disable_query_log
- echo CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_HA_P_2_1;
- eval CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_HA_P_2_1;
- --enable_query_log
- INSERT INTO ta_l2 (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
-
- --echo
- --echo select test
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_3
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- eval $CHILD2_1_SELECT_TABLES2;
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_3
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_3_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-
- --echo
- --echo fail-over test
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_3
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_3_HA_DROP_TABLES;
- }
- --disable_warnings
- eval $CHILD2_3_HA_DROP_TABLES;
- --enable_warnings
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- eval $MASTER_1_CHECK_HA_STATUS;
- --error 12511
- INSERT INTO ta_l2 (a, b, c) VALUES
- (6, 'e', '2011-05-05 20:04:05');
- eval $MASTER_1_CHECK_LINK_STATUS;
- eval $MASTER_1_CHECK_LINK_FAILED_LOG;
- eval $MASTER_1_CHECK_HA_STATUS;
- INSERT INTO ta_l2 (a, b, c) VALUES
- (6, 'e', '2011-05-05 20:04:05');
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- eval $CHILD2_1_SELECT_TABLES2;
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- if ($USE_CHILD_GROUP3)
- {
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- eval $CHILD3_1_CHECK_LINK_STATUS;
- eval $CHILD3_1_CHECK_LINK_FAILED_LOG;
- --connection child3_2
- eval $CHILD3_2_CHECK_LINK_STATUS;
- eval $CHILD3_2_CHECK_LINK_FAILED_LOG;
- --connection child3_3
- eval $CHILD3_3_CHECK_LINK_STATUS;
- eval $CHILD3_3_CHECK_LINK_FAILED_LOG;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-
- --echo
- --echo recovery test
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_3
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_3_HA_CREATE_TABLES;
- }
- eval $CHILD2_3_HA_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- if ($USE_CHILD_GROUP3)
- {
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- eval $CHILD3_1_SET_RECOVERY_STATUS_P_2_1;
- eval $CHILD3_1_CHECK_LINK_STATUS;
- --connection child3_2
- eval $CHILD3_2_SET_RECOVERY_STATUS_P_2_1;
- eval $CHILD3_2_CHECK_LINK_STATUS;
- --connection child3_3
- eval $CHILD3_3_SET_RECOVERY_STATUS_P_2_1;
- eval $CHILD3_3_CHECK_LINK_STATUS;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- eval $MASTER_1_SET_RECOVERY_STATUS_P_2_1;
- eval $MASTER_1_CHECK_LINK_STATUS;
- eval $MASTER_1_COPY_TABLES_P_2_1;
- if ($USE_CHILD_GROUP3)
- {
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- eval $CHILD3_1_SET_OK_STATUS_P_2_1;
- eval $CHILD3_1_CHECK_LINK_STATUS;
- --connection child3_2
- eval $CHILD3_2_SET_OK_STATUS_P_2_1;
- eval $CHILD3_2_CHECK_LINK_STATUS;
- --connection child3_3
- eval $CHILD3_3_SET_OK_STATUS_P_2_1;
- eval $CHILD3_3_CHECK_LINK_STATUS;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- eval $MASTER_1_SET_OK_STATUS_P_2_1;
- eval $MASTER_1_CHECK_LINK_STATUS;
- INSERT INTO ta_l2 (a, b, c) VALUES
- (8, 'g', '2011-05-05 21:33:30'),
- (9, 'h', '2011-05-05 22:32:10');
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- DROP TABLE ta_l2;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- eval $CHILD2_1_SELECT_TABLES2;
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_3
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_3_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- if ($USE_CHILD_GROUP3)
- {
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- --disable_warnings
- eval $CHILD3_1_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- --connection child3_2
- --disable_warnings
- eval $CHILD3_2_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- --connection child3_3
- --disable_warnings
- eval $CHILD3_3_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
-if ($HAVE_PARTITION)
-{
- --echo
- --echo create table with partition test
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES;
- echo CHILD2_1_DROP_TABLES2;
- echo CHILD2_1_CREATE_TABLES;
- echo CHILD2_1_CREATE_TABLES2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES;
- eval $CHILD2_1_DROP_TABLES2;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES;
- eval $CHILD2_1_CREATE_TABLES2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_TABLES;
- echo CHILD2_2_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_2_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_3
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_3_DROP_TABLES;
- echo CHILD2_3_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_3_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_3_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- if ($USE_CHILD_GROUP3)
- {
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- --disable_warnings
- eval $CHILD3_1_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- eval $CHILD3_1_CREATE_TABLES_HA_AS_P_2_1;
- --connection child3_2
- --disable_warnings
- eval $CHILD3_2_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- eval $CHILD3_2_CREATE_TABLES_HA_AS_P_2_1;
- --connection child3_3
- --disable_warnings
- eval $CHILD3_3_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- eval $CHILD3_3_CREATE_TABLES_HA_AS_P_2_1;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- --disable_warnings
- DROP TABLE IF EXISTS ta_l2;
- --enable_warnings
- --disable_query_log
- echo CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_HA_AS_P_2_1;
- eval CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_HA_AS_P_2_1;
- --enable_query_log
- INSERT INTO ta_l2 (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
-
- --echo
- --echo select test
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_3
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- eval $CHILD2_1_SELECT_TABLES2;
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_3
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_3_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-
- --echo
- --echo fail-over test
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_HA_AS_DROP_TABLES2;
- }
- --disable_warnings
- eval $CHILD2_1_HA_AS_DROP_TABLES2;
- --enable_warnings
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_3
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- eval $MASTER_1_CHECK_HA_STATUS;
- --error 12511
- INSERT INTO ta_l2 (a, b, c) VALUES
- (6, 'e', '2011-05-05 20:04:05');
- eval $MASTER_1_CHECK_LINK_STATUS;
- eval $MASTER_1_CHECK_LINK_FAILED_LOG;
- eval $MASTER_1_CHECK_HA_STATUS;
- INSERT INTO ta_l2 (a, b, c) VALUES
- (6, 'e', '2011-05-05 20:04:05');
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_3
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_3_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- if ($USE_CHILD_GROUP3)
- {
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- eval $CHILD3_1_CHECK_LINK_STATUS;
- eval $CHILD3_1_CHECK_LINK_FAILED_LOG;
- --connection child3_2
- eval $CHILD3_2_CHECK_LINK_STATUS;
- eval $CHILD3_2_CHECK_LINK_FAILED_LOG;
- --connection child3_3
- eval $CHILD3_3_CHECK_LINK_STATUS;
- eval $CHILD3_3_CHECK_LINK_FAILED_LOG;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-
- --echo
- --echo recovery test
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_HA_AS_CREATE_TABLES2;
- }
- eval $CHILD2_1_HA_AS_CREATE_TABLES2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_3
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- if ($USE_CHILD_GROUP3)
- {
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- eval $CHILD3_1_SET_OK_STATUS_AS_P_2_1;
- eval $CHILD3_1_CHECK_LINK_STATUS;
- --connection child3_2
- eval $CHILD3_2_SET_OK_STATUS_AS_P_2_1;
- eval $CHILD3_2_CHECK_LINK_STATUS;
- --connection child3_3
- eval $CHILD3_3_SET_OK_STATUS_AS_P_2_1;
- eval $CHILD3_3_CHECK_LINK_STATUS;
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- eval $MASTER_1_SET_OK_STATUS_AS_P_2_1;
- eval $MASTER_1_CHECK_LINK_STATUS;
- INSERT INTO ta_l2 (a, b, c) VALUES
- (8, 'g', '2011-05-05 21:33:30'),
- (9, 'h', '2011-05-05 22:32:10');
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 ORDER BY a;
- DROP TABLE ta_l2;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES;
- eval $CHILD2_1_SELECT_TABLES2;
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_3
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_3_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- if ($USE_CHILD_GROUP3)
- {
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child3_1
- --disable_warnings
- eval $CHILD3_1_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- --connection child3_2
- --disable_warnings
- eval $CHILD3_2_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- --connection child3_3
- --disable_warnings
- eval $CHILD3_3_DROP_TABLES_HA_P_2_1;
- --enable_warnings
- if (!$OUTPUT_CHILD_GROUP3)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- --connection child2_3
- DROP DATABASE IF EXISTS auto_test_remote3;
-}
-if ($USE_CHILD_GROUP3)
-{
- --connection child3_1
- DROP DATABASE IF EXISTS auto_test_local;
- --connection child3_2
- DROP DATABASE IF EXISTS auto_test_local;
- --connection child3_3
- DROP DATABASE IF EXISTS auto_test_local;
-}
---disable_query_log
---disable_result_log
---source ha_test_deinit.inc
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
-}
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/ha_test_deinit.inc b/storage/spider/mysql-test/spider/handler/t/ha_test_deinit.inc
deleted file mode 100644
index 53d0409d066..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/ha_test_deinit.inc
+++ /dev/null
@@ -1,30 +0,0 @@
-# get connection and exist engine test
---echo for master_1
---connection master_1
---source ../include/ha_deinit_master_1.inc
---echo for child2
-if ($USE_CHILD_GROUP2)
-{
- --echo child2_1
- --connection child2_1
- --source ../include/ha_deinit_child2_1.inc
- --echo child2_2
- --connection child2_2
- --source ../include/ha_deinit_child2_2.inc
- --echo child2_3
- --connection child2_3
- --source ../include/ha_deinit_child2_3.inc
-}
---echo for child3
-if ($USE_CHILD_GROUP3)
-{
- --echo child3_1
- --connection child3_1
- --source ../include/ha_deinit_child3_1.inc
- --echo child3_2
- --connection child3_2
- --source ../include/ha_deinit_child3_2.inc
- --echo child3_3
- --connection child3_3
- --source ../include/ha_deinit_child3_3.inc
-}
diff --git a/storage/spider/mysql-test/spider/handler/t/ha_test_init.inc b/storage/spider/mysql-test/spider/handler/t/ha_test_init.inc
deleted file mode 100644
index 70576ab16dc..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/ha_test_init.inc
+++ /dev/null
@@ -1,30 +0,0 @@
-# get connection and exist engine test
---echo for master_1
---connection master_1
---source ../include/ha_init_master_1.inc
---echo for child2
-if ($USE_CHILD_GROUP2)
-{
- --echo child2_1
- --connection child2_1
- --source ../include/ha_init_child2_1.inc
- --echo child2_2
- --connection child2_2
- --source ../include/ha_init_child2_2.inc
- --echo child2_3
- --connection child2_3
- --source ../include/ha_init_child2_3.inc
-}
---echo for child3
-if ($USE_CHILD_GROUP3)
-{
- --echo child3_1
- --connection child3_1
- --source ../include/ha_init_child3_1.inc
- --echo child3_2
- --connection child3_2
- --source ../include/ha_init_child3_2.inc
- --echo child3_3
- --connection child3_3
- --source ../include/ha_init_child3_3.inc
-}
diff --git a/storage/spider/mysql-test/spider/handler/t/have_engine.inc b/storage/spider/mysql-test/spider/handler/t/have_engine.inc
deleted file mode 100644
index 64bef7499cb..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/have_engine.inc
+++ /dev/null
@@ -1,7 +0,0 @@
-if (!`SELECT count(*) FROM information_schema.engines WHERE
- (support = 'YES' OR support = 'DEFAULT') AND
- engine = '$TEST_ENGINE_TYPE'`)
-{
- SELECT engine, support FROM information_schema.engines;
- --let $SKIP_REASON= "Need $TEST_ENGINE_TYPE engine"
-}
diff --git a/storage/spider/mysql-test/spider/handler/t/have_func.inc b/storage/spider/mysql-test/spider/handler/t/have_func.inc
deleted file mode 100644
index e0823e73fc8..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/have_func.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-if (!`SELECT count(*) FROM mysql.func WHERE name = '$TEST_FUNC_NAME'`)
-{
- SELECT name FROM mysql.func;
- --let $SKIP_REASON= "Need $TEST_FUNC_NAME function"
-}
diff --git a/storage/spider/mysql-test/spider/handler/t/have_partition.inc b/storage/spider/mysql-test/spider/handler/t/have_partition.inc
deleted file mode 100644
index b6e699475db..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/have_partition.inc
+++ /dev/null
@@ -1,7 +0,0 @@
-let $HAVE_PARTITION= 0;
-if (`SELECT count(*) FROM information_schema.plugins WHERE
- plugin_status = 'ACTIVE' AND
- plugin_name = 'partition'`)
-{
- let $HAVE_PARTITION= 1;
-}
diff --git a/storage/spider/mysql-test/spider/handler/t/have_trigger.inc b/storage/spider/mysql-test/spider/handler/t/have_trigger.inc
deleted file mode 100644
index 32de484b388..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/have_trigger.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-let $HAVE_TRIGGER= `SELECT COUNT(*) FROM information_schema.tables
- WHERE TABLE_SCHEMA = 'information_schema' AND TABLE_NAME = 'TRIGGERS'`;
diff --git a/storage/spider/mysql-test/spider/handler/t/hs_test_deinit.inc b/storage/spider/mysql-test/spider/handler/t/hs_test_deinit.inc
deleted file mode 100644
index 7ec2e981fd2..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/hs_test_deinit.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-# get connection and exist engine test
---echo for master_1
---connection master_1
---source ../include/hs_deinit_master_1.inc
---echo for child2
-if ($USE_CHILD_GROUP2)
-{
- --echo child2_1
- --connection child2_1
- --source ../include/hs_deinit_child2_1.inc
- --echo child2_2
- --connection child2_2
- --source ../include/hs_deinit_child2_2.inc
- --echo child2_3
- --connection child2_3
- --source ../include/hs_deinit_child2_3.inc
-}
diff --git a/storage/spider/mysql-test/spider/handler/t/hs_test_init.inc b/storage/spider/mysql-test/spider/handler/t/hs_test_init.inc
deleted file mode 100644
index 831bf479524..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/hs_test_init.inc
+++ /dev/null
@@ -1,17 +0,0 @@
-# get connection and exist engine test
---echo for master_1
---connection master_1
---source ../include/hs_init_master_1.inc
---echo for child2
-if ($USE_CHILD_GROUP2)
-{
- --echo child2_1
- --connection child2_1
- --source ../include/hs_init_child2_1.inc
- --echo child2_2
- --connection child2_2
- --source ../include/hs_init_child2_2.inc
- --echo child2_3
- --connection child2_3
- --source ../include/hs_init_child2_3.inc
-}
diff --git a/storage/spider/mysql-test/spider/handler/t/slave_test_deinit.inc b/storage/spider/mysql-test/spider/handler/t/slave_test_deinit.inc
deleted file mode 100644
index e9d99b7a960..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/slave_test_deinit.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-# get connection and exist engine test
---echo for slave1_1
---connection slave1_1
-STOP SLAVE;
---source ../include/deinit_slave1_1.inc
---disconnect slave1_1
diff --git a/storage/spider/mysql-test/spider/handler/t/slave_test_init.inc b/storage/spider/mysql-test/spider/handler/t/slave_test_init.inc
deleted file mode 100644
index 739d88970c5..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/slave_test_init.inc
+++ /dev/null
@@ -1,44 +0,0 @@
-# get connection and exist engine test
---echo for slave1_1
---source connect_slave1_1.inc
---connection slave1_1
-SET SESSION sql_log_bin= 0;
---let $SLAVE1_1_SERVER_ID=`SELECT @@global.server_id`
---let $TEST_ENGINE_TYPE= $SLAVE1_1_ENGINE_TYPE
---source have_partition.inc
---source have_trigger.inc
---source ../include/init_slave1_1.inc
---source have_engine.inc
---let $SLAVE1_1_SLAVE_STATUS=`SHOW SLAVE STATUS`
-if (!$SLAVE1_1_SLAVE_STATUS)
-{
- eval CHANGE MASTER TO
- MASTER_HOST = '127.0.0.1',
- MASTER_USER = 'root',
- MASTER_PASSWORD = '',
- MASTER_PORT = $MASTER_1_MYPORT
- ;
-}
-START SLAVE;
---connection master_1
-call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
---connection slave1_1
-call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
- --connection child2_2
- call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
- --connection child2_3
- call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
-}
-if ($USE_CHILD_GROUP3)
-{
- --connection child3_1
- call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
- --connection child3_2
- call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
- --connection child3_3
- call mtr.add_suppression("Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT");
-}
diff --git a/storage/spider/mysql-test/spider/handler/t/spider3_fixes.test b/storage/spider/mysql-test/spider/handler/t/spider3_fixes.test
deleted file mode 100644
index 30d22a6a16f..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/spider3_fixes.test
+++ /dev/null
@@ -1,297 +0,0 @@
-# This test tests for Spider 3.0's bug fixes
-source include/have_log_bin.inc;
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---source slave_test_init.inc
---enable_result_log
---enable_query_log
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_REPLICATION)
-{
- --connection slave1_1
- DROP DATABASE IF EXISTS auto_test_local;
- CREATE DATABASE auto_test_local;
- USE auto_test_local;
-}
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
-
---echo
---echo 3.1
---echo auto_increment
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_INCREMENT_TABLES1;
- echo CHILD2_1_CREATE_INCREMENT_TABLES1;
- echo CHILD2_1_AUTO_INCREMENT_INCREMENT2;
- echo CHILD2_1_AUTO_INCREMENT_OFFSET2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_INCREMENT_TABLES1;
- --enable_warnings
- eval $CHILD2_1_CREATE_INCREMENT_TABLES1;
- eval $CHILD2_1_AUTO_INCREMENT_INCREMENT2;
- eval $CHILD2_1_AUTO_INCREMENT_OFFSET2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SET @original_spider_auto_increment_mode = @@SESSION.spider_auto_increment_mode;
-SET SESSION spider_auto_increment_mode = -1;
-if ($USE_REPLICATION)
-{
- save_master_pos;
- --connection slave1_1
- sync_with_master;
- --connection master_1
- --disable_query_log
- SET SESSION sql_log_bin= 0;
- --enable_query_log
-}
---disable_warnings
-DROP TABLE IF EXISTS t1, t2;
---enable_warnings
---disable_query_log
-echo CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_1;
-echo CREATE TABLE t2 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_1;
-echo MASTER_1_AUTO_INCREMENT_INCREMENT2;
-echo MASTER_1_AUTO_INCREMENT_OFFSET2;
-eval CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_INCREMENT1_1;
-eval CREATE TABLE t2 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_INCREMENT1_1;
---disable_ps_protocol
-eval $MASTER_1_AUTO_INCREMENT_INCREMENT2;
-eval $MASTER_1_AUTO_INCREMENT_OFFSET2;
---enable_ps_protocol
-if ($USE_REPLICATION)
-{
- SET SESSION sql_log_bin= 1;
- --connection slave1_1
- --disable_warnings
- DROP TABLE IF EXISTS t1, t2;
- --enable_warnings
- echo CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_1;
- echo CREATE TABLE t2 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_1;
- eval CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $SLAVE1_1_ENGINE $SLAVE1_1_CHARSET $SLAVE1_1_COMMENT_INCREMENT1_1;
- eval CREATE TABLE t2 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $SLAVE1_1_ENGINE $SLAVE1_1_CHARSET $SLAVE1_1_COMMENT_INCREMENT1_1;
- --connection master_1
-}
---enable_query_log
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
-INSERT INTO t2 () VALUES ();
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t2;
---disable_query_log
-echo MASTER_1_AUTO_INCREMENT_OFFSET3;
-eval $MASTER_1_AUTO_INCREMENT_OFFSET3;
---enable_query_log
-INSERT INTO t1 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
---disable_query_log
-echo MASTER_1_AUTO_INCREMENT_OFFSET4;
-eval $MASTER_1_AUTO_INCREMENT_OFFSET4;
---enable_query_log
-INSERT INTO t2 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t2;
---disable_query_log
-echo MASTER_1_AUTO_INCREMENT_OFFSET3;
-eval $MASTER_1_AUTO_INCREMENT_OFFSET3;
---enable_query_log
-INSERT INTO t1 () VALUES (),(),(),();
-SELECT LAST_INSERT_ID();
-SELECT id FROM t1 ORDER BY id;
---disable_query_log
-echo MASTER_1_AUTO_INCREMENT_OFFSET4;
-eval $MASTER_1_AUTO_INCREMENT_OFFSET4;
---enable_query_log
-INSERT INTO t2 () VALUES (),(),(),();
-SELECT LAST_INSERT_ID();
-SELECT id FROM t2 ORDER BY id;
-TRUNCATE TABLE t1;
-TRUNCATE TABLE t2;
-INSERT INTO t1 () VALUES (),(),(),();
-SELECT LAST_INSERT_ID();
-SELECT id FROM t1 ORDER BY id;
-INSERT INTO t2 () VALUES (),(),(),();
-SELECT LAST_INSERT_ID();
-SELECT id FROM t2 ORDER BY id;
-SET INSERT_ID=5000;
---disable_query_log
-echo MASTER_1_AUTO_INCREMENT_OFFSET3;
-eval $MASTER_1_AUTO_INCREMENT_OFFSET3;
---enable_query_log
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
---disable_query_log
-echo MASTER_1_AUTO_INCREMENT_OFFSET4;
-eval $MASTER_1_AUTO_INCREMENT_OFFSET4;
---enable_query_log
-INSERT INTO t2 () VALUES ();
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t2;
-INSERT INTO t1 (id) VALUES (10000);
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
-INSERT INTO t2 (id) VALUES (1000);
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t2;
-SET SESSION spider_auto_increment_mode = @original_spider_auto_increment_mode;
-if ($USE_REPLICATION)
-{
- save_master_pos;
- --connection slave1_1
- sync_with_master;
- SELECT id FROM t1 ORDER BY id;
- --connection master_1
- --disable_query_log
- SET SESSION sql_log_bin= 0;
- --enable_query_log
-}
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_INCREMENT_TABLES1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_AUTO_INCREMENT_INCREMENT1;
- echo CHILD2_1_AUTO_INCREMENT_OFFSET1;
- }
- eval $CHILD2_1_AUTO_INCREMENT_INCREMENT1;
- eval $CHILD2_1_AUTO_INCREMENT_OFFSET1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_REPLICATION)
-{
- --connection slave1_1
- DROP DATABASE IF EXISTS auto_test_local;
-}
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source slave_test_deinit.inc
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/spider3_fixes_part.test b/storage/spider/mysql-test/spider/handler/t/spider3_fixes_part.test
deleted file mode 100644
index e9c9c194e5c..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/spider3_fixes_part.test
+++ /dev/null
@@ -1,350 +0,0 @@
-# This test tests for Spider 3.0's bug fixes
-source include/have_log_bin.inc;
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---source slave_test_init.inc
---enable_result_log
---enable_query_log
-if (!$HAVE_PARTITION)
-{
- --disable_query_log
- --disable_result_log
- --source slave_test_deinit.inc
- --source test_deinit.inc
- --enable_result_log
- --enable_query_log
- --enable_warnings
- skip Test requires partitioning;
-}
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_REPLICATION)
-{
- --connection slave1_1
- DROP DATABASE IF EXISTS auto_test_local;
- CREATE DATABASE auto_test_local;
- USE auto_test_local;
-}
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
-
---echo auto_increment with partition
-if ($HAVE_PARTITION)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_INCREMENT_TABLES1;
- echo CHILD2_1_CREATE_INCREMENT_TABLES1;
- echo CHILD2_1_AUTO_INCREMENT_INCREMENT2;
- echo CHILD2_1_AUTO_INCREMENT_OFFSET2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_INCREMENT_TABLES1;
- --enable_warnings
- eval $CHILD2_1_CREATE_INCREMENT_TABLES1;
- eval $CHILD2_1_AUTO_INCREMENT_INCREMENT2;
- eval $CHILD2_1_AUTO_INCREMENT_OFFSET2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_INCREMENT_TABLES1;
- echo CHILD2_2_CREATE_INCREMENT_TABLES1;
- echo CHILD2_2_AUTO_INCREMENT_INCREMENT2;
- echo CHILD2_2_AUTO_INCREMENT_OFFSET2;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_INCREMENT_TABLES1;
- --enable_warnings
- eval $CHILD2_2_CREATE_INCREMENT_TABLES1;
- eval $CHILD2_2_AUTO_INCREMENT_INCREMENT2;
- eval $CHILD2_2_AUTO_INCREMENT_OFFSET2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SET @original_spider_auto_increment_mode = @@SESSION.spider_auto_increment_mode;
- SET SESSION spider_auto_increment_mode = -1;
- if ($USE_REPLICATION)
- {
- save_master_pos;
- --connection slave1_1
- sync_with_master;
- --connection master_1
- --disable_query_log
- SET SESSION sql_log_bin= 0;
- --enable_query_log
- }
- --disable_warnings
- DROP TABLE IF EXISTS t1, t2;
- --enable_warnings
- --disable_query_log
- echo CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_P_1;
- echo CREATE TABLE t2 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_P_1;
- echo MASTER_1_AUTO_INCREMENT_INCREMENT2;
- echo MASTER_1_AUTO_INCREMENT_OFFSET2;
- eval CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_INCREMENT1_P_1;
- eval CREATE TABLE t2 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_INCREMENT1_P_1;
- --disable_ps_protocol
- eval $MASTER_1_AUTO_INCREMENT_INCREMENT2;
- eval $MASTER_1_AUTO_INCREMENT_OFFSET2;
- --enable_ps_protocol
- if ($USE_REPLICATION)
- {
- SET SESSION sql_log_bin= 1;
- --connection slave1_1
- --disable_warnings
- DROP TABLE IF EXISTS t1, t2;
- --enable_warnings
- echo CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_P_1;
- echo CREATE TABLE t2 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_P_1;
- eval CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $SLAVE1_1_ENGINE $SLAVE1_1_CHARSET $SLAVE1_1_COMMENT_INCREMENT1_P_1;
- eval CREATE TABLE t2 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $SLAVE1_1_ENGINE $SLAVE1_1_CHARSET $SLAVE1_1_COMMENT_INCREMENT1_P_1;
- --connection master_1
- }
- --enable_query_log
- INSERT INTO t1 () VALUES ();
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- INSERT INTO t2 () VALUES ();
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t2;
- --disable_query_log
- echo MASTER_1_AUTO_INCREMENT_OFFSET3;
- eval $MASTER_1_AUTO_INCREMENT_OFFSET3;
- --enable_query_log
- INSERT INTO t1 (id) VALUES (null);
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- --disable_query_log
- echo MASTER_1_AUTO_INCREMENT_OFFSET4;
- eval $MASTER_1_AUTO_INCREMENT_OFFSET4;
- --enable_query_log
- INSERT INTO t2 (id) VALUES (null);
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t2;
- --disable_query_log
- echo MASTER_1_AUTO_INCREMENT_OFFSET3;
- eval $MASTER_1_AUTO_INCREMENT_OFFSET3;
- --enable_query_log
- INSERT INTO t1 () VALUES (),(),(),();
- SELECT LAST_INSERT_ID();
- SELECT id FROM t1 ORDER BY id;
- --disable_query_log
- echo MASTER_1_AUTO_INCREMENT_OFFSET4;
- eval $MASTER_1_AUTO_INCREMENT_OFFSET4;
- --enable_query_log
- INSERT INTO t2 () VALUES (),(),(),();
- SELECT LAST_INSERT_ID();
- SELECT id FROM t2 ORDER BY id;
- TRUNCATE TABLE t1;
- TRUNCATE TABLE t2;
- INSERT INTO t1 () VALUES (),(),(),();
- SELECT LAST_INSERT_ID();
- SELECT id FROM t1 ORDER BY id;
- INSERT INTO t2 () VALUES (),(),(),();
- SELECT LAST_INSERT_ID();
- SELECT id FROM t2 ORDER BY id;
- SET INSERT_ID=5000;
- --disable_query_log
- echo MASTER_1_AUTO_INCREMENT_OFFSET3;
- eval $MASTER_1_AUTO_INCREMENT_OFFSET3;
- --enable_query_log
- INSERT INTO t1 () VALUES ();
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- --disable_query_log
- echo MASTER_1_AUTO_INCREMENT_OFFSET4;
- eval $MASTER_1_AUTO_INCREMENT_OFFSET4;
- --enable_query_log
- INSERT INTO t2 () VALUES ();
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t2;
- INSERT INTO t1 (id) VALUES (10000);
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- INSERT INTO t2 (id) VALUES (1000);
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t2;
- SET SESSION spider_auto_increment_mode = @original_spider_auto_increment_mode;
- if ($USE_REPLICATION)
- {
- save_master_pos;
- --connection slave1_1
- sync_with_master;
- SELECT id FROM t1 ORDER BY id;
- --connection master_1
- --disable_query_log
- SET SESSION sql_log_bin= 0;
- --enable_query_log
- }
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_INCREMENT_TABLES1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_AUTO_INCREMENT_INCREMENT1;
- echo CHILD2_1_AUTO_INCREMENT_OFFSET1;
- }
- eval $CHILD2_1_AUTO_INCREMENT_INCREMENT1;
- eval $CHILD2_1_AUTO_INCREMENT_OFFSET1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_2_SELECT_INCREMENT_TABLES1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_AUTO_INCREMENT_INCREMENT1;
- echo CHILD2_2_AUTO_INCREMENT_OFFSET1;
- }
- eval $CHILD2_2_AUTO_INCREMENT_INCREMENT1;
- eval $CHILD2_2_AUTO_INCREMENT_OFFSET1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_REPLICATION)
-{
- --connection slave1_1
- DROP DATABASE IF EXISTS auto_test_local;
-}
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source slave_test_deinit.inc
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/spider_fixes.test b/storage/spider/mysql-test/spider/handler/t/spider_fixes.test
deleted file mode 100644
index 5a3c1d1c893..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/spider_fixes.test
+++ /dev/null
@@ -1,1433 +0,0 @@
-# This test tests for Spider's bug fixes
-source include/have_log_bin.inc;
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---source slave_test_init.inc
---enable_result_log
---enable_query_log
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_REPLICATION)
-{
- --connection slave1_1
- DROP DATABASE IF EXISTS auto_test_local;
- CREATE DATABASE auto_test_local;
- USE auto_test_local;
-}
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo create table and insert
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES;
- echo CHILD2_1_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS tb_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2;
-eval CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE2 $MASTER_1_CHARSET2;
---enable_query_log
-INSERT INTO tb_l (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l (
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1;
-eval CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1;
---enable_query_log
-INSERT INTO ta_l SELECT a, b, c FROM tb_l;
-
---echo
---echo 2.13
---echo select table with "order by desc" and "<"
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-WHERE a < 5 ORDER BY a DESC LIMIT 3;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo select table with "order by desc" and "<="
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l
-WHERE a <= 5 ORDER BY a DESC LIMIT 3;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo 2.14
---echo update table with range scan and split_read
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-UPDATE ta_l SET c = '2000-02-02 00:00:00' WHERE a > 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l ORDER BY a;
-
---echo
---echo 2.15
---echo select table with range scan
-TRUNCATE TABLE ta_l;
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
---enable_warnings
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES6;
- echo CHILD2_1_CREATE_TABLES6;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES6;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES6;
- --enable_query_log
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_result_log
- }
-}
---connection master_1
---disable_query_log
-echo CREATE TABLE ta_l (
- a int(11) NOT NULL DEFAULT '0',
- b char(1) DEFAULT NULL,
- c datetime DEFAULT NULL,
- PRIMARY KEY (a, b, c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT5_2_1;
-eval CREATE TABLE ta_l (
- a int(11) NOT NULL DEFAULT '0',
- b char(1) DEFAULT NULL,
- c datetime DEFAULT NULL,
- PRIMARY KEY (a, b, c)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT5_2_1;
---enable_query_log
-INSERT INTO ta_l SELECT a, b, c FROM tb_l;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b >= 'b'
-AND c = '2003-11-30 05:01:03';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b > 'b'
-AND c = '2003-11-30 05:01:03';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a >= 4 AND b = 'd'
-AND c = '2003-11-30 05:01:03';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a > 4 AND b = 'c'
-AND c = '2001-12-31 23:59:59';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b <= 'd'
-AND c = '2003-11-30 05:01:03';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b < 'e'
-AND c = '2003-11-30 05:01:03';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a <= 4 AND b = 'b'
-AND c = '2000-01-01 00:00:00';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a < 4 AND b = 'b'
-AND c = '2000-01-01 00:00:00';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b >= 'b'
-AND b <= 'd' AND c = '2003-11-30 05:01:03';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a = 4 AND b > 'b'
-AND b < 'e' AND c = '2003-11-30 05:01:03';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a <= 4 AND a >= 1
-AND b >= 'b' AND c = '2003-11-30 05:01:03';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l FORCE INDEX(PRIMARY) WHERE a < 4 AND a > 1
-AND b >= 'b' AND c = '2000-01-01 00:00:00';
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo 2.16
---echo auto_increment insert with trigger
-if ($HAVE_TRIGGER)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_result_log
- }
- --disable_query_log
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- echo CHILD2_1_DROP_TABLES4;
- echo CHILD2_1_CREATE_TABLES4;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES4;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES4;
- --enable_query_log
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_result_log
- }
- }
- --connection master_1
- --disable_query_log
- echo CREATE TABLE ta_l_auto_inc (
- a INT AUTO_INCREMENT,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT3_2_1;
- eval CREATE TABLE ta_l_auto_inc (
- a INT AUTO_INCREMENT,
- b CHAR(1) DEFAULT 'c',
- c DATETIME DEFAULT '1999-10-10 10:10:10',
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT3_2_1;
- echo CREATE TABLE tc_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) MASTER_1_ENGINE2 MASTER_1_CHARSET2;
- eval CREATE TABLE tc_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE2 $MASTER_1_CHARSET2;
- --enable_query_log
- --eval CREATE TRIGGER ins_ta_l_auto_inc AFTER INSERT ON ta_l_auto_inc FOR EACH ROW BEGIN INSERT INTO tc_l (a, b, c) VALUES (NEW.a, NEW.b, NEW.c); END;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- INSERT INTO ta_l_auto_inc (a, b, c) VALUES
- (NULL, 's', '2008-12-31 20:59:59');
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_TABLES4;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM tc_l ORDER BY a;
-}
-
---echo
---echo 2.17
---echo engine-condition-pushdown with "or" and joining
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l WHERE a = 1 OR a IN (SELECT a FROM tb_l);
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo 2.23
---echo index merge
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_result_log
- }
- --disable_query_log
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- echo CHILD2_1_DROP_TABLES5;
- echo CHILD2_1_CREATE_TABLES5;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES5;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES5;
- --enable_query_log
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_result_log
- }
-}
---connection master_1
---disable_query_log
-echo CREATE TABLE ta_l_int (
- a INT AUTO_INCREMENT,
- b INT DEFAULT 10,
- c INT DEFAULT 11,
- PRIMARY KEY(a),
- KEY idx1(b),
- KEY idx2(c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT4_2_1;
-eval CREATE TABLE ta_l_int (
- a INT AUTO_INCREMENT,
- b INT DEFAULT 10,
- c INT DEFAULT 11,
- PRIMARY KEY(a),
- KEY idx1(b),
- KEY idx2(c)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT4_2_1;
---enable_query_log
-INSERT INTO ta_l_int (a, b, c) VALUES (1, 2, 3);
-INSERT INTO ta_l_int (a, b, c) SELECT a + 1, b + 1, c + 1 FROM ta_l_int;
-INSERT INTO ta_l_int (a, b, c) SELECT a + 2, b + 2, c + 2 FROM ta_l_int;
-INSERT INTO ta_l_int (a, b, c) SELECT a + 4, b + 4, c + 4 FROM ta_l_int;
-INSERT INTO ta_l_int (a, b, c) SELECT a + 8, b + 8, c + 8 FROM ta_l_int;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l_int force index(primary, idx1, idx2)
-WHERE a = 5 OR b = 5 OR c = 5 ORDER BY a;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo 2.24
---echo index scan update without PK
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS ta_l_int;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l_int (
- a INT NOT NULL,
- b INT DEFAULT 10,
- c INT DEFAULT 11,
- KEY idx1(b),
- KEY idx2(c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT4_2_1;
-if ($MASTER_1_NEEDPK)
-{
- --error ER_REQUIRES_PRIMARY_KEY
- eval CREATE TABLE ta_l_int (
- a INT NOT NULL,
- b INT DEFAULT 10,
- c INT DEFAULT 11,
- KEY idx1(b),
- KEY idx2(c)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT4_2_1;
- eval CREATE TABLE ta_l_int (
- a INT NOT NULL,
- b INT DEFAULT 10,
- c INT DEFAULT 11,
- PRIMARY KEY(a),
- KEY idx1(b),
- KEY idx2(c)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT4_2_1;
-}
-if (!$MASTER_1_NEEDPK)
-{
- eval CREATE TABLE ta_l_int (
- a INT NOT NULL,
- b INT DEFAULT 10,
- c INT DEFAULT 11,
- KEY idx1(b),
- KEY idx2(c)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT4_2_1;
-}
---enable_query_log
-SELECT a, b, c FROM ta_l_int ORDER BY a;
-INSERT INTO ta_l_int (a, b, c) VALUES (0, 2, 3);
-INSERT INTO ta_l_int (a, b, c) VALUES (18, 2, 3);
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-UPDATE ta_l_int SET c = 4 WHERE b = 2;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%update %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SELECT a, b, c FROM ta_l_int ORDER BY a;
-
-
---echo
---echo 2.25
---echo direct order limit
---connection master_1
-eval $MASTER_1_CHECK_DIRECT_ORDER_LIMIT_STATUS;
-SELECT a, b, c FROM ta_l_int ORDER BY a LIMIT 3;
-eval $MASTER_1_CHECK_DIRECT_ORDER_LIMIT_STATUS;
-
-
---echo
---echo 2.26
---echo lock tables
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_LOCK_TABLES1;
- echo CHILD2_1_DROP_LOCK_TABLES2;
- echo CHILD2_1_CREATE_LOCK_TABLES1;
- echo CHILD2_1_CREATE_LOCK_TABLES2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_LOCK_TABLES1;
- eval $CHILD2_1_DROP_LOCK_TABLES2;
- --enable_warnings
- eval $CHILD2_1_CREATE_LOCK_TABLES1;
- eval $CHILD2_1_CREATE_LOCK_TABLES2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_LOCK_TABLES1;
- echo CHILD2_2_DROP_LOCK_TABLES2;
- echo CHILD2_2_CREATE_LOCK_TABLES1;
- echo CHILD2_2_CREATE_LOCK_TABLES2;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_LOCK_TABLES1;
- eval $CHILD2_2_DROP_LOCK_TABLES2;
- --enable_warnings
- eval $CHILD2_2_CREATE_LOCK_TABLES1;
- eval $CHILD2_2_CREATE_LOCK_TABLES2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS t1;
-DROP TABLE IF EXISTS t2;
---enable_warnings
---disable_query_log
-echo CREATE TABLE t1 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_LOCK1;
-eval CREATE TABLE t1 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_LOCK1;
-echo CREATE TABLE t2 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_LOCK2;
-eval CREATE TABLE t2 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_LOCK2;
---enable_query_log
-LOCK TABLES t1 READ, t2 READ;
-UNLOCK TABLES;
-
-
---echo
---echo auto_increment
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_INCREMENT_TABLES1;
- echo CHILD2_1_CREATE_INCREMENT_TABLES1;
- echo CHILD2_1_AUTO_INCREMENT_INCREMENT2;
- echo CHILD2_1_AUTO_INCREMENT_OFFSET2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_INCREMENT_TABLES1;
- --enable_warnings
- eval $CHILD2_1_CREATE_INCREMENT_TABLES1;
- eval $CHILD2_1_AUTO_INCREMENT_INCREMENT2;
- eval $CHILD2_1_AUTO_INCREMENT_OFFSET2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-SET @original_spider_auto_increment_mode = @@SESSION.spider_auto_increment_mode;
-SET SESSION spider_auto_increment_mode = -1;
-if ($USE_REPLICATION)
-{
- save_master_pos;
- --connection slave1_1
- sync_with_master;
- --connection master_1
- --disable_query_log
- SET SESSION sql_log_bin= 0;
- --enable_query_log
-}
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
---disable_query_log
-echo CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_1;
-echo MASTER_1_AUTO_INCREMENT_INCREMENT2;
-echo MASTER_1_AUTO_INCREMENT_OFFSET2;
-eval CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_INCREMENT1_1;
---disable_ps_protocol
-eval $MASTER_1_AUTO_INCREMENT_INCREMENT2;
-eval $MASTER_1_AUTO_INCREMENT_OFFSET2;
---enable_ps_protocol
-if ($USE_REPLICATION)
-{
- SET SESSION sql_log_bin= 1;
- --connection slave1_1
- --disable_warnings
- DROP TABLE IF EXISTS t1;
- --enable_warnings
- echo CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_1;
- eval CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $SLAVE1_1_ENGINE $SLAVE1_1_CHARSET $SLAVE1_1_COMMENT_INCREMENT1_1;
- --connection master_1
-}
---enable_query_log
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
-INSERT INTO t1 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
-INSERT INTO t1 (id) VALUES (null);
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
-INSERT INTO t1 () VALUES (),(),(),();
-SELECT LAST_INSERT_ID();
-SELECT id FROM t1 ORDER BY id;
-SET INSERT_ID=5000;
-INSERT INTO t1 () VALUES ();
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
-INSERT INTO t1 (id) VALUES (10000);
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
-INSERT INTO t1 (id) VALUES (1000);
-SELECT LAST_INSERT_ID();
-SELECT MAX(id) FROM t1;
-SET SESSION spider_auto_increment_mode = @original_spider_auto_increment_mode;
-if ($USE_REPLICATION)
-{
- save_master_pos;
- --connection slave1_1
- sync_with_master;
- SELECT id FROM t1 ORDER BY id;
- --connection master_1
- --disable_query_log
- SET SESSION sql_log_bin= 0;
- --enable_query_log
-}
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_INCREMENT_TABLES1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_AUTO_INCREMENT_INCREMENT1;
- echo CHILD2_1_AUTO_INCREMENT_OFFSET1;
- }
- eval $CHILD2_1_AUTO_INCREMENT_INCREMENT1;
- eval $CHILD2_1_AUTO_INCREMENT_OFFSET1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
-
---echo
---echo read only
-let $MASTER_1_ENGINE_IS_SPIDER=
- `SELECT IF('$MASTER_1_ENGINE_TYPE' = 'Spider' OR
- '$MASTER_1_HIDDEN_ENGINE_TYPE' = 'Spider', 1, 0)`;
-if ($MASTER_1_ENGINE_IS_SPIDER)
-{
- --connection master_1
- SET @original_spider_read_only_mode = @@SESSION.spider_read_only_mode;
- SET SESSION spider_read_only_mode = -1;
- --disable_warnings
- DROP TABLE IF EXISTS t1;
- --enable_warnings
- --disable_query_log
- echo CREATE TABLE t1 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
- ) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_READONLY1_1;
- eval CREATE TABLE t1 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_READONLY1_1;
- --let $MIN_VAL= `SELECT MIN(id) FROM t1`
- --enable_query_log
- SELECT id FROM t1 ORDER BY id;
- --error 12518
- INSERT INTO t1 (id) VALUES (1);
- --error 12518
- eval UPDATE t1 SET id = 4 WHERE id = $MIN_VAL;
- --error 12518
- eval DELETE FROM t1 WHERE id = $MIN_VAL;
- --error 12518
- DELETE FROM t1;
- --error 12518
- TRUNCATE t1;
- SET SESSION spider_read_only_mode = @original_spider_read_only_mode;
-}
-if (!$MASTER_1_ENGINE_IS_SPIDER)
-{
- --echo skipped
-}
-
-
---echo
---echo 2.27
---echo error mode
-if ($MASTER_1_ENGINE_IS_SPIDER)
-{
- --connection master_1
- SET @original_spider_error_read_mode = @@SESSION.spider_error_read_mode;
- SET @original_spider_error_write_mode = @@SESSION.spider_error_write_mode;
- SET SESSION spider_error_read_mode = -1;
- SET SESSION spider_error_write_mode = -1;
- --disable_warnings
- DROP TABLE IF EXISTS t1;
- --enable_warnings
- --disable_query_log
- echo CREATE TABLE t1 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
- ) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_ERROR_MODE1_1;
- eval CREATE TABLE t1 (
- id int(11) NOT NULL,
- PRIMARY KEY (id)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_ERROR_MODE1_1;
- --enable_query_log
- SELECT id FROM t1 ORDER BY id;
- INSERT INTO t1 (id) VALUES (1);
- DELETE FROM t1;
- TRUNCATE t1;
- SET SESSION spider_error_read_mode = @original_spider_error_read_mode;
- SET SESSION spider_error_write_mode = @original_spider_error_write_mode;
-}
-if (!$MASTER_1_ENGINE_IS_SPIDER)
-{
- --echo skipped
-}
-
-
---echo
---echo 3.0
---echo is null
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_result_log
- }
- --disable_query_log
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- echo CHILD2_1_DROP_TEXT_KEY_TABLES1;
- echo CHILD2_1_CREATE_TEXT_KEY_TABLES1;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TEXT_KEY_TABLES1;
- --enable_warnings
- eval $CHILD2_1_CREATE_TEXT_KEY_TABLES1;
- --enable_query_log
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
---disable_query_log
-echo CREATE TABLE t1 (
- a VARCHAR(255),
- b VARCHAR(255),
- c VARCHAR(255),
- KEY idx1(a,b),
- KEY idx2(b),
- PRIMARY KEY(c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_TEXT_KEY1_1;
-eval CREATE TABLE t1 (
- a VARCHAR(255),
- b VARCHAR(255),
- c VARCHAR(255),
- KEY idx1(a,b),
- KEY idx2(b),
- PRIMARY KEY(c)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_TEXT_KEY1_1;
---enable_query_log
-insert into t1 values (null, null, '2048');
-insert into t1 values ('1', '1', '1');
-insert into t1 select a + 1, b + 1, c + 1 from t1;
-insert into t1 select a + 2, b + 2, c + 2 from t1;
-insert into t1 select a + 4, b + 4, c + 4 from t1;
-insert into t1 select a + 8, b + 8, c + 8 from t1;
-insert into t1 select a + 16, b + 16, c + 16 from t1;
-insert into t1 select a + 32, b + 32, c + 32 from t1;
-insert into t1 select a + 64, b + 64, c + 64 from t1;
-insert into t1 select a + 128, b + 128, c + 128 from t1;
-insert into t1 select a + 256, b + 256, c + 256 from t1;
-insert into t1 select a + 512, b + 512, c + 512 from t1;
-flush tables;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-select a from t1 where a is null order by a limit 30;
-select b from t1 where b is null order by b limit 30;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TEXT_PK_TABLES1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
-
---echo
---echo direct_order_limit
---connection master_1
-TRUNCATE TABLE t1;
-insert into t1 values ('1', '1', '1');
-insert into t1 select a + 1, b + 1, c + 1 from t1;
-insert into t1 select a + 2, b + 2, c + 2 from t1;
-insert into t1 select a + 4, b + 4, c + 4 from t1;
-insert into t1 select a + 8, b + 8, c + 8 from t1;
-insert into t1 select a + 16, b + 16, c + 16 from t1;
-insert into t1 select a, b + 32, c + 32 from t1;
-insert into t1 select a, b + 64, c + 64 from t1;
-insert into t1 select a, b + 128, c + 128 from t1;
-flush tables;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-select a, b, c from t1 where a = '10' and b <> '100' order by c desc limit 5;
-select a, c from t1 where a = '10' order by b desc limit 5;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TEXT_PK_TABLES1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_REPLICATION)
-{
- --connection slave1_1
- DROP DATABASE IF EXISTS auto_test_local;
-}
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source slave_test_deinit.inc
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/spider_fixes_part.test b/storage/spider/mysql-test/spider/handler/t/spider_fixes_part.test
deleted file mode 100644
index 22ba6102405..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/spider_fixes_part.test
+++ /dev/null
@@ -1,650 +0,0 @@
-# This test tests for Spider's bug fixes
-source include/have_log_bin.inc;
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---source slave_test_init.inc
---enable_result_log
---enable_query_log
-if (!$HAVE_PARTITION)
-{
- --disable_query_log
- --disable_result_log
- --source slave_test_deinit.inc
- --source test_deinit.inc
- --enable_result_log
- --enable_query_log
- --enable_warnings
- skip Test requires partitioning;
-}
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_REPLICATION)
-{
- --connection slave1_1
- DROP DATABASE IF EXISTS auto_test_local;
- CREATE DATABASE auto_test_local;
- USE auto_test_local;
-}
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS tb_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2;
-eval CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE2 $MASTER_1_CHARSET2;
---enable_query_log
-INSERT INTO tb_l (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
-
---echo
---echo 2.17
---echo partition with sort
-if ($HAVE_PARTITION)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_TABLES;
- echo CHILD2_2_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_2_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES2;
- echo CHILD2_1_CREATE_TABLES2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES2;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- --disable_query_log
- echo CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) MASTER_1_ENGINE MASTER_1_COMMENT2_P_2_1;
- eval CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_COMMENT2_P_2_1;
- --enable_query_log
- INSERT INTO ta_l2 SELECT a, b, c FROM tb_l;
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2 WHERE a > 1
- ORDER BY a;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- eval $CHILD2_1_SELECT_TABLES2;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
---echo
---echo 2.23
---echo partition update with moving partition
-if ($HAVE_PARTITION)
-{
- --connection master_1
- --disable_warnings
- DROP TABLE IF EXISTS ta_l2;
- --enable_warnings
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_TABLES;
- echo CHILD2_2_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_2_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES2;
- echo CHILD2_1_CREATE_TABLES2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES2;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- --disable_query_log
- echo CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) MASTER_1_ENGINE MASTER_1_COMMENT2_P_2_1;
- eval CREATE TABLE ta_l2 (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
- ) $MASTER_1_ENGINE $MASTER_1_COMMENT2_P_2_1;
- --enable_query_log
- INSERT INTO ta_l2 (a, b, c) VALUES (3, 'B', '2010-09-26 00:00:00');
- UPDATE ta_l2 SET a = 4 WHERE a = 3;
- SELECT a, b, date_format(c, '%Y-%m-%d %H:%i:%s') FROM ta_l2;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%update %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%delete %';
- }
- eval $CHILD2_2_SELECT_TABLES;
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%update %';
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%delete %';
- }
- eval $CHILD2_1_SELECT_TABLES2;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
---echo index merge with partition
-if ($HAVE_PARTITION)
-{
- --connection master_1
- --disable_warnings
- DROP TABLE IF EXISTS ta_l_int;
- --enable_warnings
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_result_log
- }
- --disable_query_log
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- echo CHILD2_2_DROP_TABLES5;
- echo CHILD2_2_CREATE_TABLES5;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_TABLES5;
- --enable_warnings
- eval $CHILD2_2_CREATE_TABLES5;
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- echo CHILD2_1_DROP_TABLES5;
- echo CHILD2_1_CREATE_TABLES5;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES5;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES5;
- --enable_query_log
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_result_log
- }
- }
- --connection master_1
- --disable_query_log
- echo CREATE TABLE ta_l_int (
- a INT AUTO_INCREMENT,
- b INT DEFAULT 10,
- c INT DEFAULT 11,
- PRIMARY KEY(a),
- KEY idx1(b),
- KEY idx2(c)
- ) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT3_P_2_1;
- eval CREATE TABLE ta_l_int (
- a INT AUTO_INCREMENT,
- b INT DEFAULT 10,
- c INT DEFAULT 11,
- PRIMARY KEY(a),
- KEY idx1(b),
- KEY idx2(c)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT3_P_2_1;
- --enable_query_log
- INSERT INTO ta_l_int (a, b, c) VALUES (1, 2, 3);
- INSERT INTO ta_l_int (a, b, c) SELECT a + 1, b + 1, c + 1 FROM ta_l_int;
- INSERT INTO ta_l_int (a, b, c) SELECT a + 2, b + 2, c + 2 FROM ta_l_int;
- INSERT INTO ta_l_int (a, b, c) SELECT a + 4, b + 4, c + 4 FROM ta_l_int;
- INSERT INTO ta_l_int (a, b, c) SELECT a + 8, b + 8, c + 8 FROM ta_l_int;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SELECT a, b, c FROM ta_l_int force index(primary, idx1, idx2)
- WHERE a = 5 OR b = 5 OR c = 5 ORDER BY a;
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
-
---echo
---echo 2.26
---echo auto_increment with partition
-if ($HAVE_PARTITION)
-{
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_INCREMENT_TABLES1;
- echo CHILD2_1_CREATE_INCREMENT_TABLES1;
- echo CHILD2_1_AUTO_INCREMENT_INCREMENT2;
- echo CHILD2_1_AUTO_INCREMENT_OFFSET2;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_INCREMENT_TABLES1;
- --enable_warnings
- eval $CHILD2_1_CREATE_INCREMENT_TABLES1;
- eval $CHILD2_1_AUTO_INCREMENT_INCREMENT2;
- eval $CHILD2_1_AUTO_INCREMENT_OFFSET2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- --connection child2_2
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_DROP_INCREMENT_TABLES1;
- echo CHILD2_2_CREATE_INCREMENT_TABLES1;
- echo CHILD2_2_AUTO_INCREMENT_INCREMENT2;
- echo CHILD2_2_AUTO_INCREMENT_OFFSET2;
- }
- --disable_warnings
- eval $CHILD2_2_DROP_INCREMENT_TABLES1;
- --enable_warnings
- eval $CHILD2_2_CREATE_INCREMENT_TABLES1;
- eval $CHILD2_2_AUTO_INCREMENT_INCREMENT2;
- eval $CHILD2_2_AUTO_INCREMENT_OFFSET2;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
- --connection master_1
- SET @original_spider_auto_increment_mode = @@SESSION.spider_auto_increment_mode;
- SET SESSION spider_auto_increment_mode = -1;
- if ($USE_REPLICATION)
- {
- save_master_pos;
- --connection slave1_1
- sync_with_master;
- --connection master_1
- --disable_query_log
- SET SESSION sql_log_bin= 0;
- --enable_query_log
- }
- --disable_warnings
- DROP TABLE IF EXISTS t1;
- --enable_warnings
- --disable_query_log
- echo CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_INCREMENT1_P_1;
- echo MASTER_1_AUTO_INCREMENT_INCREMENT2;
- echo MASTER_1_AUTO_INCREMENT_OFFSET2;
- eval CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_INCREMENT1_P_1;
- --disable_ps_protocol
- eval $MASTER_1_AUTO_INCREMENT_INCREMENT2;
- eval $MASTER_1_AUTO_INCREMENT_OFFSET2;
- --enable_ps_protocol
- if ($USE_REPLICATION)
- {
- SET SESSION sql_log_bin= 1;
- --connection slave1_1
- --disable_warnings
- DROP TABLE IF EXISTS t1;
- --enable_warnings
- echo CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) SLAVE1_1_ENGINE SLAVE1_1_CHARSET SLAVE1_1_COMMENT_INCREMENT1_P_1;
- eval CREATE TABLE t1 (
- id int(11) NOT NULL AUTO_INCREMENT,
- PRIMARY KEY (id)
- ) $SLAVE1_1_ENGINE $SLAVE1_1_CHARSET $SLAVE1_1_COMMENT_INCREMENT1_P_1;
- --connection master_1
- }
- --enable_query_log
- INSERT INTO t1 () VALUES ();
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- INSERT INTO t1 () VALUES ();
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- INSERT INTO t1 (id) VALUES (null);
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- INSERT INTO t1 (id) VALUES (null);
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- INSERT INTO t1 () VALUES (),(),(),();
- SELECT LAST_INSERT_ID();
- SELECT id FROM t1 ORDER BY id;
- SET INSERT_ID=5000;
- INSERT INTO t1 () VALUES ();
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- INSERT INTO t1 (id) VALUES (10000);
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- INSERT INTO t1 (id) VALUES (1000);
- SELECT LAST_INSERT_ID();
- SELECT MAX(id) FROM t1;
- SET SESSION spider_auto_increment_mode = @original_spider_auto_increment_mode;
- if ($USE_REPLICATION)
- {
- save_master_pos;
- --connection slave1_1
- sync_with_master;
- SELECT id FROM t1 ORDER BY id;
- --connection master_1
- --disable_query_log
- SET SESSION sql_log_bin= 0;
- --enable_query_log
- }
- if ($USE_CHILD_GROUP2)
- {
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_INCREMENT_TABLES1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_AUTO_INCREMENT_INCREMENT1;
- echo CHILD2_1_AUTO_INCREMENT_OFFSET1;
- }
- eval $CHILD2_1_AUTO_INCREMENT_INCREMENT1;
- eval $CHILD2_1_AUTO_INCREMENT_OFFSET1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- --connection child2_2
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_2_SELECT_INCREMENT_TABLES1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_2_AUTO_INCREMENT_INCREMENT1;
- echo CHILD2_2_AUTO_INCREMENT_OFFSET1;
- }
- eval $CHILD2_2_AUTO_INCREMENT_INCREMENT1;
- eval $CHILD2_2_AUTO_INCREMENT_OFFSET1;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
- }
-}
-
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_REPLICATION)
-{
- --connection slave1_1
- DROP DATABASE IF EXISTS auto_test_local;
-}
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source slave_test_deinit.inc
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/handler/t/test_deinit.inc b/storage/spider/mysql-test/spider/handler/t/test_deinit.inc
deleted file mode 100644
index 989bde26d3c..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/test_deinit.inc
+++ /dev/null
@@ -1,37 +0,0 @@
-# get connection and exist engine test
---echo for master_1
---connection master_1
---source ../include/deinit_master_1.inc
---disconnect master_1
---echo for child2
-if ($USE_CHILD_GROUP2)
-{
- --echo child2_1
- --connection child2_1
- --source ../include/deinit_child2_1.inc
- --disconnect child2_1
- --echo child2_2
- --connection child2_2
- --source ../include/deinit_child2_2.inc
- --disconnect child2_2
- --echo child2_3
- --connection child2_3
- --source ../include/deinit_child2_3.inc
- --disconnect child2_3
-}
---echo for child3
-if ($USE_CHILD_GROUP3)
-{
- --echo child3_1
- --connection child3_1
- --source ../include/deinit_child3_1.inc
- --disconnect child3_1
- --echo child3_2
- --connection child3_2
- --source ../include/deinit_child3_2.inc
- --disconnect child3_2
- --echo child3_3
- --connection child3_3
- --source ../include/deinit_child3_3.inc
- --disconnect child3_3
-}
diff --git a/storage/spider/mysql-test/spider/handler/t/test_init.inc b/storage/spider/mysql-test/spider/handler/t/test_init.inc
deleted file mode 100644
index f2cd6c0269f..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/test_init.inc
+++ /dev/null
@@ -1,74 +0,0 @@
-# get connection and exist engine test
---echo for master_1
---source connect_master_1.inc
---connection master_1
-CALL mtr.add_suppression("unknown variable");
-SET SESSION sql_log_bin= 0;
---let $MASTER_1_SERVER_ID=`SELECT @@global.server_id`
---let $TEST_ENGINE_TYPE= $MASTER_1_ENGINE_TYPE
---source have_partition.inc
---source have_trigger.inc
---source ../include/init_master_1.inc
---source have_engine.inc
---echo for child2
-if ($USE_CHILD_GROUP2)
-{
- --echo child2_1
- --source connect_child2_1.inc
- --connection child2_1
- CALL mtr.add_suppression("unknown variable *");
- SET SESSION sql_log_bin= 0;
- --let $CHILD2_1_SERVER_ID=`SELECT @@global.server_id`
- --let $TEST_ENGINE_TYPE= $CHILD2_1_ENGINE_TYPE
- --source ../include/init_child2_1.inc
- --source have_engine.inc
- --echo child2_2
- --source connect_child2_2.inc
- --connection child2_2
- CALL mtr.add_suppression("unknown variable *");
- SET SESSION sql_log_bin= 0;
- --let $CHILD2_2_SERVER_ID=`SELECT @@global.server_id`
- --let $TEST_ENGINE_TYPE= $CHILD2_2_ENGINE_TYPE
- --source ../include/init_child2_2.inc
- --source have_engine.inc
- --echo child2_3
- --source connect_child2_3.inc
- --connection child2_3
- CALL mtr.add_suppression("unknown variable *");
- SET SESSION sql_log_bin= 0;
- --let $CHILD2_3_SERVER_ID=`SELECT @@global.server_id`
- --let $TEST_ENGINE_TYPE= $CHILD2_3_ENGINE_TYPE
- --source ../include/init_child2_3.inc
- --source have_engine.inc
-}
---echo for child3
-if ($USE_CHILD_GROUP3)
-{
- --echo child3_1
- --source connect_child3_1.inc
- --connection child3_1
- CALL mtr.add_suppression("unknown variable *");
- SET SESSION sql_log_bin= 0;
- --let $CHILD3_1_SERVER_ID=`SELECT @@global.server_id`
- --let $TEST_ENGINE_TYPE= $CHILD3_1_ENGINE_TYPE
- --source ../include/init_child3_1.inc
- --source have_engine.inc
- --echo child3_2
- --source connect_child3_2.inc
- --connection child3_2
- CALL mtr.add_suppression("unknown variable *");
- SET SESSION sql_log_bin= 0;
- --let $CHILD3_2_SERVER_ID=`SELECT @@global.server_id`
- --let $TEST_ENGINE_TYPE= $CHILD3_2_ENGINE_TYPE
- --source ../include/init_child3_2.inc
- --source have_engine.inc
- --echo child3_3
- --source connect_child3_3.inc
- --connection child3_3
- CALL mtr.add_suppression("unknown variable *");
- SET SESSION sql_log_bin= 0;
- --let $CHILD3_3_SERVER_ID=`SELECT @@global.server_id`
- --let $TEST_ENGINE_TYPE= $CHILD3_3_ENGINE_TYPE
- --source ../include/init_child3_3.inc
- --source have_engine.inc
-}
diff --git a/storage/spider/mysql-test/spider/handler/t/vp_fixes.test b/storage/spider/mysql-test/spider/handler/t/vp_fixes.test
deleted file mode 100644
index 2c3e1523611..00000000000
--- a/storage/spider/mysql-test/spider/handler/t/vp_fixes.test
+++ /dev/null
@@ -1,335 +0,0 @@
-# This test tests for VP's bug fixes
---disable_warnings
---disable_query_log
---disable_result_log
---source test_init.inc
---enable_result_log
---enable_query_log
-
---echo
---echo drop and create databases
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-CREATE DATABASE auto_test_local;
-USE auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- CREATE DATABASE auto_test_remote;
- USE auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
- CREATE DATABASE auto_test_remote2;
- USE auto_test_remote2;
-}
---enable_warnings
-
---echo
---echo test select 1
---connection master_1
-SELECT 1;
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- SELECT 1;
- --connection child2_2
- SELECT 1;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo create table and insert
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- echo CHILD2_1_DROP_TABLES;
- echo CHILD2_1_CREATE_TABLES;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES;
- if ($OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- }
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS tb_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) MASTER_1_ENGINE2 MASTER_1_CHARSET2;
-eval CREATE TABLE tb_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE2 $MASTER_1_CHARSET2;
---enable_query_log
-INSERT INTO tb_l (a, b, c) VALUES
- (1, 'a', '2008-08-01 10:21:39'),
- (2, 'b', '2000-01-01 00:00:00'),
- (3, 'e', '2007-06-04 20:03:11'),
- (4, 'd', '2003-11-30 05:01:03'),
- (5, 'c', '2001-12-31 23:59:59');
---disable_warnings
-DROP TABLE IF EXISTS ta_l;
---enable_warnings
---disable_query_log
-echo CREATE TABLE ta_l (
- PRIMARY KEY(a)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT_2_1;
-eval CREATE TABLE ta_l (
- a INT,
- b CHAR(1),
- c DATETIME,
- PRIMARY KEY(a)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT_2_1;
---enable_query_log
-INSERT INTO ta_l SELECT a, b, c FROM tb_l;
-
---echo
---echo 0.9
---echo create different primary key table
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_result_log
- }
- --disable_query_log
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- echo CHILD2_1_DROP_TABLES5;
- echo CHILD2_1_CREATE_TABLES5;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES5;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES5;
- --enable_query_log
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_result_log
- }
-}
---connection master_1
---disable_query_log
-echo CREATE TABLE ta_l_int (
- a INT DEFAULT 10,
- b INT AUTO_INCREMENT,
- c INT DEFAULT 11,
- PRIMARY KEY(b)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT4_2_1;
-eval CREATE TABLE ta_l_int (
- a INT DEFAULT 10,
- b INT AUTO_INCREMENT,
- c INT DEFAULT 11,
- PRIMARY KEY(b)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT4_2_1;
---enable_query_log
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
---let $MASTER_1_IS_VP= `SELECT IF('$MASTER_1_ENGINE_TYPE' = 'VP', 1, 0)`
-if ($MASTER_1_IS_VP)
-{
- --error 14514
- INSERT INTO ta_l_int (a, b, c) VALUES (2, NULL, 3);
-}
-if (!$MASTER_1_IS_VP)
-{
- INSERT INTO ta_l_int (a, b, c) VALUES (2, NULL, 3);
- --disable_query_log
- --disable_result_log
- TRUNCATE TABLE ta_l_int;
- --enable_query_log
- --enable_result_log
-}
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_TABLES5;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo create un-correspond primary key table
---connection master_1
---disable_warnings
-DROP TABLE IF EXISTS ta_l_int;
---enable_warnings
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_result_log
- }
- --disable_query_log
- --connection child2_1
- if ($OUTPUT_CHILD_GROUP2)
- {
- echo CHILD2_1_DROP_TABLES5;
- echo CHILD2_1_CREATE_TABLES5;
- }
- --disable_warnings
- eval $CHILD2_1_DROP_TABLES5;
- --enable_warnings
- eval $CHILD2_1_CREATE_TABLES5;
- --enable_query_log
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_result_log
- }
-}
---connection master_1
---disable_query_log
-echo CREATE TABLE ta_l_int (
- a INT DEFAULT 10,
- b INT DEFAULT 12,
- c INT DEFAULT 11,
- PRIMARY KEY(c)
-) MASTER_1_ENGINE MASTER_1_CHARSET MASTER_1_COMMENT4_2_1;
-eval CREATE TABLE ta_l_int (
- a INT DEFAULT 10,
- b INT DEFAULT 12,
- c INT DEFAULT 11,
- PRIMARY KEY(c)
-) $MASTER_1_ENGINE $MASTER_1_CHARSET $MASTER_1_COMMENT4_2_1;
---enable_query_log
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- TRUNCATE TABLE mysql.general_log;
- }
- eval $CHILD2_1_SELECT_TABLES;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
---connection master_1
-if ($MASTER_1_IS_VP)
-{
- --error 14514
- INSERT INTO ta_l_int (a, b, c) VALUES (2, NULL, 3);
-}
-if (!$MASTER_1_IS_VP)
-{
- INSERT INTO ta_l_int (a, b, c) VALUES (2, NULL, 3);
- --disable_query_log
- --disable_result_log
- TRUNCATE TABLE ta_l_int;
- --enable_query_log
- --enable_result_log
-}
-if ($USE_CHILD_GROUP2)
-{
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --disable_query_log
- --disable_result_log
- }
- --connection child2_1
- if ($USE_GENERAL_LOG)
- {
- SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%insert %';
- }
- eval $CHILD2_1_SELECT_TABLES5;
- if (!$OUTPUT_CHILD_GROUP2)
- {
- --enable_query_log
- --enable_result_log
- }
-}
-
---echo
---echo deinit
---disable_warnings
---connection master_1
-DROP DATABASE IF EXISTS auto_test_local;
-if ($USE_CHILD_GROUP2)
-{
- --connection child2_1
- DROP DATABASE IF EXISTS auto_test_remote;
- --connection child2_2
- DROP DATABASE IF EXISTS auto_test_remote2;
-}
---disable_query_log
---disable_result_log
---source test_deinit.inc
---enable_result_log
---enable_query_log
---enable_warnings
---echo
---echo end of test
diff --git a/storage/spider/mysql-test/spider/r/partition_mrr.result b/storage/spider/mysql-test/spider/r/partition_mrr.result
index c7e17698421..c1b7d6e6a4a 100644
--- a/storage/spider/mysql-test/spider/r/partition_mrr.result
+++ b/storage/spider/mysql-test/spider/r/partition_mrr.result
@@ -104,11 +104,47 @@ pkey
21
26
27
+SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey+0 = b.pkey+0 ORDER BY a.pkey;
+pkey
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
connection child2_1;
SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %';
argument
select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey`
select a.id,b.`pkey` from auto_test_remote.tmp_spider_bka_xxxx a,`auto_test_remote`.`tbl_b` b where a.c0 <=> b.`pkey`
+select `pkey` from `auto_test_remote`.`tbl_a` order by `pkey`
+select `pkey` from `auto_test_remote`.`tbl_b` order by `pkey`
+select `pkey` from `auto_test_remote`.`tbl_b` order by `pkey`
+select `pkey` from `auto_test_remote`.`tbl_b` order by `pkey`
SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %'
SELECT pkey FROM tbl_a ORDER BY pkey ;
SELECT pkey FROM tbl_b ORDER BY pkey;
@@ -139,6 +175,10 @@ SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argum
argument
select `pkey` from `auto_test_remote2`.`tbl_a` order by `pkey`
select a.id,b.`pkey` from auto_test_remote2.tmp_spider_bka_xxxx a,`auto_test_remote2`.`tbl_b` b where a.c0 <=> b.`pkey`
+select `pkey` from `auto_test_remote2`.`tbl_a` order by `pkey`
+select `pkey` from `auto_test_remote2`.`tbl_b` order by `pkey`
+select `pkey` from `auto_test_remote2`.`tbl_b` order by `pkey`
+select `pkey` from `auto_test_remote2`.`tbl_b` order by `pkey`
SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %'
SELECT pkey FROM tbl_a ORDER BY pkey ;
SELECT pkey FROM tbl_b ORDER BY pkey;
@@ -169,6 +209,10 @@ SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argum
argument
select `pkey` from `auto_test_remote3`.`tbl_a` order by `pkey`
select a.id,b.`pkey` from auto_test_remote3.tmp_spider_bka_xxxx a,`auto_test_remote3`.`tbl_b` b where a.c0 <=> b.`pkey`
+select `pkey` from `auto_test_remote3`.`tbl_a` order by `pkey`
+select `pkey` from `auto_test_remote3`.`tbl_b` order by `pkey`
+select `pkey` from `auto_test_remote3`.`tbl_b` order by `pkey`
+select `pkey` from `auto_test_remote3`.`tbl_b` order by `pkey`
SELECT argument FROM mysql.general_log WHERE command_type != 'Execute' AND argument LIKE '%select %'
SELECT pkey FROM tbl_a ORDER BY pkey ;
SELECT pkey FROM tbl_b ORDER BY pkey;
diff --git a/storage/spider/mysql-test/spider/r/variable_deprecation.result b/storage/spider/mysql-test/spider/r/variable_deprecation.result
index cc267f7d363..cea36ff2240 100644
--- a/storage/spider/mysql-test/spider/r/variable_deprecation.result
+++ b/storage/spider/mysql-test/spider/r/variable_deprecation.result
@@ -13,21 +13,6 @@ child3_3
connection master_1;
CREATE DATABASE auto_test_local;
USE auto_test_local;
-# MDEV-27923 Deprecate spider_use_handler
-SET spider_use_handler = 3;
-Warnings:
-Warning 1287 '@@spider_use_handler' is deprecated and will be removed in a future release
-SHOW VARIABLES LIKE "spider_use_handler";
-Variable_name Value
-spider_use_handler 3
-CREATE TABLE tbl_a (a INT) ENGINE=Spider COMMENT='uhd "3"';
-Warnings:
-Warning 1287 The table parameter 'uhd' is deprecated and will be removed in a future release
-CREATE TABLE tbl_b (a INT) ENGINE=Spider COMMENT='use_handler "3"';
-Warnings:
-Warning 1287 The table parameter 'use_handler' is deprecated and will be removed in a future release
-DROP TABLE tbl_a;
-DROP TABLE tbl_b;
# MDEV-28297 Deprecate spider_internal_offset
SET spider_internal_offset = 1;
Warnings:
@@ -43,37 +28,6 @@ Warnings:
Warning 1287 The table parameter 'internal_offset' is deprecated and will be removed in a future release
DROP TABLE tbl_a;
DROP TABLE tbl_b;
-# MDEV-28005 Deprecate Spider plugin variables regarding UDFs
-SET GLOBAL spider_udf_ds_bulk_insert_rows = 1;
-Warnings:
-Warning 1287 '@@spider_udf_ds_bulk_insert_rows' is deprecated and will be removed in a future release
-SHOW VARIABLES LIKE "spider_udf_ds_bulk_insert_rows";
-Variable_name Value
-spider_udf_ds_bulk_insert_rows -1
-SET spider_udf_ds_table_loop_mode = 1;
-Warnings:
-Warning 1287 '@@spider_udf_ds_table_loop_mode' is deprecated and will be removed in a future release
-SHOW VARIABLES LIKE "spider_udf_ds_table_loop_mode";
-Variable_name Value
-spider_udf_ds_table_loop_mode 1
-SET spider_udf_ds_use_real_table = 1;
-Warnings:
-Warning 1287 '@@spider_udf_ds_use_real_table' is deprecated and will be removed in a future release
-SHOW VARIABLES LIKE "spider_udf_ds_use_real_table";
-Variable_name Value
-spider_udf_ds_use_real_table 1
-SET GLOBAL spider_udf_ct_bulk_insert_interval = 1;
-Warnings:
-Warning 1287 '@@spider_udf_ct_bulk_insert_interval' is deprecated and will be removed in a future release
-SHOW VARIABLES LIKE "spider_udf_ct_bulk_insert_interval";
-Variable_name Value
-spider_udf_ct_bulk_insert_interval 1
-SET GLOBAL spider_udf_ct_bulk_insert_rows = 1;
-Warnings:
-Warning 1287 '@@spider_udf_ct_bulk_insert_rows' is deprecated and will be removed in a future release
-SHOW VARIABLES LIKE "spider_udf_ct_bulk_insert_rows";
-Variable_name Value
-spider_udf_ct_bulk_insert_rows 1
# MDEV-27981 Deprecate spider_internal_limit
SET spider_internal_limit = 1;
Warnings:
diff --git a/storage/spider/mysql-test/spider/t/partition_mrr.test b/storage/spider/mysql-test/spider/t/partition_mrr.test
index 710e2781242..23f4fdb6e27 100644
--- a/storage/spider/mysql-test/spider/t/partition_mrr.test
+++ b/storage/spider/mysql-test/spider/t/partition_mrr.test
@@ -169,6 +169,7 @@ if ($USE_CHILD_GROUP2)
}
--connection master_1
SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey = b.pkey;
+SELECT a.pkey FROM tbl_a a, tbl_b b WHERE a.pkey+0 = b.pkey+0 ORDER BY a.pkey; # MDEV-29947
if ($USE_CHILD_GROUP2)
{
if (!$OUTPUT_CHILD_GROUP2)
diff --git a/storage/spider/mysql-test/spider/t/variable_deprecation.test b/storage/spider/mysql-test/spider/t/variable_deprecation.test
index 1521a60b7cb..3ed8dcf5ec6 100644
--- a/storage/spider/mysql-test/spider/t/variable_deprecation.test
+++ b/storage/spider/mysql-test/spider/t/variable_deprecation.test
@@ -12,14 +12,6 @@
CREATE DATABASE auto_test_local;
USE auto_test_local;
---echo # MDEV-27923 Deprecate spider_use_handler
-SET spider_use_handler = 3;
-SHOW VARIABLES LIKE "spider_use_handler";
-eval CREATE TABLE tbl_a (a INT) $MASTER_1_ENGINE COMMENT='uhd "3"';
-eval CREATE TABLE tbl_b (a INT) $MASTER_1_ENGINE COMMENT='use_handler "3"';
-DROP TABLE tbl_a;
-DROP TABLE tbl_b;
-
--echo # MDEV-28297 Deprecate spider_internal_offset
SET spider_internal_offset = 1;
SHOW VARIABLES LIKE "spider_internal_offset";
@@ -29,22 +21,6 @@ eval CREATE TABLE tbl_b (a INT) $MASTER_1_ENGINE COMMENT='internal_offset "1"';
DROP TABLE tbl_a;
DROP TABLE tbl_b;
---echo # MDEV-28005 Deprecate Spider plugin variables regarding UDFs
-SET GLOBAL spider_udf_ds_bulk_insert_rows = 1;
-SHOW VARIABLES LIKE "spider_udf_ds_bulk_insert_rows";
-
-SET spider_udf_ds_table_loop_mode = 1;
-SHOW VARIABLES LIKE "spider_udf_ds_table_loop_mode";
-
-SET spider_udf_ds_use_real_table = 1;
-SHOW VARIABLES LIKE "spider_udf_ds_use_real_table";
-
-SET GLOBAL spider_udf_ct_bulk_insert_interval = 1;
-SHOW VARIABLES LIKE "spider_udf_ct_bulk_insert_interval";
-
-SET GLOBAL spider_udf_ct_bulk_insert_rows = 1;
-SHOW VARIABLES LIKE "spider_udf_ct_bulk_insert_rows";
-
--echo # MDEV-27981 Deprecate spider_internal_limit
SET spider_internal_limit = 1;
SHOW VARIABLES LIKE "spider_internal_limit";
diff --git a/storage/spider/spd_conn.cc b/storage/spider/spd_conn.cc
index 9d06cbf8650..a1d80ae8670 100644
--- a/storage/spider/spd_conn.cc
+++ b/storage/spider/spd_conn.cc
@@ -2161,8 +2161,6 @@ int spider_bg_conn_search(
result_list->split_read ?
result_list->split_read :
result_list->internal_limit - result_list->record_num;
- DBUG_PRINT("info",("spider sql_kinds=%u", spider->sql_kinds));
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
{
if ((error_num = spider->reappend_limit_sql_part(
result_list->internal_offset + result_list->record_num,
@@ -2181,17 +2179,6 @@ int spider_bg_conn_search(
DBUG_RETURN(error_num);
}
}
- if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- spider_db_append_handler_next(spider);
- if ((error_num = spider->reappend_limit_sql_part(
- 0, result_list->limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- pthread_mutex_unlock(&conn->bg_conn_mutex);
- DBUG_RETURN(error_num);
- }
- }
}
result_list->bgs_phase = 2;
if (conn->db_conn->limit_mode() == 1)
@@ -2310,8 +2297,6 @@ int spider_bg_conn_search(
result_list->split_read ?
result_list->split_read :
result_list->internal_limit - result_list->record_num;
- DBUG_PRINT("info",("spider sql_kinds=%u", spider->sql_kinds));
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
{
if ((error_num = spider->reappend_limit_sql_part(
result_list->internal_offset + result_list->record_num,
@@ -2330,17 +2315,6 @@ int spider_bg_conn_search(
DBUG_RETURN(error_num);
}
}
- if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- spider_db_append_handler_next(spider);
- if ((error_num = spider->reappend_limit_sql_part(
- 0, result_list->limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- pthread_mutex_unlock(&conn->bg_conn_mutex);
- DBUG_RETURN(error_num);
- }
- }
if (conn->db_conn->limit_mode() == 1)
{
conn->db_conn->set_limit(result_list->limit_num);
@@ -2542,12 +2516,7 @@ void *spider_bg_conn_action(
!result_list->bgs_current->result
) {
ulong sql_type;
- if (spider->sql_kind[conn->link_idx] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_TMP_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_TMP_SQL;
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
if (dbton_handler->need_lock_before_set_sql_for_exec(sql_type))
{
@@ -3930,91 +3899,6 @@ bool spider_conn_check_recovery_link(
DBUG_RETURN(FALSE);
}
-bool spider_conn_use_handler(
- ha_spider *spider,
- int lock_mode,
- int link_idx
-) {
- THD *thd = spider->wide_handler->trx->thd;
- int use_handler = spider_param_use_handler(thd,
- spider->share->use_handlers[link_idx]);
- DBUG_ENTER("spider_conn_use_handler");
- DBUG_PRINT("info",("spider use_handler=%d", use_handler));
- DBUG_PRINT("info",("spider spider->conn_kind[link_idx]=%u",
- spider->conn_kind[link_idx]));
- if (spider->do_direct_update)
- {
- spider->sql_kinds |= SPIDER_SQL_KIND_SQL;
- spider->sql_kind[link_idx] = SPIDER_SQL_KIND_SQL;
- spider->direct_update_kinds |= SPIDER_SQL_KIND_SQL;
- DBUG_PRINT("info",("spider FALSE by using direct_update"));
- DBUG_RETURN(FALSE);
- }
- if (spider->use_spatial_index)
- {
- DBUG_PRINT("info",("spider FALSE by use_spatial_index"));
- spider->sql_kinds |= SPIDER_SQL_KIND_SQL;
- spider->sql_kind[link_idx] = SPIDER_SQL_KIND_SQL;
- DBUG_RETURN(FALSE);
- }
- uint dbton_id;
- spider_db_handler *dbton_hdl;
- dbton_id = spider->share->sql_dbton_ids[spider->conn_link_idx[link_idx]];
- dbton_hdl = spider->dbton_handler[dbton_id];
- if (!dbton_hdl->support_use_handler(use_handler))
- {
- DBUG_PRINT("info",("spider FALSE by dbton"));
- spider->sql_kinds |= SPIDER_SQL_KIND_SQL;
- spider->sql_kind[link_idx] = SPIDER_SQL_KIND_SQL;
- DBUG_RETURN(FALSE);
- }
- if (
- spider->wide_handler->sql_command == SQLCOM_HA_READ &&
- (
- !(use_handler & 2) ||
- (
- spider_param_sync_trx_isolation(thd) &&
- thd_tx_isolation(thd) == ISO_SERIALIZABLE
- )
- )
- ) {
- DBUG_PRINT("info",("spider TRUE by HA"));
- spider->sql_kinds |= SPIDER_SQL_KIND_HANDLER;
- spider->sql_kind[link_idx] = SPIDER_SQL_KIND_HANDLER;
- DBUG_RETURN(TRUE);
- }
- if (
- spider->wide_handler->sql_command != SQLCOM_HA_READ &&
- lock_mode == SPIDER_LOCK_MODE_NO_LOCK &&
- spider_param_sync_trx_isolation(thd) &&
- thd_tx_isolation(thd) != ISO_SERIALIZABLE &&
- (use_handler & 1)
- ) {
- DBUG_PRINT("info",("spider TRUE by PARAM"));
- spider->sql_kinds |= SPIDER_SQL_KIND_HANDLER;
- spider->sql_kind[link_idx] = SPIDER_SQL_KIND_HANDLER;
- DBUG_RETURN(TRUE);
- }
- spider->sql_kinds |= SPIDER_SQL_KIND_SQL;
- spider->sql_kind[link_idx] = SPIDER_SQL_KIND_SQL;
- DBUG_RETURN(FALSE);
-}
-
-bool spider_conn_need_open_handler(
- ha_spider *spider,
- uint idx,
- int link_idx
-) {
- DBUG_ENTER("spider_conn_need_open_handler");
- DBUG_PRINT("info",("spider spider=%p", spider));
- if (spider->handler_opened(link_idx, spider->conn_kind[link_idx]))
- {
- DBUG_PRINT("info",("spider HA already opened"));
- DBUG_RETURN(FALSE);
- }
- DBUG_RETURN(TRUE);
-}
-
SPIDER_CONN* spider_get_conn_from_idle_connection(
SPIDER_SHARE *share,
int link_idx,
diff --git a/storage/spider/spd_conn.h b/storage/spider/spd_conn.h
index 53c10572687..807e1474ed2 100644
--- a/storage/spider/spd_conn.h
+++ b/storage/spider/spd_conn.h
@@ -390,18 +390,6 @@ bool spider_conn_check_recovery_link(
SPIDER_SHARE *share
);
-bool spider_conn_use_handler(
- ha_spider *spider,
- int lock_mode,
- int link_idx
-);
-
-bool spider_conn_need_open_handler(
- ha_spider *spider,
- uint idx,
- int link_idx
-);
-
SPIDER_IP_PORT_CONN *spider_create_ipport_conn(SPIDER_CONN *conn);
SPIDER_CONN* spider_get_conn_from_idle_connection
(
diff --git a/storage/spider/spd_copy_tables.cc b/storage/spider/spd_copy_tables.cc
index 4b2f5174ce0..eb2454b2f29 100644
--- a/storage/spider/spd_copy_tables.cc
+++ b/storage/spider/spd_copy_tables.cc
@@ -1000,8 +1000,7 @@ long long spider_copy_tables_body(
else
copy_tables->access_charset = system_charset_info;
- bulk_insert_rows = spider_param_udf_ct_bulk_insert_rows(
- copy_tables->bulk_insert_rows);
+ bulk_insert_rows= copy_tables->bulk_insert_rows;
for (src_tbl_conn = copy_tables->table_conn[0]; src_tbl_conn;
src_tbl_conn = src_tbl_conn->next)
{
diff --git a/storage/spider/spd_db_conn.cc b/storage/spider/spd_db_conn.cc
index fcaf61d27f7..0f54709d2db 100644
--- a/storage/spider/spd_db_conn.cc
+++ b/storage/spider/spd_db_conn.cc
@@ -169,7 +169,6 @@ int spider_db_connect(
conn->connect_error = 0;
conn->opened_handlers = 0;
- conn->db_conn->reset_opened_handler();
++conn->connection_id;
/* Set the connection's time zone to UTC */
@@ -1344,11 +1343,7 @@ int spider_db_append_name_with_quote_str_internal(
for (name_end = name + length; name < name_end; name += length)
{
head_code = *name;
-#ifdef SPIDER_HAS_MY_CHARLEN
if ((length = my_ci_charlen(cs, (const uchar *) name, (const uchar *) name_end)) < 1)
-#else
- if (!(length = my_mbcharlen(cs, (uchar) head_code)))
-#endif
{
my_message(ER_SPIDER_WRONG_CHARACTER_IN_NAME_NUM,
ER_SPIDER_WRONG_CHARACTER_IN_NAME_STR, MYF(0));
@@ -1377,18 +1372,11 @@ int spider_db_append_select(
int error_num;
DBUG_ENTER("spider_db_append_select");
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
{
if ((error_num = spider->append_select_sql_part(
SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
}
- if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = spider->append_select_sql_part(
- SPIDER_SQL_TYPE_HANDLER)))
- DBUG_RETURN(error_num);
- }
DBUG_RETURN(0);
}
@@ -1398,7 +1386,6 @@ int spider_db_append_select_columns(
int error_num;
SPIDER_RESULT_LIST *result_list = &spider->result_list;
DBUG_ENTER("spider_db_append_select_columns");
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
{
if (
result_list->direct_aggregate &&
@@ -1427,11 +1414,6 @@ int spider_db_append_select_columns(
DBUG_RETURN(error_num);
}
}
- if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = spider->append_from_sql_part(SPIDER_SQL_TYPE_HANDLER)))
- DBUG_RETURN(error_num);
- }
DBUG_RETURN(0);
}
@@ -1548,7 +1530,6 @@ int spider_db_append_hint_after_table(
spider_string *hint
) {
DBUG_ENTER("spider_db_append_hint_after_table");
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
{
if (str->append(*hint))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
@@ -1588,19 +1569,9 @@ int spider_db_append_key_where_internal(
KEY_PART_INFO *key_part;
Field *field;
bool use_both = TRUE, key_eq;
- uint sql_kind;
spider_db_handler *dbton_hdl = spider->dbton_handler[dbton_id];
spider_db_share *dbton_share = share->dbton_share[dbton_id];
DBUG_ENTER("spider_db_append_key_where_internal");
- switch (sql_type)
- {
- case SPIDER_SQL_TYPE_HANDLER:
- sql_kind = SPIDER_SQL_KIND_HANDLER;
- break;
- default:
- sql_kind = SPIDER_SQL_KIND_SQL;
- break;
- }
if (key_info)
full_key_part_map =
@@ -1632,46 +1603,6 @@ int spider_db_append_key_where_internal(
MY_BITMAP *tmp_map = dbug_tmp_use_all_columns(table, &table->read_set);
#endif
- if (sql_kind == SPIDER_SQL_KIND_HANDLER)
- {
-#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
- const char *key_name = key_info->name.str;
- key_name_length = key_info->name.length;
-#else
- const char *key_name = key_info->name;
- key_name_length = strlen(key_name);
-#endif
- if (str->reserve(SPIDER_SQL_READ_LEN +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 + key_name_length))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_READ_STR, SPIDER_SQL_READ_LEN);
- if ((error_num = spider_dbton[dbton_id].db_util->
- append_name(str, key_name, key_name_length)))
- {
- DBUG_RETURN(error_num);
- }
- dbton_hdl->set_order_pos(SPIDER_SQL_TYPE_HANDLER);
- if (
- (start_key_part_map || end_key_part_map) &&
- !(use_both && (!start_key_part_map || !end_key_part_map))
- ) {
- if (str_part->reserve(SPIDER_SQL_OPEN_PAREN_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str_part->q_append(SPIDER_SQL_OPEN_PAREN_STR, SPIDER_SQL_OPEN_PAREN_LEN);
- result_list->ha_read_kind = 0;
- } else if (!result_list->desc_flg)
- {
- if (str->reserve(SPIDER_SQL_FIRST_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_FIRST_STR, SPIDER_SQL_FIRST_LEN);
- result_list->ha_read_kind = 1;
- } else {
- if (str->reserve(SPIDER_SQL_LAST_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_LAST_STR, SPIDER_SQL_LAST_LEN);
- result_list->ha_read_kind = 2;
- }
- }
if (!start_key_part_map && !end_key_part_map)
{
result_list->key_order = 0;
@@ -1694,16 +1625,10 @@ int spider_db_append_key_where_internal(
if (start_key_part_map == end_key_part_map)
result_list->use_both_key = TRUE;
- if (sql_kind == SPIDER_SQL_KIND_SQL)
{
if (str->reserve(SPIDER_SQL_WHERE_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(SPIDER_SQL_WHERE_STR, SPIDER_SQL_WHERE_LEN);
- } else if (sql_kind == SPIDER_SQL_KIND_HANDLER)
- {
- if (str_part2->reserve(SPIDER_SQL_WHERE_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str_part2->q_append(SPIDER_SQL_WHERE_STR, SPIDER_SQL_WHERE_LEN);
}
for (
@@ -1763,18 +1688,14 @@ int spider_db_append_key_where_internal(
) {
if (error_num > 0)
DBUG_RETURN(error_num);
- if (
- !set_order &&
- start_key->flag != HA_READ_KEY_EXACT &&
- sql_kind == SPIDER_SQL_KIND_SQL
- ) {
+ if (!set_order && start_key->flag != HA_READ_KEY_EXACT)
+ {
result_list->key_order = key_count;
set_order = TRUE;
}
} else if (key_eq)
{
DBUG_PRINT("info", ("spider key_eq"));
- if (sql_kind == SPIDER_SQL_KIND_SQL)
{
if (str->reserve(store_length + key_name_length +
/* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
@@ -1785,259 +1706,116 @@ int spider_db_append_key_where_internal(
if (spider_dbton[dbton_id].db_util->append_column_value(
spider, str, field, ptr, FALSE, share->access_charset))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- } else if (sql_kind == SPIDER_SQL_KIND_HANDLER)
- {
- if (str_part2->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_EQUAL_LEN + SPIDER_SQL_AND_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str_part2, field->field_index);
- str_part2->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->append_column_value(
- spider, str_part2, field, ptr, FALSE, share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- if (use_key == start_key)
- {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- if (str->reserve(SPIDER_SQL_EQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- }
}
} else {
DBUG_PRINT("info", ("spider start_key->flag=%d", start_key->flag));
+ const char *op_str;
+ uint32 op_len;
switch (start_key->flag)
{
case HA_READ_PREFIX_LAST:
result_list->desc_flg = TRUE;
/* fall through */
- case HA_READ_KEY_EXACT:
- if (sql_kind == SPIDER_SQL_KIND_SQL)
- {
- if (str->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- dbton_share->append_column_name(str, field->field_index);
+ case HA_READ_KEY_EXACT: {
+ if (str->reserve(store_length + key_name_length +
+ /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
+ SPIDER_SQL_EQUAL_LEN))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ dbton_share->append_column_name(str, field->field_index);
- bool is_like= MY_TEST(key_part->key_part_flag & HA_PART_KEY_SEG);
- if (is_like)
- {
- if (str->append(SPIDER_SQL_LIKE_STR, SPIDER_SQL_LIKE_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- else
- {
- if (str->append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- if (spider_dbton[dbton_id].db_util->append_column_value(
- spider, str, field, ptr, is_like, share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- } else if (sql_kind == SPIDER_SQL_KIND_HANDLER)
+ bool is_like= MY_TEST(key_part->key_part_flag & HA_PART_KEY_SEG);
+ if (is_like)
{
- if (str_part2->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_EQUAL_LEN))
+ if (str->append(SPIDER_SQL_LIKE_STR, SPIDER_SQL_LIKE_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str_part2, field->field_index);
- str_part2->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->append_column_value(
- spider, str_part2, field, ptr, FALSE,
- share->access_charset))
+ }
+ else
+ {
+ if (str->append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- if (use_key == start_key)
- {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- if (str->reserve(SPIDER_SQL_EQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- }
}
+ if (spider_dbton[dbton_id].db_util->append_column_value(
+ spider, str, field, ptr, is_like, share->access_charset))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
break;
+ }
case HA_READ_AFTER_KEY:
- if (sql_kind == SPIDER_SQL_KIND_SQL)
+ if (start_key_part_map == 1)
{
- const char* op_str;
- uint32 op_len;
- if (start_key_part_map == 1) {
- op_str = rev ? SPIDER_SQL_LT_STR : SPIDER_SQL_GT_STR;
- op_len = rev ? SPIDER_SQL_LT_LEN : SPIDER_SQL_GT_LEN;
- } else {
- op_str = rev ? SPIDER_SQL_LTEQUAL_STR : SPIDER_SQL_GTEQUAL_STR;
- op_len = rev ? SPIDER_SQL_LTEQUAL_LEN : SPIDER_SQL_GTEQUAL_LEN;
- }
- if (str->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 + op_len))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str, field->field_index);
- str->q_append(op_str, op_len);
- if (spider_dbton[dbton_id].db_util->append_column_value(
- spider, str, field, ptr, FALSE, share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- if (use_both)
- start_key_part_map = 0;
- if (!set_order)
- {
- result_list->key_order = key_count;
- set_order = TRUE;
- }
- } else if (sql_kind == SPIDER_SQL_KIND_HANDLER)
+ op_str= rev ? SPIDER_SQL_LT_STR : SPIDER_SQL_GT_STR;
+ op_len= rev ? SPIDER_SQL_LT_LEN : SPIDER_SQL_GT_LEN;
+ }
+ else
{
- if (str_part2->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_GT_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str_part2, field->field_index);
- if (rev)
- str_part2->q_append(SPIDER_SQL_LT_STR, SPIDER_SQL_LT_LEN);
- else
- str_part2->q_append(SPIDER_SQL_GT_STR, SPIDER_SQL_GT_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part2, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- if (use_key == start_key)
- {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- if (str->reserve(SPIDER_SQL_GT_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_GT_STR, SPIDER_SQL_GT_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- }
+ op_str= rev ? SPIDER_SQL_LTEQUAL_STR : SPIDER_SQL_GTEQUAL_STR;
+ op_len= rev ? SPIDER_SQL_LTEQUAL_LEN : SPIDER_SQL_GTEQUAL_LEN;
+ }
+ if (str->reserve(store_length + key_name_length +
+ /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 + op_len))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ dbton_share->append_column_name(str, field->field_index);
+ str->q_append(op_str, op_len);
+ if (spider_dbton[dbton_id].db_util->
+ append_column_value(spider, str, field, ptr, false,
+ share->access_charset))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ if (use_both)
+ start_key_part_map= 0;
+ if (!set_order)
+ {
+ result_list->key_order= key_count;
+ set_order= TRUE;
}
break;
case HA_READ_BEFORE_KEY:
result_list->desc_flg = TRUE;
- if (sql_kind == SPIDER_SQL_KIND_SQL)
+ if (start_key_part_map == 1)
{
- const char* op_str;
- uint32 op_len;
- if (start_key_part_map == 1) {
- op_str = rev ? SPIDER_SQL_GT_STR : SPIDER_SQL_LT_STR;
- op_len = rev ? SPIDER_SQL_GT_LEN : SPIDER_SQL_LT_LEN;
- } else {
- op_str = rev ? SPIDER_SQL_GTEQUAL_STR : SPIDER_SQL_LTEQUAL_STR;
- op_len = rev ? SPIDER_SQL_GTEQUAL_LEN : SPIDER_SQL_LTEQUAL_LEN;
- }
- if (str->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 + op_len))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str, field->field_index);
- str->q_append(op_str, op_len);
- if (spider_dbton[dbton_id].db_util->append_column_value(
- spider, str, field, ptr, FALSE, share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- if (use_both)
- start_key_part_map = 0;
- if (!set_order)
- {
- result_list->key_order = key_count;
- set_order = TRUE;
- }
- } else if (sql_kind == SPIDER_SQL_KIND_HANDLER)
+ op_str= rev ? SPIDER_SQL_GT_STR : SPIDER_SQL_LT_STR;
+ op_len= rev ? SPIDER_SQL_GT_LEN : SPIDER_SQL_LT_LEN;
+ }
+ else
{
- if (str_part2->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_LT_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str_part2, field->field_index);
- if (rev)
- str_part2->q_append(SPIDER_SQL_GT_STR, SPIDER_SQL_GT_LEN);
- else
- str_part2->q_append(SPIDER_SQL_LT_STR, SPIDER_SQL_LT_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part2, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- if (use_key == start_key)
- {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- if (str->reserve(SPIDER_SQL_LT_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_LT_STR, SPIDER_SQL_LT_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- }
+ op_str= rev ? SPIDER_SQL_GTEQUAL_STR : SPIDER_SQL_LTEQUAL_STR;
+ op_len= rev ? SPIDER_SQL_GTEQUAL_LEN : SPIDER_SQL_LTEQUAL_LEN;
+ }
+ if (str->reserve(store_length + key_name_length +
+ /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 + op_len))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ dbton_share->append_column_name(str, field->field_index);
+ str->q_append(op_str, op_len);
+ if (spider_dbton[dbton_id].db_util->
+ append_column_value(spider, str, field, ptr, false,
+ share->access_charset))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ if (use_both)
+ start_key_part_map= 0;
+ if (!set_order)
+ {
+ result_list->key_order= key_count;
+ set_order= TRUE;
}
break;
case HA_READ_KEY_OR_PREV:
case HA_READ_PREFIX_LAST_OR_PREV:
result_list->desc_flg = TRUE;
- if (sql_kind == SPIDER_SQL_KIND_SQL)
- {
- if (str->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_LTEQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str, field->field_index);
- if (rev)
- str->q_append(SPIDER_SQL_GTEQUAL_STR, SPIDER_SQL_GTEQUAL_LEN);
- else
- str->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- if (!set_order)
- {
- result_list->key_order = key_count;
- set_order = TRUE;
- }
- } else if (sql_kind == SPIDER_SQL_KIND_HANDLER)
+ if (str->reserve(store_length + key_name_length +
+ /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
+ SPIDER_SQL_LTEQUAL_LEN))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ dbton_share->append_column_name(str, field->field_index);
+ if (rev)
+ str->q_append(SPIDER_SQL_GTEQUAL_STR, SPIDER_SQL_GTEQUAL_LEN);
+ else
+ str->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
+ if (spider_dbton[dbton_id].db_util->
+ append_column_value(spider, str, field, ptr, false,
+ share->access_charset))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ if (!set_order)
{
- if (str_part2->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_LTEQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str_part2, field->field_index);
- if (rev)
- str_part2->q_append(SPIDER_SQL_GTEQUAL_STR, SPIDER_SQL_GTEQUAL_LEN);
- else
- str_part2->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part2, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- if (use_key == start_key)
- {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- if (str->reserve(SPIDER_SQL_LTEQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- }
+ result_list->key_order= key_count;
+ set_order= TRUE;
}
break;
case HA_READ_MBR_CONTAIN:
@@ -2120,73 +1898,30 @@ int spider_db_append_key_where_internal(
SPIDER_SQL_CLOSE_PAREN_LEN);
break;
default:
- if (sql_kind == SPIDER_SQL_KIND_SQL)
- {
- if (str->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_GTEQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str, field->field_index);
- if (rev)
- str->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
- else
- str->q_append(SPIDER_SQL_GTEQUAL_STR, SPIDER_SQL_GTEQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- if (!set_order)
- {
- result_list->key_order = key_count;
- set_order = TRUE;
- }
- } else if (sql_kind == SPIDER_SQL_KIND_HANDLER)
+ if (str->reserve(store_length + key_name_length +
+ /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
+ SPIDER_SQL_GTEQUAL_LEN))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ dbton_share->append_column_name(str, field->field_index);
+ if (rev)
+ str->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
+ else
+ str->q_append(SPIDER_SQL_GTEQUAL_STR, SPIDER_SQL_GTEQUAL_LEN);
+ if (spider_dbton[dbton_id].db_util->
+ append_column_value(spider, str, field, ptr, false,
+ share->access_charset))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ if (!set_order)
{
- if (str_part2->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_GTEQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str_part2, field->field_index);
- if (rev)
- str_part2->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
- else
- str_part2->q_append(SPIDER_SQL_GTEQUAL_STR, SPIDER_SQL_GTEQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part2, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- if (use_key == start_key)
- {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- if (str->reserve(SPIDER_SQL_GTEQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_GTEQUAL_STR, SPIDER_SQL_GTEQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- }
+ result_list->key_order= key_count;
+ set_order= TRUE;
}
break;
}
}
- if (sql_kind == SPIDER_SQL_KIND_SQL)
- {
- if (str->reserve(SPIDER_SQL_AND_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_AND_STR,
- SPIDER_SQL_AND_LEN);
- } else if (sql_kind == SPIDER_SQL_KIND_HANDLER)
- {
- if (str_part2->reserve(SPIDER_SQL_AND_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str_part2->q_append(SPIDER_SQL_AND_STR,
- SPIDER_SQL_AND_LEN);
-
- }
+ if (str->reserve(SPIDER_SQL_AND_LEN))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ str->q_append(SPIDER_SQL_AND_STR, SPIDER_SQL_AND_LEN);
}
if (
@@ -2200,180 +1935,84 @@ int spider_db_append_key_where_internal(
{
if (error_num > 0)
DBUG_RETURN(error_num);
- if (
- !set_order &&
- end_key->flag != HA_READ_KEY_EXACT &&
- sql_kind == SPIDER_SQL_KIND_SQL
- ) {
+ if (!set_order && end_key->flag != HA_READ_KEY_EXACT)
+ {
result_list->key_order = key_count;
set_order = TRUE;
}
} else if (key_eq)
{
DBUG_PRINT("info", ("spider key_eq"));
- if (sql_kind == SPIDER_SQL_KIND_SQL)
- {
- if (str->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_EQUAL_LEN + SPIDER_SQL_AND_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str, field->field_index);
- str->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->append_column_value(
- spider, str, field, ptr, FALSE, share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- } else {
- if (str_part2->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_EQUAL_LEN + SPIDER_SQL_AND_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str_part2, field->field_index);
- str_part2->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->append_column_value(
- spider, str_part2, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- if (use_key == end_key)
- {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- if (str->reserve(SPIDER_SQL_EQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- }
- }
+ if (str->reserve(store_length + key_name_length +
+ /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
+ SPIDER_SQL_EQUAL_LEN + SPIDER_SQL_AND_LEN))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ dbton_share->append_column_name(str, field->field_index);
+ str->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN);
+ if (spider_dbton[dbton_id].db_util->
+ append_column_value(spider, str, field, ptr, false,
+ share->access_charset))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
} else {
DBUG_PRINT("info", ("spider end_key->flag=%d", end_key->flag));
switch (end_key->flag)
{
case HA_READ_BEFORE_KEY:
- if (sql_kind == SPIDER_SQL_KIND_SQL)
+ const char *op_str;
+ uint32 op_len;
+ if (end_key_part_map == 1)
{
- const char* op_str;
- uint32 op_len;
- if (end_key_part_map == 1) {
- op_str = rev ? SPIDER_SQL_GT_STR : SPIDER_SQL_LT_STR;
- op_len = rev ? SPIDER_SQL_GT_LEN : SPIDER_SQL_LT_LEN;
- } else {
- op_str = rev ? SPIDER_SQL_GTEQUAL_STR : SPIDER_SQL_LTEQUAL_STR;
- op_len = rev ? SPIDER_SQL_GTEQUAL_LEN : SPIDER_SQL_LTEQUAL_LEN;
- }
- if (str->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 + op_len))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str, field->field_index);
- str->q_append(op_str, op_len);
- if (spider_dbton[dbton_id].db_util->append_column_value(
- spider, str, field, ptr, FALSE, share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- if (use_both)
- end_key_part_map = 0;
- if (!set_order)
- {
- result_list->key_order = key_count;
- set_order = TRUE;
- }
- } else {
- if (str_part2->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_LT_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str_part2, field->field_index);
- if (rev)
- str_part2->q_append(SPIDER_SQL_GT_STR, SPIDER_SQL_GT_LEN);
- else
- str_part2->q_append(SPIDER_SQL_LT_STR, SPIDER_SQL_LT_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part2, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- if (use_key == end_key)
- {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- if (str->reserve(SPIDER_SQL_LT_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_LT_STR, SPIDER_SQL_LT_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part, field, ptr,
- false, share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- }
+ op_str= rev ? SPIDER_SQL_GT_STR : SPIDER_SQL_LT_STR;
+ op_len= rev ? SPIDER_SQL_GT_LEN : SPIDER_SQL_LT_LEN;
+ }
+ else
+ {
+ op_str= rev ? SPIDER_SQL_GTEQUAL_STR : SPIDER_SQL_LTEQUAL_STR;
+ op_len= rev ? SPIDER_SQL_GTEQUAL_LEN : SPIDER_SQL_LTEQUAL_LEN;
+ }
+ if (str->reserve(store_length + key_name_length +
+ /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 + op_len))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ dbton_share->append_column_name(str, field->field_index);
+ str->q_append(op_str, op_len);
+ if (spider_dbton[dbton_id].db_util->
+ append_column_value(spider, str, field, ptr, false,
+ share->access_charset))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ if (use_both)
+ end_key_part_map= 0;
+ if (!set_order)
+ {
+ result_list->key_order= key_count;
+ set_order= TRUE;
}
break;
default:
- if (sql_kind == SPIDER_SQL_KIND_SQL)
+ if (str->reserve(store_length + key_name_length +
+ /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
+ SPIDER_SQL_LTEQUAL_LEN))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ dbton_share->append_column_name(str, field->field_index);
+ if (rev)
+ str->q_append(SPIDER_SQL_GTEQUAL_STR, SPIDER_SQL_GTEQUAL_LEN);
+ else
+ str->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
+ if (spider_dbton[dbton_id].db_util->
+ append_column_value(spider, str, field, ptr, false,
+ share->access_charset))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ if (!set_order)
{
- if (str->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_LTEQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str, field->field_index);
- if (rev)
- str->q_append(SPIDER_SQL_GTEQUAL_STR, SPIDER_SQL_GTEQUAL_LEN);
- else
- str->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- if (!set_order)
- {
- result_list->key_order = key_count;
- set_order = TRUE;
- }
- } else {
- if (str_part2->reserve(store_length + key_name_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 2 +
- SPIDER_SQL_LTEQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- dbton_share->append_column_name(str_part2, field->field_index);
- if (rev)
- str_part2->q_append(SPIDER_SQL_GTEQUAL_STR, SPIDER_SQL_GTEQUAL_LEN);
- else
- str_part2->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part2, field, ptr, false,
- share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
-
- if (use_key == end_key)
- {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- if (str->reserve(SPIDER_SQL_LTEQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_LTEQUAL_STR, SPIDER_SQL_LTEQUAL_LEN);
- if (spider_dbton[dbton_id].db_util->
- append_column_value(spider, str_part, field, ptr,
- false, share->access_charset))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- }
+ result_list->key_order= key_count;
+ set_order= TRUE;
}
break;
}
}
- if (sql_kind == SPIDER_SQL_KIND_SQL)
{
if (str->reserve(SPIDER_SQL_AND_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_AND_STR,
- SPIDER_SQL_AND_LEN);
- } else {
- if (str_part2->reserve(SPIDER_SQL_AND_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str_part2->q_append(SPIDER_SQL_AND_STR,
- SPIDER_SQL_AND_LEN);
-
+ str->q_append(SPIDER_SQL_AND_STR, SPIDER_SQL_AND_LEN);
}
}
if (use_both && (!start_key_part_map || !end_key_part_map))
@@ -2392,8 +2031,9 @@ end:
/* use condition */
if (dbton_hdl->append_condition_part(NULL, 0, sql_type, FALSE))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- if (sql_kind == SPIDER_SQL_KIND_SQL)
+ {
dbton_hdl->set_order_pos(sql_type);
+ }
#ifndef DBUG_OFF
dbug_tmp_restore_column_map(&table->read_set, tmp_map);
#endif
@@ -2407,20 +2047,12 @@ int spider_db_append_key_where(
) {
int error_num;
DBUG_ENTER("spider_db_append_key_where");
- if ((spider->sql_kinds & SPIDER_SQL_KIND_SQL))
{
DBUG_PRINT("info",("spider call internal by SPIDER_SQL_KIND_SQL"));
if ((error_num = spider->append_key_where_sql_part(start_key, end_key,
SPIDER_SQL_TYPE_SELECT_SQL)))
DBUG_RETURN(error_num);
}
- if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- DBUG_PRINT("info",("spider call internal by SPIDER_SQL_KIND_HANDLER"));
- if ((error_num = spider->append_key_where_sql_part(start_key, end_key,
- SPIDER_SQL_TYPE_HANDLER)))
- DBUG_RETURN(error_num);
- }
DBUG_RETURN(0);
}
@@ -2533,9 +2165,7 @@ int spider_db_fetch_for_item_sum_func(
spider->direct_aggregate_item_first->next = NULL;
spider->direct_aggregate_item_first->item = NULL;
spider->direct_aggregate_item_first->tgt_num = 0;
-#ifdef SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY_AND_THDPTR
spider->direct_aggregate_item_first->init_mem_root = FALSE;
-#endif
}
spider->direct_aggregate_item_current =
spider->direct_aggregate_item_first;
@@ -2552,16 +2182,13 @@ int spider_db_fetch_for_item_sum_func(
spider->direct_aggregate_item_current->next->item = NULL;
spider->direct_aggregate_item_current->next->tgt_num =
spider->direct_aggregate_item_current->tgt_num + 1;
-#ifdef SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY_AND_THDPTR
spider->direct_aggregate_item_current->next->init_mem_root = FALSE;
-#endif
}
spider->direct_aggregate_item_current =
spider->direct_aggregate_item_current->next;
}
if (!spider->direct_aggregate_item_current->item)
{
-#ifdef SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY_AND_THDPTR
if (!spider->direct_aggregate_item_current->init_mem_root)
{
SPD_INIT_ALLOC_ROOT(
@@ -2569,19 +2196,10 @@ int spider_db_fetch_for_item_sum_func(
4096, 0, MYF(MY_WME));
spider->direct_aggregate_item_current->init_mem_root = TRUE;
}
-#endif
Item *free_list = thd->free_list;
spider->direct_aggregate_item_current->item =
-#ifdef SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY
-#ifdef SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY_AND_THDPTR
new (&spider->direct_aggregate_item_current->mem_root)
Item_string(thd, "", 0, share->access_charset);
-#else
- new Item_string("", 0, share->access_charset);
-#endif
-#else
- new Item_string(share->access_charset);
-#endif
if (!spider->direct_aggregate_item_current->item)
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
thd->free_list = free_list;
@@ -2592,12 +2210,8 @@ int spider_db_fetch_for_item_sum_func(
(Item_string *) spider->direct_aggregate_item_current->item;
if (row->is_null())
{
-#ifdef SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY
item->val_str(NULL)->length(0);
item->append(NULL, 0);
-#else
- item->set_str_with_copy(NULL, 0);
-#endif
item->null_value = TRUE;
} else {
char buf[MAX_FIELD_WIDTH];
@@ -2606,12 +2220,8 @@ int spider_db_fetch_for_item_sum_func(
tmp_str.length(0);
if ((error_num = row->append_to_str(&tmp_str)))
DBUG_RETURN(error_num);
-#ifdef SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY
item->val_str(NULL)->length(0);
item->append((char *) tmp_str.ptr(), tmp_str.length());
-#else
- item->set_str_with_copy(tmp_str.ptr(), tmp_str.length());
-#endif
item->null_value = FALSE;
}
item_sum_min_max->direct_add(item);
@@ -2677,27 +2287,6 @@ int spider_db_append_match_where(
DBUG_RETURN(0);
}
-void spider_db_append_handler_next(
- ha_spider *spider
-) {
- const char *alias;
- uint alias_length;
- SPIDER_RESULT_LIST *result_list = &spider->result_list;
- DBUG_ENTER("spider_db_append_handler_next");
- if (result_list->sorted && result_list->desc_flg)
- {
- alias = SPIDER_SQL_PREV_STR;
- alias_length = SPIDER_SQL_PREV_LEN;
- } else {
- alias = SPIDER_SQL_NEXT_STR;
- alias_length = SPIDER_SQL_NEXT_LEN;
- }
- spider->set_order_to_pos_sql(SPIDER_SQL_TYPE_HANDLER);
- spider->append_key_order_with_alias_sql_part(alias, alias_length,
- SPIDER_SQL_TYPE_HANDLER);
- DBUG_VOID_RETURN;
-}
-
void spider_db_get_row_from_tmp_tbl_rec(
SPIDER_RESULT *current,
SPIDER_DB_ROW **row
@@ -2840,7 +2429,6 @@ int spider_db_fetch_table(
if (spider->mrr_with_cnt)
{
DBUG_PRINT("info", ("spider mrr_with_cnt"));
- if (spider->sql_kind[spider->result_link_idx] == SPIDER_SQL_KIND_SQL)
{
if (!row->is_null())
spider->multi_range_hit_point = row->val_int();
@@ -2852,9 +2440,6 @@ int spider_db_fetch_table(
else
DBUG_RETURN(ER_SPIDER_UNKNOWN_NUM);
row->next();
- } else {
- spider->multi_range_hit_point = 0;
- result_list->snap_mrr_with_cnt = FALSE;
}
}
@@ -3334,7 +2919,7 @@ int spider_db_free_result(
DBUG_RETURN(error_num);
}
}
- if (realloced & (SPIDER_SQL_TYPE_SELECT_SQL | SPIDER_SQL_TYPE_HANDLER))
+ if (realloced & (SPIDER_SQL_TYPE_SELECT_SQL))
{
for (roop_count = 0; roop_count < (int) share->link_count;
roop_count++)
@@ -4354,7 +3939,6 @@ int spider_db_fetch(
int error_num;
SPIDER_RESULT_LIST *result_list = &spider->result_list;
DBUG_ENTER("spider_db_fetch");
- if (spider->sql_kind[spider->result_link_idx] == SPIDER_SQL_KIND_SQL)
{
if (!spider->select_column_mode) {
if (result_list->keyread)
@@ -4366,9 +3950,6 @@ int spider_db_fetch(
} else
error_num = spider_db_fetch_minimum_columns(spider, buf, table,
result_list);
- } else {
- error_num = spider_db_fetch_table(spider, buf, table,
- result_list);
}
result_list->current_row_num++;
DBUG_PRINT("info",("spider error_num=%d", error_num));
@@ -4507,7 +4088,6 @@ int spider_db_seek_next(
result_list->split_read ?
result_list->split_read :
result_list->internal_limit - result_list->record_num;
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
{
if ((error_num = spider->reappend_limit_sql_part(
result_list->record_num, result_list->limit_num,
@@ -4525,17 +4105,6 @@ int spider_db_seek_next(
DBUG_RETURN(error_num);
}
}
- if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- spider_db_append_handler_next(spider);
- if ((error_num = spider->reappend_limit_sql_part(
- 0, result_list->limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- {
- DBUG_PRINT("info",("spider error_num 5=%d", error_num));
- DBUG_RETURN(error_num);
- }
- }
if (spider->use_fields)
{
@@ -4667,13 +4236,8 @@ int spider_db_seek_next(
SPIDER_LINK_STATUS_RECOVERY)
) {
ulong sql_type;
- conn = spider->conns[roop_count];
- if (spider->sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ conn= spider->conns[roop_count];
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
spider_db_handler *dbton_handler =
spider->dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
@@ -4899,7 +4463,6 @@ int spider_db_seek_last(
spider_next_split_read_param(spider);
result_list->limit_num =
result_list->internal_limit - result_list->record_num;
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
{
if ((error_num = spider->reappend_limit_sql_part(
result_list->internal_offset + result_list->record_num,
@@ -4913,21 +4476,6 @@ int spider_db_seek_last(
)
DBUG_RETURN(error_num);
}
- if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- spider_db_append_handler_next(spider);
- if ((error_num = spider->reappend_limit_sql_part(
- result_list->internal_offset + result_list->record_num,
- result_list->limit_num,
- SPIDER_SQL_TYPE_HANDLER)))
- DBUG_RETURN(error_num);
- if (
- !result_list->use_union &&
- (error_num = spider->append_select_lock_sql_part(
- SPIDER_SQL_TYPE_HANDLER))
- )
- DBUG_RETURN(error_num);
- }
int roop_start, roop_end, roop_count, lock_mode, link_ok;
lock_mode = spider_conn_lock_mode(spider);
@@ -4952,12 +4500,7 @@ int spider_db_seek_last(
SPIDER_LINK_STATUS_RECOVERY)
) {
ulong sql_type;
- if (spider->sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
conn = spider->conns[roop_count];
spider_db_handler *dbton_handler = spider->dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
@@ -5123,7 +4666,6 @@ int spider_db_seek_last(
result_list->limit_num =
result_list->internal_limit >= result_list->split_read ?
result_list->split_read : result_list->internal_limit;
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
{
spider->set_order_to_pos_sql(SPIDER_SQL_TYPE_SELECT_SQL);
if (
@@ -5134,35 +4676,12 @@ int spider_db_seek_last(
result_list->limit_num, SPIDER_SQL_TYPE_SELECT_SQL)) ||
(
!result_list->use_union &&
- (spider->sql_kinds & SPIDER_SQL_KIND_SQL) &&
(error_num = spider->append_select_lock_sql_part(
SPIDER_SQL_TYPE_SELECT_SQL))
)
)
DBUG_RETURN(error_num);
}
- if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- const char *alias;
- uint alias_length;
- if (result_list->sorted && result_list->desc_flg)
- {
- alias = SPIDER_SQL_LAST_STR;
- alias_length = SPIDER_SQL_LAST_LEN;
- } else {
- alias = SPIDER_SQL_FIRST_STR;
- alias_length = SPIDER_SQL_FIRST_LEN;
- }
- spider->set_order_to_pos_sql(SPIDER_SQL_TYPE_HANDLER);
- if (
- (error_num = spider->append_key_order_with_alias_sql_part(
- alias, alias_length, SPIDER_SQL_TYPE_HANDLER)) ||
- (error_num = spider->reappend_limit_sql_part(
- result_list->internal_offset,
- result_list->limit_num, SPIDER_SQL_TYPE_HANDLER))
- )
- DBUG_RETURN(error_num);
- }
int roop_start, roop_end, roop_count, lock_mode, link_ok;
lock_mode = spider_conn_lock_mode(spider);
@@ -5187,12 +4706,7 @@ int spider_db_seek_last(
SPIDER_LINK_STATUS_RECOVERY)
) {
ulong sql_type;
- if (spider->sql_kind[roop_count] == SPIDER_SQL_KIND_SQL)
- {
- sql_type = SPIDER_SQL_TYPE_SELECT_SQL;
- } else {
- sql_type = SPIDER_SQL_TYPE_HANDLER;
- }
+ sql_type= SPIDER_SQL_TYPE_SELECT_SQL;
conn = spider->conns[roop_count];
spider_db_handler *dbton_handler = spider->dbton_handler[conn->dbton_id];
pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
@@ -5401,7 +4915,6 @@ void spider_db_create_position(
pos->use_position = TRUE;
pos->mrr_with_cnt = spider->mrr_with_cnt;
pos->direct_aggregate = result_list->direct_aggregate;
- pos->sql_kind = spider->sql_kind[spider->result_link_idx];
pos->position_bitmap = spider->wide_handler->position_bitmap;
pos->ft_first = spider->ft_first;
pos->ft_current = spider->ft_current;
@@ -5424,7 +4937,6 @@ int spider_db_seek_tmp(
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
pos->row->first();
}
- if (pos->sql_kind == SPIDER_SQL_KIND_SQL)
{
if (!spider->select_column_mode)
{
@@ -5435,8 +4947,7 @@ int spider_db_seek_tmp(
error_num = spider_db_seek_tmp_table(buf, pos, spider, table);
} else
error_num = spider_db_seek_tmp_minimum_columns(buf, pos, spider, table);
- } else
- error_num = spider_db_seek_tmp_table(buf, pos, spider, table);
+ }
DBUG_PRINT("info",("spider error_num=%d", error_num));
DBUG_RETURN(error_num);
@@ -5479,11 +4990,8 @@ int spider_db_seek_tmp_table(
if (pos->mrr_with_cnt)
{
DBUG_PRINT("info", ("spider mrr_with_cnt"));
- if (pos->sql_kind == SPIDER_SQL_KIND_SQL)
{
row->next();
- } else {
- spider->result_list.snap_mrr_with_cnt = FALSE;
}
}
@@ -5898,7 +5406,6 @@ int spider_db_bulk_insert_init(
int error_num, roop_count;
SPIDER_SHARE *share = spider->share;
DBUG_ENTER("spider_db_bulk_insert_init");
- spider->sql_kinds = 0;
spider->reset_sql_sql(SPIDER_SQL_TYPE_INSERT_SQL);
for (
roop_count = spider_conn_link_idx_next(share->link_statuses,
@@ -5912,8 +5419,6 @@ int spider_db_bulk_insert_init(
if (spider->conns[roop_count])
spider->conns[roop_count]->ignore_dup_key =
spider->wide_handler->ignore_dup_key;
- spider_conn_use_handler(spider, spider->wide_handler->lock_mode,
- roop_count);
}
if (
(error_num = spider->append_insert_sql_part()) ||
@@ -5940,8 +5445,7 @@ int spider_db_bulk_insert(
if ((error_num = spider->append_insert_values_sql_part(
SPIDER_SQL_TYPE_INSERT_SQL)))
{
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
- spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
+ spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
DBUG_RETURN(error_num);
}
}
@@ -5953,8 +5457,7 @@ int spider_db_bulk_insert(
if ((error_num = spider->append_insert_terminator_sql_part(
SPIDER_SQL_TYPE_INSERT_SQL)))
{
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
- spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
+ spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
DBUG_RETURN(error_num);
}
bool insert_info = FALSE;
@@ -5981,8 +5484,7 @@ int spider_db_bulk_insert(
if ((error_num = dbton_handler->set_sql_for_exec(sql_type,
roop_count2)))
{
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
- spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
+ spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
if (dbton_handler->need_lock_before_set_sql_for_exec(sql_type))
{
SPIDER_CLEAR_FILE_POS(&conn->mta_conn_mutex_file_pos);
@@ -6002,8 +5504,7 @@ int spider_db_bulk_insert(
conn->mta_conn_mutex_unlock_later = TRUE;
if ((error_num = spider_db_set_names(spider, conn, roop_count2)))
{
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
- spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
+ spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
DBUG_ASSERT(conn->mta_conn_mutex_lock_already);
DBUG_ASSERT(conn->mta_conn_mutex_unlock_later);
conn->mta_conn_mutex_lock_already = FALSE;
@@ -6036,14 +5537,10 @@ int spider_db_bulk_insert(
spider_conn_set_timeout_from_share(conn, roop_count2,
spider->wide_handler->trx->thd,
share);
- if (dbton_handler->execute_sql(
- sql_type,
- conn,
- -1,
- &spider->need_mons[roop_count2])
- ) {
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
- spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
+ if (dbton_handler->execute_sql(sql_type, conn, -1,
+ &spider->need_mons[roop_count2]))
+ {
+ spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
error_num = spider_db_errorno(conn);
if (error_num == HA_ERR_FOUND_DUPP_KEY)
{
@@ -6107,9 +5604,8 @@ int spider_db_bulk_insert(
DBUG_ASSERT(!conn->mta_conn_mutex_lock_already);
DBUG_ASSERT(!conn->mta_conn_mutex_unlock_later);
conn->mta_conn_mutex_lock_already = TRUE;
- conn->mta_conn_mutex_unlock_later = TRUE;
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
- spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
+ conn->mta_conn_mutex_unlock_later= TRUE;
+ spider->set_insert_to_pos_sql(SPIDER_SQL_TYPE_INSERT_SQL);
if (table->next_number_field &&
(
!table->auto_increment_field_not_null ||
@@ -6716,30 +6212,15 @@ int spider_db_direct_update(
if ((error_num = spider->append_update_sql_part()))
DBUG_RETURN(error_num);
-/*
- SQL access -> SQL remote access
- !spider->do_direct_update &&
- (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
-
- SQL access -> SQL remote access with dirct_update
- spider->do_direct_update &&
- spider->direct_update_kinds == SPIDER_SQL_KIND_SQL &&
- spider->wide_handler->direct_update_fields
-*/
-
if (!spider->do_direct_update)
{
- if (
- (spider->sql_kinds & SPIDER_SQL_KIND_SQL) &&
- (error_num = spider->append_update_set_sql_part())
- ) {
+ if ((error_num= spider->append_update_set_sql_part()))
+ {
DBUG_RETURN(error_num);
}
} else {
- if (
- (spider->direct_update_kinds & SPIDER_SQL_KIND_SQL) &&
- (error_num = spider->append_direct_update_set_sql_part())
- ) {
+ if ((error_num= spider->append_direct_update_set_sql_part()))
+ {
DBUG_RETURN(error_num);
}
}
@@ -6755,7 +6236,6 @@ int spider_db_direct_update(
result_list->internal_limit >= select_limit ?
select_limit : result_list->internal_limit;
result_list->internal_offset += offset_limit;
- if (spider->direct_update_kinds & SPIDER_SQL_KIND_SQL)
{
if (
(error_num = spider->append_key_where_sql_part(
@@ -7036,7 +6516,6 @@ int spider_db_direct_delete(
result_list->internal_limit >= select_limit ?
select_limit : result_list->internal_limit;
result_list->internal_offset += offset_limit;
- if (spider->direct_update_kinds & SPIDER_SQL_KIND_SQL)
{
if (
(error_num = spider->append_delete_sql_part()) ||
@@ -7182,7 +6661,6 @@ int spider_db_direct_delete(
pthread_mutex_unlock(&conn->mta_conn_mutex);
}
int error_num2 = 0;
- if (spider->direct_update_kinds & SPIDER_SQL_KIND_SQL)
{
if ((error_num = spider->reset_sql_sql(SPIDER_SQL_TYPE_DELETE_SQL)))
error_num2 = error_num;
@@ -7948,9 +7426,7 @@ int spider_db_print_item_type(
field, spider, str, alias, alias_length, dbton_id, use_fields, fields));
case Item::SUBSELECT_ITEM:
case Item::TRIGGER_FIELD_ITEM:
-#ifdef SPIDER_HAS_EXPR_CACHE_ITEM
case Item::EXPR_CACHE_ITEM:
-#endif
DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
default:
DBUG_RETURN(spider_db_print_item_type_default(item, spider, str));
@@ -8173,13 +7649,8 @@ int spider_db_open_item_ident(
}
if (str)
{
-#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if (item_ident->field_name.str)
field_name_length = item_ident->field_name.length;
-#else
- if (item_ident->field_name)
- field_name_length = strlen(item_ident->field_name);
-#endif
else
field_name_length = 0;
if (share->access_charset->cset == system_charset_info->cset)
@@ -8190,14 +7661,9 @@ int spider_db_open_item_ident(
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
str->q_append(alias, alias_length);
-#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if ((error_num = spider_dbton[dbton_id].db_util->
append_escaped_name(str, item_ident->field_name.str,
field_name_length)))
-#else
- if ((error_num = spider_dbton[dbton_id].db_util->
- append_escaped_name(str, item_ident->field_name, field_name_length)))
-#endif
{
DBUG_RETURN(error_num);
}
@@ -8205,15 +7671,9 @@ int spider_db_open_item_ident(
if (str->reserve(alias_length))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(alias, alias_length);
-#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if ((error_num = spider_dbton[dbton_id].db_util->
append_escaped_name_with_charset(str, item_ident->field_name.str,
field_name_length, system_charset_info)))
-#else
- if ((error_num = spider_dbton[dbton_id].db_util->
- append_escaped_name_with_charset(str, item_ident->field_name,
- field_name_length, system_charset_info)))
-#endif
{
DBUG_RETURN(error_num);
}
@@ -8324,7 +7784,6 @@ int spider_db_open_item_ref(
DBUG_ENTER("spider_db_open_item_ref");
if (item_ref->ref)
{
-#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if (
(*(item_ref->ref))->type() != Item::CACHE_ITEM &&
item_ref->ref_type() != Item_ref::VIEW_REF &&
@@ -8332,34 +7791,16 @@ int spider_db_open_item_ref(
item_ref->name.str &&
item_ref->alias_name_used
)
-#else
- if (
- (*(item_ref->ref))->type() != Item::CACHE_ITEM &&
- item_ref->ref_type() != Item_ref::VIEW_REF &&
- !item_ref->table_name &&
- item_ref->name &&
- item_ref->alias_name_used
- )
-#endif
{
if (str)
{
-#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
uint length = item_ref->name.length;
-#else
- uint length = strlen(item_ref->name);
-#endif
if (str->reserve(length + /* SPIDER_SQL_NAME_QUOTE_LEN */ 2))
{
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
}
-#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if ((error_num = spider_dbton[dbton_id].db_util->
append_name(str, item_ref->name.str, length)))
-#else
- if ((error_num = spider_dbton[dbton_id].db_util->
- append_name(str, item_ref->name, length)))
-#endif
{
DBUG_RETURN(error_num);
}
@@ -8606,12 +8047,10 @@ int spider_db_open_item_int(
thd->variables.time_zone = UTC;
print_quoted_string = TRUE;
} else {
-#ifdef SPIDER_ITEM_HAS_CMP_TYPE
DBUG_PRINT("info",("spider cmp_type=%u", item->cmp_type()));
if (item->cmp_type() == TIME_RESULT)
print_quoted_string = TRUE;
else
-#endif
print_quoted_string = FALSE;
}
@@ -8805,18 +8244,11 @@ int spider_db_append_condition(
DBUG_ENTER("spider_db_append_condition");
if (!test_flg)
{
- if (spider->sql_kinds & SPIDER_SQL_KIND_SQL)
{
if ((error_num = spider->append_condition_sql_part(
alias, alias_length, SPIDER_SQL_TYPE_SELECT_SQL, FALSE)))
DBUG_RETURN(error_num);
}
- if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- if ((error_num = spider->append_condition_sql_part(
- alias, alias_length, SPIDER_SQL_TYPE_HANDLER, FALSE)))
- DBUG_RETURN(error_num);
- }
} else {
if (spider->wide_handler->cond_check)
DBUG_RETURN(spider->wide_handler->cond_check_error);
@@ -9130,10 +8562,8 @@ int spider_db_udf_direct_sql(
SPIDER_CONN *conn = direct_sql->conn;
SPIDER_DB_RESULT *result = NULL;
TABLE *table;
- int bulk_insert_rows = (int) spider_param_udf_ds_bulk_insert_rows(thd,
- direct_sql->bulk_insert_rows);
- int table_loop_mode = spider_param_udf_ds_table_loop_mode(thd,
- direct_sql->table_loop_mode);
+ int bulk_insert_rows= (int) direct_sql->bulk_insert_rows;
+ int table_loop_mode= direct_sql->table_loop_mode;
double ping_interval_at_trx_start =
spider_param_ping_interval_at_trx_start(thd);
time_t tmp_time = (time_t) time((time_t*) 0);
@@ -9247,14 +8677,13 @@ int spider_db_udf_direct_sql(
{
while (!error_num && !end_of_file)
{
- udf_table_mutex_index = spider_udf_calc_hash(
- direct_sql->db_names[roop_count],
- spider_param_udf_table_lock_mutex_count());
- udf_table_mutex_index += spider_udf_calc_hash(
- direct_sql->table_names[roop_count],
- spider_param_udf_table_lock_mutex_count());
- udf_table_mutex_index %=
- spider_param_udf_table_lock_mutex_count();
+ udf_table_mutex_index=
+ spider_udf_calc_hash(direct_sql->db_names[roop_count],
+ spider_udf_table_lock_mutex_count);
+ udf_table_mutex_index+=
+ spider_udf_calc_hash(direct_sql->table_names[roop_count],
+ spider_udf_table_lock_mutex_count);
+ udf_table_mutex_index%= spider_udf_table_lock_mutex_count;
pthread_mutex_lock(
&trx->udf_table_mutexes[udf_table_mutex_index]);
table = direct_sql->tables[roop_count];
@@ -10029,13 +9458,8 @@ int spider_db_udf_copy_key_row(
) {
int error_num;
DBUG_ENTER("spider_db_udf_copy_key_row");
-#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
if ((error_num = spider_db_append_name_with_quote_str(str,
(char *) field->field_name.str, dbton_id)))
-#else
- if ((error_num = spider_db_append_name_with_quote_str(str,
- (char *) field->field_name, dbton_id)))
-#endif
DBUG_RETURN(error_num);
if (str->reserve(joint_length + *length + SPIDER_SQL_AND_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
@@ -10305,8 +9729,7 @@ int spider_db_udf_copy_tables(
pthread_mutex_unlock(&tmp_conn->mta_conn_mutex);
goto error_db_query;
}
- bulk_insert_rows = spider_param_udf_ct_bulk_insert_rows(
- copy_tables->bulk_insert_rows);
+ bulk_insert_rows= copy_tables->bulk_insert_rows;
if (
select_ct->append_key_order_str(key_info, 0, FALSE) ||
select_ct->append_limit(0, bulk_insert_rows) ||
@@ -10518,8 +9941,7 @@ int spider_db_udf_copy_tables(
insert_ct->set_sql_to_pos();
}
DBUG_PRINT("info",("spider sleep"));
- bulk_insert_interval = spider_param_udf_ct_bulk_insert_interval(
- copy_tables->bulk_insert_interval);
+ bulk_insert_interval= copy_tables->bulk_insert_interval;
my_sleep(bulk_insert_interval);
}
}
@@ -10580,151 +10002,6 @@ error:
DBUG_RETURN(error_num);
}
-int spider_db_open_handler(
- ha_spider *spider,
- SPIDER_CONN *conn,
- int link_idx
-) {
- int error_num;
- SPIDER_SHARE *share = spider->share;
- uint *handler_id_ptr =
- &spider->m_handler_id[link_idx]
- ;
- spider_db_handler *dbton_hdl = spider->dbton_handler[conn->dbton_id];
- DBUG_ENTER("spider_db_open_handler");
- pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
- pthread_mutex_lock(&conn->mta_conn_mutex);
- SPIDER_SET_FILE_POS(&conn->mta_conn_mutex_file_pos);
- conn->need_mon = &spider->need_mons[link_idx];
- DBUG_ASSERT(conn->mta_conn_mutex_file_pos.file_name);
- DBUG_ASSERT(!conn->mta_conn_mutex_lock_already);
- DBUG_ASSERT(!conn->mta_conn_mutex_unlock_later);
- conn->mta_conn_mutex_lock_already = TRUE;
- conn->mta_conn_mutex_unlock_later = TRUE;
- if (!spider->handler_opened(link_idx, conn->conn_kind))
- *handler_id_ptr = conn->opened_handlers;
-
- if (!spider->handler_opened(link_idx, conn->conn_kind))
- my_sprintf(spider->m_handler_cid[link_idx],
- (spider->m_handler_cid[link_idx], SPIDER_SQL_HANDLER_CID_FORMAT,
- *handler_id_ptr));
-
- if ((error_num = dbton_hdl->append_open_handler_part(
- SPIDER_SQL_TYPE_HANDLER, *handler_id_ptr, conn, link_idx)))
- {
- goto error;
- }
-
- spider_conn_set_timeout_from_share(conn, link_idx,
- spider->wide_handler->trx->thd,
- share);
- if (dbton_hdl->execute_sql(
- SPIDER_SQL_TYPE_HANDLER,
- conn,
- -1,
- &spider->need_mons[link_idx])
- ) {
- error_num = spider_db_errorno(conn);
- goto error;
- }
- dbton_hdl->reset_sql(SPIDER_SQL_TYPE_HANDLER);
-
- if (!spider->handler_opened(link_idx, conn->conn_kind))
- {
- if ((error_num = dbton_hdl->insert_opened_handler(conn, link_idx)))
- goto error;
- conn->opened_handlers++;
- }
- DBUG_PRINT("info",("spider conn=%p", conn));
- DBUG_PRINT("info",("spider opened_handlers=%u", conn->opened_handlers));
- DBUG_ASSERT(conn->mta_conn_mutex_lock_already);
- DBUG_ASSERT(conn->mta_conn_mutex_unlock_later);
- conn->mta_conn_mutex_lock_already = FALSE;
- conn->mta_conn_mutex_unlock_later = FALSE;
- SPIDER_CLEAR_FILE_POS(&conn->mta_conn_mutex_file_pos);
- pthread_mutex_unlock(&conn->mta_conn_mutex);
- DBUG_RETURN(0);
-
-error:
- DBUG_ASSERT(conn->mta_conn_mutex_lock_already);
- DBUG_ASSERT(conn->mta_conn_mutex_unlock_later);
- conn->mta_conn_mutex_lock_already = FALSE;
- conn->mta_conn_mutex_unlock_later = FALSE;
- SPIDER_CLEAR_FILE_POS(&conn->mta_conn_mutex_file_pos);
- pthread_mutex_unlock(&conn->mta_conn_mutex);
- DBUG_RETURN(error_num);
-}
-
-
-int spider_db_close_handler(
- ha_spider *spider,
- SPIDER_CONN *conn,
- int link_idx,
- uint tgt_conn_kind
-) {
- int error_num;
- spider_db_handler *dbton_hdl = spider->dbton_handler[conn->dbton_id];
- DBUG_ENTER("spider_db_close_handler");
- DBUG_PRINT("info",("spider conn=%p", conn));
- pthread_mutex_assert_not_owner(&conn->mta_conn_mutex);
- pthread_mutex_lock(&conn->mta_conn_mutex);
- SPIDER_SET_FILE_POS(&conn->mta_conn_mutex_file_pos);
- conn->need_mon = &spider->need_mons[link_idx];
- DBUG_ASSERT(!conn->mta_conn_mutex_lock_already);
- DBUG_ASSERT(!conn->mta_conn_mutex_unlock_later);
- conn->mta_conn_mutex_lock_already = TRUE;
- conn->mta_conn_mutex_unlock_later = TRUE;
- if (spider->handler_opened(link_idx, tgt_conn_kind))
- {
- dbton_hdl->reset_sql(SPIDER_SQL_TYPE_HANDLER);
- if ((error_num = dbton_hdl->append_close_handler_part(
- SPIDER_SQL_TYPE_HANDLER, link_idx)))
- {
- DBUG_ASSERT(conn->mta_conn_mutex_lock_already);
- DBUG_ASSERT(conn->mta_conn_mutex_unlock_later);
- conn->mta_conn_mutex_lock_already = FALSE;
- conn->mta_conn_mutex_unlock_later = FALSE;
- SPIDER_CLEAR_FILE_POS(&conn->mta_conn_mutex_file_pos);
- pthread_mutex_unlock(&conn->mta_conn_mutex);
- DBUG_RETURN(error_num);
- }
-
- spider_conn_set_timeout_from_share(conn, link_idx,
- spider->wide_handler->trx->thd,
- spider->share);
- if (dbton_hdl->execute_sql(
- SPIDER_SQL_TYPE_HANDLER,
- conn,
- -1,
- &spider->need_mons[link_idx])
- ) {
- error_num = spider_db_errorno(conn);
- goto error;
- }
- dbton_hdl->reset_sql(SPIDER_SQL_TYPE_HANDLER);
- if ((error_num = dbton_hdl->delete_opened_handler(conn, link_idx)))
- goto error;
- conn->opened_handlers--;
- DBUG_PRINT("info",("spider opened_handlers=%u", conn->opened_handlers));
- }
- DBUG_ASSERT(conn->mta_conn_mutex_lock_already);
- DBUG_ASSERT(conn->mta_conn_mutex_unlock_later);
- conn->mta_conn_mutex_lock_already = FALSE;
- conn->mta_conn_mutex_unlock_later = FALSE;
- SPIDER_CLEAR_FILE_POS(&conn->mta_conn_mutex_file_pos);
- pthread_mutex_unlock(&conn->mta_conn_mutex);
- DBUG_RETURN(0);
-
-error:
- DBUG_ASSERT(conn->mta_conn_mutex_lock_already);
- DBUG_ASSERT(conn->mta_conn_mutex_unlock_later);
- conn->mta_conn_mutex_lock_already = FALSE;
- conn->mta_conn_mutex_unlock_later = FALSE;
- SPIDER_CLEAR_FILE_POS(&conn->mta_conn_mutex_file_pos);
- pthread_mutex_unlock(&conn->mta_conn_mutex);
- DBUG_RETURN(error_num);
-}
-
bool spider_db_conn_is_network_error(
int error_num
) {
diff --git a/storage/spider/spd_db_conn.h b/storage/spider/spd_db_conn.h
index adda66d547b..1de59f43858 100644
--- a/storage/spider/spd_db_conn.h
+++ b/storage/spider/spd_db_conn.h
@@ -271,8 +271,6 @@
#define SPIDER_SQL_INDEX_FORCE_LEN (sizeof(SPIDER_SQL_INDEX_FORCE_STR) - 1)
#define SPIDER_SQL_INT_LEN 20
-#define SPIDER_SQL_HANDLER_CID_LEN 6
-#define SPIDER_SQL_HANDLER_CID_FORMAT "t%05u"
#define SPIDER_UDF_PING_TABLE_PING_ONLY (1 << 0)
#define SPIDER_UDF_PING_TABLE_USE_WHERE (1 << 1)
#define SPIDER_UDF_PING_TABLE_USE_ALL_MONITORING_NODES (1 << 2)
@@ -544,10 +542,6 @@ void spider_db_free_show_index(
SPIDER_SHARE *share
);
-void spider_db_append_handler_next(
- ha_spider *spider
-);
-
void spider_db_get_row_from_tmp_tbl_rec(
SPIDER_RESULT *current,
SPIDER_DB_ROW **row
@@ -1144,20 +1138,6 @@ int spider_db_udf_copy_tables(
longlong bulk_insert_rows
);
-int spider_db_open_handler(
- ha_spider *spider,
- SPIDER_CONN *conn,
- int link_idx
-);
-
-
-int spider_db_close_handler(
- ha_spider *spider,
- SPIDER_CONN *conn,
- int link_idx,
- uint tgt_conn_kind
-);
-
bool spider_db_conn_is_network_error(
int error_num
);
diff --git a/storage/spider/spd_db_include.h b/storage/spider/spd_db_include.h
index 6a8c03677f3..02d0c389515 100644
--- a/storage/spider/spd_db_include.h
+++ b/storage/spider/spd_db_include.h
@@ -33,12 +33,8 @@
#define SPIDER_HAS_APPEND_FOR_SINGLE_QUOTE
#define SPIDER_HAS_SHOW_SIMPLE_FUNC
#define SPIDER_HAS_JT_HASH_INDEX_MERGE
-#define SPIDER_HAS_EXPR_CACHE_ITEM
-#define SPIDER_ITEM_HAS_CMP_TYPE
#define SPIDER_HAS_TIME_STATUS
#define SPIDER_HAS_DECIMAL_OPERATION_RESULTS_VALUE_TYPE
-#define SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY
-#define SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY_AND_THDPTR
#define SPIDER_ORDER_HAS_ENUM_ORDER
#define SPIDER_ITEM_GEOFUNC_NAME_HAS_MBR
#define SPIDER_HANDLER_AUTO_REPAIR_HAS_ERROR
@@ -174,9 +170,6 @@ typedef st_spider_result SPIDER_RESULT;
#define SPIDER_CONN_KIND_MYSQL (1 << 0)
-#define SPIDER_SQL_KIND_SQL (1 << 0)
-#define SPIDER_SQL_KIND_HANDLER (1 << 1)
-
#define SPIDER_SQL_TYPE_SELECT_SQL (1 << 0)
#define SPIDER_SQL_TYPE_INSERT_SQL (1 << 1)
#define SPIDER_SQL_TYPE_UPDATE_SQL (1 << 2)
@@ -185,7 +178,6 @@ typedef st_spider_result SPIDER_RESULT;
#define SPIDER_SQL_TYPE_TMP_SQL (1 << 5)
#define SPIDER_SQL_TYPE_DROP_TMP_TABLE_SQL (1 << 6)
#define SPIDER_SQL_TYPE_OTHER_SQL (1 << 7)
-#define SPIDER_SQL_TYPE_HANDLER (1 << 8)
#define SPIDER_SQL_TYPE_SELECT_HS (1 << 9)
#define SPIDER_SQL_TYPE_INSERT_HS (1 << 10)
#define SPIDER_SQL_TYPE_UPDATE_HS (1 << 11)
@@ -1100,8 +1092,6 @@ public:
) = 0;
virtual uint get_lock_table_hash_count() = 0;
virtual void reset_lock_table_hash() = 0;
- virtual uint get_opened_handler_count() = 0;
- virtual void reset_opened_handler() = 0;
virtual void set_dup_key_idx(
ha_spider *spider,
int link_idx
@@ -1367,16 +1357,6 @@ public:
ulong sql_type,
uint multi_range_cnt
) = 0;
- virtual int append_open_handler_part(
- ulong sql_type,
- uint handler_id,
- SPIDER_CONN *conn,
- int link_idx
- ) = 0;
- virtual int append_close_handler_part(
- ulong sql_type,
- int link_idx
- ) = 0;
virtual int append_insert_terminator_part(
ulong sql_type
) = 0;
@@ -1539,20 +1519,9 @@ public:
SPIDER_CONN *conn,
int link_idx
) = 0;
- virtual int insert_opened_handler(
- SPIDER_CONN *conn,
- int link_idx
- ) = 0;
- virtual int delete_opened_handler(
- SPIDER_CONN *conn,
- int link_idx
- ) = 0;
virtual int sync_from_clone_source(
spider_db_handler *dbton_hdl
) = 0;
- virtual bool support_use_handler(
- int use_handler
- ) = 0;
virtual bool minimum_select_bit_is_set(
uint field_index
) = 0;
@@ -1741,7 +1710,6 @@ typedef struct st_spider_position
bool use_position;
bool mrr_with_cnt;
bool direct_aggregate;
- uint sql_kind;
uchar *position_bitmap;
st_spider_ft_info *ft_first;
st_spider_ft_info *ft_current;
@@ -1790,9 +1758,6 @@ typedef struct st_spider_result_list
int key_order;
spider_string *sqls;
int ha_read_kind;
- bool have_sql_kind_backup;
- uint *sql_kind_backup;
- uint sql_kinds_backup;
bool use_union;
bool use_both_key;
const key_range *end_key;
diff --git a/storage/spider/spd_db_mysql.cc b/storage/spider/spd_db_mysql.cc
index 192d151eb35..78236243bf2 100644
--- a/storage/spider/spd_db_mysql.cc
+++ b/storage/spider/spd_db_mysql.cc
@@ -1758,7 +1758,7 @@ spider_db_mbase::spider_db_mbase(
SPIDER_CONN *conn,
spider_db_mbase_util *spider_db_mbase_utility
) : spider_db_conn(conn), spider_db_mbase_utility(spider_db_mbase_utility),
- lock_table_hash_inited(FALSE), handler_open_array_inited(FALSE)
+ lock_table_hash_inited(FALSE)
{
DBUG_ENTER("spider_db_mbase::spider_db_mbase");
DBUG_PRINT("info",("spider this=%p", this));
@@ -1788,15 +1788,6 @@ spider_db_mbase::~spider_db_mbase()
{
DBUG_ENTER("spider_db_mbase::~spider_db_mbase");
DBUG_PRINT("info",("spider this=%p", this));
- if (handler_open_array_inited)
- {
- reset_opened_handler();
- spider_free_mem_calc(spider_current_trx,
- handler_open_array_id,
- handler_open_array.max_element *
- handler_open_array.size_of_element);
- delete_dynamic(&handler_open_array);
- }
if (lock_table_hash_inited)
{
spider_free_mem_calc(spider_current_trx,
@@ -1839,18 +1830,6 @@ int spider_db_mbase::init()
lock_table_hash.array.size_of_element);
lock_table_hash_inited = TRUE;
- if (
- SPD_INIT_DYNAMIC_ARRAY2(&handler_open_array,
- sizeof(SPIDER_LINK_FOR_HASH *), NULL, 16, 16, MYF(MY_WME))
- ) {
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- spider_alloc_calc_mem_init(handler_open_array, 162);
- spider_alloc_calc_mem(spider_current_trx,
- handler_open_array,
- handler_open_array.max_element *
- handler_open_array.size_of_element);
- handler_open_array_inited = TRUE;
DBUG_RETURN(0);
}
@@ -3783,30 +3762,6 @@ void spider_db_mbase::reset_lock_table_hash()
DBUG_VOID_RETURN;
}
-uint spider_db_mbase::get_opened_handler_count()
-{
- DBUG_ENTER("spider_db_mbase::get_opened_handler_count");
- DBUG_PRINT("info",("spider this=%p", this));
- DBUG_RETURN(handler_open_array.elements);
-}
-
-void spider_db_mbase::reset_opened_handler()
-{
- ha_spider *tmp_spider;
- int tmp_link_idx;
- SPIDER_LINK_FOR_HASH **tmp_link_for_hash;
- DBUG_ENTER("spider_db_mbase::reset_opened_handler");
- DBUG_PRINT("info",("spider this=%p", this));
- while ((tmp_link_for_hash =
- (SPIDER_LINK_FOR_HASH **) pop_dynamic(&handler_open_array)))
- {
- tmp_spider = (*tmp_link_for_hash)->spider;
- tmp_link_idx = (*tmp_link_for_hash)->link_idx;
- tmp_spider->clear_handler_opened(tmp_link_idx, conn->conn_kind);
- }
- DBUG_VOID_RETURN;
-}
-
void spider_db_mbase::set_dup_key_idx(
ha_spider *spider,
int link_idx
@@ -3828,13 +3783,8 @@ void spider_db_mbase::set_dup_key_idx(
key_name = spider->share->tgt_pk_names[all_link_idx];
key_name_length = spider->share->tgt_pk_names_lengths[all_link_idx];
} else {
-#ifdef SPIDER_use_LEX_CSTRING_for_KEY_Field_name
key_name = table->key_info[roop_count].name.str;
key_name_length = table->key_info[roop_count].name.length;
-#else
- key_name = table->key_info[roop_count].name;
- key_name_length = strlen(key_name);
-#endif
}
DBUG_PRINT("info",("spider key_name=%s", key_name));
if (
@@ -6329,15 +6279,12 @@ int spider_db_mbase_util::open_item_func(
bool has_other_item = FALSE;
while((item = lif++))
{
-#ifdef SPIDER_HAS_EXPR_CACHE_ITEM
if (
item->type() == Item::EXPR_CACHE_ITEM
) {
DBUG_PRINT("info",("spider EXPR_CACHE_ITEM"));
has_expr_cache_item = TRUE;
- } else
-#endif
- if (
+ } else if (
item->type() == Item::FUNC_ITEM &&
((Item_func *) item)->functype() == Item_func::ISNOTNULL_FUNC
) {
@@ -6536,7 +6483,6 @@ int spider_db_mbase_util::open_item_func(
}
break;
case Item_func::LIKE_FUNC:
-#ifdef SPIDER_LIKE_FUNC_HAS_GET_NEGATED
if (str)
{
if (((Item_func_like *)item_func)->get_negated())
@@ -6552,9 +6498,6 @@ int spider_db_mbase_util::open_item_func(
}
}
break;
-#else
- DBUG_RETURN(ER_SPIDER_COND_SKIP_NUM);
-#endif
case Item_func::CASE_SEARCHED_FUNC:
case Item_func::CASE_SIMPLE_FUNC:
#ifdef ITEM_FUNC_CASE_PARAMS_ARE_PUBLIC
@@ -8762,8 +8705,6 @@ int spider_mbase_handler::append_index_hint(
while(index_hints && (hint = iter++))
{
-// hint->print(thd, str);
- if (sql_type != SPIDER_SQL_TYPE_HANDLER)
{
switch(hint->type)
{
@@ -8808,13 +8749,8 @@ int spider_mbase_handler::append_table_name_with_adjusting(
int error_num = 0;
DBUG_ENTER("spider_mbase_handler::append_table_name_with_adjusting");
DBUG_PRINT("info",("spider this=%p", this));
- if (sql_type == SPIDER_SQL_TYPE_HANDLER)
- {
- str->q_append(spider->m_handler_cid[link_idx], SPIDER_SQL_HANDLER_CID_LEN);
- } else {
error_num = mysql_share->append_table_name_with_adjusting(str,
spider->conn_link_idx[link_idx]);
- }
DBUG_RETURN(error_num);
}
@@ -9723,10 +9659,8 @@ int spider_mbase_handler::append_direct_update_set(
spider_string *str
) {
DBUG_ENTER("spider_mbase_handler::append_direct_update_set");
- if (
- spider->direct_update_kinds == SPIDER_SQL_KIND_SQL &&
- spider->wide_handler->direct_update_fields
- ) {
+ if (spider->wide_handler->direct_update_fields)
+ {
if (str->reserve(SPIDER_SQL_SET_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(SPIDER_SQL_SET_STR, SPIDER_SQL_SET_LEN);
@@ -9734,11 +9668,6 @@ int spider_mbase_handler::append_direct_update_set(
dbton_id, FALSE, NULL));
}
- if (
- (spider->direct_update_kinds & SPIDER_SQL_KIND_SQL)
- ) {
- DBUG_ASSERT(0);
- }
DBUG_RETURN(0);
}
@@ -9798,9 +9727,6 @@ int spider_mbase_handler::append_select_part(
case SPIDER_SQL_TYPE_SELECT_SQL:
str = &sql;
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- break;
default:
DBUG_RETURN(0);
}
@@ -9815,12 +9741,7 @@ int spider_mbase_handler::append_select(
SPIDER_RESULT_LIST *result_list = &spider->result_list;
SPIDER_WIDE_HANDLER *wide_handler = spider->wide_handler;
DBUG_ENTER("spider_mbase_handler::append_select");
- if (sql_type == SPIDER_SQL_TYPE_HANDLER)
{
- if (str->reserve(SPIDER_SQL_HANDLER_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_HANDLER_STR, SPIDER_SQL_HANDLER_LEN);
- } else {
if (str->reserve(SPIDER_SQL_SELECT_LEN))
DBUG_RETURN(HA_ERR_OUT_OF_MEM);
str->q_append(SPIDER_SQL_SELECT_STR, SPIDER_SQL_SELECT_LEN);
@@ -10318,9 +10239,6 @@ int spider_mbase_handler::append_hint_after_table_part(
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
str = &update_sql;
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- break;
default:
DBUG_RETURN(0);
}
@@ -10359,9 +10277,6 @@ void spider_mbase_handler::set_where_pos(
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
where_pos = update_sql.length();
break;
- case SPIDER_SQL_TYPE_HANDLER:
- ha_read_pos = ha_sql.length();
- break;
default:
break;
}
@@ -10384,9 +10299,6 @@ void spider_mbase_handler::set_where_to_pos(
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
update_sql.length(where_pos);
break;
- case SPIDER_SQL_TYPE_HANDLER:
- ha_sql.length(ha_read_pos);
- break;
default:
break;
}
@@ -10732,15 +10644,6 @@ int spider_mbase_handler::append_key_where_part(
str = &update_sql;
set_order = FALSE;
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- ha_read_pos = str->length();
- str_part = &sql_part;
- str_part2 = &sql_part2;
- str_part->length(0);
- str_part2->length(0);
- set_order = TRUE;
- break;
default:
DBUG_RETURN(0);
}
@@ -10790,11 +10693,6 @@ int spider_mbase_handler::append_is_null_part(
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
str = &update_sql;
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- str_part = &sql_part;
- str_part2 = &sql_part2;
- break;
default:
DBUG_RETURN(0);
}
@@ -10821,38 +10719,6 @@ int spider_mbase_handler::append_is_null(
{
if (*(*ptr)++)
{
- if (sql_type == SPIDER_SQL_TYPE_HANDLER)
- {
- if (
- key_eq ||
- key->flag == HA_READ_KEY_EXACT ||
- key->flag == HA_READ_KEY_OR_NEXT
- ) {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- if (str->reserve(SPIDER_SQL_EQUAL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_EQUAL_STR, SPIDER_SQL_EQUAL_LEN);
- str = str_part;
- if (str->reserve(SPIDER_SQL_NULL_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_NULL_STR, SPIDER_SQL_NULL_LEN);
- }
- } else {
- if (str_part->length() == SPIDER_SQL_OPEN_PAREN_LEN)
- {
- str = str_part;
- /* first index column */
- str->length(str->length() - SPIDER_SQL_OPEN_PAREN_LEN);
- ha_next_pos = str->length();
- if (str->reserve(SPIDER_SQL_FIRST_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_FIRST_STR, SPIDER_SQL_FIRST_LEN);
- spider->result_list.ha_read_kind = 1;
- }
- }
- str = str_part2;
- }
if (
key_eq ||
key->flag == HA_READ_KEY_EXACT ||
@@ -10899,11 +10765,6 @@ int spider_mbase_handler::append_where_terminator_part(
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
str = &update_sql;
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- str_part = &sql_part;
- str_part2 = &sql_part2;
- break;
default:
DBUG_RETURN(0);
}
@@ -10922,31 +10783,11 @@ int spider_mbase_handler::append_where_terminator(
) {
SPIDER_RESULT_LIST *result_list = &spider->result_list;
DBUG_ENTER("spider_mbase_handler::append_where_terminator");
- DBUG_PRINT("info",("spider this=%p", this));
- if (sql_type != SPIDER_SQL_TYPE_HANDLER)
- {
- str->length(str->length() - SPIDER_SQL_AND_LEN);
- if (!set_order)
- result_list->key_order = key_count;
- } else {
- str_part2->length(str_part2->length() - SPIDER_SQL_AND_LEN);
+ DBUG_PRINT("info", ("spider this=%p", this));
- if (!result_list->ha_read_kind)
- str_part->q_append(SPIDER_SQL_CLOSE_PAREN_STR,
- SPIDER_SQL_CLOSE_PAREN_LEN);
- if (str->append(*str_part))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- uint clause_length = str->length() - ha_next_pos;
- if (clause_length < SPIDER_SQL_NEXT_LEN)
- {
- int roop_count;
- clause_length = SPIDER_SQL_NEXT_LEN - clause_length;
- if (str->reserve(clause_length))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- for (roop_count = 0; roop_count < (int) clause_length; roop_count++)
- str->q_append(SPIDER_SQL_SPACE_STR, SPIDER_SQL_SPACE_LEN);
- }
- }
+ str->length(str->length() - SPIDER_SQL_AND_LEN);
+ if (!set_order)
+ result_list->key_order= key_count;
DBUG_RETURN(0);
}
@@ -11153,39 +10994,6 @@ int spider_mbase_handler::append_condition_part(
start_where = ((int) str->length() == where_pos);
}
break;
- case SPIDER_SQL_TYPE_HANDLER:
- if (test_flg)
- {
- str = NULL;
- } else {
- str = &ha_sql;
- start_where = TRUE;
- if (spider->active_index == MAX_KEY)
- {
- set_where_pos(SPIDER_SQL_TYPE_HANDLER);
- if (str->reserve(SPIDER_SQL_READ_LEN + SPIDER_SQL_FIRST_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_READ_STR, SPIDER_SQL_READ_LEN);
- ha_next_pos = str->length();
- str->q_append(SPIDER_SQL_FIRST_STR, SPIDER_SQL_FIRST_LEN);
- sql_part2.length(0);
- }
- ha_where_pos = str->length();
-
- if (
- spider->wide_handler->sql_command == SQLCOM_HA_READ ||
- !spider->result_list.use_both_key
- ) {
- if (sql_part2.length())
- {
- str->append(sql_part2);
- start_where = FALSE;
- }
- } else {
- DBUG_RETURN(0);
- }
- }
- break;
default:
DBUG_RETURN(0);
}
@@ -11469,9 +11277,6 @@ void spider_mbase_handler::set_order_pos(
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
order_pos = update_sql.length();
break;
- case SPIDER_SQL_TYPE_HANDLER:
- ha_next_pos = ha_sql.length();
- break;
default:
DBUG_ASSERT(0);
break;
@@ -11495,9 +11300,6 @@ void spider_mbase_handler::set_order_to_pos(
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
update_sql.length(order_pos);
break;
- case SPIDER_SQL_TYPE_HANDLER:
- ha_sql.length(ha_next_pos);
- break;
default:
DBUG_ASSERT(0);
break;
@@ -11526,9 +11328,6 @@ int spider_mbase_handler::append_group_by_part(
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
str = &update_sql;
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- break;
default:
DBUG_RETURN(0);
}
@@ -11589,10 +11388,6 @@ int spider_mbase_handler::append_key_order_for_merge_with_alias_part(
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
str = &update_sql;
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- ha_limit_pos = ha_sql.length();
- break;
default:
DBUG_RETURN(0);
}
@@ -11703,9 +11498,6 @@ int spider_mbase_handler::append_key_order_for_direct_order_limit_with_alias_par
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
str = &update_sql;
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- break;
default:
DBUG_RETURN(0);
}
@@ -11787,10 +11579,6 @@ int spider_mbase_handler::append_key_order_with_alias_part(
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
str = &update_sql;
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- error_num = append_key_order_for_handler(str, alias, alias_length);
- DBUG_RETURN(error_num);
default:
DBUG_RETURN(0);
}
@@ -12003,10 +11791,6 @@ int spider_mbase_handler::append_limit_part(
str = &update_sql;
limit_pos = str->length();
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- ha_limit_pos = str->length();
- break;
default:
DBUG_RETURN(0);
}
@@ -12040,10 +11824,6 @@ int spider_mbase_handler::reappend_limit_part(
str = &update_sql;
str->length(limit_pos);
break;
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- str->length(ha_limit_pos);
- break;
default:
DBUG_RETURN(0);
}
@@ -12302,97 +12082,6 @@ int spider_mbase_handler::append_multi_range_cnt_with_name(
DBUG_RETURN(0);
}
-int spider_mbase_handler::append_open_handler_part(
- ulong sql_type,
- uint handler_id,
- SPIDER_CONN *conn,
- int link_idx
-) {
- int error_num;
- spider_string *str;
- DBUG_ENTER("spider_mbase_handler::append_open_handler_part");
- DBUG_PRINT("info",("spider this=%p", this));
- switch (sql_type)
- {
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- break;
- default:
- DBUG_RETURN(0);
- }
- error_num = append_open_handler(str, handler_id, conn, link_idx);
- exec_ha_sql = str;
- DBUG_RETURN(error_num);
-}
-
-int spider_mbase_handler::append_open_handler(
- spider_string *str,
- uint handler_id,
- SPIDER_CONN *conn,
- int link_idx
-) {
- int error_num;
- DBUG_ENTER("spider_mbase_handler::append_open_handler");
- DBUG_PRINT("info",("spider this=%p", this));
- DBUG_PRINT("info",("spider link_idx=%d", link_idx));
- DBUG_PRINT("info",("spider m_handler_cid=%s",
- spider->m_handler_cid[link_idx]));
- if (str->reserve(SPIDER_SQL_HANDLER_LEN))
- {
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- str->q_append(SPIDER_SQL_HANDLER_STR, SPIDER_SQL_HANDLER_LEN);
- if ((error_num = mysql_share->append_table_name(str,
- spider->conn_link_idx[link_idx])))
- DBUG_RETURN(error_num);
- if (str->reserve(SPIDER_SQL_OPEN_LEN + SPIDER_SQL_AS_LEN +
- SPIDER_SQL_HANDLER_CID_LEN))
- {
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- str->q_append(SPIDER_SQL_OPEN_STR, SPIDER_SQL_OPEN_LEN);
- str->q_append(SPIDER_SQL_AS_STR, SPIDER_SQL_AS_LEN);
- str->q_append(spider->m_handler_cid[link_idx], SPIDER_SQL_HANDLER_CID_LEN);
- DBUG_RETURN(0);
-}
-
-int spider_mbase_handler::append_close_handler_part(
- ulong sql_type,
- int link_idx
-) {
- int error_num;
- spider_string *str;
- DBUG_ENTER("spider_mbase_handler::append_close_handler_part");
- DBUG_PRINT("info",("spider this=%p", this));
- switch (sql_type)
- {
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- break;
- default:
- DBUG_RETURN(0);
- }
- error_num = append_close_handler(str, link_idx);
- exec_ha_sql = str;
- DBUG_RETURN(error_num);
-}
-
-int spider_mbase_handler::append_close_handler(
- spider_string *str,
- int link_idx
-) {
- DBUG_ENTER("spider_mbase_handler::append_close_handler");
- DBUG_PRINT("info",("spider this=%p", this));
- if (str->reserve(SPIDER_SQL_HANDLER_LEN + SPIDER_SQL_CLOSE_LEN +
- SPIDER_SQL_HANDLER_CID_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_HANDLER_STR, SPIDER_SQL_HANDLER_LEN);
- str->q_append(spider->m_handler_cid[link_idx],
- SPIDER_SQL_HANDLER_CID_LEN);
- str->q_append(SPIDER_SQL_CLOSE_STR, SPIDER_SQL_CLOSE_LEN);
- DBUG_RETURN(0);
-}
-
int spider_mbase_handler::append_insert_terminator_part(
ulong sql_type
) {
@@ -12629,9 +12318,6 @@ int spider_mbase_handler::append_from_part(
DBUG_PRINT("info",("spider this=%p", this));
switch (sql_type)
{
- case SPIDER_SQL_TYPE_HANDLER:
- str = &ha_sql;
- break;
case SPIDER_SQL_TYPE_UPDATE_SQL:
case SPIDER_SQL_TYPE_DELETE_SQL:
case SPIDER_SQL_TYPE_BULK_UPDATE_SQL:
@@ -12653,33 +12339,18 @@ int spider_mbase_handler::append_from(
DBUG_ENTER("spider_mbase_handler::append_from");
DBUG_PRINT("info",("spider this=%p", this));
DBUG_PRINT("info",("spider link_idx=%d", link_idx));
- int error_num = 0;
- if (sql_type == SPIDER_SQL_TYPE_HANDLER)
+ int error_num= 0;
+ if (str->reserve(SPIDER_SQL_FROM_LEN + mysql_share->db_nm_max_length +
+ SPIDER_SQL_DOT_LEN + mysql_share->table_nm_max_length +
+ /* SPIDER_SQL_NAME_QUOTE_LEN */ 4 +
+ SPIDER_SQL_OPEN_PAREN_LEN))
+ DBUG_RETURN(HA_ERR_OUT_OF_MEM);
+ str->q_append(SPIDER_SQL_FROM_STR, SPIDER_SQL_FROM_LEN);
+ table_name_pos= str->length();
+ append_table_name_with_adjusting(str, link_idx, sql_type);
+ if (spider_param_index_hint_pushdown(spider->wide_handler->trx->thd))
{
- ha_table_name_pos = str->length();
- DBUG_PRINT("info",("spider ha_table_name_pos=%u", ha_table_name_pos));
- ha_sql_handler_id = spider->m_handler_id[link_idx];
- DBUG_PRINT("info",("spider ha_sql_handler_id=%u", ha_sql_handler_id));
- if (str->reserve(SPIDER_SQL_HANDLER_CID_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(spider->m_handler_cid[link_idx], SPIDER_SQL_HANDLER_CID_LEN);
- DBUG_PRINT("info",("spider m_handler_cid=%s",
- spider->m_handler_cid[link_idx]));
- } else {
- if (str->reserve(SPIDER_SQL_FROM_LEN + mysql_share->db_nm_max_length +
- SPIDER_SQL_DOT_LEN + mysql_share->table_nm_max_length +
- /* SPIDER_SQL_NAME_QUOTE_LEN */ 4 + SPIDER_SQL_OPEN_PAREN_LEN))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- str->q_append(SPIDER_SQL_FROM_STR, SPIDER_SQL_FROM_LEN);
- table_name_pos = str->length();
- append_table_name_with_adjusting(str, link_idx, sql_type);
- if(spider_param_index_hint_pushdown(spider->wide_handler->trx->thd))
- {
- if((error_num = append_index_hint(str, link_idx, sql_type)))
- {
- DBUG_RETURN(error_num);
- }
- }
+ DBUG_RETURN(error_num);
}
DBUG_RETURN(0);
}
@@ -13245,9 +12916,6 @@ bool spider_mbase_handler::sql_is_empty(
case SPIDER_SQL_TYPE_TMP_SQL:
is_empty = (tmp_sql.length() == 0);
break;
- case SPIDER_SQL_TYPE_HANDLER:
- is_empty = (ha_sql.length() == 0);
- break;
default:
is_empty = TRUE;
break;
@@ -13577,10 +13245,6 @@ int spider_mbase_handler::reset_sql(
{
tmp_sql.length(0);
}
- if (sql_type & SPIDER_SQL_TYPE_HANDLER)
- {
- ha_sql.length(0);
- }
DBUG_RETURN(0);
}
@@ -13772,23 +13436,6 @@ int spider_mbase_handler::set_sql_for_exec(
exec_update_sql->length(tmp_pos);
}
}
- if (sql_type & SPIDER_SQL_TYPE_HANDLER)
- {
- if (spider->m_handler_id[link_idx] == ha_sql_handler_id)
- exec_ha_sql = &ha_sql;
- else {
- exec_ha_sql = &result_list->sqls[link_idx];
- if (exec_ha_sql->copy(ha_sql))
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- else {
- tmp_pos = exec_ha_sql->length();
- exec_ha_sql->length(ha_table_name_pos);
- append_table_name_with_adjusting(exec_ha_sql, link_idx,
- SPIDER_SQL_TYPE_HANDLER);
- exec_ha_sql->length(tmp_pos);
- }
- }
- }
DBUG_RETURN(0);
}
@@ -13854,11 +13501,6 @@ int spider_mbase_handler::execute_sql(
tgt_sql = exec_tmp_sql;
tgt_length = tmp_sql_pos5;
break;
- case SPIDER_SQL_TYPE_HANDLER:
- DBUG_PRINT("info",("spider SPIDER_SQL_TYPE_HANDLER"));
- tgt_sql = exec_ha_sql;
- tgt_length = tgt_sql->length();
- break;
default:
/* nothing to do */
DBUG_PRINT("info",("spider default"));
@@ -15497,55 +15139,6 @@ int spider_mbase_handler::flush_logs(
DBUG_RETURN(0);
}
-int spider_mbase_handler::insert_opened_handler(
- SPIDER_CONN *conn,
- int link_idx
-) {
- spider_db_mbase *db_conn = (spider_db_mbase *) conn->db_conn;
- SPIDER_LINK_FOR_HASH *tmp_link_for_hash = &link_for_hash[link_idx];
- DBUG_ASSERT(tmp_link_for_hash->spider == spider);
- DBUG_ASSERT(tmp_link_for_hash->link_idx == link_idx);
- uint old_elements = db_conn->handler_open_array.max_element;
- DBUG_ENTER("spider_mbase_handler::insert_opened_handler");
- DBUG_PRINT("info",("spider this=%p", this));
- if (insert_dynamic(&db_conn->handler_open_array,
- (uchar*) &tmp_link_for_hash))
- {
- DBUG_RETURN(HA_ERR_OUT_OF_MEM);
- }
- if (db_conn->handler_open_array.max_element > old_elements)
- {
- spider_alloc_calc_mem(spider_current_trx,
- db_conn->handler_open_array,
- (db_conn->handler_open_array.max_element - old_elements) *
- db_conn->handler_open_array.size_of_element);
- }
- DBUG_RETURN(0);
-}
-
-int spider_mbase_handler::delete_opened_handler(
- SPIDER_CONN *conn,
- int link_idx
-) {
- spider_db_mbase *db_conn = (spider_db_mbase *) conn->db_conn;
- uint roop_count, elements = db_conn->handler_open_array.elements;
- SPIDER_LINK_FOR_HASH *tmp_link_for_hash;
- DBUG_ENTER("spider_mbase_handler::delete_opened_handler");
- DBUG_PRINT("info",("spider this=%p", this));
- for (roop_count = 0; roop_count < elements; roop_count++)
- {
- get_dynamic(&db_conn->handler_open_array, (uchar *) &tmp_link_for_hash,
- roop_count);
- if (tmp_link_for_hash == &link_for_hash[link_idx])
- {
- delete_dynamic_element(&db_conn->handler_open_array, roop_count);
- break;
- }
- }
- DBUG_ASSERT(roop_count < elements);
- DBUG_RETURN(0);
-}
-
int spider_mbase_handler::sync_from_clone_source(
spider_db_handler *dbton_hdl
) {
@@ -15554,14 +15147,6 @@ int spider_mbase_handler::sync_from_clone_source(
DBUG_RETURN(0);
}
-bool spider_mbase_handler::support_use_handler(
- int use_handler
-) {
- DBUG_ENTER("spider_mbase_handler::support_use_handler");
- DBUG_PRINT("info",("spider this=%p", this));
- DBUG_RETURN(TRUE);
-}
-
void spider_mbase_handler::minimum_select_bitmap_create()
{
TABLE *table = spider->get_table();
diff --git a/storage/spider/spd_db_mysql.h b/storage/spider/spd_db_mysql.h
index 59fe1190b42..5cfd3e693d5 100644
--- a/storage/spider/spd_db_mysql.h
+++ b/storage/spider/spd_db_mysql.h
@@ -396,12 +396,6 @@ public:
const char *lock_table_hash_func_name;
const char *lock_table_hash_file_name;
ulong lock_table_hash_line_no;
- DYNAMIC_ARRAY handler_open_array;
- bool handler_open_array_inited;
- uint handler_open_array_id;
- const char *handler_open_array_func_name;
- const char *handler_open_array_file_name;
- ulong handler_open_array_line_no;
spider_db_mbase(
SPIDER_CONN *conn,
spider_db_mbase_util *spider_db_mbase_utility
@@ -583,8 +577,6 @@ public:
);
uint get_lock_table_hash_count();
void reset_lock_table_hash();
- uint get_opened_handler_count();
- void reset_opened_handler();
void set_dup_key_idx(
ha_spider *spider,
int link_idx
@@ -1192,26 +1184,6 @@ public:
spider_string *str,
uint multi_range_cnt
);
- int append_open_handler_part(
- ulong sql_type,
- uint handler_id,
- SPIDER_CONN *conn,
- int link_idx
- );
- int append_open_handler(
- spider_string *str,
- uint handler_id,
- SPIDER_CONN *conn,
- int link_idx
- );
- int append_close_handler_part(
- ulong sql_type,
- int link_idx
- );
- int append_close_handler(
- spider_string *str,
- int link_idx
- );
int append_insert_terminator_part(
ulong sql_type
);
@@ -1478,20 +1450,9 @@ public:
SPIDER_CONN *conn,
int link_idx
);
- int insert_opened_handler(
- SPIDER_CONN *conn,
- int link_idx
- );
- int delete_opened_handler(
- SPIDER_CONN *conn,
- int link_idx
- );
int sync_from_clone_source(
spider_db_handler *dbton_hdl
);
- bool support_use_handler(
- int use_handler
- );
void minimum_select_bitmap_create();
bool minimum_select_bit_is_set(
uint field_index
diff --git a/storage/spider/spd_direct_sql.cc b/storage/spider/spd_direct_sql.cc
index be26009e6f5..429c8fa9ae7 100644
--- a/storage/spider/spd_direct_sql.cc
+++ b/storage/spider/spd_direct_sql.cc
@@ -1594,10 +1594,9 @@ long long spider_direct_sql_body(
}
trx->updated_in_this_trx = TRUE;
DBUG_PRINT("info",("spider trx->updated_in_this_trx=TRUE"));
- use_real_table = spider_param_udf_ds_use_real_table(thd,
- direct_sql->use_real_table);
- for (roop_count = 0; roop_count < direct_sql->table_count; roop_count++)
- {
+ use_real_table= direct_sql->use_real_table;
+ for (roop_count= 0; roop_count < direct_sql->table_count; roop_count++)
+ {
#ifdef SPIDER_NEED_INIT_ONE_TABLE_FOR_FIND_TEMPORARY_TABLE
#ifdef SPIDER_use_LEX_CSTRING_for_database_tablename_alias
LEX_CSTRING db_name =
diff --git a/storage/spider/spd_environ.h b/storage/spider/spd_environ.h
index 0caf23af64c..ccdc7009f9a 100644
--- a/storage/spider/spd_environ.h
+++ b/storage/spider/spd_environ.h
@@ -26,7 +26,4 @@
#define HA_EXTRA_HAS_STARTING_ORDERED_INDEX_SCAN
#define HANDLER_HAS_CAN_USE_FOR_AUTO_INC_INIT
#define SPIDER_UPDATE_ROW_HAS_CONST_NEW_DATA
-#define SPIDER_MDEV_16246
-#define SPIDER_LIKE_FUNC_HAS_GET_NEGATED
-#define SPIDER_I_S_USE_SHOW_FOR_COLUMN
#endif /* SPD_ENVIRON_INCLUDED */
diff --git a/storage/spider/spd_group_by_handler.cc b/storage/spider/spd_group_by_handler.cc
index ca174d42e39..774b9cfa2f8 100644
--- a/storage/spider/spd_group_by_handler.cc
+++ b/storage/spider/spd_group_by_handler.cc
@@ -1237,10 +1237,6 @@ int spider_group_by_handler::init_scan()
spider_db_free_one_result_for_start_next(spider);
- spider->sql_kinds = SPIDER_SQL_KIND_SQL;
- for (link_idx = 0; link_idx < (int) share->link_count; ++link_idx)
- spider->sql_kind[link_idx] = SPIDER_SQL_KIND_SQL;
-
spider->do_direct_update = FALSE;
spider->direct_update_kinds = 0;
spider_get_select_limit(spider, &select_lex, &select_limit, &offset_limit);
@@ -1914,16 +1910,6 @@ group_by_handler *spider_create_group_by_handler(
spider->conn_link_idx, roop_count, share->link_count,
tgt_link_status)
) {
- if (spider_param_use_handler(thd, share->use_handlers[roop_count]))
- {
- DBUG_PRINT("info",("spider direct_join does not support use_handler"));
- if (lock_mode)
- {
- delete fields;
- DBUG_RETURN(NULL);
- }
- continue;
- }
conn = spider->conns[roop_count];
DBUG_PRINT("info",("spider roop_count=%d", roop_count));
DBUG_PRINT("info",("spider conn=%p", conn));
@@ -1999,16 +1985,6 @@ group_by_handler *spider_create_group_by_handler(
tgt_link_status)
) {
DBUG_PRINT("info",("spider roop_count=%d", roop_count));
- if (spider_param_use_handler(thd, share->use_handlers[roop_count]))
- {
- DBUG_PRINT("info",("spider direct_join does not support use_handler"));
- if (lock_mode)
- {
- delete fields;
- DBUG_RETURN(NULL);
- }
- continue;
- }
conn = spider->conns[roop_count];
DBUG_PRINT("info",("spider conn=%p", conn));
if (!fields->check_conn_same_conn(conn))
diff --git a/storage/spider/spd_i_s.cc b/storage/spider/spd_i_s.cc
index 22cd8eb0f15..7db9537136a 100644
--- a/storage/spider/spd_i_s.cc
+++ b/storage/spider/spd_i_s.cc
@@ -41,7 +41,6 @@ static struct st_mysql_storage_engine spider_i_s_info =
{ MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION };
namespace Show {
-#ifdef SPIDER_I_S_USE_SHOW_FOR_COLUMN
static ST_FIELD_INFO spider_i_s_alloc_mem_fields_info[] =
{
Column("ID", ULong(10), NOT_NULL, "id"),
@@ -54,27 +53,6 @@ static ST_FIELD_INFO spider_i_s_alloc_mem_fields_info[] =
Column("FREE_MEM_COUNT", ULonglong(20), NULLABLE, "free_mem_count"),
CEnd()
};
-#else
-static ST_FIELD_INFO spider_i_s_alloc_mem_fields_info[] =
-{
- {"ID", 10, MYSQL_TYPE_LONG, 0, MY_I_S_UNSIGNED, "id", SKIP_OPEN_TABLE},
- {"FUNC_NAME", 64, MYSQL_TYPE_STRING, 0,
- MY_I_S_MAYBE_NULL, "func_name", SKIP_OPEN_TABLE},
- {"FILE_NAME", 64, MYSQL_TYPE_STRING, 0,
- MY_I_S_MAYBE_NULL, "file_name", SKIP_OPEN_TABLE},
- {"LINE_NO", 10, MYSQL_TYPE_LONG, 0,
- MY_I_S_UNSIGNED | MY_I_S_MAYBE_NULL, "line_no", SKIP_OPEN_TABLE},
- {"TOTAL_ALLOC_MEM", 20, MYSQL_TYPE_LONGLONG, 0,
- MY_I_S_UNSIGNED | MY_I_S_MAYBE_NULL, "total_alloc_mem", SKIP_OPEN_TABLE},
- {"CURRENT_ALLOC_MEM", 20, MYSQL_TYPE_LONGLONG, 0,
- MY_I_S_MAYBE_NULL, "current_alloc_mem", SKIP_OPEN_TABLE},
- {"ALLOC_MEM_COUNT", 20, MYSQL_TYPE_LONGLONG, 0,
- MY_I_S_UNSIGNED | MY_I_S_MAYBE_NULL, "alloc_mem_count", SKIP_OPEN_TABLE},
- {"FREE_MEM_COUNT", 20, MYSQL_TYPE_LONGLONG, 0,
- MY_I_S_UNSIGNED | MY_I_S_MAYBE_NULL, "free_mem_count", SKIP_OPEN_TABLE},
- {NULL, 0, MYSQL_TYPE_STRING, 0, 0, NULL, 0}
-};
-#endif
} // namespace Show
static int spider_i_s_alloc_mem_fill_table(
@@ -180,7 +158,6 @@ struct st_maria_plugin spider_i_s_alloc_mem_maria =
extern SPIDER_DBTON spider_dbton[SPIDER_DBTON_SIZE];
namespace Show {
-#ifdef SPIDER_I_S_USE_SHOW_FOR_COLUMN
static ST_FIELD_INFO spider_i_s_wrapper_protocols_fields_info[] =
{
Column("WRAPPER_NAME", Varchar(NAME_CHAR_LEN), NOT_NULL, ""),
@@ -189,16 +166,6 @@ static ST_FIELD_INFO spider_i_s_wrapper_protocols_fields_info[] =
Column("WRAPPER_MATURITY", Varchar(12), NOT_NULL, ""),
CEnd()
};
-#else
-static ST_FIELD_INFO spider_i_s_wrapper_protocols_fields_info[] =
-{
- {"WRAPPER_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
- {"WRAPPER_VERSION", 20, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
- {"WRAPPER_DESCRIPTION", 65535, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
- {"WRAPPER_MATURITY", 12, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
- {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, 0}
-};
-#endif
} // namespace Show
static int spider_i_s_wrapper_protocols_fill_table(
diff --git a/storage/spider/spd_include.h b/storage/spider/spd_include.h
index 917b3bfe6ec..897721d3c2e 100644
--- a/storage/spider/spd_include.h
+++ b/storage/spider/spd_include.h
@@ -99,7 +99,6 @@
#define SPIDER_new_THD(A) (new THD(A))
#define SPIDER_order_direction_is_asc(A) (A->direction == ORDER::ORDER_ASC)
-#define SPIDER_HAS_MY_CHARLEN
#define SPIDER_open_temporary_table
#define SPIDER_generate_partition_syntax(A,B,C,D,E,F,G,H) generate_partition_syntax(A,B,C,E,F,G)
@@ -110,7 +109,6 @@
#define SPIDER_read_record_read_record(A) read_record()
#define SPIDER_has_Item_with_subquery
-#define SPIDER_use_LEX_CSTRING_for_KEY_Field_name
#define SPIDER_use_LEX_CSTRING_for_Field_blob_constructor
#define SPIDER_use_LEX_CSTRING_for_database_tablename_alias
#define SPIDER_THD_db_str(A) (A)->db.str
@@ -165,7 +163,7 @@ typedef start_new_trans *SPIDER_Open_tables_backup;
#define SPIDER_TMP_SHARE_CHAR_PTR_COUNT 23
#define SPIDER_TMP_SHARE_UINT_COUNT SPIDER_TMP_SHARE_CHAR_PTR_COUNT
-#define SPIDER_TMP_SHARE_LONG_COUNT 20
+#define SPIDER_TMP_SHARE_LONG_COUNT 19
#define SPIDER_TMP_SHARE_LONGLONG_COUNT 3
#define SPIDER_MEM_CALC_LIST_NUM 314
@@ -900,7 +898,6 @@ typedef struct st_spider_share
longlong *monitoring_bg_interval;
longlong *monitoring_limit;
longlong *monitoring_sid;
- long *use_handlers;
long *connect_timeouts;
long *net_read_timeouts;
long *net_write_timeouts;
@@ -988,7 +985,6 @@ typedef struct st_spider_share
uint monitoring_bg_interval_length;
uint monitoring_limit_length;
uint monitoring_sid_length;
- uint use_handlers_length;
uint connect_timeouts_length;
uint net_read_timeouts_length;
uint net_write_timeouts_length;
@@ -1237,10 +1233,8 @@ typedef struct st_spider_item_hld
{
uint tgt_num;
Item *item;
-#ifdef SPIDER_ITEM_STRING_WITHOUT_SET_STR_WITH_COPY_AND_THDPTR
bool init_mem_root;
MEM_ROOT mem_root;
-#endif
st_spider_item_hld *next;
} SPIDER_ITEM_HLD;
diff --git a/storage/spider/spd_param.cc b/storage/spider/spd_param.cc
index c1b84ed4452..0a5d881749c 100644
--- a/storage/spider/spd_param.cc
+++ b/storage/spider/spd_param.cc
@@ -1966,103 +1966,6 @@ int spider_param_direct_dup_insert(
direct_dup_insert : THDVAR(thd, direct_dup_insert));
}
-static uint spider_udf_table_lock_mutex_count;
-/*
- 1-: mutex count
- */
-static MYSQL_SYSVAR_UINT(
- udf_table_lock_mutex_count,
- spider_udf_table_lock_mutex_count,
- PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
- "Mutex count of table lock for Spider UDFs",
- NULL,
- NULL,
- 20,
- 1,
- 4294967295U,
- 0
-);
-
-uint spider_param_udf_table_lock_mutex_count()
-{
- DBUG_ENTER("spider_param_udf_table_lock_mutex_count");
- DBUG_RETURN(spider_udf_table_lock_mutex_count);
-}
-
-static uint spider_udf_table_mon_mutex_count;
-/*
- 1-: mutex count
- */
-static MYSQL_SYSVAR_UINT(
- udf_table_mon_mutex_count,
- spider_udf_table_mon_mutex_count,
- PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
- "Mutex count of table mon for Spider UDFs",
- NULL,
- NULL,
- 20,
- 1,
- 4294967295U,
- 0
-);
-
-uint spider_param_udf_table_mon_mutex_count()
-{
- DBUG_ENTER("spider_param_udf_table_mon_mutex_count");
- DBUG_RETURN(spider_udf_table_mon_mutex_count);
-}
-
-/*
- 1-:number of rows
- */
-static MYSQL_THDVAR_LONGLONG(
- udf_ds_bulk_insert_rows, /* name */
- PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
- "Number of rows for bulk inserting", /* comment */
- NULL, /* check */
- NULL, /* update */
- -1, /* def */
- -1, /* min */
- 9223372036854775807LL, /* max */
- 0 /* blk */
-);
-
-longlong spider_param_udf_ds_bulk_insert_rows(
- THD *thd,
- longlong udf_ds_bulk_insert_rows
-) {
- DBUG_ENTER("spider_param_udf_ds_bulk_insert_rows");
- DBUG_RETURN(THDVAR(thd, udf_ds_bulk_insert_rows) <= 0 ?
- udf_ds_bulk_insert_rows : THDVAR(thd, udf_ds_bulk_insert_rows));
-}
-
-/*
- -1 :use table parameter
- 0 :drop records
- 1 :insert last table
- 2 :insert first table and loop again
- */
-static MYSQL_THDVAR_INT(
- udf_ds_table_loop_mode, /* name */
- PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
- "Table loop mode if the number of tables in table list are less than the number of result sets", /* comment */
- NULL, /* check */
- NULL, /* update */
- -1, /* def */
- -1, /* min */
- 2, /* max */
- 0 /* blk */
-);
-
-int spider_param_udf_ds_table_loop_mode(
- THD *thd,
- int udf_ds_table_loop_mode
-) {
- DBUG_ENTER("spider_param_udf_ds_table_loop_mode");
- DBUG_RETURN(THDVAR(thd, udf_ds_table_loop_mode) == -1 ?
- udf_ds_table_loop_mode : THDVAR(thd, udf_ds_table_loop_mode));
-}
-
static char *spider_remote_access_charset;
/*
*/
@@ -2295,84 +2198,6 @@ int spider_param_bka_mode(
bka_mode : THDVAR(thd, bka_mode));
}
-static int spider_udf_ct_bulk_insert_interval;
-/*
- -1 : The UDF parameter is adopted.
- 0 or more : Milliseconds.
- */
-static MYSQL_SYSVAR_INT(
- udf_ct_bulk_insert_interval,
- spider_udf_ct_bulk_insert_interval,
- PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED,
- "The interval time between bulk insert and next bulk insert at coping",
- NULL,
- NULL,
- -1,
- -1,
- 2147483647,
- 0
-);
-
-int spider_param_udf_ct_bulk_insert_interval(
- int udf_ct_bulk_insert_interval
-) {
- DBUG_ENTER("spider_param_udf_ct_bulk_insert_interval");
- DBUG_RETURN(spider_udf_ct_bulk_insert_interval < 0 ?
- udf_ct_bulk_insert_interval : spider_udf_ct_bulk_insert_interval);
-}
-
-static longlong spider_udf_ct_bulk_insert_rows;
-/*
- -1,0 : The UDF parameter is adopted.
- 1 or more : Number of rows.
- */
-static MYSQL_SYSVAR_LONGLONG(
- udf_ct_bulk_insert_rows,
- spider_udf_ct_bulk_insert_rows,
- PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED,
- "The number of rows inserted with bulk insert of one time at coping",
- NULL,
- NULL,
- -1,
- -1,
- 9223372036854775807LL,
- 0
-);
-
-longlong spider_param_udf_ct_bulk_insert_rows(
- longlong udf_ct_bulk_insert_rows
-) {
- DBUG_ENTER("spider_param_udf_ct_bulk_insert_rows");
- DBUG_RETURN(spider_udf_ct_bulk_insert_rows <= 0 ?
- udf_ct_bulk_insert_rows : spider_udf_ct_bulk_insert_rows);
-}
-
-/*
- -1 :use table parameter
- 0 :not use
- 1 :use handler
- */
-static MYSQL_THDVAR_INT(
- use_handler, /* name */
- PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
- "Use handler for reading", /* comment */
- NULL, /* check */
- spider_var_deprecated_int, /* update */
- 0, /* def */
- -1, /* min */
- 3, /* max */
- 0 /* blk */
-);
-
-int spider_param_use_handler(
- THD *thd,
- int use_handler
-) {
- DBUG_ENTER("spider_param_use_handler");
- DBUG_RETURN(THDVAR(thd, use_handler) == -1 ?
- use_handler : THDVAR(thd, use_handler));
-}
-
/*
-1 :use table parameter
0 :return error if error
@@ -2531,33 +2356,6 @@ int spider_param_read_only_mode(
read_only_mode : THDVAR(thd, read_only_mode));
}
-
-/*
- -1 :use UDF parameter
- 0 :can not use
- 1 :can use
- */
-static MYSQL_THDVAR_INT(
- udf_ds_use_real_table, /* name */
- PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, /* opt */
- "Use real table for temporary table list", /* comment */
- NULL, /* check */
- NULL, /* update */
- -1, /* def */
- -1, /* min */
- 1, /* max */
- 0 /* blk */
-);
-
-int spider_param_udf_ds_use_real_table(
- THD *thd,
- int udf_ds_use_real_table
-) {
- DBUG_ENTER("spider_param_udf_ds_use_real_table");
- DBUG_RETURN(THDVAR(thd, udf_ds_use_real_table) == -1 ?
- udf_ds_use_real_table : THDVAR(thd, udf_ds_use_real_table));
-}
-
static my_bool spider_general_log;
static MYSQL_SYSVAR_BOOL(
general_log,
@@ -3185,10 +2983,6 @@ static struct st_mysql_sys_var* spider_system_variables[] = {
MYSQL_SYSVAR(local_lock_table),
MYSQL_SYSVAR(use_pushdown_udf),
MYSQL_SYSVAR(direct_dup_insert),
- MYSQL_SYSVAR(udf_table_lock_mutex_count),
- MYSQL_SYSVAR(udf_table_mon_mutex_count),
- MYSQL_SYSVAR(udf_ds_bulk_insert_rows),
- MYSQL_SYSVAR(udf_ds_table_loop_mode),
MYSQL_SYSVAR(remote_access_charset),
MYSQL_SYSVAR(remote_autocommit),
MYSQL_SYSVAR(remote_time_zone),
@@ -3200,16 +2994,12 @@ static struct st_mysql_sys_var* spider_system_variables[] = {
MYSQL_SYSVAR(connect_mutex),
MYSQL_SYSVAR(bka_engine),
MYSQL_SYSVAR(bka_mode),
- MYSQL_SYSVAR(udf_ct_bulk_insert_interval),
- MYSQL_SYSVAR(udf_ct_bulk_insert_rows),
- MYSQL_SYSVAR(use_handler),
MYSQL_SYSVAR(error_read_mode),
MYSQL_SYSVAR(error_write_mode),
MYSQL_SYSVAR(skip_default_condition),
MYSQL_SYSVAR(skip_parallel_search),
MYSQL_SYSVAR(direct_order_limit),
MYSQL_SYSVAR(read_only_mode),
- MYSQL_SYSVAR(udf_ds_use_real_table),
MYSQL_SYSVAR(general_log),
MYSQL_SYSVAR(index_hint_pushdown),
MYSQL_SYSVAR(max_connections),
diff --git a/storage/spider/spd_param.h b/storage/spider/spd_param.h
index 0c5392e302a..6abdca43492 100644
--- a/storage/spider/spd_param.h
+++ b/storage/spider/spd_param.h
@@ -14,6 +14,9 @@
along with this program); if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */
+constexpr uint spider_udf_table_lock_mutex_count= 20;
+constexpr uint spider_udf_table_mon_mutex_count= 20;
+
my_bool spider_param_support_xa();
my_bool spider_param_connect_mutex();
uint spider_param_connect_error_interval();
@@ -263,16 +266,6 @@ int spider_param_direct_dup_insert(
THD *thd,
int direct_dup_insert
);
-uint spider_param_udf_table_lock_mutex_count();
-uint spider_param_udf_table_mon_mutex_count();
-longlong spider_param_udf_ds_bulk_insert_rows(
- THD *thd,
- longlong udf_ds_bulk_insert_rows
-);
-int spider_param_udf_ds_table_loop_mode(
- THD *thd,
- int udf_ds_table_loop_mode
-);
char *spider_param_remote_access_charset();
int spider_param_remote_autocommit();
char *spider_param_remote_time_zone();
@@ -293,16 +286,6 @@ int spider_param_bka_mode(
THD *thd,
int bka_mode
);
-int spider_param_udf_ct_bulk_insert_interval(
- int udf_ct_bulk_insert_interval
-);
-longlong spider_param_udf_ct_bulk_insert_rows(
- longlong udf_ct_bulk_insert_rows
-);
-int spider_param_use_handler(
- THD *thd,
- int use_handler
-);
int spider_param_error_read_mode(
THD *thd,
int error_read_mode
@@ -327,10 +310,6 @@ int spider_param_read_only_mode(
THD *thd,
int read_only_mode
);
-int spider_param_udf_ds_use_real_table(
- THD *thd,
- int udf_ds_use_real_table
-);
my_bool spider_param_general_log();
my_bool spider_param_index_hint_pushdown(
THD *thd
diff --git a/storage/spider/spd_ping_table.cc b/storage/spider/spd_ping_table.cc
index fc550f05392..b331a9fec0d 100644
--- a/storage/spider/spd_ping_table.cc
+++ b/storage/spider/spd_ping_table.cc
@@ -97,8 +97,8 @@ SPIDER_TABLE_MON_LIST *spider_get_ping_table_mon_list(
free_root(&mem_root, MYF(0));
}
- mutex_hash = spider_udf_calc_hash(str->c_ptr(),
- spider_param_udf_table_mon_mutex_count());
+ mutex_hash=
+ spider_udf_calc_hash(str->c_ptr(), spider_udf_table_mon_mutex_count);
DBUG_PRINT("info",("spider hash key=%s", str->c_ptr()));
DBUG_PRINT("info",("spider hash key length=%u", str->length()));
hash_value = my_calc_hash(
@@ -224,8 +224,8 @@ int spider_release_ping_table_mon_list(
conv_name_str.q_append(conv_name, conv_name_length);
conv_name_str.q_append(link_idx_str, link_idx_str_length);
- mutex_hash = spider_udf_calc_hash(conv_name_str.c_ptr_safe(),
- spider_param_udf_table_mon_mutex_count());
+ mutex_hash= spider_udf_calc_hash(conv_name_str.c_ptr_safe(),
+ spider_udf_table_mon_mutex_count);
my_hash_value_type hash_value = my_calc_hash(
&spider_udf_table_mon_list_hash[mutex_hash],
(uchar*) conv_name_str.c_ptr(), conv_name_str.length());
diff --git a/storage/spider/spd_table.cc b/storage/spider/spd_table.cc
index ba3ee61fc61..e78e2feca77 100644
--- a/storage/spider/spd_table.cc
+++ b/storage/spider/spd_table.cc
@@ -817,8 +817,6 @@ int spider_free_share_alloc(
spider_free(spider_current_trx, share->monitoring_flag, MYF(0));
if (share->monitoring_kind)
spider_free(spider_current_trx, share->monitoring_kind, MYF(0));
- if (share->use_handlers)
- spider_free(spider_current_trx, share->use_handlers, MYF(0));
if (share->connect_timeouts)
spider_free(spider_current_trx, share->connect_timeouts, MYF(0));
if (share->net_read_timeouts)
@@ -2347,8 +2345,6 @@ int spider_parse_connect_info(
option_struct &&
option_struct->remote_table);
SPIDER_PARAM_INT_WITH_MAX("tcm", table_count_mode, 0, 3);
- SPIDER_PARAM_DEPRECATED_WARNING("uhd");
- SPIDER_PARAM_LONG_LIST_WITH_MAX("uhd", use_handlers, 0, 3);
SPIDER_PARAM_INT_WITH_MAX("upu", use_pushdown_udf, 0, 1);
SPIDER_PARAM_INT_WITH_MAX("utc", use_table_charset, 0, 1);
error_num = connect_string_parse.print_param_error();
@@ -2427,8 +2423,6 @@ int spider_parse_connect_info(
SPIDER_PARAM_INT_WITH_MAX("crd_bg_mode", crd_bg_mode, 0, 2);
SPIDER_PARAM_INT_WITH_MAX("sts_bg_mode", sts_bg_mode, 0, 2);
SPIDER_PARAM_LONG_LIST_WITH_MAX("link_status", link_statuses, 0, 3);
- SPIDER_PARAM_DEPRECATED_WARNING("use_handler");
- SPIDER_PARAM_LONG_LIST_WITH_MAX("use_handler", use_handlers, 0, 3);
SPIDER_PARAM_INT_WITH_MAX("casual_read", casual_read, 0, 63);
SPIDER_PARAM_DEPRECATED_WARNING("buffer_size");
SPIDER_PARAM_INT("buffer_size", buffer_size, 0);
@@ -2673,8 +2667,6 @@ int spider_parse_connect_info(
share->all_link_count = share->monitoring_bg_kind_length;
if (share->all_link_count < share->monitoring_bg_interval_length)
share->all_link_count = share->monitoring_bg_interval_length;
- if (share->all_link_count < share->use_handlers_length)
- share->all_link_count = share->use_handlers_length;
if (share->all_link_count < share->connect_timeouts_length)
share->all_link_count = share->connect_timeouts_length;
if (share->all_link_count < share->net_read_timeouts_length)
@@ -2890,11 +2882,6 @@ int spider_parse_connect_info(
share->all_link_count)))
goto error;
if ((error_num = spider_increase_long_list(
- &share->use_handlers,
- &share->use_handlers_length,
- share->all_link_count)))
- goto error;
- if ((error_num = spider_increase_long_list(
&share->connect_timeouts,
&share->connect_timeouts_length,
share->all_link_count)))
@@ -3819,8 +3806,6 @@ int spider_set_connect_info_default(
if (share->monitoring_sid[roop_count] == -1)
share->monitoring_sid[roop_count] = global_system_variables.server_id;
- if (share->use_handlers[roop_count] == -1)
- share->use_handlers[roop_count] = 0;
if (share->connect_timeouts[roop_count] == -1)
share->connect_timeouts[roop_count] = 6;
if (share->net_read_timeouts[roop_count] == -1)
@@ -4401,7 +4386,7 @@ SPIDER_SHARE *spider_create_share(
(uint) (sizeof(*tmp_cardinality_upd) * bitmap_size),
&tmp_table_mon_mutex_bitmap,
(uint) (sizeof(*tmp_table_mon_mutex_bitmap) *
- ((spider_param_udf_table_mon_mutex_count() + 7) / 8)),
+ ((spider_udf_table_mon_mutex_count + 7) / 8)),
NullS))
) {
*error_num = HA_ERR_OUT_OF_MEM;
@@ -4451,7 +4436,7 @@ SPIDER_SHARE *spider_create_share(
buf_pos = strmov(buf_pos, link_idx_str);
*buf_pos = '\0';
spider_set_bit(tmp_table_mon_mutex_bitmap,
- spider_udf_calc_hash(buf, spider_param_udf_table_mon_mutex_count())
+ spider_udf_calc_hash(buf, spider_udf_table_mon_mutex_count)
);
}
@@ -4573,7 +4558,7 @@ SPIDER_SHARE *spider_get_share(
TABLE_SHARE *table_share = table->s;
SPIDER_RESULT_LIST *result_list = &spider->result_list;
uint length, tmp_conn_link_idx = 0, buf_sz;
- char *tmp_name, *tmp_cid;
+ char *tmp_name;
int roop_count;
double sts_interval;
int sts_mode;
@@ -4682,7 +4667,7 @@ SPIDER_SHARE *spider_get_share(
{
pthread_mutex_lock(&share->mutex);
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++
) {
if (spider_bit_is_set(share->table_mon_mutex_bitmap, roop_count))
@@ -4714,7 +4699,7 @@ SPIDER_SHARE *spider_get_share(
FALSE, error_num))
) {
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++
) {
if (spider_bit_is_set(share->table_mon_mutex_bitmap, roop_count))
@@ -4736,7 +4721,7 @@ SPIDER_SHARE *spider_get_share(
*error_num != HA_ERR_END_OF_FILE
) {
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++
) {
if (spider_bit_is_set(share->table_mon_mutex_bitmap, roop_count))
@@ -4769,7 +4754,7 @@ SPIDER_SHARE *spider_get_share(
}
}
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++
) {
if (spider_bit_is_set(share->table_mon_mutex_bitmap, roop_count))
@@ -4864,16 +4849,10 @@ SPIDER_SHARE *spider_get_share(
&spider->conns, sizeof(SPIDER_CONN *) * share->link_count,
&spider->conn_link_idx, sizeof(uint) * share->link_count,
&spider->conn_can_fo, sizeof(uchar) * share->link_bitmap_size,
- &spider->sql_kind, sizeof(uint) * share->link_count,
&spider->connection_ids, sizeof(ulonglong) * share->link_count,
&spider->conn_kind, sizeof(uint) * share->link_count,
&spider->db_request_id, sizeof(ulonglong) * share->link_count,
&spider->db_request_phase, sizeof(uchar) * share->link_bitmap_size,
- &spider->m_handler_opened, sizeof(uchar) * share->link_bitmap_size,
- &spider->m_handler_id, sizeof(uint) * share->link_count,
- &spider->m_handler_cid, sizeof(char *) * share->link_count,
- &tmp_cid, sizeof(char) * (SPIDER_SQL_HANDLER_CID_LEN + 1) *
- share->link_count,
&spider->need_mons, sizeof(int) * share->link_count,
&spider->quick_targets, sizeof(void *) * share->link_count,
&result_list->upd_tmp_tbls, sizeof(TABLE *) * share->link_count,
@@ -4883,7 +4862,6 @@ SPIDER_SHARE *spider_get_share(
sizeof(uchar) * share->link_bitmap_size,
&result_list->tmp_table_created,
sizeof(uchar) * share->link_bitmap_size,
- &result_list->sql_kind_backup, sizeof(uint) * share->link_count,
&result_list->casual_read, sizeof(int) * share->link_count,
&spider->dbton_handler,
sizeof(spider_db_handler *) * SPIDER_DBTON_SIZE,
@@ -4903,8 +4881,6 @@ SPIDER_SHARE *spider_get_share(
spider->conn_keys[roop_count] = tmp_name;
*tmp_name = first_byte;
tmp_name += share->conn_keys_lengths[roop_count] + 1;
- spider->m_handler_cid[roop_count] = tmp_cid;
- tmp_cid += SPIDER_SQL_HANDLER_CID_LEN + 1;
result_list->upd_tmp_tbl_prms[roop_count].init();
result_list->upd_tmp_tbl_prms[roop_count].field_count = 1;
spider->conn_kind[roop_count] = SPIDER_CONN_KIND_MYSQL;
@@ -5162,7 +5138,7 @@ SPIDER_SHARE *spider_get_share(
{
pthread_mutex_lock(&share->mutex);
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++
) {
if (spider_bit_is_set(share->table_mon_mutex_bitmap, roop_count))
@@ -5195,7 +5171,7 @@ SPIDER_SHARE *spider_get_share(
FALSE, error_num))
) {
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++
) {
if (spider_bit_is_set(share->table_mon_mutex_bitmap, roop_count))
@@ -5214,7 +5190,7 @@ SPIDER_SHARE *spider_get_share(
*error_num != HA_ERR_END_OF_FILE
) {
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++
) {
if (spider_bit_is_set(share->table_mon_mutex_bitmap, roop_count))
@@ -5244,7 +5220,7 @@ SPIDER_SHARE *spider_get_share(
}
}
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++
) {
if (spider_bit_is_set(share->table_mon_mutex_bitmap, roop_count))
@@ -5328,16 +5304,10 @@ SPIDER_SHARE *spider_get_share(
&spider->conns, sizeof(SPIDER_CONN *) * share->link_count,
&spider->conn_link_idx, sizeof(uint) * share->link_count,
&spider->conn_can_fo, sizeof(uchar) * share->link_bitmap_size,
- &spider->sql_kind, sizeof(uint) * share->link_count,
&spider->connection_ids, sizeof(ulonglong) * share->link_count,
&spider->conn_kind, sizeof(uint) * share->link_count,
&spider->db_request_id, sizeof(ulonglong) * share->link_count,
&spider->db_request_phase, sizeof(uchar) * share->link_bitmap_size,
- &spider->m_handler_opened, sizeof(uchar) * share->link_bitmap_size,
- &spider->m_handler_id, sizeof(uint) * share->link_count,
- &spider->m_handler_cid, sizeof(char *) * share->link_count,
- &tmp_cid, sizeof(char) * (SPIDER_SQL_HANDLER_CID_LEN + 1) *
- share->link_count,
&spider->need_mons, sizeof(int) * share->link_count,
&spider->quick_targets, sizeof(void *) * share->link_count,
&result_list->upd_tmp_tbls, sizeof(TABLE *) * share->link_count,
@@ -5347,7 +5317,6 @@ SPIDER_SHARE *spider_get_share(
sizeof(uchar) * share->link_bitmap_size,
&result_list->tmp_table_created,
sizeof(uchar) * share->link_bitmap_size,
- &result_list->sql_kind_backup, sizeof(uint) * share->link_count,
&result_list->casual_read, sizeof(int) * share->link_count,
&spider->dbton_handler,
sizeof(spider_db_handler *) * SPIDER_DBTON_SIZE,
@@ -5364,8 +5333,6 @@ SPIDER_SHARE *spider_get_share(
spider->conn_keys[roop_count] = tmp_name;
*tmp_name = first_byte;
tmp_name += share->conn_keys_lengths[roop_count] + 1;
- spider->m_handler_cid[roop_count] = tmp_cid;
- tmp_cid += SPIDER_SQL_HANDLER_CID_LEN + 1;
result_list->upd_tmp_tbl_prms[roop_count].init();
result_list->upd_tmp_tbl_prms[roop_count].field_count = 1;
spider->conn_kind[roop_count] = SPIDER_CONN_KIND_MYSQL;
@@ -6414,7 +6381,7 @@ int spider_db_done(
}
spider_free(NULL, spider_table_sts_threads, MYF(0));
- for (roop_count = spider_param_udf_table_mon_mutex_count() - 1;
+ for (roop_count= spider_udf_table_mon_mutex_count - 1;
roop_count >= 0; roop_count--)
{
while ((table_mon_list = (SPIDER_TABLE_MON_LIST *) my_hash_element(
@@ -6430,10 +6397,10 @@ int spider_db_done(
spider_udf_table_mon_list_hash[roop_count].array.size_of_element);
my_hash_free(&spider_udf_table_mon_list_hash[roop_count]);
}
- for (roop_count = spider_param_udf_table_mon_mutex_count() - 1;
+ for (roop_count= spider_udf_table_mon_mutex_count - 1;
roop_count >= 0; roop_count--)
pthread_cond_destroy(&spider_udf_table_mon_conds[roop_count]);
- for (roop_count = spider_param_udf_table_mon_mutex_count() - 1;
+ for (roop_count= spider_udf_table_mon_mutex_count - 1;
roop_count >= 0; roop_count--)
pthread_mutex_destroy(&spider_udf_table_mon_mutexes[roop_count]);
spider_free(NULL, spider_udf_table_mon_mutexes, MYF(0));
@@ -6784,17 +6751,17 @@ int spider_db_init(
if (!(spider_udf_table_mon_mutexes = (pthread_mutex_t *)
spider_bulk_malloc(NULL, 53, MYF(MY_WME | MY_ZEROFILL),
&spider_udf_table_mon_mutexes, (uint) (sizeof(pthread_mutex_t) *
- spider_param_udf_table_mon_mutex_count()),
+ spider_udf_table_mon_mutex_count),
&spider_udf_table_mon_conds, (uint) (sizeof(pthread_cond_t) *
- spider_param_udf_table_mon_mutex_count()),
+ spider_udf_table_mon_mutex_count),
&spider_udf_table_mon_list_hash, (uint) (sizeof(HASH) *
- spider_param_udf_table_mon_mutex_count()),
+ spider_udf_table_mon_mutex_count),
NullS))
)
goto error_alloc_mon_mutxes;
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++)
{
if (mysql_mutex_init(spd_key_mutex_udf_table_mon,
@@ -6802,7 +6769,7 @@ int spider_db_init(
goto error_init_udf_table_mon_mutex;
}
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++)
{
if (mysql_cond_init(spd_key_cond_udf_table_mon,
@@ -6810,7 +6777,7 @@ int spider_db_init(
goto error_init_udf_table_mon_cond;
}
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_mon_mutex_count();
+ roop_count < (int) spider_udf_table_mon_mutex_count;
roop_count++)
{
if (my_hash_init(PSI_INSTRUMENT_ME, &spider_udf_table_mon_list_hash[roop_count],
@@ -6896,7 +6863,7 @@ error_init_table_sts_threads:
spider_free_sts_threads(&spider_table_sts_threads[roop_count]);
}
spider_free(NULL, spider_table_sts_threads, MYF(0));
- roop_count = spider_param_udf_table_mon_mutex_count() - 1;
+ roop_count= spider_udf_table_mon_mutex_count - 1;
error_init_udf_table_mon_list_hash:
for (; roop_count >= 0; roop_count--)
{
@@ -6906,11 +6873,11 @@ error_init_udf_table_mon_list_hash:
spider_udf_table_mon_list_hash[roop_count].array.size_of_element);
my_hash_free(&spider_udf_table_mon_list_hash[roop_count]);
}
- roop_count = spider_param_udf_table_mon_mutex_count() - 1;
+ roop_count= spider_udf_table_mon_mutex_count - 1;
error_init_udf_table_mon_cond:
for (; roop_count >= 0; roop_count--)
pthread_cond_destroy(&spider_udf_table_mon_conds[roop_count]);
- roop_count = spider_param_udf_table_mon_mutex_count() - 1;
+ roop_count= spider_udf_table_mon_mutex_count - 1;
error_init_udf_table_mon_mutex:
for (; roop_count >= 0; roop_count--)
pthread_mutex_destroy(&spider_udf_table_mon_mutexes[roop_count]);
@@ -7572,16 +7539,14 @@ void spider_set_tmp_share_pointer(
tmp_share->monitoring_kind = &tmp_long[5];
tmp_share->monitoring_bg_flag = &tmp_long[6];
tmp_share->monitoring_bg_kind = &tmp_long[7];
- tmp_share->use_handlers = &tmp_long[13];
- tmp_share->connect_timeouts = &tmp_long[14];
+ tmp_share->connect_timeouts = &tmp_long[13];
+ tmp_share->net_read_timeouts = &tmp_long[14];
tmp_long[13] = -1;
- tmp_share->net_read_timeouts = &tmp_long[15];
+ tmp_share->net_write_timeouts = &tmp_long[15];
tmp_long[14] = -1;
- tmp_share->net_write_timeouts = &tmp_long[16];
- tmp_long[15] = -1;
- tmp_share->access_balances = &tmp_long[17];
- tmp_share->bka_table_name_types = &tmp_long[18];
- tmp_share->strict_group_bys = &tmp_long[19];
+ tmp_share->access_balances = &tmp_long[16];
+ tmp_share->bka_table_name_types = &tmp_long[17];
+ tmp_share->strict_group_bys = &tmp_long[18];
tmp_share->monitoring_limit = &tmp_longlong[0];
tmp_share->monitoring_sid = &tmp_longlong[1];
tmp_share->monitoring_bg_interval = &tmp_longlong[2];
@@ -7638,7 +7603,6 @@ void spider_set_tmp_share_pointer(
tmp_share->monitoring_limit_length = 1;
tmp_share->monitoring_sid_length = 1;
tmp_share->monitoring_bg_interval_length = 1;
- tmp_share->use_handlers_length = 1;
tmp_share->connect_timeouts_length = 1;
tmp_share->net_read_timeouts_length = 1;
tmp_share->net_write_timeouts_length = 1;
@@ -7820,10 +7784,6 @@ longlong spider_split_read_param(
DBUG_RETURN(info_limit);
}
#endif
- if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- DBUG_RETURN(result_list->semi_split_read_base);
- }
spider_get_select_limit(spider, &select_lex, &select_limit, &offset_limit);
DBUG_PRINT("info",("spider result_list->set_split_read=%s", result_list->set_split_read ? "TRUE" : "FALSE"));
if (!result_list->set_split_read)
@@ -8051,8 +8011,6 @@ bool spider_check_direct_order_limit(
}
DBUG_PRINT("info",("spider SQLCOM_HA_READ=%s",
(spider->wide_handler->sql_command == SQLCOM_HA_READ) ? "TRUE" : "FALSE"));
- DBUG_PRINT("info",("spider sql_kinds with SPIDER_SQL_KIND_HANDLER=%s",
- (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER) ? "TRUE" : "FALSE"));
DBUG_PRINT("info",("spider use_index_merge=%s",
spider->use_index_merge ? "TRUE" : "FALSE"));
DBUG_PRINT("info",("spider is_clone=%s",
@@ -8099,11 +8057,6 @@ bool spider_check_direct_order_limit(
first_check = FALSE;
spider->result_list.direct_distinct = FALSE;
spider->result_list.direct_aggregate = FALSE;
- } else if (spider->sql_kinds & SPIDER_SQL_KIND_HANDLER)
- {
- DBUG_PRINT("info",("spider sql_kinds with SPIDER_SQL_KIND_HANDLER"));
- spider->result_list.direct_distinct = FALSE;
- spider->result_list.direct_aggregate = FALSE;
} else if (
!select_lex->group_list.elements &&
!select_lex->with_sum_func
diff --git a/storage/spider/spd_trx.cc b/storage/spider/spd_trx.cc
index a848de1ece2..09da3c18c48 100644
--- a/storage/spider/spd_trx.cc
+++ b/storage/spider/spd_trx.cc
@@ -1135,7 +1135,7 @@ int spider_free_trx_alloc(
spider_free_tmp_share_alloc(trx->tmp_share);
}
spider_db_udf_free_set_names(trx);
- for (roop_count = spider_param_udf_table_lock_mutex_count() - 1;
+ for (roop_count = spider_udf_table_lock_mutex_count - 1;
roop_count >= 0; roop_count--)
pthread_mutex_destroy(&trx->udf_table_mutexes[roop_count]);
spider_free_trx_ha(trx);
@@ -1188,7 +1188,7 @@ SPIDER_TRX *spider_get_trx(
&tmp_share, (uint) (sizeof(SPIDER_SHARE)),
&tmp_wide_handler, (uint) sizeof(SPIDER_WIDE_HANDLER),
&udf_table_mutexes, (uint) (sizeof(pthread_mutex_t) *
- spider_param_udf_table_lock_mutex_count()),
+ spider_udf_table_lock_mutex_count),
NullS))
)
goto error_alloc_trx;
@@ -1198,7 +1198,7 @@ SPIDER_TRX *spider_get_trx(
trx->udf_table_mutexes = udf_table_mutexes;
for (roop_count = 0;
- roop_count < (int) spider_param_udf_table_lock_mutex_count();
+ roop_count < (int) spider_udf_table_lock_mutex_count;
roop_count++)
{
if (mysql_mutex_init(spd_key_mutex_udf_table,
@@ -3603,8 +3603,7 @@ int spider_check_trx_and_get_conn(
*spider->conn_keys[0] = first_byte;
for (roop_count = 0; roop_count < (int) share->link_count; roop_count++)
{
- if (!spider->handler_opened(roop_count, SPIDER_CONN_KIND_MYSQL))
- spider->conns[roop_count] = NULL;
+ spider->conns[roop_count]= NULL;
}
bool search_link_idx_is_checked = FALSE;
for (
diff --git a/strings/CMakeLists.txt b/strings/CMakeLists.txt
index 54612256adc..c332937ac94 100644
--- a/strings/CMakeLists.txt
+++ b/strings/CMakeLists.txt
@@ -13,7 +13,10 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+INCLUDE_DIRECTORIES(
+${CMAKE_SOURCE_DIR}/include
+${CMAKE_BINARY_DIR}/strings
+)
SET(STRINGS_SOURCES bchange.c bmove_upp.c ctype-big5.c ctype-bin.c ctype-cp932.c
ctype-czech.c ctype-euc_kr.c ctype-eucjpms.c ctype-extra.c ctype-gb2312.c ctype-gbk.c
@@ -37,3 +40,18 @@ MAYBE_DISABLE_IPO(strings)
ADD_EXECUTABLE(conf_to_src EXCLUDE_FROM_ALL conf_to_src.c)
SET_TARGET_PROPERTIES(conf_to_src PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
TARGET_LINK_LIBRARIES(conf_to_src mysys strings)
+
+ADD_EXECUTABLE(uca-dump uca-dump.c)
+
+ADD_CUSTOM_COMMAND(
+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/ctype-uca1400data.h
+ COMMAND uca-dump --name-prefix=uca1400 --levels=3 ${PROJECT_SOURCE_DIR}/mysql-test/std_data/unicode/allkeys1400.txt > ctype-uca1400data.h
+ DEPENDS uca-dump
+)
+
+ADD_CUSTOM_TARGET(
+ GenUnicodeDataSource
+ DEPENDS
+ ${CMAKE_CURRENT_BINARY_DIR}/ctype-uca1400data.h
+)
+ADD_DEPENDENCIES(strings GenUnicodeDataSource)
diff --git a/strings/conf_to_src.c b/strings/conf_to_src.c
index 4a3b035aa49..469389dc76b 100644
--- a/strings/conf_to_src.c
+++ b/strings/conf_to_src.c
@@ -407,7 +407,7 @@ void dispcset(FILE *f,CHARSET_INFO *cs)
fprintf(f," 255, /* max_sort_char */\n");
fprintf(f," ' ', /* pad_char */\n");
fprintf(f," 0, /* escape_with_backslash_is_dangerous */\n");
- fprintf(f," 1, /* levels_for_order */\n");
+ fprintf(f," MY_CS_COLL_LEVELS_S1,\n");
fprintf(f," &my_charset_8bit_handler,\n");
if (cs->state & MY_CS_BINSORT)
diff --git a/strings/ctype-big5.c b/strings/ctype-big5.c
index 2491a5ff7ed..68d568832f8 100644
--- a/strings/ctype-big5.c
+++ b/strings/ctype-big5.c
@@ -6727,7 +6727,9 @@ static MY_COLLATION_HANDLER my_collation_handler_big5_chinese_ci=
my_hash_sort_simple,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -6746,7 +6748,9 @@ static MY_COLLATION_HANDLER my_collation_handler_big5_bin=
my_hash_sort_mb_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -6765,7 +6769,9 @@ static MY_COLLATION_HANDLER my_collation_handler_big5_chinese_nopad_ci=
my_hash_sort_simple_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -6784,7 +6790,9 @@ static MY_COLLATION_HANDLER my_collation_handler_big5_nopad_bin=
my_hash_sort_mb_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -6848,7 +6856,7 @@ struct charset_info_st my_charset_big5_chinese_ci=
0xF9D5, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_big5_handler,
&my_collation_handler_big5_chinese_ci
};
@@ -6881,7 +6889,7 @@ struct charset_info_st my_charset_big5_bin=
0xF9FE, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_big5_handler,
&my_collation_handler_big5_bin
};
@@ -6914,7 +6922,7 @@ struct charset_info_st my_charset_big5_chinese_nopad_ci=
0xF9D5, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_big5_handler,
&my_collation_handler_big5_chinese_nopad_ci
};
@@ -6947,7 +6955,7 @@ struct charset_info_st my_charset_big5_nopad_bin=
0xF9FE, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_big5_handler,
&my_collation_handler_big5_nopad_bin
};
diff --git a/strings/ctype-bin.c b/strings/ctype-bin.c
index b7e07f4a8cf..7ec733c521a 100644
--- a/strings/ctype-bin.c
+++ b/strings/ctype-bin.c
@@ -523,7 +523,9 @@ MY_COLLATION_HANDLER my_collation_8bit_bin_handler =
my_hash_sort_8bit_bin,
my_propagate_simple,
my_min_str_8bit_simple,
- my_max_str_8bit_simple
+ my_max_str_8bit_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -542,7 +544,9 @@ MY_COLLATION_HANDLER my_collation_8bit_nopad_bin_handler =
my_hash_sort_bin,
my_propagate_simple,
my_min_str_8bit_simple_nopad,
- my_max_str_8bit_simple
+ my_max_str_8bit_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -561,7 +565,9 @@ static MY_COLLATION_HANDLER my_collation_binary_handler =
my_hash_sort_bin,
my_propagate_simple,
my_min_str_8bit_simple_nopad,
- my_max_str_8bit_simple
+ my_max_str_8bit_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -626,7 +632,7 @@ struct charset_info_st my_charset_bin =
255, /* max_sort_char */
0, /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_binary_handler
};
diff --git a/strings/ctype-cp932.c b/strings/ctype-cp932.c
index af3de05509d..0a075c17c2d 100644
--- a/strings/ctype-cp932.c
+++ b/strings/ctype-cp932.c
@@ -34684,7 +34684,9 @@ static MY_COLLATION_HANDLER my_collation_handler_cp932_japanese_ci=
my_hash_sort_simple,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -34703,7 +34705,9 @@ static MY_COLLATION_HANDLER my_collation_handler_cp932_bin=
my_hash_sort_mb_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -34722,7 +34726,9 @@ static MY_COLLATION_HANDLER my_collation_handler_cp932_japanese_nopad_ci=
my_hash_sort_simple_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -34741,7 +34747,9 @@ static MY_COLLATION_HANDLER my_collation_handler_cp932_nopad_bin=
my_hash_sort_mb_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -34806,7 +34814,7 @@ struct charset_info_st my_charset_cp932_japanese_ci=
0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_cp932_japanese_ci
};
@@ -34838,7 +34846,7 @@ struct charset_info_st my_charset_cp932_bin=
0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_cp932_bin
};
@@ -34871,7 +34879,7 @@ struct charset_info_st my_charset_cp932_japanese_nopad_ci=
0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_cp932_japanese_nopad_ci
};
@@ -34903,7 +34911,7 @@ struct charset_info_st my_charset_cp932_nopad_bin=
0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_cp932_nopad_bin
};
diff --git a/strings/ctype-czech.c b/strings/ctype-czech.c
index 8a3db7aba67..89eff459215 100644
--- a/strings/ctype-czech.c
+++ b/strings/ctype-czech.c
@@ -596,7 +596,9 @@ static MY_COLLATION_HANDLER my_collation_latin2_czech_cs_handler =
my_hash_sort_simple,
my_propagate_simple,
my_min_str_8bit_simple,
- my_max_str_8bit_simple
+ my_max_str_8bit_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
struct charset_info_st my_charset_latin2_czech_cs =
@@ -627,7 +629,7 @@ struct charset_info_st my_charset_latin2_czech_cs =
0xAE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 4, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S4,
&my_charset_8bit_handler,
&my_collation_latin2_czech_cs_handler
};
diff --git a/strings/ctype-euc_kr.c b/strings/ctype-euc_kr.c
index 1f62ebaf636..91ffb03da74 100644
--- a/strings/ctype-euc_kr.c
+++ b/strings/ctype-euc_kr.c
@@ -9974,7 +9974,9 @@ static MY_COLLATION_HANDLER my_collation_handler_euckr_korean_ci=
my_hash_sort_simple,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -9993,7 +9995,9 @@ static MY_COLLATION_HANDLER my_collation_handler_euckr_bin=
my_hash_sort_mb_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -10012,7 +10016,9 @@ static MY_COLLATION_HANDLER my_collation_handler_euckr_korean_nopad_ci=
my_hash_sort_simple_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -10031,7 +10037,9 @@ static MY_COLLATION_HANDLER my_collation_handler_euckr_nopad_bin=
my_hash_sort_mb_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -10096,7 +10104,7 @@ struct charset_info_st my_charset_euckr_korean_ci=
0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_euckr_korean_ci
};
@@ -10129,7 +10137,7 @@ struct charset_info_st my_charset_euckr_bin=
0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_euckr_bin
};
@@ -10162,7 +10170,7 @@ struct charset_info_st my_charset_euckr_korean_nopad_ci=
0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_euckr_korean_nopad_ci
};
@@ -10195,7 +10203,7 @@ struct charset_info_st my_charset_euckr_nopad_bin=
0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_euckr_nopad_bin
};
diff --git a/strings/ctype-eucjpms.c b/strings/ctype-eucjpms.c
index ed48917e333..4c2fd86275e 100644
--- a/strings/ctype-eucjpms.c
+++ b/strings/ctype-eucjpms.c
@@ -67512,7 +67512,9 @@ static MY_COLLATION_HANDLER my_collation_eucjpms_japanese_ci_handler =
my_hash_sort_simple,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -67531,7 +67533,9 @@ static MY_COLLATION_HANDLER my_collation_eucjpms_bin_handler =
my_hash_sort_mb_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -67550,7 +67554,9 @@ static MY_COLLATION_HANDLER my_collation_eucjpms_japanese_nopad_ci_handler =
my_hash_sort_simple_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -67569,7 +67575,9 @@ static MY_COLLATION_HANDLER my_collation_eucjpms_nopad_bin_handler =
my_hash_sort_mb_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -67635,7 +67643,7 @@ struct charset_info_st my_charset_eucjpms_japanese_ci=
0xFEFE, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_eucjpms_japanese_ci_handler
};
@@ -67668,7 +67676,7 @@ struct charset_info_st my_charset_eucjpms_bin=
0xFEFE, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_eucjpms_bin_handler
};
@@ -67701,7 +67709,7 @@ struct charset_info_st my_charset_eucjpms_japanese_nopad_ci=
0xFEFE, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_eucjpms_japanese_nopad_ci_handler
};
@@ -67734,7 +67742,7 @@ struct charset_info_st my_charset_eucjpms_nopad_bin=
0xFEFE, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_eucjpms_nopad_bin_handler
};
diff --git a/strings/ctype-extra.c b/strings/ctype-extra.c
index e6787b1130b..641bd4085a5 100644
--- a/strings/ctype-extra.c
+++ b/strings/ctype-extra.c
@@ -3701,7 +3701,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -3734,7 +3734,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -3767,7 +3767,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -3800,7 +3800,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -3833,7 +3833,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -3866,7 +3866,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -3899,7 +3899,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -3932,7 +3932,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -3965,7 +3965,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -3998,7 +3998,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4031,7 +4031,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4064,7 +4064,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4097,7 +4097,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4130,7 +4130,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4163,7 +4163,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4196,7 +4196,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4229,7 +4229,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4262,7 +4262,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4295,7 +4295,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4328,7 +4328,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4361,7 +4361,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4394,7 +4394,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4427,7 +4427,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4460,7 +4460,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4493,7 +4493,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4526,7 +4526,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4559,7 +4559,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4592,7 +4592,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4625,7 +4625,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -4658,7 +4658,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4691,7 +4691,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4724,7 +4724,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4757,7 +4757,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -4790,7 +4790,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4823,7 +4823,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4856,7 +4856,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -4889,7 +4889,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4922,7 +4922,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -4955,7 +4955,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -4988,7 +4988,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5021,7 +5021,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5054,7 +5054,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5087,7 +5087,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5120,7 +5120,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5153,7 +5153,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5186,7 +5186,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5219,7 +5219,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5252,7 +5252,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5285,7 +5285,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5318,7 +5318,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5351,7 +5351,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5384,7 +5384,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5417,7 +5417,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5450,7 +5450,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5483,7 +5483,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5516,7 +5516,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5549,7 +5549,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5582,7 +5582,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -5615,7 +5615,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_bin_handler,
}
@@ -5648,7 +5648,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -5681,7 +5681,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
@@ -5714,7 +5714,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -5747,7 +5747,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -5780,7 +5780,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -5813,7 +5813,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -5846,7 +5846,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -5879,7 +5879,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -5912,7 +5912,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -5945,7 +5945,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -5978,7 +5978,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6011,7 +6011,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6044,7 +6044,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6077,7 +6077,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6110,7 +6110,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6143,7 +6143,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6176,7 +6176,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6209,7 +6209,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6242,7 +6242,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6275,7 +6275,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6308,7 +6308,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6341,7 +6341,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6374,7 +6374,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6407,7 +6407,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6440,7 +6440,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6473,7 +6473,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6506,7 +6506,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6539,7 +6539,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -6572,7 +6572,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6605,7 +6605,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6638,7 +6638,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6671,7 +6671,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6704,7 +6704,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6737,7 +6737,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6770,7 +6770,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6803,7 +6803,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6836,7 +6836,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6869,7 +6869,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6902,7 +6902,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6935,7 +6935,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -6968,7 +6968,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -7001,7 +7001,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -7034,7 +7034,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -7067,7 +7067,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -7100,7 +7100,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -7133,7 +7133,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -7166,7 +7166,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_nopad_ci_handler,
}
@@ -7199,7 +7199,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_nopad_bin_handler,
}
@@ -7231,7 +7231,7 @@ struct charset_info_st compiled_charsets[] = {
255, /* max_sort_char */
' ', /* pad_char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_8bit_handler,
&my_collation_8bit_simple_ci_handler,
}
diff --git a/strings/ctype-gb2312.c b/strings/ctype-gb2312.c
index dd3581366fe..9fbc0ab70e2 100644
--- a/strings/ctype-gb2312.c
+++ b/strings/ctype-gb2312.c
@@ -6378,7 +6378,9 @@ static MY_COLLATION_HANDLER my_collation_handler_gb2312_chinese_ci=
my_hash_sort_simple,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -6397,7 +6399,9 @@ static MY_COLLATION_HANDLER my_collation_handler_gb2312_bin=
my_hash_sort_mb_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -6416,7 +6420,9 @@ static MY_COLLATION_HANDLER my_collation_handler_gb2312_chinese_nopad_ci=
my_hash_sort_simple_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -6435,7 +6441,9 @@ static MY_COLLATION_HANDLER my_collation_handler_gb2312_nopad_bin=
my_hash_sort_mb_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -6500,7 +6508,7 @@ struct charset_info_st my_charset_gb2312_chinese_ci=
0xF7FE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_gb2312_chinese_ci
};
@@ -6533,7 +6541,7 @@ struct charset_info_st my_charset_gb2312_bin=
0xF7FE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_gb2312_bin
};
@@ -6566,7 +6574,7 @@ struct charset_info_st my_charset_gb2312_chinese_nopad_ci=
0xF7FE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_gb2312_chinese_nopad_ci
};
@@ -6599,7 +6607,7 @@ struct charset_info_st my_charset_gb2312_nopad_bin=
0xF7FE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_gb2312_nopad_bin
};
diff --git a/strings/ctype-gbk.c b/strings/ctype-gbk.c
index 2e72d5bd7a4..863ae10cfad 100644
--- a/strings/ctype-gbk.c
+++ b/strings/ctype-gbk.c
@@ -10660,7 +10660,9 @@ static MY_COLLATION_HANDLER my_collation_handler_gbk_chinese_ci=
my_hash_sort_simple,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -10679,7 +10681,9 @@ static MY_COLLATION_HANDLER my_collation_handler_gbk_bin=
my_hash_sort_mb_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -10698,7 +10702,9 @@ static MY_COLLATION_HANDLER my_collation_handler_gbk_chinese_nopad_ci=
my_hash_sort_simple_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -10717,7 +10723,9 @@ static MY_COLLATION_HANDLER my_collation_handler_gbk_nopad_bin=
my_hash_sort_mb_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
static MY_CHARSET_HANDLER my_charset_handler=
@@ -10781,7 +10789,7 @@ struct charset_info_st my_charset_gbk_chinese_ci=
0xA967, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_gbk_chinese_ci
};
@@ -10813,7 +10821,7 @@ struct charset_info_st my_charset_gbk_bin=
0xFEFE, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_gbk_bin
};
@@ -10846,7 +10854,7 @@ struct charset_info_st my_charset_gbk_chinese_nopad_ci=
0xA967, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_gbk_chinese_nopad_ci
};
@@ -10878,7 +10886,7 @@ struct charset_info_st my_charset_gbk_nopad_bin=
0xFEFE, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_gbk_nopad_bin
};
diff --git a/strings/ctype-latin1.c b/strings/ctype-latin1.c
index 33dd369657f..ce2e84666bc 100644
--- a/strings/ctype-latin1.c
+++ b/strings/ctype-latin1.c
@@ -458,7 +458,7 @@ struct charset_info_st my_charset_latin1=
255, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_8bit_simple_ci_handler
};
@@ -491,7 +491,7 @@ struct charset_info_st my_charset_latin1_nopad=
255, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_8bit_simple_nopad_ci_handler
};
@@ -741,7 +741,9 @@ static MY_COLLATION_HANDLER my_collation_german2_ci_handler=
my_hash_sort_latin1_de,
my_propagate_complex,
my_min_str_8bit_simple,
- my_max_str_8bit_simple
+ my_max_str_8bit_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -772,7 +774,7 @@ struct charset_info_st my_charset_latin1_german2_ci=
247, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_german2_ci_handler
};
@@ -805,7 +807,7 @@ struct charset_info_st my_charset_latin1_bin=
255, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_8bit_bin_handler
};
@@ -838,7 +840,7 @@ struct charset_info_st my_charset_latin1_nopad_bin=
255, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_8bit_nopad_bin_handler
};
diff --git a/strings/ctype-simple.c b/strings/ctype-simple.c
index b579f0af203..28405409e2d 100644
--- a/strings/ctype-simple.c
+++ b/strings/ctype-simple.c
@@ -21,6 +21,7 @@
#include <errno.h>
#include "stdarg.h"
+#include "my_bit.h"
/*
Returns the number of bytes required for strnxfrm().
@@ -1940,13 +1941,27 @@ my_bool my_propagate_complex(CHARSET_INFO *cs __attribute__((unused)),
}
+void my_ci_set_strength(struct charset_info_st *cs, uint strength)
+{
+ DBUG_ASSERT(strength > 0);
+ DBUG_ASSERT(strength <= MY_STRXFRM_NLEVELS);
+ cs->levels_for_order= ((1 << strength) - 1);
+}
+
+
+void my_ci_set_level_flags(struct charset_info_st *cs, uint flags)
+{
+ DBUG_ASSERT(flags < (1<<MY_STRXFRM_NLEVELS));
+ cs->levels_for_order= flags;
+}
+
/*
Normalize strxfrm flags
SYNOPSIS:
my_strxfrm_flag_normalize()
+ cs - the CHARSET_INFO pointer
flags - non-normalized flags
- nlevels - number of levels
NOTES:
If levels are omitted, then 1-maximum is assumed.
@@ -1957,8 +1972,9 @@ my_bool my_propagate_complex(CHARSET_INFO *cs __attribute__((unused)),
normalized flags
*/
-uint my_strxfrm_flag_normalize(uint flags, uint maximum)
+uint my_strxfrm_flag_normalize(CHARSET_INFO *cs, uint flags)
{
+ uint maximum= my_bit_log2_uint32(cs->levels_for_order) + 1;
DBUG_ASSERT(maximum >= 1 && maximum <= MY_STRXFRM_NLEVELS);
/* If levels are omitted, then 1-maximum is assumed*/
@@ -2149,7 +2165,9 @@ MY_COLLATION_HANDLER my_collation_8bit_simple_ci_handler =
my_hash_sort_simple,
my_propagate_simple,
my_min_str_8bit_simple,
- my_max_str_8bit_simple
+ my_max_str_8bit_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -2168,5 +2186,7 @@ MY_COLLATION_HANDLER my_collation_8bit_simple_nopad_ci_handler =
my_hash_sort_simple_nopad,
my_propagate_simple,
my_min_str_8bit_simple_nopad,
- my_max_str_8bit_simple
+ my_max_str_8bit_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
diff --git a/strings/ctype-sjis.c b/strings/ctype-sjis.c
index c3e64ce0d11..7a5175142de 100644
--- a/strings/ctype-sjis.c
+++ b/strings/ctype-sjis.c
@@ -34072,7 +34072,9 @@ static MY_COLLATION_HANDLER my_collation_handler_sjis_japanese_ci=
my_hash_sort_simple,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -34091,7 +34093,9 @@ static MY_COLLATION_HANDLER my_collation_handler_sjis_bin=
my_hash_sort_mb_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -34110,7 +34114,9 @@ static MY_COLLATION_HANDLER my_collation_handler_sjis_japanese_nopad_ci=
my_hash_sort_simple_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -34129,7 +34135,9 @@ static MY_COLLATION_HANDLER my_collation_handler_sjis_nopad_bin=
my_hash_sort_mb_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -34194,7 +34202,7 @@ struct charset_info_st my_charset_sjis_japanese_ci=
0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_sjis_japanese_ci
};
@@ -34226,7 +34234,7 @@ struct charset_info_st my_charset_sjis_bin=
0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_sjis_bin
};
@@ -34259,7 +34267,7 @@ struct charset_info_st my_charset_sjis_japanese_nopad_ci=
0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_sjis_japanese_nopad_ci
};
@@ -34291,7 +34299,7 @@ struct charset_info_st my_charset_sjis_nopad_bin=
0xFCFC, /* max_sort_char */
' ', /* pad char */
1, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_handler_sjis_nopad_bin
};
diff --git a/strings/ctype-tis620.c b/strings/ctype-tis620.c
index dcbbe412ffe..4c75a7cf60a 100644
--- a/strings/ctype-tis620.c
+++ b/strings/ctype-tis620.c
@@ -878,7 +878,9 @@ static MY_COLLATION_HANDLER my_collation_ci_handler =
my_hash_sort_simple,
my_propagate_simple,
my_min_str_8bit_simple,
- my_max_str_8bit_simple
+ my_max_str_8bit_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
static MY_COLLATION_HANDLER my_collation_nopad_ci_handler =
@@ -896,7 +898,9 @@ static MY_COLLATION_HANDLER my_collation_nopad_ci_handler =
my_hash_sort_simple_nopad,
my_propagate_simple,
my_min_str_8bit_simple_nopad,
- my_max_str_8bit_simple
+ my_max_str_8bit_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
static MY_CHARSET_HANDLER my_charset_handler=
@@ -961,7 +965,7 @@ struct charset_info_st my_charset_tis620_thai_ci=
255, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_ci_handler
};
@@ -993,7 +997,7 @@ struct charset_info_st my_charset_tis620_bin=
255, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_8bit_bin_handler
};
@@ -1026,7 +1030,7 @@ struct charset_info_st my_charset_tis620_thai_nopad_ci=
255, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_nopad_ci_handler
};
@@ -1059,7 +1063,7 @@ struct charset_info_st my_charset_tis620_nopad_bin=
255, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_8bit_nopad_bin_handler
};
diff --git a/strings/ctype-uca-scanner_next.inl b/strings/ctype-uca-scanner_next.inl
index acab31f21ef..e8489ddf191 100644
--- a/strings/ctype-uca-scanner_next.inl
+++ b/strings/ctype-uca-scanner_next.inl
@@ -43,10 +43,12 @@ static inline
#ifdef SCANNER_NEXT_NCHARS
weight_and_nchars_t
MY_FUNCTION_NAME(scanner_next_with_nchars)(my_uca_scanner *scanner,
+ const my_uca_scanner_param *param,
size_t nchars)
#else
int
-MY_FUNCTION_NAME(scanner_next)(my_uca_scanner *scanner)
+MY_FUNCTION_NAME(scanner_next)(my_uca_scanner *scanner,
+ const my_uca_scanner_param *param)
#endif
{
#ifdef SCANNER_NEXT_NCHARS
@@ -78,6 +80,45 @@ MY_FUNCTION_NAME(scanner_next)(my_uca_scanner *scanner)
my_wc_t currwc= 0;
const uint16 *cweight;
+#if MY_UCA_ASCII_OPTIMIZE && !defined(SCANNER_NEXT_NCHARS)
+ if (scanner->sbeg + 1 < scanner->send)
+ {
+ const MY_UCA_2BYTES_ITEM *ww;
+ ww= my_uca_level_booster_2bytes_item_addr_const(param->level->booster,
+ scanner->sbeg[0],
+ scanner->sbeg[1]);
+ if (my_uca_2bytes_item_is_applicable(ww))
+ {
+ /*
+ Byte pairs that make 2-byte head characters in previous
+ context pairs are marked as not applicable for optimization
+ during the collation initialization. So when we come here
+ sbeg[0] and sbeg[1] are:
+ - either two ASCII characters
+ - or one 2-byte character which IS NOT a previous context head
+ Just remember sbeg[1] as the previous character for simplicity.
+ This may erroneously interpret bytes 0x80..0x9F as previous context
+ head characters U+0080..U+009F. However, CLDR does not have any real
+ collations that use these characters as previous context heads.
+ */
+ scanner->page= 0;
+ scanner->code= (int) scanner->sbeg[1];
+ scanner->sbeg+= 2;
+ if ((weight= my_uca_scanner_set_weight(scanner, ww->weight)))
+ {
+ /*
+ TODO: add support for scanner_next_with_nchars and do this:
+ SCANNER_NEXT_RETURN(weight, ignorable_nchars + 1);
+ */
+ return weight;
+ }
+ continue; /* Ignorable character */
+ }
+ /* 2 byte optimization is not applicable, go the slow path */
+ }
+#endif
+
+
/* Get next character */
#if MY_UCA_ASCII_OPTIMIZE
/* Get next ASCII character */
@@ -87,9 +128,10 @@ MY_FUNCTION_NAME(scanner_next)(my_uca_scanner *scanner)
scanner->sbeg+= 1;
#if MY_UCA_COMPILE_CONTRACTIONS
- if (my_uca_needs_context_handling(scanner->level, currwc))
+ if (my_uca_needs_context_handling(param->level, currwc))
{
- const MY_CONTRACTION *cnt= my_uca_context_weight_find(scanner, currwc,
+ const MY_CONTRACTION *cnt= my_uca_context_weight_find(scanner, param,
+ currwc,
LOCAL_MAX_CONTRACTION_LENGTH);
if (cnt)
{
@@ -102,7 +144,7 @@ MY_FUNCTION_NAME(scanner_next)(my_uca_scanner *scanner)
scanner->page= 0;
scanner->code= (int) currwc;
- cweight= scanner->level->weights[0] + scanner->code * scanner->level->lengths[0];
+ cweight= param->level->weights[0] + scanner->code * param->level->lengths[0];
if ((weight= my_uca_scanner_set_weight(scanner, cweight)))
SCANNER_NEXT_RETURN(weight, ignorable_nchars + 1);
continue; /* Ignorable character */
@@ -110,7 +152,7 @@ MY_FUNCTION_NAME(scanner_next)(my_uca_scanner *scanner)
else
#endif
/* Get next MB character */
- if (((mblen= MY_MB_WC(scanner, &currwc, scanner->sbeg,
+ if (((mblen= MY_MB_WC(scanner, param, &currwc, scanner->sbeg,
scanner->send)) <= 0))
{
if (scanner->sbeg >= scanner->send)
@@ -122,7 +164,7 @@ MY_FUNCTION_NAME(scanner_next)(my_uca_scanner *scanner)
There are some more bytes left. Non-positive mb_len means that
we got an incomplete or a bad byte sequence. Consume mbminlen bytes.
*/
- if ((scanner->sbeg+= scanner->cs->mbminlen) > scanner->send)
+ if ((scanner->sbeg+= param->cs->mbminlen) > scanner->send)
{
/* For safety purposes don't go beyond the string range. */
scanner->sbeg= scanner->send;
@@ -136,16 +178,16 @@ MY_FUNCTION_NAME(scanner_next)(my_uca_scanner *scanner)
}
scanner->sbeg+= mblen;
- if (currwc > scanner->level->maxchar)
+ if (currwc > param->level->maxchar)
{
SCANNER_NEXT_RETURN(my_uca_scanner_set_weight_outside_maxchar(scanner),
ignorable_nchars + 1);
}
#if MY_UCA_COMPILE_CONTRACTIONS
- if (my_uca_needs_context_handling(scanner->level, currwc))
+ if (my_uca_needs_context_handling(param->level, currwc))
{
- const MY_CONTRACTION *cnt= my_uca_context_weight_find(scanner, currwc,
+ const MY_CONTRACTION *cnt= my_uca_context_weight_find(scanner, param, currwc,
LOCAL_MAX_CONTRACTION_LENGTH);
if (cnt)
{
@@ -161,12 +203,12 @@ MY_FUNCTION_NAME(scanner_next)(my_uca_scanner *scanner)
scanner->code= currwc & 0xFF;
/* If weight page for w[0] does not exist, then calculate algoritmically */
- if (!(wpage= scanner->level->weights[scanner->page]))
- SCANNER_NEXT_RETURN(my_uca_scanner_next_implicit(scanner),
+ if (!(wpage= param->level->weights[scanner->page]))
+ SCANNER_NEXT_RETURN(my_uca_scanner_next_implicit(scanner, param),
ignorable_nchars + 1);
/* Calculate pointer to w[0]'s weight, using page and offset */
- cweight= wpage + scanner->code * scanner->level->lengths[scanner->page];
+ cweight= wpage + scanner->code * param->level->lengths[scanner->page];
if ((weight= my_uca_scanner_set_weight(scanner, cweight)))
SCANNER_NEXT_RETURN(weight, ignorable_nchars + 1);
continue; /* Ignorable character */
diff --git a/strings/ctype-uca.c b/strings/ctype-uca.c
index 094c02618d0..5cedd8b0a63 100644
--- a/strings/ctype-uca.c
+++ b/strings/ctype-uca.c
@@ -34,6 +34,8 @@
#include "strings_def.h"
#include <m_ctype.h>
+#include "ctype-uca.h"
+#include "my_bit.h"
typedef struct
{
@@ -6546,7 +6548,9 @@ MY_UCA_INFO my_uca_v400=
NULL, /* item */
NULL /* flags */
},
- 0 /* levelno */
+ 0, /* levelno */
+ {0}, /* contraction_hash */
+ NULL /* booster */
},
{
0,
@@ -6557,8 +6561,11 @@ MY_UCA_INFO my_uca_v400=
NULL,
NULL
},
- 1 /* levelno */
+ 1, /* levelno */
+ {0}, /* contraction_hash */
+ NULL /* booster */
},
+ {0}
},
/* Logical positions */
@@ -6579,6 +6586,9 @@ MY_UCA_INFO my_uca_v400=
0x0009, /* first_variable */
0x2183, /* last_variable */
+
+ /* Misc */
+ 400 /* Version */
};
/******************************************************/
@@ -30103,7 +30113,9 @@ MY_UCA_INFO my_uca_v520_th=
thai_contractions, /* item */
NULL /* flags */
},
- 0 /* levelno */
+ 0, /* levelno */
+ {0}, /* contraction_hash */
+ NULL /* booster */
},
{
0x10FFFF, /* maxchar */
@@ -30114,8 +30126,11 @@ MY_UCA_INFO my_uca_v520_th=
thai_contractions_w2, /* item */
NULL /* flags */
},
- 1 /* levelno */
+ 1, /* levelno */
+ {0}, /* contraction_hash */
+ NULL /* booster */
},
+ {0}
},
0x0009, /* first_non_ignorable p != ignore */
@@ -30135,6 +30150,9 @@ MY_UCA_INFO my_uca_v520_th=
0x0009, /* first_variable if alt=non-ignorable: p != ignore */
0x1D371, /* last_variable if alt=shifter: p,s,t == ignore */
+
+ /* Misc */
+ 520 /* Version */
};
MY_UCA_INFO my_uca_v520=
@@ -30149,7 +30167,9 @@ MY_UCA_INFO my_uca_v520=
NULL, /* item */
NULL /* flags */
},
- 0 /* levelno */
+ 0, /* levelno */
+ {0}, /* contraction_hash */
+ NULL /* booster */
},
{
@@ -30161,8 +30181,12 @@ MY_UCA_INFO my_uca_v520=
NULL, /* item */
NULL /* flags */
},
- 1 /* levelno */
+ 1, /* levelno */
+ {0}, /* contraction_hash */
+ NULL /* booster */
},
+
+ {0}
},
0x0009, /* first_non_ignorable p != ignore */
@@ -30182,6 +30206,81 @@ MY_UCA_INFO my_uca_v520=
0x0009, /* first_variable if alt=non-ignorable: p != ignore */
0x1D371, /* last_variable if alt=shifter: p,s,t == ignore */
+
+ /* Misc */
+ 520 /* Version */
+};
+
+
+#include "ctype-uca1400data.h"
+
+static MY_UCA_INFO my_uca_v1400=
+{
+ {
+ {
+ 0x10FFFF, /* maxchar */
+ (uchar *) uca1400_length,
+ (uint16 **) uca1400_weight,
+ { /* Contractions: */
+ array_elements(uca1400_contractions), /* nitems */
+ uca1400_contractions, /* item */
+ NULL /* flags */
+ },
+ 0, /* levelno */
+ {0}, /* contraction_hash */
+ NULL /* booster */
+ },
+
+ {
+ 0x10FFFF, /* maxchar */
+ (uchar *) uca1400_length_secondary,
+ (uint16 **) uca1400_weight_secondary,
+ { /* Contractions: */
+ array_elements(uca1400_contractions_secondary), /* nitems */
+ uca1400_contractions_secondary, /* item */
+ NULL /* flags */
+ },
+ 1, /* levelno */
+ {0}, /* contraction_hash */
+ NULL /* booster */
+ },
+
+ {
+ 0x10FFFF, /* maxchar */
+ (uchar *) uca1400_length_tertiary,
+ (uint16 **) uca1400_weight_tertiary,
+ { /* Contractions: */
+ array_elements(uca1400_contractions_tertiary), /* nitems */
+ uca1400_contractions_tertiary, /* item */
+ NULL /* flags */
+ },
+ 2, /* levelno */
+ {0}, /* contraction_hash */
+ NULL /* booster */
+ }
+
+ },
+
+ uca1400_non_ignorable_first,
+ uca1400_non_ignorable_last,
+
+ uca1400_primary_ignorable_first,
+ uca1400_primary_ignorable_last,
+
+ uca1400_secondary_ignorable_first,
+ uca1400_secondary_ignorable_last,
+
+ uca1400_tertiary_ignorable_first,
+ uca1400_tertiary_ignorable_last,
+
+ 0x0000, /* first_trailing */
+ 0x0000, /* last_trailing */
+
+ uca1400_variable_first,
+ uca1400_variable_last,
+
+ /* Misc */
+ uca1400_version
};
@@ -30532,7 +30631,7 @@ static const char vietnamese[]=
Myanmar, according to CLDR Revision 8900.
http://unicode.org/cldr/trac/browser/trunk/common/collation/my.xml
*/
-static const char myanmar[]= "[shift-after-method expand][version 5.2.0]"
+static const char myanmar[]= "[shift-after-method expand]"
/* Tones */
"&\\u108C"
"<\\u1037"
@@ -31146,6 +31245,80 @@ static const char myanmar[]= "[shift-after-method expand][version 5.2.0]"
;
+typedef struct my_uca1400_collation_definition_st
+{
+ const char * tailoring;
+ const char * name;
+ uint16 id_utf8mb3;
+ uint16 id_utf8mb4;
+ uint16 id_ucs2;
+ uint16 id_utf16;
+ uint16 id_utf32;
+} MY_UCA1400_COLLATION_DEFINITION;
+
+
+
+/*
+ UCA1400 collation definitions in the order of their UCA400 counterparts,
+ with IDs of their closest UCA1400 counterparts, for character sets
+ utf8mb3, utf8mb4, ucs2, utf16, utf32.
+*/
+static MY_UCA1400_COLLATION_DEFINITION
+my_uca1400_collation_definitions[MY_UCA1400_COLLATION_DEFINITION_COUNT]=
+{
+#define COLDEF(tl,name,id_utf8mb3,id_utf8mb4,id_ucs2,id_utf16,id_utf32) \
+ {(tl), (name), (id_utf8mb3), (id_utf8mb4), (id_ucs2), (id_utf16), (id_utf32)}
+ /* Block N1 */
+ COLDEF("", "", 192, 224, 128, 101, 160),
+ COLDEF(icelandic, "icelandic", 193, 225, 129, 102, 161),
+ COLDEF(latvian, "latvian", 194, 226, 130, 103, 162),
+ COLDEF(romanian, "romanian", 195, 227, 131, 104, 163),
+ COLDEF(slovenian, "slovenian", 196, 228, 132, 105, 164),
+ COLDEF(polish, "polish", 197, 229, 133, 106, 165),
+ COLDEF(estonian, "estonian", 198, 230, 134, 107, 166),
+ COLDEF(spanish, "spanish", 199, 231, 135, 108, 167),
+ COLDEF(swedish, "swedish", 200, 232, 136, 109, 168),
+ COLDEF(turkish, "turkish", 201, 233, 137, 110, 169),
+ COLDEF(czech, "czech", 202, 234, 138, 111, 170),
+ COLDEF(danish, "danish", 203, 235, 139, 112, 171),
+ COLDEF(lithuanian, "lithuanian", 204, 236, 140, 113, 172),
+ COLDEF(slovak, "slovak", 205, 237, 141, 114, 173),
+ COLDEF(spanish2, "spanish2", 206, 238, 142, 115, 174),
+ COLDEF(roman, "roman", 207, 239, 143, 116, 175),
+ COLDEF(persian, "persian", 208, 240, 144, 117, 176),
+ COLDEF(esperanto, "esperanto", 209, 241, 145, 118, 177),
+ COLDEF(hungarian, "hungarian", 210, 242, 146, 119, 178),
+ COLDEF(sinhala, "sinhala", 211, 243, 147, 120, 179),
+ COLDEF(german2, "german2", 212, 244, 148, 121, 180),
+ /*
+ Don't add "croatian_mysql561", as its UCA-4.0.0 version was added for
+ compatibility only, to open MySQL tables.
+ The "croatian" version is closer to CLDR. Checked with CLDR-40.
+ */
+ COLDEF(NULL,/*croatian_mysql561*/ NULL, 213, 245, 149, 122, 181),
+ COLDEF(NULL,/*unicode_520_ci*/ NULL, 214, 246, 150, 123, 182),
+ COLDEF(vietnamese, "vietnamese", 215, 247, 151, 124, 183),
+ /* Block N2 */
+ COLDEF(croatian_mariadb, "croatian", 576, 608, 640, 672, 736),
+ /* Don't add myanmar yet. It causes too long weights on the tertiary level.*/
+ COLDEF(NULL,/*myanmar*/ NULL, 577, 609, 641, 673, 737)
+
+#undef COLDEF
+};
+
+
+static MY_UCA_INFO
+my_uca1400_info_tailored[MY_CS_ENCODING_LAST+1]
+ [MY_UCA1400_COLLATION_DEFINITION_COUNT];
+
+
+typedef struct my_uca_scanner_param_st
+{
+ const MY_UCA_WEIGHT_LEVEL *level;
+ CHARSET_INFO *cs;
+} my_uca_scanner_param;
+
+
/*
Unicode Collation Algorithm:
Collation element (weight) scanner,
@@ -31157,11 +31330,9 @@ typedef struct my_uca_scanner_st
const uint16 *wbeg; /* Beginning of the current weight string */
const uchar *sbeg; /* Beginning of the input string */
const uchar *send; /* End of the input string */
- const MY_UCA_WEIGHT_LEVEL *level;
uint16 implicit[2];
int page;
int code;
- CHARSET_INFO *cs;
} my_uca_scanner;
@@ -31514,6 +31685,150 @@ static inline uint my_contraction_char_length(const MY_CONTRACTION *cnt)
}
+/*
+ The number of elements must be a degree of 2.
+ This allows to use the faster & operator instead of the
+ slow % operator to find the remainder of the division:
+ pos= (start_pos + iteration) & MASK
+ instead of:
+ pos= (start_pos + iteration) % NUMBER_OF_PREALLOCED_HASH_ELEMENTS
+
+ DUCET as of Unicode-14.0.0 has 939 default contractions.
+ CLDR-40 has around 2601 contractions (all collations total).
+ The built-in Myanmar collation tailoring has 912 contractions.
+ 4096 as the contraction prealloced hash size should be enough
+ for all collations.
+*/
+#define MY_UCA_CONTRACTION_HASH_ALLOC_ELEMENTS 4096
+#define MY_UCA_CONTRACTION_HASH_LSHIFT 2
+#define MY_UCA_CONTRACTION_HASH_MASK \
+ ((MY_UCA_CONTRACTION_HASH_ALLOC_ELEMENTS-1)>>MY_UCA_CONTRACTION_HASH_LSHIFT)
+#define MY_UCA_CONTRACTION_HASH_ALLOWED_COLLISIONS \
+ (MY_UCA_CONTRACTION_HASH_ALLOC_ELEMENTS-1)
+
+/*#define DBUG_UCA_CONTRACTIONS*/
+#ifdef DBUG_UCA_CONTRACTIONS
+static ulonglong collisions= 0;
+static ulonglong collisions_eq= 0;
+#endif
+
+
+/*
+ An empirical hash function for contractions.
+ It does not produce collisions for built-in DUCET contractions
+ as of Unicode-14.0.0.
+*/
+static uint16
+my_uca_contraction_hash_func(my_wc_t a, my_wc_t b)
+{
+ return (uint16) (((a * 465 + b) & MY_UCA_CONTRACTION_HASH_MASK) <<
+ MY_UCA_CONTRACTION_HASH_LSHIFT);
+}
+
+
+/*
+ Find an unused cell in the contraction hash table.
+*/
+static my_bool
+my_uca_contraction_hash_find_empty(const MY_UCA_CONTRACTION_HASH *cnt,
+ uint16 start,
+ uint16 *ppos)
+{
+ uint16 i;
+ for (i= 0; i < MY_UCA_CONTRACTION_HASH_ALLOWED_COLLISIONS; i++)
+ {
+ uint16 pos= (i + start) % cnt->nitems_alloced;
+ if (!cnt->item[pos].ch[0])
+ {
+ *ppos= pos;
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+
+/*
+ Find a contraction in the hash table
+*/
+static inline const MY_CONTRACTION *
+my_uca_contraction_hash_find(const MY_UCA_CONTRACTION_HASH *cnt,
+ const my_wc_t *wc, size_t len)
+{
+ uint16 start= my_uca_contraction_hash_func(wc[0], wc[1]);
+ uint16 i;
+ DBUG_ASSERT(len <= MY_UCA_MAX_CONTRACTION);
+
+ for (i=0 ; i < MY_UCA_CONTRACTION_HASH_ALLOWED_COLLISIONS; i++)
+ {
+ uint16 pos= (i + start) % cnt->nitems_alloced;
+ const MY_CONTRACTION *c= &cnt->item[pos];
+ if (!c->ch[0])
+ return NULL; /* An empty cell found - there is no such contraction */
+ if (my_uca_true_contraction_eq(c, wc, len))
+ return c; /* The given contraction was found */
+ }
+ /*
+ We scanned every single cell in the hash table and neither found
+ the given contraction nor met an empty cell. This is a very unlikely
+ scenario and is possible only if the hash table is full.
+ Anyway, the given contraction was not found in the hash.
+ */
+ return NULL;
+}
+
+
+/*
+ Allocate an empty hash table for contractions.
+*/
+static my_bool
+my_uca_contraction_hash_allocate(MY_UCA_CONTRACTION_HASH *dst,
+ MY_CHARSET_LOADER *loader)
+{
+ size_t nbytes= MY_UCA_CONTRACTION_HASH_ALLOC_ELEMENTS * sizeof(MY_CONTRACTION);
+ bzero(dst, sizeof(*dst));
+ if (!(dst->item= (MY_CONTRACTION*) (loader->once_alloc)(nbytes)))
+ return TRUE;
+ bzero(dst->item, nbytes);
+ dst->nitems_alloced= MY_UCA_CONTRACTION_HASH_ALLOC_ELEMENTS;
+ return FALSE;
+}
+
+
+/*
+ Add all contractions from the list "src" into the hash table "dst".
+*/
+static my_bool
+my_uca_contraction_hash_populate(MY_UCA_CONTRACTION_HASH *dst,
+ const MY_CONTRACTIONS *src)
+{
+ size_t i;
+ DBUG_ASSERT(dst->nitems_alloced > 0);
+ for (i= 0; i < src->nitems; i++)
+ {
+ const MY_CONTRACTION *c= &src->item[i];
+ uint16 start= my_uca_contraction_hash_func(c->ch[0], c->ch[1]);
+ if (!dst->item[start].ch[0])
+ dst->item[start]= src->item[i];
+ else
+ {
+ uint16 pos;
+#ifdef DBUG_UCA_CONTRACTIONS
+ if (dst->item[start].ch[0] != c->ch[0] &&
+ dst->item[start].ch[1] != c->ch[1])
+ collisions++;
+ else
+ collisions_eq++;
+#endif
+ if (my_uca_contraction_hash_find_empty(dst, start, &pos))
+ return TRUE;
+ dst->item[pos]= src->item[i];
+ }
+ }
+ return FALSE;
+}
+
+
/**
Check if a string is a contraction,
and return its weight array on success.
@@ -31543,7 +31858,7 @@ my_uca_contraction_find(const MY_CONTRACTIONS *list, my_wc_t *wc, size_t len)
/**
- Find a contraction in the input stream and return its weight array
+ Find a contraction in the input stream
Scan input characters while their flags tell that they can be
a contraction part. Then try to find real contraction among the
@@ -31553,14 +31868,16 @@ my_uca_contraction_find(const MY_CONTRACTIONS *list, my_wc_t *wc, size_t len)
@param[OUT] *wc Where to store the scanned string
@param max_char_length The longest contraction character length allowed
- @return Weight array
+ @return
@retval NULL - no contraction found
@retval ptr - the address of MY_CONTRACTION found
*/
static const MY_CONTRACTION *
-my_uca_scanner_contraction_find(my_uca_scanner *scanner, my_wc_t currwc,
- size_t max_char_length)
+my_uca_scanner_contraction_hash_find(my_uca_scanner *scanner,
+ const my_uca_scanner_param *param,
+ my_wc_t currwc,
+ size_t max_char_length)
{
size_t clen= 1;
int flag;
@@ -31576,10 +31893,10 @@ my_uca_scanner_contraction_find(my_uca_scanner *scanner, my_wc_t currwc,
flag<<= 1)
{
int mblen;
- if ((mblen= my_ci_mb_wc(scanner->cs, &wc[clen], s, scanner->send)) <= 0)
+ if ((mblen= my_ci_mb_wc(param->cs, &wc[clen], s, scanner->send)) <= 0)
break;
beg[clen]= s= s + mblen;
- if (!my_uca_can_be_contraction_part(&scanner->level->contractions,
+ if (!my_uca_can_be_contraction_part(&param->level->contractions,
wc[clen++], flag))
break;
}
@@ -31588,10 +31905,10 @@ my_uca_scanner_contraction_find(my_uca_scanner *scanner, my_wc_t currwc,
for ( ; clen > 1; clen--)
{
const MY_CONTRACTION *cnt;
- if (my_uca_can_be_contraction_tail(&scanner->level->contractions,
+ if (my_uca_can_be_contraction_tail(&param->level->contractions,
wc[clen - 1]) &&
- (cnt= my_uca_contraction_find(&scanner->level->contractions,
- wc, clen)))
+ (cnt= my_uca_contraction_hash_find(&param->level->contraction_hash,
+ wc, clen)))
{
scanner->sbeg= beg[clen - 1];
return cnt;
@@ -31604,7 +31921,6 @@ my_uca_scanner_contraction_find(my_uca_scanner *scanner, my_wc_t currwc,
/**
Find weight for contraction with previous context
- and return its weight array.
@param scanner Pointer to UCA scanner
@param wc0 Previous character
@@ -31649,12 +31965,14 @@ my_uca_previous_context_find(const MY_CONTRACTIONS *list,
@retval non null pointer - the address of MY_CONTRACTION found
*/
static inline const MY_CONTRACTION *
-my_uca_context_weight_find(my_uca_scanner *scanner, my_wc_t currwc,
+my_uca_context_weight_find(my_uca_scanner *scanner,
+ const my_uca_scanner_param *param,
+ my_wc_t currwc,
size_t max_char_length)
{
const MY_CONTRACTION *cnt;
my_wc_t prevwc;
- DBUG_ASSERT(scanner->level->contractions.nitems);
+ DBUG_ASSERT(param->level->contractions.nitems);
/*
If we have scanned a character which can have previous context,
and there were some more characters already before,
@@ -31664,23 +31982,24 @@ my_uca_context_weight_find(my_uca_scanner *scanner, my_wc_t currwc,
Note, we support only 2-character long sequences with previous
context at the moment. CLDR does not have longer sequences.
*/
- if (my_uca_can_be_previous_context_tail(&scanner->level->contractions,
+ if (my_uca_can_be_previous_context_tail(&param->level->contractions,
currwc) &&
scanner->wbeg != nochar && /* if not the very first character */
- my_uca_can_be_previous_context_head(&scanner->level->contractions,
+ my_uca_can_be_previous_context_head(&param->level->contractions,
(prevwc= ((scanner->page << 8) +
scanner->code))) &&
- (cnt= my_uca_previous_context_find(&scanner->level->contractions,
+ (cnt= my_uca_previous_context_find(&param->level->contractions,
prevwc, currwc)))
{
scanner->page= scanner->code= 0; /* Clear for the next character */
return cnt;
}
- else if (my_uca_can_be_contraction_head(&scanner->level->contractions,
+ else if (my_uca_can_be_contraction_head(&param->level->contractions,
currwc))
{
- /* Check if currwc starts a contraction */
- if ((cnt= my_uca_scanner_contraction_find(scanner, currwc, max_char_length)))
+ /* Check if w[0] starts a contraction */
+ if ((cnt= my_uca_scanner_contraction_hash_find(scanner, param, currwc,
+ max_char_length)))
return cnt;
}
return NULL;
@@ -31689,62 +32008,14 @@ my_uca_context_weight_find(my_uca_scanner *scanner, my_wc_t currwc,
/****************************************************************/
-/**
- Implicit weights for a code CP are constructed as follows:
- [.AAAA.0020.0002][.BBBB.0000.0000]
-
- where:
- AAAA= BASE + (CP >> 15);
- BBBB= (CP & 0x7FFF) | 0x8000;
-
- There are two weights in the primary level (AAAA followed by BBBB).
- There is one weight on other levels:
- - 0020 on the secondary level
- - 0002 on the tertiary level
-*/
-
-
-/**
- Return BASE for an implicit weight on the primary level
-
- According to UCA, BASE is calculated as follows:
- - FB40 for Unified_Ideograph=True AND
- ((Block=CJK_Unified_Ideograph) OR
- (Block=CJK_Compatibility_Ideographs))
- - FB80 for Unified_Ideograph=True AND NOT
- ((Block=CJK_Unified_Ideograph) OR
- (Block=CJK_Compatibility_Ideographs))
- - FBC0 for any other code point
- TODO: it seems we're not handling BASE correctly:
- - check what are those blocks
- - there are more Unified Ideograph blocks in the latest Unicode versions
-*/
-static inline uint16
-my_uca_implicit_weight_base(my_wc_t code)
-{
- if (code >= 0x3400 && code <= 0x4DB5)
- return 0xFB80;
- if (code >= 0x4E00 && code <= 0x9FA5)
- return 0xFB40;
- return 0xFBC0;
-}
-
-
static inline void
-my_uca_implicit_weight_put(uint16 *to, my_wc_t code, uint level)
+my_uca_implicit_weight_put(uint16 *to, const MY_UCA_INFO *src_uca,
+ my_wc_t code, uint level)
{
- switch (level) {
- case 1: to[0]= 0x0020; to[1]= 0; break; /* Secondary level */
- case 2: to[0]= 0x0002; to[1]= 0; break; /* Tertiary level */
- case 3: to[0]= 0x0001; to[1]= 0; break; /* Quaternary level */
- default:
- DBUG_ASSERT(0);
- case 0:
- break;
- }
- /* Primary level */
- to[0]= (uint16)(code >> 15) + my_uca_implicit_weight_base(code);
- to[1]= (code & 0x7FFF) | 0x8000;
+ MY_UCA_IMPLICIT_WEIGHT weight;
+ weight= my_uca_implicit_weight_on_level(src_uca->version, code, level);
+ to[0]= weight.weight[0];
+ to[1]= weight.weight[1];
to[2]= 0;
}
@@ -31763,26 +32034,30 @@ my_uca_implicit_weight_put(uint16 *to, my_wc_t code, uint level)
*/
static inline int
-my_uca_scanner_next_implicit_primary(my_uca_scanner *scanner)
+my_uca_scanner_next_implicit_primary(my_uca_scanner *scanner,
+ const my_uca_scanner_param *param)
{
my_wc_t wc= (scanner->page << 8) + scanner->code;
- scanner->implicit[0]= (wc & 0x7FFF) | 0x8000; /* The second weight */
- scanner->implicit[1]= 0; /* 0 terminator */
+ uint version= param->cs->uca->version;
+ MY_UCA_IMPLICIT_WEIGHT weight= my_uca_implicit_weight_primary(version, wc);
+ scanner->implicit[0]= weight.weight[1]; /* The second weight */
+ scanner->implicit[1]= 0; /* 0 terminator */
scanner->wbeg= scanner->implicit;
- return my_uca_implicit_weight_base(wc) + (wc >> 15);
+ return weight.weight[0]; /* The first weight */
}
/**
Return an implicit weight for the current level
- (according to scanner->level->levelno).
+ (according to param->level->levelno).
*/
static inline int
-my_uca_scanner_next_implicit(my_uca_scanner *scanner)
+my_uca_scanner_next_implicit(my_uca_scanner *scanner,
+ const my_uca_scanner_param *param)
{
- switch (scanner->level->levelno) {
- case 0: return my_uca_scanner_next_implicit_primary(scanner);/* Primary level*/
+ switch (param->level->levelno) {
+ case 0: return my_uca_scanner_next_implicit_primary(scanner, param);/* Primary level*/
case 1: scanner->wbeg= nochar; return 0x0020; /* Secondary level */
case 2: scanner->wbeg= nochar; return 0x0002; /* Tertiary level */
default: scanner->wbeg= nochar; break;
@@ -31791,21 +32066,28 @@ my_uca_scanner_next_implicit(my_uca_scanner *scanner)
return 0;
}
+
+static void
+my_uca_scanner_param_init(my_uca_scanner_param *param,
+ CHARSET_INFO *cs,
+ const MY_UCA_WEIGHT_LEVEL *level)
+{
+ param->cs= cs;
+ param->level= level;
+}
+
+
/*
The same two functions for any character set
*/
static void
my_uca_scanner_init_any(my_uca_scanner *scanner,
- CHARSET_INFO *cs,
- const MY_UCA_WEIGHT_LEVEL *level,
const uchar *str, size_t length)
{
/* Note, no needs to initialize scanner->wbeg */
scanner->sbeg= str;
scanner->send= str + length;
scanner->wbeg= nochar;
- scanner->level= level;
- scanner->cs= cs;
}
@@ -31871,8 +32153,10 @@ my_strnxfrm_uca_pad(uchar *dst, uchar *de, int weight)
*/
static uint min_weight_on_level(MY_UCA_WEIGHT_LEVEL *level)
{
- DBUG_ASSERT(level->levelno < 2); /* No 3-level NOPAD collations yet */
- return level->levelno == 0 ? 0x0200 : 0x0020;
+ DBUG_ASSERT(level->levelno < 3); /* No 4-level NOPAD collations yet */
+ return level->levelno == 0 ? 0x0200 :
+ level->levelno == 1 ? 0x0020 :
+ 0x0002;
}
@@ -31915,15 +32199,13 @@ static int my_uca_charcmp_onelevel(CHARSET_INFO *cs, my_wc_t wc1,
static int my_uca_charcmp(CHARSET_INFO *cs, my_wc_t wc1, my_wc_t wc2)
{
- uint num_level= cs->levels_for_order;
- int ret;
- uint i;
- for (i= 0; i != num_level; i++)
+ uint i, level_flags= cs->levels_for_order;
+ for (i= 0; level_flags; i++, level_flags>>= 1)
{
- ret= my_uca_charcmp_onelevel(cs, wc1, wc2, i);
- if (ret) {
+ int ret;
+ if ((level_flags & 1) &&
+ (ret= my_uca_charcmp_onelevel(cs, wc1, wc2, i)))
return ret;
- }
}
return 0;
}
@@ -32087,10 +32369,11 @@ int my_wildcmp_uca(CHARSET_INFO *cs,
static my_bool
my_uca_collation_can_optimize_no_contractions(CHARSET_INFO *cs)
{
- uint i;
- for (i= 0; i < cs->levels_for_order ; i++)
+ uint i, level_flags= cs->levels_for_order;
+ for (i= 0; level_flags; i++, level_flags>>= 1)
{
- if (my_uca_have_contractions_quick(&cs->uca->level[i]))
+ if ((level_flags & 1) &&
+ my_uca_have_contractions_quick(&cs->uca->level[i]))
return FALSE;
}
return TRUE;
@@ -32556,7 +32839,7 @@ typedef struct my_coll_rules_st
{
uint version; /* Unicode version, e.g. 400 or 520 */
uint strength; /* Number of levels */
- MY_UCA_INFO *uca; /* Unicode weight data */
+ const MY_UCA_INFO *uca; /* Unicode weight data */
size_t nrules; /* Number of rules in the rule array */
size_t mrules; /* Number of allocated rules */
MY_COLL_RULE *rule; /* Rule array */
@@ -32829,6 +33112,11 @@ my_coll_parser_scan_setting(MY_COLL_RULE_PARSER *p)
rules->version= 520;
rules->uca= &my_uca_v520;
}
+ else if (!lex_cmp(lexem, C_STRING_WITH_LEN("[version 14.0.0]")))
+ {
+ rules->version= 1400;
+ rules->uca= &my_uca_v1400;
+ }
else if (!lex_cmp(lexem, C_STRING_WITH_LEN("[shift-after-method expand]")))
{
rules->shift_after_method= my_shift_method_expand;
@@ -33246,8 +33534,8 @@ my_coll_rule_parse(MY_COLL_RULES *rules,
Copies UCA weights for a given "uint" string
to the given location.
+ @dst destination UCA weight level data
@src_uca source UCA weight data
- @dst_uca destination UCA weight data
@to destination address
@to_length size of destination
@nweights OUT number of weights put to "to"
@@ -33259,6 +33547,7 @@ my_coll_rule_parse(MY_COLL_RULES *rules,
static my_bool
my_char_weight_put(MY_UCA_WEIGHT_LEVEL *dst,
+ const MY_UCA_INFO *src_uca,
uint16 *to, size_t to_length, size_t *nweights,
my_wc_t *str, size_t len)
{
@@ -33296,7 +33585,7 @@ my_char_weight_put(MY_UCA_WEIGHT_LEVEL *dst,
if (!from)
{
from= implicit_weights;
- my_uca_implicit_weight_put(implicit_weights, *str, dst->levelno);
+ my_uca_implicit_weight_put(implicit_weights, src_uca, *str, dst->levelno);
}
str++;
len--;
@@ -33353,6 +33642,7 @@ my_uca_copy_page(MY_CHARSET_LOADER *loader,
static my_bool
my_uca_generate_implicit_page(MY_CHARSET_LOADER *loader,
MY_UCA_WEIGHT_LEVEL *dst,
+ const MY_UCA_INFO *src_uca,
uint page)
{
uint chc, size= 256 * dst->lengths[page] * sizeof(uint16);
@@ -33363,7 +33653,7 @@ my_uca_generate_implicit_page(MY_CHARSET_LOADER *loader,
for (chc= 0 ; chc < 256; chc++)
{
uint16 *w= dst->weights[page] + chc * dst->lengths[page];
- my_uca_implicit_weight_put(w, (page << 8) + chc, dst->levelno);
+ my_uca_implicit_weight_put(w, src_uca, (page << 8) + chc, dst->levelno);
}
return FALSE;
}
@@ -33464,7 +33754,7 @@ my_charset_loader_error_for_rule(MY_CHARSET_LOADER *loader,
*/
static uint16 *
my_uca_init_one_contraction(MY_CONTRACTIONS *contractions,
- my_wc_t *str, uint length, my_bool with_context)
+ my_wc_t *str, size_t length, my_bool with_context)
{
int flag;
uint i;
@@ -33539,10 +33829,10 @@ apply_one_rule(MY_CHARSET_LOADER *loader,
{
MY_CONTRACTIONS *contractions= &dst->contractions;
to= my_uca_init_one_contraction(contractions,
- r->curr, (uint)nshift, r->with_context);
+ r->curr, nshift, r->with_context);
/* Store weights of the "reset to" character */
dst->contractions.nitems--; /* Temporarily hide - it's incomplete */
- rc= my_char_weight_put(dst,
+ rc= my_char_weight_put(dst, rules->uca,
to, MY_UCA_CONTRACTION_MAX_WEIGHT_SIZE, &nweights,
r->base, nreset);
dst->contractions.nitems++; /* Activate, now it's complete */
@@ -33553,7 +33843,8 @@ apply_one_rule(MY_CHARSET_LOADER *loader,
DBUG_ASSERT(dst->weights[pagec]);
to= my_char_weight_addr(dst, r->curr[0]);
/* Store weights of the "reset to" character */
- rc= my_char_weight_put(dst, to, dst->lengths[pagec], &nweights, r->base, nreset);
+ rc= my_char_weight_put(dst, rules->uca,
+ to, dst->lengths[pagec], &nweights, r->base, nreset);
}
if (rc)
{
@@ -33622,7 +33913,9 @@ static uint my_weight_size_on_page(const MY_UCA_WEIGHT_LEVEL *src, uint page)
*/
static my_bool
my_uca_generate_page(MY_CHARSET_LOADER *loader,
- MY_UCA_WEIGHT_LEVEL *dst, const MY_UCA_WEIGHT_LEVEL *src,
+ MY_UCA_WEIGHT_LEVEL *dst,
+ const MY_UCA_INFO *src_uca,
+ const MY_UCA_WEIGHT_LEVEL *src,
uint pageno)
{
DBUG_ASSERT(dst->levelno == src->levelno);
@@ -33637,7 +33930,7 @@ my_uca_generate_page(MY_CHARSET_LOADER *loader,
Generate default weights for all characters on this page
algorithmically now, at initialization time.
*/
- my_uca_generate_implicit_page(loader, dst, pageno);
+ my_uca_generate_implicit_page(loader, dst, src_uca, pageno);
}
@@ -33648,6 +33941,7 @@ my_uca_generate_page(MY_CHARSET_LOADER *loader,
static my_bool
my_uca_generate_pages(MY_CHARSET_LOADER *loader,
MY_UCA_WEIGHT_LEVEL *dst,
+ const MY_UCA_INFO *src_uca,
const MY_UCA_WEIGHT_LEVEL *src,
uint npages)
{
@@ -33672,15 +33966,529 @@ my_uca_generate_pages(MY_CHARSET_LOADER *loader,
}
/* Found a page with some special rules. */
- if (my_uca_generate_page(loader, dst, src, page))
+ if (my_uca_generate_page(loader, dst, src_uca, src, page))
return TRUE;
}
return FALSE;
}
+static size_t
+my_uca_weight_cpy(uint16 *dst, const uint16 *src)
+{
+ const uint16 *src0= src;
+ for ( ; ; dst++, src++ )
+ {
+ *dst= *src;
+ if (!dst[0])
+ break;
+ }
+ return src - src0;
+}
+
+
+/*
+ The value 0xFFFF does not exist in UCA weights.
+ Let's use it to mark byte pairs that have complex
+ mapping.
+*/
+#define MY_UCA_2BYTES_NOT_APPLICABLE 0xFFFF
+
+
+static inline my_bool
+my_uca_2bytes_item_is_applicable(const MY_UCA_2BYTES_ITEM *w2)
+{
+ return w2->weight[1] != MY_UCA_2BYTES_NOT_APPLICABLE;
+}
+
+
+static void
+my_uca_2bytes_item_set_not_applicable(MY_UCA_2BYTES_ITEM *dst)
+{
+ dst->weight[0]= 0;
+ dst->weight[1]= MY_UCA_2BYTES_NOT_APPLICABLE;
+}
+
+
+/* Calculate the length of a 0-terminated weight string */
+static inline size_t
+my_uca_weight_length(const uint16 *str)
+{
+ uint res;
+ for (res= 0; str[res] ; res++)
+ { }
+ return res;
+}
+
+
+/*
+ Copy a 0-terminated weight string if it fits,
+ otherwise mark the byte pair as not applicable for optimization.
+*/
+static void
+my_uca_2bytes_item_weight_cpy(MY_UCA_2BYTES_ITEM *dst, const uint16 *src)
+{
+ size_t wlen= my_uca_weight_length(src);
+ if (wlen + 1 > array_elements(dst->weight))
+ my_uca_2bytes_item_set_not_applicable(dst);
+ else
+ my_uca_weight_cpy(dst->weight, src);
+}
+
+
+/*
+ Concatenate two 0-terminated weight strings if they fit together,
+ otherwise mark the byte pair as not applicable for optimization.
+*/
+static void
+my_uca_2bytes_item_weight_cpy2(MY_UCA_2BYTES_ITEM *dst,
+ const uint16 *wa,
+ const uint16 *wb)
+{
+ size_t la= my_uca_weight_length(wa);
+ size_t lb= my_uca_weight_length(wb);
+ if (la + lb + 1 > array_elements(dst->weight))
+ {
+ my_uca_2bytes_item_set_not_applicable(dst);
+ }
+ else
+ {
+ my_uca_weight_cpy(dst->weight, wa);
+ my_uca_weight_cpy(dst->weight + la, wb);
+ }
+}
+
+
+/*
+ Contatenate weights of two ASCII characters if they fit together,
+ otherwise mark the byte pair as not applicable for optimization.
+*/
+static void
+my_uca_2bytes_item_set_ascii2(MY_UCA_2BYTES_ITEM *dst,
+ const MY_UCA_WEIGHT_LEVEL *level,
+ uchar a, uchar b)
+{
+ const uint16 *wa= level->weights[0] + (uint) a * level->lengths[0];
+ const uint16 *wb= level->weights[0] + (uint) b * level->lengths[0];
+ my_uca_2bytes_item_weight_cpy2(dst, wa, wb);
+}
+
+
+/*
+ Check if two bytes make a well-formed 2-byte character.
+ Copy its weight if it fits.
+ If the two bytes do not make a well-formed 2-byte character,
+ or the weight of a valid 2-byte character is too long, then
+ mark this byte pair as not applicable for optimization.
+*/
+static void
+my_uca_2bytes_item_set_non_ascii2(MY_UCA_2BYTES_ITEM *dst,
+ const MY_UCA_WEIGHT_LEVEL *level,
+ CHARSET_INFO *cs,
+ uchar a, uchar b)
+{
+ uchar ch[2]= {a, b};
+ my_wc_t wc;
+ int rc= my_ci_mb_wc(cs, &wc, &ch[0], &ch[2]);
+ if (rc == 2)
+ {
+ /* Byte sequence 'ab' make one valid 2-byte character */
+ uint pageno= wc>>8;
+ const uint16 *w= level->weights[pageno] + (wc & 0xFF) * level->lengths[pageno];
+ my_uca_2bytes_item_weight_cpy(dst, w);
+ }
+ else
+ {
+ my_uca_2bytes_item_set_not_applicable(dst);
+ }
+}
+
+
+static inline MY_UCA_2BYTES_ITEM *
+my_uca_level_booster_2bytes_item_addr(MY_UCA_LEVEL_BOOSTER *booster,
+ uchar a, uchar b)
+{
+ size_t w2offs= a * 256 + b;
+ return &booster->weight_strings_2bytes[w2offs];
+}
+
+
+static inline const MY_UCA_2BYTES_ITEM *
+my_uca_level_booster_2bytes_item_addr_const(const MY_UCA_LEVEL_BOOSTER *booster,
+ uchar a, uchar b)
+{
+ size_t w2offs= a * 256 + b;
+ return &booster->weight_strings_2bytes[w2offs];
+}
+
+
+static inline const MY_UCA_WEIGHT2 *
+my_uca_level_booster_simple_weight2_addr_const(
+ const MY_UCA_LEVEL_BOOSTER *booster,
+ uchar a, uchar b)
+{
+ uint offs= (uint) a * 256 + b;
+ return &booster->weight_strings_2bytes_to_1_or_2_weights[offs];
+}
+
+
+static void
+my_uca_level_booster_2bytes_disable2(MY_UCA_LEVEL_BOOSTER *booster,
+ uchar a, uchar b)
+{
+ MY_UCA_2BYTES_ITEM *dst= my_uca_level_booster_2bytes_item_addr(booster, a, b);
+ my_uca_2bytes_item_set_not_applicable(dst);
+}
+
+
+static void
+my_uca_level_booster_2bytes_disable_if_2byte_mb(MY_UCA_LEVEL_BOOSTER *booster,
+ CHARSET_INFO *cs,
+ my_wc_t wc)
+{
+ uchar tmp[MY_CS_MBMAXLEN];
+ int rc= my_ci_wc_mb(cs, wc, tmp, tmp + sizeof(tmp));
+ if (rc == 2)
+ my_uca_level_booster_2bytes_disable2(booster, tmp[0], tmp[1]);
+}
+
+
+static inline void
+my_uca_level_booster_2bytes_set_not_applicable_by_tail(
+ MY_UCA_LEVEL_BOOSTER *booster,
+ uchar tail)
+{
+ uint head;
+ for (head= 0; head < 256; head++)
+ my_uca_level_booster_2bytes_disable2(booster, (uchar) head, tail);
+}
+
+
+/*
+ Mark all byte pairs whose weight depend on the surrounding context
+ because of the given true contraction.
+*/
+static void
+my_uca_level_booster_2bytes_disable_contraction(MY_UCA_LEVEL_BOOSTER *booster,
+ const MY_CONTRACTION *c,
+ CHARSET_INFO *cs)
+{
+ /* Previous context sequences are handled by a separate routine */
+ DBUG_ASSERT(!c->with_context);
+
+ if (c->ch[0] < 0x80)
+ {
+ /*
+ 2-byte pairs that end with an ASCII contraction head.
+ ...xAB...
+ Suppose AB is a contraction where A is an ASCII character.
+ Disable byte pairs xA (for all x=0x00..0xFF).
+ */
+ my_uca_level_booster_2bytes_set_not_applicable_by_tail(booster,
+ (uchar) c->ch[0]);
+
+ /*
+ Disable 2-byte ASCII combinations that start
+ 3-character (or longer) contractions.
+ */
+ if (c->ch[1] < 0x80 && c->ch[2] != 0)
+ {
+ /*
+ A 3+ character contraction that starts with two ASCII characters:
+ ...ABx...
+ */
+ my_uca_level_booster_2bytes_disable2(booster,
+ (uchar) c->ch[0],
+ (uchar) c->ch[1]);
+ }
+ }
+ else
+ {
+ /*
+ Disable 2-byte characters that start contractions:
+ ...[Aa][B]... MB + ASCII
+ ...[Aa][Bb].. MB + MB2
+ ...[Aa][Bbb].. MB + MB3
+ ...[Aa][Bbbb].. MB + MB4
+ The weight of the character [Aa] depends on what goes after it.
+ */
+ my_uca_level_booster_2bytes_disable_if_2byte_mb(booster, cs, c->ch[0]);
+ }
+}
+
+
+/*
+ Mark all byte pairs whose weight depend on the surrounding context
+ because of the given previous context sequence.
+*/
+static void
+my_uca_level_booster_2bytes_disable_previous_context(
+ MY_UCA_LEVEL_BOOSTER *booster,
+ const MY_CONTRACTION *c,
+ CHARSET_INFO *cs)
+{
+ /* True contractions are handled by a separate routine */
+ DBUG_ASSERT(c->with_context);
+
+ if (c->ch[0] < 0x80 && c->ch[1] < 0x80)
+ {
+ DBUG_ASSERT(c->ch[2] == 0);
+ if (c->ch[2] == 0)
+ {
+ /*
+ A previous context pair with exactly two ASCII characters:
+ ...AB...
+ "A" is a look-behind character (the context).
+ "B" is a character that we need to generate a weight for.
+ The underlying code does not support handling these character
+ in a single shot yet. It works as follows at the moment:
+ - A is scanned separately from B and generates its independent weight.
+ - B is scanned separately on the next step and and generates its
+ context dependent weight (by looking behind).
+ */
+ my_uca_level_booster_2bytes_disable2(booster,
+ (uchar) c->ch[0],
+ (uchar) c->ch[1]);
+ }
+ }
+ else
+ {
+ /*
+ Disable 2-byte characters that start pairs with a previous context:
+ ...[Aa][B]... MB + ASCII
+ ...[Aa][Bb].. MB + MB
+ These characters can be actually scanned in a single shot,
+ but the relevant code in scanner_next() assumes previous context
+ head characters are ASCII only, so it sets the previous
+ character simply as sbeg[1].
+ */
+ my_uca_level_booster_2bytes_disable_if_2byte_mb(booster, cs, c->ch[0]);
+ }
+}
+
+
+/*
+ Set the weight of a 2-byte sequence,
+ or mark the sequence as not applicable for optimization.
+*/
+static void
+my_uca_2bytes_item_set_pair(MY_UCA_2BYTES_ITEM *dst,
+ const MY_UCA_WEIGHT_LEVEL *level,
+ CHARSET_INFO *cs,
+ uchar a, uchar b)
+{
+ if (a < 0x80 && b < 0x80)
+ my_uca_2bytes_item_set_ascii2(dst, level, a, b);
+ else
+ my_uca_2bytes_item_set_non_ascii2(dst, level, cs, a, b);
+}
+
+
+/*
+ For every byte pair [00..FF][00..FF] set its weight,
+ or mark it as not applicable for optimization.
+*/
+static void
+my_uca_level_booster_2bytes_populate_pairs(MY_UCA_LEVEL_BOOSTER *booster,
+ const MY_UCA_WEIGHT_LEVEL *level,
+ CHARSET_INFO *cs)
+{
+ uint a, b;
+ for (a= 0; a < 256; a++)
+ {
+ for (b= 0; b < 256; b++)
+ {
+ MY_UCA_2BYTES_ITEM *dst;
+ dst= my_uca_level_booster_2bytes_item_addr(booster, (uchar) a, (uchar) b);
+ my_uca_2bytes_item_set_pair(dst, level, cs, (uchar) a, (uchar) b);
+ }
+ }
+}
+
+
+/*
+ Populate contractions consisting of two ASCII letters.
+ Only true contractions are handled here so far.
+ Previous context pairs are handled separately.
+*/
+static void
+my_uca_level_booster_2bytes_pupulate_ascii2_contractions(
+ MY_UCA_LEVEL_BOOSTER *booster,
+ const MY_CONTRACTIONS *list)
+{
+ size_t i;
+ for (i= 0; i < list->nitems; i++)
+ {
+ const MY_CONTRACTION *c= &list->item[i];
+ if (c->ch[0] < 0x80 && c->ch[1] < 0x80 && c->ch[2] == 0 &&
+ !c->with_context)
+ {
+ MY_UCA_2BYTES_ITEM *dst;
+ dst= my_uca_level_booster_2bytes_item_addr(booster,
+ (uchar) c->ch[0],
+ (uchar) c->ch[1]);
+ my_uca_2bytes_item_weight_cpy(dst, c->weight);
+ }
+ }
+}
+
+
+/*
+ Mark all byte pairs whose weight depend on the context
+ (because of contractions and previous context sequences)
+ as not applicable for optimization.
+*/
+static void
+my_uca_level_booster_2bytes_disable_context_dependent(
+ MY_UCA_LEVEL_BOOSTER *booster,
+ const MY_CONTRACTIONS *list,
+ CHARSET_INFO *cs)
+{
+ size_t i;
+ for (i= 0; i < list->nitems; i++)
+ {
+ const MY_CONTRACTION *c= &list->item[i];
+ if (c->with_context)
+ my_uca_level_booster_2bytes_disable_previous_context(booster, c, cs);
+ else
+ my_uca_level_booster_2bytes_disable_contraction(booster, c, cs);
+ }
+}
+
+
+/*
+ Populate the array of MY_UCA_WEIGHT2 for all possible byte pairs {a,b}
+ as follows:
+
+ Number of characters Number of weights WEIGHT2
+ -------------------- ----------------- ------
+ 2 (two ASCII chars) 0 (both ignorable) {0,0} [IGN]
+ 2 (two ASCII chars) 1 (e.g. Czech "ch") {X,0}
+ 2 (two ASCII chars) 1 (e.g. ignorable + non-ignorable) {X,0}
+ 2 (two ASCII chars) 2 (two ASCII chars, one weigth each) {X,0}
+ 2 (two ASCII chars) 3+ (contraction with a long expansion) {0,0} [E3]
+ 1 (one 2-byte char) 0 (ignorable) {0,0} [IGN]
+ 1 (one 2-byte char) 1 {X,0}
+ 1 (one 2-byte char) 2 (short expansion, e.g. German SZ) {X,Y}
+ 1 (one 2-byte char) 3+ (long expansion) {0,0} [E3]
+ 0 (incomplete 3/4-byte char) {0,0} [INC]
+
+ All byte pairs that depend on the context (e.g. contraction parts)
+ and that were previously marked as such by
+ my_uca_level_booster_2bytes_disable_context_dependent()
+ set WEIGHT2 to {0,0} [CTX].
+
+ After the initialization, the array contains non-zero weights for
+ the most typical simple cases of mapping from 2-bytes to weights,
+ so inside strnncoll*() we can skip equal string prefixes much faster,
+ using a cheaper simpler code.
+*/
+static void
+my_uca_level_booster_weight2_populate(MY_UCA_LEVEL_BOOSTER *booster)
+{
+ size_t i;
+ for (i= 0; i < 0x10000; i++)
+ {
+ MY_UCA_WEIGHT2 *dst= &booster->weight_strings_2bytes_to_1_or_2_weights[i];
+ MY_UCA_2BYTES_ITEM *src= &booster->weight_strings_2bytes[i];
+ if (src->weight[0] && (!src->weight[1] || !src->weight[2]))
+ {
+ /*
+ Simplest mapping:
+ - Two ASCII characters make one or two weights
+ - One 2-byte character makes one or two weights
+ Handled by the simpler loop at the comparison time.
+ */
+ dst->weight[0]= src->weight[0];
+ dst->weight[1]= src->weight[1];
+ }
+ else
+ {
+ /*
+ More complex mapping:
+ - Ignorable - see [IGN] above
+ - More than two weights - see [E3] above
+ - Incomplete (a 3-byte or 4-byte char head) - see [INC] above
+ - Not applicable (context dependent) - see [CTX] above
+ Handled by the full-featured slower loop at the comparison time.
+ */
+ dst->weight[0]= 0;
+ dst->weight[1]= 0;
+ }
+ }
+}
+
+
+static void
+my_uca_level_booster_populate(MY_UCA_LEVEL_BOOSTER *dst,
+ const MY_UCA_WEIGHT_LEVEL *src,
+ CHARSET_INFO *cs)
+{
+ my_uca_level_booster_2bytes_populate_pairs(dst, src, cs);
+ my_uca_level_booster_2bytes_pupulate_ascii2_contractions(dst,
+ &src->contractions);
+ my_uca_level_booster_2bytes_disable_context_dependent(dst,
+ &src->contractions,
+ cs);
+ my_uca_level_booster_weight2_populate(dst);
+}
+
+
+static MY_UCA_LEVEL_BOOSTER *
+my_uca_level_booster_alloc(MY_CHARSET_LOADER *loader)
+{
+ size_t nbytes= sizeof(MY_UCA_LEVEL_BOOSTER);
+ MY_UCA_LEVEL_BOOSTER *res;
+ if (!(res= (MY_UCA_LEVEL_BOOSTER *) (loader->once_alloc)(nbytes)))
+ return NULL;
+ bzero(res, nbytes);
+ return res;
+}
+
+
+static MY_UCA_LEVEL_BOOSTER *
+my_uca_level_booster_new(MY_CHARSET_LOADER *loader,
+ CHARSET_INFO *cs,
+ MY_UCA_WEIGHT_LEVEL *level)
+{
+ MY_UCA_LEVEL_BOOSTER *res;
+ if (!(res= my_uca_level_booster_alloc(loader)))
+ return NULL;
+ my_uca_level_booster_populate(res, level, cs);
+ return res;
+}
+
+
+/*
+ Skip the simple equal prefix of two string using
+ "One or two bytes produce one or two weights" optimization.
+ Return the prefix length.
+*/
+static size_t
+my_uca_level_booster_equal_prefix_length(const MY_UCA_LEVEL_BOOSTER *booster,
+ const uchar *s, size_t slen,
+ const uchar *t, size_t tlen)
+{
+ const uchar *s0= s;
+ size_t simple_count= MY_MIN(slen, tlen) >> 1;
+ for ( ; simple_count; s+= 2, t+= 2, simple_count--)
+ {
+ const MY_UCA_WEIGHT2 *ws, *wt;
+ ws= my_uca_level_booster_simple_weight2_addr_const(booster, s[0], s[1]);
+ wt= my_uca_level_booster_simple_weight2_addr_const(booster, t[0], t[1]);
+ if (ws->weight[0] &&
+ ws->weight[0] == wt->weight[0] &&
+ ws->weight[1] == wt->weight[1])
+ continue;
+ break;
+ }
+ return s - s0;
+}
+
+
static my_bool
-init_weight_level(MY_CHARSET_LOADER *loader, MY_COLL_RULES *rules,
+init_weight_level(MY_CHARSET_LOADER *loader, CHARSET_INFO *cs,
+ MY_COLL_RULES *rules,
MY_UCA_WEIGHT_LEVEL *dst, const MY_UCA_WEIGHT_LEVEL *src)
{
MY_COLL_RULE *r, *rlast;
@@ -33738,7 +34546,7 @@ init_weight_level(MY_CHARSET_LOADER *loader, MY_COLL_RULES *rules,
ncontractions += (int)src->contractions.nitems;
- if ((my_uca_generate_pages(loader, dst, src, (uint)npages)))
+ if ((my_uca_generate_pages(loader, dst, rules->uca, src, (uint)npages)))
return TRUE;
if (ncontractions)
@@ -33767,17 +34575,29 @@ init_weight_level(MY_CHARSET_LOADER *loader, MY_COLL_RULES *rules,
for (i= 0; i != src->contractions.nitems; i++)
{
MY_CONTRACTION *item= &src->contractions.item[i];
- /*
- TODO: calculate length from item->ch.
- Generally contractions can consist of more than 2 characters.
- */
- uint length= 2;
+ size_t length= my_wstrnlen(item->ch, array_elements(item->ch));
uint16 *weights= my_uca_init_one_contraction(&dst->contractions,
item->ch, length,
item->with_context);
- memcpy(weights, item->weight, length * sizeof(uint16));
- weights[length]= 0;
+ memcpy(weights, item->weight, sizeof(item->weight));
+ }
+
+ if (ncontractions)
+ {
+ if (ncontractions > MY_UCA_CONTRACTION_HASH_ALLOC_ELEMENTS ||
+ my_uca_contraction_hash_allocate(&dst->contraction_hash, loader) ||
+ my_uca_contraction_hash_populate(&dst->contraction_hash,
+ &dst->contractions))
+ {
+ my_snprintf(loader->error, sizeof(loader->error),
+ "Can't initialize %d contractions", (int) ncontractions);
+ return TRUE;
+ }
}
+
+ if (cs->mbminlen == 1)
+ dst->booster= my_uca_level_booster_new(loader, cs, dst);
+
return FALSE;
}
@@ -33805,7 +34625,8 @@ static size_t my_strnxfrmlen_any_uca(CHARSET_INFO *cs, size_t len)
static size_t my_strnxfrmlen_any_uca_multilevel(CHARSET_INFO *cs, size_t len)
{
- return my_strnxfrmlen_any_uca(cs, len) * cs->levels_for_order;
+ return my_strnxfrmlen_any_uca(cs, len) *
+ my_count_bits_uint32(cs->levels_for_order);
}
@@ -33844,7 +34665,7 @@ static void my_uca_handler_map(struct charset_info_st *cs,
instead of generic.
*/
#define MY_FUNCTION_NAME(x) my_uca_ ## x ## _generic
-#define MY_MB_WC(scanner, wc, beg, end) (my_ci_mb_wc(scanner->cs, wc, beg, end))
+#define MY_MB_WC(scanner, param, wc, beg, end) (my_ci_mb_wc(param->cs, wc, beg, end))
#define MY_LIKE_RANGE my_like_range_generic
#define MY_UCA_ASCII_OPTIMIZE 0
#define MY_UCA_COMPILE_CONTRACTIONS 1
@@ -33852,6 +34673,52 @@ static void my_uca_handler_map(struct charset_info_st *cs,
#include "ctype-uca.inl"
+
+static my_bool
+my_uca_init_levels(MY_CHARSET_LOADER *loader, MY_UCA_INFO *dst,
+ MY_COLL_RULES *rules,
+ CHARSET_INFO *cs,
+ const MY_UCA_INFO *src, uint level_flags)
+{
+ uint i;
+ for (i= 0;
+ level_flags;
+ i++, level_flags>>= 1)
+ {
+ if (!(level_flags & 1))
+ continue;
+ if (src->level[i].maxchar == 0)
+ {
+ my_snprintf(loader->error, sizeof(loader->error) - 1,
+ "%s: no level #%d data for this Unicode version.",
+ cs->coll_name.str, i + 1);
+ return TRUE;
+ }
+ if (init_weight_level(loader, cs, rules,
+ &dst->level[i], &src->level[i]))
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+static my_bool
+my_uca_info_init(MY_CHARSET_LOADER *loader,
+ MY_UCA_INFO *dst_uca,
+ MY_COLL_RULES *rules,
+ CHARSET_INFO *cs,
+ const MY_UCA_INFO *src_uca,
+ uint level_flags)
+{
+ /* Copy logical positions, version. */
+ *dst_uca= *src_uca;
+ /* But don't copy levels. */
+ bzero(&dst_uca->level, sizeof(dst_uca->level));
+ /* Now initialize levels */
+ return my_uca_init_levels(loader, dst_uca, rules, cs, src_uca, level_flags);
+}
+
+
/*
This function copies an UCS2 collation from
the default Unicode Collation Algorithm (UCA)
@@ -33874,9 +34741,8 @@ create_tailoring(struct charset_info_st *cs,
MY_CHARSET_LOADER *loader)
{
MY_COLL_RULES rules;
- MY_UCA_INFO new_uca, *src_uca= NULL;
+ MY_UCA_INFO *src_uca= NULL;
int rc= 0;
- uint i;
*loader->error= '\0';
@@ -33886,7 +34752,6 @@ create_tailoring(struct charset_info_st *cs,
memset(&rules, 0, sizeof(rules));
rules.loader= loader;
rules.uca= cs->uca ? cs->uca : &my_uca_v400; /* For logical positions, etc */
- memset(&new_uca, 0, sizeof(new_uca));
/* Parse ICU Collation Customization expression */
if ((rc= my_coll_rule_parse(&rules,
@@ -33899,6 +34764,11 @@ create_tailoring(struct charset_info_st *cs,
src_uca= &my_uca_v520;
cs->caseinfo= &my_unicase_unicode520;
}
+ else if (rules.version == 1400) /* Unicode-14.0.0 */
+ {
+ src_uca= &my_uca_v1400;
+ cs->caseinfo= &my_unicase_unicode520;
+ }
else if (rules.version == 400) /* Unicode-4.0.0 requested */
{
src_uca= &my_uca_v400;
@@ -33910,28 +34780,39 @@ create_tailoring(struct charset_info_st *cs,
if (!cs->caseinfo)
cs->caseinfo= &my_unicase_default;
}
- cs->levels_for_order= rules.strength ? rules.strength : 1;
+ if (rules.strength)
+ my_ci_set_strength(cs, rules.strength);
+ else if (!cs->levels_for_order)
+ my_ci_set_strength(cs, 1);
- for (i= 0; i != cs->levels_for_order; i++)
+
+ if (my_collation_id_is_uca1400(cs->number))
{
- if ((rc= (src_uca->level[i].maxchar == 0)))
+ /*
+ UCA1400 collations with equal character set and tailoring
+ (but with different level flags) share the same MY_UCA_INFO.
+ */
+ my_cs_encoding_t enc= my_uca1400_collation_id_to_charset_id(cs->number);
+ uint tailoring= my_uca1400_collation_id_to_tailoring_id(cs->number);
+ MY_UCA_INFO *dst_uca= &my_uca1400_info_tailored[enc][tailoring];
+ if (!dst_uca->level[0].weights &&
+ (rc= my_uca_info_init(loader, dst_uca, &rules, cs, src_uca,
+ (1<<MY_UCA_WEIGHT_LEVELS)-1)))
+ goto ex;
+ cs->uca= dst_uca;
+ }
+ else
+ {
+ if (!(cs->uca= (MY_UCA_INFO *) (loader->once_alloc)(sizeof(MY_UCA_INFO))))
{
- my_snprintf(loader->error, sizeof(loader->error) - 1,
- "%s: no level #%d data for this Unicode version.",
- cs->coll_name.str, i + 1);
+ rc= 1;
goto ex;
}
- if ((rc= init_weight_level(loader, &rules,
- &new_uca.level[i], &src_uca->level[i])))
+ if ((rc= my_uca_info_init(loader, cs->uca, &rules, cs, src_uca,
+ cs->levels_for_order)))
goto ex;
}
- if (!(cs->uca= (MY_UCA_INFO *) (loader->once_alloc)(sizeof(MY_UCA_INFO))))
- {
- rc= 1;
- goto ex;
- }
- cs->uca[0]= new_uca;
if (cs->levels_for_order > 1)
cs->coll= (cs->state & MY_CS_NOPAD) ?
&my_uca_collation_handler_nopad_multilevel_generic :
@@ -33949,7 +34830,7 @@ ex:
#include "ctype-ucs2.h"
#define MY_FUNCTION_NAME(x) my_uca_ ## x ## _ucs2
-#define MY_MB_WC(scanner, wc, beg, end) (my_mb_wc_ucs2_quick(wc, beg, end))
+#define MY_MB_WC(scanner, param, wc, beg, end) (my_mb_wc_ucs2_quick(wc, beg, end))
#define MY_LIKE_RANGE my_like_range_generic
#define MY_UCA_ASCII_OPTIMIZE 0
#define MY_UCA_COMPILE_CONTRACTIONS 1
@@ -33986,7 +34867,7 @@ struct charset_info_st my_charset_ucs2_unicode_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34018,7 +34899,7 @@ struct charset_info_st my_charset_ucs2_icelandic_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34050,7 +34931,7 @@ struct charset_info_st my_charset_ucs2_latvian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34082,7 +34963,7 @@ struct charset_info_st my_charset_ucs2_romanian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34114,7 +34995,7 @@ struct charset_info_st my_charset_ucs2_slovenian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34146,7 +35027,7 @@ struct charset_info_st my_charset_ucs2_polish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34178,7 +35059,7 @@ struct charset_info_st my_charset_ucs2_estonian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34210,7 +35091,7 @@ struct charset_info_st my_charset_ucs2_spanish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34242,7 +35123,7 @@ struct charset_info_st my_charset_ucs2_swedish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34274,7 +35155,7 @@ struct charset_info_st my_charset_ucs2_turkish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34306,7 +35187,7 @@ struct charset_info_st my_charset_ucs2_czech_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34339,7 +35220,7 @@ struct charset_info_st my_charset_ucs2_danish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34371,7 +35252,7 @@ struct charset_info_st my_charset_ucs2_lithuanian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34403,7 +35284,7 @@ struct charset_info_st my_charset_ucs2_slovak_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34435,7 +35316,7 @@ struct charset_info_st my_charset_ucs2_spanish2_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34468,7 +35349,7 @@ struct charset_info_st my_charset_ucs2_roman_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34501,7 +35382,7 @@ struct charset_info_st my_charset_ucs2_persian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34534,7 +35415,7 @@ struct charset_info_st my_charset_ucs2_esperanto_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34567,7 +35448,7 @@ struct charset_info_st my_charset_ucs2_hungarian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34599,7 +35480,7 @@ struct charset_info_st my_charset_ucs2_sinhala_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34633,7 +35514,7 @@ struct charset_info_st my_charset_ucs2_german2_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34665,7 +35546,7 @@ struct charset_info_st my_charset_ucs2_croatian_mysql561_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34698,7 +35579,7 @@ struct charset_info_st my_charset_ucs2_croatian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34716,7 +35597,7 @@ struct charset_info_st my_charset_ucs2_myanmar_uca_ci=
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
- NULL, /* uca */
+ &my_uca_v520, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
&my_unicase_unicode520,/* caseinfo */
@@ -34731,7 +35612,7 @@ struct charset_info_st my_charset_ucs2_myanmar_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34764,7 +35645,7 @@ struct charset_info_st my_charset_ucs2_thai_520_w2=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 2, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S2,
&my_charset_ucs2_handler,
&my_uca_collation_handler_multilevel_ucs2
};
@@ -34796,7 +35677,7 @@ struct charset_info_st my_charset_ucs2_unicode_520_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34829,7 +35710,7 @@ struct charset_info_st my_charset_ucs2_vietnamese_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_ucs2
};
@@ -34862,7 +35743,7 @@ struct charset_info_st my_charset_ucs2_unicode_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_nopad_ucs2
};
@@ -34895,7 +35776,7 @@ struct charset_info_st my_charset_ucs2_unicode_520_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_uca_collation_handler_nopad_ucs2
};
@@ -34911,7 +35792,7 @@ my_uca_coll_init_utf8mb3(struct charset_info_st *cs, MY_CHARSET_LOADER *loader);
#include "ctype-utf8.h"
#define MY_FUNCTION_NAME(x) my_uca_ ## x ## _utf8mb3
-#define MY_MB_WC(scanner, wc, beg, end) (my_mb_wc_utf8mb3_quick(wc, beg, end))
+#define MY_MB_WC(scanner, param, wc, beg, end) (my_mb_wc_utf8mb3_quick(wc, beg, end))
#define MY_LIKE_RANGE my_like_range_mb
#define MY_UCA_ASCII_OPTIMIZE 1
#define MY_UCA_COMPILE_CONTRACTIONS 1
@@ -34919,7 +35800,7 @@ my_uca_coll_init_utf8mb3(struct charset_info_st *cs, MY_CHARSET_LOADER *loader);
#include "ctype-uca.inl"
#define MY_FUNCTION_NAME(x) my_uca_ ## x ## _no_contractions_utf8mb3
-#define MY_MB_WC(scanner, wc, beg, end) (my_mb_wc_utf8mb3_quick(wc, beg, end))
+#define MY_MB_WC(scanner, param, wc, beg, end) (my_mb_wc_utf8mb3_quick(wc, beg, end))
#define MY_LIKE_RANGE my_like_range_mb
#define MY_UCA_ASCII_OPTIMIZE 1
#define MY_UCA_COMPILE_CONTRACTIONS 0
@@ -34997,7 +35878,7 @@ struct charset_info_st my_charset_utf8mb3_unicode_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35030,7 +35911,7 @@ struct charset_info_st my_charset_utf8mb3_icelandic_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35062,7 +35943,7 @@ struct charset_info_st my_charset_utf8mb3_latvian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35094,7 +35975,7 @@ struct charset_info_st my_charset_utf8mb3_romanian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35126,7 +36007,7 @@ struct charset_info_st my_charset_utf8mb3_slovenian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35158,7 +36039,7 @@ struct charset_info_st my_charset_utf8mb3_polish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35190,7 +36071,7 @@ struct charset_info_st my_charset_utf8mb3_estonian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35222,7 +36103,7 @@ struct charset_info_st my_charset_utf8mb3_spanish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35254,7 +36135,7 @@ struct charset_info_st my_charset_utf8mb3_swedish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35286,7 +36167,7 @@ struct charset_info_st my_charset_utf8mb3_turkish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35318,7 +36199,7 @@ struct charset_info_st my_charset_utf8mb3_czech_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35351,7 +36232,7 @@ struct charset_info_st my_charset_utf8mb3_danish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35383,7 +36264,7 @@ struct charset_info_st my_charset_utf8mb3_lithuanian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35415,7 +36296,7 @@ struct charset_info_st my_charset_utf8mb3_slovak_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35447,7 +36328,7 @@ struct charset_info_st my_charset_utf8mb3_spanish2_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35479,7 +36360,7 @@ struct charset_info_st my_charset_utf8mb3_roman_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35511,7 +36392,7 @@ struct charset_info_st my_charset_utf8mb3_persian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35543,7 +36424,7 @@ struct charset_info_st my_charset_utf8mb3_esperanto_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35575,7 +36456,7 @@ struct charset_info_st my_charset_utf8mb3_hungarian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35607,7 +36488,7 @@ struct charset_info_st my_charset_utf8mb3_sinhala_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35640,7 +36521,7 @@ struct charset_info_st my_charset_utf8mb3_german2_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35672,7 +36553,7 @@ struct charset_info_st my_charset_utf8mb3_croatian_mysql561_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35705,7 +36586,7 @@ struct charset_info_st my_charset_utf8mb3_croatian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35723,7 +36604,7 @@ struct charset_info_st my_charset_utf8mb3_myanmar_uca_ci=
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
- NULL, /* uca */
+ &my_uca_v520, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
&my_unicase_unicode520,/* caseinfo */
@@ -35738,7 +36619,7 @@ struct charset_info_st my_charset_utf8mb3_myanmar_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35771,7 +36652,7 @@ struct charset_info_st my_charset_utf8mb3_unicode_520_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35803,7 +36684,7 @@ struct charset_info_st my_charset_utf8mb3_thai_520_w2=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 2, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S2,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_multilevel_utf8mb3
};
@@ -35835,7 +36716,7 @@ struct charset_info_st my_charset_utf8mb3_vietnamese_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_utf8mb3
};
@@ -35868,7 +36749,7 @@ struct charset_info_st my_charset_utf8mb3_unicode_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_nopad_utf8mb3
};
@@ -35901,7 +36782,7 @@ struct charset_info_st my_charset_utf8mb3_unicode_520_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_uca_collation_handler_nopad_utf8mb3
};
@@ -35916,7 +36797,7 @@ my_uca_coll_init_utf8mb4(struct charset_info_st *cs, MY_CHARSET_LOADER *loader);
#define MY_FUNCTION_NAME(x) my_uca_ ## x ## _utf8mb4
-#define MY_MB_WC(scanner, wc, beg, end) (my_mb_wc_utf8mb4_quick(wc, beg, end))
+#define MY_MB_WC(scanner, param, wc, beg, end) (my_mb_wc_utf8mb4_quick(wc, beg, end))
#define MY_LIKE_RANGE my_like_range_mb
#define MY_UCA_ASCII_OPTIMIZE 1
#define MY_UCA_COMPILE_CONTRACTIONS 1
@@ -35924,7 +36805,7 @@ my_uca_coll_init_utf8mb4(struct charset_info_st *cs, MY_CHARSET_LOADER *loader);
#include "ctype-uca.inl"
#define MY_FUNCTION_NAME(x) my_uca_ ## x ## _no_contractions_utf8mb4
-#define MY_MB_WC(scanner, wc, beg, end) (my_mb_wc_utf8mb4_quick(wc, beg, end))
+#define MY_MB_WC(scanner, param, wc, beg, end) (my_mb_wc_utf8mb4_quick(wc, beg, end))
#define MY_LIKE_RANGE my_like_range_mb
#define MY_UCA_ASCII_OPTIMIZE 1
#define MY_UCA_COMPILE_CONTRACTIONS 0
@@ -35976,7 +36857,7 @@ struct charset_info_st my_charset_utf8mb4_unicode_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36009,7 +36890,7 @@ struct charset_info_st my_charset_utf8mb4_icelandic_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36041,7 +36922,7 @@ struct charset_info_st my_charset_utf8mb4_latvian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36073,7 +36954,7 @@ struct charset_info_st my_charset_utf8mb4_romanian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36105,7 +36986,7 @@ struct charset_info_st my_charset_utf8mb4_slovenian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36137,7 +37018,7 @@ struct charset_info_st my_charset_utf8mb4_polish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36169,7 +37050,7 @@ struct charset_info_st my_charset_utf8mb4_estonian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36201,7 +37082,7 @@ struct charset_info_st my_charset_utf8mb4_spanish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36233,7 +37114,7 @@ struct charset_info_st my_charset_utf8mb4_swedish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36265,7 +37146,7 @@ struct charset_info_st my_charset_utf8mb4_turkish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36297,7 +37178,7 @@ struct charset_info_st my_charset_utf8mb4_czech_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36330,7 +37211,7 @@ struct charset_info_st my_charset_utf8mb4_danish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36362,7 +37243,7 @@ struct charset_info_st my_charset_utf8mb4_lithuanian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36394,7 +37275,7 @@ struct charset_info_st my_charset_utf8mb4_slovak_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36426,7 +37307,7 @@ struct charset_info_st my_charset_utf8mb4_spanish2_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36458,7 +37339,7 @@ struct charset_info_st my_charset_utf8mb4_roman_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36490,7 +37371,7 @@ struct charset_info_st my_charset_utf8mb4_persian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36522,7 +37403,7 @@ struct charset_info_st my_charset_utf8mb4_esperanto_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36554,7 +37435,7 @@ struct charset_info_st my_charset_utf8mb4_hungarian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36586,7 +37467,7 @@ struct charset_info_st my_charset_utf8mb4_sinhala_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36618,7 +37499,7 @@ struct charset_info_st my_charset_utf8mb4_german2_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36650,7 +37531,7 @@ struct charset_info_st my_charset_utf8mb4_croatian_mysql561_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36683,7 +37564,7 @@ struct charset_info_st my_charset_utf8mb4_croatian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36701,7 +37582,7 @@ struct charset_info_st my_charset_utf8mb4_myanmar_uca_ci=
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
- NULL, /* uca */
+ &my_uca_v520, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
&my_unicase_unicode520,/* caseinfo */
@@ -36716,7 +37597,7 @@ struct charset_info_st my_charset_utf8mb4_myanmar_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36748,7 +37629,7 @@ struct charset_info_st my_charset_utf8mb4_thai_520_w2=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 2, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S2,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_multilevel_utf8mb4
};
@@ -36780,7 +37661,7 @@ struct charset_info_st my_charset_utf8mb4_unicode_520_ci=
0x10FFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36813,7 +37694,7 @@ struct charset_info_st my_charset_utf8mb4_vietnamese_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_utf8mb4
};
@@ -36846,7 +37727,7 @@ struct charset_info_st my_charset_utf8mb4_unicode_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_nopad_utf8mb4
};
@@ -36879,7 +37760,7 @@ struct charset_info_st my_charset_utf8mb4_unicode_520_nopad_ci=
0x10FFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_uca_collation_handler_nopad_utf8mb4
};
@@ -36892,7 +37773,7 @@ struct charset_info_st my_charset_utf8mb4_unicode_520_nopad_ci=
#include "ctype-utf32.h"
#define MY_FUNCTION_NAME(x) my_uca_ ## x ## _utf32
-#define MY_MB_WC(scanner, wc, beg, end) (my_mb_wc_utf32_quick(wc, beg, end))
+#define MY_MB_WC(scanner, param, wc, beg, end) (my_mb_wc_utf32_quick(wc, beg, end))
#define MY_LIKE_RANGE my_like_range_generic
#define MY_UCA_ASCII_OPTIMIZE 0
#define MY_UCA_COMPILE_CONTRACTIONS 1
@@ -36931,7 +37812,7 @@ struct charset_info_st my_charset_utf32_unicode_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -36964,7 +37845,7 @@ struct charset_info_st my_charset_utf32_icelandic_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -36996,7 +37877,7 @@ struct charset_info_st my_charset_utf32_latvian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37028,7 +37909,7 @@ struct charset_info_st my_charset_utf32_romanian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37060,7 +37941,7 @@ struct charset_info_st my_charset_utf32_slovenian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37092,7 +37973,7 @@ struct charset_info_st my_charset_utf32_polish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37124,7 +38005,7 @@ struct charset_info_st my_charset_utf32_estonian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37156,7 +38037,7 @@ struct charset_info_st my_charset_utf32_spanish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37188,7 +38069,7 @@ struct charset_info_st my_charset_utf32_swedish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37220,7 +38101,7 @@ struct charset_info_st my_charset_utf32_turkish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37252,7 +38133,7 @@ struct charset_info_st my_charset_utf32_czech_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37285,7 +38166,7 @@ struct charset_info_st my_charset_utf32_danish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37317,7 +38198,7 @@ struct charset_info_st my_charset_utf32_lithuanian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37349,7 +38230,7 @@ struct charset_info_st my_charset_utf32_slovak_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37381,7 +38262,7 @@ struct charset_info_st my_charset_utf32_spanish2_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37413,7 +38294,7 @@ struct charset_info_st my_charset_utf32_roman_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37445,7 +38326,7 @@ struct charset_info_st my_charset_utf32_persian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37477,7 +38358,7 @@ struct charset_info_st my_charset_utf32_esperanto_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37509,7 +38390,7 @@ struct charset_info_st my_charset_utf32_hungarian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37541,7 +38422,7 @@ struct charset_info_st my_charset_utf32_sinhala_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37573,7 +38454,7 @@ struct charset_info_st my_charset_utf32_german2_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37605,7 +38486,7 @@ struct charset_info_st my_charset_utf32_croatian_mysql561_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37637,7 +38518,7 @@ struct charset_info_st my_charset_utf32_croatian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37655,7 +38536,7 @@ struct charset_info_st my_charset_utf32_myanmar_uca_ci=
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
- NULL, /* uca */
+ &my_uca_v520, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
&my_unicase_unicode520,/* caseinfo */
@@ -37670,7 +38551,7 @@ struct charset_info_st my_charset_utf32_myanmar_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37703,7 +38584,7 @@ struct charset_info_st my_charset_utf32_thai_520_w2=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 2, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S2,
&my_charset_utf32_handler,
&my_uca_collation_handler_multilevel_utf32
};
@@ -37736,7 +38617,7 @@ struct charset_info_st my_charset_utf32_unicode_520_ci=
0x10FFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37769,7 +38650,7 @@ struct charset_info_st my_charset_utf32_vietnamese_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_utf32
};
@@ -37802,7 +38683,7 @@ struct charset_info_st my_charset_utf32_unicode_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_nopad_utf32
};
@@ -37835,7 +38716,7 @@ struct charset_info_st my_charset_utf32_unicode_520_nopad_ci=
0x10FFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_uca_collation_handler_nopad_utf32
};
@@ -37849,7 +38730,7 @@ struct charset_info_st my_charset_utf32_unicode_520_nopad_ci=
#include "ctype-utf16.h"
#define MY_FUNCTION_NAME(x) my_uca_ ## x ## _utf16
-#define MY_MB_WC(scanner, wc, beg, end) (my_mb_wc_utf16_quick(wc, beg, end))
+#define MY_MB_WC(scanner, param, wc, beg, end) (my_mb_wc_utf16_quick(wc, beg, end))
#define MY_LIKE_RANGE my_like_range_generic
#define MY_UCA_ASCII_OPTIMIZE 0
#define MY_UCA_COMPILE_CONTRACTIONS 1
@@ -37888,7 +38769,7 @@ struct charset_info_st my_charset_utf16_unicode_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -37921,7 +38802,7 @@ struct charset_info_st my_charset_utf16_icelandic_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -37953,7 +38834,7 @@ struct charset_info_st my_charset_utf16_latvian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -37985,7 +38866,7 @@ struct charset_info_st my_charset_utf16_romanian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38017,7 +38898,7 @@ struct charset_info_st my_charset_utf16_slovenian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38049,7 +38930,7 @@ struct charset_info_st my_charset_utf16_polish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38081,7 +38962,7 @@ struct charset_info_st my_charset_utf16_estonian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38113,7 +38994,7 @@ struct charset_info_st my_charset_utf16_spanish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38145,7 +39026,7 @@ struct charset_info_st my_charset_utf16_swedish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38177,7 +39058,7 @@ struct charset_info_st my_charset_utf16_turkish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38209,7 +39090,7 @@ struct charset_info_st my_charset_utf16_czech_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38242,7 +39123,7 @@ struct charset_info_st my_charset_utf16_danish_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38274,7 +39155,7 @@ struct charset_info_st my_charset_utf16_lithuanian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38306,7 +39187,7 @@ struct charset_info_st my_charset_utf16_slovak_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38338,7 +39219,7 @@ struct charset_info_st my_charset_utf16_spanish2_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38370,7 +39251,7 @@ struct charset_info_st my_charset_utf16_roman_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38402,7 +39283,7 @@ struct charset_info_st my_charset_utf16_persian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38434,7 +39315,7 @@ struct charset_info_st my_charset_utf16_esperanto_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38466,7 +39347,7 @@ struct charset_info_st my_charset_utf16_hungarian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38498,7 +39379,7 @@ struct charset_info_st my_charset_utf16_sinhala_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38530,7 +39411,7 @@ struct charset_info_st my_charset_utf16_german2_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38563,7 +39444,7 @@ struct charset_info_st my_charset_utf16_croatian_mysql561_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38596,7 +39477,7 @@ struct charset_info_st my_charset_utf16_croatian_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38614,7 +39495,7 @@ struct charset_info_st my_charset_utf16_myanmar_uca_ci=
NULL, /* to_lower */
NULL, /* to_upper */
NULL, /* sort_order */
- NULL, /* uca */
+ &my_uca_v520, /* uca */
NULL, /* tab_to_uni */
NULL, /* tab_from_uni */
&my_unicase_unicode520,/* caseinfo */
@@ -38629,7 +39510,7 @@ struct charset_info_st my_charset_utf16_myanmar_uca_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38662,7 +39543,7 @@ struct charset_info_st my_charset_utf16_thai_520_w2=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 2, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S2,
&my_charset_utf16_handler,
&my_uca_collation_handler_multilevel_utf16
};
@@ -38695,7 +39576,7 @@ struct charset_info_st my_charset_utf16_unicode_520_ci=
0x10FFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38728,7 +39609,7 @@ struct charset_info_st my_charset_utf16_vietnamese_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_utf16
};
@@ -38761,7 +39642,7 @@ struct charset_info_st my_charset_utf16_unicode_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_nopad_utf16
};
@@ -38794,7 +39675,7 @@ struct charset_info_st my_charset_utf16_unicode_520_nopad_ci=
0x10FFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_uca_collation_handler_nopad_utf16
};
@@ -38803,5 +39684,169 @@ struct charset_info_st my_charset_utf16_unicode_520_nopad_ci=
#endif /* HAVE_CHARSET_utf16 */
+uint
+my_uca1400_make_builtin_collation_id(my_cs_encoding_t charset_id,
+ uint tailoring_id,
+ my_bool nopad,
+ my_bool secondary_level,
+ my_bool tertiary_level)
+{
+ if (!my_uca1400_collation_definitions[tailoring_id].tailoring)
+ return 0;
+ return MY_UCA1400_COLLATION_ID_POSSIBLE_MIN +
+ (charset_id << 8) +
+ (tailoring_id << 3) +
+ (nopad << 2) +
+ (secondary_level << 1) +
+ (tertiary_level << 0);
+}
+
+
+my_bool
+my_uca1400_collation_definition_init(MY_CHARSET_LOADER *loader,
+ struct charset_info_st *dst,
+ uint id)
+{
+ my_cs_encoding_t cs_id= my_uca1400_collation_id_to_charset_id(id);
+ uint tailoring_id= my_uca1400_collation_id_to_tailoring_id(id);
+ my_bool nopad= my_uca1400_collation_id_to_nopad_flag(id);
+ my_bool secondary_level= my_uca1400_collation_id_to_secondary_level_flag(id);
+ my_bool tertiary_level= my_uca1400_collation_id_to_tertiary_level_flag(id);
+ const MY_UCA1400_COLLATION_DEFINITION *def=
+ &my_uca1400_collation_definitions[tailoring_id];
+ char tmp[128], *coll_name;
+ size_t length;
+
+ switch (cs_id) {
+ case MY_CS_ENCODING_UTF8MB3:
+ *dst= nopad ? my_charset_utf8mb3_unicode_520_nopad_ci :
+ my_charset_utf8mb3_unicode_520_ci;
+ break;
+ case MY_CS_ENCODING_UTF8MB4:
+ *dst= nopad ? my_charset_utf8mb4_unicode_520_nopad_ci :
+ my_charset_utf8mb4_unicode_520_ci;
+ break;
+ case MY_CS_ENCODING_UCS2:
+ *dst= nopad ? my_charset_ucs2_unicode_520_nopad_ci :
+ my_charset_ucs2_unicode_520_ci;
+ break;
+ case MY_CS_ENCODING_UTF16:
+ *dst= nopad ? my_charset_utf16_unicode_520_nopad_ci :
+ my_charset_utf16_unicode_520_ci;
+ break;
+ case MY_CS_ENCODING_UTF32:
+ *dst= nopad ? my_charset_utf32_unicode_520_nopad_ci :
+ my_charset_utf32_unicode_520_ci;
+ break;
+ }
+
+ dst->number= id;
+ dst->uca= &my_uca_v1400;
+ dst->tailoring= def->tailoring;
+ dst->caseup_multiply= 1;
+ dst->casedn_multiply= 1;
+ if (def->tailoring == turkish)
+ dst->caseinfo= &my_unicase_turkish; /*TODO: unicase_1400_turkish */
+ else
+ dst->caseinfo= &my_unicase_unicode520; /*TODO: unicase_1400*/
+ if (nopad)
+ dst->state|= MY_CS_NOPAD;
+ my_ci_set_level_flags(dst, (1 << MY_CS_LEVEL_BIT_PRIMARY) |
+ (secondary_level ?
+ 1 << MY_CS_LEVEL_BIT_SECONDARY : 0) |
+ (tertiary_level ?
+ 1 << MY_CS_LEVEL_BIT_TERTIARY : 0));
+
+ length= my_snprintf(tmp, sizeof(tmp), "%.*s_uca1400%s%s%s%s%s",
+ (int) dst->cs_name.length, dst->cs_name.str,
+ def->name[0] ? "_" : "",
+ def->name,
+ nopad ? "_nopad" : "",
+ secondary_level ? "_as" : "_ai",
+ tertiary_level ? "_cs" : "_ci");
+ if (!(coll_name= loader->once_alloc(length + 1)))
+ return TRUE;
+ strcpy(coll_name, tmp);
+ dst->coll_name.str= coll_name;
+ dst->coll_name.length= length;
+ return FALSE;
+}
+
+
+/*
+ Return UCA-4.0.0 compatible ID, e.g. for use in the protocol
+ with the old clients.
+*/
+static uint my_uca1400_collation_id_uca400_compat(uint id)
+{
+ uint tlid= my_uca1400_collation_id_to_tailoring_id(id);
+ my_cs_encoding_t csid= my_uca1400_collation_id_to_charset_id(id);
+ MY_UCA1400_COLLATION_DEFINITION *def;
+ DBUG_ASSERT(my_collation_id_is_uca1400(id));
+ if (!(def= &my_uca1400_collation_definitions[tlid])->name)
+ return id;
+ switch (csid) {
+ case MY_CS_ENCODING_UTF8MB3: return def->id_utf8mb3;
+ case MY_CS_ENCODING_UTF8MB4: return def->id_utf8mb4;
+ case MY_CS_ENCODING_UCS2: return def->id_ucs2;
+ case MY_CS_ENCODING_UTF16: return def->id_utf16;
+ case MY_CS_ENCODING_UTF32: return def->id_utf32;
+ }
+ return id;
+}
+
+
+uint my_ci_get_id_uca(CHARSET_INFO *cs, my_collation_id_type_t type)
+{
+ switch (type)
+ {
+ case MY_COLLATION_ID_TYPE_PRECISE:
+ break;
+ case MY_COLLATION_ID_TYPE_COMPAT_100800:
+ /*
+ Return UCA-4.0.0 compatible ID, e.g. for use in the protocol
+ with the old clients.
+ */
+ if (my_collation_id_is_uca1400(cs->number))
+ return my_uca1400_collation_id_uca400_compat(cs->number);
+ break;
+ }
+ return cs->number;
+}
+
+
+LEX_CSTRING my_ci_get_collation_name_uca1400_context(CHARSET_INFO *cs)
+{
+ LEX_CSTRING res;
+ DBUG_ASSERT(my_collation_id_is_uca1400(cs->number));
+
+ if (cs->coll_name.length <= cs->cs_name.length ||
+ cs->coll_name.str[cs->cs_name.length] != '_')
+ {
+ DBUG_ASSERT(0);
+ return cs->coll_name;
+ }
+ res.str= cs->coll_name.str + cs->cs_name.length + 1;
+ res.length= cs->coll_name.length - cs->cs_name.length - 1;
+ return res;
+}
+
+
+LEX_CSTRING my_ci_get_collation_name_uca(CHARSET_INFO *cs,
+ my_collation_name_mode_t mode)
+{
+ if (!my_collation_id_is_uca1400(cs->number))
+ return cs->coll_name;
+
+ switch (mode) {
+ case MY_COLLATION_NAME_MODE_FULL:
+ break;
+ case MY_COLLATION_NAME_MODE_CONTEXT:
+ return my_ci_get_collation_name_uca1400_context(cs);
+ }
+
+ return cs->coll_name;
+}
+
#endif /* HAVE_UCA_COLLATIONS */
diff --git a/strings/ctype-uca.h b/strings/ctype-uca.h
new file mode 100644
index 00000000000..dd84f92faa6
--- /dev/null
+++ b/strings/ctype-uca.h
@@ -0,0 +1,187 @@
+#ifndef CTYPE_UCA_H
+#define CTYPE_UCA_H
+/* Copyright (c) 2021, MariaDB
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; version 2
+ of the License.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1335 USA */
+
+#define MY_UCA_VERSION_ID(x,y,z) ((uint) ((x) * 100 + (y) * 10 + (z)))
+
+/*
+ Implicit weight handling is done according to
+ the section "Computing Implicit Weights" in
+ https://unicode.org/reports/tr10/#Values_For_Base_Table
+ (as of Unicode 14.0.0)
+
+ Implicit weights for a code CP are constructed as follows:
+ [.AAAA.0020.0002][.BBBB.0000.0000]
+
+ - There are two primary weights, depending on the character type and block.
+ - There is one weight on the secondary and tertiary levels.
+
+ AAAA and BBBB are computed using different formulas for:
+ - Siniform ideographic scripts
+ - Han
+ - Unassigned characters
+*/
+
+typedef struct my_uca_implict_weight_t
+{
+ uint16 weight[2];
+} MY_UCA_IMPLICIT_WEIGHT;
+
+
+/*
+ By default, implicit weights for a code CP are constructed as follows:
+ [.AAAA.0020.0002][.BBBB.0000.0000]
+
+ where AAAA and BBBB are :
+ AAAA= BASE + (CP >> 15);
+ BBBB= (CP & 0x7FFF) | 0x8000;
+
+ This formula covers the following implicit weight subtypes:
+ - Core Han Unified Ideographs
+ - All other Han Unified Ideographs
+ - Unassigned characters
+ Every mentioned subtype passes a different BASE.
+
+ This formula does not cover Siniform ideographic scripts.
+ They are handled by separate functions.
+*/
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_implicit_weight_primary_default(uint16 base, my_wc_t code)
+{
+ MY_UCA_IMPLICIT_WEIGHT res;
+ res.weight[0]= (uint16) ((code >> 15) + base);
+ res.weight[1]= (uint16) ((code & 0x7FFF)|0x8000);
+ return res;
+}
+
+
+/**
+ Calculate Unicode-5.2.0 implicit weight on the primary level.
+
+ According to UCA, BASE is calculated as follows:
+ - FB40 for Unified_Ideograph=True AND
+ ((Block=CJK_Unified_Ideograph) OR
+ (Block=CJK_Compatibility_Ideographs))
+ - FB80 for Unified_Ideograph=True AND NOT
+ ((Block=CJK_Unified_Ideograph) OR
+ (Block=CJK_Compatibility_Ideographs))
+ - FBC0 for any other code point
+
+ But for Unicode-5.2.0 and Unicode-4.0.0 we used
+ a simplified formula as implemented before.
+*/
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_520_implicit_weight_primary(my_wc_t code)
+{
+ uint16 base;
+ /*
+ 3400;<CJK Ideograph Extension A, First>
+ 4DB5;<CJK Ideograph Extension A, Last>
+ 4E00;<CJK Ideograph, First>
+ 9FA5;<CJK Ideograph, Last>
+ */
+ if (code >= 0x3400 && code <= 0x4DB5)
+ base= 0xFB80;
+ else if (code >= 0x4E00 && code <= 0x9FA5)
+ base= 0xFB40;
+ else
+ base= 0xFBC0;
+
+ return my_uca_implicit_weight_primary_default(base, code);
+}
+
+
+typedef enum my_cs_encoding_enum
+{
+ MY_CS_ENCODING_UTF8MB3= 0,
+ MY_CS_ENCODING_UTF8MB4= 1,
+ MY_CS_ENCODING_UCS2= 2,
+ MY_CS_ENCODING_UTF16= 3,
+ MY_CS_ENCODING_UTF32= 4,
+} my_cs_encoding_t;
+
+#define MY_CS_ENCODING_LAST MY_CS_ENCODING_UTF32
+
+
+#include "ctype-uca1400.h"
+
+
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_implicit_weight_primary(uint version, my_wc_t code)
+{
+ return version >= 1400 ?
+ my_uca_1400_implicit_weight_primary(code) :
+ my_uca_520_implicit_weight_primary(code);
+}
+
+
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_implicit_weight_secondary()
+{
+ MY_UCA_IMPLICIT_WEIGHT res;
+ res.weight[0]= 0x0020;
+ res.weight[1]= 0;
+ return res;
+}
+
+
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_implicit_weight_tertiary()
+{
+ MY_UCA_IMPLICIT_WEIGHT res;
+ res.weight[0]= 0x0002;
+ res.weight[1]= 0;
+ return res;
+}
+
+
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_implicit_weight_quaternary()
+{
+ MY_UCA_IMPLICIT_WEIGHT res;
+ res.weight[0]= 0x0001;
+ res.weight[1]= 0;
+ return res;
+}
+
+
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_implicit_weight_on_level(uint version, my_wc_t code, uint level)
+{
+ switch (level) {
+ case 0:
+ return my_uca_implicit_weight_primary(version, code);
+ case 1:
+ return my_uca_implicit_weight_secondary();
+ case 2:
+ return my_uca_implicit_weight_tertiary();
+ default:
+ break;
+ }
+ return my_uca_implicit_weight_quaternary();
+}
+
+uint
+my_ci_get_id_uca(CHARSET_INFO *cs, my_collation_id_type_t type);
+
+
+LEX_CSTRING
+my_ci_get_collation_name_uca(CHARSET_INFO *cs, my_collation_name_mode_t mode);
+
+
+#endif /* CTYPE_UCA_H */
diff --git a/strings/ctype-uca.inl b/strings/ctype-uca.inl
index 6cf31ace11a..9b8c271ab50 100644
--- a/strings/ctype-uca.inl
+++ b/strings/ctype-uca.inl
@@ -93,16 +93,27 @@ MY_FUNCTION_NAME(strnncoll_onelevel)(CHARSET_INFO *cs,
{
my_uca_scanner sscanner;
my_uca_scanner tscanner;
+ my_uca_scanner_param param;
int s_res;
int t_res;
-
- my_uca_scanner_init_any(&sscanner, cs, level, s, slen);
- my_uca_scanner_init_any(&tscanner, cs, level, t, tlen);
+
+#if MY_UCA_ASCII_OPTIMIZE
+{
+ size_t prefix= my_uca_level_booster_equal_prefix_length(level->booster,
+ s, slen, t, tlen);
+ s+= prefix, slen-= prefix;
+ t+= prefix, tlen-= prefix;
+}
+#endif
+
+ my_uca_scanner_param_init(&param, cs, level);
+ my_uca_scanner_init_any(&sscanner, s, slen);
+ my_uca_scanner_init_any(&tscanner, t, tlen);
do
{
- s_res= MY_FUNCTION_NAME(scanner_next)(&sscanner);
- t_res= MY_FUNCTION_NAME(scanner_next)(&tscanner);
+ s_res= MY_FUNCTION_NAME(scanner_next)(&sscanner, &param);
+ t_res= MY_FUNCTION_NAME(scanner_next)(&tscanner, &param);
} while ( s_res == t_res && s_res >0);
return (t_is_prefix && t_res < 0) ? 0 : (s_res - t_res);
@@ -132,12 +143,15 @@ MY_FUNCTION_NAME(strnncoll_multilevel)(CHARSET_INFO *cs,
const uchar *t, size_t tlen,
my_bool t_is_prefix)
{
- uint i, num_level= cs->levels_for_order;
- for (i= 0; i != num_level; i++)
+ uint i, level_flags= cs->levels_for_order;
+ for (i= 0; level_flags; i++, level_flags>>= 1)
{
- int ret= MY_FUNCTION_NAME(strnncoll_onelevel)(cs, &cs->uca->level[i],
- s, slen, t, tlen,
- t_is_prefix);
+ int ret;
+ if (!(level_flags & 1))
+ continue;
+ ret= MY_FUNCTION_NAME(strnncoll_onelevel)(cs, &cs->uca->level[i],
+ s, slen, t, tlen,
+ t_is_prefix);
if (ret)
return ret;
}
@@ -199,15 +213,26 @@ MY_FUNCTION_NAME(strnncollsp_onelevel)(CHARSET_INFO *cs,
const uchar *t, size_t tlen)
{
my_uca_scanner sscanner, tscanner;
+ my_uca_scanner_param param;
int s_res, t_res;
- my_uca_scanner_init_any(&sscanner, cs, level, s, slen);
- my_uca_scanner_init_any(&tscanner, cs, level, t, tlen);
+#if MY_UCA_ASCII_OPTIMIZE
+{
+ size_t prefix= my_uca_level_booster_equal_prefix_length(level->booster,
+ s, slen, t, tlen);
+ s+= prefix, slen-= prefix;
+ t+= prefix, tlen-= prefix;
+}
+#endif
+
+ my_uca_scanner_param_init(&param, cs, level);
+ my_uca_scanner_init_any(&sscanner, s, slen);
+ my_uca_scanner_init_any(&tscanner, t, tlen);
do
{
- s_res= MY_FUNCTION_NAME(scanner_next)(&sscanner);
- t_res= MY_FUNCTION_NAME(scanner_next)(&tscanner);
+ s_res= MY_FUNCTION_NAME(scanner_next)(&sscanner, &param);
+ t_res= MY_FUNCTION_NAME(scanner_next)(&tscanner, &param);
} while ( s_res == t_res && s_res >0);
if (s_res > 0 && t_res < 0)
@@ -220,7 +245,7 @@ MY_FUNCTION_NAME(strnncollsp_onelevel)(CHARSET_INFO *cs,
{
if (s_res != t_res)
return (s_res - t_res);
- s_res= MY_FUNCTION_NAME(scanner_next)(&sscanner);
+ s_res= MY_FUNCTION_NAME(scanner_next)(&sscanner, &param);
} while (s_res > 0);
return 0;
}
@@ -235,7 +260,7 @@ MY_FUNCTION_NAME(strnncollsp_onelevel)(CHARSET_INFO *cs,
{
if (s_res != t_res)
return (s_res - t_res);
- t_res= MY_FUNCTION_NAME(scanner_next)(&tscanner);
+ t_res= MY_FUNCTION_NAME(scanner_next)(&tscanner, &param);
} while (t_res > 0);
return 0;
}
@@ -278,12 +303,14 @@ MY_FUNCTION_NAME(strnncollsp_multilevel)(CHARSET_INFO *cs,
const uchar *s, size_t slen,
const uchar *t, size_t tlen)
{
-
- uint i, num_level= cs->levels_for_order;
- for (i= 0; i != num_level; i++)
+ uint i, level_flags= cs->levels_for_order;
+ for (i= 0; level_flags; i++, level_flags>>= 1)
{
- int ret= MY_FUNCTION_NAME(strnncollsp_onelevel)(cs, &cs->uca->level[i],
- s, slen, t, tlen);
+ int ret;
+ if (!(level_flags & 1))
+ continue;
+ ret= MY_FUNCTION_NAME(strnncollsp_onelevel)(cs, &cs->uca->level[i],
+ s, slen, t, tlen);
if (ret)
return ret;
}
@@ -299,12 +326,63 @@ MY_FUNCTION_NAME(strnncollsp_nopad_multilevel)(CHARSET_INFO *cs,
const uchar *s, size_t slen,
const uchar *t, size_t tlen)
{
- uint num_level= cs->levels_for_order;
- uint i;
- for (i= 0; i != num_level; i++)
+ uint i, level_flags;
+ int ret;
+
+ /* Compare only the primary level using NO PAD */
+ if ((ret= MY_FUNCTION_NAME(strnncoll_onelevel)(cs, &cs->uca->level[0],
+ s, slen, t, tlen, FALSE)))
+ return ret;
+
+ /*
+ Compare the other levels using PAD SPACE.
+ These are Unicode-14.0.0 DUCTET weights:
+
+0020 ; [*0209.0020.0002] # SPACE
+
+0035 ; [.2070.0020.0002] # DIGIT FIVE
+248C ; [.2070.0020.0004][*0281.0020.0004] # DIGIT FIVE FULL STOP
+
+0041 ; [.2075.0020.0008] # LATIN CAPITAL LETTER A
+0061 ; [.2075.0020.0002] # LATIN SMALL LETTER A
+00C1 ; [.2075.0020.0008][.0000.0024.0002] # LATIN CAPITAL LETTER A WITH ACUTE
+00E1 ; [.2075.0020.0002][.0000.0024.0002] # LATIN SMALL LETTER A WITH ACUTE
+
+ Examples demonstrating that it's important to use PAD SPACE
+ on the tertiary level:
+
+ The third level weights for "SMALL LETTER A"
+ - U+0061 produces one weight 0002
+ - U+00E1 produces two weights 0002+0002
+ For _ai_cs collations these two letters must be equal.
+ Therefore, the difference in trailing 0002 should be ignored.
+
+ The third level weights for "CAPITAL LETTER A"
+ - U+0041 produces one weight 0008
+ - U+00C1 produces two weights 0008+0002
+ For _ai_cs collations these two letters must be equal.
+ Therefore, the difference in trailing 0002 should be ignored.
+
+ Examples demonstrating that it's important to use PAD SPACE
+ on the secondary level:
+
+ When we implement variable shifted alternative weighting collations,
+ U+0035 will be equal to U+248C on the primary level in these collations.
+ The second level weights for "DIGIT FIVE" are:
+ - U+0035 produces one weight 0020
+ - U+248C produces two weights 0020+0020.
+ The difference for these two characters must be found only
+ on the tertiary level. Therefore, the trailing 0020 should be ignored.
+ */
+
+ for (i= 1, level_flags= cs->levels_for_order >> 1;
+ level_flags;
+ i++, level_flags>>= 1)
{
- int ret= MY_FUNCTION_NAME(strnncoll_onelevel)(cs, &cs->uca->level[i],
- s, slen, t, tlen, FALSE);
+ if (!(level_flags & 1))
+ continue;
+ ret= MY_FUNCTION_NAME(strnncollsp_onelevel)(cs, &cs->uca->level[i],
+ s, slen, t, tlen);
if (ret)
return ret;
}
@@ -318,6 +396,7 @@ MY_FUNCTION_NAME(strnncollsp_nopad_multilevel)(CHARSET_INFO *cs,
*/
static inline weight_and_nchars_t
MY_FUNCTION_NAME(scanner_next_pad_trim)(my_uca_scanner *scanner,
+ my_uca_scanner_param *param,
size_t nchars,
uint *generated)
{
@@ -325,14 +404,14 @@ MY_FUNCTION_NAME(scanner_next_pad_trim)(my_uca_scanner *scanner,
if (nchars > 0 ||
scanner->wbeg[0] /* Some weights from a previous expansion left */)
{
- if ((res= MY_FUNCTION_NAME(scanner_next_with_nchars)(scanner,
+ if ((res= MY_FUNCTION_NAME(scanner_next_with_nchars)(scanner, param,
nchars)).weight < 0)
{
/*
We reached the end of the string, but the caller wants more weights.
Perform space padding.
*/
- res.weight= my_space_weight(scanner->level);
+ res.weight= my_space_weight(param->level);
res.nchars= 1;
(*generated)++;
}
@@ -346,8 +425,8 @@ MY_FUNCTION_NAME(scanner_next_pad_trim)(my_uca_scanner *scanner,
e.g. CONCAT(x'00','a') with nchars=1.
Perform trimming.
*/
- res.weight= scanner->cs->state & MY_CS_NOPAD ?
- 0 : my_space_weight(scanner->level);
+ res.weight= param->cs->state & MY_CS_NOPAD ?
+ 0 : my_space_weight(param->level);
res.nchars= (uint) nchars;
(*generated)++;
}
@@ -355,8 +434,8 @@ MY_FUNCTION_NAME(scanner_next_pad_trim)(my_uca_scanner *scanner,
else
{
/* The caller wants nchars==0. Perform trimming. */
- res.weight= scanner->cs->state & MY_CS_NOPAD ?
- 0 : my_space_weight(scanner->level);
+ res.weight= param->cs->state & MY_CS_NOPAD ?
+ 0 : my_space_weight(param->level);
res.nchars= 0;
(*generated)++;
}
@@ -373,11 +452,25 @@ MY_FUNCTION_NAME(strnncollsp_nchars_onelevel)(CHARSET_INFO *cs,
{
my_uca_scanner sscanner;
my_uca_scanner tscanner;
+ my_uca_scanner_param param;
size_t s_nchars_left= nchars;
size_t t_nchars_left= nchars;
- my_uca_scanner_init_any(&sscanner, cs, level, s, slen);
- my_uca_scanner_init_any(&tscanner, cs, level, t, tlen);
+/*
+TODO: strnncollsp_nchars_onelevel
+#if MY_UCA_ASCII_OPTIMIZE
+{
+ size_t prefix= my_uca_level_booster_equal_prefix_length(level->booster,
+ s, slen, t, tlen);
+ s+= prefix, slen-= prefix;
+ t+= prefix, tlen-= prefix;
+}
+#endif
+*/
+
+ my_uca_scanner_param_init(&param, cs, level);
+ my_uca_scanner_init_any(&sscanner, s, slen);
+ my_uca_scanner_init_any(&tscanner, t, tlen);
for ( ; ; )
{
@@ -386,9 +479,11 @@ MY_FUNCTION_NAME(strnncollsp_nchars_onelevel)(CHARSET_INFO *cs,
uint generated= 0;
int diff;
- s_res= MY_FUNCTION_NAME(scanner_next_pad_trim)(&sscanner, s_nchars_left,
+ s_res= MY_FUNCTION_NAME(scanner_next_pad_trim)(&sscanner, &param,
+ s_nchars_left,
&generated);
- t_res= MY_FUNCTION_NAME(scanner_next_pad_trim)(&tscanner, t_nchars_left,
+ t_res= MY_FUNCTION_NAME(scanner_next_pad_trim)(&tscanner, &param,
+ t_nchars_left,
&generated);
if ((diff= (s_res.weight - t_res.weight)))
return diff;
@@ -464,15 +559,17 @@ MY_FUNCTION_NAME(strnncollsp_nchars_multilevel)(CHARSET_INFO *cs,
const uchar *t, size_t tlen,
size_t nchars)
{
- uint num_level= cs->levels_for_order;
- uint i;
- for (i= 0; i != num_level; i++)
+ uint i, level_flags= cs->levels_for_order;
+ for (i= 0; level_flags; i++, level_flags>>= 1)
{
- int ret= MY_FUNCTION_NAME(strnncollsp_nchars_onelevel)(cs,
- &cs->uca->level[i],
- s, slen,
- t, tlen,
- nchars);
+ int ret;
+ if (!(level_flags & 1))
+ continue;
+ ret= MY_FUNCTION_NAME(strnncollsp_nchars_onelevel)(cs,
+ &cs->uca->level[i],
+ s, slen,
+ t, tlen,
+ nchars);
if (ret)
return ret;
}
@@ -516,12 +613,14 @@ MY_FUNCTION_NAME(hash_sort)(CHARSET_INFO *cs,
{
int s_res;
my_uca_scanner scanner;
+ my_uca_scanner_param param;
int space_weight= my_space_weight(&cs->uca->level[0]);
register ulong m1= *nr1, m2= *nr2;
- my_uca_scanner_init_any(&scanner, cs, &cs->uca->level[0], s, slen);
+ my_uca_scanner_param_init(&param, cs, &cs->uca->level[0]);
+ my_uca_scanner_init_any(&scanner, s, slen);
- while ((s_res= MY_FUNCTION_NAME(scanner_next)(&scanner)) >0)
+ while ((s_res= MY_FUNCTION_NAME(scanner_next)(&scanner, &param)) >0)
{
if (s_res == space_weight)
{
@@ -530,7 +629,7 @@ MY_FUNCTION_NAME(hash_sort)(CHARSET_INFO *cs,
do
{
count++;
- if ((s_res= MY_FUNCTION_NAME(scanner_next)(&scanner)) <= 0)
+ if ((s_res= MY_FUNCTION_NAME(scanner_next)(&scanner, &param)) <= 0)
{
/* Skip strings at end of string */
goto end;
@@ -570,11 +669,13 @@ MY_FUNCTION_NAME(hash_sort_nopad)(CHARSET_INFO *cs,
{
int s_res;
my_uca_scanner scanner;
+ my_uca_scanner_param param;
register ulong m1= *nr1, m2= *nr2;
- my_uca_scanner_init_any(&scanner, cs, &cs->uca->level[0], s, slen);
+ my_uca_scanner_param_init(&param, cs, &cs->uca->level[0]);
+ my_uca_scanner_init_any(&scanner, s, slen);
- while ((s_res= MY_FUNCTION_NAME(scanner_next)(&scanner)) >0)
+ while ((s_res= MY_FUNCTION_NAME(scanner_next)(&scanner, &param)) >0)
{
/* See comment above why we can't use MY_HASH_ADD_16() */
MY_HASH_ADD(m1, m2, s_res >> 8);
@@ -625,6 +726,7 @@ MY_FUNCTION_NAME(strnxfrm_onelevel_internal)(CHARSET_INFO *cs,
const uchar *src, size_t srclen)
{
my_uca_scanner scanner;
+ my_uca_scanner_param param;
int s_res;
DBUG_ASSERT(src || !srclen);
@@ -668,9 +770,12 @@ MY_FUNCTION_NAME(strnxfrm_onelevel_internal)(CHARSET_INFO *cs,
}
#endif
- my_uca_scanner_init_any(&scanner, cs, level, src, srclen);
+ my_uca_scanner_param_init(&param, cs, level);
+ my_uca_scanner_init_any(&scanner, src, srclen);
+
for (; dst < de && *nweights &&
- (s_res= MY_FUNCTION_NAME(scanner_next)(&scanner)) > 0 ; (*nweights)--)
+ (s_res= MY_FUNCTION_NAME(scanner_next)(&scanner, &param)) > 0 ;
+ (*nweights)--)
{
*dst++= s_res >> 8;
if (dst < de)
@@ -784,13 +889,15 @@ MY_FUNCTION_NAME(strnxfrm_multilevel)(CHARSET_INFO *cs,
const uchar *src, size_t srclen,
uint flags)
{
- uint num_level= cs->levels_for_order;
+ uint level_flags= cs->levels_for_order;
uchar *d0= dst;
uchar *de= dst + dstlen;
uint current_level;
- for (current_level= 0; current_level != num_level; current_level++)
+ for (current_level= 0; level_flags; current_level++, level_flags>>= 1)
{
+ if (!(level_flags & 1))
+ continue;
if (!(flags & MY_STRXFRM_LEVEL_ALL) ||
(flags & (MY_STRXFRM_LEVEL1 << current_level)))
dst= cs->state & MY_CS_NOPAD ?
@@ -832,7 +939,9 @@ MY_COLLATION_HANDLER MY_FUNCTION_NAME(collation_handler)=
MY_FUNCTION_NAME(hash_sort),
my_propagate_complex,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_uca,
+ my_ci_get_collation_name_uca
};
@@ -856,7 +965,9 @@ MY_COLLATION_HANDLER MY_FUNCTION_NAME(collation_handler_nopad)=
MY_FUNCTION_NAME(hash_sort_nopad),
my_propagate_complex,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_uca,
+ my_ci_get_collation_name_uca
};
@@ -878,7 +989,9 @@ MY_COLLATION_HANDLER MY_FUNCTION_NAME(collation_handler_multilevel)=
MY_FUNCTION_NAME(hash_sort),
my_propagate_complex,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_uca,
+ my_ci_get_collation_name_uca
};
@@ -900,7 +1013,9 @@ MY_COLLATION_HANDLER MY_FUNCTION_NAME(collation_handler_nopad_multilevel)=
MY_FUNCTION_NAME(hash_sort),
my_propagate_complex,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_uca,
+ my_ci_get_collation_name_uca
};
diff --git a/strings/ctype-uca1400.h b/strings/ctype-uca1400.h
new file mode 100644
index 00000000000..76ffbf5c732
--- /dev/null
+++ b/strings/ctype-uca1400.h
@@ -0,0 +1,252 @@
+#ifndef CTYPE_UCA_1400_H
+#define CTYPE_UCA_1400_H
+/* Copyright (c) 2021, MariaDB
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; version 2
+ of the License.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ MA 02110-1335 USA */
+
+
+/*
+ 17000..187FF; Tangut [6144]
+ 18800..18AFF; Tangut Components [768]
+ 18D00..18D7F; Tangut Supplement [128]
+*/
+static inline my_bool
+my_uca_1400_is_assigned_tangut(my_wc_t code)
+{
+ return (code >= 0x17000 && code <= 0x187FF) ||
+ (code >= 0x18800 && code <= 0x18AFF) ||
+ (code >= 0x18D00 && code <= 0x18D7F);
+}
+
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_1400_implicit_weight_primary_tangut(my_wc_t code)
+{
+ MY_UCA_IMPLICIT_WEIGHT res;
+ res.weight[0]= 0xFB00;
+ res.weight[1]= (uint16) (code - 0x17000) | 0x8000;
+ return res;
+}
+
+
+/*
+ 1B170..1B2FF; Nushu [400]
+*/
+static inline my_bool
+my_uca_1400_is_assigned_nushu(my_wc_t code)
+{
+ return code >= 0x1B170 && code <= 0x1B2FF;
+}
+
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_1400_implicit_weight_primary_nushu(my_wc_t code)
+{
+ MY_UCA_IMPLICIT_WEIGHT res;
+ res.weight[0]= 0xFB01;
+ res.weight[1]= (uint16) (code - 0x1B170) | 0x8000;
+ return res;
+}
+
+
+/*
+ 18B00..18CFF; Khitan Small Script [512]
+*/
+static inline my_bool
+my_uca_1400_is_assigned_khitan_small_script(my_wc_t code)
+{
+ return code >= 0x18B00 && code <= 0x18CFF;
+}
+
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_1400_implicit_weight_primary_khitan(my_wc_t code)
+{
+ MY_UCA_IMPLICIT_WEIGHT res;
+ res.weight[0]= 0xFB02;
+ res.weight[1]= (uint16) (code - 0x18B00) | 0x8000;
+ return res;
+}
+
+
+/*
+ Unified_Ideograph=True AND
+ ((Block=CJK_Unified_Ideograph) OR (Block=CJK_Compatibility_Ideographs))
+
+ https://www.unicode.org/Public/14.0.0/ucd/Blocks.txt
+
+ 4E00..9FFF; CJK Unified Ideographs
+ F900..FAFF; CJK Compatibility Ideographs
+
+ https://www.unicode.org/Public/14.0.0/ucd/PropList.txt
+
+ 4E00..9FFF ; Unified_Ideograph # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
+ FA0E..FA0F ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
+ FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11
+ FA13..FA14 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
+ FA1F ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA1F
+ FA21 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA21
+ FA23..FA24 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24
+ FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29
+*/
+static inline my_bool
+my_uca_1400_is_core_han_unified_ideograph(my_wc_t code)
+{
+ return (code >= 0x4E00 && code <= 0x9FFF) ||
+ (code >= 0xFA0E && code <= 0xFA0F) ||
+ (code == 0xFA11) ||
+ (code >= 0xFA13 && code <= 0xFA14) ||
+ (code == 0xFA1F) ||
+ (code == 0xFA21) ||
+ (code >= 0xFA23 && code <= 0xFA24) ||
+ (code >= 0xFA27 && code <= 0xFA29);
+}
+
+
+/*
+ (Unified_Ideograph=True AND NOT
+ ((Block=CJK_Unified_Ideograph) OR (Block=CJK_Compatibility_Ideographs))
+
+ https://www.unicode.org/Public/14.0.0/ucd/Blocks.txt
+
+ 3400..4DBF; CJK Unified Ideographs Extension A
+ 20000..2A6DF; CJK Unified Ideographs Extension B
+ 2A700..2B73F; CJK Unified Ideographs Extension C
+ 2B740..2B81F; CJK Unified Ideographs Extension D
+ 2B820..2CEAF; CJK Unified Ideographs Extension E
+ 2CEB0..2EBEF; CJK Unified Ideographs Extension F
+ 30000..3134F; CJK Unified Ideographs Extension G
+
+ https://www.unicode.org/Public/14.0.0/ucd/PropList.txt
+
+ 3400..4DBF ; Unified_Ideograph # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
+ 20000..2A6DF ; Unified_Ideograph # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
+ 2A700..2B738 ; Unified_Ideograph # Lo [4153] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B738
+ 2B740..2B81D ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
+ 2B820..2CEA1 ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
+ 2CEB0..2EBE0 ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
+ 30000..3134A ; Unified_Ideograph # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
+*/
+static inline my_bool
+my_uca_1400_is_other_han_unified_ideograph(my_wc_t code)
+{
+ return (code >= 0x3400 && code <= 0x4DBF) ||
+ (code >= 0x20000 && code <= 0x2A6DF) ||
+ (code >= 0x2A700 && code <= 0x2B738) ||
+ (code >= 0x2B740 && code <= 0x2B81D) ||
+ (code >= 0x2B820 && code <= 0x2CEA1) ||
+ (code >= 0x2CEB0 && code <= 0x2EBE0) ||
+ (code >= 0x30000 && code <= 0x3134A);
+}
+
+
+/*
+ See section "Computing Implicit Weights" in
+ https://unicode.org/reports/tr10/#Values_For_Base_Table
+*/
+static inline MY_UCA_IMPLICIT_WEIGHT
+my_uca_1400_implicit_weight_primary(my_wc_t code)
+{
+ if (my_uca_1400_is_core_han_unified_ideograph(code))
+ return my_uca_implicit_weight_primary_default(0xFB40, code);
+
+ if (my_uca_1400_is_other_han_unified_ideograph(code))
+ return my_uca_implicit_weight_primary_default(0xFB80, code);
+
+ if (my_uca_1400_is_assigned_tangut(code))
+ return my_uca_1400_implicit_weight_primary_tangut(code);
+
+ if (my_uca_1400_is_assigned_nushu(code))
+ return my_uca_1400_implicit_weight_primary_nushu(code);
+
+ if (my_uca_1400_is_assigned_khitan_small_script(code))
+ return my_uca_1400_implicit_weight_primary_khitan(code);
+
+ /* Unassigned - Any other code point */
+ return my_uca_implicit_weight_primary_default(0xFBC0, code);
+}
+
+
+#define MY_UCA1400_COLLATION_ID_POSSIBLE_MIN 2048
+#define MY_UCA1400_COLLATION_ID_POSSIBLE_MAX 4095
+
+static inline my_bool
+my_collation_id_is_uca1400(uint id)
+{
+ return (my_bool) (id >= MY_UCA1400_COLLATION_ID_POSSIBLE_MIN &&
+ id <= MY_UCA1400_COLLATION_ID_POSSIBLE_MAX);
+}
+
+/*
+ UCA1400 collation ID:
+
+ 1000 0000 0000 0x800 2048
+ 1111 1111 1111 0xFFF 4095
+ 1ccc tttt tPST
+
+ c - charset ID (utf8mb3=0, utf8mb4=1, ucs2=2, utf16=3, utf32=4)
+ p - PAD/NO PAD
+ S - secondary level is enabled
+ T - tertiary level is enabled
+*/
+
+
+static inline my_cs_encoding_t
+my_uca1400_collation_id_to_charset_id(uint id)
+{
+ return (my_cs_encoding_t) ((id >> 8) & 0x07);
+}
+
+
+static inline uint
+my_uca1400_collation_id_to_tailoring_id(uint id)
+{
+ return (id >> 3) & 0x1F;
+}
+
+
+static inline my_bool
+my_uca1400_collation_id_to_nopad_flag(uint id)
+{
+ return (my_bool) ((id >> 2) & 0x01);
+}
+
+static inline my_bool
+my_uca1400_collation_id_to_secondary_level_flag(uint id)
+{
+ return (my_bool) ((id >> 1) & 0x01);
+}
+
+static inline my_bool
+my_uca1400_collation_id_to_tertiary_level_flag(uint id)
+{
+ return (my_bool) ((id >> 0) & 0x01);
+}
+
+
+uint
+my_uca1400_make_builtin_collation_id(my_cs_encoding_t charset_id,
+ uint tailoring_id,
+ my_bool nopad,
+ my_bool secondary_level,
+ my_bool tertiary_level);
+
+my_bool
+my_uca1400_collation_definition_init(MY_CHARSET_LOADER *loader,
+ struct charset_info_st *dst,
+ uint collation_id);
+
+#define MY_UCA1400_COLLATION_DEFINITION_COUNT 26
+
+
+#endif /* CTYPE_UCA_1400_H */
diff --git a/strings/ctype-ucs2.c b/strings/ctype-ucs2.c
index 7ced12d846f..4c7a29abde8 100644
--- a/strings/ctype-ucs2.c
+++ b/strings/ctype-ucs2.c
@@ -1517,7 +1517,9 @@ static MY_COLLATION_HANDLER my_collation_utf16_general_ci_handler =
my_hash_sort_utf16,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -1536,7 +1538,9 @@ static MY_COLLATION_HANDLER my_collation_utf16_bin_handler =
my_hash_sort_utf16_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -1555,7 +1559,9 @@ static MY_COLLATION_HANDLER my_collation_utf16_general_nopad_ci_handler =
my_hash_sort_utf16_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -1574,7 +1580,9 @@ static MY_COLLATION_HANDLER my_collation_utf16_nopad_bin_handler =
my_hash_sort_utf16_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -1639,7 +1647,7 @@ struct charset_info_st my_charset_utf16_general_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_collation_utf16_general_ci_handler
};
@@ -1672,7 +1680,7 @@ struct charset_info_st my_charset_utf16_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_collation_utf16_bin_handler
};
@@ -1705,7 +1713,7 @@ struct charset_info_st my_charset_utf16_general_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_collation_utf16_general_nopad_ci_handler
};
@@ -1739,7 +1747,7 @@ struct charset_info_st my_charset_utf16_nopad_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16_handler,
&my_collation_utf16_nopad_bin_handler
};
@@ -1870,7 +1878,9 @@ static MY_COLLATION_HANDLER my_collation_utf16le_general_ci_handler =
my_hash_sort_utf16,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -1889,7 +1899,9 @@ static MY_COLLATION_HANDLER my_collation_utf16le_bin_handler =
my_hash_sort_utf16_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -1908,7 +1920,9 @@ static MY_COLLATION_HANDLER my_collation_utf16le_general_nopad_ci_handler =
my_hash_sort_utf16_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -1927,7 +1941,9 @@ static MY_COLLATION_HANDLER my_collation_utf16le_nopad_bin_handler =
my_hash_sort_utf16_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -1992,7 +2008,7 @@ struct charset_info_st my_charset_utf16le_general_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16le_handler,
&my_collation_utf16le_general_ci_handler
};
@@ -2025,7 +2041,7 @@ struct charset_info_st my_charset_utf16le_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16le_handler,
&my_collation_utf16le_bin_handler
};
@@ -2058,7 +2074,7 @@ struct charset_info_st my_charset_utf16le_general_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16le_handler,
&my_collation_utf16le_general_nopad_ci_handler
};
@@ -2092,7 +2108,7 @@ struct charset_info_st my_charset_utf16le_nopad_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf16le_handler,
&my_collation_utf16le_nopad_bin_handler
};
@@ -2708,7 +2724,9 @@ static MY_COLLATION_HANDLER my_collation_utf32_general_ci_handler =
my_hash_sort_utf32,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -2727,7 +2745,9 @@ static MY_COLLATION_HANDLER my_collation_utf32_bin_handler =
my_hash_sort_utf32,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -2746,7 +2766,9 @@ static MY_COLLATION_HANDLER my_collation_utf32_general_nopad_ci_handler =
my_hash_sort_utf32_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -2765,7 +2787,9 @@ static MY_COLLATION_HANDLER my_collation_utf32_nopad_bin_handler =
my_hash_sort_utf32_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -2830,7 +2854,7 @@ struct charset_info_st my_charset_utf32_general_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_collation_utf32_general_ci_handler
};
@@ -2863,7 +2887,7 @@ struct charset_info_st my_charset_utf32_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_collation_utf32_bin_handler
};
@@ -2896,7 +2920,7 @@ struct charset_info_st my_charset_utf32_general_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_collation_utf32_general_nopad_ci_handler
};
@@ -2930,7 +2954,7 @@ struct charset_info_st my_charset_utf32_nopad_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf32_handler,
&my_collation_utf32_nopad_bin_handler
};
@@ -3311,7 +3335,9 @@ static MY_COLLATION_HANDLER my_collation_ucs2_general_ci_handler =
my_hash_sort_ucs2,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -3330,7 +3356,9 @@ static MY_COLLATION_HANDLER my_collation_ucs2_bin_handler =
my_hash_sort_ucs2_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -3349,7 +3377,9 @@ static MY_COLLATION_HANDLER my_collation_ucs2_general_nopad_ci_handler =
my_hash_sort_ucs2_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -3368,7 +3398,9 @@ static MY_COLLATION_HANDLER my_collation_ucs2_nopad_bin_handler =
my_hash_sort_ucs2_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -3433,7 +3465,7 @@ struct charset_info_st my_charset_ucs2_general_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_collation_ucs2_general_ci_handler
};
@@ -3466,7 +3498,7 @@ struct charset_info_st my_charset_ucs2_general_mysql500_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_collation_ucs2_general_ci_handler
};
@@ -3499,7 +3531,7 @@ struct charset_info_st my_charset_ucs2_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_collation_ucs2_bin_handler
};
@@ -3532,7 +3564,7 @@ struct charset_info_st my_charset_ucs2_general_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_collation_ucs2_general_nopad_ci_handler
};
@@ -3565,7 +3597,7 @@ struct charset_info_st my_charset_ucs2_nopad_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_ucs2_handler,
&my_collation_ucs2_nopad_bin_handler
};
diff --git a/strings/ctype-ujis.c b/strings/ctype-ujis.c
index adcd4825d88..ef704e5c15c 100644
--- a/strings/ctype-ujis.c
+++ b/strings/ctype-ujis.c
@@ -67256,7 +67256,9 @@ static MY_COLLATION_HANDLER my_collation_ujis_japanese_ci_handler =
my_hash_sort_simple,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -67275,7 +67277,9 @@ static MY_COLLATION_HANDLER my_collation_ujis_bin_handler =
my_hash_sort_mb_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -67294,7 +67298,9 @@ static MY_COLLATION_HANDLER my_collation_ujis_japanese_nopad_ci_handler =
my_hash_sort_simple_nopad,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -67313,7 +67319,9 @@ static MY_COLLATION_HANDLER my_collation_ujis_nopad_bin_handler =
my_hash_sort_mb_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -67379,7 +67387,7 @@ struct charset_info_st my_charset_ujis_japanese_ci=
0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_ujis_japanese_ci_handler
};
@@ -67412,7 +67420,7 @@ struct charset_info_st my_charset_ujis_bin=
0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_ujis_bin_handler
};
@@ -67445,7 +67453,7 @@ struct charset_info_st my_charset_ujis_japanese_nopad_ci=
0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_ujis_japanese_nopad_ci_handler
};
@@ -67478,7 +67486,7 @@ struct charset_info_st my_charset_ujis_nopad_bin=
0xFEFE, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_handler,
&my_collation_ujis_nopad_bin_handler
};
diff --git a/strings/ctype-utf8.c b/strings/ctype-utf8.c
index 40a01d4cba6..6c008d6e650 100644
--- a/strings/ctype-utf8.c
+++ b/strings/ctype-utf8.c
@@ -5651,7 +5651,9 @@ static MY_COLLATION_HANDLER my_collation_utf8mb3_general_ci_handler =
my_hash_sort_utf8mb3,
my_propagate_complex,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -5670,7 +5672,9 @@ static MY_COLLATION_HANDLER my_collation_utf8mb3_general_mysql500_ci_handler =
my_hash_sort_utf8mb3,
my_propagate_complex,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -5689,7 +5693,9 @@ static MY_COLLATION_HANDLER my_collation_utf8mb3_bin_handler =
my_hash_sort_mb_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -5708,7 +5714,9 @@ static MY_COLLATION_HANDLER my_collation_utf8mb3_general_nopad_ci_handler =
my_hash_sort_utf8mb3_nopad,
my_propagate_complex,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -5727,7 +5735,9 @@ static MY_COLLATION_HANDLER my_collation_utf8mb3_nopad_bin_handler =
my_hash_sort_mb_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -5793,7 +5803,7 @@ struct charset_info_st my_charset_utf8mb3_general_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_collation_utf8mb3_general_ci_handler
};
@@ -5826,7 +5836,7 @@ struct charset_info_st my_charset_utf8mb3_general_mysql500_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_collation_utf8mb3_general_mysql500_ci_handler
};
@@ -5859,7 +5869,7 @@ struct charset_info_st my_charset_utf8mb3_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_collation_utf8mb3_bin_handler
};
@@ -5892,7 +5902,7 @@ struct charset_info_st my_charset_utf8mb3_general_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_collation_utf8mb3_general_nopad_ci_handler
};
@@ -5925,7 +5935,7 @@ struct charset_info_st my_charset_utf8mb3_nopad_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_collation_utf8mb3_nopad_bin_handler
};
@@ -6090,7 +6100,7 @@ struct charset_info_st my_charset_utf8mb3_general_cs=
255, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb3_handler,
&my_collation_cs_handler
};
@@ -7381,7 +7391,9 @@ static MY_COLLATION_HANDLER my_collation_filename_handler =
my_hash_sort_utf8mb3,
my_propagate_complex,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
static MY_CHARSET_HANDLER my_charset_filename_handler=
@@ -7446,7 +7458,7 @@ struct charset_info_st my_charset_filename=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_filename_handler,
&my_collation_filename_handler
};
@@ -8028,7 +8040,9 @@ static MY_COLLATION_HANDLER my_collation_utf8mb4_general_ci_handler=
my_hash_sort_utf8mb4,
my_propagate_complex,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -8047,7 +8061,9 @@ static MY_COLLATION_HANDLER my_collation_utf8mb4_bin_handler =
my_hash_sort_mb_bin,
my_propagate_simple,
my_min_str_mb_simple,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -8066,7 +8082,9 @@ static MY_COLLATION_HANDLER my_collation_utf8mb4_general_nopad_ci_handler=
my_hash_sort_utf8mb4_nopad,
my_propagate_complex,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -8085,7 +8103,9 @@ static MY_COLLATION_HANDLER my_collation_utf8mb4_nopad_bin_handler =
my_hash_sort_mb_nopad_bin,
my_propagate_simple,
my_min_str_mb_simple_nopad,
- my_max_str_mb_simple
+ my_max_str_mb_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -8151,7 +8171,7 @@ struct charset_info_st my_charset_utf8mb4_general_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_collation_utf8mb4_general_ci_handler
};
@@ -8185,7 +8205,7 @@ struct charset_info_st my_charset_utf8mb4_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_collation_utf8mb4_bin_handler
};
@@ -8219,7 +8239,7 @@ struct charset_info_st my_charset_utf8mb4_general_nopad_ci=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_collation_utf8mb4_general_nopad_ci_handler
};
@@ -8253,7 +8273,7 @@ struct charset_info_st my_charset_utf8mb4_nopad_bin=
0xFFFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 1, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S1,
&my_charset_utf8mb4_handler,
&my_collation_utf8mb4_nopad_bin_handler
};
diff --git a/strings/ctype-win1250ch.c b/strings/ctype-win1250ch.c
index 97cc7d8c763..9c8dbeaaa34 100644
--- a/strings/ctype-win1250ch.c
+++ b/strings/ctype-win1250ch.c
@@ -688,7 +688,9 @@ static MY_COLLATION_HANDLER my_collation_czech_cs_handler =
my_hash_sort_simple,
my_propagate_simple,
my_min_str_8bit_simple,
- my_max_str_8bit_simple
+ my_max_str_8bit_simple,
+ my_ci_get_id_generic,
+ my_ci_get_collation_name_generic
};
@@ -720,7 +722,7 @@ struct charset_info_st my_charset_cp1250_czech_cs =
0xFF, /* max_sort_char */
' ', /* pad char */
0, /* escape_with_backslash_is_dangerous */
- 2, /* levels_for_order */
+ MY_CS_COLL_LEVELS_S2,
&my_charset_8bit_handler,
&my_collation_czech_cs_handler
};
diff --git a/strings/ctype.c b/strings/ctype.c
index a4bdd1bc62c..8bd8acf5ff9 100644
--- a/strings/ctype.c
+++ b/strings/ctype.c
@@ -279,8 +279,8 @@ static const struct my_cs_file_section_st
typedef struct my_cs_file_info
{
- char csname[MY_CS_NAME_SIZE];
- char name[MY_CS_NAME_SIZE];
+ char csname[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char name[MY_CS_COLLATION_NAME_SIZE];
uchar ctype[MY_CS_CTYPE_TABLE_SIZE];
uchar to_lower[MY_CS_TO_LOWER_TABLE_SIZE];
uchar to_upper[MY_CS_TO_UPPER_TABLE_SIZE];
@@ -608,11 +608,11 @@ static int cs_value(MY_XML_PARSER *st,const char *attr, size_t len)
i->cs.primary_number= strtol(attr,(char**)NULL,10);
break;
case _CS_COLNAME:
- i->cs.coll_name.str= mstr(i->name,attr,len,MY_CS_NAME_SIZE-1);
+ i->cs.coll_name.str= mstr(i->name,attr,len,MY_CS_COLLATION_NAME_SIZE-1);
i->cs.coll_name.length= strlen(i->cs.coll_name.str);
break;
case _CS_CSNAME:
- i->cs.cs_name.str= mstr(i->csname,attr,len,MY_CS_NAME_SIZE-1);
+ i->cs.cs_name.str= mstr(i->csname,attr,len,MY_CS_CHARACTER_SET_NAME_SIZE-1);
i->cs.cs_name.length= strlen(i->cs.cs_name.str);
break;
case _CS_CSDESCRIPT:
@@ -675,7 +675,10 @@ static int cs_value(MY_XML_PARSER *st,const char *attr, size_t len)
/* 1, 2, 3, 4, 5, or primary, secondary, tertiary, quaternary, identical */
rc= tailoring_append(st, "[strength %.*s]", len, attr);
if (len && attr[0] >= '1' && attr[0] <= '9')
- i->cs.levels_for_order= attr[0] - '0';
+ {
+ uint strength= attr[0] - '0';
+ my_ci_set_strength(&i->cs, MY_MIN(strength, MY_UCA_WEIGHT_LEVELS));
+ }
break;
case _CS_ST_ALTERNATE:
@@ -1381,3 +1384,16 @@ int my_strnncollsp_nchars_generic_8bit(CHARSET_INFO *cs,
DBUG_ASSERT((cs->state & MY_CS_NOPAD) == 0);
return cs->coll->strnncollsp(cs, str1, len1, str2, len2);
}
+
+
+uint my_ci_get_id_generic(CHARSET_INFO *cs, my_collation_id_type_t type)
+{
+ return cs->number;
+}
+
+
+LEX_CSTRING my_ci_get_collation_name_generic(CHARSET_INFO *cs,
+ my_collation_name_mode_t mode)
+{
+ return cs->coll_name;
+}
diff --git a/strings/strings_def.h b/strings/strings_def.h
index 19c167d116d..ed5514ac9cb 100644
--- a/strings/strings_def.h
+++ b/strings/strings_def.h
@@ -140,6 +140,10 @@ int my_wc_to_printable_generic(CHARSET_INFO *cs, my_wc_t wc,
int my_wc_to_printable_8bit(CHARSET_INFO *cs, my_wc_t wc,
uchar *s, uchar *e);
+void my_ci_set_strength(struct charset_info_st *cs, uint strength);
+void my_ci_set_level_flags(struct charset_info_st *cs, uint flags);
+
+
/* Some common character set names */
extern const char charset_name_latin2[];
#define charset_name_latin2_length 6
diff --git a/strings/uca-dump.c b/strings/uca-dump.c
index 837dd7f3c30..989fe98f48a 100644
--- a/strings/uca-dump.c
+++ b/strings/uca-dump.c
@@ -20,15 +20,363 @@
#include <stdlib.h>
#include <string.h>
-typedef unsigned char uchar;
-typedef unsigned short uint16;
+#include "my_global.h"
+#include "m_ctype.h"
+#include "ctype-uca.h"
-struct uca_item_st
+
+#define MAX_ALLOWED_CODE 0x10FFFF
+
+
+typedef struct opt_st
+{
+ const char *name_prefix; /* Name that goes into all array names */
+ const char *filename; /* The filename or "-" for stdin */
+ uint levels; /* The number of levels to dump */
+ my_bool no_contractions;
+ my_bool case_first_upper;
+} OPT;
+
+
+static OPT defaults=
{
- uchar num;
- uint16 weight[4][9];
+ "uca",
+ "-",
+ 3,
+ FALSE,
+ FALSE
};
+
+typedef struct my_ducet_weight_st
+{
+ uint16 weight[4][MY_UCA_MAX_WEIGHT_SIZE];
+ size_t weight_length;
+} MY_DUCET_WEIGHT;
+
+
+typedef struct my_ducet_single_char_t
+{
+ MY_DUCET_WEIGHT weight;
+ my_bool is_variable;
+} MY_DUCET_SINGLE_CHAR;
+
+
+typedef struct my_ducet_char_t
+{
+ my_wc_t wc[MY_UCA_MAX_CONTRACTION];
+ size_t length;
+} MY_DUCET_CHARS;
+
+
+typedef struct my_ducet_contraction_t
+{
+ MY_DUCET_CHARS chars;
+ MY_DUCET_WEIGHT weights;
+} MY_DUCET_CONTRACTION;
+
+
+typedef struct my_ducet_contraction_list_st
+{
+ size_t nitems;
+ MY_DUCET_CONTRACTION item[4*1024];
+} MY_DUCET_CONTRACTION_LIST;
+
+
+typedef struct my_ducet_logical_posision_st
+{
+ my_wc_t first;
+ my_wc_t last;
+} MY_DUCET_LOGICAL_POSITION;
+
+
+typedef struct my_ducet_logical_positions_st
+{
+ MY_DUCET_LOGICAL_POSITION tertiary_ignorable;
+ MY_DUCET_LOGICAL_POSITION secondary_ignorable;
+ MY_DUCET_LOGICAL_POSITION primary_ignorable;
+ MY_DUCET_LOGICAL_POSITION variable;
+ MY_DUCET_LOGICAL_POSITION non_ignorable;
+} MY_DUCET_LOGICAL_POSITIONS;
+
+
+typedef struct my_allkeys_st
+{
+ MY_DUCET_SINGLE_CHAR single_chars[MAX_ALLOWED_CODE+1];
+ MY_DUCET_CONTRACTION_LIST contractions;
+ MY_DUCET_LOGICAL_POSITIONS logical_positions;
+ uint version;
+ char version_str[32];
+} MY_DUCET;
+
+
+static int
+my_ducet_weight_cmp_on_level(const MY_DUCET_WEIGHT *a,
+ const MY_DUCET_WEIGHT *b,
+ uint level)
+{
+ uint i;
+ for (i= 0; i < array_elements(a->weight[level]); i++)
+ {
+ int diff= (int) a->weight[level][i] - (int) b->weight[level][i];
+ if (diff)
+ return diff;
+ }
+ return 0;
+}
+
+
+static int
+my_ducet_weight_cmp(const MY_DUCET_WEIGHT *a,
+ const MY_DUCET_WEIGHT *b)
+{
+ uint level;
+ for (level= 0; level < array_elements(a->weight); level++)
+ {
+ int diff= my_ducet_weight_cmp_on_level(a, b, level);
+ if (diff)
+ return diff;
+ }
+ return 0;
+}
+
+
+/*
+"3.11 Logical Reset Positions" says:
+
+The CLDR table (based on UCA) has the following overall structure for weights,
+going from low to high.
+
+*/
+
+static my_bool
+my_ducet_weight_is_tertiary_ignorable(const MY_DUCET_WEIGHT *w)
+{
+ return w->weight[0][0] == 0 &&
+ w->weight[1][0] == 0 &&
+ w->weight[2][0] == 0;
+}
+
+
+static my_bool
+my_ducet_weight_is_secondary_ignorable(const MY_DUCET_WEIGHT *w)
+{
+ return w->weight[0][0] == 0 &&
+ w->weight[1][0] == 0 &&
+ w->weight[2][0] != 0;
+}
+
+
+static my_bool
+my_ducet_weight_is_primary_ignorable(const MY_DUCET_WEIGHT *w)
+{
+ return w->weight[0][0] == 0 &&
+ w->weight[1][0] != 0 &&
+ w->weight[2][0] != 0;
+}
+
+
+static my_bool
+my_ducet_weight_is_primary_non_ignorable(const MY_DUCET_WEIGHT *w)
+{
+ return w->weight[0][0] > 0 && w->weight[0][0] < 0xFB00;
+}
+
+
+/*
+ if alternate = non-ignorable
+ p != ignore,
+ if alternate = shifted
+ p, s, t = ignore
+*/
+static my_bool
+my_ducet_single_char_is_variable(const MY_DUCET_SINGLE_CHAR *ch)
+{
+ return ch->is_variable &&
+ my_ducet_weight_is_primary_non_ignorable(&ch->weight);
+}
+
+
+static void
+my_ducet_logical_position_set(MY_DUCET_LOGICAL_POSITION *dst, my_wc_t wc)
+{
+ dst->first= dst->last= wc;
+}
+
+
+static void
+my_ducet_logical_position_update(MY_DUCET_LOGICAL_POSITION *dst,
+ const MY_DUCET *ducet, my_wc_t current)
+{
+ const MY_DUCET_SINGLE_CHAR *chars= ducet->single_chars;
+ int diff;
+ if (current >= array_elements(ducet->single_chars))
+ return;
+ if ((diff= my_ducet_weight_cmp(&chars[current].weight,
+ &chars[dst->first].weight)) < 0 ||
+ (diff == 0 && current < dst->first))
+ dst->first= current;
+ if ((diff= my_ducet_weight_cmp(&chars[current].weight,
+ &chars[dst->last].weight)) > 0 ||
+ (diff == 0 && current > dst->last))
+ dst->last= current;
+}
+
+
+static void
+my_ducet_logical_positions_init(MY_DUCET_LOGICAL_POSITIONS *dst,
+ const MY_DUCET *ducet)
+{
+ uint i;
+ const MY_DUCET_SINGLE_CHAR *chars= ducet->single_chars;
+
+ for (i= 0; i < array_elements(ducet->single_chars); i++)
+ {
+ if (my_ducet_weight_is_tertiary_ignorable(&chars[i].weight))
+ {
+ my_ducet_logical_position_set(&dst->tertiary_ignorable, i);
+ break;
+ }
+ }
+
+ for (i= 0; i < array_elements(ducet->single_chars); i++)
+ {
+ if (my_ducet_weight_is_secondary_ignorable(&chars[i].weight))
+ {
+ my_ducet_logical_position_set(&dst->secondary_ignorable, i);
+ break;
+ }
+ }
+
+ for (i= 0; i < array_elements(ducet->single_chars); i++)
+ {
+ if (my_ducet_weight_is_primary_ignorable(&chars[i].weight))
+ {
+ my_ducet_logical_position_set(&dst->primary_ignorable, i);
+ break;
+ }
+ }
+
+ for (i= 0; i < array_elements(ducet->single_chars); i++)
+ {
+ if (my_ducet_weight_is_primary_non_ignorable(&chars[i].weight))
+ {
+ my_ducet_logical_position_set(&dst->non_ignorable, i);
+ break;
+ }
+ }
+
+ for (i= 0; i < array_elements(ducet->single_chars); i++)
+ {
+ if (my_ducet_single_char_is_variable(&chars[i]))
+ {
+ my_ducet_logical_position_set(&dst->variable, i);
+ break;
+ }
+ }
+
+ for (i= 1; i < array_elements(ducet->single_chars); i++)
+ {
+ if (my_ducet_weight_is_primary_non_ignorable(&chars[i].weight))
+ my_ducet_logical_position_update(&dst->non_ignorable, ducet, i);
+ if (my_ducet_weight_is_primary_ignorable(&chars[i].weight))
+ my_ducet_logical_position_update(&dst->primary_ignorable, ducet, i);
+ if (my_ducet_weight_is_secondary_ignorable(&chars[i].weight))
+ my_ducet_logical_position_update(&dst->secondary_ignorable, ducet, i);
+ if (my_ducet_weight_is_tertiary_ignorable(&chars[i].weight))
+ my_ducet_logical_position_update(&dst->tertiary_ignorable, ducet, i);
+ if (my_ducet_single_char_is_variable(&chars[i]))
+ my_ducet_logical_position_update(&dst->variable, ducet, i);
+ }
+
+ /*
+ DUCET as of Unicode-14.0.0 does not have any secondary ignorable
+ characters, i.e. with weights [p=0000, s=0000, t!=0000]
+ For compatibility with 4.0.0 and 5.2.0 data in ctype-uca.c,
+ let copy tertiary_ignorable to secondary_ignorable.
+ It gives effectively the same result with just leaving
+ secondary_ignorable as {first=U+0000,last=U+0000}.
+ */
+ if (dst->secondary_ignorable.first == 0 && dst->secondary_ignorable.last == 0)
+ {
+ dst->secondary_ignorable.first= dst->tertiary_ignorable.first;
+ dst->secondary_ignorable.last= dst->tertiary_ignorable.last;
+ }
+}
+
+
+static void
+my_ducet_weight_normalize_on_level(MY_DUCET_WEIGHT *weights,
+ uint level,
+ const OPT *options)
+{
+ uint dst, src;
+ for (src= 0, dst= 0; src < array_elements(weights->weight[level]); src++)
+ {
+ if (weights->weight[level][src] != 0)
+ weights->weight[level][dst++]= weights->weight[level][src];
+ }
+ for ( ; dst < array_elements(weights->weight[level]) ; dst++)
+ weights->weight[level][dst]= 0;
+ if (options->case_first_upper && level == 2)
+ {
+ /*
+ Invert weights for secondary level to
+ sort upper case letters before their
+ lower case counter part.
+ */
+ for (dst= 0; dst < array_elements(weights->weight[level]); dst++)
+ {
+ if (weights->weight[level][dst] == 0)
+ break;
+ if (weights->weight[level][dst] >= 0x20)
+ {
+ fprintf(stderr, "Secondary level is too large: %04X\n",
+ (int) weights->weight[level][dst]);
+ }
+ weights->weight[level][dst]= (uint16) (0x20 - weights->weight[level][dst]);
+ }
+ }
+}
+
+
+static void
+my_ducet_weight_normalize(MY_DUCET_WEIGHT *weights, const OPT *options)
+{
+ uint i;
+ for (i= 0; i < array_elements(weights->weight); i++)
+ my_ducet_weight_normalize_on_level(weights, i, options);
+}
+
+
+static void
+my_ducet_normalize(MY_DUCET *ducet, const OPT *options)
+{
+ uint i;
+ for (i= 0; i < array_elements(ducet->single_chars); i++)
+ my_ducet_weight_normalize(&ducet->single_chars[i].weight, options);
+ for (i= 0; i < array_elements(ducet->contractions.item); i++)
+ my_ducet_weight_normalize(&ducet->contractions.item[i].weights, options);
+}
+
+
+static my_bool
+my_ducet_contraction_list_add(MY_DUCET_CONTRACTION_LIST *dst,
+ const MY_DUCET_CHARS *chars,
+ const MY_DUCET_WEIGHT *weights)
+{
+ if (dst->nitems >= array_elements(dst->item))
+ {
+ fprintf(stderr, "Too many contractions\n");
+ return TRUE;
+ }
+ dst->item[dst->nitems].chars= *chars;
+ dst->item[dst->nitems].weights= *weights;
+ dst->nitems++;
+ return FALSE;
+}
+
+
#if 0
#define MY_UCA_NPAGES 1024
#define MY_UCA_NCHARS 64
@@ -41,157 +389,470 @@ struct uca_item_st
#define MY_UCA_PSHIFT 8
#endif
-#define MAX_ALLOWED_CODE 0x10FFFF
-/* Name that goes into all array names */
-static const char *global_name_prefix= "uca520";
/* Name prefix that goes into page weight array names after global_name_prefix */
-static char *pname_prefix[]= {"_p", "_p", "_p"};
+static const char *pname_prefix[]= {"_p", "_p", "_p"};
/* Name suffix that goes into page weight array names after page number */
-static char *pname_suffix[]= {"", "_w2", "_w3"};
+static const char *pname_suffix[]= {"", "_secondary", "_tertiary"};
-int main(int ac, char **av)
+void usage(const char *prog)
+{
+ printf("Usage:\n");
+ printf("%s [options] filename\n", prog);
+}
+
+
+static inline int lstrncmp(const char *str, const LEX_CSTRING lstr)
+{
+ return strncmp(lstr.str, str, lstr.length);
+}
+
+
+int process_option(OPT *options, const char *opt)
{
- char str[256];
+ static const LEX_CSTRING opt_name_prefix= {STRING_WITH_LEN("--name-prefix=")};
+ static const LEX_CSTRING opt_levels= {STRING_WITH_LEN("--levels=")};
+ static const LEX_CSTRING opt_no_contractions= {STRING_WITH_LEN("--no-contractions")};
+ static const LEX_CSTRING opt_case_first= {STRING_WITH_LEN("--case-first=")};
+ if (!lstrncmp(opt, opt_name_prefix))
+ {
+ options->name_prefix= opt + opt_name_prefix.length;
+ return 0;
+ }
+ if (!lstrncmp(opt, opt_levels))
+ {
+ options->levels= (uint) strtoul(opt + opt_levels.length, NULL, 10);
+ if (options->levels < 1 || options->levels > 3)
+ {
+ printf("Bad --levels value\n");
+ return 1;
+ }
+ return 0;
+ }
+ if (!lstrncmp(opt, opt_case_first))
+ {
+ const char *value= opt + opt_case_first.length;
+ if (!strcasecmp(value, "upper"))
+ {
+ options->case_first_upper= TRUE;
+ return 0;
+ }
+ if (!strcasecmp(value, "lower"))
+ {
+ options->case_first_upper= FALSE;
+ return 0;
+ }
+ fprintf(stderr, "Bad option: %s\n", opt);
+ return 1;
+ }
+ if (!strcmp(opt, opt_no_contractions.str))
+ {
+ options->no_contractions= TRUE;
+ return 0;
+ }
+ printf("Unknown option: %s\n", opt);
+ return 1;
+}
+
+
+int process_options(OPT *options, int ac, char **av)
+{
+ int i;
+ for (i= 1; i < ac; i++)
+ {
+ if (!strncmp(av[i], "--", 2))
+ {
+ if (process_option(options, av[i]))
+ return 1;
+ }
+ else
+ {
+ if (i + 1 != ac)
+ {
+ usage(av[0]);
+ return 1;
+ }
+ options->filename= av[i];
+ return 0;
+ }
+ }
+ usage(av[0]);
+ return 1;
+}
+
+
+FILE *open_file(const char *name)
+{
+ if (!strcmp(name, "-"))
+ return stdin;
+ return fopen(name, "r");
+}
+
+
+void close_file(FILE *file)
+{
+ if (file != stdin)
+ fclose(file);
+}
+
+
+char *strrtrim(char *str)
+{
+ char *end= str + strlen(str);
+ for ( ; str < end; end--)
+ {
+ if (end[-1] != '\r' && end[-1] != '\n' &&
+ end[-1] != ' ' && end[-1] != '\t')
+ break;
+ end[-1]= '\0';
+ }
+ return str;
+}
+
+
+/*
+ Parse a line starting with '@'.
+ As of 14.0.0, allkeys.txt has @version and @implicitweights lines.
+ Only @version is parsed here.
+
+ It could also be possible to parse @implicitweights to automatically
+ generate routines responsible for implicit weight handling for Siniform
+ ideographic scripts (Tangut, Nushu, Khitan). But as there are only a few
+ of them at the moment, it was easier to write these routines in ctype-uca.h
+ manually. So @implicitweights lines are ignored here.
+*/
+my_bool parse_at_line(MY_DUCET *ducet, const char *str)
+{
+ static const LEX_CSTRING version= {STRING_WITH_LEN("@version ")};
+ if (!lstrncmp(str, version))
+ {
+ /*
+ Examples:
+ @version 4.0.0
+ @version 5.2.0
+ @version 14.0.0
+ */
+ const char *src= str + version.length;
+ long n[3]= {0};
+ uint pos;
+ int length;
+
+ length= snprintf(ducet->version_str, sizeof(ducet->version_str)-1,
+ "%s", src);
+ ducet->version_str[length]= '\0';
+
+ for (pos= 0 ; pos < 3; pos++)
+ {
+ char *endptr;
+ n[pos]= strtol(src, &endptr, 10);
+ if (*endptr != '.' && *endptr != '\r' && *endptr != '\n' && *endptr != 0)
+ return TRUE;
+ src= endptr + 1;
+ }
+ ducet->version= MY_UCA_VERSION_ID(n[0], n[1], n[2]);
+ }
+ return FALSE;
+}
+
+
+static void
+parse_chars(MY_DUCET_CHARS *dst, char *str)
+{
+ char *s;
+ const char *delim= " \t";
+ dst->length= 0;
+ for (s= strtok(str, delim); s ; s= strtok(NULL, delim))
+ {
+ my_wc_t code= (my_wc_t) strtoul(s, NULL, 16);
+ if (dst->length < array_elements(dst->wc))
+ dst->wc[dst->length]= code;
+ dst->length++;
+ }
+}
+
+
+static void
+parse_weights(MY_DUCET_WEIGHT *dst, my_bool *is_variable, char *weight)
+{
+ const char *delim= " []";
+ size_t w;
char *weights[64];
- static struct uca_item_st uca[MAX_ALLOWED_CODE+1];
- size_t code, w;
+ char *s;
+ dst->weight_length= 0;
+ *is_variable= FALSE;
+ for (s= strtok(weight, delim) ; s ; s= strtok(NULL, delim))
+ {
+ if (dst->weight_length < array_elements(weights))
+ weights[dst->weight_length]= s;
+ dst->weight_length++;
+ }
+
+ set_if_smaller(dst->weight_length, MY_UCA_MAX_WEIGHT_SIZE-1);
+
+ for (w= 0; w < dst->weight_length ; w++)
+ {
+ size_t partnum= 0;
+ for (s= weights[w]; *s ;)
+ {
+ char *endptr;
+ uint part= (uint) strtoul(s + 1, &endptr, 16);
+ if (w == 0 && s[0] == '*')
+ *is_variable= TRUE;
+ if (part > 0xFFFF)
+ fprintf(stderr, "Weight is too large: %X\n", (uint) part);
+ dst->weight[partnum][w]= (uint16) part;
+ s= endptr;
+ partnum++;
+ }
+ }
+}
+
+
+static void
+print_one_logical_position(const OPT *options,
+ const char *name,
+ const char *name2,
+ my_wc_t value)
+{
+ printf("#define %s_%s%s 0x%04X\n",
+ options->name_prefix, name, name2, (int) value);
+}
+
+
+static void
+my_ducet_weight_print_canonical(const MY_DUCET_WEIGHT *src)
+{
+ uint i;
+ for (i= 0; i < array_elements(src->weight[0]); i++)
+ {
+ my_bool zero= src->weight[0][i] == 0 &&
+ src->weight[1][i] == 0 &&
+ src->weight[2][i] == 0;
+ if (zero && i > 0)
+ break;
+ printf("[.%04X.%04X.%04X]",
+ src->weight[0][i],
+ src->weight[1][i],
+ src->weight[2][i]);
+ }
+}
+
+
+static void
+my_ducet_logical_position_print(const MY_DUCET_LOGICAL_POSITION *src,
+ const char *name,
+ const MY_DUCET *ducet,
+ const OPT *options)
+{
+ printf("/*\n");
+ my_ducet_weight_print_canonical(&ducet->single_chars[src->first].weight);
+ printf("\n");
+ my_ducet_weight_print_canonical(&ducet->single_chars[src->last].weight);
+ printf("\n*/\n");
+ print_one_logical_position(options, name, "_first", src->first);
+ print_one_logical_position(options, name, "_last", src->last);
+ printf("\n");
+}
+
+
+static void
+print_logical_positions(const MY_DUCET_LOGICAL_POSITIONS *src,
+ const MY_DUCET *ducet,
+ const OPT *opt)
+{
+ my_ducet_logical_position_print(&src->tertiary_ignorable, "tertiary_ignorable", ducet, opt);
+ my_ducet_logical_position_print(&src->secondary_ignorable, "secondary_ignorable", ducet, opt);
+ my_ducet_logical_position_print(&src->primary_ignorable, "primary_ignorable", ducet, opt);
+ my_ducet_logical_position_print(&src->variable, "variable", ducet, opt);
+ my_ducet_logical_position_print(&src->non_ignorable, "non_ignorable", ducet, opt);
+}
+
+
+static void
+print_version(const MY_DUCET *ducet, const OPT *opt)
+{
+ printf("\n");
+ printf("#define %s_version %d /* %s */\n",
+ opt->name_prefix, ducet->version, ducet->version_str);
+ printf("\n");
+}
+
+
+static void
+print_contraction(const MY_DUCET_CONTRACTION *c,
+ uint level,
+ const OPT *options)
+{
+ size_t j;
+ printf("{");
+ printf("{");
+ for (j= 0; j < array_elements(c->chars.wc); j++)
+ {
+ if (j > 0)
+ printf(", ");
+ if (c->chars.wc[j])
+ printf("0x%04X", (uint) c->chars.wc[j]);
+ else
+ {
+ printf("0");
+ break;
+ }
+ }
+ printf("}, ");
+ printf("{");
+ for (j= 0; j < array_elements(c->weights.weight[level]); j++)
+ {
+ if (j > 0)
+ printf(", ");
+ if (c->weights.weight[level][j])
+ printf("0x%04X", (uint) c->weights.weight[level][j]);
+ else
+ {
+ printf("0");
+ break;
+ }
+ }
+ printf("}, FALSE");
+ printf("},\n");
+}
+
+
+static void
+print_contraction_list(const MY_DUCET_CONTRACTION_LIST *src, uint level, const OPT *opt)
+{
+ size_t i;
+ printf("\n\n/* Contractions, level %d */\n", level);
+ printf("static MY_CONTRACTION %s_contractions%s[%d]={\n",
+ opt->name_prefix, pname_suffix[level], (int) src->nitems);
+ for (i= 0; i < src->nitems; i++)
+ {
+ const MY_DUCET_CONTRACTION *c= &src->item[i];
+ print_contraction(c, level, opt);
+ }
+ printf("};\n\n");
+}
+
+
+int main(int ac, char **av)
+{
+ char str[1024];
+ static MY_DUCET ducet;
+ my_wc_t code;
+ uint w;
int pageloaded[MY_UCA_NPAGES];
-
- bzero(uca, sizeof(uca));
+ FILE *file;
+ OPT options= defaults;
+
+ if (process_options(&options, ac, av))
+ return 1;
+
+ if (!(file= open_file(options.filename)))
+ {
+ printf("Could not open %s for reading\n", options.filename);
+ return 1;
+ }
+
+ bzero(&ducet, sizeof(ducet));
bzero(pageloaded, sizeof(pageloaded));
- while (fgets(str,sizeof(str),stdin))
+ while (fgets(str, sizeof(str), file))
{
char *comment;
char *weight;
- char *s;
- size_t codenum;
-
- code= strtol(str,NULL,16);
-
- if (str[0]=='#' || (code > MAX_ALLOWED_CODE))
+ MY_DUCET_CHARS chr = {{0,0,0,0,0,0}, 0};
+
+ if (str[0] == '#')
continue;
- if ((comment=strchr(str,'#')))
+
+ if (str[0] == '@')
{
- *comment++= '\0';
- for ( ; *comment==' ' ; comment++);
- }else
+ parse_at_line(&ducet, strrtrim(str));
continue;
-
- if ((weight=strchr(str,';')))
+ }
+
+ if ((weight= strchr(str, ';')))
{
*weight++= '\0';
for ( ; *weight==' ' ; weight++);
}
else
continue;
-
- codenum= 0;
- s= strtok(str, " \t");
- while (s)
- {
- s= strtok(NULL, " \t");
- codenum++;
- }
-
- if (codenum>1)
+
+ if ((comment=strchr(weight, '#')))
{
- /* Multi-character weight,
- i.e. contraction.
- Not supported yet.
- */
+ *comment++= '\0';
+ }else
continue;
- }
-
- uca[code].num= 0;
- s= strtok(weight, " []");
- while (s)
+
+ parse_chars(&chr, str);
+ if (!chr.length)
+ continue;
+
+ if (chr.length == 1)
{
- weights[uca[code].num]= s;
- s= strtok(NULL, " []");
- uca[code].num++;
+ if (chr.wc[0] > MAX_ALLOWED_CODE)
+ continue;
+ parse_weights(&ducet.single_chars[chr.wc[0]].weight,
+ &ducet.single_chars[chr.wc[0]].is_variable,
+ weight);
+ /* Mark that a character from this page was loaded */
+ pageloaded[chr.wc[0] >> MY_UCA_PSHIFT]++;
}
-
- for (w=0; w < uca[code].num; w++)
+ else
{
- size_t partnum;
-
- partnum= 0;
- s= weights[w];
- while (*s)
+ MY_DUCET_WEIGHT weights= {{{0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0}},
+ 0};
+ my_bool dummy;
+ if (chr.length >= MY_UCA_MAX_CONTRACTION)
{
- char *endptr;
- size_t part;
- part= strtol(s+1,&endptr,16);
- uca[code].weight[partnum][w]= part;
- s= endptr;
- partnum++;
+ fprintf(stderr, "Too long contraction: %d\n", (int) chr.length);
+ continue;
}
+ parse_weights(&weights, &dummy, weight);
+ my_ducet_contraction_list_add(&ducet.contractions, &chr, &weights);
+ continue;
}
- /* Mark that a character from this page was loaded */
- pageloaded[code >> MY_UCA_PSHIFT]++;
}
-
-
-
+
+ close_file(file);
+
/* Now set implicit weights */
for (code=0; code <= MAX_ALLOWED_CODE; code++)
{
- size_t base, aaaa, bbbb;
-
- if (uca[code].num)
+ uint level;
+
+ if (ducet.single_chars[code].weight.weight_length)
continue;
-
- /*
- 3400;<CJK Ideograph Extension A, First>
- 4DB5;<CJK Ideograph Extension A, Last>
- 4E00;<CJK Ideograph, First>
- 9FA5;<CJK Ideograph, Last>
- */
-
- if (code >= 0x3400 && code <= 0x4DB5)
- base= 0xFB80;
- else if (code >= 0x4E00 && code <= 0x9FA5)
- base= 0xFB40;
- else
- base= 0xFBC0;
-
- aaaa= base + (code >> 15);
- bbbb= (code & 0x7FFF) | 0x8000;
- uca[code].weight[0][0]= aaaa;
- uca[code].weight[0][1]= bbbb;
-
- uca[code].weight[1][0]= 0x0020;
- uca[code].weight[1][1]= 0x0000;
-
- uca[code].weight[2][0]= 0x0002;
- uca[code].weight[2][1]= 0x0000;
-
- uca[code].weight[3][0]= 0x0001;
- uca[code].weight[3][2]= 0x0000;
-
- uca[code].num= 2;
+
+ for (level= 0; level < 4; level++)
+ {
+ MY_UCA_IMPLICIT_WEIGHT weight;
+ weight= my_uca_implicit_weight_on_level(ducet.version, code, level);
+ ducet.single_chars[code].weight.weight[level][0]= weight.weight[0];
+ ducet.single_chars[code].weight.weight[level][1]= weight.weight[1];
+ }
+ ducet.single_chars[code].weight.weight_length= 2;
}
-
- printf("#include \"my_uca.h\"\n");
-
- printf("#define MY_UCA_NPAGES %d\n",MY_UCA_NPAGES);
- printf("#define MY_UCA_NCHARS %d\n",MY_UCA_NCHARS);
- printf("#define MY_UCA_CMASK %d\n",MY_UCA_CMASK);
- printf("#define MY_UCA_PSHIFT %d\n",MY_UCA_PSHIFT);
- for (w=0; w<3; w++)
+ my_ducet_normalize(&ducet, &options);
+ my_ducet_logical_positions_init(&ducet.logical_positions, &ducet);
+
+ printf("/*\n");
+ printf(" Generated from allkeys.txt version '%s'\n", ducet.version_str);
+ printf("*/\n");
+
+ for (w=0; w < options.levels; w++)
{
- size_t page;
+ my_wc_t page;
int pagemaxlen[MY_UCA_NPAGES];
for (page=0; page < MY_UCA_NPAGES; page++)
{
- size_t offs;
+ my_wc_t offs;
size_t maxnum= 0;
size_t nchars= 0;
size_t mchars;
@@ -219,8 +880,8 @@ int main(int ac, char **av)
code= page*MY_UCA_NCHARS+offs;
/* Calculate only non-zero weights */
- for (num=0, i=0; i < uca[code].num; i++)
- if (uca[code].weight[w][i])
+ for (num=0, i=0; i < ducet.single_chars[code].weight.weight_length; i++)
+ if (ducet.single_chars[code].weight.weight[w][i])
num++;
maxnum= maxnum < num ? num : maxnum;
@@ -229,13 +890,13 @@ int main(int ac, char **av)
if (w == 1 && num == 1)
{
/* 0020 0000 ... */
- if (uca[code].weight[w][0] == 0x0020)
+ if (ducet.single_chars[code].weight.weight[w][0] == 0x0020)
ndefs++;
}
else if (w == 2 && num == 1)
{
/* 0002 0000 ... */
- if (uca[code].weight[w][0] == 0x0002)
+ if (ducet.single_chars[code].weight.weight[w][0] == 0x0002)
ndefs++;
}
}
@@ -256,10 +917,10 @@ int main(int ac, char **av)
case 2: mchars= 8; break;
case 3: mchars= 9; break;
case 4: mchars= 8; break;
- default: mchars= uca[code].num;
+ default: mchars= ducet.single_chars[code].weight.weight_length;
}
- pagemaxlen[page]= maxnum;
+ pagemaxlen[page]= (int) maxnum;
/*
@@ -268,40 +929,18 @@ int main(int ac, char **av)
printf("static const uint16 %s%s%03X%s[]= { /* %04X (%d weights per char) */\n",
- global_name_prefix, pname_prefix[w], (int) page, pname_suffix[w],
+ options.name_prefix, pname_prefix[w], (int) page, pname_suffix[w],
(int) page*MY_UCA_NCHARS, (int) maxnum);
for (offs=0; offs < MY_UCA_NCHARS; offs++)
{
- uint16 weight[8];
- size_t num, i;
+ size_t i;
code= page*MY_UCA_NCHARS+offs;
- bzero(weight,sizeof(weight));
-
- /* Copy non-zero weights */
- for (num=0, i=0; i < uca[code].num; i++)
- {
- if (uca[code].weight[w][i])
- {
- weight[num]= uca[code].weight[w][i];
- num++;
- }
- }
-
for (i=0; i < maxnum; i++)
{
- /*
- Invert weights for secondary level to
- sort upper case letters before their
- lower case counter part.
- */
- int tmp= weight[i];
- if (w == 2 && tmp)
- tmp= (int)(0x20 - weight[i]);
-
-
+ int tmp= ducet.single_chars[code].weight.weight[w][i];
printf("0x%04X", tmp);
if ((offs+1 != MY_UCA_NCHARS) || (i+1!=maxnum))
printf(",");
@@ -324,7 +963,7 @@ int main(int ac, char **av)
}
printf("const uchar %s_length%s[%d]={\n",
- global_name_prefix, pname_suffix[w], MY_UCA_NPAGES);
+ options.name_prefix, pname_suffix[w], MY_UCA_NPAGES);
for (page=0; page < MY_UCA_NPAGES; page++)
{
printf("%d%s%s",pagemaxlen[page],page<MY_UCA_NPAGES-1?",":"",(page+1) % 16 ? "":"\n");
@@ -333,7 +972,7 @@ int main(int ac, char **av)
printf("static const uint16 *%s_weight%s[%d]={\n",
- global_name_prefix, pname_suffix[w], MY_UCA_NPAGES);
+ options.name_prefix, pname_suffix[w], MY_UCA_NPAGES);
for (page=0; page < MY_UCA_NPAGES; page++)
{
const char *comma= page < MY_UCA_NPAGES-1 ? "," : "";
@@ -342,13 +981,16 @@ int main(int ac, char **av)
printf("NULL %s%s%s", w ? " ": "", comma , nline);
else
printf("%s%s%03X%s%s%s",
- global_name_prefix, pname_prefix[w], (int) page, pname_suffix[w],
+ options.name_prefix, pname_prefix[w], (int) page, pname_suffix[w],
comma, nline);
}
printf("};\n");
- }
+ if (!options.no_contractions)
+ print_contraction_list(&ducet.contractions, w, &options);
+ }
+ print_version(&ducet, &options);
+ print_logical_positions(&ducet.logical_positions, &ducet, &options);
- printf("int main(void){ return 0;};\n");
return 0;
}
diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c
index 528eece56b8..757e9f52f33 100644
--- a/tests/mysql_client_test.c
+++ b/tests/mysql_client_test.c
@@ -17008,25 +17008,25 @@ static void test_bug30472()
{
MYSQL con;
- char character_set_name_1[MY_CS_NAME_SIZE];
- char character_set_client_1[MY_CS_NAME_SIZE];
- char character_set_results_1[MY_CS_NAME_SIZE];
- char collation_connnection_1[MY_CS_NAME_SIZE];
-
- char character_set_name_2[MY_CS_NAME_SIZE];
- char character_set_client_2[MY_CS_NAME_SIZE];
- char character_set_results_2[MY_CS_NAME_SIZE];
- char collation_connnection_2[MY_CS_NAME_SIZE];
-
- char character_set_name_3[MY_CS_NAME_SIZE];
- char character_set_client_3[MY_CS_NAME_SIZE];
- char character_set_results_3[MY_CS_NAME_SIZE];
- char collation_connnection_3[MY_CS_NAME_SIZE];
-
- char character_set_name_4[MY_CS_NAME_SIZE];
- char character_set_client_4[MY_CS_NAME_SIZE];
- char character_set_results_4[MY_CS_NAME_SIZE];
- char collation_connnection_4[MY_CS_NAME_SIZE];
+ char character_set_name_1[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char character_set_client_1[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char character_set_results_1[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char collation_connnection_1[MY_CS_COLLATION_NAME_SIZE];
+
+ char character_set_name_2[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char character_set_client_2[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char character_set_results_2[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char collation_connnection_2[MY_CS_COLLATION_NAME_SIZE];
+
+ char character_set_name_3[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char character_set_client_3[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char character_set_results_3[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char collation_connnection_3[MY_CS_COLLATION_NAME_SIZE];
+
+ char character_set_name_4[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char character_set_client_4[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char character_set_results_4[MY_CS_CHARACTER_SET_NAME_SIZE];
+ char collation_connnection_4[MY_CS_COLLATION_NAME_SIZE];
/* Create a new connection. */
diff --git a/unittest/strings/strings-t.c b/unittest/strings/strings-t.c
index 597998f5360..ac09e116a65 100644
--- a/unittest/strings/strings-t.c
+++ b/unittest/strings/strings-t.c
@@ -1341,7 +1341,7 @@ strnncollsp_char_one(CHARSET_INFO *cs, const STRNNCOLLSP_CHAR_PARAM *p)
str2hex(ahex, sizeof(ahex), p->a.str, p->a.length);
str2hex(bhex, sizeof(bhex), p->b.str, p->b.length);
diag("%-25s %-12s %-12s %3d %7d %7d%s",
- cs->cs_name.str, ahex, bhex, (int) p->nchars, p->res, res,
+ cs->coll_name.str, ahex, bhex, (int) p->nchars, p->res, res,
eqres(res, p->res) ? "" : " FAILED");
if (!eqres(res, p->res))
{