From 253231b21409670309be769b314dd89b99356267 Mon Sep 17 00:00:00 2001 From: solid-yang Date: Thu, 1 Feb 2024 10:13:35 +0800 Subject: [PATCH 1/2] add my.cnf --- my.cnf | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 my.cnf diff --git a/my.cnf b/my.cnf new file mode 100644 index 0000000..0ea8124 --- /dev/null +++ b/my.cnf @@ -0,0 +1,24 @@ +[mysqld] +bind-address=0.0.0.0 +transaction_isolation='read-committed' + +skip-log-bin +skip-ssl +skip-mysqlx +gtid_mode=off +max_connections=2000 +back_log=1000 +join_buffer_size=2M +key_buffer_size=16M +sort_buffer_size=2M +read_rnd_buffer_size=1M +log_slave_updates=OFF +table_open_cache=81920 +table_open_cache_instances=64 +max_prepared_stmt_count=1000000 +performance_schema=ON +default-time-zone="+08:00" +check_proxy_users=ON +log_raw=ON +mysql_native_password_proxy_users=ON + -- Gitee From 7bc1face041fd50dd13acbed67be7f5acab9e0f4 Mon Sep 17 00:00:00 2001 From: solid-yang Date: Thu, 1 Feb 2024 14:50:53 +0800 Subject: [PATCH 2/2] add test results files --- .../suite/tianchi/r/ctc_atomic_ddl.result | 417 ++ .../suite/tianchi/r/ctc_auto_increment.result | 732 +++ mysql-test/suite/tianchi/r/ctc_charset.result | 637 ++ .../suite/tianchi/r/ctc_charset_binary.result | 236 + .../tianchi/r/ctc_charset_collate.result | 1259 ++++ .../r/ctc_compressed_proxy_conn.result | 14 + .../suite/tianchi/r/ctc_cond_pushdown.result | 680 +++ .../r/ctc_cond_pushdown_explain.result | 368 ++ .../tianchi/r/ctc_crud_for_drop_column.result | 1076 ++++ .../suite/tianchi/r/ctc_datatype.result | 372 ++ .../suite/tianchi/r/ctc_datatype_adapt.result | 199 + .../suite/tianchi/r/ctc_datatype_blob.result | 202 + .../suite/tianchi/r/ctc_dc_reuse.result | 129 + mysql-test/suite/tianchi/r/ctc_dcl.result | 349 ++ mysql-test/suite/tianchi/r/ctc_ddl.result | 206 + .../tianchi/r/ctc_ddl_alter_table.result | 1637 ++++++ .../suite/tianchi/r/ctc_ddl_analyze.result | 72 + .../suite/tianchi/r/ctc_ddl_auto_inc.result | 1201 ++++ .../suite/tianchi/r/ctc_ddl_cascade.result | 1108 ++++ .../tianchi/r/ctc_ddl_character_set.result | 170 + .../r/ctc_ddl_create_table_check.result | 6 + .../tianchi/r/ctc_ddl_default_index.result | 807 +++ .../suite/tianchi/r/ctc_ddl_engine.result | 77 + .../tianchi/r/ctc_ddl_foreign_key.result | 330 ++ .../r/ctc_ddl_foreign_key_set_enum.result | 85 + .../suite/tianchi/r/ctc_ddl_func_index.result | 90 + .../suite/tianchi/r/ctc_ddl_func_proc.result | 54 + .../r/ctc_ddl_generated_columns.result | 202 + .../suite/tianchi/r/ctc_ddl_index.result | 387 ++ .../tianchi/r/ctc_ddl_max_reclength.result | 47 + .../suite/tianchi/r/ctc_ddl_multi_db.result | 105 + .../suite/tianchi/r/ctc_ddl_partition.result | 1381 +++++ .../suite/tianchi/r/ctc_ddl_trigger.result | 119 + .../r/ctc_ddl_unsupport_command.result | 162 + .../suite/tianchi/r/ctc_ddl_view.result | 78 + .../suite/tianchi/r/ctc_delete_time.result | 739 +++ .../tianchi/r/ctc_dml_decimal_table.result | 324 ++ .../suite/tianchi/r/ctc_dml_ignore.result | 434 ++ .../suite/tianchi/r/ctc_dml_two_table.result | 103 + .../tianchi/r/ctc_handler_operation.result | 56 + .../tianchi/r/ctc_index_functions_base.result | 461 ++ .../suite/tianchi/r/ctc_insert_time.result | 5166 +++++++++++++++++ .../suite/tianchi/r/ctc_json_value.result | 295 + mysql-test/suite/tianchi/r/ctc_lcov.result | 62 + .../tianchi/r/ctc_link_and_migr_row.result | 431 ++ .../suite/tianchi/r/ctc_lock_instance.result | 26 + ...urrency_with_nowait_and_skip_locked.result | 43 + .../tianchi/r/ctc_partition_update.result | 143 + .../suite/tianchi/r/ctc_read_only.result | 347 ++ .../tianchi/r/ctc_select_early_return.result | 173 + .../suite/tianchi/r/ctc_update_time.result | 1490 +++++ mysql-test/suite/tianchi/r/ctc_varchar.result | 439 ++ .../suite/tianchi/r/recreate_test_db.result | 2 + 53 files changed, 25728 insertions(+) create mode 100644 mysql-test/suite/tianchi/r/ctc_atomic_ddl.result create mode 100644 mysql-test/suite/tianchi/r/ctc_auto_increment.result create mode 100644 mysql-test/suite/tianchi/r/ctc_charset.result create mode 100644 mysql-test/suite/tianchi/r/ctc_charset_binary.result create mode 100644 mysql-test/suite/tianchi/r/ctc_charset_collate.result create mode 100644 mysql-test/suite/tianchi/r/ctc_compressed_proxy_conn.result create mode 100644 mysql-test/suite/tianchi/r/ctc_cond_pushdown.result create mode 100644 mysql-test/suite/tianchi/r/ctc_cond_pushdown_explain.result create mode 100644 mysql-test/suite/tianchi/r/ctc_crud_for_drop_column.result create mode 100644 mysql-test/suite/tianchi/r/ctc_datatype.result create mode 100644 mysql-test/suite/tianchi/r/ctc_datatype_adapt.result create mode 100644 mysql-test/suite/tianchi/r/ctc_datatype_blob.result create mode 100644 mysql-test/suite/tianchi/r/ctc_dc_reuse.result create mode 100644 mysql-test/suite/tianchi/r/ctc_dcl.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_alter_table.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_analyze.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_auto_inc.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_cascade.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_character_set.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_create_table_check.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_default_index.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_engine.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_foreign_key.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_foreign_key_set_enum.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_func_index.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_func_proc.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_generated_columns.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_index.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_max_reclength.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_multi_db.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_partition.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_trigger.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_unsupport_command.result create mode 100644 mysql-test/suite/tianchi/r/ctc_ddl_view.result create mode 100644 mysql-test/suite/tianchi/r/ctc_delete_time.result create mode 100644 mysql-test/suite/tianchi/r/ctc_dml_decimal_table.result create mode 100644 mysql-test/suite/tianchi/r/ctc_dml_ignore.result create mode 100644 mysql-test/suite/tianchi/r/ctc_dml_two_table.result create mode 100644 mysql-test/suite/tianchi/r/ctc_handler_operation.result create mode 100644 mysql-test/suite/tianchi/r/ctc_index_functions_base.result create mode 100644 mysql-test/suite/tianchi/r/ctc_insert_time.result create mode 100644 mysql-test/suite/tianchi/r/ctc_json_value.result create mode 100644 mysql-test/suite/tianchi/r/ctc_lcov.result create mode 100644 mysql-test/suite/tianchi/r/ctc_link_and_migr_row.result create mode 100644 mysql-test/suite/tianchi/r/ctc_lock_instance.result create mode 100644 mysql-test/suite/tianchi/r/ctc_locking_read_concurrency_with_nowait_and_skip_locked.result create mode 100644 mysql-test/suite/tianchi/r/ctc_partition_update.result create mode 100644 mysql-test/suite/tianchi/r/ctc_read_only.result create mode 100644 mysql-test/suite/tianchi/r/ctc_select_early_return.result create mode 100644 mysql-test/suite/tianchi/r/ctc_update_time.result create mode 100644 mysql-test/suite/tianchi/r/ctc_varchar.result create mode 100644 mysql-test/suite/tianchi/r/recreate_test_db.result diff --git a/mysql-test/suite/tianchi/r/ctc_atomic_ddl.result b/mysql-test/suite/tianchi/r/ctc_atomic_ddl.result new file mode 100644 index 0000000..1a6757f --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_atomic_ddl.result @@ -0,0 +1,417 @@ +drop table if exists t,t1,t2,t3,t4; +create table t(id int primary key); +create table t1( +a int DEFAULT NULL, +b blob, +c float, +`col2` int, `col3` int, gcol1 INTEGER GENERATED ALWAYS AS (col2 + col3) VIRTUAL, +c1 TEXT character set armscii8 collate armscii8_general_ci, +id int primary key auto_increment,name varchar(8) not null,id_crd bigint zerofill, +foreign key(id) references t(id)); +Warnings: +Warning 1681 The ZEROFILL attribute is deprecated and will be removed in a future release. Use the LPAD function to zero-pad numbers, or store the formatted numbers in a CHAR column. +CREATE TABLE t2(a int primary key,c1 float AUTO_INCREMENT,index(c1)) +PARTITION BY RANGE(a) subpartition by hash(a) +subpartitions 4( +partition p0 values less than(10), +partition p1 values less than(99), +partition p2 values less than(999), +partition p3 values less than(1000), +partition p4 values less than(2001), +partition p5 values less than(3000)); +Warnings: +Warning 3856 AUTO_INCREMENT support for FLOAT/DOUBLE columns is deprecated and will be removed in a future release. Consider removing AUTO_INCREMENT from column 'c1'. +create table t3(a varchar(100), b int, c int, index(b)) +partition by list columns(a) ( +partition p1 values in ('p1'), +partition p2 values in ('p2'), +partition p3 values in ('p3'), +partition p4 values in ('p4')); +create table t4( +a int DEFAULT NULL, +b blob, +c float, +`col2` int, `col3` int, gcol1 INTEGER GENERATED ALWAYS AS (col2 + col3) VIRTUAL, +c1 TEXT character set armscii8 collate armscii8_general_ci, +id int primary key auto_increment,name varchar(8) not null,id_crd bigint zerofill); +Warnings: +Warning 1681 The ZEROFILL attribute is deprecated and will be removed in a future release. Use the LPAD function to zero-pad numbers, or store the formatted numbers in a CHAR column. +show create table t; +Table Create Table +t CREATE TABLE `t` ( + `id` int NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int DEFAULT NULL, + `b` blob, + `c` float DEFAULT NULL, + `col2` int DEFAULT NULL, + `col3` int DEFAULT NULL, + `gcol1` int GENERATED ALWAYS AS ((`col2` + `col3`)) VIRTUAL, + `c1` text CHARACTER SET armscii8 COLLATE armscii8_general_ci, + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(8) NOT NULL, + `id_crd` bigint(20) unsigned zerofill DEFAULT NULL, + PRIMARY KEY (`id`), + CONSTRAINT `t1_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show create table t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int NOT NULL, + `c1` float NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`), + KEY `c1` (`c1`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +/*!50100 PARTITION BY RANGE (`a`) +SUBPARTITION BY HASH (`a`) +SUBPARTITIONS 4 +(PARTITION p0 VALUES LESS THAN (10) ENGINE = CTC, + PARTITION p1 VALUES LESS THAN (99) ENGINE = CTC, + PARTITION p2 VALUES LESS THAN (999) ENGINE = CTC, + PARTITION p3 VALUES LESS THAN (1000) ENGINE = CTC, + PARTITION p4 VALUES LESS THAN (2001) ENGINE = CTC, + PARTITION p5 VALUES LESS THAN (3000) ENGINE = CTC) */ +show create table t3; +Table Create Table +t3 CREATE TABLE `t3` ( + `a` varchar(100) DEFAULT NULL, + `b` int DEFAULT NULL, + `c` int DEFAULT NULL, + KEY `b` (`b`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +/*!50500 PARTITION BY LIST COLUMNS(a) +(PARTITION p1 VALUES IN ('p1') ENGINE = CTC, + PARTITION p2 VALUES IN ('p2') ENGINE = CTC, + PARTITION p3 VALUES IN ('p3') ENGINE = CTC, + PARTITION p4 VALUES IN ('p4') ENGINE = CTC) */ +show create table t4; +Table Create Table +t4 CREATE TABLE `t4` ( + `a` int DEFAULT NULL, + `b` blob, + `c` float DEFAULT NULL, + `col2` int DEFAULT NULL, + `col3` int DEFAULT NULL, + `gcol1` int GENERATED ALWAYS AS ((`col2` + `col3`)) VIRTUAL, + `c1` text CHARACTER SET armscii8 COLLATE armscii8_general_ci, + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(8) NOT NULL, + `id_crd` bigint(20) unsigned zerofill DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t (id) VALUES (1); +INSERT INTO t (id) VALUES (2); +INSERT INTO t1 (a, b, c, `col2`, `col3`, c1, id, name, id_crd) VALUES (1, repeat('g', 16), 3.1415, 1, 2, 'abc', 1, concat('name',1), 10000000000+1); +INSERT INTO t2 VALUES(5, null); +INSERT INTO t2 VALUES(99, null); +INSERT INTO t2 VALUES(2100, null); +INSERT INTO t3 VALUES('p1',10,20); +INSERT INTO t3 VALUES('p2',100,200); +INSERT INTO t4 (a, b, c, `col2`, `col3`, c1, id, name, id_crd) VALUES (1, repeat('g', 16), 3.1415, 1, 2, 'abc', 1, concat('name',1), 10000000000+1); +SELECT * FROM t; +id +1 +2 +SELECT * FROM t1; +a b c col2 col3 gcol1 c1 id name id_crd +1 gggggggggggggggg 3.1415 1 2 3 abc 1 name1 00000000010000000001 +SELECT * FROM t2; +a c1 +5 1 +99 2 +2100 3 +SELECT * FROM t3; +a b c +p1 10 20 +p2 100 200 +SELECT * FROM t4; +a b c col2 col3 gcol1 c1 id name id_crd +1 gggggggggggggggg 3.1415 1 2 3 abc 1 name1 00000000010000000001 +rename table t to t00,t1 to t2; +ERROR 42S01: Table 't2' already exists +rename table t1 to t11,t2 to t3; +ERROR 42S01: Table 't3' already exists +rename table t2 to t22,t3 to t4; +ERROR 42S01: Table 't4' already exists +rename table t3 to t33,t4 to t; +ERROR 42S01: Table 't' already exists +rename table t4 to t44,t to t1; +ERROR 42S01: Table 't1' already exists +rename table t to t00,t to t55; +ERROR 42S02: Table 'test.t' doesn't exist +rename table t1 to t11,t1 to t55; +ERROR 42S02: Table 'test.t1' doesn't exist +rename table t2 to t22,t2 to t55; +ERROR 42S02: Table 'test.t2' doesn't exist +rename table t3 to t33,t3 to t55; +ERROR 42S02: Table 'test.t3' doesn't exist +rename table t4 to t44,t4 to t55; +ERROR 42S02: Table 'test.t4' doesn't exist +rename table t to t00,t to t00; +ERROR 42S01: Table 't00' already exists +rename table t1 to t11,t1 to t11; +ERROR 42S01: Table 't11' already exists +rename table t2 to t22,t2 to t22; +ERROR 42S01: Table 't22' already exists +rename table t3 to t33,t3 to t33; +ERROR 42S01: Table 't33' already exists +rename table t4 to t44,t4 to t44; +ERROR 42S01: Table 't44' already exists +show tables; +Tables_in_test +t +t1 +t2 +t3 +t4 +show create table t; +Table Create Table +t CREATE TABLE `t` ( + `id` int NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int DEFAULT NULL, + `b` blob, + `c` float DEFAULT NULL, + `col2` int DEFAULT NULL, + `col3` int DEFAULT NULL, + `gcol1` int GENERATED ALWAYS AS ((`col2` + `col3`)) VIRTUAL, + `c1` text CHARACTER SET armscii8 COLLATE armscii8_general_ci, + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(8) NOT NULL, + `id_crd` bigint(20) unsigned zerofill DEFAULT NULL, + PRIMARY KEY (`id`), + CONSTRAINT `t1_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show create table t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int NOT NULL, + `c1` float NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`), + KEY `c1` (`c1`) +) ENGINE=CTC AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +/*!50100 PARTITION BY RANGE (`a`) +SUBPARTITION BY HASH (`a`) +SUBPARTITIONS 4 +(PARTITION p0 VALUES LESS THAN (10) ENGINE = CTC, + PARTITION p1 VALUES LESS THAN (99) ENGINE = CTC, + PARTITION p2 VALUES LESS THAN (999) ENGINE = CTC, + PARTITION p3 VALUES LESS THAN (1000) ENGINE = CTC, + PARTITION p4 VALUES LESS THAN (2001) ENGINE = CTC, + PARTITION p5 VALUES LESS THAN (3000) ENGINE = CTC) */ +show create table t3; +Table Create Table +t3 CREATE TABLE `t3` ( + `a` varchar(100) DEFAULT NULL, + `b` int DEFAULT NULL, + `c` int DEFAULT NULL, + KEY `b` (`b`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +/*!50500 PARTITION BY LIST COLUMNS(a) +(PARTITION p1 VALUES IN ('p1') ENGINE = CTC, + PARTITION p2 VALUES IN ('p2') ENGINE = CTC, + PARTITION p3 VALUES IN ('p3') ENGINE = CTC, + PARTITION p4 VALUES IN ('p4') ENGINE = CTC) */ +show create table t4; +Table Create Table +t4 CREATE TABLE `t4` ( + `a` int DEFAULT NULL, + `b` blob, + `c` float DEFAULT NULL, + `col2` int DEFAULT NULL, + `col3` int DEFAULT NULL, + `gcol1` int GENERATED ALWAYS AS ((`col2` + `col3`)) VIRTUAL, + `c1` text CHARACTER SET armscii8 COLLATE armscii8_general_ci, + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(8) NOT NULL, + `id_crd` bigint(20) unsigned zerofill DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show create table t00; +ERROR 42S02: Table 'test.t00' doesn't exist +show create table t11; +ERROR 42S02: Table 'test.t11' doesn't exist +show create table t22; +ERROR 42S02: Table 'test.t22' doesn't exist +show create table t33; +ERROR 42S02: Table 'test.t33' doesn't exist +show create table t44; +ERROR 42S02: Table 'test.t44' doesn't exist +show create table t55; +ERROR 42S02: Table 'test.t55' doesn't exist +rename table t1 to t11, t to t1; +rename table t2 to t22, t11 to t2; +rename table t3 to t33, t22 to t3; +rename table t4 to t44, t33 to t4; +show tables; +Tables_in_test +t1 +t2 +t3 +t4 +t44 +show create table t; +ERROR 42S02: Table 'test.t' doesn't exist +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` int NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show create table t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `a` int DEFAULT NULL, + `b` blob, + `c` float DEFAULT NULL, + `col2` int DEFAULT NULL, + `col3` int DEFAULT NULL, + `gcol1` int GENERATED ALWAYS AS ((`col2` + `col3`)) VIRTUAL, + `c1` text CHARACTER SET armscii8 COLLATE armscii8_general_ci, + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(8) NOT NULL, + `id_crd` bigint(20) unsigned zerofill DEFAULT NULL, + PRIMARY KEY (`id`), + CONSTRAINT `t2_fk_1` FOREIGN KEY (`id`) REFERENCES `t1` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show create table t3; +Table Create Table +t3 CREATE TABLE `t3` ( + `a` int NOT NULL, + `c1` float NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`), + KEY `c1` (`c1`) +) ENGINE=CTC AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +/*!50100 PARTITION BY RANGE (`a`) +SUBPARTITION BY HASH (`a`) +SUBPARTITIONS 4 +(PARTITION p0 VALUES LESS THAN (10) ENGINE = CTC, + PARTITION p1 VALUES LESS THAN (99) ENGINE = CTC, + PARTITION p2 VALUES LESS THAN (999) ENGINE = CTC, + PARTITION p3 VALUES LESS THAN (1000) ENGINE = CTC, + PARTITION p4 VALUES LESS THAN (2001) ENGINE = CTC, + PARTITION p5 VALUES LESS THAN (3000) ENGINE = CTC) */ +show create table t4; +Table Create Table +t4 CREATE TABLE `t4` ( + `a` varchar(100) DEFAULT NULL, + `b` int DEFAULT NULL, + `c` int DEFAULT NULL, + KEY `b` (`b`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +/*!50500 PARTITION BY LIST COLUMNS(a) +(PARTITION p1 VALUES IN ('p1') ENGINE = CTC, + PARTITION p2 VALUES IN ('p2') ENGINE = CTC, + PARTITION p3 VALUES IN ('p3') ENGINE = CTC, + PARTITION p4 VALUES IN ('p4') ENGINE = CTC) */ +show create table t44; +Table Create Table +t44 CREATE TABLE `t44` ( + `a` int DEFAULT NULL, + `b` blob, + `c` float DEFAULT NULL, + `col2` int DEFAULT NULL, + `col3` int DEFAULT NULL, + `gcol1` int GENERATED ALWAYS AS ((`col2` + `col3`)) VIRTUAL, + `c1` text CHARACTER SET armscii8 COLLATE armscii8_general_ci, + `id` int NOT NULL AUTO_INCREMENT, + `name` varchar(8) NOT NULL, + `id_crd` bigint(20) unsigned zerofill DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +rename table t1 to t, t2 to t1, t3 to t2, t4 to t3, t44 to t4; +rename table t to t00, t00 to t; +rename table t1 to t11, t11 to t1; +rename table t2 to t22, t22 to t2; +rename table t3 to t33, t33 to t3; +rename table t4 to t44, t44 to t4; +rename table t1 to t11, t11 to t111, t111 to t1111; +rename table t to t00, t00 to t000, t000 to t0000; +rename table t2 to t22, t22 to t222, t222 to t2222; +rename table t3 to t33, t33 to t333, t333 to t3333; +rename table t4 to t44, t44 to t444, t444 to t4444; +show tables; +Tables_in_test +t0000 +t1111 +t2222 +t3333 +t4444 +drop table t0000,t1111,t2222,t3333,t4444; +create table t0 SELECT 1,"table 1"; +create table t2 SELECT 2,"table 2"; +create table t3 SELECT 3,"table 3"; +rename table t0 to t1; +rename table t3 to t4, t2 to t3, t1 to t2, t4 to t1; +select * from t1; +3 table 3 +3 table 3 +rename table t3 to t4, t2 to t3, t1 to t2, t4 to t1; +rename table t3 to t4, t2 to t3, t1 to t2, t4 to t1; +select * from t1; +1 table 1 +1 table 1 +rename table t1 to t2; +ERROR 42S01: Table 't2' already exists +rename table t1 to t1; +ERROR 42S01: Table 't1' already exists +rename table t3 to t4, t2 to t3, t1 to t2, t4 to t2; +ERROR 42S01: Table 't2' already exists +show tables like "t_"; +Tables_in_test (t_) +t1 +t2 +t3 +rename table t3 to t1, t2 to t3, t1 to t2, t4 to t1; +ERROR 42S01: Table 't1' already exists +rename table t3 to t4, t5 to t3, t1 to t2, t4 to t1; +ERROR 42S02: Table 'test.t5' doesn't exist +drop table t1; +drop table t2,t3; +CREATE TABLE t(c1 INT CONSTRAINT t2_chk_1 CHECK (c1 > 10)); +CREATE TABLE t1(c1 INT CHECK (c1 > 10), CONSTRAINT ck CHECK(c1 > 10)); +CREATE TABLE t2(c1 INT, CONSTRAINT ck CHECK(c1 > 10)); +ERROR HY000: Duplicate check constraint name 'ck'. +ALTER TABLE t1 ADD CONSTRAINT ck CHECK(c1 > 10); +ERROR HY000: Duplicate check constraint name 'ck'. +ALTER TABLE t1 RENAME TO t2; +ERROR HY000: Duplicate check constraint name 't2_chk_1'. +ALTER TABLE t1 ADD c2 INT, RENAME TO t2; +ERROR HY000: Duplicate check constraint name 't2_chk_1'. +DROP TABLE t; +DROP TABLE t1; +CREATE TABLE t0(a INT, b INT); +INSERT INTO t0 VALUES (1,1), (1,2), (2,2); +CREATE TABLE t1(a INT PRIMARY KEY,b INT) SELECT a,b FROM t0 ORDER BY a,b; +ERROR 23000: Duplicate entry '1' for key 't1.PRIMARY' +drop table t0; +CREATE TABLE parent(pk INTEGER PRIMARY KEY, j INTEGER, +UNIQUE KEY parent_key(j)); +CREATE TABLE child(pk INTEGER PRIMARY KEY, k INTEGER, fk INTEGER, +FOREIGN KEY (fk) REFERENCES parent(j), UNIQUE KEY child_key(k)); +CREATE TABLE grandchild(pk INTEGER PRIMARY KEY, fk INTEGER, +FOREIGN KEY (fk) REFERENCES child(k)); +SET @@foreign_key_checks= 0; +CREATE TABLE orphan_grandchild(pk INTEGER PRIMARY KEY, fk INTEGER, +FOREIGN KEY (fk) REFERENCES siebling(k)); +SET @@foreign_key_checks= 1; +CREATE TABLE non_atomic_t1(pk INTEGER) ENGINE= CTC; +CREATE TABLE non_atomic_t2(pk INTEGER) ENGINE= CTC; +RENAME TABLE child TO siebling, +non_atomic_t1 TO non_atomic_t3, +non_atomic_t3 TO non_atomic_t2; +ERROR 42S01: Table 'non_atomic_t2' already exists +DROP TABLE grandchild; +DROP TABLE orphan_grandchild; +DROP TABLE child; +DROP TABLE parent; +DROP TABLE non_atomic_t1; +DROP TABLE non_atomic_t2; diff --git a/mysql-test/suite/tianchi/r/ctc_auto_increment.result b/mysql-test/suite/tianchi/r/ctc_auto_increment.result new file mode 100644 index 0000000..25ae943 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_auto_increment.result @@ -0,0 +1,732 @@ +drop table if exists t1; +set @@session.auto_increment_offset=1; +set @@session.auto_increment_increment=10; +SHOW VARIABLES LIKE 'auto_inc%'; +Variable_name Value +auto_increment_increment 10 +auto_increment_offset 1 +CREATE TABLE t1 (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY); +INSERT INTO t1 VALUES (NULL), (NULL), (NULL), (NULL); +SELECT col FROM t1; +col +1 +11 +21 +31 +set @@session.auto_increment_offset=5; +INSERT INTO t1 VALUES (NULL), (NULL), (NULL), (NULL); +select col from t1; +col +1 +11 +21 +31 +45 +55 +65 +75 +drop table t1; +set @@session.auto_increment_offset=1; +set @@session.auto_increment_increment=1; +SHOW VARIABLES LIKE 'auto_inc%'; +Variable_name Value +auto_increment_increment 1 +auto_increment_offset 1 +CREATE TABLE t1 (col INT NOT NULL AUTO_INCREMENT PRIMARY KEY); +INSERT INTO t1 VALUES (NULL), (NULL); +SELECT col FROM t1; +col +1 +2 +set @@session.auto_increment_increment=10; +INSERT INTO t1 VALUES (NULL), (NULL); +select col from t1; +col +1 +2 +21 +31 +drop table t1; +set @@session.auto_increment_offset=1; +set @@session.auto_increment_increment=2; +SHOW VARIABLES LIKE 'auto_inc%'; +Variable_name Value +auto_increment_increment 2 +auto_increment_offset 1 +CREATE TABLE t1 ( +id int NOT NULL AUTO_INCREMENT, +name varchar(30), +PRIMARY KEY (id) +) AUTO_INCREMENT=2; +INSERT into t1(name) values('3'); +INSERT into t1(name) values('5'); +INSERT into t1(name) values('7'); +select * from t1; +id name +3 3 +5 5 +7 7 +drop table t1; +set @@session.auto_increment_offset=1; +set @@session.auto_increment_increment=1; +CREATE TABLE t1(c1 TINYINT AUTO_INCREMENT NOT NULL KEY); +ALTER TABLE t1 AUTO_INCREMENT=10; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` tinyint NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`c1`) +) ENGINE=CTC AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t1 VALUES (NULL), (NULL); +select * from t1; +c1 +10 +11 +drop table t1; +set @@session.auto_increment_offset=1; +set @@session.auto_increment_increment=1; +CREATE TABLE t1(c1 TINYINT AUTO_INCREMENT NOT NULL KEY); +INSERT INTO t1 VALUES (NULL), (NULL); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` tinyint NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`c1`) +) ENGINE=CTC AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +ALTER TABLE t1 AUTO_INCREMENT=10; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` tinyint NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`c1`) +) ENGINE=CTC AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t1 VALUES (NULL), (NULL); +select * from t1; +c1 +1 +2 +10 +11 +drop table t1; +set @@session.auto_increment_offset=1; +set @@session.auto_increment_increment=1; +CREATE TABLE t3(a SMALLINT AUTO_INCREMENT KEY); +ALTER TABLE t3 AUTO_INCREMENT = 100; +INSERT INTO t3 VALUES(0), (0); +select * from t3; +a +100 +101 +truncate table t3; +ALTER TABLE t3 AUTO_INCREMENT = 100; +INSERT INTO t3 VALUES(0), (0); +select * from t3; +a +100 +101 +drop table t3; +set @@session.auto_increment_offset=1; +set @@session.auto_increment_increment=1; +create table t3(id int,c1 int,index(id)); +alter table t3 MODIFY COLUMN id int auto_increment,auto_increment=100; +insert into t3 values(null,1); +truncate table t3; +alter table t3 MODIFY COLUMN id int auto_increment,auto_increment=100; +show create table t3; +Table Create Table +t3 CREATE TABLE `t3` ( + `id` int NOT NULL AUTO_INCREMENT, + `c1` int DEFAULT NULL, + KEY `id` (`id`) +) ENGINE=CTC AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t3; +create table t3(id int,c1 int,index(id)); +alter table t3 MODIFY COLUMN id int auto_increment,auto_increment=100; +truncate table t3; +alter table t3 MODIFY COLUMN id int auto_increment,auto_increment=100; +show create table t3; +Table Create Table +t3 CREATE TABLE `t3` ( + `id` int NOT NULL AUTO_INCREMENT, + `c1` int DEFAULT NULL, + KEY `id` (`id`) +) ENGINE=CTC AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t3; +set @@session.auto_increment_offset=1; +set @@session.auto_increment_increment=1; +SHOW VARIABLES LIKE 'auto_inc%'; +Variable_name Value +auto_increment_increment 1 +auto_increment_offset 1 +CREATE TABLE DEMO (a DOUBLE AUTO_INCREMENT KEY); +Warnings: +Warning 3856 AUTO_INCREMENT support for FLOAT/DOUBLE columns is deprecated and will be removed in a future release. Consider removing AUTO_INCREMENT from column 'a'. +insert into DEMO values (-1.7976931348623157E+308); +ERROR 22007: Truncated incorrect INTEGER value: '-1.7976931348623157e308' +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `a` double NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into DEMO values (1.7976931348623157E+308); +ERROR 22007: Truncated incorrect INTEGER value: '1.7976931348623157e308' +insert into DEMO values (null); +select * from DEMO; +a +1 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `a` double NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +CREATE TABLE DEMO (a FLOAT AUTO_INCREMENT KEY); +Warnings: +Warning 3856 AUTO_INCREMENT support for FLOAT/DOUBLE columns is deprecated and will be removed in a future release. Consider removing AUTO_INCREMENT from column 'a'. +insert into DEMO values(-3.402823466E+38); +select * from DEMO; +a +-3.40282e38 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `a` float NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into DEMO values(-1.175494351E-38); +select * from DEMO; +a +-3.40282e38 +1 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `a` float NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into DEMO values(3.402823466E+38); +select * from DEMO; +a +-3.40282e38 +1 +3.40282e38 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `a` float NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into DEMO values(16777215); +select * from DEMO; +a +-3.40282e38 +1 +16777200 +3.40282e38 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `a` float NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`) +) ENGINE=CTC AUTO_INCREMENT=16777216 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into DEMO values(16777216); +select * from DEMO; +a +-3.40282e38 +1 +16777200 +16777200 +3.40282e38 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `a` float NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`) +) ENGINE=CTC AUTO_INCREMENT=16777216 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into DEMO values(16777217); +ERROR 23000: Duplicate entry '16777200' for key 'DEMO.PRIMARY' +insert into DEMO values (9223372036854775807); +drop table DEMO; +CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY); +SET insert_id = 2; +INSERT INTO t1 VALUES (NULL); +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +2 +SELECT a FROM t1 WHERE a IS NULL; +a +SELECT /*+ SET_VAR(sql_auto_is_null=1) */ a FROM t1 WHERE a IS NULL; +a +2 +INSERT INTO t1 VALUES (1); +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +2 +SELECT /*+ SET_VAR(sql_auto_is_null=1) */ a FROM t1 WHERE a IS NULL; +a +2 +INSERT INTO t1 VALUES (); +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +3 +SELECT /*+ SET_VAR(sql_auto_is_null=1) */ a FROM t1 WHERE a IS NULL; +a +3 +INSERT INTO t1 VALUES (0); +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +4 +SELECT /*+ SET_VAR(sql_auto_is_null=1) */ a FROM t1 WHERE a IS NULL; +a +4 +INSERT INTO t1 VALUES (NULL); +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +5 +SELECT /*+ SET_VAR(sql_auto_is_null=1) */ a FROM t1 WHERE a IS NULL; +a +5 +SET insert_id = 0; +INSERT INTO t1 VALUES (NULL); +SELECT LAST_INSERT_ID(); +LAST_INSERT_ID() +5 +SELECT /*+ SET_VAR(sql_auto_is_null=1) */ a FROM t1 WHERE a IS NULL; +a +5 +SELECT * FROM t1; +a +0 +1 +2 +3 +4 +5 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`a`) +) ENGINE=CTC AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +DROP TABLE t1; +create table t1 (a INT AUTO_INCREMENT KEY, b varchar(30)); +insert into t1 values(1000, '1'); +insert into t1(b) values('1001'); +select * from t1; +a b +1000 1 +1001 1001 +replace into t1 values(0, '1002'),(1000, '2'); +select * from t1; +a b +1000 2 +1001 1001 +1002 1002 +DROP TABLE t1; +create table t1 (a INT AUTO_INCREMENT, index(a)); +insert into t1 values(null),(null); +select * from t1; +a +1 +2 +alter table t1 ALTER COLUMN a set default 10; +insert into t1 values(); +insert into t1 values(); +select * from t1; +a +1 +2 +10 +10 +insert into t1 values(null); +select * from t1; +a +1 +2 +10 +10 +11 +drop table t1; +create table t1 (a INT AUTO_INCREMENT KEY); +insert into t1 values(null),(null); +select * from t1; +a +1 +2 +alter table t1 ALTER COLUMN a set default 10; +insert into t1 values(); +select * from t1; +a +1 +2 +10 +insert into t1 values(); +ERROR 23000: Duplicate entry '10' for key 't1.PRIMARY' +insert into t1 values(null); +select * from t1; +a +1 +2 +10 +11 +drop table t1; +create table t1 (a INT AUTO_INCREMENT KEY); +insert into t1 values(null); +select * from t1; +a +1 +alter table t1 ALTER COLUMN a set default 10; +insert into t1 values(null); +select * from t1; +a +1 +2 +insert into t1 values(); +select * from t1; +a +1 +2 +10 +insert into t1 values(null); +select * from t1; +a +1 +2 +10 +11 +drop table t1; +create table t1 (a INT AUTO_INCREMENT KEY); +insert into t1 values(0); +select * from t1; +a +1 +alter table t1 ALTER COLUMN a set default 10; +insert into t1 values(0); +select * from t1; +a +1 +2 +insert into t1 values(); +select * from t1; +a +1 +2 +10 +insert into t1 values(0); +select * from t1; +a +1 +2 +10 +11 +drop table t1; +create table t1(a int AUTO_INCREMENT PRIMARY KEY); +insert into t1 values (); +select * from t1; +a +1 +alter table t1 ALTER COLUMN a set default 10; +insert into t1 values (); +select * from t1; +a +1 +10 +alter table t1 ALTER COLUMN a drop default; +insert into t1 values (); +ERROR HY000: Field 'a' doesn't have a default value +insert into t1 values (0); +insert into t1 values (null); +select * from t1; +a +1 +10 +11 +12 +drop table t1; +SET FOREIGN_KEY_CHECKS= 0; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT INTO t11 VALUES (); +select * from t11; +id +1 +update IGNORE t11 SET id = 20 where id=1; +select * from t11; +id +20 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS= default; +SET FOREIGN_KEY_CHECKS= 1; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT INTO t VALUES (1); +INSERT INTO t11 VALUES (); +select * from t11; +id +1 +update IGNORE t11 SET id = 20 where id=1; +Warnings: +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.t)) +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS= default; +SET FOREIGN_KEY_CHECKS= 1; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT INTO t VALUES (1); +INSERT INTO t11 VALUES (); +select * from t11; +id +1 +update t11 SET id = 20 where id=1; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.t)) +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS= default; +SET FOREIGN_KEY_CHECKS= 0; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT INTO t11 VALUES (); +update t11 SET id = 20 where id=1; +select * from t11; +id +20 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS= default; +SET FOREIGN_KEY_CHECKS=0; +set global ctc_autoinc_lock_mode=0; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT IGNORE INTO t11 VALUES (); +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT IGNORE INTO t11 VALUES (); +select * from t11; +id +1 +2 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS=default; +SET FOREIGN_KEY_CHECKS= 1; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT INTO t VALUES (1); +INSERT IGNORE INTO t11 VALUES (); +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT IGNORE INTO t11 VALUES (); +Warnings: +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.t)) +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS= default; +SET FOREIGN_KEY_CHECKS=0; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT INTO t11 VALUES (); +INSERT INTO t11 VALUES (); +select * from t11; +id +1 +2 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS= default; +SET FOREIGN_KEY_CHECKS=1; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT INTO t VALUES (1); +INSERT INTO t11 VALUES (); +INSERT INTO t11 VALUES (); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.t)) +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS= default; +set global ctc_autoinc_lock_mode=default; +SET FOREIGN_KEY_CHECKS= 0; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT IGNORE INTO t11 VALUES (); +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT IGNORE INTO t11 VALUES (); +select * from t11; +id +1 +2 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS=default; +SET FOREIGN_KEY_CHECKS= 1; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT INTO t VALUES (1); +INSERT IGNORE INTO t11 VALUES (); +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT IGNORE INTO t11 VALUES (); +Warnings: +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.t)) +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS= default; +SET FOREIGN_KEY_CHECKS= 0; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT INTO t11 VALUES (); +INSERT INTO t11 VALUES (); +select * from t11; +id +1 +2 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS= default; +SET FOREIGN_KEY_CHECKS= 1; +create table t(id int primary key); +create table t11(id int primary key auto_increment, foreign key(id) references t(id)); +INSERT INTO t VALUES (1); +INSERT INTO t11 VALUES (); +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t11 VALUES (); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.t)) +select * from t11; +id +1 +show create table t11; +Table Create Table +t11 CREATE TABLE `t11` ( + `id` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`id`), + CONSTRAINT `t11_fk_1` FOREIGN KEY (`id`) REFERENCES `t` (`id`) +) ENGINE=CTC AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t,t11; +SET FOREIGN_KEY_CHECKS= default; +End of tests diff --git a/mysql-test/suite/tianchi/r/ctc_charset.result b/mysql-test/suite/tianchi/r/ctc_charset.result new file mode 100644 index 0000000..f1cedc8 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_charset.result @@ -0,0 +1,637 @@ +CREATE TABLE worklog5743 (col_1_CHAR CHAR(255) , col_2_CHAR CHAR(255), +PRIMARY KEY (col_1_CHAR)) engine = CTC STATS_PERSISTENT=0 charset latin1; +INSERT INTO worklog5743 VALUES(repeat("a", 200) , repeat("o", 200)); +INSERT INTO worklog5743 VALUES(repeat("b", 200) , repeat("o", 200)); +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +UPDATE worklog5743 SET col_1_CHAR = repeat("d", 200) WHERE col_1_CHAR = +repeat("a", 200) AND col_2_CHAR = repeat("o", 200); +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +SELECT * FROM worklog5743 where col_1_CHAR = repeat("d", 200); +col_1_CHAR col_2_CHAR +dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +UPDATE worklog5743 SET col_1_CHAR = repeat("c", 200) WHERE col_1_CHAR = +repeat("d", 200); +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("c", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("c", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("c", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT * FROM worklog5743 where col_2_CHAR = repeat("o", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +DROP TABLE worklog5743; +CREATE TABLE worklog5743 (col_1_CHAR CHAR(255) , col_2_CHAR CHAR(255) , +PRIMARY KEY (col_1_CHAR)) engine = CTC STATS_PERSISTENT=0 charset koi8r; +INSERT INTO worklog5743 VALUES(repeat("a", 200) , repeat("o", 200)); +INSERT INTO worklog5743 VALUES(repeat("b", 200) , repeat("o", 200)); +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +UPDATE worklog5743 SET col_1_CHAR = repeat("d", 200) WHERE col_1_CHAR = +repeat("a", 200) AND col_2_CHAR = repeat("o", 200); +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +SELECT * FROM worklog5743 where col_1_CHAR = repeat("d", 200); +col_1_CHAR col_2_CHAR +dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +UPDATE worklog5743 SET col_1_CHAR = repeat("c", 200) WHERE col_1_CHAR = +repeat("d", 200); +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("c", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("c", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("c", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT * FROM worklog5743 where col_2_CHAR = repeat("o", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +DROP TABLE worklog5743; +CREATE TABLE worklog5743 (col_1_CHAR CHAR(255) , col_2_CHAR CHAR(255) , +PRIMARY KEY (col_1_CHAR)) engine = CTC STATS_PERSISTENT=0 charset hebrew; +INSERT INTO worklog5743 VALUES(repeat("a", 200) , repeat("o", 200)); +INSERT INTO worklog5743 VALUES(repeat("b", 200) , repeat("o", 200)); +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +UPDATE worklog5743 SET col_1_CHAR = repeat("d", 200) WHERE col_1_CHAR = +repeat("a", 200) AND col_2_CHAR = repeat("o", 200); +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +SELECT * FROM worklog5743 where col_1_CHAR = repeat("d", 200); +col_1_CHAR col_2_CHAR +dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +UPDATE worklog5743 SET col_1_CHAR = repeat("c", 200) WHERE col_1_CHAR = +repeat("d", 200); +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("c", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("c", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("c", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT * FROM worklog5743 where col_2_CHAR = repeat("o", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +DROP TABLE worklog5743; +CREATE TABLE worklog5743 (col_1_CHAR CHAR(255) , col_2_CHAR CHAR(255) , +PRIMARY KEY (col_1_CHAR)) engine = CTC STATS_PERSISTENT=0 charset cp1257; +INSERT INTO worklog5743 VALUES(repeat("a", 200) , repeat("o", 200)); +INSERT INTO worklog5743 VALUES(repeat("b", 200) , repeat("o", 200)); +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +UPDATE worklog5743 SET col_1_CHAR = repeat("d", 200) WHERE col_1_CHAR = +repeat("a", 200) AND col_2_CHAR = repeat("o", 200); +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +SELECT * FROM worklog5743 where col_1_CHAR = repeat("d", 200); +col_1_CHAR col_2_CHAR +dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +UPDATE worklog5743 SET col_1_CHAR = repeat("c", 200) WHERE col_1_CHAR = +repeat("d", 200); +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("c", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("c", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("c", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT * FROM worklog5743 where col_2_CHAR = repeat("o", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +DROP TABLE worklog5743; +CREATE TABLE worklog5743 (col_1_CHAR CHAR(255) , col_2_CHAR CHAR(255) , +PRIMARY KEY (col_1_CHAR)) engine = CTC STATS_PERSISTENT=0 charset armscii8; +INSERT INTO worklog5743 VALUES(repeat("a", 200) , repeat("o", 200)); +INSERT INTO worklog5743 VALUES(repeat("b", 200) , repeat("o", 200)); +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +UPDATE worklog5743 SET col_1_CHAR = repeat("d", 200) WHERE col_1_CHAR = +repeat("a", 200) AND col_2_CHAR = repeat("o", 200); +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +SELECT * FROM worklog5743 where col_1_CHAR = repeat("d", 200); +col_1_CHAR col_2_CHAR +dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +UPDATE worklog5743 SET col_1_CHAR = repeat("c", 200) WHERE col_1_CHAR = +repeat("d", 200); +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("c", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("c", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("c", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT * FROM worklog5743 where col_2_CHAR = repeat("o", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +DROP TABLE worklog5743; +CREATE TABLE worklog5743 (col_1_CHAR CHAR(255) , col_2_CHAR CHAR(255) , +PRIMARY KEY (col_1_CHAR)) engine = CTC STATS_PERSISTENT=0 charset macce; +INSERT INTO worklog5743 VALUES(repeat("a", 200) , repeat("o", 200)); +INSERT INTO worklog5743 VALUES(repeat("b", 200) , repeat("o", 200)); +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +UPDATE worklog5743 SET col_1_CHAR = repeat("d", 200) WHERE col_1_CHAR = +repeat("a", 200) AND col_2_CHAR = repeat("o", 200); +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +SELECT * FROM worklog5743 where col_1_CHAR = repeat("d", 200); +col_1_CHAR col_2_CHAR +dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +UPDATE worklog5743 SET col_1_CHAR = repeat("c", 200) WHERE col_1_CHAR = +repeat("d", 200); +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("c", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("c", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("c", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT * FROM worklog5743 where col_2_CHAR = repeat("o", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +DROP TABLE worklog5743; +CREATE TABLE worklog5743 (col_1_CHAR CHAR(255) , col_2_CHAR CHAR(255) , +PRIMARY KEY (col_1_CHAR)) engine = CTC STATS_PERSISTENT=0 charset big5; +INSERT INTO worklog5743 VALUES(repeat("a", 200) , repeat("o", 200)); +INSERT INTO worklog5743 VALUES(repeat("b", 200) , repeat("o", 200)); +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +UPDATE worklog5743 SET col_1_CHAR = repeat("d", 200) WHERE col_1_CHAR = +repeat("a", 200) AND col_2_CHAR = repeat("o", 200); +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +SELECT * FROM worklog5743 where col_1_CHAR = repeat("d", 200); +col_1_CHAR col_2_CHAR +dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +UPDATE worklog5743 SET col_1_CHAR = repeat("c", 200) WHERE col_1_CHAR = +repeat("d", 200); +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("c", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("c", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("c", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT * FROM worklog5743 where col_2_CHAR = repeat("o", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +DROP TABLE worklog5743; +CREATE TABLE worklog5743 (col_1_CHAR CHAR(255) , col_2_CHAR CHAR(255) , +PRIMARY KEY (col_1_CHAR)) engine = CTC STATS_PERSISTENT=0 charset eucjpms; +INSERT INTO worklog5743 VALUES(repeat("a", 200) , repeat("o", 200)); +INSERT INTO worklog5743 VALUES(repeat("b", 200) , repeat("o", 200)); +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +UPDATE worklog5743 SET col_1_CHAR = repeat("d", 200) WHERE col_1_CHAR = +repeat("a", 200) AND col_2_CHAR = repeat("o", 200); +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +SELECT * FROM worklog5743 where col_1_CHAR = repeat("d", 200); +col_1_CHAR col_2_CHAR +dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +UPDATE worklog5743 SET col_1_CHAR = repeat("c", 200) WHERE col_1_CHAR = +repeat("d", 200); +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("c", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("c", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("c", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT * FROM worklog5743 where col_2_CHAR = repeat("o", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +DROP TABLE worklog5743; +CREATE TABLE worklog5743 (col_1_CHAR CHAR(255) , col_2_CHAR CHAR(255) , +PRIMARY KEY (col_1_CHAR)) engine = CTC STATS_PERSISTENT=0; +INSERT INTO worklog5743 VALUES(repeat("a", 200) , repeat("o", 200)); +INSERT INTO worklog5743 VALUES(repeat("b", 200) , repeat("o", 200)); +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +UPDATE worklog5743 SET col_1_CHAR = repeat("d", 200) WHERE col_1_CHAR = +repeat("a", 200) AND col_2_CHAR = repeat("o", 200); +SELECT * FROM worklog5743 where col_1_CHAR = repeat("a", 200); +col_1_CHAR col_2_CHAR +SELECT * FROM worklog5743 where col_1_CHAR = repeat("d", 200); +col_1_CHAR col_2_CHAR +dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +UPDATE worklog5743 SET col_1_CHAR = repeat("c", 200) WHERE col_1_CHAR = +repeat("d", 200); +SELECT col_1_CHAR = repeat("b", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("b", 200) col_2_CHAR = repeat("o", 200) +0 1 +1 1 +SELECT col_1_CHAR = repeat("a", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("a", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT col_1_CHAR = repeat("c", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("c", 200) col_2_CHAR = repeat("o", 200) +1 1 +0 1 +SELECT col_1_CHAR = repeat("d", 200) , col_2_CHAR = repeat("o", 200) FROM +worklog5743; +col_1_CHAR = repeat("d", 200) col_2_CHAR = repeat("o", 200) +0 1 +0 1 +SELECT * FROM worklog5743 where col_1_CHAR = repeat("c", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +SELECT * FROM worklog5743 where col_2_CHAR = repeat("o", 200); +col_1_CHAR col_2_CHAR +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo +DROP TABLE worklog5743; +create table t1(a bigint , b char(255), c date) partition by list columns(a,b,c) +(partition p0 values in((4,'aaa', '1948-10-10'),(5,'abb', '1949-10-10'), +(6,'abc', '1950-10-10'),(7,'abd', '1951-10-10')), +partition p1 values in((10, 'baa', '1990-10-10'),(11, 'bab', '1991-10-10'), +(11, 'bac', '1992-10-10'),(12, 'bad', '1993-10-10')), +partition p2 values in((20, 'caa', '2010-10-10'),(21, 'cab', '2011-10-10'), +(22, 'cac', '2012-10-10'),(23, 'cad', '2013-10-10')), +partition p3 values in ((30, 'daa', '2020-10-10'),(31, 'dab', '2021-10-10'), +(32, 'dac', '2022-10-10'),(33, 'dae', '2023-10-10'))); +insert into t1 values(4,'aaa', '1948-10-10'),(10, 'baa', '1990-10-10'), +(32, 'dac', '2022-10-10'),(22, 'cac', '2012-10-10'); +update t1 set a=6,b='abc',c='1950-10-10' where a=4; +update t1 set a=32,b='dac',c='2022-10-10' where a=6; +update t1 set a=11,b='bac',c='1992-10-10' where a=10; +update t1 set a=4,b='aaa',c='1948-10-10' where a=22; +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_charset_binary.result b/mysql-test/suite/tianchi/r/ctc_charset_binary.result new file mode 100644 index 0000000..4173edd --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_charset_binary.result @@ -0,0 +1,236 @@ +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default '' not null key) charset binary; +insert into t1 values(0, default, default); +insert into t1 values(1, 1, 'abc'); +select c1, c2, hex(c3) from t1; +c1 c2 hex(c3) +0 0 00000000000000000000 +1 1 61626300000000000000 +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default '' not null, key(c1, c3)) charset binary; +insert into t1 values(0, default, default); +insert into t1 values(1, 1, 'abc'); +select c1, c2, hex(c3) from t1; +c1 c2 hex(c3) +0 0 00000000000000000000 +1 1 61626300000000000000 +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 varbinary(10) default '' not null key) charset binary; +insert into t1 values(0, default, default); +insert into t1 values(1, 1, 'abc'); +select c1, c2, c3 from t1; +c1 c2 c3 +0 0 +1 1 abc +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 varbinary(10) default '' not null, key(c1, c3)) charset binary; +insert into t1 values(0, default, default); +insert into t1 values(1, 1, 'abc'); +select c1, c2, c3 from t1; +c1 c2 c3 +0 0 +1 1 abc +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 char(10) default '' not null, c4 varchar(120) default '' not null) charset binary; +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +0 0 00000000000000000000 +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 char(10) default '' not null, c4 varchar(120) default '' not null) charset binary; +create index idx1 on t1(c1); +create index idx2 on t1(c2); +create index idx3 on t1(c3); +create index idx4 on t1(c4); +create index idx5 on t1(c1, c2); +create index idx6 on t1(c2, c3); +create index idx7 on t1(c3, c4); +create index idx8 on t1(c2, c3, c4); +create index idx9 on t1(c1, c2, c3); +create index idx10 on t1(c1, c2, c3, c4); +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +0 0 00000000000000000000 +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer, c3 char(10), c4 varchar(120)) charset binary; +create index idx1 on t1(c1); +create index idx2 on t1(c2); +create index idx3 on t1(c3); +create index idx4 on t1(c4); +create index idx5 on t1(c1, c2); +create index idx6 on t1(c2, c3); +create index idx7 on t1(c3, c4); +create index idx8 on t1(c2, c3, c4); +create index idx9 on t1(c1, c2, c3); +create index idx10 on t1(c1, c2, c3, c4); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default '' not null, c4 varbinary(120) default '' not null) charset binary; +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +0 0 00000000000000000000 +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default '' not null, c4 varbinary(120) default '' not null) charset binary; +create index idx1 on t1(c1); +create index idx2 on t1(c2); +create index idx3 on t1(c3); +create index idx4 on t1(c4); +create index idx5 on t1(c1, c2); +create index idx6 on t1(c2, c3); +create index idx7 on t1(c3, c4); +create index idx8 on t1(c2, c3, c4); +create index idx9 on t1(c1, c2, c3); +create index idx10 on t1(c1, c2, c3, c4); +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +0 0 00000000000000000000 +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer, c3 binary(10), c4 varbinary(120)) charset binary; +create index idx1 on t1(c1); +create index idx2 on t1(c2); +create index idx3 on t1(c3); +create index idx4 on t1(c4); +create index idx5 on t1(c1, c2); +create index idx6 on t1(c2, c3); +create index idx7 on t1(c3, c4); +create index idx8 on t1(c2, c3, c4); +create index idx9 on t1(c1, c2, c3); +create index idx10 on t1(c1, c2, c3, c4); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 char(10) default null, c4 varchar(120) default null) charset binary; +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +0 0 NULL NULL +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 char(10) default null, c4 varchar(120) default null) charset binary; +create index idx1 on t1(c1); +create index idx2 on t1(c2); +create index idx3 on t1(c3); +create index idx4 on t1(c4); +create index idx5 on t1(c1, c2); +create index idx6 on t1(c2, c3); +create index idx7 on t1(c3, c4); +create index idx8 on t1(c2, c3, c4); +create index idx9 on t1(c1, c2, c3); +create index idx10 on t1(c1, c2, c3, c4); +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +0 0 NULL NULL +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer, c3 char(10), c4 varchar(120)) charset binary; +create index idx1 on t1(c1); +create index idx2 on t1(c2); +create index idx3 on t1(c3); +create index idx4 on t1(c4); +create index idx5 on t1(c1, c2); +create index idx6 on t1(c2, c3); +create index idx7 on t1(c3, c4); +create index idx8 on t1(c2, c3, c4); +create index idx9 on t1(c1, c2, c3); +create index idx10 on t1(c1, c2, c3, c4); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default null, c4 varbinary(120) default null) charset binary; +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +0 0 NULL NULL +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default null, c4 varbinary(120) default null) charset binary; +create index idx1 on t1(c1); +create index idx2 on t1(c2); +create index idx3 on t1(c3); +create index idx4 on t1(c4); +create index idx5 on t1(c1, c2); +create index idx6 on t1(c2, c3); +create index idx7 on t1(c3, c4); +create index idx8 on t1(c2, c3, c4); +create index idx9 on t1(c1, c2, c3); +create index idx10 on t1(c1, c2, c3, c4); +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +0 0 NULL NULL +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default b'101' not null, c4 varbinary(120) default b'101' not null) charset binary; +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), hex(c4) from t1; +c1 c2 hex(c3) hex(c4) +0 0 05000000000000000000 05 +1 1 61626300000000000000 646566 +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default b'101' not null, c4 varbinary(120) default b'101' not null) charset binary; +create index idx1 on t1(c1); +create index idx2 on t1(c2); +create index idx3 on t1(c3); +create index idx4 on t1(c4); +create index idx5 on t1(c1, c2); +create index idx6 on t1(c2, c3); +create index idx7 on t1(c3, c4); +create index idx8 on t1(c2, c3, c4); +create index idx9 on t1(c1, c2, c3); +create index idx10 on t1(c1, c2, c3, c4); +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), hex(c4) from t1; +c1 c2 hex(c3) hex(c4) +0 0 05000000000000000000 05 +1 1 61626300000000000000 646566 +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default 'aaaaa' not null, c4 varbinary(120) default 'aaaaa' not null) charset binary; +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +0 0 61616161610000000000 aaaaa +1 1 61626300000000000000 def +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default 'aaaaa' not null, c4 varbinary(120) default 'aaaaa' not null) charset binary; +create index idx1 on t1(c1); +create index idx2 on t1(c2); +create index idx3 on t1(c3); +create index idx4 on t1(c4); +create index idx5 on t1(c1, c2); +create index idx6 on t1(c2, c3); +create index idx7 on t1(c3, c4); +create index idx8 on t1(c2, c3, c4); +create index idx9 on t1(c1, c2, c3); +create index idx10 on t1(c1, c2, c3, c4); +insert into t1 values(0, default, default, default); +insert into t1 values(1, 1, 'abc', 'def'); +select c1, c2, hex(c3), c4 from t1; +c1 c2 hex(c3) c4 +0 0 61616161610000000000 aaaaa +1 1 61626300000000000000 def +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_charset_collate.result b/mysql-test/suite/tianchi/r/ctc_charset_collate.result new file mode 100644 index 0000000..f244157 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_charset_collate.result @@ -0,0 +1,1259 @@ +drop table if exists t1, t2, t3, t4; +create table t1 (c1 varchar(5) collate utf8mb4_bin, key(c1)); +insert into t1 values('ae'); +insert into t1 values('äa'); +select length(c1), c1 from t1 where c1 < 'ae'; +length(c1) c1 +delete from t1; +insert into t1 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t1 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 b +select length(c1), c1 from t1 where c1 = 'ab'; +length(c1) c1 +2 ab +select length(c1), c1 from t1 where c1 = _utf8mb4 'ab' collate utf8mb4_general_ci; +length(c1) c1 +2 Ab +2 ab +drop table t1; +create table t2 (c1 varchar(5) collate utf8mb4_0900_bin, key(c1)); +insert into t2 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t2 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +select length(c1), c1 from t2 where c1 = 'ab'; +length(c1) c1 +2 ab +alter table t2 add primary key (c1); +drop table t2; +create table t3 (c1 varchar(5) collate utf8mb4_general_ci, key(c1)); +insert into t3 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t3 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 A +2 b +1 B +select length(c1), c1 from t3 where c1 = 'ab'; +length(c1) c1 +2 ab +2 Ab +select length(c1), c1 from t3 where c1 > 'a'; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t3 where c1 > 'A'; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t3 order by c1; +length(c1) c1 +1 a +2 A +2 ab +2 Ab +2 b +1 B +drop table t3; +create table t4 (c1 varchar(5) collate utf8mb4_0900_ai_ci, key(c1)); +insert into t4 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t4 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +1 B +select length(c1), c1 from t4 where c1 = 'ab'; +length(c1) c1 +2 ab +2 Ab +select length(c1), c1 from t4 where c1 > 'a'; +length(c1) c1 +2 A +2 ab +2 Ab +1 B +2 b +select length(c1), c1 from t4 where c1 > 'A'; +length(c1) c1 +2 A +2 ab +2 Ab +1 B +2 b +drop table t4; +create table t1 (c1 varchar(5) collate latin1_general_ci, key(c1)); +insert into t1 values('ae'); +insert into t1 values('äa'); +select length(c1), c1 from t1 where c1 < 'ae'; +length(c1) c1 +delete from t1; +insert into t1 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t1 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 A +2 b +1 B +select length(c1), c1 from t1 where c1 = 'ab'; +length(c1) c1 +2 ab +2 Ab +select length(c1), c1 from t1 where c1 > 'a'; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'A'; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'a '; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'A '; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 = _latin1 'ab' collate latin1_general_ci; +length(c1) c1 +2 ab +2 Ab +select length(c1), c1 from t1 where c1 = _latin1 'ab' collate latin1_general_cs; +length(c1) c1 +2 ab +select length(c1), c1 from t1 where c1 = _latin1 'ab' collate latin1_bin; +length(c1) c1 +2 ab +drop table t1; +create table t1 (c1 varchar(5) collate latin1_general_cs, key(c1)); +insert into t1 values('ae'); +insert into t1 values('äa'); +select length(c1), c1 from t1 where c1 < 'ae'; +length(c1) c1 +delete from t1; +insert into t1 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t1 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 b +select length(c1), c1 from t1 where c1 = 'ab'; +length(c1) c1 +2 ab +select length(c1), c1 from t1 where c1 > 'a'; +length(c1) c1 +2 ab +1 B +2 b +select length(c1), c1 from t1 where c1 > 'A'; +length(c1) c1 +2 Ab +1 a +2 ab +1 B +2 b +select length(c1), c1 from t1 where c1 > 'a '; +length(c1) c1 +2 ab +1 B +2 b +select length(c1), c1 from t1 where c1 > 'A '; +length(c1) c1 +2 Ab +1 a +2 ab +1 B +2 b +select length(c1), c1 from t1 where c1 = _latin1 'ab' collate latin1_general_ci; +length(c1) c1 +2 Ab +2 ab +select length(c1), c1 from t1 where c1 = _latin1 'ab' collate latin1_general_cs; +length(c1) c1 +2 ab +select length(c1), c1 from t1 where c1 = _latin1 'ab' collate latin1_bin; +length(c1) c1 +2 ab +drop table t1; +create table t1 (c1 varchar(5) collate latin1_bin, key(c1)); +insert into t1 values('ae'); +insert into t1 values('äa'); +select length(c1), c1 from t1 where c1 < 'ae'; +length(c1) c1 +delete from t1; +insert into t1 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t1 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 b +select length(c1), c1 from t1 where c1 = 'ab'; +length(c1) c1 +2 ab +select length(c1), c1 from t1 where c1 > 'a'; +length(c1) c1 +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'A'; +length(c1) c1 +2 Ab +1 B +1 a +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'a '; +length(c1) c1 +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'A '; +length(c1) c1 +2 Ab +1 B +1 a +2 ab +2 b +select length(c1), c1 from t1 where c1 = _latin1 'ab' collate latin1_general_ci; +length(c1) c1 +2 Ab +2 ab +select length(c1), c1 from t1 where c1 = _latin1 'ab' collate latin1_general_cs; +length(c1) c1 +2 ab +select length(c1), c1 from t1 where c1 = _latin1 'ab' collate latin1_bin; +length(c1) c1 +2 ab +drop table t1; +create table t1 (c1 varchar(5) collate ascii_general_ci, key(c1)); +insert into t1 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t1 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 A +2 b +1 B +select length(c1), c1 from t1 where c1 = 'ab'; +length(c1) c1 +2 ab +2 Ab +select length(c1), c1 from t1 where c1 > 'a'; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'A'; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'a '; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'A '; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 = _ascii 'ab' collate ascii_general_ci; +length(c1) c1 +2 ab +2 Ab +select length(c1), c1 from t1 where c1 = _ascii 'ab' collate ascii_bin; +length(c1) c1 +2 ab +drop table t1; +create table t1 (c1 varchar(5) collate ascii_bin, key(c1)); +insert into t1 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t1 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 b +select length(c1), c1 from t1 where c1 = 'ab'; +length(c1) c1 +2 ab +select length(c1), c1 from t1 where c1 > 'a'; +length(c1) c1 +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'A'; +length(c1) c1 +2 Ab +1 B +1 a +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'a '; +length(c1) c1 +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'A '; +length(c1) c1 +2 Ab +1 B +1 a +2 ab +2 b +select length(c1), c1 from t1 where c1 = _ascii 'ab' collate ascii_general_ci; +length(c1) c1 +2 Ab +2 ab +select length(c1), c1 from t1 where c1 = _ascii 'ab' collate ascii_bin; +length(c1) c1 +2 ab +drop table t1; +create table t1 (c1 varchar(5) collate gbk_chinese_ci, key(c1)); +insert into t1 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t1 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 A +2 b +1 B +select length(c1), c1 from t1 where c1 = 'ab'; +length(c1) c1 +2 ab +2 Ab +select length(c1), c1 from t1 where c1 > 'a'; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'A'; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'a '; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'A '; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 = _gbk 'ab' collate gbk_chinese_ci; +length(c1) c1 +2 ab +2 Ab +select length(c1), c1 from t1 where c1 = _gbk 'ab' collate gbk_bin; +length(c1) c1 +2 ab +drop table t1; +create table t1 (c1 varchar(5) collate gbk_bin, key(c1)); +insert into t1 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t1 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 b +select length(c1), c1 from t1 where c1 = 'ab'; +length(c1) c1 +2 ab +select length(c1), c1 from t1 where c1 > 'a'; +length(c1) c1 +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'A'; +length(c1) c1 +2 Ab +1 B +1 a +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'a '; +length(c1) c1 +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'A '; +length(c1) c1 +2 Ab +1 B +1 a +2 ab +2 b +select length(c1), c1 from t1 where c1 = _gbk 'ab' collate gbk_chinese_ci; +length(c1) c1 +2 Ab +2 ab +select length(c1), c1 from t1 where c1 = _gbk 'ab' collate gbk_bin; +length(c1) c1 +2 ab +drop table t1; +create table t1 (c1 varchar(5) collate utf8_general_ci, key(c1)); +Warnings: +Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead. +insert into t1 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t1 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 A +2 b +1 B +select length(c1), c1 from t1 where c1 = 'ab'; +length(c1) c1 +2 ab +2 Ab +select length(c1), c1 from t1 where c1 > 'a'; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'A'; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'a '; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 > 'A '; +length(c1) c1 +2 ab +2 Ab +2 b +1 B +select length(c1), c1 from t1 where c1 = _utf8 'ab' collate utf8_general_ci; +length(c1) c1 +2 ab +2 Ab +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +select length(c1), c1 from t1 where c1 = _utf8 'ab' collate utf8_bin; +length(c1) c1 +2 ab +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +drop table t1; +create table t1 (c1 varchar(5) collate utf8_bin, key(c1)); +Warnings: +Warning 3778 'utf8_bin' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead. +insert into t1 values('ae'); +insert into t1 values('äa'); +select length(c1), c1 from t1 where c1 < 'ae'; +length(c1) c1 +delete from t1; +insert into t1 values ('a'), ('b '), ('A '), ('B'), ('ab'), ('Ab'); +select length(c1), c1 from t1 where c1 = 'a' or c1 = 'b'; +length(c1) c1 +1 a +2 b +select length(c1), c1 from t1 where c1 = 'ab'; +length(c1) c1 +2 ab +select length(c1), c1 from t1 where c1 > 'a'; +length(c1) c1 +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'A'; +length(c1) c1 +2 Ab +1 B +1 a +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'a '; +length(c1) c1 +2 ab +2 b +select length(c1), c1 from t1 where c1 > 'A '; +length(c1) c1 +2 Ab +1 B +1 a +2 ab +2 b +select length(c1), c1 from t1 where c1 = _utf8 'ab' collate utf8_general_ci; +length(c1) c1 +2 Ab +2 ab +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +select length(c1), c1 from t1 where c1 = _utf8 'ab' collate utf8_bin; +length(c1) c1 +2 ab +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +drop table t1; +create table t1(c1 varchar(5) charset gbk); +alter table t1 add index idx(c1); +drop table t1; +create table t1(c1 varchar(5) charset gbk collate gbk_chinese_ci); +drop table t1; +create table t1(c1 varchar(5) charset gbk, key(c1)); +drop table t1; +create table t1(c1 varchar(5) charset gbk collate gbk_chinese_ci, key(c1)); +drop table t1; +CREATE TABLE t1(C VARCHAR(100) CHARACTER SET gb18030, KEY(c(20))); +drop table t1; +create table t1(a int, b char(10), c char(10), filler char(10), primary key(a, b(2)), unique key (a, c(2))) character set ucs2; +drop table t1; +create table t1 (a varchar(2) character set cp1250) partition by list columns (a) (partition p0 values in (0x81)); +Warnings: +Warning 1300 Invalid cp1250 character string: '81' +Warning 1300 Invalid cp1250 character string: '81' +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` varchar(2) CHARACTER SET cp1250 COLLATE cp1250_general_ci DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +/*!50500 PARTITION BY LIST COLUMNS(a) +(PARTITION p0 VALUES IN (_cp1250 0x81) ENGINE = CTC) */ +Warnings: +Warning 1300 Invalid cp1250 character string: '81' +drop table t1; +create table t1 (c1 varchar(8)) default character set 'ujis'; +insert into t1 values (0xA4A2),(0xA2A2),(0xA4A2); +select c1 as 'no index' from t1 where c1 like cast(concat(0xA4A2, '%') as char character set ujis); +no index +ã‚ +ã‚ +create index idx_c1 on t1(c1); +drop table t1; +create table t1(c1 char(10) collate utf8mb4_bin, key(c1)); +create table t2(c1 char(10) collate utf8mb4_0900_bin, key(c1)); +insert into t1 values('a'); +insert into t2 values('a'); +select length(c1), c1 from t1 where c1 = 'a '; +length(c1) c1 +1 a +select length(c1), c1 from t1 where c1 = 'a'; +length(c1) c1 +1 a +select length(c1), c1 from t2 where c1 = 'a '; +length(c1) c1 +select length(c1), c1 from t2 where c1 = 'a'; +length(c1) c1 +1 a +drop table t1, t2; +create table t1 (c1 int, c2 varchar(10), c3 varchar(10)) charset utf8mb4; +create index idx1 on t1(c1, c2, c3); +insert into t1 values (1, 'aaa', 'bbb'); +insert into t1 values (2, '张三', 'æŽå››'); +select * from t1; +c1 c2 c3 +1 aaa bbb +2 张三 æŽå›› +drop table t1; +create table t1 (c1 int, c2 varchar(10), c3 varchar(10)) charset binary; +create index idx1 on t1(c1, c2, c3); +insert into t1 values (1, 'aaa', 'bbb'); +insert into t1 values (2, '张三', 'æŽå››'); +select * from t1; +c1 c2 c3 +1 aaa bbb +2 张三 æŽå›› +drop table t1; +create table t1 (c1 int, c2 varchar(10), c3 varchar(10)) charset gbk; +create index idx1 on t1(c1, c2, c3); +insert into t1 values (1, 'aaa', 'bbb'); +insert into t1 values (2, '张三', 'æŽå››'); +select * from t1; +c1 c2 c3 +1 aaa bbb +2 张三 æŽå›› +drop table t1; +create table t1 (c1 int, c2 varchar(10), c3 varchar(10)) charset latin1; +create index idx1 on t1(c1, c2, c3); +insert into t1 values (1, 'aaa', 'bbb'); +insert into t1 values (2, '张三', 'æŽå››'); +ERROR HY000: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'c2' at row 1 +select * from t1; +c1 c2 c3 +1 aaa bbb +drop table t1; +CREATE USER mohit@localhost IDENTIFIED WITH sha256_password BY 'mohit' PASSWORD HISTORY 1; +SELECT COUNT(*) FROM mysql.password_history WHERE User='mohit' AND Host='localhost'; +COUNT(*) +1 +CREATE TABLE pwd_history_backup AS SELECT * FROM mysql.password_history WHERE User='mohit' AND Host='localhost'; +ALTER USER mohit@localhost IDENTIFIED WITH mysql_native_password BY 'mohit'; +SELECT COUNT(*) FROM mysql.password_history WHERE User='mohit' AND Host='localhost'; +COUNT(*) +1 +UPDATE mysql.password_history SET Password = ( SELECT Password FROM pwd_history_backup WHERE User='mohit' AND Host='localhost') WHERE User='mohit' AND Host='localhost'; +drop table pwd_history_backup; +drop user mohit@localhost; +SET NAMES 'utf8mb4' COLLATE 'utf8mb4_bin'; +create table t1(c1 varchar(5), key(c1)); +INSERT INTO t1 VALUES ('a'),('A'),('À'),('á'); +SELECT c1, HEX(c1), HEX(WEIGHT_STRING(c1)) FROM t1; +c1 HEX(c1) HEX(WEIGHT_STRING(c1)) +a 61 1C47 +A 41 1C47 +À C380 1C47 +á C3A1 1C47 +delete from t1; +insert into t1 values('a'),('A'),('AA'),('aa'),('aA'),('Aa'),('ab'),('aB'),('AB'),('Ab'),('b'),('B'); +select c1, hex(c1), hex(weight_string(c1)) from t1; +c1 hex(c1) hex(weight_string(c1)) +a 61 1C47 +A 41 1C47 +AA 4141 1C471C47 +aa 6161 1C471C47 +aA 6141 1C471C47 +Aa 4161 1C471C47 +ab 6162 1C471C60 +aB 6142 1C471C60 +AB 4142 1C471C60 +Ab 4162 1C471C60 +b 62 1C60 +B 42 1C60 +drop table t1; +CREATE TABLE t1 (c1 CHAR(10) CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci); +INSERT INTO t1 VALUES ('a'),('A'),('À'),('á'); +SELECT c1, HEX(c1), HEX(WEIGHT_STRING(c1)) FROM t1; +c1 HEX(c1) HEX(WEIGHT_STRING(c1)) +a 61 0041 +A 41 0041 +À C380 0041 +á C3A1 0041 +drop table t1; +create table t1 (c1 varchar(5) collate utf8mb4_0900_ai_ci, key(c1)); +create table t2 (c1 varchar(5) collate utf8mb4_bin, key(c1)); +insert into t1 values('a'),('A'),('AA'),('aa'),('aA'),('Aa'),('ab'),('aB'),('AB'),('Ab'),('b'),('B'); +insert into t2 values('a'),('A'),('AA'),('aa'),('aA'),('Aa'),('ab'),('aB'),('AB'),('Ab'),('b'),('B'); +select c1, hex(c1), hex(weight_string(c1)) from t1; +c1 hex(c1) hex(weight_string(c1)) +a 61 1C47 +A 41 1C47 +AA 4141 1C471C47 +aa 6161 1C471C47 +aA 6141 1C471C47 +Aa 4161 1C471C47 +ab 6162 1C471C60 +aB 6142 1C471C60 +AB 4142 1C471C60 +Ab 4162 1C471C60 +b 62 1C60 +B 42 1C60 +select c1, hex(c1), hex(weight_string(c1)) from t2; +c1 hex(c1) hex(weight_string(c1)) +A 41 000041 +AA 4141 000041000041 +AB 4142 000041000042 +Aa 4161 000041000061 +Ab 4162 000041000062 +B 42 000042 +a 61 000061 +aA 6141 000061000041 +aB 6142 000061000042 +aa 6161 000061000061 +ab 6162 000061000062 +b 62 000062 +drop table t1, t2; +create table t1(id int auto_increment primary key, c1 varchar(5), key(c1)); +insert into t1 values(null,'aa'),(null,'aA'),(null,'Aa'),(null,'ab'),(null,'aB'),(null,'AB'),(null,'Ab'),(null,'b'),(null,'B'),(null, 'a'),(null,'A'),(null,'AA'); +select c1 from t1; +c1 +a +A +aa +aA +Aa +AA +ab +aB +AB +Ab +b +B +drop table t1; +create table t1(id int auto_increment primary key, c1 varchar(5) collate utf8mb4_bin, key(c1)); +insert into t1 values(null,'aa'),(null,'aA'),(null,'Aa'),(null,'ab'),(null,'aB'),(null,'AB'),(null,'Ab'),(null,'b'),(null,'B'),(null, 'a'),(null,'A'),(null,'AA'); +drop table t1; +create table t1(id int auto_increment primary key, c1 varchar(5) collate utf8mb4_0900_ai_ci, key(c1)); +insert into t1 values(null,'aa'),(null,'aA'),(null,'Aa'),(null,'ab'),(null,'aB'),(null,'AB'),(null,'Ab'),(null,'b'),(null,'B'),(null, 'a'),(null,'A'),(null,'AA'); +select c1 from t1; +c1 +a +A +aa +aA +Aa +AA +ab +aB +AB +Ab +b +B +drop table t1; +create table t1(id int auto_increment primary key, c1 varchar(5) collate utf8mb4_bin, c2 varchar(5) collate utf8mb4_0900_ai_ci, key(c1), key(c2)); +insert into t1 values(null, 'a', 'b'),(null,'b', 'a'),(null, 'AA', 'c'),(null, 'B', 'd'); +select c1 from t1; +c1 +AA +B +a +b +drop table t1; +create table t1(id int auto_increment primary key, c1 varchar(5) collate utf8mb4_bin, c2 varchar(5) collate utf8mb4_0900_ai_ci, key(c1)); +insert into t1 values(null, 'a', 'b'),(null,'b', 'a'),(null, 'AA', 'c'),(null, 'B', 'd'); +select c1 from t1; +c1 +AA +B +a +b +drop table t1; +create table t1(id int auto_increment primary key, c1 varchar(5) collate utf8mb4_bin, c2 varchar(5), key(c1)); +insert into t1 values(null, 'a', 'b'),(null,'b', 'a'),(null, 'AA', 'c'),(null, 'B', 'd'); +select c1 from t1; +c1 +AA +B +a +b +drop table t1; +set sql_mode = ''; +create table t1(id int auto_increment primary key, c1 varchar(5), c2 varchar(5), key(c1)); +insert into t1 values(null,'a ','a '),(null,'a','a'),(null,'a ','a '),(null,'A ','A '),(null,'A','A'),(null,'A ','A '); +select length(c1), c1, hex(weight_string(c1)) from t1; +length(c1) c1 hex(weight_string(c1)) +1 a 1C47 +1 A 1C47 +2 a 1C470209 +2 A 1C470209 +3 a 1C4702090209 +3 A 1C4702090209 +select length(c1), c1, hex(weight_string(c1)) from t1 order by c1 collate utf8mb4_general_ci; +length(c1) c1 hex(weight_string(c1)) +1 a 1C47 +1 A 1C47 +2 a 1C470209 +2 A 1C470209 +3 a 1C4702090209 +3 A 1C4702090209 +select length(c1), c1, hex(weight_string(c1)) from t1 order by c1 collate utf8mb4_bin; +length(c1) c1 hex(weight_string(c1)) +1 A 1C47 +2 A 1C470209 +3 A 1C4702090209 +1 a 1C47 +2 a 1C470209 +3 a 1C4702090209 +select length(c1), c1, hex(weight_string(c1)) from t1 order by c1 collate utf8mb4_0900_ai_ci; +length(c1) c1 hex(weight_string(c1)) +1 a 1C47 +1 A 1C47 +2 a 1C470209 +2 A 1C470209 +3 a 1C4702090209 +3 A 1C4702090209 +select length(c1), c1, hex(weight_string(c1)) from t1 order by c1 collate utf8mb4_0900_bin; +length(c1) c1 hex(weight_string(c1)) +1 A 1C47 +2 A 1C470209 +3 A 1C4702090209 +1 a 1C47 +2 a 1C470209 +3 a 1C4702090209 +select length(c1), c1, hex(weight_string(c1)) from t1 group by c1 collate utf8mb4_general_ci; +length(c1) c1 hex(weight_string(c1)) +1 a 1C47 +select length(c1), c1, hex(weight_string(c1)) from t1 group by c1 collate utf8mb4_bin; +length(c1) c1 hex(weight_string(c1)) +1 a 1C47 +1 A 1C47 +select length(c1), c1, hex(weight_string(c1)) from t1 group by c1 collate utf8mb4_0900_ai_ci; +length(c1) c1 hex(weight_string(c1)) +1 a 1C47 +2 a 1C470209 +3 a 1C4702090209 +select length(c1), c1, hex(weight_string(c1)) from t1 group by c1 collate utf8mb4_0900_bin; +length(c1) c1 hex(weight_string(c1)) +1 a 1C47 +1 A 1C47 +2 a 1C470209 +2 A 1C470209 +3 a 1C4702090209 +3 A 1C4702090209 +drop table t1; +create table t1(id int auto_increment primary key, c1 varchar(5), key(c1)); +insert into t1 values(null,'a '), (null,'b '), (null,'a'), (null,'A'), (null,'b'), (null, 'B'), (null,'a '), (null,'b '), (null,'AA'), (null,'aA'), (null, 'Aa'), (null, 'aa'), (null, 'D'), (null, 'd'), (null,'C'), (null,'c'); +select c1 from t1; +c1 +a +A +a +a +AA +aA +Aa +aa +b +B +b +b +C +c +D +d +select length(c1), c1 from t1 order by c1; +length(c1) c1 +1 a +1 A +2 a +3 a +2 AA +2 aA +2 Aa +2 aa +1 b +1 B +2 b +3 b +1 C +1 c +1 D +1 d +select length(c1), c1 from t1 order by c1 collate utf8mb4_general_ci; +length(c1) c1 +1 a +1 A +2 a +3 a +2 AA +2 aA +2 Aa +2 aa +1 b +1 B +2 b +3 b +1 C +1 c +1 D +1 d +select length(c1), c1 from t1 order by c1 collate utf8mb4_bin; +length(c1) c1 +1 A +2 AA +2 Aa +1 B +1 C +1 D +1 a +2 a +3 a +2 aA +2 aa +1 b +2 b +3 b +1 c +1 d +select length(c1), c1 from t1 order by c1 collate utf8mb4_0900_ai_ci; +length(c1) c1 +1 a +1 A +2 a +3 a +2 AA +2 aA +2 Aa +2 aa +1 b +1 B +2 b +3 b +1 C +1 c +1 D +1 d +select length(c1), c1 from t1 order by c1 collate utf8mb4_0900_bin; +length(c1) c1 +1 A +2 AA +2 Aa +1 B +1 C +1 D +1 a +2 a +3 a +2 aA +2 aa +1 b +2 b +3 b +1 c +1 d +select length(c1), c1 as c from t1 order by c1; +length(c1) c +1 a +1 A +2 a +3 a +2 AA +2 aA +2 Aa +2 aa +1 b +1 B +2 b +3 b +1 C +1 c +1 D +1 d +select length(c1), c1 collate utf8mb4_general_ci as c from t1 order by c1; +length(c1) c +1 a +1 A +2 a +3 a +2 AA +2 aA +2 Aa +2 aa +1 b +1 B +2 b +3 b +1 C +1 c +1 D +1 d +select length(c1), c1 collate utf8mb4_bin as c from t1 order by c1; +length(c1) c +1 a +1 A +2 a +3 a +2 AA +2 aA +2 Aa +2 aa +1 b +1 B +2 b +3 b +1 C +1 c +1 D +1 d +select length(c1), c1 collate utf8mb4_0900_ai_ci as c from t1 order by c1; +length(c1) c +1 a +1 A +2 a +3 a +2 AA +2 aA +2 Aa +2 aa +1 b +1 B +2 b +3 b +1 C +1 c +1 D +1 d +select length(c1), c1 collate utf8mb4_0900_bin as c from t1 order by c1; +length(c1) c +1 a +1 A +2 a +3 a +2 AA +2 aA +2 Aa +2 aa +1 b +1 B +2 b +3 b +1 C +1 c +1 D +1 d +select length(c1), c1 from t1 group by c1; +length(c1) c1 +1 a +2 a +3 a +2 AA +1 b +2 b +3 b +1 C +1 D +select length(c1), c1 from t1 group by c1 collate utf8mb4_general_ci; +length(c1) c1 +1 a +2 AA +1 b +1 C +1 D +select length(c1), c1 from t1 group by c1 collate utf8mb4_bin; +length(c1) c1 +1 a +1 A +2 AA +2 aA +2 Aa +2 aa +1 b +1 B +1 C +1 c +1 D +1 d +select length(c1), c1 from t1 group by c1 collate utf8mb4_0900_ai_ci; +length(c1) c1 +1 a +2 a +3 a +2 AA +1 b +2 b +3 b +1 C +1 D +select length(c1), c1 from t1 group by c1 collate utf8mb4_0900_bin; +length(c1) c1 +1 a +1 A +2 a +3 a +2 AA +2 aA +2 Aa +2 aa +1 b +1 B +2 b +3 b +1 C +1 c +1 D +1 d +select length(c1), max(c1 collate utf8mb4_general_ci) from t1; +length(c1) max(c1 collate utf8mb4_general_ci) +1 D +select length(c1), max(c1 collate utf8mb4_bin) from t1; +length(c1) max(c1 collate utf8mb4_bin) +1 d +select length(c1), max(c1 collate utf8mb4_0900_ai_ci) from t1; +length(c1) max(c1 collate utf8mb4_0900_ai_ci) +1 D +select length(c1), max(c1 collate utf8mb4_0900_bin) from t1; +length(c1) max(c1 collate utf8mb4_0900_bin) +1 d +select distinct c1 collate utf8mb4_general_ci from t1; +c1 collate utf8mb4_general_ci +a +AA +b +C +D +select distinct c1 collate utf8mb4_bin from t1; +c1 collate utf8mb4_bin +a +A +AA +aA +Aa +aa +b +B +C +c +D +d +select distinct c1 collate utf8mb4_0900_ai_ci from t1; +c1 collate utf8mb4_0900_ai_ci +a +a +a +AA +b +b +b +C +D +select distinct c1 collate utf8mb4_0900_bin from t1; +c1 collate utf8mb4_0900_bin +a +A +a +a +AA +aA +Aa +aa +b +B +b +b +C +c +D +d +select length(c1), c1 from t1 where c1 = _utf8mb4 'a' collate utf8mb4_general_ci; +length(c1) c1 +1 a +1 A +2 a +3 a +select length(c1), c1 from t1 where c1 = _utf8mb4 'a' collate utf8mb4_bin; +length(c1) c1 +1 a +select length(c1), c1 from t1 where c1 = _utf8mb4 'a' collate utf8mb4_0900_ai_ci; +length(c1) c1 +1 a +1 A +select length(c1), c1 from t1 where c1 = _utf8mb4 'a' collate utf8mb4_0900_bin; +length(c1) c1 +1 a +select length(c1), c1 from t1 where _utf8mb4 'a' collate utf8mb4_general_ci = c1; +length(c1) c1 +1 a +1 A +2 a +3 a +select length(c1), c1 from t1 where _utf8mb4 'a' collate utf8mb4_bin = c1; +length(c1) c1 +1 a +select length(c1), c1 from t1 where _utf8mb4 'a' collate utf8mb4_0900_ai_ci = c1; +length(c1) c1 +1 a +1 A +select length(c1), c1 from t1 where _utf8mb4 'a' collate utf8mb4_0900_bin = c1; +length(c1) c1 +1 a +select length(c1), c1 from t1 where c1 like _utf8mb4 'a' collate utf8mb4_general_ci; +length(c1) c1 +1 a +1 A +select length(c1), c1 from t1 where c1 like _utf8mb4 'a' collate utf8mb4_bin; +length(c1) c1 +1 a +select length(c1), c1 from t1 where c1 like _utf8mb4 'a' collate utf8mb4_0900_ai_ci; +length(c1) c1 +1 a +1 A +select length(c1), c1 from t1 where c1 like _utf8mb4 'a' collate utf8mb4_0900_bin; +length(c1) c1 +1 a +select length(c1), c1 from t1 group by c1 having c1 = _utf8mb4 'a' collate utf8mb4_general_ci; +length(c1) c1 +1 a +2 a +3 a +select length(c1), c1 from t1 group by c1 having c1 = _utf8mb4 'a' collate utf8mb4_bin; +length(c1) c1 +1 a +2 a +3 a +select length(c1), c1 from t1 group by c1 having c1 = _utf8mb4 'a' collate utf8mb4_0900_ai_ci; +length(c1) c1 +1 a +select length(c1), c1 from t1 group by c1 having c1 = _utf8mb4 'a' collate utf8mb4_0900_bin; +length(c1) c1 +1 a +drop table t1; +CREATE TABLE t1 (c1 INT, c2 BINARY(100), c3 VARBINARY(100), key(c1), key(c2), key(c3)); +INSERT INTO t1 VALUES (null,null,null); +INSERT INTO t1 VALUES (1,'',''); +INSERT INTO t1 VALUES (2,'abcde','abcde'); +INSERT INTO t1 VALUES (100,'abcdefghij','abcdefghij'); +select c1, hex(c2), hex(c3) from t1; +c1 hex(c2) hex(c3) +NULL NULL NULL +1 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2 61626364650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 6162636465 +100 6162636465666768696A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 6162636465666768696A +select hex(c2) from t1 where c2 = 'abcde'; +hex(c2) +select hex(c2) from t1 where c2 = 0x61626364650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; +hex(c2) +61626364650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +select hex(c3) from t1 where c3 = 'abcde'; +hex(c3) +6162636465 +select hex(c3) from t1 where c3 = 'ABCDE'; +hex(c3) +drop table t1; +CREATE TABLE t1 (code varchar(10)) charset utf8mb4; +INSERT INTO t1 VALUES ('a12'), ('A12'), ('a13'); +INSERT INTO t1 VALUES (_utf16 0x0061003100320007), (_utf16 0x00410031003200070007); +SELECT LENGTH(code), HEX(code) FROM t1 WHERE code='A12'; +LENGTH(code) HEX(code) +3 613132 +3 413132 +4 61313207 +5 4131320707 +ALTER TABLE t1 ADD INDEX (code); +CREATE TABLE t2 (id varchar(10) PRIMARY KEY) charset utf8mb4; +INSERT INTO t2 VALUES ('a11'), ('a12'), ('a13'), ('a14'); +SELECT LENGTH(code), HEX(code), LENGTH(id), HEX(id) FROM t1 INNER JOIN t2 ON t1.code=t2.id WHERE t2.id='a12' AND (LENGTH(code)=5 OR code < 'a00'); +LENGTH(code) HEX(code) LENGTH(id) HEX(id) +5 4131320707 3 613132 +SELECT LENGTH(code), HEX(code), LENGTH(id), HEX(id) FROM t1 INNER JOIN t2 ON t1.code=t2.id WHERE t2.id='a12' AND (LENGTH(code)=3); +LENGTH(code) HEX(code) LENGTH(id) HEX(id) +3 613132 3 613132 +3 413132 3 613132 +drop table t1, t2; +set names koi8r; +create table t1(a char character set cp1251 default _koi8r 0xFF); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` char(1) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT 'ÿ' +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t1; +create table t1(c1 char character set cp1251); +insert into t1 values('a'), ('b'); +alter table t1 add column c2 char character set cp1251 default _koi8r 0xFF; +insert into t1 values('c', default), ('d', default); +select c1, hex(c2), c2, length(c2) from t1; +c1 hex(c2) c2 length(c2) +a DA ÿ 1 +b DA ÿ 1 +c DA ÿ 1 +d DA ÿ 1 +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `c1` char(1) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL, + `c2` char(1) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT 'ÿ' +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t1; +set names cp1250; +CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY, str VARCHAR(32) CHARACTER SET cp1250 COLLATE cp1250_czech_cs NOT NULL default '', UNIQUE KEY (str)); +drop table t1; +SET collation_connection='eucjpms_japanese_ci'; +CREATE TABLE t1 AS SELECT 10 AS a, REPEAT('a',20) AS b, REPEAT('a',8) AS c, REPEAT('a',8) AS d; +ALTER TABLE t1 ADD PRIMARY KEY(a), ADD KEY(b); +drop table t1; +set names utf8mb4; +SET sql_mode = default; diff --git a/mysql-test/suite/tianchi/r/ctc_compressed_proxy_conn.result b/mysql-test/suite/tianchi/r/ctc_compressed_proxy_conn.result new file mode 100644 index 0000000..1141f8d --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_compressed_proxy_conn.result @@ -0,0 +1,14 @@ +SET GLOBAL protocol_compression_algorithms= "zstd"; +SET GLOBAL protocol_compression_algorithms= "zstd"; +drop table if exists t1; +create table t1 (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +insert into t1 values (1, 'LIOR', 35, 6.9); +insert into t1 values (4, 'MIKE', 55, 99.92); +SELECT * FROM t1; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +drop table t1; +SET GLOBAL protocol_compression_algorithms= "zlib"; +SET GLOBAL protocol_compression_algorithms= "zlib"; +SET GLOBAL protocol_compression_algorithms= "zlib,zstd,uncompressed"; diff --git a/mysql-test/suite/tianchi/r/ctc_cond_pushdown.result b/mysql-test/suite/tianchi/r/ctc_cond_pushdown.result new file mode 100644 index 0000000..22397f7 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_cond_pushdown.result @@ -0,0 +1,680 @@ +drop table if exists t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15; +CREATE TABLE t1(c1 tinyint, c2 tinyint not null, c3 tinyint signed, c4 tinyint unsigned, c5 int, c6 long); +INSERT INTO t1 VALUES (1,1,1,1,1,1), (2,2,2,2,2,2); +INSERT INTO t1 VALUES (null, 5, null, null, null, null); +INSERT INTO t1 VALUES (3,3,3,3,3,3), (4,4,4,4,4,4); +INSERT INTO t1 VALUES (null, 7, null, null, null, null); +INSERT INTO t1 VALUES (8,8,127,255,8,8); +select * from t1; +c1 c2 c3 c4 c5 c6 +1 1 1 1 1 1 +2 2 2 2 2 2 +NULL 5 NULL NULL NULL NULL +3 3 3 3 3 3 +4 4 4 4 4 4 +NULL 7 NULL NULL NULL NULL +8 8 127 255 8 8 +CREATE TABLE t2(c1 float , c2 float(6, 3), c3 float(6,3), c4 double, c5 double(6, 3), c6 double(6, 3)); +Warnings: +Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release. +Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release. +Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release. +Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release. +INSERT INTO t2 VALUES (1.1,11.11, 11.11111,1.1,11.11,11.11111), (2.2,22.22,22.22222, 2.2,22.22, 22.22222), (3.3,33.33, 33.33333, 3.3,33.33, 33.33333); +select * from t2; +c1 c2 c3 c4 c5 c6 +1.1 11.110 11.111 1.1 11.110 11.111 +2.2 22.220 22.222 2.2 22.220 22.222 +3.3 33.330 33.333 3.3 33.330 33.333 +CREATE TABLE t3(c1 DECIMAL(10,5) UNSIGNED NOT NULL, c2 DECIMAL(10,5) SIGNED NULL, c3 DECIMAL); +Warnings: +Warning 1681 UNSIGNED for decimal and floating point data types is deprecated and support for it will be removed in a future release. +INSERT INTO t3 VALUES ('11111.11111','11111.11111','1111111111'),('22222.22222','22222.22222','2222222222'),('33333.33333','33333.33333','3333333333'),('44444.44444','44444.44444','4444444444'),('55555.55555','55555.55555','5555555555'); +select * from t3; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +CREATE TABLE t4(c1 char(10), c2 varchar(20), c3 varchar(20) binary); +Warnings: +Warning 1287 'BINARY as attribute of a type' is deprecated and will be removed in a future release. Please use a CHARACTER SET clause with _bin collation instead +INSERT INTO t4 VALUES ('1234','abcd','abcd'), ('123','ABCD','ABCD'),('123456','aBcD','aBcD'),('23456','abCD','abCD'),('','',''),(null, null, null); +select * from t4; +c1 c2 c3 +1234 abcd abcd +123 ABCD ABCD +123456 aBcD aBcD +23456 abCD abCD + +NULL NULL NULL +CREATE TABLE t5(c1 TIME, c2 TIME NOT NULL); +INSERT INTO t5 VALUES ('01:01:01.01', '1000-01-01 00:00:00'); +Warnings: +Note 1292 Incorrect time value: '1000-01-01 00:00:00' for column 'c2' at row 1 +INSERT INTO t5 VALUES ('01:01:01.00', '1999-12-31 23:59:59'); +Warnings: +Note 1292 Incorrect time value: '1999-12-31 23:59:59' for column 'c2' at row 1 +INSERT INTO t5 VALUES ('02:02:02', '2000-01-01 00:00:00'); +Warnings: +Note 1292 Incorrect time value: '2000-01-01 00:00:00' for column 'c2' at row 1 +INSERT INTO t5 VALUES ('02:02:02', '2008-02-29 13:13:13'); +Warnings: +Note 1292 Incorrect time value: '2008-02-29 13:13:13' for column 'c2' at row 1 +select * from t5; +c1 c2 +01:01:01 00:00:00 +01:01:01 23:59:59 +02:02:02 00:00:00 +02:02:02 13:13:13 +CREATE TABLE t6(c1 DATE, c2 DATE NOT NULL); +INSERT INTO t6 VALUES('1000-01-01', '1000-01-01 00:00:00'); +INSERT INTO t6 VALUES('1999-12-31', '1999-12-31 23:59:59'); +Warnings: +Note 1292 Incorrect date value: '1999-12-31 23:59:59' for column 'c2' at row 1 +INSERT INTO t6 VALUES('2000-01-01', '2000-01-01 00:00:00'); +INSERT INTO t6 VALUES('2008-02-29', '2008-02-29 13:13:13'); +Warnings: +Note 1292 Incorrect date value: '2008-02-29 13:13:13' for column 'c2' at row 1 +select * from t6; +c1 c2 +1000-01-01 1000-01-01 +1999-12-31 1999-12-31 +2000-01-01 2000-01-01 +2008-02-29 2008-02-29 +CREATE TABLE t7(c1 DATETIME, c2 DATETIME NOT NULL); +INSERT INTO t7 VALUES('1000-01-01', '1000-01-01 00:00:00'); +INSERT INTO t7 VALUES('1999-12-31', '1999-12-31 23:59:59'); +INSERT INTO t7 VALUES('2000-01-01', '2000-01-01 00:00:00'); +INSERT INTO t7 VALUES('2008-02-29', '2008-02-29 13:13:13'); +select * from t7; +c1 c2 +1000-01-01 00:00:00 1000-01-01 00:00:00 +1999-12-31 00:00:00 1999-12-31 23:59:59 +2000-01-01 00:00:00 2000-01-01 00:00:00 +2008-02-29 00:00:00 2008-02-29 13:13:13 +CREATE TABLE t8(c1 TIMESTAMP, c2 TIMESTAMP NOT NULL); +INSERT INTO t8 VALUES('1999-12-31', '1999-12-31 23:59:59'); +INSERT INTO t8 VALUES('2000-01-01', '2000-01-01 00:00:00'); +INSERT INTO t8 VALUES('2008-02-29', '2008-02-29 13:13:13'); +select * from t8; +c1 c2 +1999-12-31 00:00:00 1999-12-31 23:59:59 +2000-01-01 00:00:00 2000-01-01 00:00:00 +2008-02-29 00:00:00 2008-02-29 13:13:13 +CREATE TABLE t9(c1 bool, c2 bool NOT NULL); +INSERT INTO t9 VALUES(true, true); +INSERT INTO t9 VALUES(false, false); +INSERT INTO t9 VALUES(null, false); +select * from t9; +c1 c2 +1 1 +0 0 +NULL 0 +CREATE TABLE t10(c1 int, c2 int, key(c1,c2)); +INSERT INTO t10 VALUES (94,94),(64,64),(69,69),(97,97); +select * from t10; +c1 c2 +64 64 +69 69 +94 94 +97 97 +CREATE TABLE t11(c1 YEAR, c2 YEAR, UNIQUE INDEX idx(c1,c2)); +INSERT INTO t11 VALUES (94, 94),(64, 64),(69, 69),(97, null); +INSERT INTO t11 VALUES (4, null),(8, 8),(null, 35),(75, 75); +select * from t11; +c1 c2 +NULL 2035 +1975 1975 +1994 1994 +1997 NULL +2004 NULL +2008 2008 +2064 2064 +2069 2069 +create table t12 (IDA blob); +insert into t12 (IDA) values ('aaa'); +select * from t12; +IDA +aaa +create table t13(id int, a_integer integer, b_char char, c_varchar varchar(10), d_deciaml decimal, e_tinyint tinyint, f_bigint bigint, g_float float, h_date date); +insert into t13 values(1, 11, "b", "varchar", 111, 10, 100, 10.01, 20220923); +insert into t13 values(2, 22, "b", "varchar", 222, 20, 200, 20.01, 20220923); +insert into t13 values(3, 33, "b", "varchar", 333, 30, 300, 30.01, 20220923); +insert into t13 values(4, 44, "b", "varchar", 444, 40, 400, 40.01, 20220923); +insert into t13 values(5, 55, "b", "varchar", 555, 50, 500, 50.01, 20220923); +select * from t13; +id a_integer b_char c_varchar d_deciaml e_tinyint f_bigint g_float h_date +1 11 b varchar 111 10 100 10.01 2022-09-23 +2 22 b varchar 222 20 200 20.01 2022-09-23 +3 33 b varchar 333 30 300 30.01 2022-09-23 +4 44 b varchar 444 40 400 40.01 2022-09-23 +5 55 b varchar 555 50 500 50.01 2022-09-23 +CREATE TABLE t14(c1 char(5), c2 varchar(2000)); +INSERT INTO t14 VALUES ('1111','1111111111111111111111111111111111122222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555'); +select * from t14; +c1 c2 +1111 1111111111111111111111111111111111122222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555 +CREATE TABLE t15 (c1 INT, c2 BINARY(100), c3 VARBINARY(100)); +INSERT INTO t15 VALUES (null,null,null); +INSERT INTO t15 VALUES (1,'',''); +INSERT INTO t15 VALUES (2,'abcde','abcde'); +INSERT INTO t15 VALUES (100,'abcdefghij','abcdefghij'); +select c1, hex(c2), hex(c3) from t15; +c1 hex(c2) hex(c3) +NULL NULL NULL +1 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +2 61626364650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 6162636465 +100 6162636465666768696A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 6162636465666768696A +select * from t1 where c3 = 255; +c1 c2 c3 c4 c5 c6 +select * from t1 where c1 = 3; +c1 c2 c3 c4 c5 c6 +3 3 3 3 3 3 +select * from t1 where c1 > 3; +c1 c2 c3 c4 c5 c6 +4 4 4 4 4 4 +8 8 127 255 8 8 +select * from t1 where c1 != 3; +c1 c2 c3 c4 c5 c6 +1 1 1 1 1 1 +2 2 2 2 2 2 +4 4 4 4 4 4 +8 8 127 255 8 8 +select * from t1 where c2 = 3; +c1 c2 c3 c4 c5 c6 +3 3 3 3 3 3 +select * from t1 where c4 = 255; +c1 c2 c3 c4 c5 c6 +8 8 127 255 8 8 +select * from t2 where c3 = 11.111; +c1 c2 c3 c4 c5 c6 +1.1 11.110 11.111 1.1 11.110 11.111 +select * from t2 where c4 = 1.1; +c1 c2 c3 c4 c5 c6 +1.1 11.110 11.111 1.1 11.110 11.111 +select * from t2 where c6 = 11.111; +c1 c2 c3 c4 c5 c6 +1.1 11.110 11.111 1.1 11.110 11.111 +select * from t1 where null <=> null; +c1 c2 c3 c4 c5 c6 +1 1 1 1 1 1 +2 2 2 2 2 2 +NULL 5 NULL NULL NULL NULL +3 3 3 3 3 3 +4 4 4 4 4 4 +NULL 7 NULL NULL NULL NULL +8 8 127 255 8 8 +select * from t1 where c1 = null; +c1 c2 c3 c4 c5 c6 +select * from t1 where c1 != null; +c1 c2 c3 c4 c5 c6 +select * from t1 where c1 > null; +c1 c2 c3 c4 c5 c6 +select * from t1 where c1 < null; +c1 c2 c3 c4 c5 c6 +select * from t1 where c1 <=> null; +c1 c2 c3 c4 c5 c6 +NULL 5 NULL NULL NULL NULL +NULL 7 NULL NULL NULL NULL +select * from t1 where c1 is null; +c1 c2 c3 c4 c5 c6 +NULL 5 NULL NULL NULL NULL +NULL 7 NULL NULL NULL NULL +select * from t1 where c1 is not null; +c1 c2 c3 c4 c5 c6 +1 1 1 1 1 1 +2 2 2 2 2 2 +3 3 3 3 3 3 +4 4 4 4 4 4 +8 8 127 255 8 8 +select * from t1 where not c1 <=> null; +c1 c2 c3 c4 c5 c6 +1 1 1 1 1 1 +2 2 2 2 2 2 +3 3 3 3 3 3 +4 4 4 4 4 4 +8 8 127 255 8 8 +select * from t1 where c1 > 3 or c2 = 4 or c3 >=3 or c4 = 5 or (c1 > 1 and c2 < 5 and c3 > 2); +c1 c2 c3 c4 c5 c6 +3 3 3 3 3 3 +4 4 4 4 4 4 +8 8 127 255 8 8 +select * from t3 where c1 = '22222.22222'; +c1 c2 c3 +22222.22222 22222.22222 2222222222 +select * from t3 where c1 > '22222.22222'; +c1 c2 c3 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c1 < '22222.33333'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +select * from t3 where c1 > '222'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c1 > '0.1'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c1 > '0.0'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c1 > '0'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c2 = '22222.22222'; +c1 c2 c3 +22222.22222 22222.22222 2222222222 +select * from t3 where c2 > '22222.22222'; +c1 c2 c3 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c2 < '22222.33333'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +select * from t3 where c2 > '222'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c2 > '0.1'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c2 > '0.0'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c2 > '0'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c1 like '%3'; +c1 c2 c3 +33333.33333 33333.33333 3333333333 +select * from t3 where c1 like '3%'; +c1 c2 c3 +33333.33333 33333.33333 3333333333 +select * from t3 where c1 not like '1'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where not c1 like '1'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c3 = 1111111111; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +select * from t3 where c3 > 1111111111.0; +c1 c2 c3 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c3 > 1111111111.; +c1 c2 c3 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c3 = 1.0; +c1 c2 c3 +select * from t3 where c3 > 1; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +55555.55555 55555.55555 5555555555 +select * from t3 where c1 > '11111.11111' and c1 < '55555.55555'; +c1 c2 c3 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +select * from t3 where c1 > '11111.11111' and c1 < '55555.55555'; +c1 c2 c3 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +44444.44444 44444.44444 4444444444 +select * from t9 where c1 is null; +c1 c2 +NULL 0 +select * from t9 where c1 is not null; +c1 c2 +1 1 +0 0 +select * from t9 where c1 is true; +c1 c2 +1 1 +select * from t9 where c1 is not true; +c1 c2 +0 0 +NULL 0 +select * from t9 where c1 is false; +c1 c2 +0 0 +select * from t9 where c1 = 1; +c1 c2 +1 1 +select * from t4 where c1 = '1234'; +c1 c2 c3 +1234 abcd abcd +select * from t4 where c1 > '123'; +c1 c2 c3 +1234 abcd abcd +123456 aBcD aBcD +23456 abCD abCD +select * from t14 where c2 = '1111111111111111111111111111111111122222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555'; +c1 c2 +1111 1111111111111111111111111111111111122222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555 +select * from t4 where c1 = ''; +c1 c2 c3 + +select * from t4 where c1 = '' and c2 = ''; +c1 c2 c3 + +select * from t4 where c1 = '' and c2 = ''; +c1 c2 c3 + +select * from t4 where c1 = null; +c1 c2 c3 +select * from t4 where c1 <=> null; +c1 c2 c3 +NULL NULL NULL +select * from t4 where c2 = 'abcd'; +c1 c2 c3 +1234 abcd abcd +123 ABCD ABCD +123456 aBcD aBcD +23456 abCD abCD +select * from t4 where c3 = 'abcd'; +c1 c2 c3 +1234 abcd abcd +select * from t4 where c2 = 'ABCD'; +c1 c2 c3 +1234 abcd abcd +123 ABCD ABCD +123456 aBcD aBcD +23456 abCD abCD +select * from t4 where c3 = 'ABCD'; +c1 c2 c3 +123 ABCD ABCD +select * from t4 where c2 like 'ab%'; +c1 c2 c3 +1234 abcd abcd +123 ABCD ABCD +123456 aBcD aBcD +23456 abCD abCD +select * from t4 where c3 like 'ab%'; +c1 c2 c3 +1234 abcd abcd +23456 abCD abCD +select * from t14 where c1 = '1111'; +c1 c2 +1111 1111111111111111111111111111111111122222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555 +select * from t14 where c1 like '%111'; +c1 c2 +1111 1111111111111111111111111111111111122222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555 +select * from t14 where c1 not like '%111'; +c1 c2 +select * from t14 where not c1 like '%111'; +c1 c2 +select * from t14 where not c1 like '1111'; +c1 c2 +select * from t14 where c1 not like '1_11'; +c1 c2 +select * from t14 where not c1 like '1_11'; +c1 c2 +select * from t14 where c1 like concat('%','1','%'); +c1 c2 +1111 1111111111111111111111111111111111122222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555555555555555555555555555555555555555555555555 +select * from t1 where c1 > 3 and c2 = 4 and c3 >=1; +c1 c2 c3 c4 c5 c6 +4 4 4 4 4 4 +select * from t1 where c1 > 3 and c2 = 8; +c1 c2 c3 c4 c5 c6 +8 8 127 255 8 8 +select * from t1 where not c1 > 3; +c1 c2 c3 c4 c5 c6 +1 1 1 1 1 1 +2 2 2 2 2 2 +3 3 3 3 3 3 +select * from t1 where not (c1 > 3 and c2 = 4 and c3 >=1); +c1 c2 c3 c4 c5 c6 +1 1 1 1 1 1 +2 2 2 2 2 2 +NULL 5 NULL NULL NULL NULL +3 3 3 3 3 3 +NULL 7 NULL NULL NULL NULL +8 8 127 255 8 8 +select * from t1 where c1 = 1 xor c2 = 5; +c1 c2 c3 c4 c5 c6 +1 1 1 1 1 1 +select * from t1 where c1 = 1 xor c2 = 1; +c1 c2 c3 c4 c5 c6 +select * from t1 where c1 > 3 or c2 = 4 or c3 >=3 or c4 = 5 or (c1 > 1 and c2 < 5 and c3 > 2); +c1 c2 c3 c4 c5 c6 +3 3 3 3 3 3 +4 4 4 4 4 4 +8 8 127 255 8 8 +select c1 from t10 where c2=69; +c1 +69 +select c1 from t10 where c1=69; +c1 +69 +select c1 from t11 where c2=69; +c1 +2069 +select c1 from t11 where c2=69; +c1 +2069 +select c1,c2 from t11 where c2=4; +c1 c2 +select * from t13 where e_tinyint = 30; +id a_integer b_char c_varchar d_deciaml e_tinyint f_bigint g_float h_date +3 33 b varchar 333 30 300 30.01 2022-09-23 +alter table t13 drop column d_deciaml; +select * from t13 where e_tinyint = 30; +id a_integer b_char c_varchar e_tinyint f_bigint g_float h_date +3 33 b varchar 30 300 30.01 2022-09-23 +select hex(c2) from t15 where c2 = 'abcde'; +hex(c2) +select hex(c2) from t15 where c2 = 0x61626364650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000; +hex(c2) +61626364650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +select hex(c3) from t15 where c3 = 'abcde'; +hex(c3) +6162636465 +select * from t5 where c1 = '01:01:01.01'; +c1 c2 +01:01:01 00:00:00 +01:01:01 23:59:59 +select * from t5 where c1 > '01:01:01.01'; +c1 c2 +02:02:02 00:00:00 +02:02:02 13:13:13 +select * from t5 where c1 = '02:02:02'; +c1 c2 +02:02:02 00:00:00 +02:02:02 13:13:13 +select * from t5 where c2 = '00:00:00'; +c1 c2 +01:01:01 00:00:00 +02:02:02 00:00:00 +select * from t5 where c2 = '1000-01-01 00:00:00'; +c1 c2 +01:01:01 00:00:00 +02:02:02 00:00:00 +Warnings: +Note 1292 Incorrect time value: '1000-01-01 00:00:00' for column 'c2' at row 1 +select * from t5 where c2 = '1999-12-31 23:59:59'; +c1 c2 +01:01:01 23:59:59 +Warnings: +Note 1292 Incorrect time value: '1999-12-31 23:59:59' for column 'c2' at row 1 +select * from t6 where c1 = '1000-01-01'; +c1 c2 +1000-01-01 1000-01-01 +select * from t6 where c1 = '1000-01-01 00:00:00'; +c1 c2 +1000-01-01 1000-01-01 +select * from t6 where c1 > '1000-01-01 00:00:00'; +c1 c2 +1999-12-31 1999-12-31 +2000-01-01 2000-01-01 +2008-02-29 2008-02-29 +select * from t6 where c2 = '1000-01-01'; +c1 c2 +1000-01-01 1000-01-01 +select * from t6 where c2 = '1000-01-01 00:00:00'; +c1 c2 +1000-01-01 1000-01-01 +select * from t7 where c1 = '1000-01-01'; +c1 c2 +1000-01-01 00:00:00 1000-01-01 00:00:00 +select * from t7 where c1 = '1000-01-01 00:00:00'; +c1 c2 +1000-01-01 00:00:00 1000-01-01 00:00:00 +select * from t7 where c1 > '1000-01-01 00:00:00'; +c1 c2 +1999-12-31 00:00:00 1999-12-31 23:59:59 +2000-01-01 00:00:00 2000-01-01 00:00:00 +2008-02-29 00:00:00 2008-02-29 13:13:13 +select * from t7 where c2 = '1000-01-01'; +c1 c2 +1000-01-01 00:00:00 1000-01-01 00:00:00 +select * from t7 where c2 = '1000-01-01 00:00:00'; +c1 c2 +1000-01-01 00:00:00 1000-01-01 00:00:00 +select * from t8 where c1 = '2000-01-01'; +c1 c2 +2000-01-01 00:00:00 2000-01-01 00:00:00 +select * from t8 where c1 = '2000-01-01 00:00:00'; +c1 c2 +2000-01-01 00:00:00 2000-01-01 00:00:00 +select * from t8 where c1 > '2000-01-01 00:00:00'; +c1 c2 +2008-02-29 00:00:00 2008-02-29 13:13:13 +select * from t8 where c2 = '2000-01-01'; +c1 c2 +2000-01-01 00:00:00 2000-01-01 00:00:00 +select * from t8 where c2 = '2000-01-01 00:00:00'; +c1 c2 +2000-01-01 00:00:00 2000-01-01 00:00:00 +select * from t11 where c1 = 4; +c1 c2 +2004 NULL +select * from t11 where c1 = 2004; +c1 c2 +2004 NULL +select * from t11 where c1 = '2004'; +c1 c2 +2004 NULL +select * from t11 where c1 = 2004.0; +c1 c2 +2004 NULL +select * from t11 where '2004' = c1; +c1 c2 +2004 NULL +select * from t12 where IDA = 'aaa'; +IDA +aaa +drop table if exists tickets; +Warnings: +Note 1051 Unknown table 'test.tickets' +CREATE TABLE tickets ( +id INT PRIMARY KEY AUTO_INCREMENT, +title VARCHAR(255) NOT NULL, +priority ENUM('Low', 'Medium', 'High') NOT NULL +); +INSERT INTO tickets(title, priority) VALUES('Scan virus for computer A', 'High'); +INSERT INTO tickets(title, priority) VALUES('Upgrade Windows OS for all computers', 1); +INSERT INTO tickets(title) VALUES('Refresh the computer of Ms. Lily'); +SELECT * FROM tickets WHERE priority = 3; +id title priority +1 Scan virus for computer A High +drop table if exists tickets; +drop table if exists myset; +Warnings: +Note 1051 Unknown table 'test.myset' +CREATE TABLE myset (col SET('a', 'b', 'c', 'd')); +INSERT INTO myset (col) VALUES('a,d'); +INSERT INTO myset (col) VALUES('d,a'); +INSERT INTO myset (col) VALUES('a,d,a'); +INSERT INTO myset (col) VALUES('a,d,d'); +INSERT INTO myset (col) VALUES('d,a,d'); +INSERT INTO myset (col) VALUES('A'); +INSERT INTO myset (col) VALUES('a,C,b,d'); +select * from myset where col = 'a'; +col +a +select * from myset where col = 'a,d'; +col +a,d +a,d +a,d +a,d +a,d +select * from myset where col like 'a,d'; +col +a,d +a,d +a,d +a,d +a,d +drop table if exists myset; +drop table t1; +drop table t2; +drop table t3; +drop table t4; +drop table t5; +drop table t6; +drop table t7; +drop table t8; +drop table t9; +drop table t10; +drop table t11; +drop table t12; +drop table t13; +drop table t14; +drop table t15; diff --git a/mysql-test/suite/tianchi/r/ctc_cond_pushdown_explain.result b/mysql-test/suite/tianchi/r/ctc_cond_pushdown_explain.result new file mode 100644 index 0000000..060d057 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_cond_pushdown_explain.result @@ -0,0 +1,368 @@ +drop table if exists t1, t2, t3, t4, t5, t6, t7; +CREATE TABLE t1(c1 TINYINT, c2 SMALLINT not null, c3 MEDIUMINT, c4 INT unsigned, c5 INT, c6 BIGINT, c7 BIGINT unsigned); +INSERT INTO t1 VALUES (1,1,1,1,1,1,1), (2,2,2,2,2,2,2); +INSERT INTO t1 VALUES (null, 5, null, null, null, null,null); +INSERT INTO t1 VALUES (3,3,3,3,3,3,3), (4,4,4,4,4,4,4); +INSERT INTO t1 VALUES (null, 7, null, null, null, null,null); +INSERT INTO t1 VALUES (8,8,127,255,8,8,8); +select * from t1; +c1 c2 c3 c4 c5 c6 c7 +1 1 1 1 1 1 1 +2 2 2 2 2 2 2 +NULL 5 NULL NULL NULL NULL NULL +3 3 3 3 3 3 3 +4 4 4 4 4 4 4 +NULL 7 NULL NULL NULL NULL NULL +8 8 127 255 8 8 8 +select * from t1 where c1 > 1; +c1 c2 c3 c4 c5 c6 c7 +2 2 2 2 2 2 2 +3 3 3 3 3 3 3 +4 4 4 4 4 4 4 +8 8 127 255 8 8 8 +explain select * from t1 where c1 > 1; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`c1` > 1) +select * from t1 where c2 < 7; +c1 c2 c3 c4 c5 c6 c7 +1 1 1 1 1 1 1 +2 2 2 2 2 2 2 +NULL 5 NULL NULL NULL NULL NULL +3 3 3 3 3 3 3 +4 4 4 4 4 4 4 +explain select * from t1 where c2 < 7; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`c2` < 7) +select * from t1 where c3 = 3; +c1 c2 c3 c4 c5 c6 c7 +3 3 3 3 3 3 3 +explain select * from t1 where c3 = 3; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`c3` = 3) +select * from t1 where c4 >= 4; +c1 c2 c3 c4 c5 c6 c7 +4 4 4 4 4 4 4 +8 8 127 255 8 8 8 +explain select * from t1 where c4 >= 4; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`c4` >= 4) +select * from t1 where c5 <= 8; +c1 c2 c3 c4 c5 c6 c7 +1 1 1 1 1 1 1 +2 2 2 2 2 2 2 +3 3 3 3 3 3 3 +4 4 4 4 4 4 4 +8 8 127 255 8 8 8 +explain select * from t1 where c5 <= 8; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`c5` <= 8) +select * from t1 where c6 != 2; +c1 c2 c3 c4 c5 c6 c7 +1 1 1 1 1 1 1 +3 3 3 3 3 3 3 +4 4 4 4 4 4 4 +8 8 127 255 8 8 8 +explain select * from t1 where c6 != 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 66.67 Using where; Using pushed condition (`test`.`t1`.`c6` <> 2) +select * from t1 where c5 <=> null; +c1 c2 c3 c4 c5 c6 c7 +NULL 5 NULL NULL NULL NULL NULL +NULL 7 NULL NULL NULL NULL NULL +explain select * from t1 where c5 <=> null; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`c5` <=> NULL) +select * from t1 where c1 = null; +c1 c2 c3 c4 c5 c6 c7 +explain select * from t1 where c1 = null; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`c1` = NULL) +select * from t1 where c7 = 8; +c1 c2 c3 c4 c5 c6 c7 +8 8 127 255 8 8 8 +explain select * from t1 where c7 = 8; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`c7` = 8) +CREATE TABLE t2(c1 char(10), c2 varchar(20), c3 varchar(20) binary); +INSERT INTO t2 VALUES ('1234','abcd','abcd'), ('123','ABCD','ABCD'),('123456','aBcD','aBcD'),('23456','abCD','abCD'),('','',''),(null, null, null); +select * from t2; +c1 c2 c3 +1234 abcd abcd +123 ABCD ABCD +123456 aBcD aBcD +23456 abCD abCD + +NULL NULL NULL +select * from t2 where c1 like '%123%'; +c1 c2 c3 +1234 abcd abcd +123 ABCD ABCD +123456 aBcD aBcD +explain select * from t2 where c1 like '%123%'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t2`.`c1` like '%123%') +select * from t2 where c2 like '%abc%'; +c1 c2 c3 +1234 abcd abcd +123 ABCD ABCD +123456 aBcD aBcD +23456 abCD abCD +explain select * from t2 where c2 like '%abc%'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t2`.`c2` like '%abc%') +select * from t2 where c1 is null; +c1 c2 c3 +NULL NULL NULL +explain select * from t2 where c1 is null; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t2`.`c1` is null) +select * from t2 where c2 is null; +c1 c2 c3 +NULL NULL NULL +explain select * from t2 where c2 is null; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t2`.`c2` is null) +select * from t2 where c1 is not null; +c1 c2 c3 +1234 abcd abcd +123 ABCD ABCD +123456 aBcD aBcD +23456 abCD abCD + +explain select * from t2 where c1 is not null; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 3 66.67 Using where; Using pushed condition (`test`.`t2`.`c1` is not null) +select * from t2 where c2 is not null; +c1 c2 c3 +1234 abcd abcd +123 ABCD ABCD +123456 aBcD aBcD +23456 abCD abCD + +explain select * from t2 where c2 is not null; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 3 66.67 Using where; Using pushed condition (`test`.`t2`.`c2` is not null) +select * from t2 where c3 like '%abc%'; +c1 c2 c3 +1234 abcd abcd +explain select * from t2 where c3 like '%abc%'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t2 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t2`.`c3` like '%abc%') +CREATE TABLE t3(c1 float , c2 float(6,3), c3 double, c4 double(6,3)); +INSERT INTO t3 VALUES (1.1,11.11,1.1,11.11), (2.2,22.22,2.2,22.22), (3.3,33.33,3.3,33.33); +select * from t3; +c1 c2 c3 c4 +1.1 11.110 1.1 11.110 +2.2 22.220 2.2 22.220 +3.3 33.330 3.3 33.330 +select * from t3 where c1 = 1.1; +c1 c2 c3 c4 +explain select * from t3 where c1 = 1.1; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t3 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t3`.`c1` = 1.1) +select * from t3 where c2 > 1.1; +c1 c2 c3 c4 +1.1 11.110 1.1 11.110 +2.2 22.220 2.2 22.220 +3.3 33.330 3.3 33.330 +explain select * from t3 where c2 > 1.1; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t3 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t3`.`c2` > 1.100000023841858) +select * from t3 where c3 < 3.3; +c1 c2 c3 c4 +1.1 11.110 1.1 11.110 +2.2 22.220 2.2 22.220 +explain select * from t3 where c3 < 3.3; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t3 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t3`.`c3` < 3.3) +select * from t3 where c4 >= 11.11; +c1 c2 c3 c4 +1.1 11.110 1.1 11.110 +2.2 22.220 2.2 22.220 +3.3 33.330 3.3 33.330 +explain select * from t3 where c4 >= 11.11; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t3 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t3`.`c4` >= 11.11) +select * from t3 where c1 <= 3.3; +c1 c2 c3 c4 +1.1 11.110 1.1 11.110 +2.2 22.220 2.2 22.220 +3.3 33.330 3.3 33.330 +explain select * from t3 where c1 <= 3.3; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t3 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t3`.`c1` <= 3.3) +select * from t3 where c2 != 22.22; +c1 c2 c3 c4 +1.1 11.110 1.1 11.110 +3.3 33.330 3.3 33.330 +explain select * from t3 where c2 != 22.22; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t3 NULL ALL NULL NULL NULL NULL 3 66.67 Using where; Using pushed condition (`test`.`t3`.`c2` <> 22.219999313354492) +select * from t3 where c3 <=> 2.2; +c1 c2 c3 c4 +2.2 22.220 2.2 22.220 +explain select * from t3 where c3 <=> 2.2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t3 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t3`.`c3` <=> 2.2) +CREATE TABLE t4(c1 DECIMAL(10,5) UNSIGNED NOT NULL, c2 DECIMAL(10,5) SIGNED NULL, c3 DECIMAL); +INSERT INTO t4 VALUES ('11111.11111','11111.11111','1111111111'),('22222.22222','22222.22222','2222222222'),('33333.33333','33333.33333','3333333333'); +select * from t4; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +select * from t4 where c1 = '11111.11111'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +explain select * from t4 where c1 = '11111.11111'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t4 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t4`.`c1` = 11111.11111) +select * from t4 where c1 > '22222.22222'; +c1 c2 c3 +33333.33333 33333.33333 3333333333 +explain select * from t4 where c1 > '22222.22222'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t4 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t4`.`c1` > 22222.22222) +select * from t4 where c1 < '33333.33333'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +explain select * from t4 where c1 < '33333.33333'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t4 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t4`.`c1` < 33333.33333) +select * from t4 where c2 >= '11111.11111'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +33333.33333 33333.33333 3333333333 +explain select * from t4 where c2 >= '11111.11111'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t4 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t4`.`c2` >= 11111.11111) +select * from t4 where c2 <= '22222.22222'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +explain select * from t4 where c2 <= '22222.22222'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t4 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t4`.`c2` <= 22222.22222) +select * from t4 where c2 != '33333.33333'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +22222.22222 22222.22222 2222222222 +explain select * from t4 where c2 != '33333.33333'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t4 NULL ALL NULL NULL NULL NULL 3 66.67 Using where; Using pushed condition (`test`.`t4`.`c2` <> 33333.33333) +select * from t4 where c3 <=> '1111111111'; +c1 c2 c3 +11111.11111 11111.11111 1111111111 +explain select * from t4 where c3 <=> '1111111111'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t4 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t4`.`c3` <=> 1111111111) +CREATE TABLE t5(c1 year, c2 TIME, c3 DATE, c4 DATETIME, c5 TIMESTAMP); +INSERT INTO t5 VALUES (94, '1999-12-31 23:59:59', '2000-01-01', '2008-02-29 13:13:13', '2012-03-04 11:21:14'); +INSERT INTO t5 VALUES (2014, '2001-12-31 23:59:59', '2004-01-01', '2007-01-29 13:13:13', '2014-03-04 11:21:14'); +INSERT INTO t5 VALUES (2023, '2009-12-31 23:59:59', '2012-01-01', '2015-05-29 13:13:13', '2020-03-04 11:21:14'); +select * from t5; +c1 c2 c3 c4 c5 +1994 23:59:59 2000-01-01 2008-02-29 13:13:13 2012-03-04 11:21:14 +2014 23:59:59 2004-01-01 2007-01-29 13:13:13 2014-03-04 11:21:14 +2023 23:59:59 2012-01-01 2015-05-29 13:13:13 2020-03-04 11:21:14 +select * from t5 where c1 = 1994; +c1 c2 c3 c4 c5 +1994 23:59:59 2000-01-01 2008-02-29 13:13:13 2012-03-04 11:21:14 +explain select * from t5 where c1 = 1994; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t5 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t5`.`c1` = 1994) +select * from t5 where c2 > '23:59:50'; +c1 c2 c3 c4 c5 +1994 23:59:59 2000-01-01 2008-02-29 13:13:13 2012-03-04 11:21:14 +2014 23:59:59 2004-01-01 2007-01-29 13:13:13 2014-03-04 11:21:14 +2023 23:59:59 2012-01-01 2015-05-29 13:13:13 2020-03-04 11:21:14 +explain select * from t5 where c2 > '23:59:50'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t5 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t5`.`c2` > TIME'23:59:50') +select * from t5 where c3 < '2012-01-01'; +c1 c2 c3 c4 c5 +1994 23:59:59 2000-01-01 2008-02-29 13:13:13 2012-03-04 11:21:14 +2014 23:59:59 2004-01-01 2007-01-29 13:13:13 2014-03-04 11:21:14 +explain select * from t5 where c3 < '2012-01-01'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t5 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t5`.`c3` < DATE'2012-01-01') +select * from t5 where c4 >= '2008-02-29 13:13:13'; +c1 c2 c3 c4 c5 +1994 23:59:59 2000-01-01 2008-02-29 13:13:13 2012-03-04 11:21:14 +2023 23:59:59 2012-01-01 2015-05-29 13:13:13 2020-03-04 11:21:14 +explain select * from t5 where c4 >= '2008-02-29 13:13:13'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t5 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t5`.`c4` >= TIMESTAMP'2008-02-29 13:13:13') +select * from t5 where c5 <=> '2020-03-04 11:21:14'; +c1 c2 c3 c4 c5 +2023 23:59:59 2012-01-01 2015-05-29 13:13:13 2020-03-04 11:21:14 +explain select * from t5 where c5 <=> '2020-03-04 11:21:14'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t5 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t5`.`c5` <=> TIMESTAMP'2020-03-04 11:21:14') +CREATE TABLE t6(x VARCHAR(10), gc INTEGER GENERATED ALWAYS AS (x LIKE 'abba' ESCAPE 'b'), y INTEGER, gc_1 INTEGER GENERATED ALWAYS AS (y + 1), z varchar(20)); +insert into t6 values('abba', default, 1, default, 'aasf'); +insert into t6 values('aba', default, 2, default, 'afgc'); +insert into t6 values('bbba', default, 4, default, 'test'); +select * from t6; +x gc y gc_1 z +abba 0 1 2 aasf +aba 1 2 3 afgc +bbba 0 4 5 test +explain select * from t6 where gc <> 0; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t6 NULL ALL NULL NULL NULL NULL 3 66.67 Using where +select * from t6 where x = 'abba'; +x gc y gc_1 z +abba 0 1 2 aasf +explain select * from t6 where x = 'abba'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t6 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t6`.`x` = 'abba') +select * from t6 where y = 2; +x gc y gc_1 z +aba 1 2 3 afgc +explain select * from t6 where y = 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t6 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t6`.`y` = 2) +select * from t6 where z = 'test'; +x gc y gc_1 z +bbba 0 4 5 test +explain select * from t6 where z = 'test'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t6 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t6`.`z` = 'test') +CREATE TABLE t7(c1 TINYINT, c2 SMALLINT not null, c3 MEDIUMINT, c4 INT); +insert into t7 values(-1, -5, -7, -9); +insert into t7 values(-11, -15, -17, -19); +insert into t7 values(-21, -25, -27, -29); +insert into t7 values(-31, -35, -37, -39); +select * from t7 where c1 < -10; +c1 c2 c3 c4 +-11 -15 -17 -19 +-21 -25 -27 -29 +-31 -35 -37 -39 +explain select * from t7 where c1 < -10; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t7 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t7`.`c1` < (-(10))) +select * from t7 where c2 >= -15; +c1 c2 c3 c4 +-1 -5 -7 -9 +-11 -15 -17 -19 +explain select * from t7 where c2 >= -15; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t7 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t7`.`c2` >= (-(15))) +select * from t7 where c3 = -27; +c1 c2 c3 c4 +-21 -25 -27 -29 +explain select * from t7 where c3 = -27; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t7 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t7`.`c3` = (-(27))) +select * from t7 where c4 != -39; +c1 c2 c3 c4 +-1 -5 -7 -9 +-11 -15 -17 -19 +-21 -25 -27 -29 +explain select * from t7 where c4 != -39; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t7 NULL ALL NULL NULL NULL NULL 3 66.67 Using where; Using pushed condition (`test`.`t7`.`c4` <> (-(39))) +drop table t1, t2, t3, t4, t5, t6, t7; diff --git a/mysql-test/suite/tianchi/r/ctc_crud_for_drop_column.result b/mysql-test/suite/tianchi/r/ctc_crud_for_drop_column.result new file mode 100644 index 0000000..96f662f --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_crud_for_drop_column.result @@ -0,0 +1,1076 @@ +drop database if exists test_DB; +Warnings: +Note 1008 Can't drop database 'test_DB'; database doesn't exist +create database test_DB; +use test_DB; +create table t1 (a int, b int, c int, d int, e int); +insert into t1 values(1, 2, 3, 4, 5); +insert into t1 values(2, 2, 3, 4, 5); +insert into t1 values(3, 2, 3, 4, 5); +insert into t1 values(4, 2, 3, 4, 5); +insert into t1 values(5, 2, 3, 4, 5); +select * from t1; +a b c d e +1 2 3 4 5 +2 2 3 4 5 +3 2 3 4 5 +4 2 3 4 5 +5 2 3 4 5 +alter table t1 drop column c; +select * from t1; +a b d e +1 2 4 5 +2 2 4 5 +3 2 4 5 +4 2 4 5 +5 2 4 5 +insert into t1 values(6, 2, 4, 5); +select * from t1; +a b d e +1 2 4 5 +2 2 4 5 +3 2 4 5 +4 2 4 5 +5 2 4 5 +6 2 4 5 +update t1 set e = 55 where a = 5; +select * from t1; +a b d e +1 2 4 5 +2 2 4 5 +3 2 4 5 +4 2 4 5 +5 2 4 55 +6 2 4 5 +alter table t1 drop column d; +select * from t1; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +insert into t1 values(7, 2, 5); +select * from t1; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 2 5 +update t1 set b = 22 where a = 7; +select * from t1; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 22 5 +update t1 set e = 55 where a = 7; +select * from t1; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 22 55 +update t1 set b = 8, e = 8 where a = 7; +select * from t1; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 8 8 +delete from t1 where a = 7; +select * from t1; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +drop table t1; +create table t2 (a int, b int, c int, d int, e int); +insert into t2 values(1, 2, 3, 4, 5); +insert into t2 values(2, 2, 3, 4, 5); +insert into t2 values(3, 2, 3, 4, 5); +insert into t2 values(4, 2, 3, 4, 5); +insert into t2 values(5, 2, 3, 4, 5); +select * from t2; +a b c d e +1 2 3 4 5 +2 2 3 4 5 +3 2 3 4 5 +4 2 3 4 5 +5 2 3 4 5 +create index t2_i on t2(a); +select* from t2; +a b c d e +1 2 3 4 5 +2 2 3 4 5 +3 2 3 4 5 +4 2 3 4 5 +5 2 3 4 5 +alter table t2 drop column c; +select * from t2; +a b d e +1 2 4 5 +2 2 4 5 +3 2 4 5 +4 2 4 5 +5 2 4 5 +insert into t2 values(6, 2, 4, 5); +select * from t2; +a b d e +1 2 4 5 +2 2 4 5 +3 2 4 5 +4 2 4 5 +5 2 4 5 +6 2 4 5 +update t2 set e = 55 where a = 5; +select * from t2; +a b d e +1 2 4 5 +2 2 4 5 +3 2 4 5 +4 2 4 5 +5 2 4 55 +6 2 4 5 +select a from t2; +a +1 +2 +3 +4 +5 +6 +alter table t2 drop column d; +select * from t2; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +insert into t2 values(7, 2, 5); +select * from t2; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 2 5 +update t2 set b = 22 where a = 7; +select * from t2; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 22 5 +update t2 set e = 55 where a = 7; +select * from t2; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 22 55 +update t2 set b = 8, e = 8 where a = 7; +select * from t2; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 8 8 +select a from t2; +a +1 +2 +3 +4 +5 +6 +7 +delete from t2 where a = 7; +select * from t2; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +drop table t2; +create table t3 (a int, b int, c int, d int, e int); +insert into t3 values(1, 2, 3, 4, 5); +insert into t3 values(2, 2, 3, 4, 5); +insert into t3 values(3, 2, 3, 4, 5); +insert into t3 values(4, 2, 3, 4, 5); +insert into t3 values(5, 2, 3, 4, 5); +select * from t3; +a b c d e +1 2 3 4 5 +2 2 3 4 5 +3 2 3 4 5 +4 2 3 4 5 +5 2 3 4 5 +create index t3_i on t3(a, b); +select* from t3; +a b c d e +1 2 3 4 5 +2 2 3 4 5 +3 2 3 4 5 +4 2 3 4 5 +5 2 3 4 5 +alter table t3 drop column c; +select * from t3; +a b d e +1 2 4 5 +2 2 4 5 +3 2 4 5 +4 2 4 5 +5 2 4 5 +insert into t3 values(6, 2, 4, 5); +select * from t3; +a b d e +1 2 4 5 +2 2 4 5 +3 2 4 5 +4 2 4 5 +5 2 4 5 +6 2 4 5 +update t3 set e = 55 where a = 5; +select * from t3; +a b d e +1 2 4 5 +2 2 4 5 +3 2 4 5 +4 2 4 5 +5 2 4 55 +6 2 4 5 +select a from t3; +a +1 +2 +3 +4 +5 +6 +select a, b from t3; +a b +1 2 +2 2 +3 2 +4 2 +5 2 +6 2 +alter table t3 drop column d; +select * from t3; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +insert into t3 values(7, 2, 5); +select * from t3; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 2 5 +update t3 set b = 22 where a = 7; +select * from t3; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 22 5 +update t3 set e = 55 where a = 7; +select * from t3; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 22 55 +update t3 set b = 8, e = 8 where a = 7; +select * from t3; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +7 8 8 +select a from t3; +a +1 +2 +3 +4 +5 +6 +7 +select a, b from t3; +a b +1 2 +2 2 +3 2 +4 2 +5 2 +6 2 +7 8 +delete from t3 where a = 7; +select * from t3; +a b e +1 2 5 +2 2 5 +3 2 5 +4 2 5 +5 2 55 +6 2 5 +drop table t3; +create table t4(a int, b varchar(10), c varchar(10), d varchar(20), e varchar(10)); +insert into t4 values(1, "bb", "ccc", "dddd", "eeeee"); +insert into t4 values(2, "bb", "ccc", "dddd", "eeeee"); +insert into t4 values(3, "bb", "ccc", "dddd", "eeeee"); +insert into t4 values(4, "bb", "ccc", "dddd", "eeeee"); +insert into t4 values(5, "bb", "ccc", "dddd", "eeeee"); +select * from t4; +a b c d e +1 bb ccc dddd eeeee +2 bb ccc dddd eeeee +3 bb ccc dddd eeeee +4 bb ccc dddd eeeee +5 bb ccc dddd eeeee +alter table t4 drop column c; +select * from t4; +a b d e +1 bb dddd eeeee +2 bb dddd eeeee +3 bb dddd eeeee +4 bb dddd eeeee +5 bb dddd eeeee +insert into t4 values(6, "bb", "dddd", "eeeee"); +select * from t4; +a b d e +1 bb dddd eeeee +2 bb dddd eeeee +3 bb dddd eeeee +4 bb dddd eeeee +5 bb dddd eeeee +6 bb dddd eeeee +update t4 set e = "ee" where a = 6; +select * from t4; +a b d e +1 bb dddd eeeee +2 bb dddd eeeee +3 bb dddd eeeee +4 bb dddd eeeee +5 bb dddd eeeee +6 bb dddd ee +alter table t4 drop column d; +select * from t4; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +insert into t4 values(7, "bb", "eeeee"); +select * from t4; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 bb eeeee +update t4 set b = "bbbbbbb" where a = 7; +select * from t4; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 bbbbbbb eeeee +update t4 set e = "eeeeeee" where a = 7; +select * from t4; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 bbbbbbb eeeeeee +update t4 set b = "b", e = "e" where a = 7; +select * from t4; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 b e +delete from t4 where a = 7; +select * from t4; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +select * from t4 where a = 6; +a b e +6 bb ee +drop table t4; +create table t5(a int, b varchar(10), c varchar(10), d varchar(20), e varchar(10)); +insert into t5 values(1, "bb", "ccc", "dddd", "eeeee"); +insert into t5 values(2, "bb", "ccc", "dddd", "eeeee"); +insert into t5 values(3, "bb", "ccc", "dddd", "eeeee"); +insert into t5 values(4, "bb", "ccc", "dddd", "eeeee"); +insert into t5 values(5, "bb", "ccc", "dddd", "eeeee"); +select * from t5; +a b c d e +1 bb ccc dddd eeeee +2 bb ccc dddd eeeee +3 bb ccc dddd eeeee +4 bb ccc dddd eeeee +5 bb ccc dddd eeeee +create index t5_i on t5(a); +select * from t5; +a b c d e +1 bb ccc dddd eeeee +2 bb ccc dddd eeeee +3 bb ccc dddd eeeee +4 bb ccc dddd eeeee +5 bb ccc dddd eeeee +alter table t5 drop column c; +select * from t5; +a b d e +1 bb dddd eeeee +2 bb dddd eeeee +3 bb dddd eeeee +4 bb dddd eeeee +5 bb dddd eeeee +insert into t5 values(6, "bb", "dddd", "eeeee"); +select * from t5; +a b d e +1 bb dddd eeeee +2 bb dddd eeeee +3 bb dddd eeeee +4 bb dddd eeeee +5 bb dddd eeeee +6 bb dddd eeeee +update t5 set e = "ee" where a = 6; +select * from t5; +a b d e +1 bb dddd eeeee +2 bb dddd eeeee +3 bb dddd eeeee +4 bb dddd eeeee +5 bb dddd eeeee +6 bb dddd ee +alter table t5 drop column d; +select * from t5; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +insert into t5 values(7, "bb", "eeeee"); +select * from t5; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 bb eeeee +update t5 set b = "bbbbbbb" where a = 7; +select * from t5; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 bbbbbbb eeeee +update t5 set e = "eeeeeee" where a = 7; +select * from t5; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 bbbbbbb eeeeeee +update t5 set b = "b", e = "e" where a = 7; +select * from t5; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 b e +select * from t5 where a = 6; +a b e +6 bb ee +select a from t5; +a +1 +2 +3 +4 +5 +6 +7 +delete from t5 where a = 7; +select * from t5; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +drop table t5; +create table t6(a int, b varchar(10), c varchar(10), d varchar(20), e varchar(10)); +insert into t6 values(1, "bb", "ccc", "dddd", "eeeee"); +insert into t6 values(2, "bb", "ccc", "dddd", "eeeee"); +insert into t6 values(3, "bb", "ccc", "dddd", "eeeee"); +insert into t6 values(4, "bb", "ccc", "dddd", "eeeee"); +insert into t6 values(5, "bb", "ccc", "dddd", "eeeee"); +select * from t6; +a b c d e +1 bb ccc dddd eeeee +2 bb ccc dddd eeeee +3 bb ccc dddd eeeee +4 bb ccc dddd eeeee +5 bb ccc dddd eeeee +create index t6_i on t6(a, b); +select * from t6; +a b c d e +1 bb ccc dddd eeeee +2 bb ccc dddd eeeee +3 bb ccc dddd eeeee +4 bb ccc dddd eeeee +5 bb ccc dddd eeeee +alter table t6 drop column c; +select * from t6; +a b d e +1 bb dddd eeeee +2 bb dddd eeeee +3 bb dddd eeeee +4 bb dddd eeeee +5 bb dddd eeeee +insert into t6 values(6, "bb", "dddd", "eeeee"); +select * from t6; +a b d e +1 bb dddd eeeee +2 bb dddd eeeee +3 bb dddd eeeee +4 bb dddd eeeee +5 bb dddd eeeee +6 bb dddd eeeee +update t6 set e = "ee" where a = 6; +select * from t6; +a b d e +1 bb dddd eeeee +2 bb dddd eeeee +3 bb dddd eeeee +4 bb dddd eeeee +5 bb dddd eeeee +6 bb dddd ee +alter table t6 drop column d; +select * from t6; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +insert into t6 values(7, "bb", "eeeee"); +select * from t6; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 bb eeeee +update t6 set b = "bbbbbbb" where a = 7; +select * from t6; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 bbbbbbb eeeee +update t6 set e = "eeeeeee" where a = 7; +select * from t6; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 bbbbbbb eeeeeee +update t6 set b = "b", e = "e" where a = 7; +select * from t6; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +7 b e +select * from t6 where a = 6; +a b e +6 bb ee +select a from t6; +a +1 +2 +3 +4 +5 +6 +7 +select a, b from t6; +a b +1 bb +2 bb +3 bb +4 bb +5 bb +6 bb +7 b +delete from t6 where a = 7; +select * from t6; +a b e +1 bb eeeee +2 bb eeeee +3 bb eeeee +4 bb eeeee +5 bb eeeee +6 bb ee +drop table t6; +create table t7(id int, a_integer integer, b_char char, c_varchar varchar(10), d_deciaml decimal, e_tinyint tinyint, f_bigint bigint, g_float float, h_date date); +insert into t7 values(1, 1, "b", "varchar", 1, 1, 100, 10.01, 20220923); +insert into t7 values(2, 1, "b", "varchar", 2, 2, 200, 20.01, 20220923); +insert into t7 values(3, 1, "b", "varchar", 3, 3, 300, 30.01, 20220923); +insert into t7 values(4, 1, "b", "varchar", 4, 4, 400, 40.01, 20220923); +insert into t7 values(5, 1, "b", "varchar", 5, 5, 500, 50.01, 20220923); +select * from t7; +id a_integer b_char c_varchar d_deciaml e_tinyint f_bigint g_float h_date +1 1 b varchar 1 1 100 10.01 2022-09-23 +2 1 b varchar 2 2 200 20.01 2022-09-23 +3 1 b varchar 3 3 300 30.01 2022-09-23 +4 1 b varchar 4 4 400 40.01 2022-09-23 +5 1 b varchar 5 5 500 50.01 2022-09-23 +alter table t7 drop column b_char; +select * from t7; +id a_integer c_varchar d_deciaml e_tinyint f_bigint g_float h_date +1 1 varchar 1 1 100 10.01 2022-09-23 +2 1 varchar 2 2 200 20.01 2022-09-23 +3 1 varchar 3 3 300 30.01 2022-09-23 +4 1 varchar 4 4 400 40.01 2022-09-23 +5 1 varchar 5 5 500 50.01 2022-09-23 +insert into t7 values(6, 1, "varchar", 6, 6, 600, 60.01, 20220923); +select * from t7; +id a_integer c_varchar d_deciaml e_tinyint f_bigint g_float h_date +1 1 varchar 1 1 100 10.01 2022-09-23 +2 1 varchar 2 2 200 20.01 2022-09-23 +3 1 varchar 3 3 300 30.01 2022-09-23 +4 1 varchar 4 4 400 40.01 2022-09-23 +5 1 varchar 5 5 500 50.01 2022-09-23 +6 1 varchar 6 6 600 60.01 2022-09-23 +update t7 set h_date = 20220924 where id = 6; +select * from t7; +id a_integer c_varchar d_deciaml e_tinyint f_bigint g_float h_date +1 1 varchar 1 1 100 10.01 2022-09-23 +2 1 varchar 2 2 200 20.01 2022-09-23 +3 1 varchar 3 3 300 30.01 2022-09-23 +4 1 varchar 4 4 400 40.01 2022-09-23 +5 1 varchar 5 5 500 50.01 2022-09-23 +6 1 varchar 6 6 600 60.01 2022-09-24 +create index t7_i on t7(id, a_integer); +select * from t7; +id a_integer c_varchar d_deciaml e_tinyint f_bigint g_float h_date +1 1 varchar 1 1 100 10.01 2022-09-23 +2 1 varchar 2 2 200 20.01 2022-09-23 +3 1 varchar 3 3 300 30.01 2022-09-23 +4 1 varchar 4 4 400 40.01 2022-09-23 +5 1 varchar 5 5 500 50.01 2022-09-23 +6 1 varchar 6 6 600 60.01 2022-09-24 +alter table t7 drop column d_deciaml; +select * from t7; +id a_integer c_varchar e_tinyint f_bigint g_float h_date +1 1 varchar 1 100 10.01 2022-09-23 +2 1 varchar 2 200 20.01 2022-09-23 +3 1 varchar 3 300 30.01 2022-09-23 +4 1 varchar 4 400 40.01 2022-09-23 +5 1 varchar 5 500 50.01 2022-09-23 +6 1 varchar 6 600 60.01 2022-09-24 +insert into t7 values(7, 1, "varchar", 7, 700, 70.01, 20220923); +select * from t7; +id a_integer c_varchar e_tinyint f_bigint g_float h_date +1 1 varchar 1 100 10.01 2022-09-23 +2 1 varchar 2 200 20.01 2022-09-23 +3 1 varchar 3 300 30.01 2022-09-23 +4 1 varchar 4 400 40.01 2022-09-23 +5 1 varchar 5 500 50.01 2022-09-23 +6 1 varchar 6 600 60.01 2022-09-24 +7 1 varchar 7 700 70.01 2022-09-23 +update t7 set g_float = 70.77 where id = 7; +select * from t7; +id a_integer c_varchar e_tinyint f_bigint g_float h_date +1 1 varchar 1 100 10.01 2022-09-23 +2 1 varchar 2 200 20.01 2022-09-23 +3 1 varchar 3 300 30.01 2022-09-23 +4 1 varchar 4 400 40.01 2022-09-23 +5 1 varchar 5 500 50.01 2022-09-23 +6 1 varchar 6 600 60.01 2022-09-24 +7 1 varchar 7 700 70.77 2022-09-23 +select * from t7 where e_tinyint = 7; +id a_integer c_varchar e_tinyint f_bigint g_float h_date +7 1 varchar 7 700 70.77 2022-09-23 +select id, a_integer from t7; +id a_integer +1 1 +2 1 +3 1 +4 1 +5 1 +6 1 +7 1 +delete from t7 where id = 7; +select * from t7; +id a_integer c_varchar e_tinyint f_bigint g_float h_date +1 1 varchar 1 100 10.01 2022-09-23 +2 1 varchar 2 200 20.01 2022-09-23 +3 1 varchar 3 300 30.01 2022-09-23 +4 1 varchar 4 400 40.01 2022-09-23 +5 1 varchar 5 500 50.01 2022-09-23 +6 1 varchar 6 600 60.01 2022-09-24 +drop table t7; +create table t8(a int, b varchar(10), c varchar(10)); +insert into t8 values(1, "bb", "ccc"); +insert into t8 values(2, "bb", "ccc"); +select * from t8; +a b c +1 bb ccc +2 bb ccc +create index t8_i on t8(a, b, c); +select * from t8; +a b c +1 bb ccc +2 bb ccc +alter table t8 drop column b; +select * from t8; +a c +1 ccc +2 ccc +select * from t8; +a c +1 ccc +2 ccc +insert into t8 values(3, "ccc"); +select * from t8; +a c +1 ccc +2 ccc +3 ccc +select a, c from t8; +a c +1 ccc +2 ccc +3 ccc +drop table t8; +create table t9 (a int, b int, c int, d int, e int); +insert into t9 values(1, 2, 3, 4, 5); +insert into t9 values(2, 2, null, 4, 5); +insert into t9 values(3, 2, 3, null, 5); +select * from t9; +a b c d e +1 2 3 4 5 +2 2 NULL 4 5 +3 2 3 NULL 5 +alter table t9 drop column c; +select * from t9; +a b d e +1 2 4 5 +2 2 4 5 +3 2 NULL 5 +insert into t9 values(4, 2, null, 5); +select * from t9; +a b d e +1 2 4 5 +2 2 4 5 +3 2 NULL 5 +4 2 NULL 5 +drop table t9; +CREATE TABLE t10 (a int, b int, c NUMERIC, d int, e int, f DECIMAL, g int) ; +insert into t10 values(1,2,3,4,5,6,7); +insert into t10 values(2,2,3,4,5,6,7); +insert into t10 values(3,2,3,4,5,6,7); +select * from t10; +a b c d e f g +1 2 3 4 5 6 7 +2 2 3 4 5 6 7 +3 2 3 4 5 6 7 +create index idx10 on t10 (a,b,c); +alter table t10 drop column b; +select * from t10; +a c d e f g +1 3 4 5 6 7 +2 3 4 5 6 7 +3 3 4 5 6 7 +insert into t10 values(4,3,4,5,6,7); +select * from t10; +a c d e f g +1 3 4 5 6 7 +2 3 4 5 6 7 +3 3 4 5 6 7 +4 3 4 5 6 7 +select a,c from t10; +a c +1 3 +2 3 +3 3 +4 3 +update t10 set d = 44 where a = 3; +select * from t10; +a c d e f g +1 3 4 5 6 7 +2 3 4 5 6 7 +3 3 44 5 6 7 +4 3 4 5 6 7 +update t10 set f = 66 where a = 4; +select * from t10; +a c d e f g +1 3 4 5 6 7 +2 3 4 5 6 7 +3 3 44 5 6 7 +4 3 4 5 66 7 +alter table t10 drop column c; +select * from t10; +a d e f g +1 4 5 6 7 +2 4 5 6 7 +3 44 5 6 7 +4 4 5 66 7 +insert into t10 values(5,4,5,6,7); +select * from t10; +a d e f g +1 4 5 6 7 +2 4 5 6 7 +3 44 5 6 7 +4 4 5 66 7 +5 4 5 6 7 +select * from t10 where a = 4; +a d e f g +4 4 5 66 7 +drop table t10; +CREATE TABLE t11 (a int, b int, c NUMERIC, d int, e int, f DECIMAL, g int) ; +insert into t11 values(1,2,3,4,5,6,7); +insert into t11 values(2,2,3,4,5,6,7); +insert into t11 values(3,2,3,4,5,6,7); +select * from t11; +a b c d e f g +1 2 3 4 5 6 7 +2 2 3 4 5 6 7 +3 2 3 4 5 6 7 +create index idx11 on t11 (a,b,c,d,e,f,g); +alter table t11 drop column b; +select * from t11; +a c d e f g +1 3 4 5 6 7 +2 3 4 5 6 7 +3 3 4 5 6 7 +insert into t11 values(4,3,4,5,6,7); +select * from t11; +a c d e f g +1 3 4 5 6 7 +2 3 4 5 6 7 +3 3 4 5 6 7 +4 3 4 5 6 7 +update t11 set a = 44, d = 44 where a = 4; +select * from t11; +a c d e f g +1 3 4 5 6 7 +2 3 4 5 6 7 +3 3 4 5 6 7 +44 3 44 5 6 7 +alter table t11 drop column c; +select * from t11; +a d e f g +1 4 5 6 7 +2 4 5 6 7 +3 4 5 6 7 +44 44 5 6 7 +insert into t11 values(5,4,5,6,7); +select * from t11; +a d e f g +1 4 5 6 7 +2 4 5 6 7 +3 4 5 6 7 +5 4 5 6 7 +44 44 5 6 7 +alter table t11 drop column d; +select * from t11; +a e f g +1 5 6 7 +2 5 6 7 +3 5 6 7 +5 5 6 7 +44 5 6 7 +insert into t11 values(6,5,6,7); +select * from t11; +a e f g +1 5 6 7 +2 5 6 7 +3 5 6 7 +5 5 6 7 +6 5 6 7 +44 5 6 7 +alter table t11 drop column f; +select * from t11; +a e g +1 5 7 +2 5 7 +3 5 7 +5 5 7 +6 5 7 +44 5 7 +insert into t11 values(7,5,7); +select * from t11; +a e g +1 5 7 +2 5 7 +3 5 7 +5 5 7 +6 5 7 +7 5 7 +44 5 7 +drop table t11; +create table t12 (a int, b int, c int, d int, e int); +insert into t12 values(1, 2, 3, 4, 5); +insert into t12 values(2, 2, 3, 4, 5); +insert into t12 values(3, 2, 3, 4, 5); +insert into t12 values(4, 2, 3, 4, 5); +insert into t12 values(5, 2, 3, 4, 5); +create index t12_i on t12(a, b, c); +select * from t12; +a b c d e +1 2 3 4 5 +2 2 3 4 5 +3 2 3 4 5 +4 2 3 4 5 +5 2 3 4 5 +alter table t12 drop column b; +select * from t12; +a c d e +1 3 4 5 +2 3 4 5 +3 3 4 5 +4 3 4 5 +5 3 4 5 +insert into t12 values(6, 3, 4, 5); +select * from t12; +a c d e +1 3 4 5 +2 3 4 5 +3 3 4 5 +4 3 4 5 +5 3 4 5 +6 3 4 5 +update t12 set c = 33 where a = 3; +select * from t12; +a c d e +1 3 4 5 +2 3 4 5 +3 33 4 5 +4 3 4 5 +5 3 4 5 +6 3 4 5 +drop table t12; +create table t13 (a int, b int, c int, d int, e int); +insert into t13 values(1, 2, 3, 4, 5); +insert into t13 values(2, 2, 3, 4, 5); +insert into t13 values(3, 2, 3, 4, 5); +create index t13_i on t13(a, b, c, d, e); +select * from t13; +a b c d e +1 2 3 4 5 +2 2 3 4 5 +3 2 3 4 5 +alter table t13 drop column c; +select * from t13; +a b d e +1 2 4 5 +2 2 4 5 +3 2 4 5 +update t13 set b = 22, d = 44 where a = 3; +select * from t13; +a b d e +1 2 4 5 +2 2 4 5 +3 22 44 5 +drop table t13; +drop database test_DB; diff --git a/mysql-test/suite/tianchi/r/ctc_datatype.result b/mysql-test/suite/tianchi/r/ctc_datatype.result new file mode 100644 index 0000000..6bfeed5 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_datatype.result @@ -0,0 +1,372 @@ +drop table if exists t1; +# test with NUMERIC data type +create table t1 (IDA tinyint, IDB smallint, IDC int, IDD bigint, IDE float, IDF double, IDG real, IDH integer) ENGINE=CTC; +insert into t1 values (1,2,3,4,4.143,4.146,4.365,6); +insert into t1 values (11,22,33,44,4.55,4.66,4.77,66); +insert into t1 values (null,null,null,null,null,null,null,null); +select * from t1; +IDA IDB IDC IDD IDE IDF IDG IDH +1 2 3 4 4.143 4.146 4.365 6 +11 22 33 44 4.55 4.66 4.77 66 +NULL NULL NULL NULL NULL NULL NULL NULL +drop table t1; +# test the boundary value of the numeric type +create table t1 (IDA tinyint DEFAULT NULL, IDB tinyint unsigned DEFAULT NULL) ENGINE=CTC; +insert into t1 values (-128,0); +insert into t1 values (127,255); +insert into t1 values (-129,0); +ERROR 22003: Out of range value for column 'IDA' at row 1 +insert into t1 values (128,0); +ERROR 22003: Out of range value for column 'IDA' at row 1 +insert into t1 values (127,-1); +ERROR 22003: Out of range value for column 'IDB' at row 1 +insert into t1 values (127,256); +ERROR 22003: Out of range value for column 'IDB' at row 1 +select * from t1; +IDA IDB +-128 0 +127 255 +drop table t1; +create table t1 (IDA SMALLINT DEFAULT NULL, IDB SMALLINT unsigned DEFAULT NULL) ENGINE=CTC; +insert into t1 values (-32768,0); +insert into t1 values (32767,65535); +insert into t1 values (-32769,0); +ERROR 22003: Out of range value for column 'IDA' at row 1 +insert into t1 values (32768,0); +ERROR 22003: Out of range value for column 'IDA' at row 1 +insert into t1 values (32767,-1); +ERROR 22003: Out of range value for column 'IDB' at row 1 +insert into t1 values (32767,65536); +ERROR 22003: Out of range value for column 'IDB' at row 1 +select * from t1; +IDA IDB +-32768 0 +32767 65535 +drop table t1; +create table t1 (IDA MEDIUMINT DEFAULT NULL, IDB MEDIUMINT unsigned DEFAULT NULL) ENGINE=CTC; +insert into t1 values (-8388608,0); +insert into t1 values (8388607,16777215); +insert into t1 values (-8388609,0); +ERROR 22003: Out of range value for column 'IDA' at row 1 +insert into t1 values (8388608,0); +ERROR 22003: Out of range value for column 'IDA' at row 1 +insert into t1 values (8388607,-1); +ERROR 22003: Out of range value for column 'IDB' at row 1 +insert into t1 values (8388607,16777216); +ERROR 22003: Out of range value for column 'IDB' at row 1 +select * from t1; +IDA IDB +-8388608 0 +8388607 16777215 +drop table t1; +create table t1 (IDA INT DEFAULT NULL, IDB INT unsigned DEFAULT NULL) ENGINE=CTC; +insert into t1 values (-2147483648,0); +insert into t1 values (2147483647,4294967295); +insert into t1 values (-2147483649,0); +ERROR 22003: Out of range value for column 'IDA' at row 1 +insert into t1 values (2147483648,0); +ERROR 22003: Out of range value for column 'IDA' at row 1 +insert into t1 values (2147483647,-1); +ERROR 22003: Out of range value for column 'IDB' at row 1 +insert into t1 values (2147483647,4294967296); +ERROR 22003: Out of range value for column 'IDB' at row 1 +select * from t1; +IDA IDB +-2147483648 0 +2147483647 4294967295 +drop table t1; +create table t1 (IDA BIGINT DEFAULT NULL, IDB BIGINT unsigned DEFAULT NULL) ENGINE=CTC; +insert into t1 values (-9223372036854775808,0); +insert into t1 values (9223372036854775807,18446744073709551615); +insert into t1 values (-9223372036854775809,0); +ERROR 22003: Out of range value for column 'IDA' at row 1 +insert into t1 values (9223372036854775808,0); +ERROR 22003: Out of range value for column 'IDA' at row 1 +insert into t1 values (9223372036854775807,-1); +ERROR 22003: Out of range value for column 'IDB' at row 1 +insert into t1 values (9223372036854775807,18446744073709551616); +ERROR 22003: Out of range value for column 'IDB' at row 1 +select * from t1; +IDA IDB +-9223372036854775808 0 +9223372036854775807 18446744073709551615 +drop table t1; +create table t1 (IDA FLOAT DEFAULT NULL, IDB DOUBLE DEFAULT NULL) ENGINE=CTC; +insert into t1 values (-3.402823466E+38,-1.7976931348623157E+308); +insert into t1 values (-1.175494351E-38,-2.2250738585072014E-308); +insert into t1 values (1.175494351E-38,2.2250738585072014E-308); +insert into t1 values (3.402823466351E+38,1.7976931348623157E+308); +insert into t1 values (0,0); +select * from t1; +IDA IDB +-3.40282e38 -1.7976931348623157e308 +-1.17549e-38 -2.2250738585072014e-308 +1.17549e-38 2.2250738585072014e-308 +3.40282e38 1.7976931348623157e308 +0 0 +drop table t1; +# test with DATETIME data type +create table t1 (IDA date, IDB datetime, IDC timestamp(2), IDD timestamp(4), IDE timestamp(6)) ENGINE=CTC; +insert into t1 values ('2017-03-04','2008-06-05 11:22:33','2020-5-12 12:24:56.2','2020-5-12 12:24:56.444','2020-5-12 12:24:56.66666'); +insert into t1 values ('2018-11-11','2020-10-10 22:33:44','2009-6-28 10:20:30.22','2009-6-28 10:20:30.4444','2009-6-28 10:20:30.666666'); +insert into t1 values (null,null,null,null,null); +select * from t1; +IDA IDB IDC IDD IDE +2017-03-04 2008-06-05 11:22:33 2020-05-12 12:24:56.20 2020-05-12 12:24:56.4440 2020-05-12 12:24:56.666660 +2018-11-11 2020-10-10 22:33:44 2009-06-28 10:20:30.22 2009-06-28 10:20:30.4444 2009-06-28 10:20:30.666666 +NULL NULL NULL NULL NULL +drop table t1; +# test the boundary value of the datetime type +create table t1 (IDA date, IDB datetime) ENGINE=CTC; +insert into t1 values ('9999-12-31','9999-12-31 23:59:59'); +insert into t1 values ('10000-12-31','9999-12-31 23:59:59'); +ERROR 22007: Incorrect date value: '10000-12-31' for column 'IDA' at row 1 +insert into t1 values ('9999-12-31','10000-12-31 23:59:59'); +ERROR 22007: Incorrect datetime value: '10000-12-31 23:59:59' for column 'IDB' at row 1 +select * from t1; +IDA IDB +9999-12-31 9999-12-31 23:59:59 +drop table t1; +# test with char/varchar data type +create table t1 (IDA char(10), IDB varchar(10)) ENGINE=CTC; +insert into t1 values ('abc','abcd'); +insert into t1 values ('aaa','cccc'); +insert into t1 values (null,null); +select * from t1; +IDA IDB +abc abcd +aaa cccc +NULL NULL +drop table t1; +# test the boundary value of the char/varchar type +create table t1 (IDA char(255), IDB varchar(2000)) ENGINE=CTC DEFAULT CHARSET=utf8mb4; +insert into t1 values (REPEAT('a',255),REPEAT('b',2000)); +select length(IDA) from t1; +length(IDA) +255 +select length(IDB) from t1; +length(IDB) +2000 +drop table t1; +create table t1 (IDA char(255), IDB varchar(4000)) ENGINE=CTC DEFAULT CHARSET=gbk; +insert into t1 values (REPEAT('a',255),REPEAT('b',4000)); +select length(IDA) from t1; +length(IDA) +255 +select length(IDB) from t1; +length(IDB) +4000 +drop table t1; +create table t1 (IDA varchar(2001)) ENGINE=CTC DEFAULT CHARSET=utf8mb4; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `IDA` varchar(2001) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t1; +create table t1 (IDA varchar(2667)) ENGINE=CTC DEFAULT CHARSET=utf8; +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `IDA` varchar(2667) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb3 +drop table t1; +create table t1 (IDA varchar(4001)) ENGINE=CTC DEFAULT CHARSET=gbk; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `IDA` varchar(4001) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=gbk +drop table t1; +create table t1 (IDA varchar(8001)) ENGINE=CTC DEFAULT CHARSET=ascii; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `IDA` varchar(8001) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=ascii +drop table t1; +# test with FLOAT(p) data type +create table t1 (IDA float(24), IDB float(30)) ENGINE=CTC; +insert into t1 values (10,10),(1e+5,1e+5),(1234567890,1234567890),(1e+10,1e+10),(1e+15,1e+15),(1e+20,1e+20); +insert into t1 values (-10,-10),(1e-5,1e-5),(1e-10,1e-10),(1e-15,1e-15),(1e-20,1e-20),(null,null); +select * from t1; +IDA IDB +10 10 +100000 100000 +1234570000 1234567890 +10000000000 10000000000 +1e15 1e15 +1e20 1e20 +-10 -10 +0.00001 0.00001 +0.0000000001 0.0000000001 +0.000000000000001 0.000000000000001 +1e-20 1e-20 +NULL NULL +drop table t1; +# test with binary/varbinary data type +create table t1 (IDA binary(2), IDB varbinary(2)) ENGINE=CTC; +insert into t1 values (0x4100,0x4100),(0x01, 0x02),(null,null); +select hex(IDA),hex(IDB) from t1; +hex(IDA) hex(IDB) +4100 4100 +0100 02 +NULL NULL +drop table t1; +# test with decimal/numeric data type +create table t1 (w_id integer, w_ytd decimal(12,2), w_tax numeric(4,4), w_dec varchar(10), IDA decimal(1,1), IDB decimal(37,10)) ENGINE=CTC; +insert into t1 values (1,123.5,0.5126,'asdsfaf',0.5,111111111111111111111111111.32423421); +insert into t1 values (2,85743.34,0.3432,'bbbffsd',-0.5,-111111111111111111111111111.32423421); +insert into t1 values (3,-85743.34,-0.3432,'testgog',-0.5,-4548343534.1341252323); +insert into t1 values (null,null,null,null,null,null); +select * from t1; +w_id w_ytd w_tax w_dec IDA IDB +1 123.50 0.5126 asdsfaf 0.5 111111111111111111111111111.3242342100 +2 85743.34 0.3432 bbbffsd -0.5 -111111111111111111111111111.3242342100 +3 -85743.34 -0.3432 testgog -0.5 -4548343534.1341252323 +NULL NULL NULL NULL NULL NULL +drop table t1; +# add test cases of decimal/numeric data type +create table t1 (IDA decimal(1,0), IDB decimal(1,1), IDC numeric(2,0), IDD decimal(2,1), IDE decimal(2,2), IDF decimal(3,0)) ENGINE=CTC; +insert into t1 values (1,0.3,12,5.6,0.45,999); +insert into t1 values (2,0.8,99,9.9,0.89,108); +insert into t1 values (null,0.7,null,8.3,null,456); +insert into t1 values (null,null,null,null,null,null); +select * from t1; +IDA IDB IDC IDD IDE IDF +1 0.3 12 5.6 0.45 999 +2 0.8 99 9.9 0.89 108 +NULL 0.7 NULL 8.3 NULL 456 +NULL NULL NULL NULL NULL NULL +drop table t1; +# add test cases of decimal/numeric data type +create table t1 (IDA decimal(3,1), IDB decimal(3,2), IDC numeric(3,3), IDD decimal(4,1), IDE decimal(4,2), IDF decimal(12,5),IDG decimal(38,20)) ENGINE=CTC; +insert into t1 values (1.3,2.54,0.999,534.6,86.54,1234567.98765,123456789123456789.12345678900123456789); +insert into t1 values (-1.3,-2.54,-0.999,-534.6,-86.54,-1234567.98765,-123456789123456789.12345678900123456789); +insert into t1 values (1.3,null,0.999,null,86.54,null,123456789123456789.12345678900123456789); +insert into t1 values (null,null,null,null,null,null,null); +select * from t1; +IDA IDB IDC IDD IDE IDF IDG +1.3 2.54 0.999 534.6 86.54 1234567.98765 123456789123456789.12345678900123456789 +-1.3 -2.54 -0.999 -534.6 -86.54 -1234567.98765 -123456789123456789.12345678900123456789 +1.3 NULL 0.999 NULL 86.54 NULL 123456789123456789.12345678900123456789 +NULL NULL NULL NULL NULL NULL NULL +drop table t1; +# add test cases of decimal/numeric data type +create table t1 (id int, val decimal(38, 30)) ENGINE=CTC; +insert into t1 values (1, 12345678.123456789); +insert into t1 values (2, 12345678.123456789123456789123456789123); +insert into t1 values (3, -12345678.123456789123456789123456789123); +insert into t1 values (4, 12345678.123456789123456789123456789123456789); +Warnings: +Note 1265 Data truncated for column 'val' at row 1 +insert into t1 values (5, 12345678912.123456789); +ERROR 22003: Out of range value for column 'val' at row 1 +insert into t1 values (6, 12345678912.123456789123456789123456789123456789); +ERROR 22003: Out of range value for column 'val' at row 1 +select * from t1; +id val +1 12345678.123456789000000000000000000000 +2 12345678.123456789123456789123456789123 +3 -12345678.123456789123456789123456789123 +4 12345678.123456789123456789123456789123 +drop table t1; +# add test cases of decimal/numeric data type +create table t1 (id int, val decimal(38, 30) unsigned) ENGINE=CTC; +Warnings: +Warning 1681 UNSIGNED for decimal and floating point data types is deprecated and support for it will be removed in a future release. +insert into t1 values (1, 12345678.123456789); +insert into t1 values (2, 12345678.123456789123456789123456789123); +insert into t1 values (3, -12345678.123456789123456789123456789123); +ERROR 22003: Out of range value for column 'val' at row 1 +insert into t1 values (4, -12345678.123456789123456789123456789123456789); +ERROR 22003: Out of range value for column 'val' at row 1 +select * from t1; +id val +1 12345678.123456789000000000000000000000 +2 12345678.123456789123456789123456789123 +drop table t1; +# add error test cases of decimal/numeric data type +create table t1 (IDA decimal(39,20)) ENGINE=CTC; +drop table t1; +create table t1 (IDA decimal(40,20)) ENGINE=CTC; +drop table t1; +create table t1 (IDA decimal(41,20)) ENGINE=CTC; +drop table t1; +create table t1 (IDA decimal(66,20)) ENGINE=CTC; +ERROR 42000: Too-big precision 66 specified for 'IDA'. Maximum is 65. +create table t1 (IDA decimal(80,20)) ENGINE=CTC; +ERROR 42000: Too-big precision 80 specified for 'IDA'. Maximum is 65. +create table t1 (IDA decimal(100,20)) ENGINE=CTC; +ERROR 42000: Too-big precision 100 specified for 'IDA'. Maximum is 65. +create table t1 (IDA decimal(100,40)) ENGINE=CTC; +ERROR 42000: Too big scale 40 specified for column 'IDA'. Maximum is 30. +create table t1 (IDA decimal(30,40)) ENGINE=CTC; +ERROR 42000: Too big scale 40 specified for column 'IDA'. Maximum is 30. +create table t1 (IDA decimal(20,30)) ENGINE=CTC; +ERROR 42000: For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 'IDA'). +create table t1 (IDA decimal(10,20)) ENGINE=CTC; +ERROR 42000: For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 'IDA'). +# add test cases of text/blob data type +create table t1 (IDA TINYTEXT, IDB TINYTEXT) ENGINE=CTC; +insert into t1 values (43, 7889); +insert into t1 values ('',555); +insert into t1 values (444,''); +insert into t1 values (4343, 'here'); +insert into t1 values ('where',777); +insert into t1 values (null, null); +select * from t1; +IDA IDB +43 7889 + 555 +444 +4343 here +where 777 +NULL NULL +drop table t1; +create table t1 (IDA MEDIUMTEXT, IDB MEDIUMTEXT) ENGINE=CTC; +insert into t1 values (43, 7889); +insert into t1 values ('',555); +insert into t1 values (444,''); +insert into t1 values (4343, 'here'); +insert into t1 values ('where',777); +insert into t1 values (null, null); +select * from t1; +IDA IDB +43 7889 + 555 +444 +4343 here +where 777 +NULL NULL +drop table t1; +create table t1 (IDA TINYBLOB, IDB TINYBLOB) ENGINE=CTC; +insert into t1 values (43, 7889); +insert into t1 values ('',555); +insert into t1 values (444,''); +insert into t1 values (4343, 'here'); +insert into t1 values ('where',777); +insert into t1 values (null, null); +select * from t1; +IDA IDB +43 7889 + 555 +444 +4343 here +where 777 +NULL NULL +drop table t1; +create table t1 (IDA FLOAT) ENGINE=CTC; +insert into t1 values (10.5); +insert into t1 values (20.5); +CREATE INDEX floatIndexTest ON t1 (IDA); +select * from t1 where IDA < 20.0; +IDA +10.5 +select * from t1 where IDA > 10.0; +IDA +10.5 +20.5 +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_datatype_adapt.result b/mysql-test/suite/tianchi/r/ctc_datatype_adapt.result new file mode 100644 index 0000000..19714f3 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_datatype_adapt.result @@ -0,0 +1,199 @@ +drop table if exists t1; +# test with YEAR data type +create table t1 (y year,y4 year(4)); +Warnings: +Warning 1287 'YEAR(4)' is deprecated and will be removed in a future release. Please use YEAR instead +insert into t1 values (1999,1999),(2000,2000),(2001,2001),(70,70),(69,69),(null,null); +select * from t1; +y y4 +1999 1999 +2000 2000 +2001 2001 +1970 1970 +2069 2069 +NULL NULL +drop table t1; +create table t1(c1 YEAR); +insert into t1 values (1901),(2155); +select * from t1; +c1 +1901 +2155 +drop table t1; +# test with TIME data type +SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; +create table t1 (t time); +insert into t1 values("10:22:33"),("12:34:56.78"),(10),(1234),(123456.78),("1"),("1:23"),("1:23:45"), ("10.22"),("1999-02-03 20:33:34"); +Warnings: +Note 1265 Data truncated for column 't' at row 10 +insert t1 values (30),(1230),("1230"),("12:30"),("12:30:35"); +insert t1 values (NULL); +select * from t1; +t +10:22:33 +12:34:57 +00:00:10 +00:12:34 +12:34:57 +00:00:01 +01:23:00 +01:23:45 +00:00:10 +20:33:34 +00:00:30 +00:12:30 +00:12:30 +12:30:00 +12:30:35 +NULL +drop table t1; +create table t1(c1 time, c2 time(2), c3 time(4), c4 time(6)); +insert into t1 values ("10:22:33.567865","10:22:33.567865","10:22:33.567865","10:22:33.567865"); +select * from t1; +c1 c2 c3 c4 +10:22:34 10:22:33.57 10:22:33.5679 10:22:33.567865 +drop table t1; +SET sql_mode = default; +# test with MEDIUMINT data type +create table t1 (c1 MEDIUMINT); +insert into t1 values (-8388608),(0),(100),(8388607),(null); +select * from t1; +c1 +-8388608 +0 +100 +8388607 +NULL +drop table t1; +create table t1 (c1 MEDIUMINT UNSIGNED); +insert into t1 values (0),(100),(65535),(16777215),(null); +select * from t1; +c1 +0 +100 +65535 +16777215 +NULL +drop table t1; +# test with Json data type +create table t1 (c1 json); +insert into t1 values ('{ "a": 1, "b": [2, 3]}'); +select * from t1; +c1 +{"a": 1, "b": [2, 3]} +update t1 set c1 = json_set(c1, '$.a', 10, '$.c', '[true, false]'); +select * from t1; +c1 +{"a": 10, "b": [2, 3], "c": "[true, false]"} +drop table t1; +create table t1 (c1 json); +insert into t1 values ('{ "a": 1, "b": [2, 3]}'); +update t1 set c1 = json_insert(c1, '$.a', 10, '$.c', '[true, false]'); +select * from t1; +c1 +{"a": 1, "b": [2, 3], "c": "[true, false]"} +drop table t1; +create table t1 (c1 json); +insert into t1 values ('{ "a": 1, "b": [2, 3]}'); +update t1 set c1 = json_replace(c1, '$.a', 10, '$.c', '[true, false]'); +select * from t1; +c1 +{"a": 10, "b": [2, 3]} +drop table t1; +SET @j = '["a", ["b", "c"], "d"]'; +create table t1 (c1 json); +insert into t1 values (@j); +update t1 set c1 = JSON_ARRAY_APPEND(c1, '$[1]', 1); +select * from t1; +c1 +["a", ["b", "c", 1], "d"] +drop table t1; +SET @j = '["a", {"b": [1, 2]}, [3, 4]]'; +create table t1 (c1 json); +insert into t1 values (@j); +update t1 set c1 = JSON_ARRAY_INSERT(c1, '$[1]', 'x'); +select * from t1; +c1 +["a", "x", {"b": [1, 2]}, [3, 4]] +drop table t1; +create table t1 (c1 json); +insert into t1 values (JSON_MERGE_PATCH('{"name": "x"}', '{"id": 47}', '{"id": 87}')); +select * from t1; +c1 +{"id": 87, "name": "x"} +drop table t1; +create table t1 (c1 json); +insert into t1 values (JSON_MERGE_PRESERVE('{"name": "x"}', '{"id": 47}', '{"id": 87}')); +select * from t1; +c1 +{"id": [47, 87], "name": "x"} +drop table t1; +SET @j = '["a", ["b", "c"], "d"]'; +create table t1 (c1 json); +insert into t1 values (JSON_REMOVE(@j, '$[1]')); +select * from t1; +c1 +["a", "d"] +drop table t1; +SET @j = '["a", ["b", "c"], "d"]'; +create table t1 (c1 json); +insert into t1 values (JSON_REMOVE(@j, '$[1]')); +select * from t1; +c1 +["a", "d"] +drop table t1; +create table t1 (c1 json); +insert into t1 values (JSON_UNQUOTE('"\\t\\u0032"')); +select * from t1; +c1 +2 +drop table t1; +CREATE TABLE t1(id INT PRIMARY KEY, j JSON); +INSERT INTO t1 VALUES (1, '[1]') AS n ON DUPLICATE KEY UPDATE j = JSON_OBJECT("a", n.j); +SELECT * FROM t1; +id j +1 [1] +INSERT INTO t1 VALUES (1, '[1,2]') AS n ON DUPLICATE KEY UPDATE j = JSON_OBJECT("ab", n.j); +SELECT * FROM t1; +id j +1 {"ab": [1, 2]} +INSERT INTO t1 VALUES (1, '[1,2,3]') AS n ON DUPLICATE KEY UPDATE j = JSON_OBJECT("abc", n.j); +SELECT * FROM t1; +id j +1 {"abc": [1, 2, 3]} +drop table t1; +CREATE TABLE t1 (i INT, j JSON) CHARSET utf8mb4; +INSERT INTO t1 VALUES (16, CAST(CAST('2015-01-15 23:24:25' AS DATETIME) AS JSON)); +INSERT INTO t1 VALUES (17, CAST(CAST('23:24:25' AS TIME) AS JSON)); +INSERT INTO t1 VALUES (18, CAST(CAST('2015-01-15' AS DATE) AS JSON)); +INSERT INTO t1 VALUES (19, CAST(TIMESTAMP'2015-01-15 23:24:25' AS JSON)); +INSERT INTO t1 VALUES (20, CAST(ST_GeomFromText('POINT(1 1)') AS JSON)); +INSERT INTO t1 VALUES (21, CAST('1988' AS CHAR CHARACTER SET 'ascii')); +INSERT INTO t1 VALUES (22, CAST(x'07C4' AS JSON)); +INSERT INTO t1 VALUES (23, CAST(x'07C407C4' AS JSON)); +SELECT i, CAST(j AS YEAR), CAST(j AS SIGNED) FROM t1 ORDER BY i; +i CAST(j AS YEAR) CAST(j AS SIGNED) +16 0 0 +17 0 0 +18 0 0 +19 0 0 +20 0 0 +21 1988 1988 +22 0 0 +23 0 0 +Warnings: +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 1 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 1 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 2 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 2 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 3 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 3 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 4 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 4 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 5 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 5 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 7 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 7 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 8 +Warning 3156 Invalid JSON value for CAST to INTEGER from column j at row 8 +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_datatype_blob.result b/mysql-test/suite/tianchi/r/ctc_datatype_blob.result new file mode 100644 index 0000000..ede688d --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_datatype_blob.result @@ -0,0 +1,202 @@ +drop table if exists t1; +# test with text data +create table t1 (IDA text, IDB text) ENGINE=CTC; +insert into t1 values (43, 7889); +insert into t1 values ('',555); +insert into t1 values (444,''); +insert into t1 values (4343, 'here'); +insert into t1 values ('where',777); +insert into t1 values (null, null); +select * from t1; +IDA IDB +43 7889 + 555 +444 +4343 here +where 777 +NULL NULL +drop table t1; +# test with text data length +create table t1 (IDA text) ENGINE=CTC; +insert into t1 (IDA) values (REPEAT('a',1024)); +insert into t1 (IDA) values (REPEAT('a',10000)); +insert into t1 (IDA) values (REPEAT('a',32768)); +select length(IDA) from t1; +length(IDA) +1024 +10000 +32768 +drop table t1; +# test with longtext data +create table t1 (IDA LONGTEXT, IDB LONGTEXT) ENGINE=CTC; +insert into t1 values (43, 7889); +insert into t1 values ('',555); +insert into t1 values (444,''); +insert into t1 values (4343, 'here'); +insert into t1 values ('where',777); +insert into t1 values (null, null); +select * from t1; +IDA IDB +43 7889 + 555 +444 +4343 here +where 777 +NULL NULL +drop table t1; +# test with longtext data length +create table t1 (IDA LONGTEXT) ENGINE=CTC; +insert into t1 (IDA) values (REPEAT('a',1024)); +insert into t1 (IDA) values (REPEAT('a',10000)); +insert into t1 (IDA) values (REPEAT('a',65536)); +insert into t1 (IDA) values (REPEAT('a',1024*1024)); +insert into t1 values (null); +select length(IDA) from t1; +length(IDA) +1024 +10000 +65536 +1048576 +NULL +drop table t1; +# test with blob data +create table t1 (IDA blob, IDB blob) ENGINE=CTC; +insert into t1 values (43, 7889); +insert into t1 values ('',555); +insert into t1 values (444,''); +insert into t1 values (4343, 'here'); +insert into t1 values ('where',777); +insert into t1 values (null, null); +select * from t1; +IDA IDB +43 7889 + 555 +444 +4343 here +where 777 +NULL NULL +drop table t1; +# test with blob data length +create table t1 (IDA blob) ENGINE=CTC; +insert into t1 (IDA) values (REPEAT('a',1024)); +insert into t1 (IDA) values (REPEAT('a',10000)); +insert into t1 (IDA) values (REPEAT('a',32768)); +insert into t1 values (null); +select length(IDA) from t1; +length(IDA) +1024 +10000 +32768 +NULL +drop table t1; +# test with MediumBlob data +create table t1 (IDA MediumBlob, IDB MediumBlob) ENGINE=CTC; +insert into t1 values (43, 7889); +insert into t1 values ('',555); +insert into t1 values (444,''); +insert into t1 values (4343, 'here'); +insert into t1 values ('where',777); +insert into t1 values (null, null); +select * from t1; +IDA IDB +43 7889 + 555 +444 +4343 here +where 777 +NULL NULL +drop table t1; +# test with MediumBlob data length +create table t1 (IDA MediumBlob) ENGINE=CTC; +insert into t1 (IDA) values (REPEAT('a',1024)); +insert into t1 (IDA) values (REPEAT('a',10000)); +insert into t1 (IDA) values (REPEAT('a',1024*1024)); +insert into t1 values (null); +select length(IDA) from t1; +length(IDA) +1024 +10000 +1048576 +NULL +drop table t1; +# test with LongBlob data +create table t1 (IDA LongBlob, IDB LongBlob) ENGINE=CTC; +insert into t1 values (43, 7889); +insert into t1 values ('',555); +insert into t1 values (444,''); +insert into t1 values (4343, 'here'); +insert into t1 values ('where',777); +insert into t1 values (null, null); +select * from t1; +IDA IDB +43 7889 + 555 +444 +4343 here +where 777 +NULL NULL +drop table t1; +# test with LongBlob data length +create table t1 (IDA LongBlob) ENGINE=CTC; +insert into t1 (IDA) values (REPEAT('a',1024)); +insert into t1 (IDA) values (REPEAT('a',10000)); +insert into t1 (IDA) values (REPEAT('a',1024 * 1000)); +insert into t1 (IDA) values (REPEAT('a',1024 * 1024)); +insert into t1 (IDA) values (REPEAT('a',1024 * 1024 * 4)); +insert into t1 (IDA) values (REPEAT('a',1024 * 1024 * 8)); +insert into t1 values (null); +select length(IDA) from t1; +length(IDA) +1024 +10000 +1024000 +1048576 +4194304 +8388608 +NULL +drop table t1; +# test blob with replace / on duplicate key update +create table t1 (IDA int primary key, IDB LongBlob, IDC LongText) ENGINE=CTC; +insert into t1 values (1, 'idb', 'idc'); +insert into t1 values (1, REPEAT('a',5000), REPEAT('b',5000)) on duplicate key update IDB=VALUES(IDB), IDC=VALUES(IDC); +insert into t1 values (1, REPEAT('c',5000), REPEAT('d',5000)) on duplicate key update IDB=VALUES(IDB), IDC=VALUES(IDC); +insert into t1 values (1, REPEAT('e',4000), REPEAT('f',4000)) on duplicate key update IDB=VALUES(IDB), IDC=VALUES(IDC); +insert into t1 values (1, 'idb1', 'idc1') on duplicate key update IDB=VALUES(IDB), IDC=VALUES(IDC); +replace into t1 values (1, REPEAT('g',5000), REPEAT('h',5000)); +replace into t1 values (1, REPEAT('i',4000), REPEAT('j',4000)); +replace into t1 values (1, 'idb2', 'idc2'); +select IDA, length(IDB), IDC from t1; +IDA length(IDB) IDC +1 4 idc2 +drop table t1; +CREATE TABLE t1(col1 INT PRIMARY KEY, col2 int, col3 varchar(64), col4 BLOB) PARTITION BY KEY(col1) PARTITIONS 5; +INSERT INTO t1 VALUES(1,1,'Clone Test Row - ',REPEAT('Large Column Data ', 2048)); +INSERT INTO t1 VALUES(2,2,'Clone Test Row2 - ',REPEAT('Large Column Data2 ', 2048)); +DELETE FROM t1 WHERE col1 = 1; +UPDATE t1 set col4 = REPEAT('Large Column Data2 ', 1024) where col1 = 2; +select length(col4) from t1; +length(col4) +19456 +drop table t1; +CREATE TABLE t1( +`a` BLOB, +`b` BLOB, +`c` BLOB GENERATED ALWAYS AS (CONCAT(a,b)) VIRTUAL, +`h` VARCHAR(10) DEFAULT NULL, +`col2` int primary key, +`col3` int, +gcol1 INTEGER GENERATED ALWAYS AS (col3 + col3) VIRTUAL, +gcol2 INTEGER GENERATED ALWAYS AS (col2 + col2) VIRTUAL, +gcol3 INTEGER GENERATED ALWAYS AS (gcol2 / gcol2) VIRTUAL +); +INSERT INTO t1 VALUES (REPEAT('g', 16000), REPEAT('x', 16000), DEFAULT, "kk", 1, 1, DEFAULT, DEFAULT, DEFAULT); +INSERT INTO t1 VALUES (REPEAT('m', 16000), REPEAT('n', 16000), DEFAULT, "aa", 2, 2, DEFAULT, DEFAULT, DEFAULT); +INSERT INTO t1 VALUES (REPEAT('p', 16000), REPEAT('q', 16000), DEFAULT, "bb", 3, 3, DEFAULT, DEFAULT, DEFAULT); +INSERT INTO t1 VALUES (REPEAT('x', 16000), REPEAT('y', 16000), DEFAULT, "cc", 4, 4, DEFAULT, DEFAULT, DEFAULT); +select length(a), length(b), length(c) from t1; +length(a) length(b) length(c) +16000 16000 32000 +16000 16000 32000 +16000 16000 32000 +16000 16000 32000 +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_dc_reuse.result b/mysql-test/suite/tianchi/r/ctc_dc_reuse.result new file mode 100644 index 0000000..e70ff40 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_dc_reuse.result @@ -0,0 +1,129 @@ +drop table if exists t1; +######## test case 1, test create index will open new dc +create table t1(a int not null, b int, c int, primary key(a)) ENGINE=CTC; +insert into t1 values(1,1,1),(2,2,2),(3,3,3); +commit; +begin; +explain select * from t1 where b > 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`b` > 2) +create index b_index ON t1 (b); +explain select * from t1 where b > 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`b` > 2) +commit; +explain select * from t1 where b > 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range b_index b_index 5 NULL 1 100.00 Using where; Using pushed condition (`test`.`t1`.`b` > 2) +DROP INDEX b_index ON t1; +drop table t1; +######## test case 2, test add index will open new dc +create table t1(a int not null, b int, c int, primary key(a)) ENGINE=CTC; +insert into t1 values(1,1,1),(2,2,2),(3,3,3); +commit; +begin; +explain select * from t1 where b > 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`b` > 2) +ALTER TABLE t1 ADD INDEX b_index (b); +explain select * from t1 where b > 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`b` > 2) +commit; +explain select * from t1 where b > 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range b_index b_index 5 NULL 1 100.00 Using where; Using pushed condition (`test`.`t1`.`b` > 2) +DROP INDEX b_index ON t1; +drop table t1; +######## test case 3, test drop index will open new dc +create table t1(a int not null, b int, c int, primary key(a)) ENGINE=CTC; +ALTER TABLE t1 ADD INDEX b_index (b); +insert into t1 values(1,1,1),(2,2,2),(3,3,3); +commit; +begin; +explain select * from t1 where b > 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range b_index b_index 5 NULL 1 100.00 Using where; Using pushed condition (`test`.`t1`.`b` > 2) +DROP INDEX b_index ON t1; +explain select * from t1 where b > 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL range b_index b_index 5 NULL 1 100.00 Using where; Using pushed condition (`test`.`t1`.`b` > 2) +commit; +explain select * from t1 where b > 2; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 33.33 Using where; Using pushed condition (`test`.`t1`.`b` > 2) +drop table t1; +######## test case 4, test add column will open new dc +create table t1(a int not null, b int, c int, primary key(a)) ENGINE=CTC; +insert into t1 values(1,1,1),(2,2,2),(3,3,3); +commit; +begin; +select * from t1; +a b c +1 1 1 +2 2 2 +3 3 3 +ALTER TABLE t1 ADD COLUMN test INT default 0; +select * from t1; +a b c +1 1 1 +2 2 2 +3 3 3 +commit; +select * from t1; +a b c test +1 1 1 0 +2 2 2 0 +3 3 3 0 +drop table t1; +######## test case 5, test renaming column will open new dc +create table t1(a int not null, b int, c int, primary key(a)) ENGINE=CTC; +insert into t1 values(1,1,1),(2,2,2),(3,3,3); +commit; +begin; +select * from t1; +a b c +1 1 1 +2 2 2 +3 3 3 +ALTER TABLE t1 RENAME COLUMN c TO c_new; +select * from t1; +a b c +1 1 1 +2 2 2 +3 3 3 +commit; +select * from t1; +a b c_new +1 1 1 +2 2 2 +3 3 3 +drop table t1; +######## test case 6, test changing the column data type will open new dc +create table t1(a int not null, b int, c int, primary key(a)) ENGINE=CTC; +insert into t1(a, b) values(1,1),(2,2),(3,3); +commit; +begin; +select * from t1; +a b c +1 1 NULL +2 2 NULL +3 3 NULL +ALTER TABLE t1 MODIFY c FLOAT; +select * from t1; +a b c +1 1 NULL +2 2 NULL +3 3 NULL +commit; +select * from t1; +a b c +1 1 NULL +2 2 NULL +3 3 NULL +desc t1; +Field Type Null Key Default Extra +a int NO PRI NULL +b int YES NULL +c float YES NULL +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_dcl.result b/mysql-test/suite/tianchi/r/ctc_dcl.result new file mode 100644 index 0000000..daa239b --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_dcl.result @@ -0,0 +1,349 @@ +drop user if exists yyz; +Warnings: +Note 3162 Authorization ID 'yyz'@'%' does not exist. +select @ctc_dcl_disabled; +@ctc_dcl_disabled +NULL +create user yyz; +select user from mysql.user; +user +yyz +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +set @ctc_dcl_disabled = true; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +1 +create user yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +set @ctc_dcl_disabled = TRUE; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +1 +create user yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +set @ctc_dcl_disabled = 1; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +1 +create user yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +set @ctc_dcl_disabled = 'true'; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +true +create user yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +set @ctc_dcl_disabled = 'True'; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +True +create user yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +set @ctc_dcl_disabled = '1'; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +1 +create user yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +set @ctc_dcl_disabled = false; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +0 +create user yyz; +select user from mysql.user; +user +yyz +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +set @ctc_dcl_disabled = 0; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +0 +create user yyz; +select user from mysql.user; +user +yyz +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +set @ctc_dcl_disabled = 123; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +123 +create user yyz; +select user from mysql.user; +user +yyz +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +set @ctc_dcl_disabled = 'false'; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +false +create user yyz; +select user from mysql.user; +user +yyz +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +set @ctc_dcl_disabled = 'abc'; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +abc +create user yyz; +select user from mysql.user; +user +yyz +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +set @ctc_dcl_disabled = NULL; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +NULL +create user yyz; +select user from mysql.user; +user +yyz +mysql.infoschema +mysql.session +mysql.sys +root +drop user if exists yyz; +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +set @ctc_dcl_disabled = true; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +1 +drop user if exists yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +create user yyz; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +select user from mysql.user; +user +mysql.infoschema +mysql.session +mysql.sys +root +rename user yyz to mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +alter user mysqltest_1 identified by 'systpass'; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +show grants for mysqltest_1; +ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host '%' +drop user if exists mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +create user mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +grant CREATE TEMPORARY TABLES, LOCK TABLES on mysqltest.* to mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +show grants for mysqltest_1; +ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host '%' +flush privileges; +show grants for mysqltest_1; +ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host '%' +revoke CREATE TEMPORARY TABLES on mysqltest.* from mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +show grants for mysqltest_1; +ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host '%' +grant ALL PRIVILEGES on mysqltest.* to mysqltest_1 with grant option; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +flush privileges; +show grants for mysqltest_1; +ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host '%' +revoke LOCK TABLES, ALTER on mysqltest.* from mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +show grants for mysqltest_1; +ERROR 42000: There is no such grant defined for user 'mysqltest_1' on host '%' +revoke all privileges on mysqltest.* from mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +drop user if exists mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +flush privileges; +create role role1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +create user mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +grant role1 to mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +drop role if exists role1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +drop user if exists mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +create role role1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +create user mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +set default role all to role1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +alter user current_user() default role none; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +revoke role1 from mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +drop role if exists role1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +drop user if exists mysqltest_1; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +set @ctc_dcl_disabled = false; +select @ctc_dcl_disabled; +@ctc_dcl_disabled +0 +drop user if exists yyz; +Warnings: +Note 3162 Authorization ID 'yyz'@'%' does not exist. +create user yyz; +select user from mysql.user; +user +yyz +mysql.infoschema +mysql.session +mysql.sys +root +rename user yyz to mysqltest_1; +alter user mysqltest_1 identified by 'systpass'; +show grants for mysqltest_1; +Grants for mysqltest_1@% +GRANT USAGE ON *.* TO `mysqltest_1`@`%` +drop user if exists mysqltest_1; +create user mysqltest_1; +grant CREATE TEMPORARY TABLES, LOCK TABLES on mysqltest.* to mysqltest_1; +show grants for mysqltest_1; +Grants for mysqltest_1@% +GRANT USAGE ON *.* TO `mysqltest_1`@`%` +GRANT CREATE TEMPORARY TABLES, LOCK TABLES ON `mysqltest`.* TO `mysqltest_1`@`%` +flush privileges; +show grants for mysqltest_1; +Grants for mysqltest_1@% +GRANT USAGE ON *.* TO `mysqltest_1`@`%` +GRANT CREATE TEMPORARY TABLES, LOCK TABLES ON `mysqltest`.* TO `mysqltest_1`@`%` +revoke CREATE TEMPORARY TABLES on mysqltest.* from mysqltest_1; +show grants for mysqltest_1; +Grants for mysqltest_1@% +GRANT USAGE ON *.* TO `mysqltest_1`@`%` +GRANT LOCK TABLES ON `mysqltest`.* TO `mysqltest_1`@`%` +grant ALL PRIVILEGES on mysqltest.* to mysqltest_1 with grant option; +flush privileges; +show grants for mysqltest_1; +Grants for mysqltest_1@% +GRANT USAGE ON *.* TO `mysqltest_1`@`%` +GRANT ALL PRIVILEGES ON `mysqltest`.* TO `mysqltest_1`@`%` WITH GRANT OPTION +revoke LOCK TABLES, ALTER on mysqltest.* from mysqltest_1; +show grants for mysqltest_1; +Grants for mysqltest_1@% +GRANT USAGE ON *.* TO `mysqltest_1`@`%` +GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, CREATE TEMPORARY TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `mysqltest`.* TO `mysqltest_1`@`%` WITH GRANT OPTION +revoke all privileges on mysqltest.* from mysqltest_1; +drop user if exists mysqltest_1; +flush privileges; +create role role1; +create user mysqltest_1; +grant role1 to mysqltest_1; +drop role if exists role1; +drop user if exists mysqltest_1; +create role role1; +create user mysqltest_1; +set default role all to role1; +alter user current_user() default role none; +revoke role1 from mysqltest_1; +drop role if exists role1; +drop user if exists mysqltest_1; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl.result b/mysql-test/suite/tianchi/r/ctc_ddl.result new file mode 100644 index 0000000..747288d --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl.result @@ -0,0 +1,206 @@ +drop table if exists DEMO; +create table DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +insert into DEMO values (1, 'LIOR', 35, 6.9); +insert into DEMO values (4, 'MIKE', 55, 99.92); +insert into DEMO values (8, 'ROMAN', 40, 94.1); +insert into DEMO values (16, 'DAN', 60, 1234567890); +insert into DEMO values (32, 'ZVI', 35, 777.666); +insert into DEMO values (1, 'Eitan', NULL, 4.9); +insert into DEMO values (888888, 'zhangdi', NULL, 10000.8); +insert into DEMO values (1131, 'Hisses', 1, NULL); +SELECT * FROM DEMO; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +1 Eitan NULL 4.9 +888888 zhangdi NULL 10000.8 +1131 Hisses 1 NULL +ALTER TABLE DEMO ADD PRIMARY KEY (ID); +ERROR 23000: Duplicate entry for key 'DEMO.PRIMARY' +DELETE FROM DEMO WHERE GRADE = 4.9; +ALTER TABLE DEMO ADD PRIMARY KEY (ID); +create table DEMO_A (ID integer not null, NAME varchar(19) not null, SCORE float, CONSTRAINT id_fk FOREIGN KEY (ID) REFERENCES DEMO(ID)); +desc DEMO_A; +Field Type Null Key Default Extra +ID int NO MUL NULL +NAME varchar(19) NO NULL +SCORE float YES NULL +show create table DEMO_A; +Table Create Table +DEMO_A CREATE TABLE `DEMO_A` ( + `ID` int NOT NULL, + `NAME` varchar(19) NOT NULL, + `SCORE` float DEFAULT NULL, + KEY `id_fk` (`ID`), + CONSTRAINT `id_fk` FOREIGN KEY (`ID`) REFERENCES `DEMO` (`ID`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table DEMO_A drop CONSTRAINT id_fk; +show create table DEMO_A; +Table Create Table +DEMO_A CREATE TABLE `DEMO_A` ( + `ID` int NOT NULL, + `NAME` varchar(19) NOT NULL, + `SCORE` float DEFAULT NULL, + KEY `id_fk` (`ID`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table DEMO_A drop index id_fk; +show create table DEMO_A; +Table Create Table +DEMO_A CREATE TABLE `DEMO_A` ( + `ID` int NOT NULL, + `NAME` varchar(19) NOT NULL, + `SCORE` float DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +ALTER TABLE DEMO DROP PRIMARY KEY; +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +ALTER TABLE DEMO ADD COLUMN CLASS INT; +SELECT * FROM DEMO; +ID NAME AGE GRADE CLASS +1 LIOR 35 6.9 NULL +4 MIKE 55 99.92 NULL +8 ROMAN 40 94.1 NULL +16 DAN 60 1234567890 NULL +32 ZVI 35 777.666 NULL +888888 zhangdi NULL 10000.8 NULL +1131 Hisses 1 NULL NULL +ALTER TABLE DEMO RENAME COLUMN CLASS TO NEW_CLASS; +SELECT * FROM DEMO; +ID NAME AGE GRADE NEW_CLASS +1 LIOR 35 6.9 NULL +4 MIKE 55 99.92 NULL +8 ROMAN 40 94.1 NULL +16 DAN 60 1234567890 NULL +32 ZVI 35 777.666 NULL +888888 zhangdi NULL 10000.8 NULL +1131 Hisses 1 NULL NULL +ALTER TABLE DEMO MODIFY NEW_CLASS INT DEFAULT 1; +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +NEW_CLASS int YES 1 +ALTER TABLE DEMO MODIFY NEW_CLASS FLOAT; +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +NEW_CLASS float YES NULL +ALTER TABLE DEMO DROP COLUMN NEW_CLASS; +SELECT * FROM DEMO; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +888888 zhangdi NULL 10000.8 +1131 Hisses 1 NULL +ALTER TABLE DEMO MODIFY COLUMN NAME varchar(32); +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(32) YES NULL +AGE int YES NULL +GRADE double YES NULL +ALTER TABLE DEMO MODIFY ID int NULL; +desc DEMO; +Field Type Null Key Default Extra +ID int YES NULL +NAME varchar(32) YES NULL +AGE int YES NULL +GRADE double YES NULL +ALTER TABLE DEMO MODIFY ID int NOT NULL; +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(32) YES NULL +AGE int YES NULL +GRADE double YES NULL +ALTER TABLE DEMO RENAME TO DEMO1; +SELECT * FROM DEMO1; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +888888 zhangdi NULL 10000.8 +1131 Hisses 1 NULL +drop table DEMO1; +drop table DEMO_A; +CREATE TABLE `@#$%`(i int); +SHOW TABLES; +Tables_in_test +@#$% +INSERT INTO `@#$%` VALUES(123123); +SELECT * from `@#$%`; +i +123123 +ALTER TABLE `@#$%` ADD test int; +RENAME TABLE `@#$%` to `$$$$`; +INSERT INTO `$$$$` VALUES(233233, 11111); +SELECT * from `$$$$`; +i test +123123 NULL +233233 11111 +TRUNCATE TABLE `$$$$`; +SELECT * from `$$$$`; +i test +DROP TABLE `$$$$`; +create table ` #`(i int); +insert into ` #` values (1); +select * from ` #`; +i +1 +drop table ` #`; +CREATE TABLE `@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#`(i int); +DROP TABLE `@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#`; +CREATE TABLE `#test`(i int); +INSERT INTO `#test` VALUES (1123); +SELECT * FROM `#test`; +i +1123 +ALTER TABLE `#test` add col2 int; +DROP TABLE `#test`; +create table `@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#$`(i int); +ERROR 42000: Identifier name '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#$' is too long +create table ``(i int); +ERROR 42000: Incorrect table name '' +create table ` `(i int); +ERROR 42000: Incorrect table name ' ' +set debug = '+d, tse_lock_table_fail'; +set debug = '+d, tse_lock_table_fail_DDL_LOCKED'; +create table test1(i int); +ERROR HY000: Instance has been locked, disallow this operation +set debug = '-d, tse_lock_table_fail_DDL_LOCKED'; +set debug = '+d, tse_lock_table_fail_VERSION_NOT_MATCH'; +create table test1(i int); +ERROR HY000: Version not match. Please make sure cluster on the same version. +set debug = '-d, tse_lock_table_fail_VERSION_NOT_MATCH'; +set debug = '+d, tse_lock_table_fail_DISALLOW_OPERATION'; +create table test1(i int); +ERROR HY000: The table or database is being used. Please try again later. +set debug = '-d, tse_lock_table_fail_DISALLOW_OPERATION'; +set debug = '-d, tse_lock_table_fail'; +create table test1(i int); +set debug = '+d, non_metadata_normalization'; +set debug = '+d, tse_ddl_rewrite_broadcast_fail'; +lock table test1 write; +ERROR HY000: Version not match. Please make sure cluster on the same version. +set debug = '-d, tse_ddl_rewrite_broadcast_fail'; +set debug = '-d, non_metadata_normalization'; +drop table test1; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_alter_table.result b/mysql-test/suite/tianchi/r/ctc_ddl_alter_table.result new file mode 100644 index 0000000..a90ebe1 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_alter_table.result @@ -0,0 +1,1637 @@ +drop table if exists DEMO; +drop table if exists t1; +create table DEMO (ID integer primary key, NAME varchar(19), AGE integer, GRADE real); +INSERT INTO DEMO values(1,'demo',1,1.1); +SELECT * FROM DEMO; +ID NAME AGE GRADE +1 demo 1 1.1 +alter table DEMO rename to DEMO1; +SELECT * FROM DEMO1; +ID NAME AGE GRADE +1 demo 1 1.1 +alter table DEMO1 rename to DEMO2; +SELECT * FROM DEMO2; +ID NAME AGE GRADE +1 demo 1 1.1 +SELECT * FROM DEMO1; +ERROR 42S02: Table 'test.DEMO1' doesn't exist +desc DEMO2; +Field Type Null Key Default Extra +ID int NO PRI NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +insert into DEMO2 values (2, 'LIOR', 35, 6.9); +SELECT * FROM DEMO2; +ID NAME AGE GRADE +1 demo 1 1.1 +2 LIOR 35 6.9 +alter table DEMO2 drop primary key; +drop table DEMO2; +create table DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +INSERT INTO DEMO values(30,'insert',21,23); +ALTER TABLE DEMO ADD COLUMN col1 integer; +insert into DEMO values (1, 'LIOR', 35, 6.9,1987); +SELECT * FROM DEMO; +ID NAME AGE GRADE col1 +30 insert 21 23 NULL +1 LIOR 35 6.9 1987 +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +col1 int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL, + `col1` int DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +ALTER TABLE DEMO ADD COLUMN col2 integer PRIMARY KEY auto_increment; +insert into DEMO values (1, 'LIOR', 35, 6.9,1987,3); +insert into DEMO values (1, 'LIOR', 35, 6.9,1987,3); +ERROR 23000: Duplicate entry '3' for key 'DEMO.PRIMARY' +insert into DEMO (ID,NAME, AGE,GRADE,col1) values (1, 'LIOR', 35, 6.9,1987); +insert into DEMO (ID,NAME, AGE,GRADE,col1) values (1, 'LIOR', 35, 6.9,1987); +alter table DEMO drop primary key; +ERROR 42000: Incorrect table definition; there can be only one auto column and it must be defined as a key +insert into DEMO values (1, 'LIOR', 35, 6.9,1987,3); +ERROR 23000: Duplicate entry '3' for key 'DEMO.PRIMARY' +SELECT * FROM DEMO; +ID NAME AGE GRADE col1 col2 +30 insert 21 23 NULL 1 +1 LIOR 35 6.9 1987 2 +1 LIOR 35 6.9 1987 3 +1 LIOR 35 6.9 1987 4 +1 LIOR 35 6.9 1987 5 +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +col1 int YES NULL +col2 int NO PRI NULL auto_increment +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL, + `col1` int DEFAULT NULL, + `col2` int NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`col2`) +) ENGINE=CTC AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 col2 A NULL NULL NULL BTREE YES NULL +drop table DEMO; +create table DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +INSERT INTO DEMO values(30,'insert',21,23); +ALTER TABLE DEMO ADD COLUMN col1 integer; +insert into DEMO values (1, 'LIOR', 35, 6.9, 1987); +ALTER TABLE DEMO ADD COLUMN col2 integer UNIQUE KEY; +insert into DEMO values (2, 'LIOR', 35, 6.9, 1987, 1); +insert into DEMO values (3, 'AMY', 37, 7.9, 1982, 1); +ERROR 23000: Duplicate entry '1' for key 'DEMO.col2' +insert into DEMO values (4, 'BOB', 44, 8.1, 1962, 2); +insert into DEMO values (3, 'AMY', 37, 7.9, 1982, 2); +ERROR 23000: Duplicate entry '2' for key 'DEMO.col2' +insert into DEMO values (3, 'AMY', 37, 7.9, 1982, null); +insert into DEMO values (3, 'AMY', 37, 7.9, 1982, null); +ALTER TABLE DEMO DROP INDEX col2; +insert into DEMO values (3, 'AMY', 37, 7.9, 1982, 2); +insert into DEMO values (3, 'AMY', 37, 7.9, 1982, null); +SELECT * FROM DEMO; +ID NAME AGE GRADE col1 col2 +30 insert 21 23 NULL NULL +1 LIOR 35 6.9 1987 NULL +2 LIOR 35 6.9 1987 1 +4 BOB 44 8.1 1962 2 +3 AMY 37 7.9 1982 NULL +3 AMY 37 7.9 1982 NULL +3 AMY 37 7.9 1982 2 +3 AMY 37 7.9 1982 NULL +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +col1 int YES NULL +col2 int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL, + `col1` int DEFAULT NULL, + `col2` int DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +drop table DEMO; +create table DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +INSERT INTO DEMO values(30,'insert',21,23); +ALTER TABLE DEMO ADD COLUMN col1 integer; +insert into DEMO values (1, 'LIOR', 35, 6.9, 1987); +SELECT * FROM DEMO; +ID NAME AGE GRADE col1 +30 insert 21 23 NULL +1 LIOR 35 6.9 1987 +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +col1 int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL, + `col1` int DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +drop table DEMO; +create table DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO DEMO values(30,'insert',21,23); +INSERT INTO DEMO(NAME,ID,AGE,GRADE) values('insert1',31,21,28); +alter table DEMO rename column ID to NEW_ID; +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `NEW_ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO DEMO(NAME,ID,AGE,GRADE) values('insert1',31,21,28); +ERROR 42S22: Unknown column 'ID' in 'field list' +INSERT INTO DEMO values(30,'insert3',21,23); +INSERT INTO DEMO(NAME,NEW_ID,AGE,GRADE) values('insert4',31,21,28); +alter table DEMO rename column NEW_ID to ID; +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO DEMO values(30,'insert5',21,23); +INSERT INTO DEMO(NAME,NEW_ID,AGE,GRADE) values('insert6',31,21,28); +ERROR 42S22: Unknown column 'NEW_ID' in 'field list' +INSERT INTO DEMO(NAME,ID,AGE,GRADE) values('insert7',31,21,28); +SELECT * FROM DEMO; +ID NAME AGE GRADE +30 insert 21 23 +31 insert1 21 28 +30 insert3 21 23 +31 insert4 21 28 +30 insert5 21 23 +31 insert7 21 28 +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +drop table DEMO; +create table DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +INSERT INTO DEMO values(30,'insert1',21,23); +alter table DEMO drop column NAME; +INSERT INTO DEMO values(30,'insert2',21,23); +ERROR 21S01: Column count doesn't match value count at row 1 +INSERT INTO DEMO (ID,NAME,AGE,GRADE) values(30,'insert3',21,23); +ERROR 42S22: Unknown column 'NAME' in 'field list' +INSERT INTO DEMO (ID,AGE,GRADE) values(312,21,23); +INSERT INTO DEMO values(313,21,23); +alter table DEMO drop column AGE; +INSERT INTO DEMO values(1, 'TEST', 2, 23.33); +ERROR 21S01: Column count doesn't match value count at row 1 +INSERT INTO DEMO values(2, 23.33); +INSERT INTO DEMO values(5, 66.33); +ALTER TABLE DEMO ADD COLUMN NAME varchar(19); +INSERT INTO DEMO (ID,NAME,GRADE) values(30,'insert20', 23.38); +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +GRADE double YES NULL +NAME varchar(19) YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `GRADE` double DEFAULT NULL, + `NAME` varchar(19) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +drop table DEMO; +create table DEMO (ID integer not null, NAME varchar(10)); +INSERT INTO DEMO values(1, '1234567890'); +INSERT INTO DEMO values(2, '12345678901'); +ERROR 22001: Data too long for column 'NAME' at row 1 +alter table DEMO modify NAME VARCHAR(11); +INSERT INTO DEMO values(3, '12345678901'); +INSERT INTO DEMO values(4, '123456789012'); +ERROR 22001: Data too long for column 'NAME' at row 1 +SELECT * FROM DEMO; +ID NAME +1 1234567890 +3 12345678901 +alter table DEMO modify NAME VARCHAR(10); +ERROR 01000: Data truncated for column 'NAME' at row 2 +delete from DEMO where ID = 3; +SELECT * FROM DEMO; +ID NAME +1 1234567890 +alter table DEMO modify NAME VARCHAR(10); +delete from DEMO; +alter table DEMO modify NAME VARCHAR(10); +INSERT INTO DEMO values(5, '1234567890'); +INSERT INTO DEMO values(6, '12345678901'); +ERROR 22001: Data too long for column 'NAME' at row 1 +alter table DEMO modify NAME VARCHAR(11) UNIQUE KEY DEFAULT NULL; +INSERT INTO DEMO values(6, '12345678901'); +INSERT INTO DEMO values(6, '12345678901'); +ERROR 23000: Duplicate entry '12345678901' for key 'DEMO.NAME' +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(11) YES UNI NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(11) DEFAULT NULL, + UNIQUE KEY `NAME` (`NAME`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 NAME 1 NAME A NULL NULL NULL YES BTREE YES NULL +INSERT INTO DEMO values(28, 'BOB'); +insert into DEMO (ID) values (4); +insert into DEMO values (4,null); +insert into DEMO values (4,null); +INSERT INTO DEMO values(3, 'BOB'); +ERROR 23000: Duplicate entry 'BOB' for key 'DEMO.NAME' +SELECT * FROM DEMO; +ID NAME +5 1234567890 +6 12345678901 +28 BOB +4 NULL +4 NULL +4 NULL +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(11) YES UNI NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(11) DEFAULT NULL, + UNIQUE KEY `NAME` (`NAME`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 NAME 1 NAME A NULL NULL NULL YES BTREE YES NULL +drop table DEMO; +create table DEMO (ID integer not null, col integer); +INSERT INTO DEMO values(1, 1); +INSERT INTO DEMO values(2, 1); +SELECT * FROM DEMO; +ID col +1 1 +2 1 +alter table DEMO modify col integer UNIQUE KEY auto_increment; +ERROR 23000: ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'DEMO.col' +delete from DEMO where ID = 2; +SELECT * FROM DEMO; +ID col +1 1 +alter table DEMO modify col integer UNIQUE KEY auto_increment; +insert into DEMO (ID) values(3); +insert into DEMO (ID) values(4); +insert into DEMO (ID) values(5); +insert into DEMO (ID) values(6); +ALTER TABLE DEMO DROP INDEX col; +ERROR 42000: Incorrect table definition; there can be only one auto column and it must be defined as a key +INSERT INTO DEMO values(2, 1); +ERROR 23000: Duplicate entry '1' for key 'DEMO.col' +SELECT * FROM DEMO; +ID col +1 1 +3 2 +4 3 +5 4 +6 5 +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +col int NO PRI NULL auto_increment +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `col` int NOT NULL AUTO_INCREMENT, + UNIQUE KEY `col` (`col`) +) ENGINE=CTC AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 col 1 col A NULL NULL NULL BTREE YES NULL +drop table DEMO; +create table DEMO (ID integer, col integer); +insert into DEMO values(1,1); +insert into DEMO values(2,1); +insert into DEMO (col) values(3); +insert into DEMO (col) values(4); +SELECT * FROM DEMO; +ID col +1 1 +2 1 +NULL 3 +NULL 4 +desc DEMO; +Field Type Null Key Default Extra +ID int YES NULL +col int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int DEFAULT NULL, + `col` int DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +alter table DEMO change ID ID integer PRIMARY KEY auto_increment; +DELETE FROM DEMO; +insert into DEMO values(1,1); +insert into DEMO values(2,1); +insert into DEMO values(2,3); +ERROR 23000: Duplicate entry '2' for key 'DEMO.PRIMARY' +SELECT * FROM DEMO; +ID col +2 1 +1 1 +alter table DEMO change ID ID integer PRIMARY KEY auto_increment; +ERROR 42000: Multiple primary key defined +DELETE FROM DEMO where col = 3; +SELECT * FROM DEMO; +ID col +2 1 +1 1 +alter table DEMO change ID ID integer PRIMARY KEY auto_increment; +ERROR 42000: Multiple primary key defined +insert into DEMO (ID) values(1); +ERROR 23000: Duplicate entry '1' for key 'DEMO.PRIMARY' +insert into DEMO (ID) values(2); +ERROR 23000: Duplicate entry '2' for key 'DEMO.PRIMARY' +insert into DEMO (ID) values(3); +SELECT * FROM DEMO; +ID col +3 NULL +2 1 +1 1 +insert into DEMO (col) values(4); +insert into DEMO (col) values(5); +insert into DEMO (col) values(6); +SELECT * FROM DEMO; +ID col +6 5 +5 4 +3 NULL +2 1 +1 1 +7 6 +insert into DEMO (col) values(33); +insert into DEMO (col) values(44); +SELECT * FROM DEMO; +ID col +6 5 +5 4 +3 NULL +2 1 +1 1 +7 6 +8 33 +9 44 +desc DEMO; +Field Type Null Key Default Extra +ID int NO PRI NULL auto_increment +col int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `col` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +drop table DEMO; +create table DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +insert into DEMO values(1,'insert1',1,1.1); +SELECT * FROM DEMO; +ID NAME AGE GRADE +1 insert1 1 1.1 +alter table DEMO alter column ID set default 1; +insert into DEMO (NAME, AGE, GRADE) values ('BOB', 36, 6.9); +alter table DEMO alter column ID set default 112; +insert into DEMO (NAME, AGE, GRADE) values ('BOB2', 36, 6.9); +alter table DEMO alter column ID drop default; +insert into DEMO (NAME, AGE, GRADE) values ('AMY', 32, 8.1); +ERROR HY000: Field 'ID' doesn't have a default value +insert into DEMO (ID, NAME, AGE, GRADE) values (3,'ALEX', 45, 9.2); +SELECT * FROM DEMO; +ID NAME AGE GRADE +1 insert1 1 1.1 +1 BOB 36 6.9 +112 BOB2 36 6.9 +3 ALEX 45 9.2 +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +drop table DEMO; +create table DEMO (ID integer PRIMARY KEY auto_increment NOT NULL); +insert into DEMO values (null); +insert into DEMO values (null); +ALTER TABLE DEMO ADD COLUMN col1 integer; +ALTER TABLE DEMO ADD COLUMN col2 integer; +ALTER TABLE DEMO ADD UNIQUE (col1); +insert into DEMO values (null,null,null); +insert into DEMO values (null,null,null); +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +DEMO 0 col1 1 col1 A NULL NULL NULL YES BTREE YES NULL +INSERT INTO DEMO (col1,col2) values(1,1); +INSERT INTO DEMO (col1,col2) values(2,1); +INSERT INTO DEMO (col1,col2) values(1,1); +ERROR 23000: Duplicate entry '1' for key 'DEMO.col1' +INSERT INTO DEMO (col1,col2) values(3,1); +SELECT * FROM DEMO; +ID col1 col2 +1 NULL NULL +2 NULL NULL +3 NULL NULL +4 NULL NULL +5 1 1 +6 2 1 +8 3 1 +desc DEMO; +Field Type Null Key Default Extra +ID int NO PRI NULL auto_increment +col1 int YES UNI NULL +col2 int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `col1` int DEFAULT NULL, + `col2` int DEFAULT NULL, + PRIMARY KEY (`ID`), + UNIQUE KEY `col1` (`col1`) +) ENGINE=CTC AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +DEMO 0 col1 1 col1 A NULL NULL NULL YES BTREE YES NULL +ALTER TABLE DEMO DROP INDEX col1; +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +INSERT INTO DEMO (col1,col2) values(1,1); +SELECT * FROM DEMO; +ID col1 col2 +1 NULL NULL +2 NULL NULL +3 NULL NULL +4 NULL NULL +5 1 1 +6 2 1 +8 3 1 +9 1 1 +desc DEMO; +Field Type Null Key Default Extra +ID int NO PRI NULL auto_increment +col1 int YES NULL +col2 int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `col1` int DEFAULT NULL, + `col2` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +drop table DEMO; +create table DEMO (ID integer PRIMARY KEY auto_increment NOT NULL); +ALTER TABLE DEMO ADD COLUMN col1 integer; +ALTER TABLE DEMO ADD COLUMN col2 integer; +ALTER TABLE DEMO ADD UNIQUE (col1,col2); +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +DEMO 0 col1 1 col1 A NULL NULL NULL YES BTREE YES NULL +DEMO 0 col1 2 col2 A NULL NULL NULL YES BTREE YES NULL +INSERT INTO DEMO (col1,col2) values(1,1); +INSERT INTO DEMO (col1,col2) values(2,1); +INSERT INTO DEMO (col1,col2) values(1,2); +INSERT INTO DEMO (col1,col2) values(2,2); +INSERT INTO DEMO (col1,col2) values(1,1); +ERROR 23000: Duplicate entry '1-1' for key 'DEMO.col1' +SELECT * FROM DEMO; +ID col1 col2 +1 1 1 +2 2 1 +3 1 2 +4 2 2 +desc DEMO; +Field Type Null Key Default Extra +ID int NO PRI NULL auto_increment +col1 int YES MUL NULL +col2 int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `col1` int DEFAULT NULL, + `col2` int DEFAULT NULL, + PRIMARY KEY (`ID`), + UNIQUE KEY `col1` (`col1`,`col2`) +) ENGINE=CTC AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +DEMO 0 col1 1 col1 A NULL NULL NULL YES BTREE YES NULL +DEMO 0 col1 2 col2 A NULL NULL NULL YES BTREE YES NULL +ALTER TABLE DEMO DROP INDEX col1; +INSERT INTO DEMO (col1,col2) values(1,1); +SELECT * FROM DEMO; +ID col1 col2 +1 1 1 +2 2 1 +3 1 2 +4 2 2 +6 1 1 +desc DEMO; +Field Type Null Key Default Extra +ID int NO PRI NULL auto_increment +col1 int YES NULL +col2 int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `col1` int DEFAULT NULL, + `col2` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +drop table DEMO; +create table DEMO (ID integer UNIQUE KEY auto_increment NOT NULL); +insert into DEMO values (null); +insert into DEMO values (null); +insert into DEMO values (1); +ERROR 23000: Duplicate entry '1' for key 'DEMO.ID' +insert into DEMO values (null); +SELECT * FROM DEMO; +ID +1 +2 +3 +ALTER TABLE DEMO ADD COLUMN col1 integer; +ALTER TABLE DEMO ADD COLUMN col2 integer; +ALTER TABLE DEMO ADD PRIMARY KEY (col1); +ERROR HY000: Can't set NULL value for column 'col1' +UPDATE DEMO set col1 = 1 where ID = 1; +UPDATE DEMO set col1 = 2 where ID = 2; +UPDATE DEMO set col1 = 3 where ID = 3; +ALTER TABLE DEMO ADD PRIMARY KEY (col1); +SELECT * FROM DEMO; +ID col1 col2 +1 1 NULL +2 2 NULL +3 3 NULL +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 col1 A NULL NULL NULL BTREE YES NULL +DEMO 0 ID 1 ID A NULL NULL NULL BTREE YES NULL +INSERT INTO DEMO (col1,col2) values(1,1); +ERROR 23000: Duplicate entry '1' for key 'DEMO.PRIMARY' +INSERT INTO DEMO (col1,col2) values(4,1); +INSERT INTO DEMO (col1,col2) values(null,1); +ERROR 23000: Column 'col1' cannot be null +INSERT INTO DEMO (col1,col2) values(5,1); +SELECT * FROM DEMO; +ID col1 col2 +1 1 NULL +2 2 NULL +3 3 NULL +5 4 1 +6 5 1 +desc DEMO; +Field Type Null Key Default Extra +ID int NO UNI NULL auto_increment +col1 int NO PRI NULL +col2 int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `col1` int NOT NULL, + `col2` int DEFAULT NULL, + PRIMARY KEY (`col1`), + UNIQUE KEY `ID` (`ID`) +) ENGINE=CTC AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 col1 A NULL NULL NULL BTREE YES NULL +DEMO 0 ID 1 ID A NULL NULL NULL BTREE YES NULL +ALTER TABLE DEMO DROP PRIMARY KEY; +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 ID 1 ID A NULL NULL NULL BTREE YES NULL +INSERT INTO DEMO (col1,col2) values(1,1); +SELECT * FROM DEMO; +ID col1 col2 +1 1 NULL +2 2 NULL +3 3 NULL +5 4 1 +6 5 1 +7 1 1 +desc DEMO; +Field Type Null Key Default Extra +ID int NO PRI NULL auto_increment +col1 int NO NULL +col2 int YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `col1` int NOT NULL, + `col2` int DEFAULT NULL, + UNIQUE KEY `ID` (`ID`) +) ENGINE=CTC AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 ID 1 ID A NULL NULL NULL BTREE YES NULL +drop table DEMO; +create table DEMO (ID integer UNIQUE KEY auto_increment NOT NULL); +insert into DEMO values (null); +insert into DEMO values (null); +ALTER TABLE DEMO ADD COLUMN col1 integer; +ALTER TABLE DEMO ADD COLUMN col2 integer; +SELECT * FROM DEMO; +ID col1 col2 +1 NULL NULL +2 NULL NULL +ALTER TABLE DEMO ADD PRIMARY KEY (col1,col2); +ERROR HY000: Can't set NULL value for column 'col1' +UPDATE DEMO set col1 = 1; +ALTER TABLE DEMO ADD PRIMARY KEY (col1,col2); +ERROR HY000: Can't set NULL value for column 'col2' +UPDATE DEMO set col2 = 2; +SELECT * FROM DEMO; +ID col1 col2 +1 1 2 +2 1 2 +ALTER TABLE DEMO ADD PRIMARY KEY (col1,col2); +ERROR 23000: Duplicate entry for key 'DEMO.PRIMARY' +UPDATE DEMO set col1 = 2 where ID = 2; +ALTER TABLE DEMO ADD PRIMARY KEY (col1,col2); +SELECT * FROM DEMO; +ID col1 col2 +1 1 2 +2 2 2 +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 col1 A NULL NULL NULL BTREE YES NULL +DEMO 0 PRIMARY 2 col2 A NULL NULL NULL BTREE YES NULL +DEMO 0 ID 1 ID A NULL NULL NULL BTREE YES NULL +INSERT INTO DEMO (col1,col2) values(1,1); +INSERT INTO DEMO (col1,col2) values(3,3); +INSERT INTO DEMO (col1,col2) values(3,4); +INSERT INTO DEMO (col1,col2) values(4,3); +INSERT INTO DEMO (col1,col2) values(4,4); +INSERT INTO DEMO (col1,col2) values(3,3); +ERROR 23000: Duplicate entry '3-3' for key 'DEMO.PRIMARY' +INSERT INTO DEMO (col1,col2) values(3,4); +ERROR 23000: Duplicate entry '3-4' for key 'DEMO.PRIMARY' +INSERT INTO DEMO (col1,col2) values(4,3); +ERROR 23000: Duplicate entry '4-3' for key 'DEMO.PRIMARY' +INSERT INTO DEMO (col1,col2) values(4,4); +ERROR 23000: Duplicate entry '4-4' for key 'DEMO.PRIMARY' +UPDATE DEMO set col1 = 2 where ID = 1; +ERROR 23000: Duplicate entry '2-2' for key 'DEMO.PRIMARY' +SELECT * FROM DEMO; +ID col1 col2 +1 1 2 +2 2 2 +3 1 1 +4 3 3 +5 3 4 +6 4 3 +7 4 4 +UPDATE DEMO set col1 = 100 where ID = 1; +SELECT * FROM DEMO; +ID col1 col2 +1 100 2 +2 2 2 +3 1 1 +4 3 3 +5 3 4 +6 4 3 +7 4 4 +desc DEMO; +Field Type Null Key Default Extra +ID int NO UNI NULL auto_increment +col1 int NO PRI NULL +col2 int NO PRI NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `col1` int NOT NULL, + `col2` int NOT NULL, + PRIMARY KEY (`col1`,`col2`), + UNIQUE KEY `ID` (`ID`) +) ENGINE=CTC AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 col1 A NULL NULL NULL BTREE YES NULL +DEMO 0 PRIMARY 2 col2 A NULL NULL NULL BTREE YES NULL +DEMO 0 ID 1 ID A NULL NULL NULL BTREE YES NULL +INSERT INTO DEMO (col1,col2) values(3,3); +ERROR 23000: Duplicate entry '3-3' for key 'DEMO.PRIMARY' +ALTER TABLE DEMO DROP PRIMARY KEY; +INSERT INTO DEMO (col1,col2) values(3,3); +SELECT * FROM DEMO; +ID col1 col2 +1 100 2 +2 2 2 +3 1 1 +4 3 3 +5 3 4 +6 4 3 +7 4 4 +13 3 3 +desc DEMO; +Field Type Null Key Default Extra +ID int NO PRI NULL auto_increment +col1 int NO NULL +col2 int NO NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `col1` int NOT NULL, + `col2` int NOT NULL, + UNIQUE KEY `ID` (`ID`) +) ENGINE=CTC AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 ID 1 ID A NULL NULL NULL BTREE YES NULL +INSERT INTO DEMO (col1,col2) values(1,1); +drop table DEMO; +create table DEMO (ID integer PRIMARY KEY not null, NAME varchar(19), AGE integer, GRADE real); +INSERT INTO DEMO values(1,'insert1',1,1.1); +INSERT INTO DEMO values(1,'insert2',1,1.2); +ERROR 23000: Duplicate entry '1' for key 'DEMO.PRIMARY' +INSERT INTO DEMO values(2,'insert2',1,1.2); +SELECT * FROM DEMO; +ID NAME AGE GRADE +1 insert1 1 1.1 +2 insert2 1 1.2 +alter table DEMO modify ID int auto_increment; +desc DEMO; +Field Type Null Key Default Extra +ID int NO PRI NULL auto_increment +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +INSERT INTO DEMO (NAME, AGE, GRADE) values('insert3',1,1.2); +INSERT INTO DEMO (NAME, AGE, GRADE) values('insert4',1,1.2); +INSERT INTO DEMO (NAME, AGE, GRADE) values('insert5',1,1.2); +INSERT INTO DEMO (NAME, AGE, GRADE) values('insert6',1,1.2); +INSERT INTO DEMO values(null, 'insert6',1,1.2); +INSERT INTO DEMO values(null, 'insert6',1,1.2); +INSERT INTO DEMO values(null, 'insert6',1,1.2); +SELECT * FROM DEMO; +ID NAME AGE GRADE +1 insert1 1 1.1 +2 insert2 1 1.2 +3 insert3 1 1.2 +4 insert4 1 1.2 +5 insert5 1 1.2 +6 insert6 1 1.2 +7 insert6 1 1.2 +8 insert6 1 1.2 +9 insert6 1 1.2 +desc DEMO; +Field Type Null Key Default Extra +ID int NO PRI NULL auto_increment +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +alter table DEMO modify ID int; +desc DEMO; +Field Type Null Key Default Extra +ID int NO PRI NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +show index from DEMO; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +DEMO 0 PRIMARY 1 ID A NULL NULL NULL BTREE YES NULL +INSERT INTO DEMO values(null, 'insert6',1,1.2); +ERROR 23000: Column 'ID' cannot be null +INSERT INTO DEMO values(7, 'insert6',1,1.2); +ERROR 23000: Duplicate entry '7' for key 'DEMO.PRIMARY' +INSERT INTO DEMO values(8, 'insert6',1,1.2); +ERROR 23000: Duplicate entry '8' for key 'DEMO.PRIMARY' +SELECT * FROM DEMO; +ID NAME AGE GRADE +1 insert1 1 1.1 +2 insert2 1 1.2 +3 insert3 1 1.2 +4 insert4 1 1.2 +5 insert5 1 1.2 +6 insert6 1 1.2 +7 insert6 1 1.2 +8 insert6 1 1.2 +9 insert6 1 1.2 +drop table DEMO; +create table DEMO (ID integer PRIMARY KEY not null, NAME varchar(19), AGE integer, GRADE real); +ALTER TABLE DEMO MODIFY ID integer COMMENT 'id of user'; +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL COMMENT 'id of user', + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +ALTER TABLE DEMO MODIFY NAME varchar(19) COMMENT 'name of user', MODIFY AGE integer COMMENT 'age of user'; +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL COMMENT 'id of user', + `NAME` varchar(19) DEFAULT NULL COMMENT 'name of user', + `AGE` int DEFAULT NULL COMMENT 'age of user', + `GRADE` double DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table t1 (col1 INT, col2 INT, col3 INT); +alter table t1 add column col4 int invisible; +insert into t1 values(1, 2, 3, 4); +ERROR 21S01: Column count doesn't match value count at row 1 +insert into t1 (col1, col2, col3, col4) values (11, 22, 33, 44), (111, 222, 333, 444); +select * from t1; +col1 col2 col3 +11 22 33 +111 222 333 +select col1, col2, col3, col4 from t1; +col1 col2 col3 col4 +11 22 33 44 +111 222 333 444 +alter table t1 modify column col1 INT INVISIBLE; +alter table t1 alter column col2 set INVISIBLE; +alter table t1 change column col4 col4 INT VISIBLE; +insert into t1 values(1, 2, 3, 4); +ERROR 21S01: Column count doesn't match value count at row 1 +insert into t1 (col3, col4) values (3333,4444); +select * from t1; +col3 col4 +33 44 +333 444 +3333 4444 +select col1, col2, col3, col4 from t1; +col1 col2 col3 col4 +11 22 33 44 +111 222 333 444 +NULL NULL 3333 4444 +alter table t1 alter column col2 set VISIBLE; +select * from t1; +col2 col3 col4 +22 33 44 +222 333 444 +NULL 3333 4444 +drop table t1; +CREATE TABLE t1 (COL_1 INT COMMENT '列1', COL_2 INTEGER COMMENT '列2', COL_3 BIGINT PRIMARY KEY COMMENT '列3'); +ALTER TABLE t1 MODIFY COLUMN COL_3 TINYINT; +ALTER TABLE t1 MODIFY COLUMN COL_3 SMALLINT; +ALTER TABLE t1 MODIFY COLUMN COL_3 MEDIUMINT; +ALTER TABLE t1 MODIFY COLUMN COL_3 INT; +ALTER TABLE t1 MODIFY COLUMN COL_3 INTEGER; +ALTER TABLE t1 MODIFY COLUMN COL_3 BIGINT; +ALTER TABLE t1 MODIFY COLUMN COL_3 FLOAT; +ALTER TABLE t1 MODIFY COLUMN COL_3 DOUBLE; +ALTER TABLE t1 MODIFY COLUMN COL_3 VARCHAR(20); +DROP TABLE t1; +CREATE TABLE `test`.`supplier`( +group_id int(11) not null primary key, +group_name varchar(255) not null +); +Warnings: +Warning 1681 Integer display width is deprecated and will be removed in a future release. +CREATE TABLE `test`.`supplier11` ( +id int(11) NOT NULL, +supplier_id int(11) NOT NULL DEFAULT 1, +supplier_name varchar(255) NOT NULL, +group_id int(11) NOT NULL, +PRIMARY KEY (`id`), +UNIQUE KEY `uni_sid`(supplier_id) USING BTREE, +CONSTRAINT `fk_gid` FOREIGN KEY (`group_id`) REFERENCES `test`.`supplier`(`group_id`) ON DELETE NO ACTION ON UPDATE NO ACTION, +CONSTRAINT `chk_1` CHECK (supplier_id > 2 and supplier_id < 100) +); +Warnings: +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +ALTER TABLE `test`.`supplier11` DROP CHECK `chk_1`; +ALTER TABLE `test`.`supplier11` ADD CONSTRAINT `chk_1000` CHECK((`supplier_id` > 2) and (`supplier_id` < 1000)); +DROP TABLE `test`.`supplier11`; +DROP TABLE `test`.`supplier`; +create table DEMO_KEY (ID integer, AGE integer, GRADE real); +alter table DEMO_KEY add column col1 integer primary key; +alter table DEMO_KEY drop primary key; +alter table DEMO_KEY add primary key (id); +drop table DEMO_KEY; +drop table if exists TEST_COL; +drop table if exists FK_TEST; +CREATE TABLE TEST_COL (id int(18)); +ALTER TABLE TEST_COL ADD COLUMN Col2 integer; +ALTER TABLE TEST_COL DROP COLUMN col2; +ALTER TABLE TEST_COL RENAME COLUMN ID TO my_ID; +ALTER TABLE TEST_COL ADD COLUMN col3 integer; +ALTER TABLE TEST_COL CHANGE COLUMN coL3 my_col3 varchar(20); +show create table TEST_COL; +Table Create Table +TEST_COL CREATE TABLE `TEST_COL` ( + `my_ID` int DEFAULT NULL, + `my_col3` varchar(20) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +CREATE TABLE FK_TEST (id int(18) primary key); +ALTER TABLE TEST_COL ADD CONSTRAINT my_fk_CONS FOREIGN KEY(MY_ID) REFERENCES FK_TEST(Id); +show create table TEST_COL; +Table Create Table +TEST_COL CREATE TABLE `TEST_COL` ( + `my_ID` int DEFAULT NULL, + `my_col3` varchar(20) DEFAULT NULL, + KEY `my_fk_CONS` (`my_ID`), + CONSTRAINT `my_fk_CONS` FOREIGN KEY (`my_ID`) REFERENCES `FK_TEST` (`id`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +ALTER TABLE TEST_COL DROP FOREIGN KEY my_fk_CONS; +ALTER TABLE TEST_COL ADD INDEX (My_col3); +show create table TEST_COL; +Table Create Table +TEST_COL CREATE TABLE `TEST_COL` ( + `my_ID` int DEFAULT NULL, + `my_col3` varchar(20) DEFAULT NULL, + KEY `my_fk_CONS` (`my_ID`), + KEY `my_col3` (`my_col3`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +ALTER TABLE TEST_COL drop index MY_Col3; +drop table TEST_COL; +drop table FK_TEST; +drop table if exists test; +create table test(c1 int, c2 int, c3 double); +insert into test values (1,2,10),(2,3,4),(3,5,6),(4,12,16),(1,2,4),(10,2,17),(6,12,21); +alter table test partition by range(c1)(partition p0 values less than (4), +partition p1 values less than (7), partition p2 values less than (12)); +alter table test partition by range(c1)(partition p0 values less than (7), +partition p1 values less than (12)); +alter table test partition by range(c1)(partition p0 values less than (7), +partition p1 values less than (10)); +ERROR HY000: Table has no partition for value 10 +alter table test partition by range(c1)(partition p0 values less than (7), +partition p1 values less than (10)); +ERROR HY000: Table has no partition for value 10 +alter table test partition by range(c1)(partition p0 values less than (7), +partition p1 values less than (12)); +alter table test partition by range(c2)(partition p0 values less than (7), +partition p1 values less than (12)); +ERROR HY000: Table has no partition for value 12 +alter table test partition by range(c2)(partition p0 values less than (7), +partition p1 values less than (12)); +ERROR HY000: Table has no partition for value 12 +alter table test partition by range(c2)(partition p0 values less than (7), +partition p1 values less than (15)); +alter table test partition by range(c2)(partition p0 values less than (20)); +alter table test partition by range(c2)(partition p0 values less than (25)); +alter table test partition by range(c2)(partition p0 values less than (20)); +alter table test partition by range(c2)(partition p0 values less than (25)); +drop table test; +create table test(c1 int, c2 int) partition by range(c1) (partition p0 values less than (6), +partition p1 values less than (10)); +insert into test values (1,2),(3,4),(6,6),(9,10); +alter table test partition by range(c1) (partition p0 values less than (7)); +ERROR HY000: Table has no partition for value 9 +alter table test partition by range(c1) (partition p0 values less than (20)); +drop table test; +create table test (a int, b int, c int, d int); +alter table test rename column a to b, rename column b to c, rename column c to a; +show create table test; +Table Create Table +test CREATE TABLE `test` ( + `b` int DEFAULT NULL, + `c` int DEFAULT NULL, + `a` int DEFAULT NULL, + `d` int DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table test rename column a to b, rename column b to a, rename column c to newc; +show create table test; +Table Create Table +test CREATE TABLE `test` ( + `a` int DEFAULT NULL, + `newc` int DEFAULT NULL, + `b` int DEFAULT NULL, + `d` int DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table test rename column a to b; +ERROR 42S21: Duplicate column name 'b' +drop table test; +CREATE TABLE test (C123456789C123456789C123456789C123456789C123456789C123456789C1234 INT, b int); +ERROR 42000: Identifier name 'C123456789C123456789C123456789C123456789C123456789C123456789C1234' is too long +CREATE TABLE test (C123456789C123456789C123456789C123456789C123456789C123456789C123 INT, b int); +alter table test rename column C123456789C123456789C123456789C123456789C123456789C123456789C123 to b, +rename column b to C123456789C123456789C123456789C123456789C123456789C123456789C123; +show create table test; +Table Create Table +test CREATE TABLE `test` ( + `b` int DEFAULT NULL, + `C123456789C123456789C123456789C123456789C123456789C123456789C123` int DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table test; +create table test (a integer primary key, b varchar(19) not null, c integer, d real); +insert into test values (1, 'LIOR', 35, 6.9); +insert into test values (4, 'MIKE', 55, 99.92); +insert into test values (8, 'ROMAN', 40, 94.1); +insert into test values (5, 'Eitan', NULL, 4.9); +insert into test values (7, 'zhangdi', NULL, 10000.8); +insert into test values (9, 'Hisses', 1, NULL); +alter table test rename column a to b, rename column b to c, rename column c to a; +show create table test; +Table Create Table +test CREATE TABLE `test` ( + `b` int NOT NULL, + `c` varchar(19) NOT NULL, + `a` int DEFAULT NULL, + `d` double DEFAULT NULL, + PRIMARY KEY (`b`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table test; +create table test(a INT,b VARCHAR(255) NOT NULL); +alter table test change column b b INT; +insert into test values (1,2),(3,4),(6,6),(9,10); +select * from test; +a b +1 2 +3 4 +6 6 +9 10 +drop table test; +create table test(a INT,b INT NOT NULL); +alter table test change column b b VARCHAR(255); +insert into test values (1,'aa'),(2,'bb'),(3,'cc'),(4,'dd'); +select * from test; +a b +1 aa +2 bb +3 cc +4 dd +drop table test; +CREATE TABLE t1 (a int, b int); +INSERT INTO t1 VALUES (1,4),(2,2),(2,2),(4,1),(4,1),(4,1),(4,1),(2,1),(2,1); +SELECT SUM(b) FROM t1 GROUP BY a WITH ROLLUP; +SUM(b) +4 +6 +4 +14 +SELECT DISTINCT SUM(b) FROM t1 GROUP BY a WITH ROLLUP; +SUM(b) +4 +6 +14 +SELECT SUM(b), COUNT(DISTINCT b) FROM t1 GROUP BY a WITH ROLLUP; +SUM(b) COUNT(DISTINCT b) +4 1 +6 2 +4 1 +14 3 +SELECT DISTINCT SUM(b), COUNT(DISTINCT b) FROM t1 GROUP BY a WITH ROLLUP; +SUM(b) COUNT(DISTINCT b) +4 1 +6 2 +14 3 +SELECT SUM(b), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP; +SUM(b) COUNT(*) +4 1 +6 4 +4 4 +14 9 +SELECT DISTINCT SUM(b), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP; +SUM(b) COUNT(*) +4 1 +6 4 +4 4 +14 9 +SELECT SUM(b), COUNT(DISTINCT b), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP; +SUM(b) COUNT(DISTINCT b) COUNT(*) +4 1 1 +6 2 4 +4 1 4 +14 3 9 +SELECT DISTINCT SUM(b), COUNT(DISTINCT b), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP; +SUM(b) COUNT(DISTINCT b) COUNT(*) +4 1 1 +6 2 4 +4 1 4 +14 3 9 +SELECT a, SUM(b) FROM t1 GROUP BY a,b WITH ROLLUP; +a SUM(b) +1 4 +1 4 +2 2 +2 4 +2 6 +4 4 +4 4 +NULL 14 +SELECT DISTINCT a, SUM(b) FROM t1 GROUP BY a,b WITH ROLLUP; +a SUM(b) +1 4 +2 2 +2 4 +2 6 +4 4 +NULL 14 +SELECT b, a, SUM(b) FROM t1 GROUP BY a,b WITH ROLLUP; +b a SUM(b) +4 1 4 +NULL 1 4 +1 2 2 +2 2 4 +NULL 2 6 +1 4 4 +NULL 4 4 +NULL NULL 14 +SELECT DISTINCT b,a, SUM(b) FROM t1 GROUP BY a,b WITH ROLLUP; +b a SUM(b) +4 1 4 +NULL 1 4 +1 2 2 +2 2 4 +NULL 2 6 +1 4 4 +NULL 4 4 +NULL NULL 14 +ALTER TABLE t1 ADD COLUMN c INT; +SELECT a,b,SUM(c) FROM t1 GROUP BY a,b,c WITH ROLLUP; +a b SUM(c) +1 4 NULL +1 4 NULL +1 NULL NULL +2 1 NULL +2 1 NULL +2 2 NULL +2 2 NULL +2 NULL NULL +4 1 NULL +4 1 NULL +4 NULL NULL +NULL NULL NULL +SELECT distinct a,b,SUM(c) FROM t1 GROUP BY a,b,c WITH ROLLUP; +a b SUM(c) +1 4 NULL +1 NULL NULL +2 1 NULL +2 2 NULL +2 NULL NULL +4 1 NULL +4 NULL NULL +NULL NULL NULL +drop table t1; +CREATE TABLE t1 (a int, b int); +INSERT INTO t1 VALUES (1,4),(2,2),(2,2),(4,1),(4,1),(4,1),(4,1),(2,1),(2,1); +ALTER TABLE t1 ADD COLUMN c INT; +ALTER TABLE t1 ADD COLUMN d INT; +SELECT * FROM t1; +a b c d +1 4 NULL NULL +2 2 NULL NULL +2 2 NULL NULL +4 1 NULL NULL +4 1 NULL NULL +4 1 NULL NULL +4 1 NULL NULL +2 1 NULL NULL +2 1 NULL NULL +UPDATE t1 SET c = 3 WHERE a = 1; +SELECT * FROM t1; +a b c d +1 4 3 NULL +2 2 NULL NULL +2 2 NULL NULL +4 1 NULL NULL +4 1 NULL NULL +4 1 NULL NULL +4 1 NULL NULL +2 1 NULL NULL +2 1 NULL NULL +ALTER TABLE t1 DROP COLUMN c; +SELECT * FROM t1; +a b d +1 4 NULL +2 2 NULL +2 2 NULL +4 1 NULL +4 1 NULL +4 1 NULL +4 1 NULL +2 1 NULL +2 1 NULL +UPDATE t1 SET d = 4 WHERE a = 1; +SELECT * FROM t1; +a b d +1 4 4 +2 2 NULL +2 2 NULL +4 1 NULL +4 1 NULL +4 1 NULL +4 1 NULL +2 1 NULL +2 1 NULL +ALTER TABLE t1 ADD COLUMN e INT; +SELECT * FROM t1; +a b d e +1 4 4 NULL +2 2 NULL NULL +2 2 NULL NULL +4 1 NULL NULL +4 1 NULL NULL +4 1 NULL NULL +4 1 NULL NULL +2 1 NULL NULL +2 1 NULL NULL +ALTER TABLE t1 DROP COLUMN b; +SELECT * FROM t1; +a d e +1 4 NULL +2 NULL NULL +2 NULL NULL +4 NULL NULL +4 NULL NULL +4 NULL NULL +4 NULL NULL +2 NULL NULL +2 NULL NULL +INSERT INTO t1 VALUES (8,NULL,NULL),(9,3,5),(10,5,NULL),(11,NULL,7); +SELECT * FROM t1; +a d e +1 4 NULL +2 NULL NULL +2 NULL NULL +4 NULL NULL +4 NULL NULL +4 NULL NULL +4 NULL NULL +2 NULL NULL +2 NULL NULL +8 NULL NULL +9 3 5 +10 5 NULL +11 NULL 7 +drop table t1; +create table t1(a int, b int, c int auto_increment unique key); +insert into t1 values (1,1,1); +alter table t1 drop column c; +select * from t1; +a b +1 1 +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int DEFAULT NULL, + `b` int DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t1; +create table t1(a int, b int unique key, c int auto_increment primary key); +insert into t1 values (1,1,1); +alter table t1 drop column c; +select * from t1; +a b +1 1 +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int DEFAULT NULL, + `b` int DEFAULT NULL, + UNIQUE KEY `b` (`b`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t1; +CREATE TABLE t1(c1 TINYINT NOT NULL, c2 TINYINT NOT NULL, c3 TINYINT NOT NULL); +INSERT INTO t1 VALUES(1,3,1),(3,1,2),(2,2,1),(8,9,2),(7,5,1); +SELECT * FROM t1; +c1 c2 c3 +1 3 1 +3 1 2 +2 2 1 +8 9 2 +7 5 1 +ALTER TABLE t1 ORDER BY c1,c2,c3; +SELECT * FROM t1; +c1 c2 c3 +1 3 1 +2 2 1 +3 1 2 +7 5 1 +8 9 2 +ALTER TABLE t1 ORDER BY c2 desc; +SELECT * FROM t1; +c1 c2 c3 +8 9 2 +7 5 1 +1 3 1 +2 2 1 +3 1 2 +ALTER TABLE t1 ORDER BY c3; +SELECT * FROM t1; +c1 c2 c3 +7 5 1 +1 3 1 +2 2 1 +8 9 2 +3 1 2 +ALTER TABLE t1 ORDER BY c1 asc; +SELECT * FROM t1; +c1 c2 c3 +1 3 1 +2 2 1 +3 1 2 +7 5 1 +8 9 2 +DROP TABLE t1; +CREATE TABLE IF NOT EXISTS t1 ( +id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, +pattern VARCHAR(5000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, +pattern_database VARCHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin, +replacement VARCHAR(5000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, +enabled ENUM('YES', 'NO') CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL +DEFAULT 'YES', +message VARCHAR(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin, +pattern_digest VARCHAR(64), +normalized_pattern VARCHAR(5000) +) DEFAULT CHARSET = utf8mb4 ENGINE=CTC; +show tables; +Tables_in_test +t1 +ALTER TABLE t1 DROP COLUMN pattern_digest,ALGORITHM = COPY; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `id` int NOT NULL AUTO_INCREMENT, + `pattern` varchar(5000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, + `pattern_database` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, + `replacement` varchar(5000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL, + `enabled` enum('YES','NO') CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT 'YES', + `message` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL, + `normalized_pattern` varchar(5000) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t1; +SET sql_mode = 'NO_ENGINE_SUBSTITUTION'; +DROP TABLE IF EXISTS t1; +Warnings: +Note 1051 Unknown table 'test.t1' +SET CHARACTER SET koi8r; +CREATE TABLE t1 ( +comment CHAR(32) ASCII NOT NULL, +koi8_ru_f CHAR(32) CHARACTER SET koi8r NOT NULL default '' +) CHARSET=latin5; +INSERT INTO t1 (koi8_ru_f,comment) VALUES ('a','LAT SMALL A'); +ALTER TABLE t1 ADD ucs2_f CHAR(32) CHARACTER SET ucs2; +ALTER TABLE t1 CHANGE ucs2_f ucs2_f CHAR(32) UNICODE NOT NULL; +Warnings: +Warning 1265 Data truncated for column 'ucs2_f' at row 1 +DROP TABLE t1; +SET sql_mode = DEFAULT; +create table t1(col int, col1 varchar(3000)); +insert into t1 values (1,'abc'); +alter table t1 modify column col1 varchar(5000); +drop table t1; +CREATE TABLE t1(a FLOAT); +INSERT INTO t1 values(1.5); +ALTER TABLE t1 MODIFY COLUMN a FLOAT; +ALTER TABLE t1 CHANGE COLUMN a a FLOAT; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` float DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +DROP TABLE t1; +CREATE TABLE t1(a DOUBLE); +INSERT INTO t1 values(1.5); +ALTER TABLE t1 MODIFY COLUMN a DOUBLE; +ALTER TABLE t1 CHANGE COLUMN a a DOUBLE; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +DROP TABLE t1; +create table t1 (f1 int unique, f2 int, f3 float DEFAULT 0.0); +INSERT INTO t1 VALUES (1, 80, 0.0); +INSERT INTO t1 VALUES (2, 81, 0.0); +create table t2 (f1 int, f2 int, f3 float DEFAULT 0.0, constraint c1 foreign key (f2) references t1(f1) on update cascade); +show create table t2; +Table Create Table +t2 CREATE TABLE `t2` ( + `f1` int DEFAULT NULL, + `f2` int DEFAULT NULL, + `f3` float DEFAULT '0', + KEY `c1` (`f2`), + CONSTRAINT `c1` FOREIGN KEY (`f2`) REFERENCES `t1` (`f1`) ON UPDATE CASCADE +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t2 VALUES (51, 1, 0.0); +INSERT INTO t2 VALUES (52, 2, 0.0); +ALTER TABLE t1 DROP COLUMN f1; +ERROR HY000: Cannot drop column 'f1': needed in a foreign key constraint 'c1' of table 't2' +ALTER TABLE t1 DROP COLUMN f2; +ALTER TABLE t2 DROP COLUMN f2; +ERROR HY000: Cannot drop column 'f2': needed in a foreign key constraint 'c1' +ALTER TABLE t2 DROP COLUMN f1; +drop table t2; +drop table t1; +CREATE TABLE t1(fld1 INT); +ALTER TABLE t1 RENAME COLUMN fld1 TO fld1; +DROP TABLE t1; +CREATE TABLE t1(fld1 INT); +ALTER TABLE t1 RENAME COLUMN fld1 TO fld2; +DROP TABLE t1; +CREATE TABLE t1(fld1 INT, fld2 INT); +ALTER TABLE t1 RENAME COLUMN fld1 TO fld2, RENAME COLUMN fld2 TO fld1; +DROP TABLE t1; +CREATE TABLE t1(fld1 INT, fld2 INT); +ALTER TABLE t1 RENAME COLUMN fld1 TO fld1, RENAME COLUMN fld2 TO fld2; +DROP TABLE t1; +CREATE TABLE t1(fld1 INT, fld2 INT, fld3 INT); +ALTER TABLE t1 RENAME COLUMN fld1 TO fld1, RENAME COLUMN fld2 TO fld3, RENAME COLUMN fld3 TO fld2; +DROP TABLE t1; +CREATE TABLE t1(fld1 INT, fld2 INT, fld3 INT); +ALTER TABLE t1 RENAME COLUMN fld1 TO fld1, RENAME COLUMN fld2 TO fld2, RENAME COLUMN fld3 TO fld3; +DROP TABLE t1; +CREATE TABLE t1(fld1 INT, fld2 INT, fld3 INT); +ALTER TABLE t1 RENAME COLUMN fld1 TO fld2, RENAME COLUMN fld3 TO fld4, RENAME COLUMN fld2 TO fld1; +DROP TABLE t1; +CREATE TABLE t1(col1 int); +INSERT INTO t1 values (1234); +ALTER TABLE t1 ADD COLUMN col2 int NOT NULL; +ALTER TABLE t1 ADD COLUMN coL3 double NOT NULL; +ALTER TABLE t1 ADD COLUMN col4 float NOT NULL; +ALTER TABLE t1 ADD COLUMN col5 blob NOT NULL; +ALTER TABLE t1 ADD COLUMN col6 blob NOT NULL, ADD COLUMN col7 int NOT NULL; +ALTER TABLE t1 DROP COLUMN col2, ADD COLUMN col8 int NOT NULL, ADD COLUMN col9 int; +ALTER TABLE t1 ADD COLUMN col10 int NOT NULL, DROP COLUMN col3, DROP COLUMN col4; +SELECT * FROM t1; +col1 col5 col6 col7 col8 col9 col10 +1234 0 0 NULL 0 +ALTER TABLE t1 ADD COLUMN col15 int default 333; +ALTER TABLE t1 ADD COLUMN col16 int NOT NULL default 444; +SELECT * FROM t1; +col1 col5 col6 col7 col8 col9 col10 col15 col16 +1234 0 0 NULL 0 333 444 +DROP TABLE t1; +create table t1 (i int unsigned not null auto_increment primary key); +insert into t1 values (null),(null),(null),(null); +alter table t1 drop i,add i int unsigned not null auto_increment, drop primary key, add primary key (i); +drop table t1; +CREATE TABLE t1 (c1 FLOAT(6,2)); +INSERT INTO t1 VALUES (123); +ALTER TABLE t1 MODIFY COLUMN c1 FLOAT(7,3); +drop table t1; +CREATE TABLE t1 (c1 DOUBLE(6,2)); +INSERT INTO t1 VALUES (123); +ALTER TABLE t1 MODIFY COLUMN c1 DOUBLE(7,3); +drop table t1; +CREATE TABLE t1 (c1 REAL(6,2)); +INSERT INTO t1 VALUES (123); +ALTER TABLE t1 MODIFY COLUMN c1 REAL(7,3); +drop table t1; +CREATE TABLE t1 (c1 FLOAT(6,2), c2 DOUBLE(6,2), c3 REAL(6,2)); +INSERT INTO t1 VALUES (123, 456, 789); +ALTER TABLE t1 MODIFY COLUMN c2 DOUBLE(7,3); +drop table t1; +create database db1; +create database db2; +use db1; +create table t(id int primary key); +create table t1( +a int DEFAULT NULL, +c float, +id int primary key auto_increment, +foreign key(id) references t(id)); +alter table t1 rename to t2, add column b int, algorithm = copy; +alter table t2 rename to t1; +rename table t1 to db2.t2; +alter table db2.t2 modify column c int; +alter table db2.t2 alter column a drop default, rename to t1; +alter table t1 rename to db2.t2; +alter table db2.t2 rename to db1.t1, modify column c char(10); +alter table t1 rename to t2; +drop database db1; +drop database db2; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_analyze.result b/mysql-test/suite/tianchi/r/ctc_ddl_analyze.result new file mode 100644 index 0000000..be63df2 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_analyze.result @@ -0,0 +1,72 @@ +drop table if exists DEMO; +create table DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +insert into DEMO values (1, 'LIOR', 35, 6.9); +insert into DEMO values (4, 'MIKE', 55, 99.92); +insert into DEMO values (8, 'ROMAN', 40, 94.1); +insert into DEMO values (16, 'DAN', 60, 1234567890); +insert into DEMO values (32, 'ZVI', 35, 777.666); +insert into DEMO values (1, 'Eitan', NULL, 4.9); +insert into DEMO values (888888, 'zhangdi', NULL, 10000.8); +insert into DEMO values (1131, 'Hisses', 1, NULL); +create index idx_id ON DEMO (ID); +analyze table DEMO; +Table Op Msg_type Msg_text +test.DEMO analyze status OK +select * from DEMO where ID = 1; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID >= 1; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +1131 Hisses 1 NULL +888888 zhangdi NULL 10000.8 +select * from DEMO where ID <= 10; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +select * from DEMO where ID >= 1 AND ID <= 10; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +create table t1(a1 int, a2 int,a3 int,a4 int,a5 int,a6 int,a7 int,a8 int, a9 int,a10 int, +a11 int,a12 int,a13 int,a14 int,a15 int,a16 int,a17 int,a18 int,a19 int,a20 int,a21 int, +a22 int,a23 int,a24 int,a25 int,a26 int,a27 int,a28 int,a29 int,a30 int,a31 int,a32 int, +a33 int,a34 int,a35 int,a36 int,a37 int,a38 int,a39 int,a40 int,a41 int,a42 int,a43 int, +a44 int,a45 int,a46 int,a47 int,a48 int,a49 int,a50 int,a51 int,a52 int,a53 int,a54 int, +a55 int,a56 int,a57 int,a58 int,a59 int,a60 int,a61 int,a62 int,a63 int,a64 int,a65 int, +a66 int,a67 int,a68 int,a69 int,a70 int,a71 int,a72 int,a73 int,a74 int,a75 int,a76 int, +a77 int,a78 int,a79 int,a80 int,a81 int,a82 int,a83 int,a84 int,a85 int,a86 int,a87 int, +a88 int,a89 int,a90 int,a91 int,a92 int,a93 int,a94 int,a95 int,a96 int,a97 int,a98 int +)PARTITION BY HASH (`a1`) PARTITIONS 1024; +insert into t1 values(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,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83, +84,85,86,87,88,89,90,91,92,93,94,95,96,97,98); +insert into t1 values(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,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83, +84,85,86,87,88,89,90,91,92,93,94,95,96,97,98); +select a1 from t1 where a1 = 1; +a1 +1 +1 +analyze table t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +explain select a1 from t1 where a1 = 1; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 p1 ALL NULL NULL NULL NULL 2 50.00 Using where; Using pushed condition (`test`.`t1`.`a1` = 1) +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`a1` AS `a1` from `test`.`t1` where (`test`.`t1`.`a1` = 1) +drop table t1; +drop table DEMO; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_auto_inc.result b/mysql-test/suite/tianchi/r/ctc_ddl_auto_inc.result new file mode 100644 index 0000000..32bfbc7 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_auto_inc.result @@ -0,0 +1,1201 @@ +drop table if exists DEMO; +create table DEMO (ID TINYINT PRIMARY KEY auto_increment ,ID1 integer); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (-100, 1); +insert DEMO values (-100, 1); +ERROR 23000: Duplicate entry '-100' for key 'DEMO.PRIMARY' +insert DEMO values (-127, 1); +insert DEMO values (-128, 1); +insert DEMO values (-129, 1); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (null, 3); +insert DEMO values (30, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (60, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-127 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +update DEMO set ID = 80 where ID1 = 3; +ERROR 23000: Duplicate entry '80' for key 'DEMO.PRIMARY' +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-127 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +insert DEMO values (80, 80); +delete from DEMO where ID = 80; +insert DEMO values (null, 81); +update DEMO set ID = 90 where ID1 = 80; +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (126, 2147483646); +insert DEMO values (null, 2147483647); +insert DEMO values (null, 2147483647); +ERROR 23000: Duplicate entry '127' for key 'DEMO.PRIMARY' +insert DEMO values (128, 2147483647); +ERROR 22003: Out of range value for column 'ID' at row 1 +select *from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-127 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +82 3 +81 81 +83 3 +126 2147483646 +127 2147483647 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` tinyint NOT NULL AUTO_INCREMENT, + `ID1` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=127 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID TINYINT unsigned PRIMARY KEY auto_increment ,ID1 integer); +insert DEMO values (-1, 3); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (0, 3); +insert DEMO values (0, 3); +insert DEMO values (1, 3); +ERROR 23000: Duplicate entry '1' for key 'DEMO.PRIMARY' +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (20, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (50, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +20 3 +21 3 +22 3 +50 3 +51 3 +52 3 +update DEMO set ID = 110 where ID1 = 3; +ERROR 23000: Duplicate entry '110' for key 'DEMO.PRIMARY' +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +20 3 +21 3 +22 3 +50 3 +51 3 +52 3 +insert DEMO values (110, 110); +delete from DEMO where ID = 110; +insert DEMO values (null, 111); +update DEMO set ID = 120 where ID1 = 111; +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (254, 254); +insert DEMO values (null, 255); +insert DEMO values (null, 256); +ERROR 23000: Duplicate entry '255' for key 'DEMO.PRIMARY' +insert DEMO values (256, 256); +ERROR 22003: Out of range value for column 'ID' at row 1 +select *from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +20 3 +21 3 +22 3 +50 3 +51 3 +52 3 +121 3 +120 111 +122 3 +254 254 +255 255 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` tinyint unsigned NOT NULL AUTO_INCREMENT, + `ID1` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=255 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID SMALLINT PRIMARY KEY auto_increment ,ID1 integer); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (-100, 1); +insert DEMO values (-100, 1); +ERROR 23000: Duplicate entry '-100' for key 'DEMO.PRIMARY' +insert DEMO values (-32768, 1); +insert DEMO values (-128, 1); +insert DEMO values (-32769, 1); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (null, 3); +insert DEMO values (30, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (60, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-32768 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +update DEMO set ID = 80 where ID1 = 3; +ERROR 23000: Duplicate entry '80' for key 'DEMO.PRIMARY' +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-32768 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +insert DEMO values (80, 80); +delete from DEMO where ID = 80; +insert DEMO values (null, 81); +update DEMO set ID = 90 where ID1 = 80; +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (32766, 2147483646); +insert DEMO values (null, 2147483647); +insert DEMO values (null, 2147483647); +ERROR 23000: Duplicate entry '32767' for key 'DEMO.PRIMARY' +insert DEMO values (32768, 2147483647); +ERROR 22003: Out of range value for column 'ID' at row 1 +select *from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-32768 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +82 3 +81 81 +83 3 +32766 2147483646 +32767 2147483647 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` smallint NOT NULL AUTO_INCREMENT, + `ID1` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=32767 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID SMALLINT unsigned PRIMARY KEY auto_increment ,ID1 integer); +insert DEMO values (-1, 3); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (0, 3); +insert DEMO values (0, 3); +insert DEMO values (1, 3); +ERROR 23000: Duplicate entry '1' for key 'DEMO.PRIMARY' +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (20, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (200, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +20 3 +21 3 +22 3 +200 3 +201 3 +202 3 +update DEMO set ID = 210 where ID1 = 3; +ERROR 23000: Duplicate entry '210' for key 'DEMO.PRIMARY' +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +20 3 +21 3 +22 3 +200 3 +201 3 +202 3 +insert DEMO values (210, 210); +delete from DEMO where ID = 210; +insert DEMO values (null, 211); +update DEMO set ID = 230 where ID1 = 210; +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (65534, 65535); +insert DEMO values (null, 65535); +insert DEMO values (null, 65535); +ERROR 23000: Duplicate entry '65535' for key 'DEMO.PRIMARY' +insert DEMO values (65536, 65536); +ERROR 22003: Out of range value for column 'ID' at row 1 +select *from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +20 3 +21 3 +22 3 +200 3 +201 3 +202 3 +212 3 +211 211 +213 3 +65534 65535 +65535 65535 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` smallint unsigned NOT NULL AUTO_INCREMENT, + `ID1` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=65535 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID MEDIUMINT PRIMARY KEY auto_increment ,ID1 integer); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (-100, 1); +insert DEMO values (-100, 1); +ERROR 23000: Duplicate entry '-100' for key 'DEMO.PRIMARY' +insert DEMO values (-8388608, 1); +insert DEMO values (-128, 1); +insert DEMO values (-8388609, 1); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (null, 3); +insert DEMO values (30, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (60, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-8388608 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +update DEMO set ID = 80 where ID1 = 3; +ERROR 23000: Duplicate entry '80' for key 'DEMO.PRIMARY' +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-8388608 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +insert DEMO values (80, 80); +delete from DEMO where ID = 80; +insert DEMO values (null, 81); +update DEMO set ID = 90 where ID1 = 80; +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (8388606, 8388606); +insert DEMO values (null, 8388607); +insert DEMO values (null, 8388607); +ERROR 23000: Duplicate entry '8388607' for key 'DEMO.PRIMARY' +insert DEMO values (8388608, 8388608); +ERROR 22003: Out of range value for column 'ID' at row 1 +select *from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-8388608 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +82 3 +81 81 +83 3 +8388606 8388606 +8388607 8388607 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` mediumint NOT NULL AUTO_INCREMENT, + `ID1` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=8388607 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID MEDIUMINT unsigned PRIMARY KEY auto_increment ,ID1 integer); +insert DEMO values (-1, 3); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (0, 3); +insert DEMO values (0, 3); +insert DEMO values (1, 3); +ERROR 23000: Duplicate entry '1' for key 'DEMO.PRIMARY' +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (20, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (200, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +20 3 +21 3 +22 3 +200 3 +201 3 +202 3 +update DEMO set ID = 210 where ID1 = 3; +ERROR 23000: Duplicate entry '210' for key 'DEMO.PRIMARY' +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +20 3 +21 3 +22 3 +200 3 +201 3 +202 3 +insert DEMO values (210, 210); +delete from DEMO where ID = 210; +insert DEMO values (null, 211); +update DEMO set ID = 230 where ID1 = 210; +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (16777214, 16777214); +insert DEMO values (null, 16777215); +insert DEMO values (null, 16777215); +ERROR 23000: Duplicate entry '16777215' for key 'DEMO.PRIMARY' +insert DEMO values (16777216, 16777216); +ERROR 22003: Out of range value for column 'ID' at row 1 +select *from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +20 3 +21 3 +22 3 +200 3 +201 3 +202 3 +212 3 +211 211 +213 3 +16777214 16777214 +16777215 16777215 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` mediumint unsigned NOT NULL AUTO_INCREMENT, + `ID1` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=16777215 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID integer PRIMARY KEY auto_increment ,ID1 integer); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (-100, 1); +insert DEMO values (-100, 1); +ERROR 23000: Duplicate entry '-100' for key 'DEMO.PRIMARY' +insert DEMO values (-101, 1); +insert DEMO values (null, 3); +insert DEMO values (100, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (200, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-101 1 +4 3 +100 3 +101 3 +102 3 +200 3 +201 3 +202 3 +update DEMO set ID = 2000 where ID1 = 3; +ERROR 23000: Duplicate entry '2000' for key 'DEMO.PRIMARY' +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-101 1 +4 3 +100 3 +101 3 +102 3 +200 3 +201 3 +202 3 +insert DEMO values (2000, 2000); +delete from DEMO where ID = 2000; +insert DEMO values (null, 20001); +update DEMO set ID = 20001 where ID1 = 20001; +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (2147483646, 2147483646); +insert DEMO values (null, 2147483647); +insert DEMO values (null, 2147483647); +ERROR 23000: Duplicate entry '2147483647' for key 'DEMO.PRIMARY' +insert DEMO values (2147483648, 2147483647); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (2147483644, 2147483644); +insert DEMO values (-2147483646, -2147483646); +insert DEMO values (-2147483647, -2147483646); +insert DEMO values (-2147483648, -2147483646); +insert DEMO values (-2147483649, -2147483646); +ERROR 22003: Out of range value for column 'ID' at row 1 +select *from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-101 1 +4 3 +100 3 +101 3 +102 3 +200 3 +201 3 +202 3 +20002 3 +20001 20001 +20003 3 +2147483646 2147483646 +2147483647 2147483647 +2147483644 2147483644 +-2147483646 -2147483646 +-2147483647 -2147483646 +-2147483648 -2147483646 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL AUTO_INCREMENT, + `ID1` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=2147483647 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID integer unsigned PRIMARY KEY auto_increment ,ID1 integer); +insert DEMO values (-1, 3); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (0, 3); +insert DEMO values (0, 3); +insert DEMO values (1, 3); +ERROR 23000: Duplicate entry '1' for key 'DEMO.PRIMARY' +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (100, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (200, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +100 3 +101 3 +102 3 +200 3 +201 3 +202 3 +update DEMO set ID = 2000 where ID1 = 3; +ERROR 23000: Duplicate entry '2000' for key 'DEMO.PRIMARY' +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +100 3 +101 3 +102 3 +200 3 +201 3 +202 3 +insert DEMO values (2000, 2000); +delete from DEMO where ID = 2000; +insert DEMO values (null, 20001); +update DEMO set ID = 20001 where ID1 = 20001; +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (2147483646, 2147483646); +insert DEMO values (null, 2147483647); +insert DEMO values (4294967294, 2147483646); +insert DEMO values (null, 2147483646); +insert DEMO values (null, 2147483646); +ERROR 23000: Duplicate entry '4294967295' for key 'DEMO.PRIMARY' +select *from DEMO; +ID ID1 +1 3 +2 3 +3 3 +4 3 +5 3 +100 3 +101 3 +102 3 +200 3 +201 3 +202 3 +20002 3 +20001 20001 +20003 3 +2147483646 2147483646 +2147483647 2147483647 +4294967294 2147483646 +4294967295 2147483646 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + `ID1` int DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=4294967295 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID BIGINT PRIMARY KEY auto_increment ,ID1 BIGINT); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (-100, 1); +insert DEMO values (-100, 1); +ERROR 23000: Duplicate entry '-100' for key 'DEMO.PRIMARY' +insert DEMO values (-9223372036854775808, 1); +insert DEMO values (-128, 1); +insert DEMO values (-9223372036854775809, 1); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (null, 3); +insert DEMO values (30, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (60, 3); +insert DEMO values (null, 3); +insert DEMO values (null, 3); +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-9223372036854775808 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +update DEMO set ID = 80 where ID1 = 3; +ERROR 23000: Duplicate entry '80' for key 'DEMO.PRIMARY' +select * from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-9223372036854775808 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +insert DEMO values (80, 80); +delete from DEMO where ID = 80; +insert DEMO values (null, 81); +update DEMO set ID = 90 where ID1 = 80; +insert DEMO values (null, 3); +insert DEMO values (null, 3); +insert DEMO values (9223372036854775806, 9223372036854775806); +insert DEMO values (null, 9223372036854775807); +insert DEMO values (null, 9223372036854775807); +ERROR 23000: Duplicate entry '9223372036854775807' for key 'DEMO.PRIMARY' +insert DEMO values (9223372036854775808, 9223372036854775808); +ERROR 22003: Out of range value for column 'ID' at row 1 +select *from DEMO; +ID ID1 +1 3 +2 3 +3 3 +-100 1 +-9223372036854775808 1 +-128 1 +4 3 +30 3 +31 3 +32 3 +60 3 +61 3 +62 3 +82 3 +81 81 +83 3 +9223372036854775806 9223372036854775806 +9223372036854775807 9223372036854775807 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` bigint NOT NULL AUTO_INCREMENT, + `ID1` bigint DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=9223372036854775807 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID BIGINT unsigned PRIMARY KEY auto_increment ,ID1 BIGINT); +insert DEMO values (9223372036854775806, 100); +insert DEMO values (null, 100); +insert DEMO values (18446744073709551200, 200); +insert DEMO values (null, 330); +insert DEMO values (18446744073709551608, 330); +insert DEMO values (null, 330); +insert DEMO values (null, 330); +insert DEMO values (18446744073709551614, 100); +insert DEMO values (null, 320); +ERROR HY000: Failed to read auto-increment value from storage engine +insert DEMO values (null, 320); +ERROR HY000: Failed to read auto-increment value from storage engine +select * from DEMO; +ID ID1 +9223372036854775806 100 +9223372036854775807 100 +18446744073709551200 200 +18446744073709551201 330 +18446744073709551608 330 +18446744073709551609 330 +18446744073709551610 330 +18446744073709551614 100 +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` bigint unsigned NOT NULL AUTO_INCREMENT, + `ID1` bigint DEFAULT NULL, + PRIMARY KEY (`ID`) +) ENGINE=CTC AUTO_INCREMENT=18446744073709551615 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID1 BIGINT); +alter table DEMO add column ID BIGINT unsigned PRIMARY KEY auto_increment; +drop table DEMO; +create table DEMO (ID BIGINT, ID1 BIGINT); +alter table DEMO modify ID BIGINT unsigned PRIMARY KEY auto_increment; +drop table DEMO; +create table DEMO (ID int PRIMARY KEY auto_increment); +insert into DEMO values (null),(null),(null),(null); +select @@last_insert_id; +@@last_insert_id +1 +insert into DEMO values (null),(null),(null),(null); +select @@last_insert_id; +@@last_insert_id +5 +drop table DEMO; +create table t1(col int); +alter table t1 add column col1 int auto_increment unique key; +alter table t1 add primary key(col); +insert into t1 values (0,1); +insert into t1 values (1,1); +ERROR 23000: Duplicate entry '1' for key 't1.col1' +insert into t1 values (2,2); +insert into t1 values (2,3); +ERROR 23000: Duplicate entry '2' for key 't1.PRIMARY' +insert into t1 (col) values (3); +select * from t1; +col col1 +0 1 +2 2 +3 3 +drop table t1; +create table t1(col int); +alter table t1 add column col1 int auto_increment primary key; +alter table t1 add unique key(col); +insert into t1 values (0,1); +insert into t1 values (1,1); +ERROR 23000: Duplicate entry '1' for key 't1.PRIMARY' +insert into t1 values (2,2); +insert into t1 values (2,3); +ERROR 23000: Duplicate entry '2' for key 't1.col' +insert into t1 (col) values (3); +select * from t1; +col col1 +0 1 +2 2 +3 3 +drop table t1; +create table t1(c1 int primary key auto_increment); +insert into t1 values(1); +insert into t1 values(2); +insert into t1 values(4); +insert into t1 values(-1); +insert into t1 values(-3); +insert into t1 values(-2147483648); +insert into t1 values(); +insert into t1 values(); +insert into t1 values(2147483646); +insert into t1 values(); +insert into t1 values(); +ERROR 23000: Duplicate entry '2147483647' for key 't1.PRIMARY' +select * from t1; +c1 +-2147483648 +-3 +-1 +1 +2 +4 +5 +6 +2147483646 +2147483647 +select * from t1 where c1 = 2147483646; +c1 +2147483646 +select * from t1 where c1 = -2147483648; +c1 +-2147483648 +select * from t1 where c1 > 0; +c1 +1 +2 +4 +5 +6 +2147483646 +2147483647 +drop table t1; +create table t1(c1 tinyint AUTO_INCREMENT,c2 int, primary key(c1,c2) ); +insert into t1 values(127 ,1); +INSERT INTO t1(c2) VALUES(33); +INSERT INTO t1(c2) VALUES(34); +INSERT INTO t1(c2) VALUES(35); +INSERT INTO t1 VALUES(-1, -1); +INSERT INTO t1(c2) VALUES(36); +select * from t1; +c1 c2 +-1 -1 +127 1 +127 33 +127 34 +127 35 +127 36 +drop table t1; +create table DEMO (ID BIGINT unsigned PRIMARY KEY auto_increment); +insert DEMO values (-1); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (-2); +ERROR 22003: Out of range value for column 'ID' at row 1 +insert DEMO values (0); +insert DEMO values (); +insert DEMO values (); +insert DEMO values (2); +ERROR 23000: Duplicate entry '2' for key 'DEMO.PRIMARY' +select * from DEMO; +ID +1 +2 +3 +insert DEMO values (9223372036854775806); +insert DEMO values (null); +insert DEMO values (18446744073709551200); +insert DEMO values (null); +insert DEMO values (null); +insert DEMO values (null); +insert DEMO values (18446744073709551614); +insert DEMO values (null); +ERROR HY000: Failed to read auto-increment value from storage engine +drop table DEMO; +create table DEMO (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), purchased DATE, KEY(id)); +insert into DEMO (name, purchased) values ("Jack","2022-01-01"); +insert into DEMO (name, purchased) values ("Amy","2022-01-01"); +insert into DEMO (name, purchased) values ("Echo","2022-01-10"); +insert into DEMO (name, purchased) values ("Jack","2022-01-11"); +insert into DEMO (name, purchased) values ("Jack","2022-01-13"); +insert into DEMO (name, purchased) values ("Amy","2022-01-13"); +insert into DEMO (name, purchased) values ("Amy","2022-01-13"); +select * from DEMO; +id name purchased +1 Jack 2022-01-01 +2 Amy 2022-01-01 +3 Echo 2022-01-10 +4 Jack 2022-01-11 +5 Jack 2022-01-13 +6 Amy 2022-01-13 +7 Amy 2022-01-13 +select * from DEMO where id = 1; +id name purchased +1 Jack 2022-01-01 +select * from DEMO where name = "Amy" and purchased = "2022-01-01"; +id name purchased +2 Amy 2022-01-01 +insert into DEMO values(10,"Candy","2023-05-01"); +insert into DEMO (name, purchased) values ("Jack","2022-01-13"); +update DEMO SET id = 11 where name = "Candy"; +select * from DEMO; +id name purchased +1 Jack 2022-01-01 +2 Amy 2022-01-01 +3 Echo 2022-01-10 +4 Jack 2022-01-11 +5 Jack 2022-01-13 +6 Amy 2022-01-13 +7 Amy 2022-01-13 +11 Candy 2023-05-01 +11 Jack 2022-01-13 +drop table DEMO; +create table DEMO (id INT NOT NULL AUTO_INCREMENT UNIQUE, name VARCHAR(50), KEY(id)); +insert into DEMO (name) values ("Jack"); +insert into DEMO (name) values ("Zoey"); +update DEMO SET id = 5 where name = "Zoey"; +insert into DEMO (name) values ("Maya"); +select * from DEMO; +id name +1 Jack +5 Zoey +6 Maya +select * from DEMO where name = "Maya"; +id name +6 Maya +drop table DEMO; +create table DEMO(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), purchased DATE, key(id, name)); +insert into DEMO (name, purchased) values ("Jack","2022-01-01"); +insert into DEMO (name, purchased) values ("Bob","2022-01-01"); +insert into DEMO (name, purchased) values ("Amy","2022-01-01"); +insert into DEMO (name, purchased) values ("Jack","2022-01-05"); +insert into DEMO (name, purchased) values ("Amy","2022-01-05"); +insert into DEMO (name, purchased) values (null,null); +select * from DEMO; +id name purchased +1 Jack 2022-01-01 +2 Bob 2022-01-01 +3 Amy 2022-01-01 +4 Jack 2022-01-05 +5 Amy 2022-01-05 +6 NULL NULL +select * from DEMO where name = "Jack"; +id name purchased +1 Jack 2022-01-01 +4 Jack 2022-01-05 +select * from DEMO where id > 0; +id name purchased +1 Jack 2022-01-01 +2 Bob 2022-01-01 +3 Amy 2022-01-01 +4 Jack 2022-01-05 +5 Amy 2022-01-05 +6 NULL NULL +select * from DEMO where name = "Amy" and id = 5; +id name purchased +5 Amy 2022-01-05 +select * from DEMO where purchased between "2022-01-03" and "2022-01-06"; +id name purchased +4 Jack 2022-01-05 +5 Amy 2022-01-05 +update DEMO SET name = "Eric" where name = "Jack"; +select * from DEMO; +id name purchased +1 Eric 2022-01-01 +2 Bob 2022-01-01 +3 Amy 2022-01-01 +4 Eric 2022-01-05 +5 Amy 2022-01-05 +6 NULL NULL +drop table DEMO; +CREATE TABLE DEMO(c1 DOUBLE AUTO_INCREMENT KEY, c2 CHAR(10))ROW_FORMAT=REDUNDANT,ENGINE=CTC; +Warnings: +Warning 3856 AUTO_INCREMENT support for FLOAT/DOUBLE columns is deprecated and will be removed in a future release. Consider removing AUTO_INCREMENT from column 'c1'. +insert into DEMO values (0.1, "aaa"); +insert into DEMO values (0.5, "bbb"); +insert into DEMO values (0.6, "bbb"); +insert into DEMO values (10.5, "sdss"); +insert into DEMO values (null, "dssd"); +select * from DEMO; +c1 c2 +1 aaa +2 bbb +0.6 bbb +10.5 sdss +11 dssd +insert into DEMO values (13.5, "sdss"); +insert into DEMO values (null, "dssd"); +select * from DEMO; +c1 c2 +1 aaa +2 bbb +0.6 bbb +10.5 sdss +11 dssd +13.5 sdss +15 dssd +insert into DEMO values (15.9, "sdss"); +insert into DEMO values (null, "dssd"); +select * from DEMO; +c1 c2 +1 aaa +2 bbb +0.6 bbb +10.5 sdss +11 dssd +13.5 sdss +15 dssd +15.9 sdss +17 dssd +select * from DEMO where c1 = 1; +c1 c2 +1 aaa +update DEMO set c1 =10 where c1=15; +delete from DEMO where c1 = 1; +insert into DEMO values (null, "sdss"); +select * from DEMO; +c1 c2 +2 bbb +0.6 bbb +10.5 sdss +11 dssd +13.5 sdss +10 dssd +15.9 sdss +17 dssd +18 sdss +drop table DEMO; +CREATE TABLE DEMO(a FLOAT AUTO_INCREMENT KEY) ENGINE = CTC; +Warnings: +Warning 3856 AUTO_INCREMENT support for FLOAT/DOUBLE columns is deprecated and will be removed in a future release. Consider removing AUTO_INCREMENT from column 'a'. +insert into DEMO values (null); +insert into DEMO values (null); +insert into DEMO values (3.1); +insert into DEMO values (null); +insert into DEMO values (3.9); +select * from DEMO; +a +1 +2 +3.1 +3.9 +4 +insert into DEMO values (10.5); +insert into DEMO values (null); +select * from DEMO; +a +1 +2 +3.1 +3.9 +4 +10.5 +11 +insert into DEMO values (11.5); +insert into DEMO values (null); +select * from DEMO; +a +1 +2 +3.1 +3.9 +4 +10.5 +11 +11.5 +13 +select * from DEMO where a = 1; +a +1 +update DEMO set a =10 where a =3.1; +delete from DEMO where a = 1; +insert into DEMO values (null); +select * from DEMO; +a +2 +3.1 +3.9 +4 +10.5 +11 +11.5 +13 +14 +drop table DEMO; +CREATE TABLE DEMO(ID int); +alter table DEMO add column ID1 double PRIMARY KEY auto_increment; +Warnings: +Warning 3856 AUTO_INCREMENT support for FLOAT/DOUBLE columns is deprecated and will be removed in a future release. Consider removing AUTO_INCREMENT from column 'ID1'. +drop table DEMO; +CREATE TABLE DEMO(ID int); +alter table DEMO add column ID1 float PRIMARY KEY auto_increment; +Warnings: +Warning 3856 AUTO_INCREMENT support for FLOAT/DOUBLE columns is deprecated and will be removed in a future release. Consider removing AUTO_INCREMENT from column 'ID1'. +drop table DEMO; +create table DEMO (ID int unsigned PRIMARY KEY auto_increment); +alter table DEMO drop primary key, add unique(ID); +alter table DEMO drop key ID, add key(ID); +drop table DEMO; +CREATE TABLE DEMO (ID int(5) unsigned NOT NULL auto_increment, PRIMARY KEY (ID)); +Warnings: +Warning 1681 Integer display width is deprecated and will be removed in a future release. +CREATE UNIQUE INDEX test on DEMO (ID); +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`ID`), + UNIQUE KEY `test` (`ID`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +DROP INDEX test ON DEMO; +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`ID`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table DEMO; +create table DEMO (ID int unsigned PRIMARY KEY auto_increment); +alter table DEMO drop primary key, add key(ID); +drop table DEMO; +create table DEMO (ID int unsigned PRIMARY KEY auto_increment); +alter table DEMO drop primary key; +ERROR 42000: Incorrect table definition; there can be only one auto column and it must be defined as a key +drop table DEMO; +CREATE TABLE DEMO (f1 INT, f2 INT, f3 INT); +ALTER TABLE DEMO ADD CONSTRAINT PRIMARY KEY (f1); +ALTER TABLE DEMO DROP CONSTRAINT `primary`, DROP COLUMN f3; +ALTER TABLE DEMO ADD CONSTRAINT PRIMARY KEY (f1); +drop table DEMO; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_cascade.result b/mysql-test/suite/tianchi/r/ctc_ddl_cascade.result new file mode 100644 index 0000000..0612805 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_cascade.result @@ -0,0 +1,1108 @@ +CREATE DATABASE IF NOT EXISTS CASCADE_TEST; +USE CASCADE_TEST; +CREATE TABLE t1 (a INT NOT NULL UNIQUE, b INT NOT NULL); +CREATE TABLE t2 (a INT KEY, b INT, FOREIGN KEY (b) REFERENCES t1(a) ON DELETE CASCADE ON UPDATE CASCADE); +insert into t1 values(1,1); +insert into t2 values(1,1); +insert into t1 values(2,2); +insert into t2 values(2,2); +update t1 set a = 5 where a = 1; +select * from t1; +a b +5 1 +2 2 +select * from t2; +a b +1 5 +2 2 +delete from t1 where b = 2; +select * from t1; +a b +5 1 +select * from t2; +a b +1 5 +CREATE TABLE t3 (a INT NOT NULL UNIQUE, b INT NOT NULL); +CREATE TABLE t4 (a INT KEY, b INT, FOREIGN KEY (b) REFERENCES t3(a) ON DELETE SET NULL ON UPDATE SET NULL); +insert into t3 values(1,1); +insert into t4 values(1,1); +insert into t3 values(2,2); +insert into t4 values(2,2); +update t3 set a = 5 where a = 1; +select * from t3; +a b +5 1 +2 2 +select * from t4; +a b +1 NULL +2 2 +delete from t3 where b = 2; +select * from t3; +a b +5 1 +select * from t4; +a b +1 NULL +2 NULL +CREATE TABLE TT1(A INT PRIMARY KEY); +CREATE TABLE TT2(A INT UNIQUE, B INT); +ALTER TABLE TT2 ADD CONSTRAINT FK_CASCADE FOREIGN KEY(B) REFERENCES TT1 (A) ON DELETE CASCADE ON UPDATE CASCADE; +insert into TT1 values(1),(2),(3),(4),(5); +insert into TT2 values(1,1),(2,2),(3,3),(4,4),(5,5); +select * from TT1; +A +1 +2 +3 +4 +5 +select * from TT2; +A B +1 1 +2 2 +3 3 +4 4 +5 5 +delete from TT1 where A = 1; +select * from TT1; +A +2 +3 +4 +5 +select * from TT2; +A B +2 2 +3 3 +4 4 +5 5 +update TT1 set A = 12 where A = 2; +select * from TT1; +A +3 +4 +5 +12 +select * from TT2; +A B +2 12 +3 3 +4 4 +5 5 +set foreign_key_checks = 1; +drop table if exists t1,t2; +create table t1 (f1 int unique, f2 int, f3 float DEFAULT 0.0); +INSERT INTO t1 VALUES (1, 80, 0.0); +INSERT INTO t1 VALUES (2, 81, 0.0); +create table t2 (f1 int, f2 int, f3 float DEFAULT 0.0, constraint c1 foreign key (f2) references t1(f1) on update cascade); +INSERT INTO t2 VALUES (51, 1, 0.0); +INSERT INTO t2 VALUES (52, 2, 0.0); +UPDATE t1 SET f1 = null WHERE f1 = 1; +SELECT * FROM t1; +f1 f2 f3 +NULL 80 0 +2 81 0 +SELECT * FROM t2; +f1 f2 f3 +51 NULL 0 +52 2 0 +set foreign_key_checks = 1; +drop table if exists t1,t2; +create table t1 (f1 float, f2 int, f3 float DEFAULT 0.0, unique key(f1, f2)); +INSERT INTO t1 VALUES (1, 80, 0.0); +INSERT INTO t1 VALUES (2, 81, 0.0); +create table t2 (f1 int, f2 float, f3 int, constraint foreign key (f2, f3) references t1(f1, f2) on update cascade); +INSERT INTO t2 VALUES (12, 1, 80); +INSERT INTO t2 VALUES (22, 2, 81); +UPDATE t1 SET f1 = 100, f2 = null WHERE f1 = 1; +SELECT * FROM t1; +f1 f2 f3 +100 NULL 0 +2 81 0 +SELECT * FROM t2; +f1 f2 f3 +12 100 NULL +22 2 81 +set foreign_key_checks = 1; +drop table if exists t1,t2; +create table t1 (f1 float, f2 int, f3 varchar(20), f4 varchar(100), unique key(f1, f2, f3)); +INSERT INTO t1 VALUES (1, 80, 'ak47', 'mp7'); +INSERT INTO t1 VALUES (2, 81, 'xm8', 'an94'); +create table t2 (f1 int, f2 float, f3 int, f4 varchar(20), constraint foreign key (f2, f3, f4) references t1(f1, f2, f3) on update cascade); +INSERT INTO t2 VALUES (12, 1, 80, 'ak47'); +INSERT INTO t2 VALUES (22, 2, 81, 'xm8'); +UPDATE t1 SET f1 = 100, f2 = null, f3 = null WHERE f1 = 1; +SELECT * FROM t1; +f1 f2 f3 f4 +100 NULL NULL mp7 +2 81 xm8 an94 +SELECT * FROM t2; +f1 f2 f3 f4 +12 100 NULL NULL +22 2 81 xm8 +drop table if exists t1,t2; +create table t1 (f1 int primary key, f2 int); +create table t2 (f1 int, f2 int, constraint c1 foreign key (f2) references t1(f1)); +INSERT INTO t1 VALUES (1, 80); +INSERT INTO t1 VALUES (2, 81); +INSERT INTO t2 VALUES (51, 1); +INSERT INTO t2 VALUES (52, 2); +set foreign_key_checks = 1; +delete ignore from t1; +Warnings: +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(CASCADE_TEST.t2)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(CASCADE_TEST.t2)) +select * from t1; +f1 f2 +1 80 +2 81 +select * from t2; +f1 f2 +51 1 +52 2 +drop table t2; +drop table t1; +create table t1 (f1 int primary key, f2 int); +create table t2 (f1 int, f2 int, constraint c1 foreign key (f2) references t1(f1)); +INSERT INTO t1 VALUES (1, 80); +INSERT INTO t1 VALUES (2, 81); +INSERT INTO t2 VALUES (51, 1); +INSERT INTO t2 VALUES (52, 2); +set foreign_key_checks = 1; +delete from t1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(CASCADE_TEST.t2)) +select * from t1; +f1 f2 +1 80 +2 81 +select * from t2; +f1 f2 +51 1 +52 2 +drop table t2; +drop table t1; +create table t1 (f1 int primary key, f2 int); +create table t2 (f1 int, f2 int, constraint c1 foreign key (f2) references t1(f1) on delete cascade); +INSERT INTO t1 VALUES (1, 80); +INSERT INTO t1 VALUES (2, 81); +INSERT INTO t2 VALUES (51, 1); +INSERT INTO t2 VALUES (52, 2); +set foreign_key_checks = 0; +DELETE FROM t1; +select * from t1; +f1 f2 +select * from t2; +f1 f2 +51 1 +52 2 +drop table t2; +drop table t1; +create table t1 (f1 int primary key, f2 int); +create table t2 (f1 int, f2 int, constraint c1 foreign key (f2) references t1(f1) on delete cascade); +INSERT INTO t1 VALUES (1, 80); +INSERT INTO t1 VALUES (2, 81); +INSERT INTO t2 VALUES (51, 1); +INSERT INTO t2 VALUES (52, 2); +set foreign_key_checks = 0; +delete ignore from t1; +select * from t1; +f1 f2 +select * from t2; +f1 f2 +51 1 +52 2 +drop table t2; +drop table t1; +create table t1 (f1 int primary key, f2 int); +create table t2 (f1 int, f2 int, constraint c1 foreign key (f2) references t1(f1) on delete cascade); +INSERT INTO t1 VALUES (1, 80); +INSERT INTO t1 VALUES (2, 81); +INSERT INTO t2 VALUES (51, 1); +INSERT INTO t2 VALUES (52, 2); +set foreign_key_checks = 1; +DELETE FROM t1; +select * from t1; +f1 f2 +select * from t2; +f1 f2 +drop table t2; +drop table t1; +create table t1 (f1 int primary key, f2 int); +create table t2 (f1 int, f2 int, constraint c1 foreign key (f2) references t1(f1) on delete cascade); +INSERT INTO t1 VALUES (1, 80); +INSERT INTO t1 VALUES (2, 81); +INSERT INTO t2 VALUES (51, 1); +INSERT INTO t2 VALUES (52, 2); +set foreign_key_checks = 1; +DELETE IGNORE FROM t1; +select * from t1; +f1 f2 +select * from t2; +f1 f2 +drop table t2; +drop table t1; +SET SESSION foreign_key_checks=0; +SET NAMES utf8; +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +CREATE TABLE `t1` ( +a INT, +b VARCHAR(512), +UNIQUE KEY (a, b) +) charset latin1; +CREATE TABLE `t2` ( +id INT, +a INT, +b VARCHAR(512), +PRIMARY KEY (id), +UNIQUE KEY `unqq` (a, b), +FOREIGN KEY (a, b) REFERENCES `t1` (a, b) +ON DELETE CASCADE ON UPDATE CASCADE +) charset latin1; +INSERT INTO `t1` VALUES (1, 'bbb'); +INSERT INTO `t2` VALUES (100, 1, 'bbb'), (101, 3, 'bbb'); +SET SESSION foreign_key_checks=1; +UPDATE IGNORE `t1` SET a = 3; +ERROR 23000: Foreign key constraint would lead to a duplicate entry in child table +drop table t1,t2; +SET SESSION foreign_key_checks=0; +SET NAMES utf8; +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +CREATE TABLE `t1` ( +a INT, +b VARCHAR(512), +UNIQUE KEY (a, b) +) charset latin1; +CREATE TABLE `t2` ( +id INT, +a INT, +b VARCHAR(512), +PRIMARY KEY (id), +UNIQUE KEY `unqq` (a, b), +FOREIGN KEY (a, b) REFERENCES `t1` (a, b) +ON DELETE CASCADE ON UPDATE CASCADE +) charset latin1; +INSERT INTO `t1` VALUES (1, 'bbb'); +INSERT INTO `t2` VALUES (100, 1, 'bbb'), (101, 3, 'bbb'); +SET SESSION foreign_key_checks=1; +UPDATE IGNORE `t1` SET a = 3; +ERROR 23000: Foreign key constraint would lead to a duplicate entry in child table +drop table t1,t2; +SET SESSION foreign_key_checks=0; +SET NAMES utf8; +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +CREATE TABLE `t1` ( +a INT, +b VARCHAR(512), +UNIQUE KEY (a, b) +) charset latin1; +CREATE TABLE `t2` ( +id INT, +a INT, +b VARCHAR(512), +PRIMARY KEY (id), +UNIQUE KEY `unqq` (a, b), +FOREIGN KEY (a, b) REFERENCES `t1` (a, b) +ON DELETE CASCADE ON UPDATE CASCADE +) charset latin1; +INSERT INTO `t1` VALUES (1, 'bbb'), (3, 'bbb'); +INSERT INTO `t2` VALUES (100, 1, 'bbb'); +SET SESSION foreign_key_checks=1; +UPDATE IGNORE `t1` SET a = 3; +Warnings: +Warning 1062 Duplicate entry '3-bbb' for key 't1.a' +drop table t1,t2; +drop table if exists t4; +drop table if exists t3; +create table t1(a int primary key); +create table t2(a int primary key); +create table t3(a int, constraint fk_1 foreign key(a) references t1(a) on update cascade, constraint fk_2 foreign key(a) references t2(a) on update cascade); +insert into t1 values(1); +insert into t2 values(1); +insert into t3 values(1); +update t1 set a = 2; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails +update t2 set a = 2; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails +drop table t1,t2,t3; +DROP TABLE IF EXISTS T1; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +DROP TABLE IF EXISTS T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A INT UNIQUE); +CREATE TABLE T2(A INT UNIQUE NOT NULL); +ALTER TABLE T2 ADD FOREIGN KEY FF(A) REFERENCES T1(A) ON UPDATE CASCADE; +INSERT INTO T1 VALUES(1); +INSERT INTO T2 VALUES(1); +UPDATE T1 SET A = NULL WHERE A = 1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(CASCADE_TEST.T2)) +DROP TABLE T1,T2; +drop table if exists t1; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +create table t1( +id int primary key, +pid int, +index(pid), +foreign key(pid) references t1(id) on delete cascade) engine=CTC; +insert into t1 values(0,0),(1,0),(2,1),(3,2),(4,3),(5,4),(6,5),(7,6), +(8,7),(9,8),(10,9),(11,10),(12,11),(13,12),(14,13),(15,14); +delete from t1 where id = 0; +ERROR HY000: Foreign key cascade delete/update exceeds max depth of 15 +drop table t1; +DROP TABLE IF EXISTS T1; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +DROP TABLE IF EXISTS T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T2' +DROP TABLE IF EXISTS T3; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T3' +DROP TABLE IF EXISTS T4; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T4' +DROP TABLE IF EXISTS T5; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T5' +DROP TABLE IF EXISTS T6; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T6' +DROP TABLE IF EXISTS T7; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T7' +DROP TABLE IF EXISTS T8; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T8' +DROP TABLE IF EXISTS T9; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T9' +DROP TABLE IF EXISTS T10; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T10' +DROP TABLE IF EXISTS T11; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T11' +DROP TABLE IF EXISTS T12; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T12' +DROP TABLE IF EXISTS T13; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T13' +DROP TABLE IF EXISTS T14; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T14' +DROP TABLE IF EXISTS T15; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T15' +DROP TABLE IF EXISTS T16; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T16' +CREATE TABLE T1(A INT UNIQUE); +CREATE TABLE T2(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T1(A) ON UPDATE CASCADE); +CREATE TABLE T3(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T2(A) ON UPDATE CASCADE); +CREATE TABLE T4(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T3(A) ON UPDATE CASCADE); +CREATE TABLE T5(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T4(A) ON UPDATE CASCADE); +CREATE TABLE T6(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T5(A) ON UPDATE CASCADE); +CREATE TABLE T7(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T6(A) ON UPDATE CASCADE); +CREATE TABLE T8(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T7(A) ON UPDATE CASCADE); +CREATE TABLE T9(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T8(A) ON UPDATE CASCADE); +CREATE TABLE T10(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T9(A) ON UPDATE CASCADE); +CREATE TABLE T11(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T10(A) ON UPDATE CASCADE); +CREATE TABLE T12(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T11(A) ON UPDATE CASCADE); +CREATE TABLE T13(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T12(A) ON UPDATE CASCADE); +CREATE TABLE T14(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T13(A) ON UPDATE CASCADE); +CREATE TABLE T15(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T14(A) ON UPDATE CASCADE); +CREATE TABLE T16(A INT UNIQUE, FOREIGN KEY(A) REFERENCES T15(A) ON UPDATE CASCADE); +INSERT INTO T1 VALUES(1); +INSERT INTO T2 VALUES(1); +INSERT INTO T3 VALUES(1); +INSERT INTO T4 VALUES(1); +INSERT INTO T5 VALUES(1); +INSERT INTO T6 VALUES(1); +INSERT INTO T7 VALUES(1); +INSERT INTO T8 VALUES(1); +INSERT INTO T9 VALUES(1); +INSERT INTO T10 VALUES(1); +INSERT INTO T11 VALUES(1); +INSERT INTO T12 VALUES(1); +INSERT INTO T13 VALUES(1); +INSERT INTO T14 VALUES(1); +INSERT INTO T15 VALUES(1); +INSERT INTO T16 VALUES(1); +UPDATE T1 SET A = 2 WHERE A = 1; +ERROR HY000: Foreign key cascade delete/update exceeds max depth of 15 +drop table T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16; +DROP TABLE IF EXISTS T1; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +DROP TABLE IF EXISTS T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5) UNIQUE); +CREATE TABLE T2(A DECIMAL(19,2) UNIQUE); +ALTER TABLE T2 ADD FOREIGN KEY FF(A) REFERENCES T1(A) ON UPDATE CASCADE; +SET foreign_key_checks = 0; +insert into T1 values(1); +insert into T2 values(1); +SET foreign_key_checks = 1; +update T1 set a = 1.2345678; +Warnings: +Note 1265 Data truncated for column 'A' at row 1 +select * from T1; +A +1.23457 +select * from T2; +A +1.00 +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5) UNIQUE); +CREATE TABLE T2(A DECIMAL(20,3) UNIQUE); +ALTER TABLE T2 ADD FOREIGN KEY FF(A) REFERENCES T1(A) ON DELETE SET NULL; +SET foreign_key_checks = 0; +insert into T1 values(1); +insert into T2 values(1); +SET foreign_key_checks = 1; +DELETE FROM T1 WHERE A = 1; +SELECT * FROM T1; +A +SELECT * FROM T2; +A +1.000 +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5) UNIQUE); +CREATE TABLE T2(A DECIMAL(18,5) UNIQUE); +ALTER TABLE T2 ADD FOREIGN KEY FF(A) REFERENCES T1(A) ON DELETE SET NULL; +SET foreign_key_checks = 0; +insert into T1 values(1); +insert into T2 values(1); +SET foreign_key_checks = 1; +DELETE FROM T1 WHERE A = 1; +SELECT * FROM T1; +A +SELECT * FROM T2; +A +1.00000 +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5) UNIQUE); +CREATE TABLE T2(A DECIMAL(20,3) UNIQUE); +ALTER TABLE T2 ADD FOREIGN KEY FF(A) REFERENCES T1(A) ON DELETE CASCADE; +SET foreign_key_checks = 0; +insert into T1 values(1); +insert into T2 values(1); +SET foreign_key_checks = 1; +DELETE FROM T1 WHERE A = 1; +SELECT * FROM T1; +A +SELECT * FROM T2; +A +1.000 +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5) UNIQUE); +CREATE TABLE T2(A DECIMAL(18,5) UNIQUE); +ALTER TABLE T2 ADD FOREIGN KEY FF(A) REFERENCES T1(A) ON DELETE CASCADE; +SET foreign_key_checks = 0; +insert into T1 values(1); +insert into T2 values(1); +SET foreign_key_checks = 1; +DELETE FROM T1 WHERE A = 1; +SELECT * FROM T1; +A +SELECT * FROM T2; +A +1.00000 +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5) UNIQUE); +CREATE TABLE T2(A DECIMAL(20,3) UNIQUE); +ALTER TABLE T2 ADD FOREIGN KEY FF(A) REFERENCES T1(A) ON UPDATE CASCADE; +SET foreign_key_checks = 0; +insert into T1 values(1); +insert into T2 values(1); +SET foreign_key_checks = 1; +UPDATE T1 set A = 1.2345678; +Warnings: +Note 1265 Data truncated for column 'A' at row 1 +SELECT * FROM T1; +A +1.23457 +SELECT * FROM T2; +A +1.000 +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5) UNIQUE); +CREATE TABLE T2(A DECIMAL(18,5) UNIQUE); +ALTER TABLE T2 ADD FOREIGN KEY FF(A) REFERENCES T1(A) ON UPDATE CASCADE; +SET foreign_key_checks = 0; +insert into T1 values(1); +insert into T2 values(1); +SET foreign_key_checks = 1; +UPDATE T1 set A = 1.2345678; +Warnings: +Note 1265 Data truncated for column 'A' at row 1 +SELECT * FROM T1; +A +1.23457 +SELECT * FROM T2; +A +1.00000 +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5) UNIQUE); +CREATE TABLE T2(A DECIMAL(20,3) UNIQUE); +ALTER TABLE T2 ADD FOREIGN KEY FF(A) REFERENCES T1(A) ON UPDATE SET NULL; +SET foreign_key_checks = 0; +insert into T1 values(1); +insert into T2 values(1); +SET foreign_key_checks = 1; +UPDATE T1 set A = 1.2345678; +Warnings: +Note 1265 Data truncated for column 'A' at row 1 +SELECT * FROM T1; +A +1.23457 +SELECT * FROM T2; +A +1.000 +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5) UNIQUE); +CREATE TABLE T2(A DECIMAL(18,5) UNIQUE); +ALTER TABLE T2 ADD FOREIGN KEY FF(A) REFERENCES T1(A) ON UPDATE SET NULL; +SET foreign_key_checks = 0; +insert into T1 values(1); +insert into T2 values(1); +SET foreign_key_checks = 1; +UPDATE T1 set A = 1.2345678; +Warnings: +Note 1265 Data truncated for column 'A' at row 1 +SELECT * FROM T1; +A +1.23457 +SELECT * FROM T2; +A +1.00000 +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5), B DECIMAL(20,5), UNIQUE KEY(A, B)); +CREATE TABLE T2(A DECIMAL(18,5), B DECIMAL(20,5)); +ALTER TABLE T2 ADD FOREIGN KEY FF(A, B) REFERENCES T1(A, B) ON DELETE SET NULL; +SET foreign_key_checks = 0; +insert into T1 values(1, 1); +insert into T2 values(1, 1); +SET foreign_key_checks = 1; +DELETE FROM T1 WHERE A = 1; +SELECT * FROM T1; +A B +SELECT * FROM T2; +A B +1.00000 1.00000 +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5), B DECIMAL(20,5), UNIQUE KEY(A, B)); +CREATE TABLE T2(A DECIMAL(20,5), B DECIMAL(20,5)); +ALTER TABLE T2 ADD FOREIGN KEY FF(A, B) REFERENCES T1(A, B) ON DELETE SET NULL; +SET foreign_key_checks = 0; +insert into T1 values(1, 1); +insert into T2 values(1, 1); +SET foreign_key_checks = 1; +DELETE FROM T1 WHERE A = 1; +SELECT * FROM T1; +A B +SELECT * FROM T2; +A B +NULL NULL +DROP TABLE T1,T2; +DROP TABLE IF EXISTS T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +CREATE TABLE T1(A DECIMAL(20,5), B DECIMAL(20,5), UNIQUE KEY(A, B)); +CREATE TABLE T2(A DECIMAL(20,3), B DECIMAL(20,5)); +ALTER TABLE T2 ADD FOREIGN KEY FF(A, B) REFERENCES T1(A, B) ON DELETE SET NULL; +SET foreign_key_checks = 0; +insert into T1 values(1, 1); +insert into T2 values(1, 1); +SET foreign_key_checks = 1; +DELETE FROM T1 WHERE A = 1; +SELECT * FROM T1; +A B +SELECT * FROM T2; +A B +1.000 1.00000 +DROP TABLE T1,T2; +drop table if exists t1, t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +create table t1(id FLOAT(11,5) primary key); +Warnings: +Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release. +create table t2(id FLOAT(11,2) primary key, CONSTRAINT fk_1 FOREIGN KEY (id) REFERENCES t1 (id) on delete set default on update cascade); +Warnings: +Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release. +insert into t1 values(1); +insert into t2 values(1); +select * from t1; +id +1.00000 +select * from t2; +id +1.00 +drop table t1,t2; +drop table if exists f1,c1; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.f1' +Note 1051 Unknown table 'CASCADE_TEST.c1' +create table f1(a1 char(1) primary key DEFAULT ''); +create table c1(a1 char(1) DEFAULT '', CONSTRAINT fk_1 FOREIGN KEY (a1) REFERENCES f1 (a1) on update cascade); +insert into f1(a1) values(1); +insert into c1(a1) values(1); +update f1 set a1 = '' where a1 = 1; +select * from f1; +a1 + +select * from c1; +a1 + +drop table f1,c1; +drop table if exists f1,c1; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.f1' +Note 1051 Unknown table 'CASCADE_TEST.c1' +create table f1(a1 varchar(20) primary key); +create table c1(a1 varchar(20), CONSTRAINT fk_1 FOREIGN KEY (a1) REFERENCES f1 (a1) on update cascade); +insert into f1(a1) values('sssa'); +insert into c1(a1) values('sssa'); +update f1 set a1 = 'cddddsd'; +select * from f1; +a1 +cddddsd +select * from c1; +a1 +cddddsd +update f1 set a1 = 'daaass'; +select * from f1; +a1 +daaass +select * from c1; +a1 +daaass +drop table f1,c1; +drop table if exists t1,t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +create table t1(a int NOT NULL AUTO_INCREMENT primary key, b bit(7) ,unique(b)); +create table t2(c varchar(20), d bit(5) not null, foreign key(d) references t1(b) on update cascade); +insert into t1(b) values(b'1'); +insert into t2 values('jack', b'1'); +update t1 set b = b'1111111'; +select * from t1; +a b +1  +select * from t2; +c d +jack  +drop table t1,t2; +drop table if exists t1,t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +create table t1(a int NOT NULL AUTO_INCREMENT primary key, b bit(9) ,unique(b)); +create table t2(c varchar(20), d bit(8) not null, foreign key(d) references t1(b) on update cascade); +insert into t1(b) values(b'1'); +insert into t2 values('jack', b'1'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(CASCADE_TEST.t1)) +drop table t1,t2; +drop table if exists t1,t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +create table t1(a int,b enum('1',''),unique(b)); +create table t2(c varchar(20), d enum('1','a','*') not null default ('*'), foreign key(d) references t1(b) on update cascade); +insert into t1 values(1,'1'); +insert into t2 values('bob','1'); +select * from t1; +a b +1 1 +select * from t2; +c d +bob 1 +drop table t1,t2; +drop table if exists T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +create table T1(id decimal(20, 5) primary key); +create table T2(id decimal(20, 3), constraint FK_ID foreign key (id) references T1(id)); +insert into T1 values(7); +insert into T2 values(7); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(CASCADE_TEST.T1)) +drop table T1,T2; +drop table if exists T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +create table T1(id decimal(20, 5) unique key); +create table T2(id decimal(20, 3), constraint FK_ID foreign key (id) references T1(id)); +insert into T2 values(NULL); +select * from T2; +id +NULL +drop table T1,T2; +drop table if exists T1,T2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.T1' +Note 1051 Unknown table 'CASCADE_TEST.T2' +set foreign_key_checks = 0; +create table T1(id decimal(20, 5) primary key); +create table T2(id decimal(20, 3), constraint FK_ID foreign key (id) references T1(id)); +insert into T1 values(7); +insert into T2 values(7); +select * from T1; +id +7.00000 +select * from T2; +id +7.000 +set foreign_key_checks = 1; +drop table T1,T2; +drop table if exists t1,t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +CREATE TABLE t1 ( +datetime DATETIME(6), +UNIQUE KEY datetime (datetime) +); +CREATE TABLE t2 ( +datetime DATETIME(5), +CONSTRAINT fk_datetime FOREIGN KEY (datetime) REFERENCES t1(datetime) +); +insert into t1 values('2018-01-18 00:00:00'); +insert into t2 values('2018-01-18 00:00:00'); +select * from t1; +datetime +2018-01-18 00:00:00.000000 +select * from t2; +datetime +2018-01-18 00:00:00.00000 +drop table t1,t2; +drop table if exists t1,t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +CREATE TABLE t1 ( +datetime DATETIME(5), +UNIQUE KEY datetime (datetime) +); +CREATE TABLE t2 ( +datetime DATETIME(4), +CONSTRAINT fk_datetime FOREIGN KEY (datetime) REFERENCES t1(datetime) +); +insert into t1 values('2018-01-18 00:00:00'); +insert into t2 values('2018-01-18 00:00:00'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(CASCADE_TEST.t1)) +drop table t1,t2; +drop table if exists t1,t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +CREATE TABLE t1 ( +timestamp TIMESTAMP(6), +UNIQUE KEY timestamp (timestamp) +); +CREATE TABLE t2 ( +timestamp TIMESTAMP(5), +CONSTRAINT fk_timestamp FOREIGN KEY (timestamp) REFERENCES t1(timestamp) +); +insert into t1 values('2018-01-18 00:00:00'); +insert into t2 values('2018-01-18 00:00:00'); +select * from t1; +timestamp +2018-01-18 00:00:00.000000 +select * from t2; +timestamp +2018-01-18 00:00:00.00000 +drop table t1,t2; +drop table if exists t1,t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +CREATE TABLE t1 ( +timestamp TIMESTAMP(5), +UNIQUE KEY timestamp (timestamp) +); +CREATE TABLE t2 ( +timestamp TIMESTAMP(4), +CONSTRAINT fk_timestamp FOREIGN KEY (timestamp) REFERENCES t1(timestamp) +); +insert into t1 values('2018-01-18 00:00:00'); +insert into t2 values('2018-01-18 00:00:00'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(CASCADE_TEST.t1)) +drop table t1,t2; +drop table if exists t1,t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +create table t1(a int NOT NULL AUTO_INCREMENT primary key, b decimal(65,30),unique(b)); +create table t2(c varchar(20), d decimal(65,30) not null default 1, foreign key(d) references t1(b) on update cascade); +insert into t1 values(3,2.2250738585072014E-308); +Warnings: +Note 1265 Data truncated for column 'b' at row 1 +insert into t2 values('bob',2.2250738585072014E-308); +Warnings: +Note 1265 Data truncated for column 'd' at row 1 +insert into t2 values('grace',-2.2250738585072014E-308); +Warnings: +Note 1265 Data truncated for column 'd' at row 1 +update t1 set a = 33, b = 999.901 where b<=0; +select * from t1; +a b +33 999.901000000000000000000000000000 +select * from t2; +c d +bob 999.901000000000000000000000000000 +grace 999.901000000000000000000000000000 +drop table t1,t2; +drop table if exists char4, char5; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.char4' +Note 1051 Unknown table 'CASCADE_TEST.char5' +create table char4(c2 char(255) unique key); +create table char5(c2 char(254) unique key, CONSTRAINT fk_char5 FOREIGN KEY (c2) REFERENCES char4 (c2) on update cascade); +insert into char4 values('a'); +insert into char5 values('a'); +update char4 set c2='bbbb'; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(CASCADE_TEST.char5)) +drop table char4, char5; +drop table if exists char4, char5; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.char4' +Note 1051 Unknown table 'CASCADE_TEST.char5' +create table char4(c2 varchar(255) unique key); +create table char5(c2 varchar(5) unique key, CONSTRAINT fk_char5 FOREIGN KEY (c2) REFERENCES char4 (c2) on update cascade); +insert into char4 values('a'); +insert into char5 values('a'); +update char4 set c2='bbbbb'; +select * from char4; +c2 +bbbbb +select * from char5; +c2 +bbbbb +update char4 set c2='bbbbbb'; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(CASCADE_TEST.char5)) +select * from char4; +c2 +bbbbb +select * from char5; +c2 +bbbbb +update char4 set c2='我的啊你ä¸'; +select * from char4; +c2 +æˆ‘çš„å•Šä½ ä¸ +select * from char5; +c2 +æˆ‘çš„å•Šä½ ä¸ +update char4 set c2='我的啊你ä¸è¦'; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(CASCADE_TEST.char5)) +select * from char4; +c2 +æˆ‘çš„å•Šä½ ä¸ +select * from char5; +c2 +æˆ‘çš„å•Šä½ ä¸ +update char4 set c2='我的aä½ b'; +select * from char4; +c2 +我的aä½ b +select * from char5; +c2 +我的aä½ b +drop table char4, char5; +drop table if exists t1,t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +create table t1(a varchar(20) unique key); +create table t2(a varchar(20), CONSTRAINT fk_1 FOREIGN KEY (a) REFERENCES t1 (a) on update cascade); +insert into t1 values('a'); +insert into t2 values('a'); +update t1 set a = null; +select * from t1; +a +NULL +select * from t2; +a +NULL +drop table t1,t2; +drop table if exists t1,t2,c_t1; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +Note 1051 Unknown table 'CASCADE_TEST.c_t1' +create table t1(id varchar(255) primary key, i int AUTO_INCREMENT,unique key(i)); +create table t2(c1 varchar(255) unique key, i int AUTO_INCREMENT,unique key(i)); +create table c_t1(c1 varchar(255) unique key +,CONSTRAINT fk_t1 FOREIGN KEY (c1) REFERENCES t1 (id) on delete set default on update cascade +,CONSTRAINT fk_t2 FOREIGN KEY (c1) REFERENCES t2 (c1) on delete set default on update cascade); +insert into t1(id) values(''); +insert into t2(c1) values(''); +insert into c_t1(c1) values(''); +select * from t1; +id i + 1 +select * from t2; +c1 i + 1 +select * from c_t1; +c1 + +select t1.i,t1.id,t2.c1 from t1,t2 where t1.i=t2.i and t1.i=1; +i id c1 +1 +update t1,t2 set t1.id='a',t2.c1='b' where t1.i=t2.i and t1.i=1; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails +select * from t1; +id i + 1 +select * from t2; +c1 i + 1 +select * from c_t1; +c1 + +drop table t1,t2,c_t1; +drop table if exists t1,t2,t3; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +Note 1051 Unknown table 'CASCADE_TEST.t3' +create table t1(a1 int, a2 int, a3 int, a4 int, a5 int, primary key(a3, a5)); +create table t2(b1 int, b2 int, b3 int, b4 int, b5 int, primary key(b2, b4)); +create table t3(c1 int, c2 int, c3 int, constraint fk_1 foreign key(c1, c2) references t1(a3, a5) on update cascade, constraint fk_2 foreign key(c2, c3) references t2(b2, b4) on update set null); +insert into t1 values(1,1,1,1,1); +insert into t2 values(1,1,1,1,1); +insert into t3 values(1,1,1); +update t1 set a5 = 2, a1 = 4; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails +update t1 set a3 = 2, a1 = 4; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails +select * from t1; +a1 a2 a3 a4 a5 +1 1 1 1 1 +select * from t2; +b1 b2 b3 b4 b5 +1 1 1 1 1 +select * from t3; +c1 c2 c3 +1 1 1 +drop table t1,t2,t3; +drop table if exists t1,t2,t3; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +Note 1051 Unknown table 'CASCADE_TEST.t3' +create table t1(a int primary key); +create table t2(a int primary key); +create table t3(a int, constraint fk_1 foreign key(a) references t1(a) on update cascade, constraint fk_2 foreign key(a) references t2(a) on update cascade); +insert into t1 values(1); +insert into t2 values(1); +insert into t3 values(1); +update t1 set a = 2; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails +update t2 set a = 2; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails +drop table t1,t2,t3; +drop table if exists t1,t2,t3; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +Note 1051 Unknown table 'CASCADE_TEST.t3' +create table t1(a int primary key); +create table t2(a int primary key); +create table t3(a int, constraint fk_1 foreign key(a) references t1(a) on update cascade, constraint fk_2 foreign key(a) references t2(a) on delete cascade); +insert into t1 values(1); +insert into t2 values(1); +insert into t3 values(1); +update t1 set a = 2; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails +delete from t2; +drop table t1,t2,t3; +drop table if exists t1,t2,t3; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +Note 1051 Unknown table 'CASCADE_TEST.t3' +create table t1(a int primary key); +create table t2(a int primary key); +create table t3(a int, constraint fk_1 foreign key(a) references t1(a) on update cascade, constraint fk_2 foreign key(a) references t2(a) on delete set null); +insert into t1 values(1); +insert into t2 values(1); +insert into t3 values(1); +update t1 set a = 2; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails +delete from t2; +drop table t1,t2,t3; +drop table if exists t1,t2; +Warnings: +Note 1051 Unknown table 'CASCADE_TEST.t1' +Note 1051 Unknown table 'CASCADE_TEST.t2' +create table t1(a int, b int, primary key(a, b)); +create table t2(a int, b int, constraint fk_1 foreign key(a, b) references t1(a, b) on update cascade); +insert into t1 values(1, 1); +insert into t2 values(1, 1); +alter table t2 add constraint fk_2 foreign key(a, b) references t1(a, b) on delete set null; +delete from t1; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(CASCADE_TEST.t2, CASCADE_TEST.t2)) +update t1 set a = 2, b = 2; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails +alter table t2 drop foreign key fk_1; +update t1 set a = 3, b = 3; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(CASCADE_TEST.t2)) +delete from t1; +drop table t1,t2; +DROP DATABASE CASCADE_TEST; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_character_set.result b/mysql-test/suite/tianchi/r/ctc_ddl_character_set.result new file mode 100644 index 0000000..7175039 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_character_set.result @@ -0,0 +1,170 @@ +CREATE DATABASE `CHAR_DB` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead. +use CHAR_DB; +SELECT @@character_set_database, @@collation_database; +@@character_set_database @@collation_database +utf8mb3 utf8_general_ci +create table DEMO (ID integer not null, NAME varchar(20)); +INSERT INTO DEMO values(1,'abc'); +INSERT INTO DEMO values(3,'Abc'); +select * from DEMO where NAME = 'aBc'; +ID NAME +1 abc +3 Abc +INSERT INTO DEMO values(4,'æ•°æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—'); +INSERT INTO DEMO values(5,'æ•°æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—1'); +ERROR 22001: Data too long for column 'NAME' at row 1 +ALTER DATABASE CHAR_DB DEFAULT CHARACTER SET ascii DEFAULT COLLATE ascii_bin; +INSERT INTO DEMO values(5,'å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—'); +INSERT INTO DEMO values(5,'å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—1'); +ERROR 22001: Data too long for column 'NAME' at row 1 +select * from DEMO; +ID NAME +1 abc +3 Abc +4 æ•°æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­— +5 å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­— +ALTER TABLE DEMO ADD COLUMN NAME1 varchar(20); +INSERT INTO DEMO values(6,'å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—'); +INSERT INTO DEMO values(7,'å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—1'); +ERROR 22001: Data too long for column 'NAME1' at row 1 +ALTER TABLE DEMO ADD COLUMN NAME2 varchar(20) CHARACTER SET ascii COLLATE ascii_bin; +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(20) DEFAULT NULL, + `NAME1` varchar(20) DEFAULT NULL, + `NAME2` varchar(20) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb3 +INSERT INTO DEMO values(8,'å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','abcdeabcdeabcdeabcdef'); +ERROR 22001: Data too long for column 'NAME2' at row 1 +INSERT INTO DEMO values(8,'å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','abcdeabcdeabcdeabcde'); +INSERT INTO DEMO values(8,'å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','汉字'); +ERROR HY000: Incorrect string value: '\xE6\xB1\x89\xE5\xAD\x97' for column 'NAME2' at row 1 +ALTER TABLE DEMO DEFAULT CHARACTER SET ascii COLLATE ascii_bin; +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `NAME1` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `NAME2` varchar(20) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=ascii COLLATE=ascii_bin +ALTER TABLE DEMO ADD COLUMN NAME3 varchar(20); +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `NAME1` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `NAME2` varchar(20) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL, + `NAME3` varchar(20) COLLATE ascii_bin DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=ascii COLLATE=ascii_bin +INSERT INTO DEMO values(8,'å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','abc', '汉字'); +ERROR HY000: Incorrect string value: '\xE6\xB1\x89\xE5\xAD\x97' for column 'NAME3' at row 1 +INSERT INTO DEMO values(8,'å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','abc', 'abcdeabcdeabcdeabcdef'); +ERROR 22001: Data too long for column 'NAME3' at row 1 +INSERT INTO DEMO values(8,'å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­—','abc', 'abcdeabcdeabcdeabcde'); +select * from DEMO; +ID NAME NAME1 NAME2 NAME3 +1 abc NULL NULL NULL +3 Abc NULL NULL NULL +4 æ•°æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­— NULL NULL NULL +5 å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­— NULL NULL NULL +6 å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­— å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­— NULL NULL +8 å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­— å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­— abcdeabcdeabcdeabcde NULL +8 å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­— å¼ æ®åº“字符集字符åºä¸ºè¡¨çš„å­—ç¬¦é›†å­—ç¬¦åºæ±‰å­— abc abcdeabcdeabcdeabcde +show create table DEMO; +Table Create Table +DEMO CREATE TABLE `DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `NAME1` varchar(20) CHARACTER SET utf8 DEFAULT NULL, + `NAME2` varchar(20) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL, + `NAME3` varchar(20) COLLATE ascii_bin DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=ascii COLLATE=ascii_bin +drop table DEMO; +create table t1(c1 varchar(10) collate utf8mb4_general_ci); +insert into t1 values('aaa'),('aAA '),('AAA'),('aAA'),('AAA '),('BBB'),('bBb'),('Bbb'),('AAa'),('AaA'); +select c1 from t1; +c1 +aaa +aAA +AAA +aAA +AAA +BBB +bBb +Bbb +AAa +AaA +create index idx1 on t1(c1); +select c1 from t1; +c1 +aaa +aAA +AAA +aAA +AAA +AAa +AaA +BBB +bBb +Bbb +alter table t1 modify c1 varchar(10) collate utf8mb3_bin; +Warnings: +Warning 3778 'utf8_bin' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead. +select c1 from t1; +c1 +AAA +AAA +AAa +AaA +BBB +Bbb +aAA +aAA +aaa +bBb +alter table t1 modify c1 varchar(10) collate utf8mb4_general_ci; +select c1 from t1; +c1 +aaa +aAA +AAA +aAA +AAA +AAa +AaA +BBB +bBb +Bbb +drop table t1; +create table DEMO (ID integer not null, NAME varchar(20) character set utf8 collate utf8_bin); +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +Warning 3778 'utf8_bin' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead. +INSERT INTO DEMO values(1,'abc'); +INSERT INTO DEMO values(3,'Abc'); +select * from DEMO where NAME = 'abc'; +ID NAME +1 abc +ALTER TABLE DEMO DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +Warning 3778 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead. +INSERT INTO DEMO values(4,'Abc'); +select * from DEMO where NAME = 'abc'; +ID NAME +1 abc +ALTER TABLE DEMO ADD COLUMN NAME1 varchar(20); +INSERT INTO DEMO values(5,'1','abc'); +INSERT INTO DEMO values(6,'1','Abc'); +select * from DEMO where NAME1 = 'aBc'; +ID NAME NAME1 +5 1 abc +6 1 Abc +drop database CHAR_DB; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_create_table_check.result b/mysql-test/suite/tianchi/r/ctc_ddl_create_table_check.result new file mode 100644 index 0000000..5268325 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_create_table_check.result @@ -0,0 +1,6 @@ +drop table if exists t1; +create table t1(a int, b int, c int) partition by range columns(a)( partition p0 values less than(0),partition p1 values less than(10),partition p2 values less than(20),partition p3 values less than(30),partition p4 values less than(40),partition p5 values less than(50),partition p6 values less than(60),partition p7 values less than(70),partition p8 values less than(80),partition p9 values less than(90),partition p10 values less than(100),partition p11 values less than(110),partition p12 values less than(120),partition p13 values less than(130),partition p14 values less than(140),partition p15 values less than(150),partition p16 values less than(160),partition p17 values less than(170),partition p18 values less than(180),partition p19 values less than(190),partition p20 values less than(200),partition p21 values less than(210),partition p22 values less than(220),partition p23 values less than(230),partition p24 values less than(240),partition p25 values less than(250),partition p26 values less than(260),partition p27 values less than(270),partition p28 values less than(280),partition p29 values less than(290),partition p30 values less than(300),partition p31 values less than(310),partition p32 values less than(320),partition p33 values less than(330),partition p34 values less than(340),partition p35 values less than(350),partition p36 values less than(360),partition p37 values less than(370),partition p38 values less than(380),partition p39 values less than(390),partition p40 values less than(400),partition p41 values less than(410),partition p42 values less than(420),partition p43 values less than(430),partition p44 values less than(440),partition p45 values less than(450),partition p46 values less than(460),partition p47 values less than(470),partition p48 values less than(480),partition p49 values less than(490),partition p50 values less than(500),partition p51 values less than(510),partition p52 values less than(520),partition p53 values less than(530),partition p54 values less than(540),partition p55 values less than(550),partition p56 values less than(560),partition p57 values less than(570),partition p58 values less than(580),partition p59 values less than(590),partition p60 values less than(600),partition p61 values less than(610),partition p62 values less than(620),partition p63 values less than(630),partition p64 values less than(640),partition p65 values less than(650),partition p66 values less than(660),partition p67 values less than(670),partition p68 values less than(680),partition p69 values less than(690),partition p70 values less than(700),partition p71 values less than(710),partition p72 values less than(720),partition p73 values less than(730),partition p74 values less than(740),partition p75 values less than(750),partition p76 values less than(760),partition p77 values less than(770),partition p78 values less than(780),partition p79 values less than(790),partition p80 values less than(800),partition p81 values less than(810),partition p82 values less than(820),partition p83 values less than(830),partition p84 values less than(840),partition p85 values less than(850),partition p86 values less than(860),partition p87 values less than(870),partition p88 values less than(880),partition p89 values less than(890),partition p90 values less than(900),partition p91 values less than(910),partition p92 values less than(920),partition p93 values less than(930),partition p94 values less than(940),partition p95 values less than(950),partition p96 values less than(960),partition p97 values less than(970),partition p98 values less than(980),partition p99 values less than(990),partition p100 values less than(1000),partition p101 values less than(1010),partition p102 values less than(1020),partition p103 values less than(1030),partition p104 values less than(1040),partition p105 values less than(1050),partition p106 values less than(1060),partition p107 values less than(1070),partition p108 values less than(1080),partition p109 values less than(1090),partition p110 values less than(1100),partition p111 values less than(1110),partition p112 values less than(1120),partition p113 values less than(1130),partition p114 values less than(1140),partition p115 values less than(1150),partition p116 values less than(1160),partition p117 values less than(1170),partition p118 values less than(1180),partition p119 values less than(1190),partition p120 values less than(1200),partition p121 values less than(1210),partition p122 values less than(1220),partition p123 values less than(1230),partition p124 values less than(1240),partition p125 values less than(1250),partition p126 values less than(1260),partition p127 values less than(1270),partition p128 values less than(1280),partition p129 values less than(1290),partition p130 values less than(1300),partition p131 values less than(1310),partition p132 values less than(1320),partition p133 values less than(1330),partition p134 values less than(1340),partition p135 values less than(1350),partition p136 values less than(1360),partition p137 values less than(1370),partition p138 values less than(1380),partition p139 values less than(1390),partition p140 values less than(1400),partition p141 values less than(1410),partition p142 values less than(1420),partition p143 values less than(1430),partition p144 values less than(1440),partition p145 values less than(1450),partition p146 values less than(1460),partition p147 values less than(1470),partition p148 values less than(1480),partition p149 values less than(1490),partition p150 values less than(1500),partition p151 values less than(1510),partition p152 values less than(1520),partition p153 values less than(1530),partition p154 values less than(1540),partition p155 values less than(1550),partition p156 values less than(1560),partition p157 values less than(1570),partition p158 values less than(1580),partition p159 values less than(1590),partition p160 values less than(1600),partition p161 values less than(1610),partition p162 values less than(1620),partition p163 values less than(1630),partition p164 values less than(1640),partition p165 values less than(1650),partition p166 values less than(1660),partition p167 values less than(1670),partition p168 values less than(1680),partition p169 values less than(1690),partition p170 values less than(1700),partition p171 values less than(1710),partition p172 values less than(1720),partition p173 values less than(1730),partition p174 values less than(1740),partition p175 values less than(1750),partition p176 values less than(1760),partition p177 values less than(1770),partition p178 values less than(1780),partition p179 values less than(1790),partition p180 values less than(1800),partition p181 values less than(1810),partition p182 values less than(1820),partition p183 values less than(1830),partition p184 values less than(1840),partition p185 values less than(1850),partition p186 values less than(1860),partition p187 values less than(1870),partition p188 values less than(1880),partition p189 values less than(1890),partition p190 values less than(1900),partition p191 values less than(1910),partition p192 values less than(1920),partition p193 values less than(1930),partition p194 values less than(1940),partition p195 values less than(1950),partition p196 values less than(1960),partition p197 values less than(1970),partition p198 values less than(1980),partition p199 values less than(1990),partition p200 values less than(2000),partition p201 values less than(2010),partition p202 values less than(2020),partition p203 values less than(2030),partition p204 values less than(2040),partition p205 values less than(2050),partition p206 values less than(2060),partition p207 values less than(2070),partition p208 values less than(2080),partition p209 values less than(2090),partition p210 values less than(2100),partition p211 values less than(2110),partition p212 values less than(2120),partition p213 values less than(2130),partition p214 values less than(2140),partition p215 values less than(2150),partition p216 values less than(2160),partition p217 values less than(2170),partition p218 values less than(2180),partition p219 values less than(2190),partition p220 values less than(2200),partition p221 values less than(2210),partition p222 values less than(2220),partition p223 values less than(2230),partition p224 values less than(2240),partition p225 values less than(2250),partition p226 values less than(2260),partition p227 values less than(2270),partition p228 values less than(2280),partition p229 values less than(2290),partition p230 values less than(2300),partition p231 values less than(2310),partition p232 values less than(2320),partition p233 values less than(2330),partition p234 values less than(2340),partition p235 values less than(2350),partition p236 values less than(2360),partition p237 values less than(2370),partition p238 values less than(2380),partition p239 values less than(2390),partition p240 values less than(2400),partition p241 values less than(2410),partition p242 values less than(2420),partition p243 values less than(2430),partition p244 values less than(2440),partition p245 values less than(2450),partition p246 values less than(2460),partition p247 values less than(2470),partition p248 values less than(2480),partition p249 values less than(2490),partition p250 values less than(2500),partition p251 values less than(2510),partition p252 values less than(2520),partition p253 values less than(2530),partition p254 values less than(2540),partition p255 values less than(2550),partition p256 values less than(2560),partition p257 values less than(2570),partition p258 values less than(2580),partition p259 values less than(2590),partition p260 values less than(2600),partition p261 values less than(2610),partition p262 values less than(2620),partition p263 values less than(2630),partition p264 values less than(2640),partition p265 values less than(2650), +partition p266 values less than(2660),partition p267 values less than(2670),partition p268 values less than(2680),partition p269 values less than(2690),partition p270 values less than(2700),partition p271 values less than(2710),partition p272 values less than(2720),partition p273 values less than(2730),partition p274 values less than(2740),partition p275 values less than(2750),partition p276 values less than(2760),partition p277 values less than(2770),partition p278 values less than(2780),partition p279 values less than(2790),partition p280 values less than(2800),partition p281 values less than(2810),partition p282 values less than(2820),partition p283 values less than(2830),partition p284 values less than(2840),partition p285 values less than(2850),partition p286 values less than(2860),partition p287 values less than(2870),partition p288 values less than(2880),partition p289 values less than(2890),partition p290 values less than(2900),partition p291 values less than(2910),partition p292 values less than(2920),partition p293 values less than(2930),partition p294 values less than(2940),partition p295 values less than(2950),partition p296 values less than(2960),partition p297 values less than(2970),partition p298 values less than(2980),partition p299 values less than(2990),partition p300 values less than(3000),partition p301 values less than(3010),partition p302 values less than(3020),partition p303 values less than(3030),partition p304 values less than(3040),partition p305 values less than(3050),partition p306 values less than(3060),partition p307 values less than(3070),partition p308 values less than(3080),partition p309 values less than(3090),partition p310 values less than(3100),partition p311 values less than(3110),partition p312 values less than(3120),partition p313 values less than(3130),partition p314 values less than(3140),partition p315 values less than(3150),partition p316 values less than(3160),partition p317 values less than(3170),partition p318 values less than(3180),partition p319 values less than(3190),partition p320 values less than(3200),partition p321 values less than(3210),partition p322 values less than(3220),partition p323 values less than(3230),partition p324 values less than(3240),partition p325 values less than(3250),partition p326 values less than(3260),partition p327 values less than(3270),partition p328 values less than(3280),partition p329 values less than(3290),partition p330 values less than(3300),partition p331 values less than(3310),partition p332 values less than(3320),partition p333 values less than(3330),partition p334 values less than(3340),partition p335 values less than(3350),partition p336 values less than(3360),partition p337 values less than(3370),partition p338 values less than(3380),partition p339 values less than(3390),partition p340 values less than(3400),partition p341 values less than(3410),partition p342 values less than(3420),partition p343 values less than(3430),partition p344 values less than(3440),partition p345 values less than(3450),partition p346 values less than(3460),partition p347 values less than(3470),partition p348 values less than(3480),partition p349 values less than(3490),partition p350 values less than(3500),partition p351 values less than(3510),partition p352 values less than(3520),partition p353 values less than(3530),partition p354 values less than(3540),partition p355 values less than(3550),partition p356 values less than(3560),partition p357 values less than(3570),partition p358 values less than(3580),partition p359 values less than(3590),partition p360 values less than(3600),partition p361 values less than(3610),partition p362 values less than(3620),partition p363 values less than(3630),partition p364 values less than(3640),partition p365 values less than(3650),partition p366 values less than(3660),partition p367 values less than(3670),partition p368 values less than(3680),partition p369 values less than(3690),partition p370 values less than(3700),partition p371 values less than(3710),partition p372 values less than(3720),partition p373 values less than(3730),partition p374 values less than(3740),partition p375 values less than(3750),partition p376 values less than(3760),partition p377 values less than(3770),partition p378 values less than(3780),partition p379 values less than(3790),partition p380 values less than(3800),partition p381 values less than(3810),partition p382 values less than(3820),partition p383 values less than(3830),partition p384 values less than(3840),partition p385 values less than(3850),partition p386 values less than(3860),partition p387 values less than(3870),partition p388 values less than(3880),partition p389 values less than(3890),partition p390 values less than(3900),partition p391 values less than(3910),partition p392 values less than(3920),partition p393 values less than(3930),partition p394 values less than(3940),partition p395 values less than(3950),partition p396 values less than(3960),partition p397 values less than(3970),partition p398 values less than(3980),partition p399 values less than(3990),partition p400 values less than(4000),partition p401 values less than(4010),partition p402 values less than(4020),partition p403 values less than(4030),partition p404 values less than(4040),partition p405 values less than(4050),partition p406 values less than(4060),partition p407 values less than(4070),partition p408 values less than(4080),partition p409 values less than(4090),partition p410 values less than(4100),partition p411 values less than(4110),partition p412 values less than(4120),partition p413 values less than(4130),partition p414 values less than(4140),partition p415 values less than(4150),partition p416 values less than(4160),partition p417 values less than(4170),partition p418 values less than(4180),partition p419 values less than(4190),partition p420 values less than(4200),partition p421 values less than(4210),partition p422 values less than(4220),partition p423 values less than(4230),partition p424 values less than(4240),partition p425 values less than(4250),partition p426 values less than(4260),partition p427 values less than(4270),partition p428 values less than(4280),partition p429 values less than(4290),partition p430 values less than(4300),partition p431 values less than(4310),partition p432 values less than(4320),partition p433 values less than(4330),partition p434 values less than(4340),partition p435 values less than(4350),partition p436 values less than(4360),partition p437 values less than(4370),partition p438 values less than(4380),partition p439 values less than(4390),partition p440 values less than(4400),partition p441 values less than(4410),partition p442 values less than(4420),partition p443 values less than(4430),partition p444 values less than(4440),partition p445 values less than(4450),partition p446 values less than(4460),partition p447 values less than(4470),partition p448 values less than(4480),partition p449 values less than(4490),partition p450 values less than(4500),partition p451 values less than(4510),partition p452 values less than(4520),partition p453 values less than(4530),partition p454 values less than(4540),partition p455 values less than(4550),partition p456 values less than(4560),partition p457 values less than(4570),partition p458 values less than(4580),partition p459 values less than(4590),partition p460 values less than(4600),partition p461 values less than(4610),partition p462 values less than(4620),partition p463 values less than(4630),partition p464 values less than(4640),partition p465 values less than(4650),partition p466 values less than(4660),partition p467 values less than(4670),partition p468 values less than(4680),partition p469 values less than(4690),partition p470 values less than(4700),partition p471 values less than(4710),partition p472 values less than(4720),partition p473 values less than(4730),partition p474 values less than(4740),partition p475 values less than(4750),partition p476 values less than(4760),partition p477 values less than(4770),partition p478 values less than(4780),partition p479 values less than(4790),partition p480 values less than(4800),partition p481 values less than(4810),partition p482 values less than(4820),partition p483 values less than(4830),partition p484 values less than(4840),partition p485 values less than(4850),partition p486 values less than(4860),partition p487 values less than(4870),partition p488 values less than(4880),partition p489 values less than(4890),partition p490 values less than(4900),partition p491 values less than(4910),partition p492 values less than(4920),partition p493 values less than(4930),partition p494 values less than(4940),partition p495 values less than(4950),partition p496 values less than(4960),partition p497 values less than(4970),partition p498 values less than(4980),partition p499 values less than(4990),partition p500 values less than(5000),partition p501 values less than(5010),partition p502 values less than(5020),partition p503 values less than(5030),partition p504 values less than(5040),partition p505 values less than(5050),partition p506 values less than(5060),partition p507 values less than(5070),partition p508 values less than(5080),partition p509 values less than(5090),partition p510 values less than(5100),partition p511 values less than(5110),partition p512 values less than(5120),partition p513 values less than(5130),partition p514 values less than(5140),partition p515 values less than(5150),partition p516 values less than(5160),partition p517 values less than(5170),partition p518 values less than(5180),partition p519 values less than(5190),partition p520 values less than(5200),partition p521 values less than(5210),partition p522 values less than(5220),partition p523 values less than(5230),partition p524 values less than(5240),partition p525 values less than(5250),partition p526 values less than(5260),partition p527 values less than(5270),partition p528 values less than(5280), +partition p529 values less than(5290),partition p530 values less than(5300),partition p531 values less than(5310),partition p532 values less than(5320),partition p533 values less than(5330),partition p534 values less than(5340),partition p535 values less than(5350),partition p536 values less than(5360),partition p537 values less than(5370),partition p538 values less than(5380),partition p539 values less than(5390),partition p540 values less than(5400),partition p541 values less than(5410),partition p542 values less than(5420),partition p543 values less than(5430),partition p544 values less than(5440),partition p545 values less than(5450),partition p546 values less than(5460),partition p547 values less than(5470),partition p548 values less than(5480),partition p549 values less than(5490),partition p550 values less than(5500),partition p551 values less than(5510),partition p552 values less than(5520),partition p553 values less than(5530),partition p554 values less than(5540),partition p555 values less than(5550),partition p556 values less than(5560),partition p557 values less than(5570),partition p558 values less than(5580),partition p559 values less than(5590),partition p560 values less than(5600),partition p561 values less than(5610),partition p562 values less than(5620),partition p563 values less than(5630),partition p564 values less than(5640),partition p565 values less than(5650),partition p566 values less than(5660),partition p567 values less than(5670),partition p568 values less than(5680),partition p569 values less than(5690),partition p570 values less than(5700),partition p571 values less than(5710),partition p572 values less than(5720),partition p573 values less than(5730),partition p574 values less than(5740),partition p575 values less than(5750),partition p576 values less than(5760),partition p577 values less than(5770),partition p578 values less than(5780),partition p579 values less than(5790),partition p580 values less than(5800),partition p581 values less than(5810),partition p582 values less than(5820),partition p583 values less than(5830),partition p584 values less than(5840),partition p585 values less than(5850),partition p586 values less than(5860),partition p587 values less than(5870),partition p588 values less than(5880),partition p589 values less than(5890),partition p590 values less than(5900),partition p591 values less than(5910),partition p592 values less than(5920),partition p593 values less than(5930),partition p594 values less than(5940),partition p595 values less than(5950),partition p596 values less than(5960),partition p597 values less than(5970),partition p598 values less than(5980),partition p599 values less than(5990),partition p600 values less than(6000),partition p601 values less than(6010),partition p602 values less than(6020),partition p603 values less than(6030),partition p604 values less than(6040),partition p605 values less than(6050),partition p606 values less than(6060),partition p607 values less than(6070),partition p608 values less than(6080),partition p609 values less than(6090),partition p610 values less than(6100),partition p611 values less than(6110),partition p612 values less than(6120),partition p613 values less than(6130),partition p614 values less than(6140),partition p615 values less than(6150),partition p616 values less than(6160),partition p617 values less than(6170),partition p618 values less than(6180),partition p619 values less than(6190),partition p620 values less than(6200),partition p621 values less than(6210),partition p622 values less than(6220),partition p623 values less than(6230),partition p624 values less than(6240),partition p625 values less than(6250),partition p626 values less than(6260),partition p627 values less than(6270),partition p628 values less than(6280),partition p629 values less than(6290),partition p630 values less than(6300),partition p631 values less than(6310),partition p632 values less than(6320),partition p633 values less than(6330),partition p634 values less than(6340),partition p635 values less than(6350),partition p636 values less than(6360),partition p637 values less than(6370),partition p638 values less than(6380),partition p639 values less than(6390),partition p640 values less than(6400),partition p641 values less than(6410),partition p642 values less than(6420),partition p643 values less than(6430),partition p644 values less than(6440),partition p645 values less than(6450),partition p646 values less than(6460),partition p647 values less than(6470),partition p648 values less than(6480),partition p649 values less than(6490),partition p650 values less than(6500),partition p651 values less than(6510),partition p652 values less than(6520),partition p653 values less than(6530),partition p654 values less than(6540),partition p655 values less than(6550),partition p656 values less than(6560),partition p657 values less than(6570),partition p658 values less than(6580),partition p659 values less than(6590),partition p660 values less than(6600),partition p661 values less than(6610),partition p662 values less than(6620),partition p663 values less than(6630),partition p664 values less than(6640),partition p665 values less than(6650),partition p666 values less than(6660),partition p667 values less than(6670),partition p668 values less than(6680),partition p669 values less than(6690),partition p670 values less than(6700),partition p671 values less than(6710),partition p672 values less than(6720),partition p673 values less than(6730),partition p674 values less than(6740),partition p675 values less than(6750),partition p676 values less than(6760),partition p677 values less than(6770),partition p678 values less than(6780),partition p679 values less than(6790),partition p680 values less than(6800),partition p681 values less than(6810),partition p682 values less than(6820),partition p683 values less than(6830),partition p684 values less than(6840),partition p685 values less than(6850),partition p686 values less than(6860),partition p687 values less than(6870),partition p688 values less than(6880),partition p689 values less than(6890),partition p690 values less than(6900),partition p691 values less than(6910),partition p692 values less than(6920),partition p693 values less than(6930),partition p694 values less than(6940),partition p695 values less than(6950),partition p696 values less than(6960),partition p697 values less than(6970),partition p698 values less than(6980),partition p699 values less than(6990),partition p700 values less than(7000),partition p701 values less than(7010),partition p702 values less than(7020),partition p703 values less than(7030),partition p704 values less than(7040),partition p705 values less than(7050),partition p706 values less than(7060),partition p707 values less than(7070),partition p708 values less than(7080),partition p709 values less than(7090),partition p710 values less than(7100),partition p711 values less than(7110),partition p712 values less than(7120),partition p713 values less than(7130),partition p714 values less than(7140),partition p715 values less than(7150),partition p716 values less than(7160),partition p717 values less than(7170),partition p718 values less than(7180),partition p719 values less than(7190),partition p720 values less than(7200),partition p721 values less than(7210),partition p722 values less than(7220),partition p723 values less than(7230),partition p724 values less than(7240),partition p725 values less than(7250),partition p726 values less than(7260),partition p727 values less than(7270),partition p728 values less than(7280),partition p729 values less than(7290),partition p730 values less than(7300),partition p731 values less than(7310),partition p732 values less than(7320),partition p733 values less than(7330),partition p734 values less than(7340),partition p735 values less than(7350),partition p736 values less than(7360),partition p737 values less than(7370),partition p738 values less than(7380),partition p739 values less than(7390),partition p740 values less than(7400),partition p741 values less than(7410),partition p742 values less than(7420),partition p743 values less than(7430),partition p744 values less than(7440),partition p745 values less than(7450),partition p746 values less than(7460),partition p747 values less than(7470),partition p748 values less than(7480),partition p749 values less than(7490),partition p750 values less than(7500),partition p751 values less than(7510),partition p752 values less than(7520),partition p753 values less than(7530),partition p754 values less than(7540),partition p755 values less than(7550),partition p756 values less than(7560),partition p757 values less than(7570),partition p758 values less than(7580),partition p759 values less than(7590),partition p760 values less than(7600),partition p761 values less than(7610),partition p762 values less than(7620),partition p763 values less than(7630),partition p764 values less than(7640),partition p765 values less than(7650),partition p766 values less than(7660),partition p767 values less than(7670),partition p768 values less than(7680),partition p769 values less than(7690),partition p770 values less than(7700),partition p771 values less than(7710),partition p772 values less than(7720),partition p773 values less than(7730),partition p774 values less than(7740),partition p775 values less than(7750),partition p776 values less than(7760),partition p777 values less than(7770),partition p778 values less than(7780),partition p779 values less than(7790),partition p780 values less than(7800),partition p781 values less than(7810),partition p782 values less than(7820),partition p783 values less than(7830),partition p784 values less than(7840),partition p785 values less than(7850),partition p786 values less than(7860),partition p787 values less than(7870),partition p788 values less than(7880),partition p789 values less than(7890),partition p790 values less than(7900),partition p791 values less than(7910), +partition p792 values less than(7920),partition p793 values less than(7930),partition p794 values less than(7940),partition p795 values less than(7950),partition p796 values less than(7960),partition p797 values less than(7970),partition p798 values less than(7980),partition p799 values less than(7990),partition p800 values less than(8000),partition p801 values less than(8010),partition p802 values less than(8020),partition p803 values less than(8030),partition p804 values less than(8040),partition p805 values less than(8050),partition p806 values less than(8060),partition p807 values less than(8070),partition p808 values less than(8080),partition p809 values less than(8090),partition p810 values less than(8100),partition p811 values less than(8110),partition p812 values less than(8120),partition p813 values less than(8130),partition p814 values less than(8140),partition p815 values less than(8150),partition p816 values less than(8160),partition p817 values less than(8170),partition p818 values less than(8180),partition p819 values less than(8190),partition p820 values less than(8200),partition p821 values less than(8210),partition p822 values less than(8220),partition p823 values less than(8230),partition p824 values less than(8240),partition p825 values less than(8250),partition p826 values less than(8260),partition p827 values less than(8270),partition p828 values less than(8280),partition p829 values less than(8290),partition p830 values less than(8300),partition p831 values less than(8310),partition p832 values less than(8320),partition p833 values less than(8330),partition p834 values less than(8340),partition p835 values less than(8350),partition p836 values less than(8360),partition p837 values less than(8370),partition p838 values less than(8380),partition p839 values less than(8390),partition p840 values less than(8400),partition p841 values less than(8410),partition p842 values less than(8420),partition p843 values less than(8430),partition p844 values less than(8440),partition p845 values less than(8450),partition p846 values less than(8460),partition p847 values less than(8470),partition p848 values less than(8480),partition p849 values less than(8490),partition p850 values less than(8500),partition p851 values less than(8510),partition p852 values less than(8520),partition p853 values less than(8530),partition p854 values less than(8540),partition p855 values less than(8550),partition p856 values less than(8560),partition p857 values less than(8570),partition p858 values less than(8580),partition p859 values less than(8590),partition p860 values less than(8600)); +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_default_index.result b/mysql-test/suite/tianchi/r/ctc_ddl_default_index.result new file mode 100644 index 0000000..1a26205 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_default_index.result @@ -0,0 +1,807 @@ +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default '' not null key) charset binary; +alter table t1 add column c4 binary(5) default '' not null; +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 binary(10) default '' not null key) charset binary; +insert into t1 values (1, 1, 'a'); +insert into t1 values (2, 2, default); +alter table t1 modify c3 binary(20) default '' not null; +select c1, c2, hex(c3), length(c3) from t1 order by c1; +c1 c2 hex(c3) length(c3) +1 1 6100000000000000000000000000000000000000 20 +2 2 0000000000000000000000000000000000000000 20 +insert into t1 values (3, 3, '3'); +select c1, c2, hex(c3) from t1 order by c1; +c1 c2 hex(c3) +1 1 6100000000000000000000000000000000000000 +2 2 0000000000000000000000000000000000000000 +3 3 3300000000000000000000000000000000000000 +alter table t1 add column c4 binary(5) default 'a' not null; +insert into t1 values (4, 4, 'd', 'd'); +select c1, c2, hex(c3), length(c3), hex(c4), length(c4) from t1 order by c1; +c1 c2 hex(c3) length(c3) hex(c4) length(c4) +1 1 6100000000000000000000000000000000000000 20 6100000000 5 +2 2 0000000000000000000000000000000000000000 20 6100000000 5 +3 3 3300000000000000000000000000000000000000 20 6100000000 5 +4 4 6400000000000000000000000000000000000000 20 6400000000 5 +create index idx1 on t1(c4); +insert into t1 values (5, 5, 'e', 'e'); +select c1, c2, hex(c3), length(c3), hex(c4), length(c4) from t1 order by c1; +c1 c2 hex(c3) length(c3) hex(c4) length(c4) +1 1 6100000000000000000000000000000000000000 20 6100000000 5 +2 2 0000000000000000000000000000000000000000 20 6100000000 5 +3 3 3300000000000000000000000000000000000000 20 6100000000 5 +4 4 6400000000000000000000000000000000000000 20 6400000000 5 +5 5 6500000000000000000000000000000000000000 20 6500000000 5 +alter table t1 modify c4 binary(10) default null; +insert into t1 values (6, 6, 'f', 'f'); +select c1, c2, hex(c3), length(c3), hex(c4), length(c4) from t1 order by c1; +c1 c2 hex(c3) length(c3) hex(c4) length(c4) +1 1 6100000000000000000000000000000000000000 20 61000000000000000000 10 +2 2 0000000000000000000000000000000000000000 20 61000000000000000000 10 +3 3 3300000000000000000000000000000000000000 20 61000000000000000000 10 +4 4 6400000000000000000000000000000000000000 20 64000000000000000000 10 +5 5 6500000000000000000000000000000000000000 20 65000000000000000000 10 +6 6 6600000000000000000000000000000000000000 20 66000000000000000000 10 +drop table t1; +create table t1(c1 int, c2 integer default '0' not null, c3 varchar(10) default 'c3' not null key, c4 varchar(10) default '' not null); +insert into t1 values(1, 1, default, default); +insert into t1 values(2, 2, 'aaa', 'bbb'); +select c1, c2, hex(c3), length(c3) from t1 order by c1; +c1 c2 hex(c3) length(c3) +1 1 6333 2 +2 2 616161 3 +alter table t1 modify c3 varchar(10) default '' not null; +insert into t1 values(3, 3, default, default); +select c1, c2, hex(c3), length(c3) from t1 order by c1; +c1 c2 hex(c3) length(c3) +1 1 6333 2 +2 2 616161 3 +3 3 0 +drop table t1; +create table t1(c1 char(2) default '0'); +insert into t1 values (default); +insert into t1 values ('1'); +select hex(c1) from t1; +hex(c1) +30 +31 +alter table t1 add column c2 char(4); +insert into t1 values (default, default); +insert into t1 values ('2', '2'); +select hex(c1), length(c1), hex(c2), length(c2) from t1; +hex(c1) length(c1) hex(c2) length(c2) +30 1 NULL NULL +31 1 NULL NULL +30 1 NULL NULL +32 1 32 1 +alter table t1 add column c3 char(10) default ''; +insert into t1 values (default, default, default); +insert into t1 values ('3', '3', '3'); +select c1, hex(c1), length(c1), c2, hex(c2), length(c2), c3, hex(c3), length(c3) from t1; +c1 hex(c1) length(c1) c2 hex(c2) length(c2) c3 hex(c3) length(c3) +0 30 1 NULL NULL NULL 0 +1 31 1 NULL NULL NULL 0 +0 30 1 NULL NULL NULL 0 +2 32 1 2 32 1 0 +0 30 1 NULL NULL NULL 0 +3 33 1 3 33 1 3 33 1 +alter table t1 add column c4 char(10) default ' '; +insert into t1 values (default, default, default, default); +insert into t1 values ('4', '4', '4', '4'); +select c1, hex(c1), length(c1), c2, hex(c2), length(c2), c3, hex(c3), length(c3), c4, hex(c4), length(c4) from t1; +c1 hex(c1) length(c1) c2 hex(c2) length(c2) c3 hex(c3) length(c3) c4 hex(c4) length(c4) +0 30 1 NULL NULL NULL 0 0 +1 31 1 NULL NULL NULL 0 0 +0 30 1 NULL NULL NULL 0 0 +2 32 1 2 32 1 0 0 +0 30 1 NULL NULL NULL 0 0 +3 33 1 3 33 1 3 33 1 0 +0 30 1 NULL NULL NULL 0 0 +4 34 1 4 34 1 4 34 1 4 34 1 +select * from t1 where c3 is null; +c1 c2 c3 c4 +select * from t1 where c4 is null; +c1 c2 c3 c4 +drop table t1; +create table t1(c1 char(2) default '0'); +insert into t1 values (default); +insert into t1 values ('1'); +select hex(c1) from t1; +hex(c1) +30 +31 +alter table t1 add column c2 char(4); +select * from t1; +c1 c2 +0 NULL +1 NULL +select * from t1 where c2 is null; +c1 c2 +0 NULL +1 NULL +insert into t1 values (default, default); +insert into t1 values ('2', '2'); +select hex(c1), length(c1), hex(c2), length(c2) from t1; +hex(c1) length(c1) hex(c2) length(c2) +30 1 NULL NULL +31 1 NULL NULL +30 1 NULL NULL +32 1 32 1 +alter table t1 add column c3 char(10) default ''; +alter table t1 add column c4 char(10) default ' '; +select * from t1 where c3 is null; +c1 c2 c3 c4 +select * from t1 where c4 is null; +c1 c2 c3 c4 +alter table t1 add column c5 char(10) default 'abc'; +select c1, hex(c1), length(c1), c2, hex(c2), length(c2), c3, hex(c3), length(c3), c4, hex(c4), length(c4), c5 from t1; +c1 hex(c1) length(c1) c2 hex(c2) length(c2) c3 hex(c3) length(c3) c4 hex(c4) length(c4) c5 +0 30 1 NULL NULL NULL 0 0 abc +1 31 1 NULL NULL NULL 0 0 abc +0 30 1 NULL NULL NULL 0 0 abc +2 32 1 2 32 1 0 0 abc +select * from t1 where c3 is null; +c1 c2 c3 c4 c5 +select * from t1 where c4 is null; +c1 c2 c3 c4 c5 +drop table t1; +CREATE TABLE t1 (c1 int primary key, c2 varchar(10), c3 timestamp default '2003-01-01 00:00:00' on update current_timestamp); +INSERT INTO t1 values (0, "a", null); +INSERT INTO t1 values (1, "b", default); +select c1, c2, c3 from t1; +c1 c2 c3 +0 a NULL +1 b 2003-01-01 00:00:00 +REPLACE INTO t1 VALUES (2, "b", null); +select c1, c2, c3 from t1; +c1 c2 c3 +0 a NULL +1 b 2003-01-01 00:00:00 +2 b NULL +INSERT INTO t1 values (3, "c", '2023-03-31 11:10:20'); +select c1, c2, c3 from t1; +c1 c2 c3 +0 a NULL +1 b 2003-01-01 00:00:00 +2 b NULL +3 c 2023-03-31 11:10:20 +create index idx1 on t1(c2); +INSERT INTO t1 values (4, "d", null); +REPLACE INTO t1 VALUES (5, "e", null); +INSERT INTO t1 values (6, "f", default); +select c1, c2, c3 from t1; +c1 c2 c3 +0 a NULL +1 b 2003-01-01 00:00:00 +2 b NULL +3 c 2023-03-31 11:10:20 +4 d NULL +5 e NULL +6 f 2003-01-01 00:00:00 +alter table t1 modify c3 timestamp default '2000-01-01 08:00:00'; +INSERT INTO t1 values (7, "g", default); +select c1, c2, c3 from t1; +c1 c2 c3 +0 a NULL +1 b 2003-01-01 00:00:00 +2 b NULL +3 c 2023-03-31 11:10:20 +4 d NULL +5 e NULL +6 f 2003-01-01 00:00:00 +7 g 2000-01-01 08:00:00 +alter table t1 add column c4 timestamp default '2023-03-01' not null; +INSERT INTO t1 values (8, "h", default, default); +INSERT INTO t1 values (9, "i", '2021-10-01 09:11:22', '2021-10-01 09:11:22'); +select c1, c2, c3, c4 from t1; +c1 c2 c3 c4 +0 a NULL 2023-03-01 00:00:00 +1 b 2003-01-01 00:00:00 2023-03-01 00:00:00 +2 b NULL 2023-03-01 00:00:00 +3 c 2023-03-31 11:10:20 2023-03-01 00:00:00 +4 d NULL 2023-03-01 00:00:00 +5 e NULL 2023-03-01 00:00:00 +6 f 2003-01-01 00:00:00 2023-03-01 00:00:00 +7 g 2000-01-01 08:00:00 2023-03-01 00:00:00 +8 h 2000-01-01 08:00:00 2023-03-01 00:00:00 +9 i 2021-10-01 09:11:22 2021-10-01 09:11:22 +create index idx2 on t1(c1, c2, c3, c4); +INSERT INTO t1 values (10, "j", default, default); +INSERT INTO t1 values (11, "k", '2022-11-11 11:11:11', '2022-11-11 11:11:11'); +select c1, c2, c3, c4 from t1; +c1 c2 c3 c4 +0 a NULL 2023-03-01 00:00:00 +1 b 2003-01-01 00:00:00 2023-03-01 00:00:00 +2 b NULL 2023-03-01 00:00:00 +3 c 2023-03-31 11:10:20 2023-03-01 00:00:00 +4 d NULL 2023-03-01 00:00:00 +5 e NULL 2023-03-01 00:00:00 +6 f 2003-01-01 00:00:00 2023-03-01 00:00:00 +7 g 2000-01-01 08:00:00 2023-03-01 00:00:00 +8 h 2000-01-01 08:00:00 2023-03-01 00:00:00 +9 i 2021-10-01 09:11:22 2021-10-01 09:11:22 +10 j 2000-01-01 08:00:00 2023-03-01 00:00:00 +11 k 2022-11-11 11:11:11 2022-11-11 11:11:11 +drop table t1; +CREATE TABLE t1 (c1 int, c2 varchar(10), c3 time default '00:00:00'); +INSERT INTO t1 values (1, "a", null); +INSERT INTO t1 values (1, "b", default); +select c1, c2, c3 from t1; +c1 c2 c3 +1 a NULL +1 b 00:00:00 +INSERT INTO t1 values (3, "c", '01:01:01'); +select c1, c2, c3 from t1; +c1 c2 c3 +1 a NULL +1 b 00:00:00 +3 c 01:01:01 +create index idx1 on t1(c1); +INSERT INTO t1 values (4, "d", null); +INSERT INTO t1 values (5, "e", default); +select c1, c2, c3 from t1; +c1 c2 c3 +1 a NULL +1 b 00:00:00 +3 c 01:01:01 +4 d NULL +5 e 00:00:00 +create index idx2 on t1(c1, c2, c3); +INSERT INTO t1 values (6, "f", default); +INSERT INTO t1 values (7, "g", '02:22:22'); +select c1, c2, c3 from t1; +c1 c2 c3 +1 a NULL +1 b 00:00:00 +3 c 01:01:01 +4 d NULL +5 e 00:00:00 +6 f 00:00:00 +7 g 02:22:22 +alter table t1 modify c3 time default '2000-01-01 08:00:00'; +Warnings: +Note 1292 Incorrect time value: '2000-01-01 08:00:00' for column 'c3' at row 1 +INSERT INTO t1 values (8, "h", default); +INSERT INTO t1 values (9, "i", '09:09:09'); +select c1, c2, c3 from t1; +c1 c2 c3 +1 a NULL +1 b 00:00:00 +3 c 01:01:01 +4 d NULL +5 e 00:00:00 +6 f 00:00:00 +7 g 02:22:22 +8 h 08:00:00 +9 i 09:09:09 +alter table t1 add column c4 timestamp default '2023-03-01' not null; +INSERT INTO t1 values (10, "j", default, default); +INSERT INTO t1 values (11, "k", '11:11:11', '2022-11-11 11:11:11'); +drop table t1; +CREATE TABLE t1 (c1 int, c2 varchar(10), c3 date default '2000-01-01'); +INSERT INTO t1 values (1, "a", null); +INSERT INTO t1 values (1, "b", default); +INSERT INTO t1 values (2, "b", '2001-01-11'); +select c1, c2, c3 from t1; +c1 c2 c3 +1 a NULL +1 b 2000-01-01 +2 b 2001-01-11 +INSERT INTO t1 values (3, "c", '01:01:10'); +INSERT INTO t1 values (3, "c", '2001-01-11'); +select c1, c2, c3 from t1; +c1 c2 c3 +1 a NULL +1 b 2000-01-01 +2 b 2001-01-11 +3 c 2001-01-10 +3 c 2001-01-11 +create index idx1 on t1(c1); +INSERT INTO t1 values (4, "d", null); +INSERT INTO t1 values (5, "e", default); +INSERT INTO t1 values (5, "e", '2001-01-11'); +select c1, c2, c3 from t1; +c1 c2 c3 +1 a NULL +1 b 2000-01-01 +2 b 2001-01-11 +3 c 2001-01-10 +3 c 2001-01-11 +4 d NULL +5 e 2000-01-01 +5 e 2001-01-11 +create index idx2 on t1(c1, c2, c3); +INSERT INTO t1 values (6, "f", default); +INSERT INTO t1 values (7, "g", '02:02:20'); +INSERT INTO t1 values (7, "g", '2001-01-11'); +select c1, c2, c3 from t1; +c1 c2 c3 +1 a NULL +1 b 2000-01-01 +2 b 2001-01-11 +3 c 2001-01-10 +3 c 2001-01-11 +4 d NULL +5 e 2000-01-01 +5 e 2001-01-11 +6 f 2000-01-01 +7 g 2001-01-11 +7 g 2002-02-20 +alter table t1 modify c3 date default '2000-01-01 08:00:00'; +Warnings: +Note 1292 Incorrect date value: '2000-01-01 08:00:00' for column 'c3' at row 1 +INSERT INTO t1 values (8, "h", default); +INSERT INTO t1 values (9, "i", '09:09:09'); +INSERT INTO t1 values (9, "i", '2001-01-11'); +select c1, c2, c3 from t1; +c1 c2 c3 +1 a NULL +1 b 2000-01-01 +2 b 2001-01-11 +3 c 2001-01-10 +3 c 2001-01-11 +4 d NULL +5 e 2000-01-01 +5 e 2001-01-11 +6 f 2000-01-01 +7 g 2001-01-11 +7 g 2002-02-20 +8 h 2000-01-01 +9 i 2001-01-11 +9 i 2009-09-09 +alter table t1 add column c4 date default '2021-03-01' not null; +INSERT INTO t1 values (10, "j", default, default); +INSERT INTO t1 values (11, "k", '11:11:11', '2022-11-11 11:11:11'); +Warnings: +Note 1292 Incorrect date value: '2022-11-11 11:11:11' for column 'c4' at row 1 +select c1, c2, c3, c4 from t1; +c1 c2 c3 c4 +1 a NULL 2021-03-01 +1 b 2000-01-01 2021-03-01 +2 b 2001-01-11 2021-03-01 +3 c 2001-01-10 2021-03-01 +3 c 2001-01-11 2021-03-01 +4 d NULL 2021-03-01 +5 e 2000-01-01 2021-03-01 +5 e 2001-01-11 2021-03-01 +6 f 2000-01-01 2021-03-01 +7 g 2002-02-20 2021-03-01 +7 g 2001-01-11 2021-03-01 +8 h 2000-01-01 2021-03-01 +9 i 2009-09-09 2021-03-01 +9 i 2001-01-11 2021-03-01 +10 j 2000-01-01 2021-03-01 +11 k 2011-11-11 2022-11-11 +drop table t1; +CREATE TABLE t1 (c1 enum('active','passive') NOT NULL default 'passive'); +ALTER TABLE t1 ADD c2 int NOT NULL; +insert into t1 values('active', 1); +insert into t1 values(default, 2); +select c1, hex(c1), length(c1), c2 from t1; +c1 hex(c1) length(c1) c2 +active 616374697665 6 1 +passive 70617373697665 7 2 +create index idx1 on t1(c1); +insert into t1 values('passive', 2); +insert into t1 values(default, 3); +select c1, hex(c1), length(c1), c2 from t1; +c1 hex(c1) length(c1) c2 +active 616374697665 6 1 +passive 70617373697665 7 2 +passive 70617373697665 7 2 +passive 70617373697665 7 3 +DROP TABLE t1; +CREATE TABLE t1 (c1 enum('active','passive') NOT NULL default 'passive') charset binary; +ALTER TABLE t1 ADD c2 int NOT NULL; +insert into t1 values('active', 1); +insert into t1 values(default, 2); +select c1, hex(c1), length(c1), c2 from t1; +c1 hex(c1) length(c1) c2 +active 616374697665 6 1 +passive 70617373697665 7 2 +create index idx1 on t1(c1); +insert into t1 values('passive', 2); +insert into t1 values(default, 3); +select c1, hex(c1), length(c1), c2 from t1; +c1 hex(c1) length(c1) c2 +active 616374697665 6 1 +passive 70617373697665 7 2 +passive 70617373697665 7 2 +passive 70617373697665 7 3 +DROP TABLE t1; +CREATE TABLE t1 (c1 enum('active','passive') NOT NULL default 'passive') charset ascii; +ALTER TABLE t1 ADD c2 int NOT NULL; +insert into t1 values('active', 1); +insert into t1 values(default, 2); +select c1, hex(c1), length(c1), c2 from t1; +c1 hex(c1) length(c1) c2 +active 616374697665 6 1 +passive 70617373697665 7 2 +create index idx1 on t1(c1); +insert into t1 values('passive', 2); +insert into t1 values(default, 3); +select c1, hex(c1), length(c1), c2 from t1; +c1 hex(c1) length(c1) c2 +active 616374697665 6 1 +passive 70617373697665 7 2 +passive 70617373697665 7 2 +passive 70617373697665 7 3 +DROP TABLE t1; +SET NAMES latin1; +CREATE TABLE t1 (`Д` CHAR(128) default 'Д', `Д1` ENUM('Д1','Д2') default 'Д2'); +insert into t1 values(default, default); +insert into t1 values('aaa', 'Д1'); +select * from t1; +Д Д1 +Д Д2 +aaa Д1 +create index idx1 on t1(`Д`); +insert into t1 values(default, default); +insert into t1 values('bbb', 'Д1'); +alter table t1 add column `ä1` ENUM('ä1','ä2') DEFAULT 'ä2'; +insert into t1 values(default, default, default); +insert into t1 values('Дccc', 'Д1', 'ä1'); +select * from t1; +Д Д1 ä1 +Д Д2 ä2 +aaa Д1 ä2 +Д Д2 ä2 +bbb Д1 ä2 +Д Д2 ä2 +Дccc Д1 ä1 +drop table t1; +SET NAMES default; +create table t1 (ID integer, NAME varchar(19), AGE integer, GRADE real, COUNTRY set('中国','英国','法国') default '法国'); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `ID` int DEFAULT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL, + `COUNTRY` set('中国','英国','法国') DEFAULT '法国' +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into t1 values (1, 'a', 27, 8.9, '法国'); +insert into t1 values (2, 'b', 23, 7.7, default); +insert into t1 values (2, 'b', 23, 7.7, ''); +select * from t1; +ID NAME AGE GRADE COUNTRY +1 a 27 8.9 法国 +2 b 23 7.7 法国 +2 b 23 7.7 +create index idx1 on t1(ID); +insert into t1 values (3, 'c', 23, 7.7, default); +insert into t1 values (4, 'd', 35, 8.9, '英国'); +alter table t1 add PASSED set('通过','未通过','未å‚加') default '未å‚加'; +insert into t1 values (5, 'e', 23, 7.7, '中国', default); +insert into t1 values (6, 'f', 23, 7.7, default, '未通过'); +insert into t1 values (7, 'g', 33, 8.9, '', ''); +select * from t1; +ID NAME AGE GRADE COUNTRY PASSED +1 a 27 8.9 法国 未å‚加 +2 b 23 7.7 法国 未å‚加 +2 b 23 7.7 未å‚加 +3 c 23 7.7 法国 未å‚加 +4 d 35 8.9 英国 未å‚加 +5 e 23 7.7 中国 未å‚加 +6 f 23 7.7 法国 未通过 +7 g 33 8.9 +drop table t1; +create table t1 (ID integer, NAME varchar(19), AGE integer, GRADE real, COUNTRY set('中国','英国','法国') default '法国') charset binary; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `ID` int DEFAULT NULL, + `NAME` varbinary(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL, + `COUNTRY` set('中国','英国','法国') DEFAULT '法国' +) ENGINE=CTC DEFAULT CHARSET=binary +insert into t1 values (1, 'a', 27, 8.9, '法国'); +insert into t1 values (2, 'b', 23, 7.7, default); +insert into t1 values (2, 'b', 23, 7.7, ''); +select * from t1; +ID NAME AGE GRADE COUNTRY +1 a 27 8.9 法国 +2 b 23 7.7 法国 +2 b 23 7.7 +create index idx1 on t1(ID); +insert into t1 values (3, 'c', 23, 7.7, default); +insert into t1 values (4, 'd', 35, 8.9, '英国'); +alter table t1 add PASSED set('通过','未通过','未å‚加') default '未å‚加'; +insert into t1 values (5, 'e', 23, 7.7, '中国', default); +insert into t1 values (6, 'f', 23, 7.7, default, '未通过'); +insert into t1 values (7, 'g', 33, 8.9, '', ''); +select * from t1; +ID NAME AGE GRADE COUNTRY PASSED +1 a 27 8.9 法国 未å‚加 +2 b 23 7.7 法国 未å‚加 +2 b 23 7.7 未å‚加 +3 c 23 7.7 法国 未å‚加 +4 d 35 8.9 英国 未å‚加 +5 e 23 7.7 中国 未å‚加 +6 f 23 7.7 法国 未通过 +7 g 33 8.9 +drop table t1; +create table t1 (c1 integer, c2 set ('A','a','B','b','C','c')); +ERROR HY000: Column 'c2' has duplicated value 'A' in SET +create table t1 (c1 integer, c2 set ('A','a','B','b','C','c')) collate utf8mb4_bin; +insert into t1 values (1, 'a'); +select * from t1; +c1 c2 +1 a +create index idx1 on t1(c2); +insert into t1 values (2, 'A'); +select * from t1; +c1 c2 +1 a +2 A +alter table t1 add column c3 set('yes', 'no') default 'yes'; +insert into t1 values (3, 'b', default); +select * from t1; +c1 c2 c3 +1 a yes +2 A yes +3 b yes +drop table t1; +create table t1 (c1 integer, c2 set ('A','a','B','b','C','c')) charset binary; +insert into t1 values (1, 'a'); +select * from t1; +c1 c2 +1 a +create index idx1 on t1(c2); +insert into t1 values (2, 'A'); +select * from t1; +c1 c2 +1 a +2 A +alter table t1 add column c3 set('yes', 'no') default 'yes'; +insert into t1 values (3, 'b', default); +select * from t1; +c1 c2 c3 +1 a yes +2 A yes +3 b yes +drop table t1; +create table t1 (c1 integer, c2 set ('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','30','31','32','33','34','35','36','37','38','39','40', +'41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63') +DEFAULT '0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16'); +insert into t1 values (1, '23'); +insert into t1 values (2, default); +insert into t1 values (3, ''); +select * from t1; +c1 c2 +1 23 +2 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 +3 +create index idx1 on t1(c1); +insert into t1 values (4, '63,12,3,4,5,6,7,8'); +insert into t1 values (5, default); +insert into t1 values (6, ''); +select * from t1; +c1 c2 +1 23 +2 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 +3 +4 3,4,5,6,7,8,12,63 +5 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 +6 +alter table t1 add c3 set('YES','EXIT','NO') default 'YES,NO'; +insert into t1 values (7, default, default); +insert into t1 values (8, null, null); +insert into t1 values (9, '', 'YES'); +select * from t1; +c1 c2 c3 +1 23 YES,NO +2 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 YES,NO +3 YES,NO +4 3,4,5,6,7,8,12,63 YES,NO +5 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 YES,NO +6 YES,NO +7 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 YES,NO +8 NULL NULL +9 YES +drop table t1; +create table t1 (c1 integer, c2 set ('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','30','31','32','33','34','35','36','37','38','39','40', +'41','42','43','44','45','46','47','48','49','50','51','52','53','54','55','56','57','58','59','60','61','62','63') +DEFAULT '0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16') charset binary; +insert into t1 values (1, '23'); +insert into t1 values (2, default); +insert into t1 values (3, ''); +select * from t1; +c1 c2 +1 23 +2 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 +3 +create index idx1 on t1(c1); +insert into t1 values (4, '63,12,3,4,5,6,7,8'); +insert into t1 values (5, default); +insert into t1 values (6, ''); +select * from t1; +c1 c2 +1 23 +2 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 +3 +4 3,4,5,6,7,8,12,63 +5 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 +6 +alter table t1 add c3 set('YES','EXIT','NO') default 'YES,NO'; +insert into t1 values (7, default, default); +insert into t1 values (8, null, null); +insert into t1 values (9, '', 'YES'); +select * from t1; +c1 c2 c3 +1 23 YES,NO +2 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 YES,NO +3 YES,NO +4 3,4,5,6,7,8,12,63 YES,NO +5 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 YES,NO +6 YES,NO +7 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 YES,NO +8 NULL NULL +9 YES +drop table t1; +CREATE TABLE t1(c1 decimal(10,5) UNSIGNED NOT NULL default '1.1', c2 decimal(10,5) SIGNED NULL default '1.1', c3 decimal default '1.1'); +Warnings: +Warning 1681 UNSIGNED for decimal and floating point data types is deprecated and support for it will be removed in a future release. +Note 1265 Data truncated for column 'c3' at row 1 +INSERT INTO t1 VALUES (default, default, default); +INSERT INTO t1 VALUES ('22.22','22.22','2222'); +select * from t1; +c1 c2 c3 +1.10000 1.10000 1 +22.22000 22.22000 2222 +create index idx1 on t1(c1); +INSERT INTO t1 VALUES (default, default, default); +INSERT INTO t1 VALUES ('333.333','333.333','333333'); +select * from t1; +c1 c2 c3 +1.10000 1.10000 1 +22.22000 22.22000 2222 +1.10000 1.10000 1 +333.33300 333.33300 333333 +alter table t1 add column c4 decimal(10, 5) default '11.11'; +INSERT INTO t1 VALUES (default, default, default, default); +INSERT INTO t1 VALUES ('4444.4444','4444.4444','44444444','4444.4444'); +select * from t1; +c1 c2 c3 c4 +1.10000 1.10000 1 11.11000 +22.22000 22.22000 2222 11.11000 +1.10000 1.10000 1 11.11000 +333.33300 333.33300 333333 11.11000 +1.10000 1.10000 1 11.11000 +4444.44440 4444.44440 44444444 4444.44440 +create index idx2 on t1(c4); +INSERT INTO t1 VALUES ('55555.55555','55555.55555','5555555555','55555.55555'); +select * from t1; +c1 c2 c3 c4 +1.10000 1.10000 1 11.11000 +22.22000 22.22000 2222 11.11000 +1.10000 1.10000 1 11.11000 +333.33300 333.33300 333333 11.11000 +1.10000 1.10000 1 11.11000 +4444.44440 4444.44440 44444444 4444.44440 +55555.55555 55555.55555 5555555555 55555.55555 +create index idx3 on t1(c1, c2, c3, c4); +INSERT INTO t1 VALUES ('66666.66666','66666.66666','6666666666','66666.66666'); +select * from t1; +c1 c2 c3 c4 +1.10000 1.10000 1 11.11000 +1.10000 1.10000 1 11.11000 +1.10000 1.10000 1 11.11000 +22.22000 22.22000 2222 11.11000 +333.33300 333.33300 333333 11.11000 +4444.44440 4444.44440 44444444 4444.44440 +55555.55555 55555.55555 5555555555 55555.55555 +66666.66666 66666.66666 6666666666 66666.66666 +drop table t1; +CREATE TABLE t1(c1 decimal(10,5) UNSIGNED NOT NULL default '1.1', c2 decimal(10,5) SIGNED NULL default '1.1', c3 decimal default '1.1') charset binary; +Warnings: +Warning 1681 UNSIGNED for decimal and floating point data types is deprecated and support for it will be removed in a future release. +Note 1265 Data truncated for column 'c3' at row 1 +INSERT INTO t1 VALUES (default, default, default); +INSERT INTO t1 VALUES ('22.22','22.22','2222'); +select * from t1; +c1 c2 c3 +1.10000 1.10000 1 +22.22000 22.22000 2222 +create index idx1 on t1(c1); +INSERT INTO t1 VALUES (default, default, default); +INSERT INTO t1 VALUES ('333.333','333.333','333333'); +select * from t1; +c1 c2 c3 +1.10000 1.10000 1 +22.22000 22.22000 2222 +1.10000 1.10000 1 +333.33300 333.33300 333333 +alter table t1 add column c4 decimal(10, 5) default '11.11'; +INSERT INTO t1 VALUES (default, default, default, default); +INSERT INTO t1 VALUES ('4444.4444','4444.4444','44444444','4444.4444'); +select * from t1; +c1 c2 c3 c4 +1.10000 1.10000 1 11.11000 +22.22000 22.22000 2222 11.11000 +1.10000 1.10000 1 11.11000 +333.33300 333.33300 333333 11.11000 +1.10000 1.10000 1 11.11000 +4444.44440 4444.44440 44444444 4444.44440 +create index idx2 on t1(c4); +INSERT INTO t1 VALUES ('55555.55555','55555.55555','5555555555','55555.55555'); +select * from t1; +c1 c2 c3 c4 +1.10000 1.10000 1 11.11000 +22.22000 22.22000 2222 11.11000 +1.10000 1.10000 1 11.11000 +333.33300 333.33300 333333 11.11000 +1.10000 1.10000 1 11.11000 +4444.44440 4444.44440 44444444 4444.44440 +55555.55555 55555.55555 5555555555 55555.55555 +create index idx3 on t1(c1, c2, c3, c4); +INSERT INTO t1 VALUES ('66666.66666','66666.66666','6666666666','66666.66666'); +select * from t1; +c1 c2 c3 c4 +1.10000 1.10000 1 11.11000 +1.10000 1.10000 1 11.11000 +1.10000 1.10000 1 11.11000 +22.22000 22.22000 2222 11.11000 +333.33300 333.33300 333333 11.11000 +4444.44440 4444.44440 44444444 4444.44440 +55555.55555 55555.55555 5555555555 55555.55555 +66666.66666 66666.66666 6666666666 66666.66666 +drop table t1; +CREATE TABLE t1(c1 decimal(10,5) UNSIGNED NOT NULL default '1.1', c2 decimal(10,5) SIGNED NULL default '1.1', c3 decimal default '1.1'); +Warnings: +Warning 1681 UNSIGNED for decimal and floating point data types is deprecated and support for it will be removed in a future release. +Note 1265 Data truncated for column 'c3' at row 1 +INSERT INTO t1 VALUES (default, default, default); +INSERT INTO t1 VALUES ('22.22','22.22','2222'); +select * from t1; +c1 c2 c3 +1.10000 1.10000 1 +22.22000 22.22000 2222 +create index idx1 on t1(c1); +INSERT INTO t1 VALUES (default, default, default); +INSERT INTO t1 VALUES ('333.333','333.333','333333'); +select * from t1; +c1 c2 c3 +1.10000 1.10000 1 +22.22000 22.22000 2222 +1.10000 1.10000 1 +333.33300 333.33300 333333 +alter table t1 add column c4 decimal(10, 5) default '11.11'; +INSERT INTO t1 VALUES (default, default, default, default); +INSERT INTO t1 VALUES ('4444.4444','4444.4444','44444444','4444.4444'); +select * from t1; +c1 c2 c3 c4 +1.10000 1.10000 1 11.11000 +22.22000 22.22000 2222 11.11000 +1.10000 1.10000 1 11.11000 +333.33300 333.33300 333333 11.11000 +1.10000 1.10000 1 11.11000 +4444.44440 4444.44440 44444444 4444.44440 +create index idx2 on t1(c4); +INSERT INTO t1 VALUES ('55555.55555','55555.55555','5555555555','55555.55555'); +select * from t1; +c1 c2 c3 c4 +1.10000 1.10000 1 11.11000 +22.22000 22.22000 2222 11.11000 +1.10000 1.10000 1 11.11000 +333.33300 333.33300 333333 11.11000 +1.10000 1.10000 1 11.11000 +4444.44440 4444.44440 44444444 4444.44440 +55555.55555 55555.55555 5555555555 55555.55555 +create index idx3 on t1(c1, c2, c3, c4); +INSERT INTO t1 VALUES ('66666.66666','66666.66666','6666666666','66666.66666'); +select * from t1; +c1 c2 c3 c4 +1.10000 1.10000 1 11.11000 +1.10000 1.10000 1 11.11000 +1.10000 1.10000 1 11.11000 +22.22000 22.22000 2222 11.11000 +333.33300 333.33300 333333 11.11000 +4444.44440 4444.44440 44444444 4444.44440 +55555.55555 55555.55555 5555555555 55555.55555 +66666.66666 66666.66666 6666666666 66666.66666 +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_engine.result b/mysql-test/suite/tianchi/r/ctc_ddl_engine.result new file mode 100644 index 0000000..7cfb491 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_engine.result @@ -0,0 +1,77 @@ +set default_storage_engine=CTC; +set default_storage_engine=InnoDB; +ERROR HY000: Once the CTC is loaded, it must be set as the default engine. To modify the setting, uninstall the CTC first. +set default_storage_engine=innodb; +ERROR HY000: Once the CTC is loaded, it must be set as the default engine. To modify the setting, uninstall the CTC first. +set default_storage_engine=innodb1; +ERROR HY000: Once the CTC is loaded, it must be set as the default engine. To modify the setting, uninstall the CTC first. +set default_storage_engine=MyISAM; +ERROR HY000: Once the CTC is loaded, it must be set as the default engine. To modify the setting, uninstall the CTC first. +set default_storage_engine=CTC; +set default_storage_engine=CTC; +create database demo_db_tmp; +use demo_db_tmp; +create table TSE_DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +INSERT INTO TSE_DEMO values(30,'DEMO',21,23); +insert into TSE_DEMO values (1, 'DEMO', 35, 6.9); +select * from TSE_DEMO; +ID NAME AGE GRADE +30 DEMO 21 23 +1 DEMO 35 6.9 +show create table TSE_DEMO; +Table Create Table +TSE_DEMO CREATE TABLE `TSE_DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +create table InnoDB_DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real) engine = InnoDB1; +ERROR 42000: Unknown storage engine 'InnoDB1' +create table InnoDB_DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real) engine = InnoDB; +ERROR HY000: Once the CTC is loaded, it must be used as the default engine. To specify other engine for table, uninstall the CTC first. +create table MyISAM_DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real) engine = MyISAM; +ERROR HY000: Once the CTC is loaded, it must be used as the default engine. To specify other engine for table, uninstall the CTC first. +create table InnoDB_DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real) engine = CTC; +show create table TSE_DEMO; +Table Create Table +TSE_DEMO CREATE TABLE `TSE_DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table TSE_DEMO engine=InnoDB; +ERROR HY000: Once the CTC is loaded, it must be used as the default engine. To specify other engine for table, uninstall the CTC first. +show create table TSE_DEMO; +Table Create Table +TSE_DEMO CREATE TABLE `TSE_DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table TSE_DEMO engine=MyISAM; +ERROR HY000: Once the CTC is loaded, it must be used as the default engine. To specify other engine for table, uninstall the CTC first. +show create table TSE_DEMO; +Table Create Table +TSE_DEMO CREATE TABLE `TSE_DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table TSE_DEMO engine=CTC; +show create table TSE_DEMO; +Table Create Table +TSE_DEMO CREATE TABLE `TSE_DEMO` ( + `ID` int NOT NULL, + `NAME` varchar(19) DEFAULT NULL, + `AGE` int DEFAULT NULL, + `GRADE` double DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +select * from TSE_DEMO; +ID NAME AGE GRADE +30 DEMO 21 23 +1 DEMO 35 6.9 +drop database demo_db_tmp; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_foreign_key.result b/mysql-test/suite/tianchi/r/ctc_ddl_foreign_key.result new file mode 100644 index 0000000..27417f0 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_foreign_key.result @@ -0,0 +1,330 @@ +drop table if exists DEMO; +drop table if exists class; +Warnings: +Note 1051 Unknown table 'test.class' +drop table if exists my_foreign1; +Warnings: +Note 1051 Unknown table 'test.my_foreign1' +create table class(id int primary key auto_increment,c_name varchar(20) not null,room varchar(20)); +create table my_foreign1(id int primary key auto_increment, +name varchar(20) not null comment '学生姓å', +c_id int comment 'ç­çº§è¡¨ID', +CONSTRAINT fk_id foreign key(c_id) references class(id) +); +insert into class values(1,'abc','aaa'); +insert into class values(2,'abc2','bbb'); +insert into class values(3,'abc3','ccc'); +insert into class values(4,'4','4'); +select * from class; +id c_name room +1 abc aaa +2 abc2 bbb +3 abc3 ccc +4 4 4 +insert into my_foreign1 values(null,'Charies','6'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.class)) +insert into my_foreign1 values(null,'Charies','1'); +insert into my_foreign1 values(null,'Bob','2'); +insert into my_foreign1 values(null,'Bob1','3'); +select * from my_foreign1; +id name c_id +2 Charies 1 +3 Bob 2 +4 Bob1 3 +delete from class where id = 2; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.my_foreign1)) +delete from class; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.my_foreign1)) +update class set id = 100 where id = 2; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.my_foreign1)) +update class set id = 100 where id = 4; +delete from class where id = 100; +truncate table class; +ERROR 42000: Cannot truncate a table referenced in a foreign key constraint (`test`.`my_foreign1`, CONSTRAINT `fk_id`) +drop table class; +ERROR HY000: Cannot drop table 'class' referenced by a foreign key constraint 'fk_id' on table 'my_foreign1'. +truncate table my_foreign1; +truncate table class; +ERROR 42000: Cannot truncate a table referenced in a foreign key constraint (`test`.`my_foreign1`, CONSTRAINT `fk_id`) +drop table class,my_foreign1; +create table class(id int, age int, c_name varchar(20), room varchar(20), primary key(id, age)); +create table my_foreign1(id int primary key auto_increment, +name varchar(20) not null, +c_id int, +a_id int, +CONSTRAINT fk_id foreign key(c_id, a_id) references class(id, age) +); +desc my_foreign1; +Field Type Null Key Default Extra +id int NO PRI NULL auto_increment +name varchar(20) NO NULL +c_id int YES MUL NULL +a_id int YES NULL +insert into class values(1, 1, 'abc','aaa'); +insert into class values(2, 4,'abc2','bbb'); +insert into class values(3, 3,'abc3','ccc'); +select * from class; +id age c_name room +1 1 abc aaa +2 4 abc2 bbb +3 3 abc3 ccc +insert into my_foreign1 values(null,'Charies','6','12'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.class)) +insert into my_foreign1 values(null,'Alex','2','4'); +insert into my_foreign1 values(null,'ss','7','12'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.class)) +insert into my_foreign1 values(null,'test','3','3'); +select * from my_foreign1; +id name c_id a_id +2 Alex 2 4 +4 test 3 3 +drop table my_foreign1; +drop table class; +create table class(id int primary key auto_increment, c_name varchar(20), room varchar(20)); +create table project(id int primary key auto_increment, name varchar(10)); +create table my_foreign1(id int primary key auto_increment, +name varchar(20) not null, +c_id int, +a_id int, +CONSTRAINT fk_cid foreign key(c_id) references class(id), +CONSTRAINT fk_aid foreign key(a_id) references project(id) +); +desc my_foreign1; +Field Type Null Key Default Extra +id int NO PRI NULL auto_increment +name varchar(20) NO NULL +c_id int YES MUL NULL +a_id int YES MUL NULL +insert into class values(1,'abc','aaa'); +insert into class values(2,'abc2','bbb'); +insert into class values(3,'abc3','ccc'); +select * from class; +id c_name room +1 abc aaa +2 abc2 bbb +3 abc3 ccc +insert into project values(4,'proj1'); +insert into project values(6,'proj2'); +select * from project; +id name +4 proj1 +6 proj2 +insert into my_foreign1 values(null,'Charies','1','5'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.project, test.class)) +insert into my_foreign1 values(null,'Alex','1','4'); +insert into my_foreign1 values(null,'ss','7','12'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.project, test.class)) +insert into my_foreign1 values(null,'test','3','6'); +select * from my_foreign1; +id name c_id a_id +2 Alex 1 4 +4 test 3 6 +drop table my_foreign1; +drop table project; +drop table class; +drop table if exists class; +Warnings: +Note 1051 Unknown table 'test.class' +drop table if exists my_foreign1; +Warnings: +Note 1051 Unknown table 'test.my_foreign1' +create table class(id int primary key auto_increment,c_name varchar(20) not null,room varchar(20)); +create table my_foreign1(id int primary key auto_increment, +name varchar(20) not null comment '学生姓å', +c_id int comment 'ç­çº§è¡¨ID' +); +alter table my_foreign1 add constraint fk_id foreign key(c_id) references class(id); +insert into class values(1,'abc','aaa'); +insert into class values(2,'abc2','bbb'); +insert into class values(3,'abc3','ccc'); +select * from class; +id c_name room +1 abc aaa +2 abc2 bbb +3 abc3 ccc +insert into my_foreign1 values(null,'Charies','6'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.class)) +insert into my_foreign1 values(null,'Charies','1'); +insert into my_foreign1 values(null,'Bob','1'); +select * from my_foreign1; +id name c_id +2 Charies 1 +3 Bob 1 +ALTER TABLE my_foreign1 DROP FOREIGN KEY fk_id; +insert into my_foreign1 values(null,'Charies','6'); +drop table my_foreign1; +drop table class; +create table parent (a int primary key, b int); +create table child (a int, b int, foreign key (a) references parent(a) on delete set null); +insert into parent values (1,1),(2,2),(3,3),(4,4); +insert into child values (1,1),(2,2),(3,3); +delete from parent where a = 1; +select * from child; +a b +NULL 1 +2 2 +3 3 +drop table child; +create table child (a int, b int, foreign key (a) references parent(a) on delete cascade); +insert into child values (2,2),(3,3); +delete from parent where a = 2; +select * from child; +a b +3 3 +drop table child; +drop table parent; +drop table if exists my_parent1; +Warnings: +Note 1051 Unknown table 'test.my_parent1' +CREATE TABLE my_parent1 (fk_id int PRIMARY KEY); +drop table if exists my_parent2; +Warnings: +Note 1051 Unknown table 'test.my_parent2' +CREATE TABLE my_parent2 (fk_id int PRIMARY KEY); +drop table if exists my_child; +Warnings: +Note 1051 Unknown table 'test.my_child' +CREATE TABLE my_child ( +id1 int, id2 int, PRIMARY KEY (id1, id2), +CONSTRAINT id1_fkey FOREIGN KEY (id1) REFERENCES my_parent1 (fk_id), +CONSTRAINT id2_fkey FOREIGN KEY (id2) REFERENCES my_parent2 (fk_id) +); +drop table my_child; +drop table my_parent1; +drop table my_parent2; +drop table if exists class; +Warnings: +Note 1051 Unknown table 'test.class' +drop table if exists my_foreign1; +Warnings: +Note 1051 Unknown table 'test.my_foreign1' +create table class(id int primary key auto_increment,c_name varchar(20) not null,room varchar(20)); +create table my_foreign1(id int primary key auto_increment, +name varchar(20) not null comment '学生姓å', +c_id int comment 'ç­çº§è¡¨ID', +CONSTRAINT fk_id foreign key(c_id) references class(id) +); +insert into class values(1,'abc','aaa'); +insert into class values(2,'abc2','bbb'); +insert into class values(3,'abc3','ccc'); +insert into class values(4,'4','4'); +select * from class; +id c_name room +1 abc aaa +2 abc2 bbb +3 abc3 ccc +4 4 4 +insert into my_foreign1 values(null,'Charies','6'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.class)) +SET FOREIGN_KEY_CHECKS = 0; +insert into my_foreign1 values(null,'Charies','6'); +SET FOREIGN_KEY_CHECKS = 1; +insert into my_foreign1 values(null,'Charies','1'); +insert into my_foreign1 values(null,'Bob','2'); +insert into my_foreign1 values(null,'Bob1','3'); +select * from my_foreign1; +id name c_id +2 Charies 6 +3 Charies 1 +4 Bob 2 +5 Bob1 3 +delete from class where id = 2; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.my_foreign1)) +SET FOREIGN_KEY_CHECKS = 0; +delete from class where id = 2; +SET FOREIGN_KEY_CHECKS = 1; +delete from class; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.my_foreign1)) +SET FOREIGN_KEY_CHECKS = 0; +delete from class; +SET FOREIGN_KEY_CHECKS = 1; +insert into class values(2,'abc2','bbb'); +update class set id = 100 where id = 2; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.my_foreign1)) +SET FOREIGN_KEY_CHECKS = 0; +update class set id = 100 where id = 2; +SET FOREIGN_KEY_CHECKS = 1; +update class set id = 101 where id = 4; +delete from class where id = 100; +truncate table class; +ERROR 42000: Cannot truncate a table referenced in a foreign key constraint (`test`.`my_foreign1`, CONSTRAINT `fk_id`) +drop table class; +ERROR HY000: Cannot drop table 'class' referenced by a foreign key constraint 'fk_id' on table 'my_foreign1'. +truncate table my_foreign1; +truncate table class; +ERROR 42000: Cannot truncate a table referenced in a foreign key constraint (`test`.`my_foreign1`, CONSTRAINT `fk_id`) +drop table class,my_foreign1; +create table t1(far_id int primary key, v int); +create table t2(id int, sun_id int, CONSTRAINT t1t2_key FOREIGN KEY (sun_id) REFERENCES t1(far_id)); +create table t3(i int); +drop table t1; +ERROR HY000: Cannot drop table 't1' referenced by a foreign key constraint 't1t2_key' on table 't2'. +drop table t1, t3; +ERROR HY000: Cannot drop table 't1' referenced by a foreign key constraint 't1t2_key' on table 't2'. +drop table t1,t2; +drop table t3; +SET @@foreign_key_checks= 1; +CREATE TABLE t1(a INT PRIMARY KEY); +CREATE TABLE t2(a INT, b INT, FOREIGN KEY(a) REFERENCES t1(a)); +ALTER TABLE t2 ADD FOREIGN KEY(b) REFERENCES t1(a); +ALTER TABLE t2 DROP FOREIGN KEY t2_fk_1; +ALTER TABLE t2 ADD FOREIGN KEY(a) REFERENCES t1(a); +ALTER TABLE t2 RENAME TO t3; +ALTER TABLE t3 RENAME TO t4, ALGORITHM= INPLACE; +ALTER TABLE t4 RENAME TO t5; +RENAME TABLE t5 TO t6; +DROP TABLE t6; +CREATE TABLE `t6` ( +`a` int(11) DEFAULT NULL, +`b` int(11) DEFAULT NULL, +KEY `b` (`b`), +KEY `a` (`a`), +CONSTRAINT `t6_fk_2` FOREIGN KEY (`b`) REFERENCES `t1` (`a`), +CONSTRAINT `t6_fk_3` FOREIGN KEY (`a`) REFERENCES `t1` (`a`) +) ENGINE=CTC DEFAULT CHARSET=latin1; +Warnings: +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +RENAME TABLE t6 TO t2; +SELECT constraint_name FROM information_schema.referential_constraints +WHERE table_name = 't2' ORDER BY constraint_name; +CONSTRAINT_NAME +t2_fk_2 +t2_fk_3 +ALTER TABLE t2 DROP FOREIGN KEY t2_fk_2, DROP FOREIGN KEY t2_fk_3; +drop table t1,t2; +SET @@foreign_key_checks= 1; +create table t1 (f1 int unique, f2 int); +INSERT INTO t1 VALUES (1, 80); +INSERT INTO t1 VALUES (2, 81); +create table t2 (f1 int, f2 int); +INSERT INTO t2 VALUES (51, 1); +INSERT INTO t2 VALUES (52, 2); +INSERT INTO t2 VALUES (53, 3); +alter table t2 add constraint c1 foreign key (f2) references t1(f1) on update cascade; +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails. +drop table t1,t2; +SET @@foreign_key_checks=0; +create table student(id int, name varchar(6000), class int, constraint fk foreign key(class) references class(id)); +SET @@foreign_key_checks=1; +create table class(a int); +ERROR HY000: Cannot add foreign key constraint +drop table student; +SET @@foreign_key_checks=0; +create table student(id int primary key, name varchar(6000), class int, constraint fk foreign key(class) references class(id)); +SET @@foreign_key_checks=1; +create table class(a int); +ERROR HY000: Cannot add foreign key constraint +drop table student; +SET @@foreign_key_checks=0; +create table student(id int, name varchar(6000), class char(20), constraint fk foreign key(class) references class(id)); +SET @@foreign_key_checks=1; +create table class(a int); +ERROR HY000: Cannot add foreign key constraint +drop table student; +SET @@foreign_key_checks=0; +create table student(id int, name varchar(6000), class int, constraint fk foreign key(class) references class(a)); +SET @@foreign_key_checks=1; +create table class(a int); +ERROR HY000: Cannot add foreign key constraint +drop table student; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_foreign_key_set_enum.result b/mysql-test/suite/tianchi/r/ctc_ddl_foreign_key_set_enum.result new file mode 100644 index 0000000..49e020a --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_foreign_key_set_enum.result @@ -0,0 +1,85 @@ +drop table if exists PARTABLE; +create table PARTABLE( +ID INT, +COL_1 ENUM('Low', 'Medium', 'High'), +COL_2 SET('a', 'b', 'c', 'd'), +primary key(ID, COL_1,COL_2) +) ; +create table COMPATIBLE_TABLE( +ID INT, +COL_1 ENUM('Low', 'Medium', 'High'), +COL_2 SET('a', 'b', 'c', 'd'), +CONSTRAINT fk_id foreign key(ID, COL_1, COL_2) references PARTABLE(ID, COL_1,COL_2) +) ; +INSERT INTO PARTABLE VALUES (1,'Low','a,d'); +INSERT INTO PARTABLE VALUES (2,'Medium','a'); +INSERT INTO PARTABLE VALUES (3,'High','c,d'); +INSERT INTO COMPATIBLE_TABLE VALUES (10,'Low','a,b,c'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.PARTABLE)) +INSERT INTO COMPATIBLE_TABLE VALUES (1,'Low','a,d'); +INSERT INTO COMPATIBLE_TABLE VALUES (20,'Medium','a,b,c'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.PARTABLE)) +INSERT INTO COMPATIBLE_TABLE VALUES (3,'High','c,d'); +select * from COMPATIBLE_TABLE; +ID COL_1 COL_2 +1 Low a,d +3 High c,d +desc COMPATIBLE_TABLE; +Field Type Null Key Default Extra +ID int YES MUL NULL +COL_1 enum('Low','Medium','High') YES NULL +COL_2 set('a','b','c','d') YES NULL +show index from COMPATIBLE_TABLE; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +COMPATIBLE_TABLE 1 fk_id 1 ID A NULL NULL NULL YES BTREE YES NULL +COMPATIBLE_TABLE 1 fk_id 2 COL_1 A NULL NULL NULL YES BTREE YES NULL +COMPATIBLE_TABLE 1 fk_id 3 COL_2 A NULL NULL NULL YES BTREE YES NULL +drop table COMPATIBLE_TABLE; +drop table PARTABLE; +drop table if exists PARTABLE; +Warnings: +Note 1051 Unknown table 'test.PARTABLE' +drop table if exists COMPATIBLE_TABLE; +Warnings: +Note 1051 Unknown table 'test.COMPATIBLE_TABLE' +create table PARTABLE( +ID INT, +COL_1 ENUM('Low', 'Medium', 'High'), +COL_2 SET('a', 'b', 'c', 'd'), +primary key(COL_1,COL_2) +) ; +create table COMPATIBLE_TABLE( +ID INT, +COL_1 ENUM('Low', 'Medium', 'High'), +COL_2 SET('a', 'b', 'c', 'd') +) ; +alter table COMPATIBLE_TABLE add constraint fk_id foreign key(COL_1, COL_2) references PARTABLE(COL_1,COL_2); +INSERT INTO PARTABLE VALUES (1,'Low','a,d'); +INSERT INTO PARTABLE VALUES (2,'Medium','a'); +INSERT INTO PARTABLE VALUES (3,'High','c,d'); +select * from PARTABLE; +ID COL_1 COL_2 +1 Low a,d +2 Medium a +3 High c,d +INSERT INTO COMPATIBLE_TABLE VALUES (10,'Low','a,b,c'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.PARTABLE)) +INSERT INTO COMPATIBLE_TABLE VALUES (1,'Low','a,d'); +INSERT INTO COMPATIBLE_TABLE VALUES (20,'Medium','a,b,c'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.PARTABLE)) +INSERT INTO COMPATIBLE_TABLE VALUES (3,'High','c,d'); +select * from COMPATIBLE_TABLE; +ID COL_1 COL_2 +1 Low a,d +3 High c,d +desc COMPATIBLE_TABLE; +Field Type Null Key Default Extra +ID int YES NULL +COL_1 enum('Low','Medium','High') YES MUL NULL +COL_2 set('a','b','c','d') YES NULL +show index from COMPATIBLE_TABLE; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression +COMPATIBLE_TABLE 1 fk_id 1 COL_1 A NULL NULL NULL YES BTREE YES NULL +COMPATIBLE_TABLE 1 fk_id 2 COL_2 A NULL NULL NULL YES BTREE YES NULL +drop table COMPATIBLE_TABLE; +drop table PARTABLE; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_func_index.result b/mysql-test/suite/tianchi/r/ctc_ddl_func_index.result new file mode 100644 index 0000000..5ff0cdd --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_func_index.result @@ -0,0 +1,90 @@ +drop database if exists db1; +create database db1; +use db1; +create table t1 (c1 int, c2 int, c3 varchar(10), c4 varchar(10)); +insert into t1 values (1, 1, 'aaa', 'aaa'), (2, 2, 'aaA', 'aBB'), (3, 3, 'AAA', 'CDSV'), (4, 4, 'aaBa', 'Aaa'); +select * from t1; +c1 c2 c3 c4 +1 1 aaa aaa +2 2 aaA aBB +3 3 AAA CDSV +4 4 aaBa Aaa +select * from t1 where upper(c3) = 'AAA'; +c1 c2 c3 c4 +1 1 aaa aaa +2 2 aaA aBB +3 3 AAA CDSV +explain select * from t1 where upper(c3) = 'AAA'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select `db1`.`t1`.`c1` AS `c1`,`db1`.`t1`.`c2` AS `c2`,`db1`.`t1`.`c3` AS `c3`,`db1`.`t1`.`c4` AS `c4` from `db1`.`t1` where (upper(`db1`.`t1`.`c3`) = 'AAA') +create index func_index_1 on t1 ((upper(c3))); +select * from t1 where upper(c3) = 'AAA'; +c1 c2 c3 c4 +1 1 aaa aaa +2 2 aaA aBB +3 3 AAA CDSV +explain select * from t1 where upper(c3) = 'AAA'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ref func_index_1 func_index_1 43 const 1 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select `db1`.`t1`.`c1` AS `c1`,`db1`.`t1`.`c2` AS `c2`,`db1`.`t1`.`c3` AS `c3`,`db1`.`t1`.`c4` AS `c4` from `db1`.`t1` where (upper(`c3`) = 'AAA') +create index func_index_2 on t1 ((substr(c4, 1, 1))); +select * from t1 where substr(c4, 1, 1) = 'a'; +c1 c2 c3 c4 +1 1 aaa aaa +2 2 aaA aBB +4 4 aaBa Aaa +explain select * from t1 where substr(c4, 1, 1) = 'a'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ref func_index_2 func_index_2 7 const 1 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select `db1`.`t1`.`c1` AS `c1`,`db1`.`t1`.`c2` AS `c2`,`db1`.`t1`.`c3` AS `c3`,`db1`.`t1`.`c4` AS `c4` from `db1`.`t1` where (substr(`c4`,1,1) = 'a') +alter table t1 drop index func_index_1; +drop index func_index_2 on t1; +create table t2 (c1 int, c2 int, c3 varchar(10)); +insert into t2 values (1, 1, 'aaa'), (2, 2, 'aaA'), (3, 3, 'AAA'), (4, 4, 'aaBa'); +select * from t2; +c1 c2 c3 +1 1 aaa +2 2 aaA +3 3 AAA +4 4 aaBa +create index func_index_abs on t2 ((abs(c1))); +create index func_index_2 on t2 ((c1 + c2)); +ERROR HY000: Cantian does not support function indexes with multiple columns of arguments. +create table t3 (c1 int, c2 int, c3 varchar(10), index func_idx_1 ((upper(c3)))); +insert into t3 values (1, 1, 'aaa'), (2, 2, 'aaA'), (3, 3, 'AAA'), (4, 4, 'aaBa'); +select * from t3; +c1 c2 c3 +1 1 aaa +2 2 aaA +3 3 AAA +4 4 aaBa +select * from t3 where upper(c3) = 'AAA'; +c1 c2 c3 +1 1 aaa +2 2 aaA +3 3 AAA +explain select * from t3 where upper(c3) = 'AAA'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t3 NULL ref func_idx_1 func_idx_1 43 const 1 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select `db1`.`t3`.`c1` AS `c1`,`db1`.`t3`.`c2` AS `c2`,`db1`.`t3`.`c3` AS `c3` from `db1`.`t3` where (upper(`c3`) = 'AAA') +create table t4 (c1 int, c2 int, c3 varchar(10), index func_idx_1 ((substr(c3, 1, 1)))); +insert into t4 values (1, 1, 'aaa'), (2, 2, 'baa'), (3, 3, 'Bbb'); +select * from t4 where substr(c3, 1, 1) = 'b'; +c1 c2 c3 +2 2 baa +3 3 Bbb +explain select * from t4 where substr(c3, 1, 1) = 'b'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t4 NULL ref func_idx_1 func_idx_1 7 const 1 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select `db1`.`t4`.`c1` AS `c1`,`db1`.`t4`.`c2` AS `c2`,`db1`.`t4`.`c3` AS `c3` from `db1`.`t4` where (substr(`c3`,1,1) = 'b') +create table t5 (c1 int, c2 int, c3 varchar(10), index func_idx_1 ((abs(c1)))); +drop table t5; +create table t5 (c1 int, c2 int, c3 varchar(10), index func_idx_1 ((c1 + c2))); +ERROR HY000: Cantian does not support function indexes with multiple columns of arguments. +drop database db1; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_func_proc.result b/mysql-test/suite/tianchi/r/ctc_ddl_func_proc.result new file mode 100644 index 0000000..f4b8f09 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_func_proc.result @@ -0,0 +1,54 @@ +drop table if exists Dept; +create table Dept (ID integer not null, NAME varchar(19), AGE integer); +create function rand_string(n int) returns varchar(255) +begin +declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ'; +declare return_str varchar(255) default ''; +declare i int default 0; +while i 100; +ID NAME AGE +SELECT * FROM Dept WHERE NAME is NULL; +ID NAME AGE +drop table Dept; +drop PROCEDURE insert_dept; +drop FUNCTION rand_num_age; +drop FUNCTION rand_string; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_generated_columns.result b/mysql-test/suite/tianchi/r/ctc_ddl_generated_columns.result new file mode 100644 index 0000000..4b9d713 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_generated_columns.result @@ -0,0 +1,202 @@ +CREATE TABLE triangle ( +sidea DOUBLE, +sideb DOUBLE, +sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb)) STORED +); +ERROR HY000: Cantian does not support stored generated column. +CREATE TABLE triangle1 ( +sidea DOUBLE, +sideb DOUBLE, +sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb)) +); +INSERT INTO triangle1(sidea, sideb) VALUES(2,2),(4,4),(8,8); +desc triangle1; +Field Type Null Key Default Extra +sidea double YES NULL +sideb double YES NULL +sidec double YES NULL VIRTUAL GENERATED +select * from triangle1; +sidea sideb sidec +2 2 2.8284271247461903 +4 4 5.656854249492381 +8 8 11.313708498984761 +show create table triangle1; +Table Create Table +triangle1 CREATE TABLE `triangle1` ( + `sidea` double DEFAULT NULL, + `sideb` double DEFAULT NULL, + `sidec` double GENERATED ALWAYS AS (sqrt(((`sidea` * `sidea`) + (`sideb` * `sideb`)))) VIRTUAL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table triangle1; +DROP TABLE IF EXISTS t_8114; +Warnings: +Note 1051 Unknown table 'test.t_8114' +CREATE TABLE t_8114 (Column_0 int, Column_1 CHAR(5) GENERATED ALWAYS AS (PI()+5), Column_2 CHAR(5), Column_3 CHAR(5) GENERATED ALWAYS AS (PI()+5), Column_4 int); +insert into t_8114 values(1, default, 'aa', default, 2); +insert into t_8114 values(3, default, 'bb', default, 4); +insert into t_8114 values(5, default, 'cc', default, 6); +insert into t_8114 values(7, default, 'dd', default, 8); +insert into t_8114 values(9, default, 'dd', default, 10); +select * from t_8114; +Column_0 Column_1 Column_2 Column_3 Column_4 +1 8.142 aa 8.142 2 +3 8.142 bb 8.142 4 +5 8.142 cc 8.142 6 +7 8.142 dd 8.142 8 +9 8.142 dd 8.142 10 +ALTER TABLE t_8114 DROP COLUMN Column_0; +select * from t_8114; +Column_1 Column_2 Column_3 Column_4 +8.142 aa 8.142 2 +8.142 bb 8.142 4 +8.142 cc 8.142 6 +8.142 dd 8.142 8 +8.142 dd 8.142 10 +ALTER TABLE t_8114 DROP COLUMN Column_1; +select * from t_8114; +Column_2 Column_3 Column_4 +aa 8.142 2 +bb 8.142 4 +cc 8.142 6 +dd 8.142 8 +dd 8.142 10 +ALTER TABLE t_8114 ADD COLUMN Column_5 INT; +ALTER TABLE t_8114 ADD COLUMN Column_6 INT; +select * from t_8114; +Column_2 Column_3 Column_4 Column_5 Column_6 +aa 8.142 2 NULL NULL +bb 8.142 4 NULL NULL +cc 8.142 6 NULL NULL +dd 8.142 8 NULL NULL +dd 8.142 10 NULL NULL +update t_8114 set Column_5 = 6 where Column_4 = 2; +select * from t_8114; +Column_2 Column_3 Column_4 Column_5 Column_6 +aa 8.142 2 6 NULL +bb 8.142 4 NULL NULL +cc 8.142 6 NULL NULL +dd 8.142 8 NULL NULL +dd 8.142 10 NULL NULL +insert into t_8114 values('ee', default, 12, 14, 16); +insert into t_8114 values('ff', default, 18, 20, 22); +select * from t_8114; +Column_2 Column_3 Column_4 Column_5 Column_6 +aa 8.142 2 6 NULL +bb 8.142 4 NULL NULL +cc 8.142 6 NULL NULL +dd 8.142 8 NULL NULL +dd 8.142 10 NULL NULL +ee 8.142 12 14 16 +ff 8.142 18 20 22 +update t_8114 set Column_5 = 8, Column_6 = 9 where Column_4 = 2; +select * from t_8114; +Column_2 Column_3 Column_4 Column_5 Column_6 +aa 8.142 2 8 9 +bb 8.142 4 NULL NULL +cc 8.142 6 NULL NULL +dd 8.142 8 NULL NULL +dd 8.142 10 NULL NULL +ee 8.142 12 14 16 +ff 8.142 18 20 22 +ALTER TABLE t_8114 DROP COLUMN Column_3; +select * from t_8114; +Column_2 Column_4 Column_5 Column_6 +aa 2 8 9 +bb 4 NULL NULL +cc 6 NULL NULL +dd 8 NULL NULL +dd 10 NULL NULL +ee 12 14 16 +ff 18 20 22 +drop table t_8114; +CREATE TABLE t1 (a6 VARCHAR(32)); +INSERT INTO t1 VALUES ('00:00:00.000000'); +INSERT INTO t1 VALUES ('00:00:00.000001'); +INSERT INTO t1 VALUES ('00:00:00.000002'); +INSERT INTO t1 VALUES ('00:00:00.000003'); +INSERT INTO t1 VALUES ('00:00:00.000004'); +INSERT INTO t1 VALUES ('00:00:00.000005'); +INSERT INTO t1 VALUES('00:00:00.000006'); +ALTER TABLE t1 ADD a0 VARCHAR(32), ADD a1 VARCHAR(32), ADD a2 VARCHAR(32), ADD a3 VARCHAR(32), ADD a4 VARCHAR(32), ADD a5 VARCHAR(32), ADD t0 TIME(0), ADD t1 TIME(1), ADD t2 TIME(2), ADD t3 TIME(3), ADD t4 TIME(4), ADD t5 TIME(5), ADD t6 TIME(6); +select * from t1; +a6 a0 a1 a2 a3 a4 a5 t0 t1 t2 t3 t4 t5 t6 +00:00:00.000000 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000001 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000002 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000003 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000004 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000005 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000006 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +UPDATE t1 SET a0=LEFT(a6, LENGTH(a6) - 6); +select * from t1; +a6 a0 a1 a2 a3 a4 a5 t0 t1 t2 t3 t4 t5 t6 +00:00:00.000000 00:00:00. NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000001 00:00:00. NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000002 00:00:00. NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000003 00:00:00. NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000004 00:00:00. NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000005 00:00:00. NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +00:00:00.000006 00:00:00. NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +drop table t1; +CREATE TABLE t1 (a0 VARCHAR(32),a1 VARCHAR(32),a2 VARCHAR(32),a3 VARCHAR(32),a4 VARCHAR(32),a5 VARCHAR(32),a6 VARCHAR(32), t0 TIME(0),t1 TIME(1), t2 TIME(2)); +insert into t1 values('00:00:00.000001','00:00:00.000001','00:00:00.000001','00:00:00.000001','00:00:00.000001','00:00:00.000001','00:00:00.000001','00:00:00.000001','00:00:00.000001','00:00:00.000001'); +select * from t1; +a0 a1 a2 a3 a4 a5 a6 t0 t1 t2 +00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00 00:00:00.0 00:00:00.00 +alter table t1 ADD t3 TIME(3), ADD t4 TIME(4), ADD t5 TIME(5), ADD t6 TIME(6); +select * from t1; +a0 a1 a2 a3 a4 a5 a6 t0 t1 t2 t3 t4 t5 t6 +00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00 00:00:00.0 00:00:00.00 NULL NULL NULL NULL +insert into t1 values('00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002','00:00:00.000002'); +select * from t1; +a0 a1 a2 a3 a4 a5 a6 t0 t1 t2 t3 t4 t5 t6 +00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00 00:00:00.0 00:00:00.00 NULL NULL NULL NULL +00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00 00:00:00.0 00:00:00.00 00:00:00.000 00:00:00.0000 00:00:00.00000 00:00:00.000002 +alter table t1 drop t6; +select * from t1; +a0 a1 a2 a3 a4 a5 a6 t0 t1 t2 t3 t4 t5 +00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00 00:00:00.0 00:00:00.00 NULL NULL NULL +00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00 00:00:00.0 00:00:00.00 00:00:00.000 00:00:00.0000 00:00:00.00000 +alter table t1 drop a2, drop a3; +select * from t1; +a0 a1 a4 a5 a6 t0 t1 t2 t3 t4 t5 +00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00 00:00:00.0 00:00:00.00 NULL NULL NULL +00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00 00:00:00.0 00:00:00.00 00:00:00.000 00:00:00.0000 00:00:00.00000 +insert into t1 values('00:00:00.000003','00:00:00.000003','00:00:00.000003','00:00:00.000003','00:00:00.000003','00:00:00.000003','00:00:00.000003','00:00:00.000003','00:00:00.000003','00:00:00.000003','00:00:00.000003'); +alter table t1 add t10 TIME(6), add t11 TIME(6), add t12 TIME(6); +select * from t1; +a0 a1 a4 a5 a6 t0 t1 t2 t3 t4 t5 t10 t11 t12 +00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00 00:00:00.0 00:00:00.00 NULL NULL NULL NULL NULL NULL +00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00 00:00:00.0 00:00:00.00 00:00:00.000 00:00:00.0000 00:00:00.00000 NULL NULL NULL +00:00:00.000003 00:00:00.000003 00:00:00.000003 00:00:00.000003 00:00:00.000003 00:00:00 00:00:00.0 00:00:00.00 00:00:00.000 00:00:00.0000 00:00:00.00000 NULL NULL NULL +alter table t1 drop t0, drop t1, drop t2; +select * from t1; +a0 a1 a4 a5 a6 t3 t4 t5 t10 t11 t12 +00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 00:00:00.000001 NULL NULL NULL NULL NULL NULL +00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000002 00:00:00.000 00:00:00.0000 00:00:00.00000 NULL NULL NULL +00:00:00.000003 00:00:00.000003 00:00:00.000003 00:00:00.000003 00:00:00.000003 00:00:00.000 00:00:00.0000 00:00:00.00000 NULL NULL NULL +drop table t1; +create table t1( +c1 int UNSIGNED not null, +c2 int, +c3 int, +c4 int, +c5 int, +c6 int, +c7 int, +c8 int, +c9 int, +c10 varchar(20), +c11 varchar(20), +c12 varchar(20), +gcol1 INTEGER GENERATED ALWAYS AS (c4 + c5) VIRTUAL +); +insert into t1 values(1,2,3,4,5,6,7,8,9,'aaa','bbb','ccc',default); +select * from t1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 gcol1 +1 2 3 4 5 6 7 8 9 aaa bbb ccc 9 +update t1 set c1 = 11, c2 = 12, c3 = 13, c4 = 14, c5 = 15, c6 = 16, c7 = 17, c8 = 18, c9 = 19, c10 = 'ddd', c11 = 'eee', c12 = 'fff', gcol1 = default where c1 = 1; +select * from t1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 gcol1 +11 12 13 14 15 16 17 18 19 ddd eee fff 29 +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_index.result b/mysql-test/suite/tianchi/r/ctc_ddl_index.result new file mode 100644 index 0000000..a09f5b1 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_index.result @@ -0,0 +1,387 @@ +drop table if exists DEMO; +create table DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +insert into DEMO values (1, 'LIOR', 35, 6.9); +insert into DEMO values (4, 'MIKE', 55, 99.92); +insert into DEMO values (8, 'ROMAN', 40, 94.1); +insert into DEMO values (16, 'DAN', 60, 1234567890); +insert into DEMO values (32, 'ZVI', 35, 777.666); +insert into DEMO values (1, 'Eitan', NULL, 4.9); +insert into DEMO values (888888, 'zhangdi', NULL, 10000.8); +insert into DEMO values (1131, 'Hisses', 1, NULL); +SELECT * FROM DEMO; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +1 Eitan NULL 4.9 +888888 zhangdi NULL 10000.8 +1131 Hisses 1 NULL +create index idx_id ON DEMO (ID); +ALTER TABLE DEMO RENAME INDEX idx_id TO idx_id1; +DROP INDEX idx_id1 ON DEMO; +create index idx_id1 ON DEMO (ID); +select * from DEMO where ID = 1; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID <= 16; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +select * from DEMO where ID < 16; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +select * from DEMO where ID between 4 and 32; +ID NAME AGE GRADE +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID >= 32; +ID NAME AGE GRADE +32 ZVI 35 777.666 +1131 Hisses 1 NULL +888888 zhangdi NULL 10000.8 +select * from DEMO where ID > 32; +ID NAME AGE GRADE +1131 Hisses 1 NULL +888888 zhangdi NULL 10000.8 +select * from DEMO where ID in (16,32); +ID NAME AGE GRADE +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID like '1%'; +ID NAME AGE GRADE +1 LIOR 35 6.9 +16 DAN 60 1234567890 +1 Eitan NULL 4.9 +1131 Hisses 1 NULL +select * from DEMO where ID = 1 order by ID; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID = 1 order by ID desc; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID <= 16 order by ID; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +select * from DEMO where ID < 16 order by ID desc; +ID NAME AGE GRADE +8 ROMAN 40 94.1 +4 MIKE 55 99.92 +1 Eitan NULL 4.9 +1 LIOR 35 6.9 +select * from DEMO where ID between 4 and 32 order by ID; +ID NAME AGE GRADE +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID between 4 and 32 order by ID desc; +ID NAME AGE GRADE +32 ZVI 35 777.666 +16 DAN 60 1234567890 +8 ROMAN 40 94.1 +4 MIKE 55 99.92 +select * from DEMO where ID >= 32 order by ID; +ID NAME AGE GRADE +32 ZVI 35 777.666 +1131 Hisses 1 NULL +888888 zhangdi NULL 10000.8 +select * from DEMO where ID > 32 order by ID desc; +ID NAME AGE GRADE +888888 zhangdi NULL 10000.8 +1131 Hisses 1 NULL +select * from DEMO where ID in (16,32) order by ID; +ID NAME AGE GRADE +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID in (16,32) order by ID desc; +ID NAME AGE GRADE +32 ZVI 35 777.666 +16 DAN 60 1234567890 +select * from DEMO where ID like '1%' order by ID; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +16 DAN 60 1234567890 +1131 Hisses 1 NULL +select * from DEMO where ID like '1%' order by ID desc; +ID NAME AGE GRADE +1131 Hisses 1 NULL +16 DAN 60 1234567890 +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +ALTER TABLE DEMO ADD INDEX idx_age (AGE); +select * from DEMO where AGE = 35; +ID NAME AGE GRADE +1 LIOR 35 6.9 +32 ZVI 35 777.666 +select * from DEMO where ID <= 100; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID < 100; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID between 35 and 50; +ID NAME AGE GRADE +DROP INDEX idx_id1 ON DEMO; +select * from DEMO where ID = 1; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID <= 16; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +1 Eitan NULL 4.9 +select * from DEMO where ID < 16; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +1 Eitan NULL 4.9 +select * from DEMO where ID between 4 and 32; +ID NAME AGE GRADE +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID >= 32; +ID NAME AGE GRADE +32 ZVI 35 777.666 +888888 zhangdi NULL 10000.8 +1131 Hisses 1 NULL +select * from DEMO where ID > 32; +ID NAME AGE GRADE +888888 zhangdi NULL 10000.8 +1131 Hisses 1 NULL +select * from DEMO where ID in (16,32); +ID NAME AGE GRADE +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID like '1%'; +ID NAME AGE GRADE +1 LIOR 35 6.9 +16 DAN 60 1234567890 +1 Eitan NULL 4.9 +1131 Hisses 1 NULL +select * from DEMO where ID = 1 order by ID; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID = 1 order by ID desc; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID <= 16 order by ID; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +select * from DEMO where ID < 16 order by ID desc; +ID NAME AGE GRADE +8 ROMAN 40 94.1 +4 MIKE 55 99.92 +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID between 4 and 32 order by ID; +ID NAME AGE GRADE +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID between 4 and 32 order by ID desc; +ID NAME AGE GRADE +32 ZVI 35 777.666 +16 DAN 60 1234567890 +8 ROMAN 40 94.1 +4 MIKE 55 99.92 +select * from DEMO where ID >= 32 order by ID; +ID NAME AGE GRADE +32 ZVI 35 777.666 +1131 Hisses 1 NULL +888888 zhangdi NULL 10000.8 +select * from DEMO where ID > 32 order by ID desc; +ID NAME AGE GRADE +888888 zhangdi NULL 10000.8 +1131 Hisses 1 NULL +select * from DEMO where ID in (16,32) order by ID; +ID NAME AGE GRADE +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID in (16,32) order by ID desc; +ID NAME AGE GRADE +32 ZVI 35 777.666 +16 DAN 60 1234567890 +select * from DEMO where ID like '1%' order by ID; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +16 DAN 60 1234567890 +1131 Hisses 1 NULL +select * from DEMO where ID like '1%' order by ID desc; +ID NAME AGE GRADE +1131 Hisses 1 NULL +16 DAN 60 1234567890 +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +DROP INDEX idx_age ON DEMO; +desc DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(19) YES NULL +AGE int YES NULL +GRADE double YES NULL +select * from DEMO where AGE = 35; +ID NAME AGE GRADE +1 LIOR 35 6.9 +32 ZVI 35 777.666 +select * from DEMO where ID <= 100; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +1 Eitan NULL 4.9 +select * from DEMO where ID < 100; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +1 Eitan NULL 4.9 +select * from DEMO where ID between 35 and 50; +ID NAME AGE GRADE +drop table DEMO; +CREATE TABLE t1 ( +f1 int(11) DEFAULT '0' NOT NULL, +f2 varchar(16) DEFAULT '' NOT NULL, +f5 text, +KEY index_name (f1,f2,f5(16)) +); +Warnings: +Warning 1681 Integer display width is deprecated and will be removed in a future release. +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int NOT NULL DEFAULT '0', + `f2` varchar(16) NOT NULL DEFAULT '', + `f5` text, + KEY `index_name` (`f1`,`f2`,`f5`(16)) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t1 VALUES (0,'traktor','1111111111111'); +INSERT INTO t1 VALUES (1,'traktor','1111111111111111111111111'); +INSERT INTO t1 VALUES (3,'traktor',repeat('a',8000)); +select count(*) from t1 where f2='traktor'; +count(*) +3 +select length(f5) from t1 where f2='traktor'; +length(f5) +13 +25 +8000 +drop table t1; +CREATE TABLE t1 ( +f1 int(11) DEFAULT '0' NOT NULL, +f2 varchar(16) DEFAULT '' NOT NULL, +f5 blob, +KEY index_name (f1,f2,f5(16)) +); +Warnings: +Warning 1681 Integer display width is deprecated and will be removed in a future release. +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int NOT NULL DEFAULT '0', + `f2` varchar(16) NOT NULL DEFAULT '', + `f5` blob, + KEY `index_name` (`f1`,`f2`,`f5`(16)) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t1 VALUES (0,'traktor','1111111111111'); +INSERT INTO t1 VALUES (1,'traktor','1111111111111111111111111'); +INSERT INTO t1 VALUES (3,'traktor',repeat('a',8000)); +select count(*) from t1 where f2='traktor'; +count(*) +3 +select length(f5) from t1 where f2='traktor'; +length(f5) +13 +25 +8000 +drop table t1; +CREATE TABLE t1 ( +f1 int(11) DEFAULT '0' NOT NULL, +f2 varchar(16) DEFAULT '' NOT NULL, +f5 varchar(9000), +KEY index_name (f1,f2,f5(16)) +); +Warnings: +Warning 1681 Integer display width is deprecated and will be removed in a future release. +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `f1` int NOT NULL DEFAULT '0', + `f2` varchar(16) NOT NULL DEFAULT '', + `f5` varchar(9000) DEFAULT NULL, + KEY `index_name` (`f1`,`f2`,`f5`(16)) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t1 VALUES (0,'traktor','1111111111111'); +INSERT INTO t1 VALUES (1,'traktor','1111111111111111111111111'); +INSERT INTO t1 VALUES (3,'traktor',repeat('a',8000)); +select count(*) from t1 where f2='traktor'; +count(*) +3 +select length(f5) from t1 where f2='traktor'; +length(f5) +13 +25 +8000 +drop table t1; +create table t1 (t blob, key(t(10))); +insert into t1 values('a'); +select count(*) from t1 where t like 'a%'; +count(*) +1 +drop table t1; +create table t1 (f1 binary(5)) engine=CTC; +insert into t1 values ('w'), ('w'); +create unique index index_t1 on t1(f1(4)); +ERROR 23000: Duplicate entry for key 't1.index_t1' +drop table t1; +create table t1 (v varchar(10), t varchar(50), key(t(5))); +insert into t1 values('a','a'); +select count(*) from t1 where t like 'a%'; +count(*) +1 +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_max_reclength.result b/mysql-test/suite/tianchi/r/ctc_ddl_max_reclength.result new file mode 100644 index 0000000..31580e0 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_max_reclength.result @@ -0,0 +1,47 @@ +CREATE PROCEDURE create_table_columns_char(table_name varchar(50), columns int) +BEGIN +DECLARE i INT DEFAULT 1; +SET @sql_text = CONCAT('create TABLE ', table_name, ' ('); +while (i < columns) do +SET @sql_text = CONCAT(@sql_text, CONCAT('col_', i), ' char(255),'); +set i = i + 1; +end while; +SET @sql_text = CONCAT(@sql_text, CONCAT('col_', i), ' char(255)) CHARSET=ASCII;'); +#insert into DEMO values(@sql_text); +PREPARE stmt FROM @sql_text; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; +END| +create function rand_string(n int) returns varchar(255) +begin +declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ'; +declare return_str varchar(255) default ''; +declare i int default 0; +while i 100 THEN +SET new.AGE = 100; +END IF; +INSERT INTO DEMO_TRIGGER_LOG VALUES('update', NEW.NAME); +END| +create TRIGGER TRIGGER_TSE3 AFTER DELETE ON DEMO FOR EACH ROW +BEGIN +IF old.AGE > 0 THEN +INSERT INTO DEMO_TRIGGER_LOG VALUES('delete', old.NAME); +END IF; +END| +SHOW TRIGGERS; +Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation +TRIGGER_TSE1 INSERT DEMO BEGIN +IF NEW.AGE <= 0 THEN +INSERT INTO DEMO_TRIGGER_LOG VALUES('insert', NEW.NAME); +END IF; +END AFTER # ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +TRIGGER_TSE2 UPDATE DEMO BEGIN +IF NEW.AGE < 0 THEN +SET NEW.AGE = 0; +ELSEIF new.AGE > 100 THEN +SET new.AGE = 100; +END IF; +INSERT INTO DEMO_TRIGGER_LOG VALUES('update', NEW.NAME); +END BEFORE # ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +TRIGGER_TSE3 DELETE DEMO BEGIN +IF old.AGE > 0 THEN +INSERT INTO DEMO_TRIGGER_LOG VALUES('delete', old.NAME); +END IF; +END AFTER # ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +insert into DEMO values (1, 'LIOR', -1, 6.9); +insert into DEMO values (4, 'MIKE', 55, 99.92); +insert into DEMO values (8, 'ROMAN', 40, 94.1); +insert into DEMO values (16, 'DAN', 60, 1234567890); +insert into DEMO values (32, 'ZVI', 35, 777.666); +select * from DEMO; +ID NAME AGE GRADE +1 LIOR -1 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO_TRIGGER_LOG; +ACTION NAME +insert LIOR +UPDATE DEMO SET AGE=200 where ID=4; +UPDATE DEMO SET AGE=-50 where ID=8; +select * from DEMO; +ID NAME AGE GRADE +1 LIOR -1 6.9 +4 MIKE 100 99.92 +8 ROMAN 0 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO_TRIGGER_LOG; +ACTION NAME +insert LIOR +update MIKE +update ROMAN +DELETE FROM DEMO WHERE ID=1; +DELETE FROM DEMO WHERE ID=16; +select * from DEMO; +ID NAME AGE GRADE +4 MIKE 100 99.92 +8 ROMAN 0 94.1 +32 ZVI 35 777.666 +select * from DEMO_TRIGGER_LOG; +ACTION NAME +insert LIOR +update MIKE +update ROMAN +delete DAN +SHOW TRIGGERS; +Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation +TRIGGER_TSE1 INSERT DEMO BEGIN +IF NEW.AGE <= 0 THEN +INSERT INTO DEMO_TRIGGER_LOG VALUES('insert', NEW.NAME); +END IF; +END AFTER # ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +TRIGGER_TSE2 UPDATE DEMO BEGIN +IF NEW.AGE < 0 THEN +SET NEW.AGE = 0; +ELSEIF new.AGE > 100 THEN +SET new.AGE = 100; +END IF; +INSERT INTO DEMO_TRIGGER_LOG VALUES('update', NEW.NAME); +END BEFORE # ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +TRIGGER_TSE3 DELETE DEMO BEGIN +IF old.AGE > 0 THEN +INSERT INTO DEMO_TRIGGER_LOG VALUES('delete', old.NAME); +END IF; +END AFTER # ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION root@localhost utf8mb4 utf8mb4_0900_ai_ci utf8mb4_0900_ai_ci +DROP TRIGGER TRIGGER_TSE; +ERROR HY000: Trigger does not exist +DROP TRIGGER IF EXISTS TRIGGER_TSE; +Warnings: +Note 1360 Trigger does not exist +DROP TRIGGER IF EXISTS TRIGGER_TSE1; +DROP TRIGGER IF EXISTS TRIGGER_TSE2; +DROP TRIGGER IF EXISTS TRIGGER_TSE3; +SHOW TRIGGERS; +Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation +drop table DEMO; +drop table DEMO_TRIGGER_LOG; diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_unsupport_command.result b/mysql-test/suite/tianchi/r/ctc_ddl_unsupport_command.result new file mode 100644 index 0000000..02d0664 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_unsupport_command.result @@ -0,0 +1,162 @@ +CREATE EVENT e_totals ON SCHEDULE AT '2006-02-10 23:59:00' DO INSERT INTO test.totals VALUES (NOW()); +ERROR HY000: Cantian doesn't support current operation +ALTER EVENT no_such_event ON SCHEDULE EVERY '2:3' DAY_HOUR; +ERROR HY000: Cantian doesn't support current operation +DROP EVENT e_totals; +ERROR HY000: Cantian doesn't support current operation +CREATE RESOURCE GROUP rg1 TYPE = USER VCPU = 0 THREAD_PRIORITY = 19; +ERROR HY000: Cantian doesn't support current operation +ALTER RESOURCE GROUP rg2 THREAD_PRIORITY = 5; +ERROR HY000: Cantian doesn't support current operation +SET RESOURCE GROUP rg1; +ERROR HY000: Cantian doesn't support current operation +DROP RESOURCE GROUP rg1; +ERROR HY000: Cantian doesn't support current operation +CREATE SPATIAL REFERENCE SYSTEM 13001003 NAME 'TEST13001003 Radian WGS 84' DEFINITION 'GEOGCS["Radian WGS 84",DATUM["World Geodetic System 1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["radian",1.0,AUTHORITY["EPSG","9101"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4326"]]'; +ERROR HY000: Cantian doesn't support current operation +DROP SPATIAL REFERENCE SYSTEM 13001000; +ERROR HY000: Cantian doesn't support current operation +CREATE SERVER s FOREIGN DATA WRAPPER mysql OPTIONS (USER 'Remote', HOST '198.51.100.106', DATABASE 'test'); +ERROR HY000: Cantian doesn't support current operation +ALTER SERVER s OPTIONS (USER 'sally'); +ERROR HY000: Cantian doesn't support current operation +DROP SERVER s; +ERROR HY000: Cantian doesn't support current operation +ALTER INSTANCE RELOAD KEYRING; +ERROR HY000: Cantian doesn't support current operation +ALTER INSTANCE ROTATE BINLOG MASTER KEY; +ERROR HY000: Cantian doesn't support current operation +create tablespace ts01 add datafile 'ts_01.ibd' autoextend_size=1M; +alter tablespace ts01 add datafile 'ts_02.ibd' autoextend_size=4M; +ERROR 42000: The storage engine for the table doesn't support ALTER TABLESPACE ... ADD DATAFILE +alter tablespace ts01 drop datafile 'ts_01.ibd'; +ERROR 42000: The storage engine for the table doesn't support ALTER TABLESPACE ... DROP DATAFILE +drop tablespace ts01; +CREATE TABLESPACE s1 ADD DATAFILE 's1.ibd' ENGINE InnoDB; +ERROR HY000: Once the CTC is loaded, it must be used as the default engine. To specify other engine for table, uninstall the CTC first. +create tablespace test1 add datafile "/cytest.ibd"; +ERROR HY000: The DATAFILE location must be in a known directory. +create tablespace test1 add datafile " cytest.ibd"; +ERROR HY000: The DATAFILE location must be in a known directory. +create tablespace test1 add datafile "cytest.ib"; +ERROR HY000: The ADD DATAFILE filepath must end with '.ibd'. +create table t1 (col1 INT, col2 INT, col3 INT); +alter table t1 force; +drop table t1; +create table t1 (a int, b int); +alter table t1 add column c1 int first; +alter table t1 add column c2 int after a; +alter table t1 modify a int after b; +alter table t1 modify b int first; +alter table t1 change a a int after b; +alter table t1 change b b int first; +drop table t1; +SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; +Warnings: +Warning 3655 CTC: The Function of REPEATABLE READ transaction isolation is in progress. +SET transaction_isolation='repeatable-read'; +Warnings: +Warning 3655 CTC: The Function of REPEATABLE READ transaction isolation is in progress. +create table t1 (a char(10)); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` char(10) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table t1 change a a char(10) character set ascii; +alter table t1 modify a char(10) character set ascii; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` char(10) CHARACTER SET ascii COLLATE ascii_general_ci DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +drop table t1; +SET @@global.default_storage_engine = DEFAULT; +SET @@global.default_storage_engine = CTC; +SET @@global.default_storage_engine = Innodb; +ERROR HY000: Once the CTC is loaded, it must be set as the default engine. To modify the setting, uninstall the CTC first. +SET @@global.default_storage_engine = @global_engine; +ERROR HY000: [CTC]:Please make sure global_engine has value in it. +SET @global_engine = 'Innodb'; +SET @@global.default_storage_engine = @global_engine; +ERROR HY000: Once the CTC is loaded, it must be set as the default engine. To modify the setting, uninstall the CTC first. +SET @global_engine = 'DEFAULT'; +SET @@global.default_storage_engine = @global_engine; +SET @global_engine = 'CTC'; +SET @@global.default_storage_engine = @global_engine; +SET @tmpvar = "DEFAULT"; +SET GLOBAL default_storage_engine = @tmpvar; +SET @tmpvar = "CTC"; +SET GLOBAL default_storage_engine = @tmpvar; +SET @tmpvar = "Innodb"; +SET GLOBAL default_storage_engine = @tmpvar; +ERROR HY000: Once the CTC is loaded, it must be set as the default engine. To modify the setting, uninstall the CTC first. +SET @@global.transaction_isolation = @global_start_value; +ERROR HY000: [CTC]:Please make sure global_start_value has value in it. +SET @global_start_value = @@global.transaction_isolation; +SET @@global.transaction_isolation = @global_start_value; +Warnings: +Warning 3655 CTC: The Function of REPEATABLE READ transaction isolation is in progress. +SET @global_start_value = 'repeatable-read'; +SET @@global.transaction_isolation = @global_start_value; +Warnings: +Warning 3655 CTC: The Function of REPEATABLE READ transaction isolation is in progress. +SET @global_start_value = 1; +SET @@global.transaction_isolation = @global_start_value; +SET @global_start_value = 'repeatable-read'; +SET @@global.transaction_isolation = @global_start_value; +Warnings: +Warning 3655 CTC: The Function of REPEATABLE READ transaction isolation is in progress. +SET @global_start_value = 'read-uncommitted'; +SET @@global.transaction_isolation = @global_start_value; +ERROR HY000: CTC STORAGE ENGINE ONLY SUPPORT READ_COMMITTED TRANSACTION ISOLATION LEVEL. +SET @global_start_value = 'serializable'; +SET @@global.transaction_isolation = @global_start_value; +ERROR HY000: CTC STORAGE ENGINE ONLY SUPPORT READ_COMMITTED TRANSACTION ISOLATION LEVEL. +SET @global_start_value = 'read-committed'; +SET @@global.transaction_isolation = @global_start_value; +SET @@global.transaction_isolation = 'repeatable-read'; +Warnings: +Warning 3655 CTC: The Function of REPEATABLE READ transaction isolation is in progress. +SET @@global.transaction_isolation = DEFAULT; +SET @@global.max_connections = 5000; +ERROR HY000: Current SE can only provide 1365 connections for one mysql-server +SET @@global.max_connections = 0; +ERROR HY000: Current SE cannot provide less than one connection. +SET @@global.max_connections = DEFAULT; +SET @tmp_max_connections = 5000; +SET @@global.max_connections = @tmp_max_connections; +ERROR HY000: Current SE can only provide 1365 connections for one mysql-server +create table t1 (a int, b int generated always as (a+1) key); +ERROR HY000: 'Defining a virtual generated column as primary key' is not supported for generated columns. +CREATE TABLE t (a INT, b INT, c INT GENERATED ALWAYS AS(a+b), d INT GENERATED ALWAYS AS(a+b+b), KEY idxa (a),KEY vidxcd (c, d)); +ERROR HY000: Cantian does not support index on virtual generated column. +CREATE TABLE tb(id INT PRIMARY KEY, t1 LONGBLOB, t2 LONGBLOB, v1 CHAR(2) AS (SUBSTR(t1,2,2)) VIRTUAL, INDEX(id,v1)); +ERROR HY000: Cantian does not support index on virtual generated column. +CREATE TABLE t5 (a int, b int GENERATED ALWAYS AS (a) VIRTUAL NOT NULL); +ALTER TABLE t5 ADD UNIQUE INDEX (b); +ERROR HY000: Cantian does not support index on virtual generated column. +DROP TABLE t5; +SET GLOBAL protocol_compression_algorithms = @@global.protocol_compression_algorithms; +SET GLOBAL transaction_isolation = @@global.transaction_isolation; +SET GLOBAL max_connections = @@global.max_connections; +SET admin_tls_version = @@SESSION.admin_tls_version; +ERROR HY000: Variable 'admin_tls_version' is a GLOBAL variable and should be set with SET GLOBAL +SET @@global.sql_log_bin = 0; +ERROR HY000: Variable 'sql_log_bin' is a SESSION variable and can't be used with SET GLOBAL +SET @@global.timestamp = "1000"; +ERROR HY000: Variable 'timestamp' is a SESSION variable and can't be used with SET GLOBAL +SET admin_ssl_crl = @@SESSION.admin_ssl_crl; +ERROR HY000: Variable 'admin_ssl_crl' is a GLOBAL variable and should be set with SET GLOBAL +SET admin_ssl_crlpath = @@SESSION.admin_ssl_crlpath; +ERROR HY000: Variable 'admin_ssl_crlpath' is a GLOBAL variable and should be set with SET GLOBAL +SET admin_ssl_ca = @@SESSION.admin_ssl_ca; +ERROR HY000: Variable 'admin_ssl_ca' is a GLOBAL variable and should be set with SET GLOBAL +SET admin_tls_ciphersuites = @@SESSION.admin_tls_ciphersuites; +ERROR HY000: Variable 'admin_tls_ciphersuites' is a GLOBAL variable and should be set with SET GLOBAL +SET admin_ssl_capath = @@SESSION.admin_ssl_capath; +ERROR HY000: Variable 'admin_ssl_capath' is a GLOBAL variable and should be set with SET GLOBAL +SET admin_ssl_cert = @@SESSION.admin_ssl_cert; +ERROR HY000: Variable 'admin_ssl_cert' is a GLOBAL variable and should be set with SET GLOBAL +SET admin_ssl_key = @@SESSION.admin_ssl_key; +ERROR HY000: Variable 'admin_ssl_key' is a GLOBAL variable and should be set with SET GLOBAL diff --git a/mysql-test/suite/tianchi/r/ctc_ddl_view.result b/mysql-test/suite/tianchi/r/ctc_ddl_view.result new file mode 100644 index 0000000..111fdbb --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_ddl_view.result @@ -0,0 +1,78 @@ +drop table if exists DEMO; +drop table if exists DEMO2; +create table DEMO (ID integer not null, NAME varchar(20), AGE integer, GRADE real); +DESC DEMO; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(20) YES NULL +AGE int YES NULL +GRADE double YES NULL +insert into DEMO values (1, 'LIOR', 35, 6.9); +insert into DEMO values (4, 'MIKE', 55, 99.92); +insert into DEMO values (8, 'ROMAN', 40, 94.1); +insert into DEMO values (16, 'DAN', 60, 1234567890); +insert into DEMO values (32, 'ZVI', 35, 777.666); +insert into DEMO values (1, 'KSLDK', 90, 123.36); +insert into DEMO values (1, 'BILL', 31, 76.1); +select * from DEMO; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +1 KSLDK 90 123.36 +1 BILL 31 76.1 +create view id_name as select ID, NAME from DEMO where ID = 1; +desc id_name; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(20) YES NULL +select * from id_name; +ID NAME +1 LIOR +1 KSLDK +1 BILL +insert into DEMO values (2, 'ALEX', 54, 22.45); +insert into DEMO values (7, 'ALICE', 73, 793); +alter view id_name as select NAME, AGE from DEMO; +desc id_name; +Field Type Null Key Default Extra +NAME varchar(20) YES NULL +AGE int YES NULL +select * from id_name; +NAME AGE +LIOR 35 +MIKE 55 +ROMAN 40 +DAN 60 +ZVI 35 +KSLDK 90 +BILL 31 +ALEX 54 +ALICE 73 +drop view id_name; +create table DEMO2 (CLASS integer not null, COURSE varchar(20), NAME varchar(20)); +DESC DEMO2; +Field Type Null Key Default Extra +CLASS int NO NULL +COURSE varchar(20) YES NULL +NAME varchar(20) YES NULL +insert into DEMO2 values (1011, 'CHINESE','LIOR'); +insert into DEMO2 values (1016, 'BIOLOGY', 'ALEX'); +insert into DEMO2 values (2033, 'HISTORY', 'ALICE'); +insert into DEMO2 values (3210, 'PE', 'SS'); +create view combine_view as select DEMO.ID, DEMO.NAME, DEMO2.COURSE from DEMO, DEMO2 where DEMO.NAME = DEMO2.NAME; +desc combine_view; +Field Type Null Key Default Extra +ID int NO NULL +NAME varchar(20) YES NULL +COURSE varchar(20) YES NULL +select * from combine_view; +ID NAME COURSE +1 LIOR CHINESE +2 ALEX BIOLOGY +7 ALICE HISTORY +drop view combine_view; +drop table DEMO; +drop table DEMO2; diff --git a/mysql-test/suite/tianchi/r/ctc_delete_time.result b/mysql-test/suite/tianchi/r/ctc_delete_time.result new file mode 100644 index 0000000..948d340 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_delete_time.result @@ -0,0 +1,739 @@ +DROP TABLE IF EXISTS t1,t2,t3,t4; +CREATE TABLE t1(c1 TIME NOT NULL, c2 TIME NULL, PRIMARY KEY(c1)); +CREATE TABLE t2(c1 TIME NOT NULL, c2 TIME NOT NULL, PRIMARY KEY(c1,c2)); +CREATE TABLE t3(c1 TIME NOT NULL, c2 TIME NULL, UNIQUE INDEX idx(c1,c2)); +CREATE TABLE t4(c1 TIME NOT NULL, c2 TIME NULL); +INSERT INTO t1 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59'); +INSERT INTO t2 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59'); +INSERT INTO t3 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59'); +INSERT INTO t4 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59'); +INSERT INTO t1 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53'); +INSERT INTO t2 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53'); +INSERT INTO t3 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53'); +INSERT INTO t4 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53'); +INSERT INTO t1 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50); +INSERT INTO t2 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50); +INSERT INTO t3 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50); +INSERT INTO t4 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50); +SET TIMESTAMP=1233216687; +INSERT INTO t1 VALUES(CURRENT_TIME(),CURRENT_TIME()); +INSERT INTO t2 VALUES(CURRENT_TIME(),CURRENT_TIME()); +INSERT INTO t3 VALUES(CURRENT_TIME(),CURRENT_TIME()); +INSERT INTO t4 VALUES(CURRENT_TIME(),CURRENT_TIME()); +INSERT INTO t1 VALUES('123456',null); +INSERT INTO t3 VALUES('123456',null); +INSERT INTO t4 VALUES('123456',null); +SELECT * FROM t1; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +SELECT * FROM t2; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +SELECT * FROM t3; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +SELECT * FROM t4; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +SELECT c1 FROM t1 WHERE c1='00:00:07'; +c1 +00:00:07 +DELETE FROM t1 WHERE c1='00:00:07'; +SELECT c1 FROM t1; +c1 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +12:34:56 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +SELECT c1 FROM t2 WHERE c1='-838:59:59' AND c2='-838:59:59'; +c1 +-838:59:59 +DELETE FROM t2 WHERE c1='-838:59:59' AND c2='-838:59:59'; +SELECT c1 FROM t2; +c1 +-838:59:55 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +SELECT c2 FROM t3 WHERE c2=null; +c2 +DELETE FROM t3 WHERE c2=null; +SELECT c2 FROM t3; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +SELECT c1 FROM t4 WHERE c1 < '000009'; +c1 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +DELETE FROM t4 WHERE c1 < '000009' ORDER BY c1 LIMIT 3; +SELECT c1 FROM t4; +c1 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +12:34:56 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +DELETE FROM t1 WHERE c1='00:00:09' AND c1='01:01:01'; +SELECT c2 FROM t1; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +DELETE FROM t2 WHERE c2=000400 OR c2= 000900; +SELECT c1 FROM t2; +c1 +-838:59:55 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +DELETE FROM t2 WHERE c1 IN ('100:04:04',005454,'2:2:2',111111) ORDER BY c1 LIMIT 2; +SELECT c2 FROM t2; +c2 +-838:59:55 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:09:09 +00:13:13 +00:51:51 +01:01:01 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +DELETE t1,t2,t3,t4 FROM t1,t2,t3,t4 WHERE t1.c1='00:13:13' AND t2.c1=080808 AND t4.c1='00:04:00' AND t3.c2=020202; +DELETE FROM t1 WHERE c1='00:09:09' AND c2='00:09:09'; +SELECT * FROM t1; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +DELETE FROM t1 WHERE c1 BETWEEN 080000 AND 100000; +SELECT * FROM t1; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +DELETE FROM t1 WHERE c1 IN (222222,8385959,1500000); +SELECT * FROM t1; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +DELETE t1,t2 FROM t1,t2 WHERE t1.c1=t2.c1 AND t1.c2=t2.c2; +SELECT * FROM t1; +c1 c2 +-838:59:59 -838:59:59 +00:04:00 00:04:00 +00:54:54 00:54:54 +02:02:02 02:02:02 +12:34:56 NULL +SELECT * FROM t2; +c1 c2 +00:00:07 00:00:07 +00:09:09 00:09:09 +00:13:13 00:13:13 +150:00:00 150:00:00 +838:59:59 838:59:59 +SELECT * FROM t3; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +SELECT * FROM t4; +c1 c2 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +DROP TABLE IF EXISTS t1,t2,t3,t4; diff --git a/mysql-test/suite/tianchi/r/ctc_dml_decimal_table.result b/mysql-test/suite/tianchi/r/ctc_dml_decimal_table.result new file mode 100644 index 0000000..1494a88 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_dml_decimal_table.result @@ -0,0 +1,324 @@ +drop database if exists test; +CREATE database test; +use test; +drop table if exists t1,t2,t3; +CREATE TABLE t1(c1 NUMERIC, c2 NUMERIC, c3 NUMERIC); +alter table t1 add index idx(c1, c2, c3); +insert into t1(c1, c2, c3) values(10, 1, 10); +insert into t1(c1, c2, c3) values(10, 1, 11); +insert into t1(c1, c2, c3) values(8, 1, 11); +SELECT * FROM t1; +c1 c2 c3 +8 1 11 +10 1 10 +10 1 11 +SELECT * FROM t1 where c1 =10; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t1 where c1 =10 and c2 =1; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t1 where c1 =10 and c2 =1 and c3 = 10; +c1 c2 c3 +10 1 10 +SELECT * FROM t1 where c1 >= 10; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t1 where c1 <= 10; +c1 c2 c3 +8 1 11 +10 1 10 +10 1 11 +SELECT * FROM t1 where c2 = 1; +c1 c2 c3 +8 1 11 +10 1 10 +10 1 11 +DROP table t1; +CREATE TABLE t2(c1 DECIMAL, c2 DECIMAL, c3 DECIMAL); +alter table t2 add index idx(c1, c2, c3); +insert into t2(c1, c2, c3) values(10, 1, 10); +insert into t2(c1, c2, c3) values(10, 1, 11); +SELECT * FROM t2; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t2 where c1 = 10; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t2 where c1 = 10 and c2 = 1; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t2 where c1 = 10 and c2 = 1 and c3 = 10; +c1 c2 c3 +10 1 10 +SELECT * FROM t2 where c2 = 1; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t2 where c3 = 10; +c1 c2 c3 +10 1 10 +DROP table t2; +CREATE TABLE t2(c1 DECIMAL, c2 int, c3 NUMERIC); +alter table t2 add index idx(c1, c2, c3); +insert into t2(c1, c2, c3) values(10, 1, 10); +insert into t2(c1, c2, c3) values(10, 1, 11); +SELECT * FROM t2; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t2 where c1 = 10; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t2 where c1 = 10 and c2 = 1; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t2 where c1 = 10 and c2 = 1 and c3 = 10; +c1 c2 c3 +10 1 10 +DROP table t2; +CREATE TABLE t1(c1 NUMERIC key); +insert into t1(c1) values(10); +insert into t1(c1) values(1); +insert into t1(c1) values(5); +SELECT * FROM t1; +c1 +1 +5 +10 +SELECT * FROM t1 where c1 = 10; +c1 +10 +DROP TABLE t1; +CREATE TABLE t1(c1 DECIMAL key); +insert into t1(c1) values(10); +insert into t1(c1) values(1); +insert into t1(c1) values(5); +SELECT * FROM t1; +c1 +1 +5 +10 +SELECT * FROM t1 where c1 = 10; +c1 +10 +DROP TABLE t1; +CREATE TABLE t1(c1 NUMERIC, c2 NUMERIC, c3 NUMERIC); +alter table t1 add index idx(c1); +insert into t1(c1, c2, c3) values(10, 1, 10); +insert into t1(c1, c2, c3) values(10, 1, 11); +insert into t1(c1, c2, c3) values(8, 1, 11); +SELECT * FROM t1; +c1 c2 c3 +10 1 10 +10 1 11 +8 1 11 +SELECT c1 FROM t1 where c1 = 10; +c1 +10 +10 +SELECT c1 FROM t1 where c1 >= 10; +c1 +10 +10 +DROP table t1; +CREATE TABLE t2(c1 DECIMAL, c2 int, c3 NUMERIC, c4 int, c5 int, c6 DECIMAL, c7 int, +c8 int, c9 int, c10 int, c11 int, c12 int, c13 int, c14 int, c15 int, c16 int, c17 int); +alter table t2 add index idx(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12, c13, c14); +insert into t2(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12, c13, c14, c15, c16, c17) values(1, 2, 3, null, 5, 6, 7, 8, 9, 10, 11, null, 13, 14, 15, 16, 17); +insert into t2(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12, c13, c14, c15, c16, c17) values(2, null, null, 4, 5, 6, 7, 8, 9, 10, 11, null, 13, 14, 15, 16, 17); +insert into t2(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12, c13, c14, c15, c16, c17) values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +SELECT * FROM t2; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 +1 2 3 NULL 5 6 7 8 9 10 11 NULL 13 14 15 16 17 +2 NULL NULL 4 5 6 7 8 9 10 11 NULL 13 14 15 16 17 +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 +SELECT c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14 FROM t2 where c1 = 1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 +1 2 3 NULL 5 6 7 8 9 10 11 NULL 13 14 +1 2 3 4 5 6 7 8 9 10 11 12 13 14 +SELECT c1, c2 , c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14 FROM t2 where c1 >= 1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 +1 2 3 NULL 5 6 7 8 9 10 11 NULL 13 14 +1 2 3 4 5 6 7 8 9 10 11 12 13 14 +2 NULL NULL 4 5 6 7 8 9 10 11 NULL 13 14 +SELECT * FROM t2 where c1 = 1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 +1 2 3 NULL 5 6 7 8 9 10 11 NULL 13 14 15 16 17 +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 +DROP table t2; +CREATE TABLE t2(c1 DECIMAL, c2 int, c3 NUMERIC, c4 int, c5 int, c6 DECIMAL, c7 int, +c8 int, c9 int, c10 int, c11 int, c12 int, c13 int, c14 int, c15 int, c16 int, c17 int); +alter table t2 add index idx(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12); +insert into t2(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12, c13, c14, c15, c16, c17) values(1, 2, 3, null, 5, 6, 7, 8, 9, 10, 11, null, 13, 14, 15, 16, 17); +insert into t2(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12, c13, c14, c15, c16, c17) values(2, null, null, 4, 5, 6, 7, 8, 9, 10, 11, null, 13, 14, 15, 16, 17); +insert into t2(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12, c13, c14, c15, c16, c17) values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +SELECT * FROM t2; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 +1 2 3 NULL 5 6 7 8 9 10 11 NULL 13 14 15 16 17 +2 NULL NULL 4 5 6 7 8 9 10 11 NULL 13 14 15 16 17 +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 +SELECT c1, c2 , c3, c4, c5, c6, c7, c8, c9, c10, c11, c12 FROM t2 where c1 = 1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 +1 2 3 NULL 5 6 7 8 9 10 11 NULL +1 2 3 4 5 6 7 8 9 10 11 12 +SELECT c1, c2 , c3, c4, c5, c6, c7, c8, c9, c10, c11, c12 FROM t2 where c1 >= 1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 +1 2 3 NULL 5 6 7 8 9 10 11 NULL +1 2 3 4 5 6 7 8 9 10 11 12 +2 NULL NULL 4 5 6 7 8 9 10 11 NULL +SELECT c1, c2 , c3, c4, c5, c6, c7, c8, c9, c10, c11, c12 FROM t2 where c1 <= 2; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 +1 2 3 NULL 5 6 7 8 9 10 11 NULL +1 2 3 4 5 6 7 8 9 10 11 12 +2 NULL NULL 4 5 6 7 8 9 10 11 NULL +SELECT * FROM t2 where c1 = 1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 +1 2 3 NULL 5 6 7 8 9 10 11 NULL 13 14 15 16 17 +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 +DROP table t2; +CREATE TABLE t2(c1 DECIMAL, c2 int, c3 NUMERIC, c4 int, c5 int, c6 DECIMAL, c7 int, +c8 int, c9 int, c10 int, c11 int, c12 int, c13 int, c14 int, c15 int, c16 int, c17 int); +alter table t2 add index idx(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11); +insert into t2(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12, c13, c14, c15, c16, c17) values(1, 2, 3, null, 5, 6, 7, 8, 9, 10, 11, null, 13, 14, 15, 16, 17); +insert into t2(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12, c13, c14, c15, c16, c17) values(2, null, null, 4, 5, 6, 7, 8, 9, 10, 11, null, 13, 14, 15, 16, 17); +insert into t2(c1, c2, c3, c4, c5, c6, c7, c8, c9, +c10, c11, c12, c13, c14, c15, c16, c17) values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17); +SELECT * FROM t2; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 +1 2 3 NULL 5 6 7 8 9 10 11 NULL 13 14 15 16 17 +2 NULL NULL 4 5 6 7 8 9 10 11 NULL 13 14 15 16 17 +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 +SELECT c1, c2 , c3, c4, c5, c6, c7, c8, c9, c10, c11 FROM t2 where c1 = 1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 +1 2 3 NULL 5 6 7 8 9 10 11 +1 2 3 4 5 6 7 8 9 10 11 +SELECT c1, c2 , c3, c4, c5, c6, c7, c8, c9, c10, c11 FROM t2 where c1 >= 1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 +1 2 3 NULL 5 6 7 8 9 10 11 +1 2 3 4 5 6 7 8 9 10 11 +2 NULL NULL 4 5 6 7 8 9 10 11 +SELECT c1, c2 , c3, c4, c5, c6, c7, c8, c9, c10, c11 FROM t2 where c1 <= 2; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 +1 2 3 NULL 5 6 7 8 9 10 11 +1 2 3 4 5 6 7 8 9 10 11 +2 NULL NULL 4 5 6 7 8 9 10 11 +SELECT * FROM t2 where c1 = 1; +c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 +1 2 3 NULL 5 6 7 8 9 10 11 NULL 13 14 15 16 17 +1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 +DROP table t2; +CREATE TABLE t1(c1 int key); +insert into t1(c1) values(10); +insert into t1(c1) values(1); +insert into t1(c1) values(5); +SELECT * FROM t1; +c1 +1 +5 +10 +SELECT * FROM t1 where c1 = 10; +c1 +10 +DROP TABLE t1; +CREATE TABLE t3(c1 NUMERIC, c2 int, c3 NUMERIC); +alter table t3 add index idx(c1); +insert into t3(c1, c2, c3) values(10, 1, 10); +insert into t3(c1, c2, c3) values(10, 1, 11); +SELECT * FROM t3; +c1 c2 c3 +10 1 10 +10 1 11 +SELECT * FROM t3 where c1 =10; +c1 c2 c3 +10 1 10 +10 1 11 +DROP table t3; +CREATE TABLE t1(c1 DECIMAL(10,5) UNSIGNED NOT NULL, c2 DECIMAL(10,5) SIGNED NULL, c3 DECIMAL, c4 INT, UNIQUE INDEX idx(c1,c2)); +Warnings: +Warning 1681 UNSIGNED for decimal and floating point data types is deprecated and support for it will be removed in a future release. +INSERT INTO t1 VALUES ('11111.11111','-11111.11111','1111111111',1); +INSERT INTO t1 VALUES ('22222.22222','-22222.22222','2222222222',2); +INSERT INTO t1 VALUES ('33333.33333','-33333.33333','3333333333',3); +INSERT INTO t1 VALUES ('44444.44444','-44444.44444','4444444444',4); +INSERT INTO t1 VALUES ('55555.55555','-55555.55555','5555555555',5); +INSERT INTO t1 VALUES ('66666.66666','-66666.66666','6666666666',6); +INSERT INTO t1 VALUES ('77777.77777','-77777.77777','7777777777',7); +INSERT INTO t1 VALUES ('88888.88888','-88888.88888','8888888888',8); +INSERT INTO t1 VALUES ('99999.99999','-99999.99999','9999999999',9); +SELECT c1,c2 FROM t1; +c1 c2 +11111.11111 -11111.11111 +22222.22222 -22222.22222 +33333.33333 -33333.33333 +44444.44444 -44444.44444 +55555.55555 -55555.55555 +66666.66666 -66666.66666 +77777.77777 -77777.77777 +88888.88888 -88888.88888 +99999.99999 -99999.99999 +DROP table t1; +CREATE TABLE t1(c1 INT, c2 VARCHAR(20), c3 DECIMAL(10,5) UNSIGNED NOT NULL, c4 DECIMAL(10,5) SIGNED NULL, UNIQUE INDEX idx(c2,c3)); +Warnings: +Warning 1681 UNSIGNED for decimal and floating point data types is deprecated and support for it will be removed in a future release. +INSERT INTO t1 VALUES (1,'yy','11111.11111','-11111.11111'); +INSERT INTO t1 VALUES (2,'yy','22222.22222','-22222.22222'); +INSERT INTO t1 VALUES (3,'yy','33333.33333','-33333.33333'); +INSERT INTO t1 VALUES (4,'yy','44444.44444','-44444.44444'); +INSERT INTO t1 VALUES (5,'yy','55555.55555','-55555.55555'); +INSERT INTO t1 VALUES (6,'yy','66666.66666','-66666.66666'); +INSERT INTO t1 VALUES (7,'yy','77777.77777','-77777.77777'); +INSERT INTO t1 VALUES (8,'yy','88888.88888','-88888.88888'); +INSERT INTO t1 VALUES (9,'yy','99999.99999','-99999.99999'); +SELECT c2,c3 FROM t1; +c2 c3 +yy 11111.11111 +yy 22222.22222 +yy 33333.33333 +yy 44444.44444 +yy 55555.55555 +yy 66666.66666 +yy 77777.77777 +yy 88888.88888 +yy 99999.99999 +DROP table t1; +set sql_mode = ''; +CREATE TABLE t1 SELECT 12345678901234567890123456789012345678901234567890123456789012345.1 AS c1; +Warnings: +Warning 1264 Out of range value for column 'c1' at row 1 +select * from t1; +c1 +9999999999999999999999999999999999999999999999999999999999999999.9 +drop table t1; +CREATE TABLE t2 SELECT 123456789012345678901234567890123456789012345678901234567890123456.1 AS c1; +Warnings: +Warning 1264 Out of range value for column 'c1' at row 1 +select * from t2; +c1 +9999999999999999999999999999999999999999999999999999999999999999.9 +drop table t2; +CREATE TABLE t3 SELECT 1234567890123456789012345678901234567890123456789012345678901234.1 AS c1; +select * from t3; + AS c1 +1234567890123456789012345678901234567890123456789012345678901234.1 +drop table t3; +set sql_mode = default; diff --git a/mysql-test/suite/tianchi/r/ctc_dml_ignore.result b/mysql-test/suite/tianchi/r/ctc_dml_ignore.result new file mode 100644 index 0000000..651f8ac --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_dml_ignore.result @@ -0,0 +1,434 @@ +drop table if exists t1,t2; +CREATE TABLE t1 ( +`colA` int(10) unsigned NOT NULL auto_increment, +`colB` int(11) NOT NULL default '0', +PRIMARY KEY (`colA`) +); +Warnings: +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +INSERT INTO t1 VALUES (4433,5424); +CREATE TABLE t2 ( +`colC` int(10) unsigned NOT NULL default '0', +`colA` int(10) unsigned NOT NULL default '0', +`colD` int(10) unsigned NOT NULL default '0', +`colE` int(10) unsigned NOT NULL default '0', +`colF` int(10) unsigned NOT NULL default '0', +PRIMARY KEY (`colC`,`colA`,`colD`,`colE`) +); +Warnings: +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +Warning 1681 Integer display width is deprecated and will be removed in a future release. +INSERT INTO t2 VALUES (3,4433,10005,495,500); +INSERT INTO t2 VALUES (3,4433,10005,496,500); +INSERT INTO t2 VALUES (3,4433,10009,494,500); +INSERT INTO t2 VALUES (3,4433,10011,494,500); +INSERT INTO t2 VALUES (3,4433,10005,497,500); +INSERT INTO t2 VALUES (3,4433,10013,489,500); +INSERT INTO t2 VALUES (3,4433,10005,494,500); +INSERT INTO t2 VALUES (3,4433,10005,493,500); +INSERT INTO t2 VALUES (3,4433,10005,492,500); +select * from t2; +colC colA colD colE colF +3 4433 10005 495 500 +3 4433 10005 496 500 +3 4433 10009 494 500 +3 4433 10011 494 500 +3 4433 10005 497 500 +3 4433 10013 489 500 +3 4433 10005 494 500 +3 4433 10005 493 500 +3 4433 10005 492 500 +UPDATE IGNORE t2 set colE = colE + 1, colF = 0 where colE = 494; +Warnings: +Warning 1062 Duplicate entry '3-4433-10005-495' for key 't2.PRIMARY' +select * from t2; +colC colA colD colE colF +3 4433 10005 495 500 +3 4433 10005 496 500 +3 4433 10009 495 0 +3 4433 10011 495 0 +3 4433 10005 497 500 +3 4433 10013 489 500 +3 4433 10005 494 500 +3 4433 10005 493 500 +3 4433 10005 492 500 +UPDATE IGNORE t2 set colE = colE - 1, colF = 500 where colF = 0; +select * from t2; +colC colA colD colE colF +3 4433 10005 495 500 +3 4433 10005 496 500 +3 4433 10009 494 500 +3 4433 10011 494 500 +3 4433 10005 497 500 +3 4433 10013 489 500 +3 4433 10005 494 500 +3 4433 10005 493 500 +3 4433 10005 492 500 +UPDATE IGNORE t2,t1 set t2.colE = t2.colE + 1,colF = 0 WHERE t1.colA = t2.colA AND (t1.colB & 4096) > 0 AND (colE + 1) < colF; +Warnings: +Warning 1062 Duplicate entry '3-4433-10005-496' for key 't2.PRIMARY' +Warning 1062 Duplicate entry '3-4433-10005-497' for key 't2.PRIMARY' +Warning 1062 Duplicate entry '3-4433-10005-495' for key 't2.PRIMARY' +Warning 1062 Duplicate entry '3-4433-10005-494' for key 't2.PRIMARY' +Warning 1062 Duplicate entry '3-4433-10005-493' for key 't2.PRIMARY' +select * from t2; +colC colA colD colE colF +3 4433 10005 495 500 +3 4433 10005 496 500 +3 4433 10009 495 0 +3 4433 10011 495 0 +3 4433 10005 498 0 +3 4433 10013 490 0 +3 4433 10005 494 500 +3 4433 10005 493 500 +3 4433 10005 492 500 +UPDATE IGNORE t2 set colE = colE - 1, colF = 500 where colF = 0; +select * from t2; +colC colA colD colE colF +3 4433 10005 495 500 +3 4433 10005 496 500 +3 4433 10009 494 500 +3 4433 10011 494 500 +3 4433 10005 497 500 +3 4433 10013 489 500 +3 4433 10005 494 500 +3 4433 10005 493 500 +3 4433 10005 492 500 +UPDATE IGNORE t2,t1 set t2.colE = t2.colE - 1,colF = 0 WHERE t1.colA = t2.colA AND (t1.colB & 4096) > 0 AND (colE + 1) < colF; +Warnings: +Warning 1062 Duplicate entry '3-4433-10005-494' for key 't2.PRIMARY' +Warning 1062 Duplicate entry '3-4433-10005-495' for key 't2.PRIMARY' +Warning 1062 Duplicate entry '3-4433-10005-496' for key 't2.PRIMARY' +Warning 1062 Duplicate entry '3-4433-10005-493' for key 't2.PRIMARY' +Warning 1062 Duplicate entry '3-4433-10005-492' for key 't2.PRIMARY' +select * from t2; +colC colA colD colE colF +3 4433 10005 495 500 +3 4433 10005 496 500 +3 4433 10009 493 0 +3 4433 10011 493 0 +3 4433 10005 497 500 +3 4433 10013 488 0 +3 4433 10005 494 500 +3 4433 10005 493 500 +3 4433 10005 491 0 +UPDATE IGNORE t2 set colE = colE + 1, colF = 500 where colF = 0; +select * from t2; +colC colA colD colE colF +3 4433 10005 495 500 +3 4433 10005 496 500 +3 4433 10009 494 500 +3 4433 10011 494 500 +3 4433 10005 497 500 +3 4433 10013 489 500 +3 4433 10005 494 500 +3 4433 10005 493 500 +3 4433 10005 492 500 +drop table t1,t2; +create table parent (a int primary key, b int); +create table child (a int, b int, foreign key (a) references parent(a)); +insert into parent values (1,1),(2,2),(3,3),(4,4),(8,8),(9,9),(10,10); +insert IGNORE into child values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7); +Warnings: +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +select * from child; +a b +1 1 +2 2 +3 3 +4 4 +delete IGNORE from parent where b < 4; +Warnings: +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +delete IGNORE from parent where b = 2; +Warnings: +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +select * from parent; +a b +1 1 +2 2 +3 3 +4 4 +8 8 +9 9 +10 10 +delete IGNORE from parent where b <= 10; +Warnings: +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +select * from parent; +a b +1 1 +2 2 +3 3 +4 4 +drop table child; +drop table parent; +create table parent (a int primary key, b int); +create table child (a int, b int, foreign key (a) references parent(a)); +insert into parent values (1,1),(2,2),(3,3),(4,4),(8,8),(9,9),(10,10); +insert IGNORE into child values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7); +Warnings: +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +select * from child; +a b +1 1 +2 2 +3 3 +4 4 +update IGNORE parent set a = 11 where a = 2; +Warnings: +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +select * from parent; +a b +1 1 +2 2 +3 3 +4 4 +8 8 +9 9 +10 10 +update IGNORE parent set a = 12 where a = 10; +select * from parent; +a b +1 1 +2 2 +3 3 +4 4 +8 8 +9 9 +12 10 +update IGNORE parent set a = 13 where a = 3; +Warnings: +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +select * from parent; +a b +1 1 +2 2 +3 3 +4 4 +8 8 +9 9 +12 10 +update IGNORE parent set a = a + 1; +Warnings: +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1062 Duplicate entry '9' for key 'parent.PRIMARY' +select * from parent; +a b +1 1 +2 2 +3 3 +4 4 +8 8 +10 9 +13 10 +update IGNORE parent set a = a + 1; +Warnings: +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +Warning 1451 Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.child)) +select * from parent; +a b +1 1 +2 2 +3 3 +4 4 +9 8 +11 9 +14 10 +drop table child; +drop table parent; +create table parent (a int primary key, b int); +create table child (a int, b int, foreign key (a) references parent(a)); +insert into parent values (1,1),(2,2),(3,3),(4,4),(8,8),(9,9),(10,10); +insert IGNORE into child values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7); +Warnings: +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +select * from child; +a b +1 1 +2 2 +3 3 +4 4 +update IGNORE child set a = 11 where a = 2; +Warnings: +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +select * from child; +a b +1 1 +2 2 +3 3 +4 4 +update IGNORE child set a = 12 where a = 3; +Warnings: +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +select * from child; +a b +1 1 +2 2 +3 3 +4 4 +update IGNORE child set a = 8 where a = 3; +select * from child; +a b +1 1 +2 2 +8 3 +4 4 +update IGNORE child set a = a + 1; +Warnings: +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +select * from child; +a b +2 1 +3 2 +9 3 +4 4 +update IGNORE child set a = a + 1; +Warnings: +Warning 1452 Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.parent)) +select * from child; +a b +3 1 +4 2 +10 3 +4 4 +drop table child; +drop table parent; +create table class(id int primary key auto_increment,c_name varchar(20) not null,room varchar(20)); +create table my_foreign1(id int primary key auto_increment, +name varchar(20) not null comment '学生姓å', +c_id int comment 'ç­çº§è¡¨ID', +CONSTRAINT fk_id foreign key(c_id) references class(id) +); +insert into class values(1,'abc','aaa'); +insert into class values(2,'abc2','bbb'); +insert into class values(3,'abc3','ccc'); +insert into class values(4,'4','4'); +select * from class; +id c_name room +1 abc aaa +2 abc2 bbb +3 abc3 ccc +4 4 4 +insert into my_foreign1 values(null,'Charies1','6'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.class)) +insert into my_foreign1 values(null,'Charies2','7'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.class)) +insert into my_foreign1 values(null,'Charies3','8'); +ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (Referenced key value not found in parent tables(test.class)) +SET FOREIGN_KEY_CHECKS = 0; +insert into my_foreign1 values(null,'Charies','6'); +insert into my_foreign1 values(null,'Charies2','7'); +insert into my_foreign1 values(null,'Charies3','8'); +select * from my_foreign1; +id name c_id +4 Charies 6 +5 Charies2 7 +6 Charies3 8 +SET FOREIGN_KEY_CHECKS = 1; +insert into my_foreign1 values(null,'Charies','1'); +insert into my_foreign1 values(null,'Bob','2'); +insert into my_foreign1 values(null,'Bob1','3'); +select * from my_foreign1; +id name c_id +4 Charies 6 +5 Charies2 7 +6 Charies3 8 +7 Charies 1 +8 Bob 2 +9 Bob1 3 +delete from class where id = 2; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.my_foreign1)) +delete from class where id = 3; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.my_foreign1)) +SET FOREIGN_KEY_CHECKS = 0; +delete from class where id = 2; +select * from class; +id c_name room +1 abc aaa +3 abc3 ccc +4 4 4 +delete from class where id = 3; +select * from class; +id c_name room +1 abc aaa +4 4 4 +SET FOREIGN_KEY_CHECKS = 1; +insert into class values(2,'abc2','bbb'); +insert into class values(3,'abc3','ccc'); +update class set id = 100 where id = 2; +ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails (Record is referenced by child tables(test.my_foreign1)) +SET FOREIGN_KEY_CHECKS = 0; +update class set id = 100 where id = 2; +select * from class; +id c_name room +1 abc aaa +3 abc3 ccc +100 abc2 bbb +4 4 4 +SET FOREIGN_KEY_CHECKS = 1; +update class set id = 101 where id = 4; +delete from class where id = 100; +drop table my_foreign1; +drop table class; +create table t1 (id int primary key auto_increment, operation varchar(255)); +create table t1_op_log(operation varchar(255)); +create view v1 as select * from t1; +create trigger trg_bug28502_bi before insert on t1 +for each row +insert into t1_op_log (operation) +values (concat("Before INSERT, new=", new.operation)); +create trigger trg_bug28502_ai after insert on t1 +for each row +insert into t1_op_log (operation) +values (concat("After INSERT, new=", new.operation)); +create trigger trg_bug28502_bu before update on t1 +for each row +insert into t1_op_log (operation) +values (concat("Before UPDATE, new=", new.operation, +", old=", old.operation)); +create trigger trg_bug28502_au after update on t1 +for each row +insert into t1_op_log (operation) +values (concat("After UPDATE, new=", new.operation, +", old=", old.operation)); +create trigger trg_bug28502_bd before delete on t1 +for each row +insert into t1_op_log (operation) +values (concat("Before DELETE, old=", old.operation)); +create trigger trg_bug28502_ad after delete on t1 +for each row +insert into t1_op_log (operation) +values (concat("After DELETE, old=", old.operation)); +insert into t1 (operation) values ("INSERT"); +set @id=last_insert_id(); +replace into v1 +select @id, "CREATE TABLE ... REPLACE SELECT, deleting a duplicate key"; +drop trigger if exists trg_bug28502_bi; +drop trigger if exists trg_bug28502_ai; +drop trigger if exists trg_bug28502_bu; +drop trigger if exists trg_bug28502_au; +drop trigger if exists trg_bug28502_bd; +drop trigger if exists trg_bug28502_ad; +drop table t1, t1_op_log; +drop view v1; diff --git a/mysql-test/suite/tianchi/r/ctc_dml_two_table.result b/mysql-test/suite/tianchi/r/ctc_dml_two_table.result new file mode 100644 index 0000000..a3dd456 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_dml_two_table.result @@ -0,0 +1,103 @@ +INSERT INTO PERSONS VALUES (1,'Gates', 'Bill', 'Xuanwumen 10', 'Beijing'); +INSERT INTO PERSONS VALUES (2,'Adams', 'John', 'Oxford Street', 'London'); +INSERT INTO PERSONS VALUES (3,'Bush', 'George', 'Fifth Avenue', 'New York'); +INSERT INTO PERSONS VALUES (4,'Carter', 'Thomas', 'Changan Street', 'Beijing'); +INSERT INTO ORDERS VALUES (1,77895,3); +INSERT INTO ORDERS VALUES (2,44678,3); +INSERT INTO ORDERS VALUES (3,22456,1); +INSERT INTO ORDERS VALUES (4,24562,1); +INSERT INTO ORDERS VALUES (5,34764,65); +SELECT * FROM PERSONS; +ID LastName FirstName Address City +1 Gates Bill Xuanwumen 10 Beijing +2 Adams John Oxford Street London +3 Bush George Fifth Avenue New York +4 Carter Thomas Changan Street Beijing +SELECT * FROM ORDERS; +ID OrderNo ID_P +1 77895 3 +2 44678 3 +3 22456 1 +4 24562 1 +5 34764 65 +SELECT PERSONS.LastName, PERSONS.FirstName, ORDERS.OrderNo FROM PERSONS, ORDERS WHERE PERSONS.ID = ORDERS.ID_P; +LastName FirstName OrderNo +Bush George 77895 +Bush George 44678 +Gates Bill 22456 +Gates Bill 24562 +SELECT * FROM PERSONS, ORDERS WHERE PERSONS.ID = ORDERS.ID_P; +ID LastName FirstName Address City ID OrderNo ID_P +3 Bush George Fifth Avenue New York 1 77895 3 +3 Bush George Fifth Avenue New York 2 44678 3 +1 Gates Bill Xuanwumen 10 Beijing 3 22456 1 +1 Gates Bill Xuanwumen 10 Beijing 4 24562 1 +SELECT PERSONS.LastName, ORDERS.OrderNo FROM PERSONS, ORDERS WHERE PERSONS.ID >= 3 AND ORDERS.ID <= 1; +LastName OrderNo +Carter 77895 +Bush 77895 +SELECT PERSONS.LastName, ORDERS.OrderNo FROM PERSONS, ORDERS WHERE PERSONS.ID < 3 AND ORDERS.ID > 1; +LastName OrderNo +Adams 44678 +Gates 44678 +Adams 22456 +Gates 22456 +Adams 24562 +Gates 24562 +Adams 34764 +Gates 34764 +SELECT PERSONS.LastName, ORDERS.OrderNo FROM PERSONS, ORDERS WHERE PERSONS.FirstName = 'John' OR ORDERS.OrderNo < 30000; +LastName OrderNo +Adams 77895 +Adams 44678 +Carter 22456 +Bush 22456 +Adams 22456 +Gates 22456 +Carter 24562 +Bush 24562 +Adams 24562 +Gates 24562 +Adams 34764 +SELECT PERSONS.LastName, ORDERS.OrderNo FROM PERSONS, ORDERS WHERE (PERSONS.LastName Like '%s' AND ORDERS.OrderNo < 30000) OR PERSONS.FirstName IN ('Bill','Thomas'); +LastName OrderNo +Carter 77895 +Gates 77895 +Carter 44678 +Gates 44678 +Carter 22456 +Adams 22456 +Gates 22456 +Carter 24562 +Adams 24562 +Gates 24562 +Carter 34764 +Gates 34764 +UPDATE PERSONS SET LastName="OMG", FirstName="GMO" where ID=3; +UPDATE ORDERS SET OrderNo=99 where ID=3; +DELETE FROM ORDERS where ID=1; +SELECT PERSONS.LastName, PERSONS.FirstName, ORDERS.OrderNo FROM PERSONS, ORDERS WHERE PERSONS.ID = ORDERS.ID_P; +LastName FirstName OrderNo +OMG GMO 44678 +Gates Bill 99 +Gates Bill 24562 +SELECT PERSONS.LastName, PERSONS.FirstName, ORDERS.OrderNo FROM PERSONS INNER JOIN ORDERS ON PERSONS.ID=ORDERS.ID_P ORDER BY PERSONS.LastName; +LastName FirstName OrderNo +Gates Bill 99 +Gates Bill 24562 +OMG GMO 44678 +SELECT PERSONS.LastName, PERSONS.FirstName, ORDERS.OrderNo FROM PERSONS LEFT JOIN ORDERS ON PERSONS.ID=ORDERS.ID_P ORDER BY PERSONS.LastName; +LastName FirstName OrderNo +Adams John NULL +Carter Thomas NULL +Gates Bill 24562 +Gates Bill 99 +OMG GMO 44678 +SELECT PERSONS.LastName, PERSONS.FirstName, ORDERS.OrderNo FROM PERSONS RIGHT JOIN ORDERS ON PERSONS.ID=ORDERS.ID_P ORDER BY PERSONS.LastName; +LastName FirstName OrderNo +NULL NULL 34764 +Gates Bill 99 +Gates Bill 24562 +OMG GMO 44678 +DROP TABLE PERSONS; +DROP TABLE ORDERS; diff --git a/mysql-test/suite/tianchi/r/ctc_handler_operation.result b/mysql-test/suite/tianchi/r/ctc_handler_operation.result new file mode 100644 index 0000000..37de258 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_handler_operation.result @@ -0,0 +1,56 @@ +drop table if exists handler_table; +create table handler_table(id int, name varchar(10)); +insert into handler_table values(3, '张三'); +insert into handler_table values(4, 'æŽå››'); +insert into handler_table values(5, '王五'); +insert into handler_table values(1, '刘一'); +insert into handler_table values(2, '陈二'); +select *from handler_table; +id name +3 张三 +4 æŽå›› +5 王五 +1 刘一 +2 陈二 +handler handler_table open; +handler handler_table read first; +id name +3 张三 +handler handler_table read next; +id name +4 æŽå›› +handler handler_table close; +create index handler_index on handler_table(id); +handler handler_table open; +handler handler_table open as p; +handler p read handler_index first; +id name +1 刘一 +handler p read handler_index next; +id name +2 陈二 +handler p read handler_index prev; +id name +3 张三 +handler p read handler_index last; +id name +5 王五 +handler p close; +handler handler_table open as p; +handler p read handler_index = (2); +id name +2 陈二 +handler p read handler_index first; +id name +1 刘一 +handler p read handler_index next; +id name +2 陈二 +handler p read handler_index prev; +id name +3 张三 +handler p read handler_index last; +id name +5 王五 +handler p close; +drop table handler_table; diff --git a/mysql-test/suite/tianchi/r/ctc_index_functions_base.result b/mysql-test/suite/tianchi/r/ctc_index_functions_base.result new file mode 100644 index 0000000..06ee1ec --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_index_functions_base.result @@ -0,0 +1,461 @@ +drop table if exists DEMO; +create table DEMO (ID integer not null, NAME varchar(19), AGE integer, GRADE real); +insert into DEMO values (1, 'LIOR', 35, 6.9); +insert into DEMO values (4, 'MIKE', 55, 99.92); +insert into DEMO values (8, 'ROMAN', 40, 94.1); +insert into DEMO values (16, 'DAN', 60, 1234567890); +insert into DEMO values (32, 'ZVI', 35, 777.666); +insert into DEMO values (1, 'Eitan', NULL, 4.9); +insert into DEMO values (888888, 'zhangdi', NULL, 10000.8); +insert into DEMO values (1131, 'Hisses', 1, NULL); +SELECT * FROM DEMO; +ID NAME AGE GRADE +1 LIOR 35 6.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +1 Eitan NULL 4.9 +888888 zhangdi NULL 10000.8 +1131 Hisses 1 NULL +create index aaa ON DEMO (ID); +select * from DEMO where ID = 1; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID <= 16; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +select * from DEMO where ID < 16; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +select * from DEMO where ID between 4 and 32; +ID NAME AGE GRADE +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID >= 32; +ID NAME AGE GRADE +32 ZVI 35 777.666 +1131 Hisses 1 NULL +888888 zhangdi NULL 10000.8 +select * from DEMO where ID > 32; +ID NAME AGE GRADE +1131 Hisses 1 NULL +888888 zhangdi NULL 10000.8 +select * from DEMO where ID in (16,32); +ID NAME AGE GRADE +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID like '1%'; +ID NAME AGE GRADE +1 LIOR 35 6.9 +16 DAN 60 1234567890 +1 Eitan NULL 4.9 +1131 Hisses 1 NULL +select * from DEMO where ID = 1 order by ID; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID = 1 order by ID desc; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +select * from DEMO where ID <= 16 order by ID; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +select * from DEMO where ID < 16 order by ID desc; +ID NAME AGE GRADE +8 ROMAN 40 94.1 +4 MIKE 55 99.92 +1 Eitan NULL 4.9 +1 LIOR 35 6.9 +select * from DEMO where ID between 4 and 32 order by ID; +ID NAME AGE GRADE +4 MIKE 55 99.92 +8 ROMAN 40 94.1 +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID between 4 and 32 order by ID desc; +ID NAME AGE GRADE +32 ZVI 35 777.666 +16 DAN 60 1234567890 +8 ROMAN 40 94.1 +4 MIKE 55 99.92 +select * from DEMO where ID >= 32 order by ID; +ID NAME AGE GRADE +32 ZVI 35 777.666 +1131 Hisses 1 NULL +888888 zhangdi NULL 10000.8 +select * from DEMO where ID > 32 order by ID desc; +ID NAME AGE GRADE +888888 zhangdi NULL 10000.8 +1131 Hisses 1 NULL +select * from DEMO where ID in (16,32) order by ID; +ID NAME AGE GRADE +16 DAN 60 1234567890 +32 ZVI 35 777.666 +select * from DEMO where ID in (16,32) order by ID desc; +ID NAME AGE GRADE +32 ZVI 35 777.666 +16 DAN 60 1234567890 +select * from DEMO where ID like '1%' order by ID; +ID NAME AGE GRADE +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +16 DAN 60 1234567890 +1131 Hisses 1 NULL +select * from DEMO where ID like '1%' order by ID desc; +ID NAME AGE GRADE +1131 Hisses 1 NULL +16 DAN 60 1234567890 +1 LIOR 35 6.9 +1 Eitan NULL 4.9 +drop table DEMO; +drop table if exists INDEX_DEMO; +create table INDEX_DEMO (ID integer PRIMARY KEY, CARD_NUM integer UNIQUE NOT NULL, FIRST_NAME VARCHAR(25) NOT NULL, LAST_NAME VARCHAR(25) NOT NULL, AGE integer NOT NULL, EMAIL VARCHAR(30) NOT NULL, BIRTHDAY VARCHAR(20) NOT NULL, GENDER CHAR(10)); +CREATE INDEX IDX_AGE ON INDEX_DEMO(AGE); +CREATE INDEX IDX_NAME_BIRTHDAY ON INDEX_DEMO(FIRST_NAME, LAST_NAME, BIRTHDAY); +CREATE INDEX IDX_EMAIL ON INDEX_DEMO(EMAIL); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (89, 46, 'Gilligan', 'Rostern', 28, 'grostern0@buzzfeed.com', '1992-12-10', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (45, 50, 'Alistair', 'Lempenny', 64, 'alempenny1@foxnews.com', '1991-06-07', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (44, 39, 'Roda', 'Paolo', 45, 'rpaolo2@mozilla.com', '1996-05-12', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (49, 74, 'Marcos', 'Coutts', 91, 'mcoutts3@blogs.com', '1998-12-18', 'Female'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (6, 81, 'Kalvin', 'Tunnicliff', 35, 'ktunnicliff4@dailymotion.com', '1991-04-03', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (80, 87, 'Morna', 'Colbert', 8, 'mcolbert5@miitbeian.gov.cn', '2001-06-25', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (12, 30, 'Leoine', 'Elms', 19, 'lelms6@ucsd.edu', '2003-11-14', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (31, 77, 'Rita', 'Scotchmore', 28, 'rscotchmore7@illinois.edu', '1991-06-23', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (7, 47, 'Jarib', 'Ausiello', 69, 'jausiello8@wsj.com', '1993-05-10', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (93, 44, 'Dianna', 'Cockle', 15, 'dcockle9@mac.com', '2003-06-10', 'Female'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (64, 95, 'Tait', 'Tavinor', 63, 'ttavinora@photobucket.com', '1994-11-02', 'Female'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (83, 83, 'Shannon', 'Covelle', 30, 'scovelleb@tinyurl.com', '2001-01-22', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (20, 76, 'Stevana', 'Alyoshin', 88, 'salyoshinc@wired.com', '1990-11-18', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (19, 12, 'Garrard', 'Bools', 68, 'gboolsd@bandcamp.com', '1993-12-05', 'Female'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (75, 2, 'Kristi', 'Boules', 46, 'kboulese@amazon.co.uk', '1993-07-29', 'Female'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (67, 36, 'Mag', 'Dalgarnocht', 74, 'mdalgarnochtf@marketwatch.com', '2000-05-03', 'Male'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (3, 94, 'Cori', 'Mee', 50, 'cmeeg@fema.gov', '1993-04-29', 'Female'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (69, 33, 'Emogene', 'Pedroni', 87, 'epedronih@4shared.com', '2005-06-08', 'Female'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (100, 71, 'Douglas', 'Pardie', 2, 'dpardiei@spiegel.de', '2001-11-05', 'Female'); +insert into INDEX_DEMO (ID, CARD_NUM, FIRST_NAME, LAST_NAME, AGE, EMAIL, BIRTHDAY, GENDER) values (17, 38, 'Karim', 'Mainwaring', 54, 'kmainwaringj@163.com', '2003-01-21','Male'); +select * from INDEX_DEMO; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +44 39 Roda Paolo 45 rpaolo2@mozilla.com 1996-05-12 Male +49 74 Marcos Coutts 91 mcoutts3@blogs.com 1998-12-18 Female +6 81 Kalvin Tunnicliff 35 ktunnicliff4@dailymotion.com 1991-04-03 Male +80 87 Morna Colbert 8 mcolbert5@miitbeian.gov.cn 2001-06-25 Male +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +7 47 Jarib Ausiello 69 jausiello8@wsj.com 1993-05-10 Male +93 44 Dianna Cockle 15 dcockle9@mac.com 2003-06-10 Female +64 95 Tait Tavinor 63 ttavinora@photobucket.com 1994-11-02 Female +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +75 2 Kristi Boules 46 kboulese@amazon.co.uk 1993-07-29 Female +67 36 Mag Dalgarnocht 74 mdalgarnochtf@marketwatch.com 2000-05-03 Male +3 94 Cori Mee 50 cmeeg@fema.gov 1993-04-29 Female +69 33 Emogene Pedroni 87 epedronih@4shared.com 2005-06-08 Female +100 71 Douglas Pardie 2 dpardiei@spiegel.de 2001-11-05 Female +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +select * from INDEX_DEMO where AGE = 32; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +select * from INDEX_DEMO where AGE <= 32; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +100 71 Douglas Pardie 2 dpardiei@spiegel.de 2001-11-05 Female +80 87 Morna Colbert 8 mcolbert5@miitbeian.gov.cn 2001-06-25 Male +93 44 Dianna Cockle 15 dcockle9@mac.com 2003-06-10 Female +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +select * from INDEX_DEMO where AGE < 30; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +100 71 Douglas Pardie 2 dpardiei@spiegel.de 2001-11-05 Female +80 87 Morna Colbert 8 mcolbert5@miitbeian.gov.cn 2001-06-25 Male +93 44 Dianna Cockle 15 dcockle9@mac.com 2003-06-10 Female +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +select * from INDEX_DEMO where AGE between 20 and 30; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +select * from INDEX_DEMO where AGE >= 30; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +6 81 Kalvin Tunnicliff 35 ktunnicliff4@dailymotion.com 1991-04-03 Male +44 39 Roda Paolo 45 rpaolo2@mozilla.com 1996-05-12 Male +75 2 Kristi Boules 46 kboulese@amazon.co.uk 1993-07-29 Female +3 94 Cori Mee 50 cmeeg@fema.gov 1993-04-29 Female +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +64 95 Tait Tavinor 63 ttavinora@photobucket.com 1994-11-02 Female +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +7 47 Jarib Ausiello 69 jausiello8@wsj.com 1993-05-10 Male +67 36 Mag Dalgarnocht 74 mdalgarnochtf@marketwatch.com 2000-05-03 Male +69 33 Emogene Pedroni 87 epedronih@4shared.com 2005-06-08 Female +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +49 74 Marcos Coutts 91 mcoutts3@blogs.com 1998-12-18 Female +select * from INDEX_DEMO where AGE > 30; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +6 81 Kalvin Tunnicliff 35 ktunnicliff4@dailymotion.com 1991-04-03 Male +44 39 Roda Paolo 45 rpaolo2@mozilla.com 1996-05-12 Male +75 2 Kristi Boules 46 kboulese@amazon.co.uk 1993-07-29 Female +3 94 Cori Mee 50 cmeeg@fema.gov 1993-04-29 Female +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +64 95 Tait Tavinor 63 ttavinora@photobucket.com 1994-11-02 Female +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +7 47 Jarib Ausiello 69 jausiello8@wsj.com 1993-05-10 Male +67 36 Mag Dalgarnocht 74 mdalgarnochtf@marketwatch.com 2000-05-03 Male +69 33 Emogene Pedroni 87 epedronih@4shared.com 2005-06-08 Female +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +49 74 Marcos Coutts 91 mcoutts3@blogs.com 1998-12-18 Female +select * from INDEX_DEMO where AGE in (24,32); +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +select * from INDEX_DEMO where EMAIL like 'a%'; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +select * from INDEX_DEMO where EMAIL like 'ahake0@homestead.com'; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +select * from INDEX_DEMO where EMAIL like '%amazon%'; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +75 2 Kristi Boules 46 kboulese@amazon.co.uk 1993-07-29 Female +select * from INDEX_DEMO where EMAIL like '%com'; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +44 39 Roda Paolo 45 rpaolo2@mozilla.com 1996-05-12 Male +49 74 Marcos Coutts 91 mcoutts3@blogs.com 1998-12-18 Female +6 81 Kalvin Tunnicliff 35 ktunnicliff4@dailymotion.com 1991-04-03 Male +7 47 Jarib Ausiello 69 jausiello8@wsj.com 1993-05-10 Male +93 44 Dianna Cockle 15 dcockle9@mac.com 2003-06-10 Female +64 95 Tait Tavinor 63 ttavinora@photobucket.com 1994-11-02 Female +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +67 36 Mag Dalgarnocht 74 mdalgarnochtf@marketwatch.com 2000-05-03 Male +69 33 Emogene Pedroni 87 epedronih@4shared.com 2005-06-08 Female +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +select * from INDEX_DEMO where EMAIL is null; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +select * from INDEX_DEMO where ID = 10; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +select * from INDEX_DEMO where ID <= 10; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +3 94 Cori Mee 50 cmeeg@fema.gov 1993-04-29 Female +6 81 Kalvin Tunnicliff 35 ktunnicliff4@dailymotion.com 1991-04-03 Male +7 47 Jarib Ausiello 69 jausiello8@wsj.com 1993-05-10 Male +select * from INDEX_DEMO where ID < 10; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +3 94 Cori Mee 50 cmeeg@fema.gov 1993-04-29 Female +6 81 Kalvin Tunnicliff 35 ktunnicliff4@dailymotion.com 1991-04-03 Male +7 47 Jarib Ausiello 69 jausiello8@wsj.com 1993-05-10 Male +select * from INDEX_DEMO where ID between 10 and 20; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +select * from INDEX_DEMO where ID >= 10; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +44 39 Roda Paolo 45 rpaolo2@mozilla.com 1996-05-12 Male +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +49 74 Marcos Coutts 91 mcoutts3@blogs.com 1998-12-18 Female +64 95 Tait Tavinor 63 ttavinora@photobucket.com 1994-11-02 Female +67 36 Mag Dalgarnocht 74 mdalgarnochtf@marketwatch.com 2000-05-03 Male +69 33 Emogene Pedroni 87 epedronih@4shared.com 2005-06-08 Female +75 2 Kristi Boules 46 kboulese@amazon.co.uk 1993-07-29 Female +80 87 Morna Colbert 8 mcolbert5@miitbeian.gov.cn 2001-06-25 Male +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +93 44 Dianna Cockle 15 dcockle9@mac.com 2003-06-10 Female +100 71 Douglas Pardie 2 dpardiei@spiegel.de 2001-11-05 Female +select * from INDEX_DEMO where ID > 10; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +44 39 Roda Paolo 45 rpaolo2@mozilla.com 1996-05-12 Male +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +49 74 Marcos Coutts 91 mcoutts3@blogs.com 1998-12-18 Female +64 95 Tait Tavinor 63 ttavinora@photobucket.com 1994-11-02 Female +67 36 Mag Dalgarnocht 74 mdalgarnochtf@marketwatch.com 2000-05-03 Male +69 33 Emogene Pedroni 87 epedronih@4shared.com 2005-06-08 Female +75 2 Kristi Boules 46 kboulese@amazon.co.uk 1993-07-29 Female +80 87 Morna Colbert 8 mcolbert5@miitbeian.gov.cn 2001-06-25 Male +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +93 44 Dianna Cockle 15 dcockle9@mac.com 2003-06-10 Female +100 71 Douglas Pardie 2 dpardiei@spiegel.de 2001-11-05 Female +select * from INDEX_DEMO where ID in (11,12); +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +select * from INDEX_DEMO where CARD_NUM = 10; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +select * from INDEX_DEMO where CARD_NUM <= 12; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +75 2 Kristi Boules 46 kboulese@amazon.co.uk 1993-07-29 Female +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +select * from INDEX_DEMO where CARD_NUM < 10; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +75 2 Kristi Boules 46 kboulese@amazon.co.uk 1993-07-29 Female +select * from INDEX_DEMO where CARD_NUM between 10 and 20; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +select * from INDEX_DEMO where CARD_NUM >= 10; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +69 33 Emogene Pedroni 87 epedronih@4shared.com 2005-06-08 Female +67 36 Mag Dalgarnocht 74 mdalgarnochtf@marketwatch.com 2000-05-03 Male +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +44 39 Roda Paolo 45 rpaolo2@mozilla.com 1996-05-12 Male +93 44 Dianna Cockle 15 dcockle9@mac.com 2003-06-10 Female +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +7 47 Jarib Ausiello 69 jausiello8@wsj.com 1993-05-10 Male +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +100 71 Douglas Pardie 2 dpardiei@spiegel.de 2001-11-05 Female +49 74 Marcos Coutts 91 mcoutts3@blogs.com 1998-12-18 Female +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +6 81 Kalvin Tunnicliff 35 ktunnicliff4@dailymotion.com 1991-04-03 Male +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +80 87 Morna Colbert 8 mcolbert5@miitbeian.gov.cn 2001-06-25 Male +3 94 Cori Mee 50 cmeeg@fema.gov 1993-04-29 Female +64 95 Tait Tavinor 63 ttavinora@photobucket.com 1994-11-02 Female +select * from INDEX_DEMO where CARD_NUM > 10; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +69 33 Emogene Pedroni 87 epedronih@4shared.com 2005-06-08 Female +67 36 Mag Dalgarnocht 74 mdalgarnochtf@marketwatch.com 2000-05-03 Male +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +44 39 Roda Paolo 45 rpaolo2@mozilla.com 1996-05-12 Male +93 44 Dianna Cockle 15 dcockle9@mac.com 2003-06-10 Female +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +7 47 Jarib Ausiello 69 jausiello8@wsj.com 1993-05-10 Male +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +100 71 Douglas Pardie 2 dpardiei@spiegel.de 2001-11-05 Female +49 74 Marcos Coutts 91 mcoutts3@blogs.com 1998-12-18 Female +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +6 81 Kalvin Tunnicliff 35 ktunnicliff4@dailymotion.com 1991-04-03 Male +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +80 87 Morna Colbert 8 mcolbert5@miitbeian.gov.cn 2001-06-25 Male +3 94 Cori Mee 50 cmeeg@fema.gov 1993-04-29 Female +64 95 Tait Tavinor 63 ttavinora@photobucket.com 1994-11-02 Female +select * from INDEX_DEMO where CARD_NUM in (11,12); +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +select * from INDEX_DEMO where AGE = 32 order by AGE; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +select * from INDEX_DEMO where AGE = 32 order by AGE desc; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +select * from INDEX_DEMO where AGE <= 32 order by AGE; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +100 71 Douglas Pardie 2 dpardiei@spiegel.de 2001-11-05 Female +80 87 Morna Colbert 8 mcolbert5@miitbeian.gov.cn 2001-06-25 Male +93 44 Dianna Cockle 15 dcockle9@mac.com 2003-06-10 Female +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +select * from INDEX_DEMO where AGE < 30 order by AGE desc; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +12 30 Leoine Elms 19 lelms6@ucsd.edu 2003-11-14 Male +93 44 Dianna Cockle 15 dcockle9@mac.com 2003-06-10 Female +80 87 Morna Colbert 8 mcolbert5@miitbeian.gov.cn 2001-06-25 Male +100 71 Douglas Pardie 2 dpardiei@spiegel.de 2001-11-05 Female +select * from INDEX_DEMO where AGE between 20 and 30 order by AGE; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +select * from INDEX_DEMO where AGE between 20 and 30 order by AGE desc; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +31 77 Rita Scotchmore 28 rscotchmore7@illinois.edu 1991-06-23 Male +89 46 Gilligan Rostern 28 grostern0@buzzfeed.com 1992-12-10 Male +select * from INDEX_DEMO where AGE >= 30 order by AGE; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +83 83 Shannon Covelle 30 scovelleb@tinyurl.com 2001-01-22 Male +6 81 Kalvin Tunnicliff 35 ktunnicliff4@dailymotion.com 1991-04-03 Male +44 39 Roda Paolo 45 rpaolo2@mozilla.com 1996-05-12 Male +75 2 Kristi Boules 46 kboulese@amazon.co.uk 1993-07-29 Female +3 94 Cori Mee 50 cmeeg@fema.gov 1993-04-29 Female +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +64 95 Tait Tavinor 63 ttavinora@photobucket.com 1994-11-02 Female +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +7 47 Jarib Ausiello 69 jausiello8@wsj.com 1993-05-10 Male +67 36 Mag Dalgarnocht 74 mdalgarnochtf@marketwatch.com 2000-05-03 Male +69 33 Emogene Pedroni 87 epedronih@4shared.com 2005-06-08 Female +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +49 74 Marcos Coutts 91 mcoutts3@blogs.com 1998-12-18 Female +select * from INDEX_DEMO where AGE > 30 order by AGE desc; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +49 74 Marcos Coutts 91 mcoutts3@blogs.com 1998-12-18 Female +20 76 Stevana Alyoshin 88 salyoshinc@wired.com 1990-11-18 Male +69 33 Emogene Pedroni 87 epedronih@4shared.com 2005-06-08 Female +67 36 Mag Dalgarnocht 74 mdalgarnochtf@marketwatch.com 2000-05-03 Male +7 47 Jarib Ausiello 69 jausiello8@wsj.com 1993-05-10 Male +19 12 Garrard Bools 68 gboolsd@bandcamp.com 1993-12-05 Female +45 50 Alistair Lempenny 64 alempenny1@foxnews.com 1991-06-07 Male +64 95 Tait Tavinor 63 ttavinora@photobucket.com 1994-11-02 Female +17 38 Karim Mainwaring 54 kmainwaringj@163.com 2003-01-21 Male +3 94 Cori Mee 50 cmeeg@fema.gov 1993-04-29 Female +75 2 Kristi Boules 46 kboulese@amazon.co.uk 1993-07-29 Female +44 39 Roda Paolo 45 rpaolo2@mozilla.com 1996-05-12 Male +6 81 Kalvin Tunnicliff 35 ktunnicliff4@dailymotion.com 1991-04-03 Male +select * from INDEX_DEMO where AGE in (24,32) order by AGE; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +select * from INDEX_DEMO where AGE in (24,32) order by AGE desc; +ID CARD_NUM FIRST_NAME LAST_NAME AGE EMAIL BIRTHDAY GENDER +drop table if exists INDEX_DEMO; +create table DEMO (a int, b int, c int, d int, e int, f int); +create index idx on DEMO (f,e,d); +insert into DEMO values (1,2,3,4,null,6); +insert into DEMO values (1,2,3,4,5,null); +insert into DEMO values (1,2,3,4,5,6); +select e,f from DEMO where d = 4; +e f +5 NULL +NULL 6 +5 6 +Select d from DEMO where f = 6; +d +4 +4 +Select e from DEMO where d = 4 and f = 6; +e +NULL +5 +drop table if exists DEMO; +show variables like '%ctc_prefetch_buf_size%'; +Variable_name Value +ctc_prefetch_buf_size 196608 diff --git a/mysql-test/suite/tianchi/r/ctc_insert_time.result b/mysql-test/suite/tianchi/r/ctc_insert_time.result new file mode 100644 index 0000000..1026668 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_insert_time.result @@ -0,0 +1,5166 @@ +DROP TABLE IF EXISTS t1,t2,t3,t4; +SET sql_mode='NO_ENGINE_SUBSTITUTION'; +CREATE TABLE t1(c1 TIME NOT NULL, c2 TIME NULL, c3 DATE, PRIMARY KEY(c1), UNIQUE INDEX(c2)); +CREATE TABLE t2(c1 TIME NOT NULL, c2 TIME NOT NULL, c3 DATE, PRIMARY KEY(c1,c2)); +CREATE TABLE t3(c1 TIME NOT NULL, c2 TIME NULL, c3 DATE, UNIQUE INDEX idx(c1,c2)); +CREATE TABLE t4(c1 TIME NOT NULL, c2 TIME NULL, c3 DATE); +INSERT INTO t1 VALUES('12:34:56.78','12:34:56.78','2009-01-01'),('10:22:33','10:22:33','2009-01-02'),('1:23','1:23','2009-01-03'),('20 11:22:33','20 11:22:33','2009-01-04'),('34 9:23','34 9:23','2009-01-05'),('0 10','0 10','2009-01-06'),('45','45','2009-01-07'),('-838:59:59','-838:59:59','2009-01-08'),('0','0','2009-01-09'),('838:59:59','838:59:59','2009-01-10'); +INSERT INTO t2 VALUES('12:34:56.78','12:34:56.78','2009-01-01'),('10:22:33','10:22:33','2009-01-02'),('1:23','1:23','2009-01-03'),('20 11:22:33','20 11:22:33','2009-01-04'),('34 9:23','34 9:23','2009-01-05'),('0 10','0 10','2009-01-06'),('45','45','2009-01-07'),('-838:59:59','-838:59:59','2009-01-08'),('0','0','2009-01-09'),('838:59:59','838:59:59','2009-01-10'); +INSERT INTO t3 VALUES('12:34:56.78','12:34:56.78','2009-01-01'),('10:22:33','10:22:33','2009-01-02'),('1:23','1:23','2009-01-03'),('20 11:22:33','20 11:22:33','2009-01-04'),('34 9:23','34 9:23','2009-01-05'),('0 10','0 10','2009-01-06'),('45','45','2009-01-07'),('-838:59:59','-838:59:59','2009-01-08'),('0','0','2009-01-09'),('838:59:59','838:59:59','2009-01-10'); +INSERT INTO t4 VALUES('12:34:56.78','12:34:56.78','2009-01-01'),('10:22:33','10:22:33','2009-01-02'),('1:23','1:23','2009-01-03'),('20 11:22:33','20 11:22:33','2009-01-04'),('34 9:23','34 9:23','2009-01-05'),('0 10','0 10','2009-01-06'),('45','45','2009-01-07'),('-838:59:59','-838:59:59','2009-01-08'),('0','0','2009-01-09'),('838:59:59','838:59:59','2009-01-10'); +INSERT INTO t1 VALUES('101112','101112','2009-01-11'); +INSERT INTO t2 VALUES('101112','101112','2009-01-11'); +INSERT INTO t3 VALUES('101112','101112','2009-01-11'); +INSERT INTO t4 VALUES('101112','101112','2009-01-11'); +INSERT INTO t1 VALUES(111112,111112,'2009-01-12'),(12,12,'2009-01-13'),(1234,1234,'2009-01-14'),(123458,123458,'2009-01-15'),(123556.99,123556.99,'2009-01-16'); +INSERT INTO t2 VALUES(111112,111112,'2009-01-12'),(12,12,'2009-01-13'),(1234,1234,'2009-01-14'),(123458,123458,'2009-01-15'),(123556.99,123556.99,'2009-01-16'); +INSERT INTO t3 VALUES(111112,111112,'2009-01-12'),(12,12,'2009-01-13'),(1234,1234,'2009-01-14'),(123458,123458,'2009-01-15'),(123556.99,123556.99,'2009-01-16'); +INSERT INTO t4 VALUES(111112,111112,'2009-01-12'),(12,12,'2009-01-13'),(1234,1234,'2009-01-14'),(123458,123458,'2009-01-15'),(123556.99,123556.99,'2009-01-16'); +SET TIMESTAMP=1233216687; +INSERT INTO t1 VALUES(CURRENT_TIME(),CURRENT_TIME(),'2009-01-17'); +INSERT INTO t2 VALUES(CURRENT_TIME(),CURRENT_TIME(),'2009-01-17'); +INSERT INTO t3 VALUES(CURRENT_TIME(),CURRENT_TIME(),'2009-01-17'); +INSERT INTO t4 VALUES(CURRENT_TIME(),CURRENT_TIME(),'2009-01-17'); +INSERT INTO t1 VALUES('8:3:2','8:3:2','2009-01-18'),('1112','1112','2009-01-19'),(11,11,'2009-01-20'),('00:12:30','00:12:30','2009-01-23'),('9:00:45','9:00:45','2009-01-24'),('9:36:00','9:36:00','2009-01-25'); +INSERT INTO t2 VALUES('8:3:2','8:3:2','2009-01-18'),('1112','1112','2009-01-19'),(11,11,'2009-01-20'),('00:12:30','00:12:30','2009-01-23'),('9:00:45','9:00:45','2009-01-24'),('9:36:00','9:36:00','2009-01-25'); +INSERT INTO t3 VALUES('8:3:2','8:3:2','2009-01-18'),('1112','1112','2009-01-19'),(11,11,'2009-01-20'),('00:12:30','00:12:30','2009-01-23'),('9:00:45','9:00:45','2009-01-24'),('9:36:00','9:36:00','2009-01-25'); +INSERT INTO t4 VALUES('8:3:2','8:3:2','2009-01-18'),('1112','1112','2009-01-19'),(11,11,'2009-01-20'),('00:12:30','00:12:30','2009-01-23'),('9:00:45','9:00:45','2009-01-24'),('9:36:00','9:36:00','2009-01-25'); +INSERT INTO t1 VALUES('-850:00:00','-850:00:00','2009-01-21'); +ERROR 23000: Duplicate entry '-838:59:59' for key 't1.PRIMARY' +INSERT INTO t1 VALUES('850:00:00','850:00:00','2009-01-21'); +ERROR 23000: Duplicate entry '838:59:59' for key 't1.PRIMARY' +DELETE FROM t1 WHERE c1='-838:59:59' AND c2='-838:59:59'; +DELETE FROM t1 WHERE c1='838:59:59' AND c2='838:59:59'; +INSERT INTO t1 VALUES('-850:00:00','-850:00:00','2009-01-21'),('850:00:00','850:00:00','2009-01-21'); +Warnings: +Warning 1264 Out of range value for column 'c1' at row 1 +Warning 1264 Out of range value for column 'c2' at row 1 +Warning 1264 Out of range value for column 'c1' at row 2 +Warning 1264 Out of range value for column 'c2' at row 2 +INSERT INTO t4 VALUES('10.22.22','10.22.22','2009-01-26'),(1234567,1234567,'2009-01-27'),(123456789,123456789,'2009-01-28'),(123456789.10,123456789.10,'2009-01-29'),('10 22:22','10 22:22','2009-01-30'),('12.45a','12.45a','2009-01-31'); +Warnings: +Warning 1265 Data truncated for column 'c1' at row 1 +Warning 1265 Data truncated for column 'c2' at row 1 +Warning 1264 Out of range value for column 'c1' at row 2 +Warning 1264 Out of range value for column 'c2' at row 2 +Warning 1264 Out of range value for column 'c1' at row 3 +Warning 1264 Out of range value for column 'c2' at row 3 +Warning 1264 Out of range value for column 'c1' at row 4 +Warning 1264 Out of range value for column 'c2' at row 4 +Warning 1265 Data truncated for column 'c1' at row 6 +Warning 1265 Data truncated for column 'c2' at row 6 +INSERT INTO t1 VALUES('8:29:45',NULL,'2009-02-01'); +INSERT INTO t3 VALUES('8:29:45',NULL,'2009-02-01'); +INSERT INTO t4 VALUES('8:29:45',NULL,'2009-02-01'); +INSERT INTO t1(c1,c2) VALUES('9:30',NULL); +DELETE FROM t1 WHERE c1='9:30' AND c2 IS NULL; +SELECT * FROM t1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t4; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:00 00:00:00 2009-01-27 +00:00:10 00:00:10 2009-01-26 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:12 00:00:12 2009-01-31 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +262:22:00 262:22:00 2009-01-30 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +838:59:59 838:59:59 2009-01-28 +838:59:59 838:59:59 2009-01-29 +SELECT * FROM t1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; +total_rows min_value max(c1) +24 -838:59:59 838:59:59 +SELECT * FROM t1 WHERE c3 = '2009-01-17'; +c1 c2 c3 +11:11:27 11:11:27 2009-01-17 +SELECT c1 FROM t1; +c1 +-838:59:59 +00:00:00 +00:00:11 +00:00:12 +00:00:45 +00:11:12 +00:12:30 +00:12:34 +01:23:00 +08:03:02 +08:29:45 +09:00:45 +09:36:00 +10:00:00 +10:11:12 +10:22:33 +11:11:12 +11:11:27 +12:34:57 +12:34:58 +12:35:57 +491:22:33 +825:23:00 +838:59:59 +SELECT c1 FROM t1 ORDER BY c1 DESC; +c1 +838:59:59 +825:23:00 +491:22:33 +12:35:57 +12:34:58 +12:34:57 +11:11:27 +11:11:12 +10:22:33 +10:11:12 +10:00:00 +09:36:00 +09:00:45 +08:29:45 +08:03:02 +01:23:00 +00:12:34 +00:12:30 +00:11:12 +00:00:45 +00:00:12 +00:00:11 +00:00:00 +-838:59:59 +SELECT * FROM t1 ORDER BY c1 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c1 = '838:59:59' ORDER BY c1; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 = '838:59:59' ORDER BY c1 LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 = '838:59:59' ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 = '838:59:59' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <> '838:59:59' ORDER BY c1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c1 <> '838:59:59' ORDER BY c1 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 > '838:59:59' ORDER BY c1; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 > '838:59:59' ORDER BY c1 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 >= '838:59:59' ORDER BY c1; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 >= '838:59:59' ORDER BY c1 LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 < '838:59:59' ORDER BY c1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c1 < '838:59:59' ORDER BY c1 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 <= '838:59:59' ORDER BY c1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <= '838:59:59' ORDER BY c1 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 <=> '838:59:59' ORDER BY c1; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <=> '838:59:59' ORDER BY c1 LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t1 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t1 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1 LIMIT 2; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 <> '838:59:59' ORDER BY c1 DESC; +c1 c2 c3 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:29:45 NULL 2009-02-01 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <> '838:59:59' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +SELECT * FROM t1 WHERE c1 > '838:59:59' ORDER BY c1 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 > '838:59:59' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 >= '838:59:59' ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 >= '838:59:59' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 < '838:59:59' ORDER BY c1 DESC; +c1 c2 c3 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:29:45 NULL 2009-02-01 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 < '838:59:59' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +SELECT * FROM t1 WHERE c1 <= '838:59:59' ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:29:45 NULL 2009-02-01 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <= '838:59:59' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c1 <=> '838:59:59' ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <=> '838:59:59' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:29:45 NULL 2009-02-01 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1 DESC; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t1 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:29:45 NULL 2009-02-01 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t1; +total_rows min_value max(c1) +24 -838:59:59 838:59:59 +SELECT * FROM t1 WHERE c3 = '2009-01-16'; +c1 c2 c3 +12:35:57 12:35:57 2009-01-16 +SELECT c1 FROM t1; +c1 +-838:59:59 +00:00:00 +00:00:11 +00:00:12 +00:00:45 +00:11:12 +00:12:30 +00:12:34 +01:23:00 +08:03:02 +08:29:45 +09:00:45 +09:36:00 +10:00:00 +10:11:12 +10:22:33 +11:11:12 +11:11:27 +12:34:57 +12:34:58 +12:35:57 +491:22:33 +825:23:00 +838:59:59 +SELECT c1 FROM t1 ORDER BY c1 DESC; +c1 +838:59:59 +825:23:00 +491:22:33 +12:35:57 +12:34:58 +12:34:57 +11:11:27 +11:11:12 +10:22:33 +10:11:12 +10:00:00 +09:36:00 +09:00:45 +08:29:45 +08:03:02 +01:23:00 +00:12:34 +00:12:30 +00:11:12 +00:00:45 +00:00:12 +00:00:11 +00:00:00 +-838:59:59 +SELECT * FROM t1 ORDER BY c1 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c1 = '00:00:00' ORDER BY c1; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 = '00:00:00' ORDER BY c1 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 = '00:00:00' ORDER BY c1 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 = '00:00:00' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 <> '00:00:00' ORDER BY c1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <> '00:00:00' ORDER BY c1 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t1 WHERE c1 > '00:00:00' ORDER BY c1; +c1 c2 c3 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 > '00:00:00' ORDER BY c1 LIMIT 2; +c1 c2 c3 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +SELECT * FROM t1 WHERE c1 >= '00:00:00' ORDER BY c1; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 >= '00:00:00' ORDER BY c1 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t1 WHERE c1 < '00:00:00' ORDER BY c1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 < '00:00:00' ORDER BY c1 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <= '00:00:00' ORDER BY c1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 <= '00:00:00' ORDER BY c1 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 <=> '00:00:00' ORDER BY c1; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 <=> '00:00:00' ORDER BY c1 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t1 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t1 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t1 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t1 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t1 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1 LIMIT 2; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 <> '00:00:00' ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:29:45 NULL 2009-02-01 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <> '00:00:00' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c1 > '00:00:00' ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:29:45 NULL 2009-02-01 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t1 WHERE c1 > '00:00:00' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c1 >= '00:00:00' ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:29:45 NULL 2009-02-01 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 >= '00:00:00' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c1 < '00:00:00' ORDER BY c1 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 < '00:00:00' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <= '00:00:00' ORDER BY c1 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <= '00:00:00' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 <=> '00:00:00' ORDER BY c1 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 <=> '00:00:00' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1 DESC; +c1 c2 c3 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:29:45 NULL 2009-02-01 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +SELECT * FROM t1 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1 DESC; +c1 c2 c3 +09:36:00 09:36:00 2009-01-25 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +09:36:00 09:36:00 2009-01-25 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1 DESC; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t1 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 IS NULL ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:29:45 NULL 2009-02-01 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c1 IS NOT NULL ORDER BY c1 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; +total_rows min_value max(c2) +24 -838:59:59 838:59:59 +SELECT * FROM t1 WHERE c3 = '2009-01-15'; +c1 c2 c3 +12:34:58 12:34:58 2009-01-15 +SELECT c2 FROM t1; +c2 +-838:59:59 +00:00:00 +00:00:11 +00:00:12 +00:00:45 +00:11:12 +00:12:30 +00:12:34 +01:23:00 +08:03:02 +09:00:45 +09:36:00 +10:00:00 +10:11:12 +10:22:33 +11:11:12 +11:11:27 +12:34:57 +12:34:58 +12:35:57 +491:22:33 +825:23:00 +838:59:59 +NULL +SELECT c2 FROM t1 ORDER BY c2 DESC; +c2 +838:59:59 +825:23:00 +491:22:33 +12:35:57 +12:34:58 +12:34:57 +11:11:27 +11:11:12 +10:22:33 +10:11:12 +10:00:00 +09:36:00 +09:00:45 +08:03:02 +01:23:00 +00:12:34 +00:12:30 +00:11:12 +00:00:45 +00:00:12 +00:00:11 +00:00:00 +-838:59:59 +NULL +SELECT * FROM t1 ORDER BY c2 LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c2 = '-838:59:59' ORDER BY c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 = '-838:59:59' ORDER BY c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 = '-838:59:59' ORDER BY c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 = '-838:59:59' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 <> '-838:59:59' ORDER BY c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 <> '-838:59:59' ORDER BY c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t1 WHERE c2 > '-838:59:59' ORDER BY c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 > '-838:59:59' ORDER BY c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t1 WHERE c2 >= '-838:59:59' ORDER BY c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 >= '-838:59:59' ORDER BY c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c2 < '-838:59:59' ORDER BY c2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 < '-838:59:59' ORDER BY c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <= '-838:59:59' ORDER BY c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 <= '-838:59:59' ORDER BY c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 <=> '-838:59:59' ORDER BY c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 <=> '-838:59:59' ORDER BY c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t1 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t1 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t1 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c2; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t1 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c2 LIMIT 2; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c2 <> '-838:59:59' ORDER BY c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c2 <> '-838:59:59' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c2 > '-838:59:59' ORDER BY c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c2 > '-838:59:59' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c2 >= '-838:59:59' ORDER BY c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 >= '-838:59:59' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c2 < '-838:59:59' ORDER BY c2 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 < '-838:59:59' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <= '-838:59:59' ORDER BY c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 <= '-838:59:59' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 <=> '-838:59:59' ORDER BY c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 <=> '-838:59:59' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c2 DESC; +c1 c2 c3 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t1 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c2 DESC; +c1 c2 c3 +10:00:00 10:00:00 2009-01-06 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +10:00:00 10:00:00 2009-01-06 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c2 DESC; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t1 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t1; +total_rows min_value max(c2) +24 -838:59:59 838:59:59 +SELECT * FROM t1 WHERE c3 = '2009-01-11'; +c1 c2 c3 +10:11:12 10:11:12 2009-01-11 +SELECT c2 FROM t1; +c2 +-838:59:59 +00:00:00 +00:00:11 +00:00:12 +00:00:45 +00:11:12 +00:12:30 +00:12:34 +01:23:00 +08:03:02 +09:00:45 +09:36:00 +10:00:00 +10:11:12 +10:22:33 +11:11:12 +11:11:27 +12:34:57 +12:34:58 +12:35:57 +491:22:33 +825:23:00 +838:59:59 +NULL +SELECT c2 FROM t1 ORDER BY c2 DESC; +c2 +838:59:59 +825:23:00 +491:22:33 +12:35:57 +12:34:58 +12:34:57 +11:11:27 +11:11:12 +10:22:33 +10:11:12 +10:00:00 +09:36:00 +09:00:45 +08:03:02 +01:23:00 +00:12:34 +00:12:30 +00:11:12 +00:00:45 +00:00:12 +00:00:11 +00:00:00 +-838:59:59 +NULL +SELECT * FROM t1 ORDER BY c2 LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c2 = NULL ORDER BY c2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 = NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 = NULL ORDER BY c2 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 = NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <> NULL ORDER BY c2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <> NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 > NULL ORDER BY c2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 > NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 >= NULL ORDER BY c2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 >= NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 < NULL ORDER BY c2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 < NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <= NULL ORDER BY c2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <= NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 IN (NULL,'10:22:33') ORDER BY c2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 IN (NULL,'10:22:33') ORDER BY c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t1 WHERE c2 <> NULL ORDER BY c2 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <> NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 > NULL ORDER BY c2 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 > NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 >= NULL ORDER BY c2 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 >= NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 < NULL ORDER BY c2 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 < NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <= NULL ORDER BY c2 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <= NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c2 DESC; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 <=> NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c2 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 IN (NULL,'10:22:33') ORDER BY c2 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 IN (NULL,'10:22:33') ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c2 DESC; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 IS NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +491:22:33 491:22:33 2009-01-04 +12:35:57 12:35:57 2009-01-16 +12:34:58 12:34:58 2009-01-15 +12:34:57 12:34:57 2009-01-01 +11:11:27 11:11:27 2009-01-17 +11:11:12 11:11:12 2009-01-12 +10:22:33 10:22:33 2009-01-02 +10:11:12 10:11:12 2009-01-11 +10:00:00 10:00:00 2009-01-06 +09:36:00 09:36:00 2009-01-25 +09:00:45 09:00:45 2009-01-24 +08:03:02 08:03:02 2009-01-18 +01:23:00 01:23:00 2009-01-03 +00:12:34 00:12:34 2009-01-14 +00:12:30 00:12:30 2009-01-23 +00:11:12 00:11:12 2009-01-19 +00:00:45 00:00:45 2009-01-07 +00:00:12 00:00:12 2009-01-13 +00:00:11 00:00:11 2009-01-20 +00:00:00 00:00:00 2009-01-09 +-838:59:59 -838:59:59 2009-01-21 +SELECT * FROM t1 WHERE c2 IS NOT NULL ORDER BY c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-21 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t1 WHERE c1='838:59:59' OR c2='-838:59:59'; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-21 +838:59:59 838:59:59 2009-01-21 +SELECT * FROM t2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; +total_rows min_value max(c1) +23 -838:59:59 838:59:59 +SELECT * FROM t2 WHERE c3 = '2009-01-17'; +c1 c2 c3 +11:11:27 11:11:27 2009-01-17 +SELECT c1,c2 FROM t2; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 = '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 = '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 = '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 = '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 <> '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t2 WHERE c1 <> '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 > '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 > '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 >= '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 >= '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 < '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t2 WHERE c1 < '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <= '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 <= '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <=> '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 <=> '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1,c2; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t2 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <> '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t2 WHERE c1 <> '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 > '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 > '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 >= '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 >= '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 < '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t2 WHERE c1 < '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <= '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 <= '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <=> '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 <=> '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1,c2 DESC; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t2 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t2; +total_rows min_value max(c1) +23 -838:59:59 838:59:59 +SELECT * FROM t2 WHERE c3 = '2009-01-16'; +c1 c2 c3 +12:35:57 12:35:57 2009-01-16 +SELECT c1,c2 FROM t2; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 = '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 = '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 = '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 = '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <> '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 <> '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c1 > '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 > '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +SELECT * FROM t2 WHERE c1 >= '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 >= '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c1 < '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c1 < '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c1 <= '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <= '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <=> '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <=> '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t2 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t2 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t2 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1,c2; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t2 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <> '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 <> '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c1 > '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 > '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +SELECT * FROM t2 WHERE c1 >= '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 >= '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c1 < '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c1 < '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c1 <= '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <= '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <=> '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 <=> '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t2 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t2 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t2 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t2 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; +total_rows min_value max(c2) +23 -838:59:59 838:59:59 +SELECT * FROM t2 WHERE c3 = '2009-01-15'; +c1 c2 c3 +12:34:58 12:34:58 2009-01-15 +SELECT c1,c2 FROM t2; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c2 = '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 = '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 = '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 = '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 <> '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c2 <> '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c2 > '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c2 > '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c2 >= '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c2 >= '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c2 < '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 < '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <= '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 <= '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 <=> '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 <=> '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t2 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t2 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t2 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c1,c2; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t2 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c2 <> '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c2 <> '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c2 > '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c2 > '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t2 WHERE c2 >= '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c2 >= '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c2 < '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 < '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <= '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 <= '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 <=> '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 <=> '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t2 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t2 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t2 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t2 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t2 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t2; +total_rows min_value max(c2) +23 -838:59:59 838:59:59 +SELECT * FROM t2 WHERE c3 = '2009-01-11'; +c1 c2 c3 +10:11:12 10:11:12 2009-01-11 +SELECT c1,c2 FROM t2; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT c1,c2 FROM t2 ORDER BY c1,c2 DESC; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT * FROM t2 ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c2 = NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 = NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 = NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 = NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <> NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <> NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 > NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 > NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 >= NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 >= NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 < NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 < NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <= NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <= NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <=> NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <=> NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IN (NULL,'10:22:33') ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IN (NULL,'10:22:33') ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t2 WHERE c2 <> NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <> NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 > NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 > NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 >= NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 >= NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 < NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 < NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <= NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <= NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <=> NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 <=> NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IN (NULL,'10:22:33') ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IN (NULL,'10:22:33') ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t2 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; +total_rows min_value max(c1) +24 -838:59:59 838:59:59 +SELECT * FROM t3 WHERE c3 = '2009-01-17'; +c1 c2 c3 +11:11:27 11:11:27 2009-01-17 +SELECT c1,c2 FROM t3; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +08:29:45 NULL +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +08:29:45 NULL +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 = '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 = '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 = '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 = '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 <> '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t3 WHERE c1 <> '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 > '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 > '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 >= '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 >= '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 < '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t3 WHERE c1 < '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <= '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 <= '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <=> '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 <=> '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1,c2; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t3 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <> '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t3 WHERE c1 <> '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 > '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 > '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 >= '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 >= '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 < '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +SELECT * FROM t3 WHERE c1 < '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <= '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 <= '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <=> '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 <=> '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 BETWEEN '00:00:00' AND '838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 IN ('00:00:00','838:59:59') ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1,c2 DESC; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t3 WHERE c1 >= '00:00:00' AND c1 < '838:59:59' AND c2 = '11:11:12' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +11:11:12 11:11:12 2009-01-12 +SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT count(*) as total_rows, min(c1) as min_value, max(c1) FROM t3; +total_rows min_value max(c1) +24 -838:59:59 838:59:59 +SELECT * FROM t3 WHERE c3 = '2009-01-16'; +c1 c2 c3 +12:35:57 12:35:57 2009-01-16 +SELECT c1,c2 FROM t3; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +08:29:45 NULL +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +08:29:45 NULL +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 = '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 = '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 = '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 = '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <> '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 <> '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c1 > '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 > '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +SELECT * FROM t3 WHERE c1 >= '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 >= '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c1 < '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c1 < '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c1 <= '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <= '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <=> '00:00:00' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <=> '00:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t3 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t3 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t3 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1,c2; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t3 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <> '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 <> '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c1 > '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 > '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +SELECT * FROM t3 WHERE c1 >= '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 >= '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c1 < '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c1 < '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c1 <= '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <= '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <=> '00:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 <=> '00:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t3 WHERE c1 BETWEEN '00:00:00' AND '09:36:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t3 WHERE c1 IN ('00:00:00','09:36:00') ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +09:36:00 09:36:00 2009-01-25 +SELECT * FROM t3 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t3 WHERE c1 >= '00:00:00' AND c1 < '09:36:00' AND c2 = '01:23:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +01:23:00 01:23:00 2009-01-03 +SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 IS NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c1 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; +total_rows min_value max(c2) +24 -838:59:59 838:59:59 +SELECT * FROM t3 WHERE c3 = '2009-01-15'; +c1 c2 c3 +12:34:58 12:34:58 2009-01-15 +SELECT c1,c2 FROM t3; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +08:29:45 NULL +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +08:29:45 NULL +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c2 = '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 = '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 = '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 = '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 <> '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c2 <> '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c2 > '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c2 > '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c2 >= '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c2 >= '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c2 < '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 < '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <= '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 <= '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 <=> '-838:59:59' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 <=> '-838:59:59' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t3 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t3 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t3 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c1,c2; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t3 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c2 <> '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c2 <> '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c2 > '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c2 > '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +SELECT * FROM t3 WHERE c2 >= '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c2 >= '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c2 < '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 < '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <= '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 <= '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 <=> '-838:59:59' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 <=> '-838:59:59' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +SELECT * FROM t3 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t3 WHERE c2 BETWEEN '-838:59:59' AND '10:00:00' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t3 WHERE c2 IN ('-838:59:59','10:00:00') ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +10:00:00 10:00:00 2009-01-06 +SELECT * FROM t3 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c1,c2 DESC; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t3 WHERE c2 >= '-838:59:59' AND c2 < '10:00:00' AND c1 = '00:11:12' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +00:11:12 00:11:12 2009-01-19 +SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +08:29:45 NULL 2009-02-01 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT count(*) as total_rows, min(c2) as min_value, max(c2) FROM t3; +total_rows min_value max(c2) +24 -838:59:59 838:59:59 +SELECT * FROM t3 WHERE c3 = '2009-01-11'; +c1 c2 c3 +10:11:12 10:11:12 2009-01-11 +SELECT c1,c2 FROM t3; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +08:29:45 NULL +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT c1,c2 FROM t3 ORDER BY c1,c2 DESC; +c1 c2 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +08:29:45 NULL +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT * FROM t3 ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c2 = NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 = NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 = NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 = NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 > NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 > NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 < NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 < NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c1,c2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 IN (NULL,'10:22:33') ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 IN (NULL,'10:22:33') ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c1,c2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <> NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 > NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 > NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 >= NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 < NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 < NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <= NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 <=> NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 BETWEEN NULL AND '10:22:33' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 IN (NULL,'10:22:33') ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 IN (NULL,'10:22:33') ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c1,c2 DESC; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 >= NULL AND c2 < '10:22:33' AND c1 = '491:22:33' ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 IS NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +08:29:45 NULL 2009-02-01 +SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +00:00:11 00:00:11 2009-01-20 +00:00:12 00:00:12 2009-01-13 +00:00:45 00:00:45 2009-01-07 +00:11:12 00:11:12 2009-01-19 +00:12:30 00:12:30 2009-01-23 +00:12:34 00:12:34 2009-01-14 +01:23:00 01:23:00 2009-01-03 +08:03:02 08:03:02 2009-01-18 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +10:00:00 10:00:00 2009-01-06 +10:11:12 10:11:12 2009-01-11 +10:22:33 10:22:33 2009-01-02 +11:11:12 11:11:12 2009-01-12 +11:11:27 11:11:27 2009-01-17 +12:34:57 12:34:57 2009-01-01 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +SELECT * FROM t3 WHERE c2 IS NOT NULL ORDER BY c1,c2 DESC LIMIT 2; +c1 c2 c3 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +SELECT c1 FROM t3 GROUP BY c1; +c1 +-838:59:59 +00:00:00 +00:00:11 +00:00:12 +00:00:45 +00:11:12 +00:12:30 +00:12:34 +01:23:00 +08:03:02 +08:29:45 +09:00:45 +09:36:00 +10:00:00 +10:11:12 +10:22:33 +11:11:12 +11:11:27 +12:34:57 +12:34:58 +12:35:57 +491:22:33 +825:23:00 +838:59:59 +SELECT DISTINCT c1 FROM t3; +c1 +-838:59:59 +00:00:00 +00:00:11 +00:00:12 +00:00:45 +00:11:12 +00:12:30 +00:12:34 +01:23:00 +08:03:02 +08:29:45 +09:00:45 +09:36:00 +10:00:00 +10:11:12 +10:22:33 +11:11:12 +11:11:27 +12:34:57 +12:34:58 +12:35:57 +491:22:33 +825:23:00 +838:59:59 +SELECT c1,MIN(c2) FROM t3 GROUP BY c1; +c1 MIN(c2) +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:45 00:00:45 +00:11:12 00:11:12 +00:12:30 00:12:30 +00:12:34 00:12:34 +01:23:00 01:23:00 +08:03:02 08:03:02 +08:29:45 NULL +09:00:45 09:00:45 +09:36:00 09:36:00 +10:00:00 10:00:00 +10:11:12 10:11:12 +10:22:33 10:22:33 +11:11:12 11:11:12 +11:11:27 11:11:27 +12:34:57 12:34:57 +12:34:58 12:34:58 +12:35:57 12:35:57 +491:22:33 491:22:33 +825:23:00 825:23:00 +838:59:59 838:59:59 +SELECT CAST(235959.123456 AS TIME); +CAST(235959.123456 AS TIME) +23:59:59 +SELECT CAST(0.235959123456e+6 AS TIME); +CAST(0.235959123456e+6 AS TIME) +23:59:59 +SELECT CAST(235959123456e-6 AS TIME); +CAST(235959123456e-6 AS TIME) +23:59:59 +SELECT CAST(235959.1234567 AS TIME); +CAST(235959.1234567 AS TIME) +23:59:59 +SELECT CAST(0.2359591234567e6 AS TIME); +CAST(0.2359591234567e6 AS TIME) +23:59:59 +SELECT CAST(0.2359591234567e+30 AS TIME); +CAST(0.2359591234567e+30 AS TIME) +NULL +Warnings: +Warning 1292 Truncated incorrect time value: '2.359591234567e29' +select cast('100:55:50' as time) < cast('24:00:00' as time); +cast('100:55:50' as time) < cast('24:00:00' as time) +0 +select cast('100:55:50' as time) < cast('024:00:00' as time); +cast('100:55:50' as time) < cast('024:00:00' as time) +0 +select cast('300:55:50' as time) < cast('240:00:00' as time); +cast('300:55:50' as time) < cast('240:00:00' as time) +0 +select cast('100:55:50' as time) > cast('24:00:00' as time); +cast('100:55:50' as time) > cast('24:00:00' as time) +1 +select cast('100:55:50' as time) > cast('024:00:00' as time); +cast('100:55:50' as time) > cast('024:00:00' as time) +1 +select cast('300:55:50' as time) > cast('240:00:00' as time); +cast('300:55:50' as time) > cast('240:00:00' as time) +1 +create table t5 (f1 time); +insert into t5 values ('24:00:00'); +select cast('24:00:00' as time) = (select f1 from t5); +cast('24:00:00' as time) = (select f1 from t5) +1 +drop table t5; +INSERT INTO t1(c1,c2) VALUES('10:22:33','10:22:34') /* throws error as row exists with c1='10:22:33' */; +ERROR 23000: Duplicate entry '10:22:33' for key 't1.PRIMARY' +INSERT INTO t2(c1,c2) VALUES('12:34:56.78','12:34:56.78') /* throws error as row exists with c1='12:34:56.78',c2='12:34:56.78' */; +ERROR 23000: Duplicate entry '12:34:57-12:34:57' for key 't2.PRIMARY' +INSERT INTO t1(c1,c2) VALUES('10:22:34','34 9:23') /* throws error as row exists with c2='34 9:23' */; +ERROR 23000: Duplicate entry '825:23:00' for key 't1.c2' +INSERT INTO t3(c1,c2) VALUES('34 9:23','34 9:23') /* throws error as row exists with c1='34 9:23',c2='34 9:23' */; +ERROR 23000: Duplicate entry '825:23:00-825:23:00' for key 't3.idx' +INSERT IGNORE INTO t1(c1,c2) VALUES('10:22:33','10:22:34') /* doesn't throw error */; +Warnings: +Warning 1062 Duplicate entry '10:22:33' for key 't1.PRIMARY' +INSERT IGNORE INTO t2(c1,c2) VALUES('12:34:56.78','12:34:56.78') /*doesn't throw error */; +Warnings: +Warning 1062 Duplicate entry '12:34:57-12:34:57' for key 't2.PRIMARY' +INSERT IGNORE INTO t1(c1,c2) VALUES('10:22:34','34 9:23') /*doesn't throw error */; +Warnings: +Warning 1062 Duplicate entry '825:23:00' for key 't1.c2' +INSERT IGNORE INTO t3(c1,c2) VALUES('34 9:23','34 9:23') /*doesn't throw error */; +Warnings: +Warning 1062 Duplicate entry '825:23:00-825:23:00' for key 't3.idx' +SELECT * FROM t1 WHERE c1='10:23:33' /* no rows */; +c1 c2 c3 +INSERT INTO t1(c1) VALUES('10:22:33') ON DUPLICATE KEY UPDATE c1='10:23:33'; +SELECT * FROM t1 WHERE c1='10:23:33' /* 1 row */; +c1 c2 c3 +10:23:33 10:22:33 2009-01-02 +SELECT * FROM t2 WHERE c1='12:34:56.79' AND c2='12:34:57.78' /* no rows */; +c1 c2 c3 +INSERT INTO t2(c1,c2) VALUES('12:34:56.78','12:34:56.78') ON DUPLICATE KEY UPDATE c1='12:34:56.79',c2='12:34:57.78'; +SELECT * FROM t2 WHERE c1='12:34:56.79' AND c2='12:34:57.78' /* 1 row */; +c1 c2 c3 +12:34:57 12:34:58 2009-01-01 +SELECT * FROM t1 WHERE c1='10:22:35' AND c2='33 9:23' /* no rows */; +c1 c2 c3 +INSERT INTO t1(c1,c2) VALUES('10:22:34','34 9:23') ON DUPLICATE KEY UPDATE c1='10:22:35',c2='33 9:23'; +SELECT * FROM t1 WHERE c1='10:22:35' AND c2='33 9:23' /* 1 row */; +c1 c2 c3 +10:22:35 801:23:00 2009-01-05 +SELECT * FROM t3 WHERE c1='32 9:23' AND c2='33 9:23' /* no rows */; +c1 c2 c3 +INSERT INTO t3(c1,c2) VALUES('34 9:23','34 9:23') ON DUPLICATE KEY UPDATE c1='32 9:23',c2='33 9:23'; +SELECT * FROM t3 WHERE c1='32 9:23' AND c2='33 9:23' /* 1 row */; +c1 c2 c3 +777:23:00 801:23:00 2009-01-05 +INSERT INTO t1 SET c1='07:23:55',c2='13 06:23:55'; +INSERT INTO t2 SET c1='07:23:55',c2='13 06:23:55'; +INSERT INTO t3 SET c1='07:23:55'; +INSERT INTO t4 SET c2='07:23:55'; +Warnings: +Warning 1364 Field 'c1' doesn't have a default value +SELECT * FROM t1 WHERE c1='07:23:55' AND c2='13 06:23:55' /* Returns 1 row with values for other column as NULL */; +c1 c2 c3 +07:23:55 318:23:55 NULL +SELECT * FROM t2 WHERE c1='07:23:55' AND c2='13 06:23:55' /* Returns 1 row with values for other column as NULL */; +c1 c2 c3 +07:23:55 318:23:55 NULL +SELECT * FROM t3 WHERE c1='07:23:55' /* Returns 1 row with values for other column as NULL */; +c1 c2 c3 +07:23:55 NULL NULL +SELECT * FROM t4 WHERE c2='07:23:55' /* Returns 1 row with values for other column as NULL */; +c1 c2 c3 +00:00:00 07:23:55 NULL +CREATE TABLE t5(c1 TIME NOT NULL, c2 TIME NULL, c3 DATE, INDEX idx(c1,c2)); +INSERT INTO t5 SELECT * FROM t4; +SELECT * FROM t5; +c1 c2 c3 +12:34:57 12:34:57 2009-01-01 +10:22:33 10:22:33 2009-01-02 +01:23:00 01:23:00 2009-01-03 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +10:00:00 10:00:00 2009-01-06 +00:00:45 00:00:45 2009-01-07 +-838:59:59 -838:59:59 2009-01-08 +00:00:00 00:00:00 2009-01-09 +838:59:59 838:59:59 2009-01-10 +10:11:12 10:11:12 2009-01-11 +11:11:12 11:11:12 2009-01-12 +00:00:12 00:00:12 2009-01-13 +00:12:34 00:12:34 2009-01-14 +12:34:58 12:34:58 2009-01-15 +12:35:57 12:35:57 2009-01-16 +11:11:27 11:11:27 2009-01-17 +08:03:02 08:03:02 2009-01-18 +00:11:12 00:11:12 2009-01-19 +00:00:11 00:00:11 2009-01-20 +00:12:30 00:12:30 2009-01-23 +09:00:45 09:00:45 2009-01-24 +09:36:00 09:36:00 2009-01-25 +00:00:10 00:00:10 2009-01-26 +00:00:00 00:00:00 2009-01-27 +838:59:59 838:59:59 2009-01-28 +838:59:59 838:59:59 2009-01-29 +262:22:00 262:22:00 2009-01-30 +00:00:12 00:00:12 2009-01-31 +08:29:45 NULL 2009-02-01 +00:00:00 07:23:55 NULL +TRUNCATE TABLE t5; +INSERT INTO t5 SELECT * FROM t4 WHERE c1 >='12colon34colon56'; +Warnings: +Warning 1292 Incorrect time value: '12colon34colon56' for column 'c1' at row 1 +SELECT * FROM t5; +c1 c2 c3 +491:22:33 491:22:33 2009-01-04 +825:23:00 825:23:00 2009-01-05 +838:59:59 838:59:59 2009-01-10 +838:59:59 838:59:59 2009-01-28 +838:59:59 838:59:59 2009-01-29 +262:22:00 262:22:00 2009-01-30 +TRUNCATE TABLE t5; +DROP TABLE t5; +DROP TABLE t1,t2,t3,t4; +SET sql_mode=default; diff --git a/mysql-test/suite/tianchi/r/ctc_json_value.result b/mysql-test/suite/tianchi/r/ctc_json_value.result new file mode 100644 index 0000000..0b6a13c --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_json_value.result @@ -0,0 +1,295 @@ +drop table if exists t1; +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$')))); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `j` json DEFAULT NULL, + KEY `i1` ((json_value(`j`, _utf8mb4'$' returning char(512)))) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t1 VALUES('"asdf"'),('"dfgh"'),('"FghJ"'),('"fghj"'),('"hjkl"'); +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +EXPLAIN SELECT * FROM t1 WHERE JSON_VALUE(j, '$' RETURNING CHAR(10)) = 'fghj'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 5 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`test`.`t1`.`j`, '$' returning char(10)) = 'fghj') +SELECT * FROM t1 WHERE JSON_VALUE(j, '$' RETURNING CHAR(10)) = 'fghj'; +j +"fghj" +# The index is not used if the JSON_VALUE expressions differ. +EXPLAIN SELECT * FROM t1 WHERE JSON_VALUE(j, '$' RETURNING CHAR(11)) = 'fghj'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 5 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`test`.`t1`.`j`, '$' returning char(11)) = 'fghj') +SELECT * FROM t1 WHERE JSON_VALUE(j, '$' RETURNING CHAR(11)) = 'fghj'; +j +"fghj" +EXPLAIN SELECT * FROM t1 WHERE JSON_VALUE(j, '$') = 'fghj'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ref i1 i1 2051 const 5 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`j`, _utf8mb4'$' returning char(512)) = 'fghj') +DROP TABLE t1; +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$' RETURNING CHAR(10))))); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `j` json DEFAULT NULL, + KEY `i1` ((json_value(`j`, _utf8mb4'$' returning char(10)))) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t1 VALUES('"asdf"'),('"dfgh"'),('"FghJ"'),('"fghj"'),('"hjkl"'); +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze error Unknown - internal error 155 during operation +EXPLAIN SELECT * FROM t1 WHERE JSON_VALUE(j, '$' RETURNING CHAR(10)) = 'fghj'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ref i1 i1 43 const 1 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`j`, _utf8mb4'$' returning char(10)) = 'fghj') +SELECT * FROM t1 WHERE JSON_VALUE(j, '$' RETURNING CHAR(10)) = 'fghj'; +j +# The index is not used if the JSON_VALUE expressions differ. +EXPLAIN SELECT * FROM t1 WHERE JSON_VALUE(j, '$' RETURNING CHAR(11)) = 'fghj'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`test`.`t1`.`j`, '$' returning char(11)) = 'fghj') +SELECT * FROM t1 WHERE JSON_VALUE(j, '$' RETURNING CHAR(11)) = 'fghj'; +j +"fghj" +EXPLAIN SELECT * FROM t1 WHERE JSON_VALUE(j, '$') = 'fghj'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 3 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`test`.`t1`.`j`, '$' returning char(512)) = 'fghj') +DROP TABLE t1; +CREATE TABLE t1(j JSON, +KEY i1((JSON_VALUE(j, '$' RETURNING CHAR(10) CHARSET utf8mb4)))); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `j` json DEFAULT NULL, + KEY `i1` ((json_value(`j`, _utf8mb4'$' returning char(10) character set utf8mb4))) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t1 VALUES('"asdf"'),('"dfgh"'),('"FghJ"'),('"fghj"'),('"hjkl"'); +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +EXPLAIN SELECT * FROM t1 +WHERE JSON_VALUE(j, '$' RETURNING CHAR(10) CHARSET utf8mb4) = 'fghj'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ref i1 i1 43 const 5 100.00 NULL +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`j`, _utf8mb4'$' returning char(10) character set utf8mb4) = 'fghj') +SELECT * FROM t1 +WHERE JSON_VALUE(j, '$' RETURNING CHAR(10) CHARSET utf8mb4) = 'fghj'; +j +# The index is not used if the JSON_VALUE expressions differ. +SELECT * FROM t1 WHERE JSON_VALUE(j, '$' RETURNING CHAR(10) CHARSET latin1) = 'fghj'; +j +"FghJ" +"fghj" +EXPLAIN SELECT * FROM t1 +WHERE JSON_VALUE(j, '$' RETURNING CHAR(10) CHARSET latin1) = 'fghj'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 5 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`test`.`t1`.`j`, '$' returning char(10) character set latin1) = 'fghj') +DROP TABLE t1; +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$.name' RETURNING CHAR(100)CHARSET utf8mb4)))); +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `j` json DEFAULT NULL, + KEY `i1` ((json_value(`j`, _utf8mb4'$.name' returning char(100) character set utf8mb4))) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +INSERT INTO t1 VALUES('{"name":"First Primary School", "create_time":"2012-05-08", "classes": [{"name":"class 1", + "size":50, "teachers":{"teacher":"Master Zhang", "age":31}}, {"name":"class 2", "size":45, + "teachers":{"teacher":"Master Liu", "age":40}}]}'); +insert into t1 values('{"name":"First Primary School","create_time":"2012-05-08","year":38, + "classes":[{"name":"class 1","size":50,"teachers":{"teacher":"Master Zhang","age":31}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 3","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 4","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 5","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 6","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 7","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 8","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 9","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 10","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 11","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 12","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 13","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 14","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 15","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 16","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}, + {"name":"class 2","size":45,"teachers":{"teacher":"Master Liu","age":40}}]}'); +ANALYZE TABLE t1; +Table Op Msg_type Msg_text +test.t1 analyze status OK +EXPLAIN SELECT * FROM t1 WHERE JSON_VALUE(j, '$.name' RETURNING CHAR(100)) = 'First Primary School'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 2 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`test`.`t1`.`j`, '$.name' returning char(100)) = 'First Primary School') +SELECT * FROM t1 WHERE JSON_VALUE(j, '$.name' RETURNING CHAR(100)) = 'First Primary School'; +j +{"name": "First Primary School", "classes": [{"name": "class 1", "size": 50, "teachers": {"age": 31, "teacher": "Master Zhang"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}], "create_time": "2012-05-08"} +{"name": "First Primary School", "year": 38, "classes": [{"name": "class 1", "size": 50, "teachers": {"age": 31, "teacher": "Master Zhang"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 3", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 4", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 5", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 6", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 7", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 8", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 9", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 10", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 11", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 12", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 13", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 14", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 15", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 16", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}, {"name": "class 2", "size": 45, "teachers": {"age": 40, "teacher": "Master Liu"}}], "create_time": "2012-05-08"} +# The index is not used if the JSON_VALUE expressions differ. +EXPLAIN SELECT * FROM t1 WHERE JSON_VALUE(j, '$.name' RETURNING CHAR(100)) = 'First Primary School'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 2 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`test`.`t1`.`j`, '$.name' returning char(100)) = 'First Primary School') +EXPLAIN SELECT * FROM t1 WHERE JSON_VALUE(j, '$.name') = 'First Primary School'; +id select_type table partitions type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 NULL ALL NULL NULL NULL NULL 2 100.00 Using where +Warnings: +Note 1003 /* select#1 */ select `test`.`t1`.`j` AS `j` from `test`.`t1` where (json_value(`test`.`t1`.`j`, '$.name' returning char(512)) = 'First Primary School') +DROP TABLE t1; +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$' RETURNING SIGNED)))); +ERROR HY000: Invalid RETURNING/ON clause, +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$' RETURNING UNSIGNED)))); +ERROR HY000: Invalid RETURNING/ON clause, +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$' RETURNING DECIMAL(3, 2))))); +ERROR HY000: Invalid RETURNING/ON clause, +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$' RETURNING FLOAT)))); +ERROR HY000: Invalid RETURNING/ON clause, +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$' RETURNING DOUBLE)))); +ERROR HY000: Invalid RETURNING/ON clause, +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$' RETURNING DATETIME)))); +ERROR HY000: Invalid RETURNING/ON clause, +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$' RETURNING TIME)))); +ERROR HY000: Invalid RETURNING/ON clause, +CREATE TABLE t1(j JSON, KEY i1((JSON_VALUE(j, '$' RETURNING DATE)))); +ERROR HY000: Invalid RETURNING/ON clause, diff --git a/mysql-test/suite/tianchi/r/ctc_lcov.result b/mysql-test/suite/tianchi/r/ctc_lcov.result new file mode 100644 index 0000000..df65214 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_lcov.result @@ -0,0 +1,62 @@ +create tablespace ts01 add datafile 'ts_01.ibd' autoextend_size=1M; +alter tablespace ts01 rename to ts01_new; +alter tablespace ts01 autoextend_size = 64K; +ERROR HY000: Tablespace ts01 doesn't exist. +alter tablespace ts01_new autoextend_size = 64K; +drop tablespace ts01_new; +create tablespace ts04 add datafile 'ts_04' autoextend_size=1M; +ERROR HY000: The ADD DATAFILE filepath must end with '.ibd'. +create tablespace ts01 add datafile 'ts_01.ibd' autoextend_size=1M; +alter tablespace ts01 add datafile 'ts_02.ibd' autoextend_size=4M; +ERROR 42000: The storage engine for the table doesn't support ALTER TABLESPACE ... ADD DATAFILE +alter tablespace ts01 drop datafile 'ts_01.ibd'; +ERROR 42000: The storage engine for the table doesn't support ALTER TABLESPACE ... DROP DATAFILE +drop tablespace ts01; +select @@global.max_connections into @ctc_saved_max_connections; +set global max_connections=0; +ERROR HY000: Current SE cannot provide less than one connection. +set global max_connections=10000; +ERROR HY000: Current SE can only provide 1365 connections for one mysql-server +SET session super_read_only= 1; +ERROR HY000: Variable 'super_read_only' is a GLOBAL variable and should be set with SET GLOBAL +SET session super_read_only= 0; +ERROR HY000: Variable 'super_read_only' is a GLOBAL variable and should be set with SET GLOBAL +set @ctc_ddl_enabled=true; +create user test_user; +drop user test_user; +set @ctc_dcl_disabled=1; +create user test_user; +ERROR HY000: DCL query is not allowed (ctc_dcl_disabled = true) +set @ctc_dcl_disabled=0; +set global ctc_stats_enabled=ON; +show engine ctc status; +Type Name Status +ctc +======================================CTC_STATS===================================== +Interface: Call counter Used Time Average Time + +======================================CTC_STATS===================================== + +create table t1(i int); +insert into t1 value(123); +set debug = '+d, non_metadata_normalization'; +lock table t1 write; +unlock tables; +set debug = '-d, non_metadata_normalization'; +set sort_buffer_size = (select i from t1); +Warnings: +Warning 1292 Truncated incorrect sort_buffer_size value: '123' +drop table t1; +set global ctc_stats_enabled=OFF; +set global max_connections=101; +set global max_connections=default; +set global autocommit=false; +set global autocommit=true; +CREATE TEMPORARY TABLE t_processlist AS SELECT ID FROM information_schema.processlist; +DROP TABLE t_processlist; +create table t1(a blob default("test")); +alter table t1 add column b varchar(10) default ("test"); +alter table t1 add column b1 varchar(10) default "test"; +alter table t1 add column c bit default ("10"); +alter table t1 add column d bit default (10); +drop table t1; diff --git a/mysql-test/suite/tianchi/r/ctc_link_and_migr_row.result b/mysql-test/suite/tianchi/r/ctc_link_and_migr_row.result new file mode 100644 index 0000000..3f55b0b --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_link_and_migr_row.result @@ -0,0 +1,431 @@ +DROP TABLE IF EXISTS ROW_CHAIN_TABLE; +set autocommit = 0; +CREATE TABLE ROW_CHAIN_TABLE(ID INT,A VARCHAR(8000),B VARCHAR(8000),C VARCHAR(8000),D VARCHAR(8000)) ENGINE=CTC DEFAULT CHARSET=ascii; +COMMIT; +######## UNDO_HEAP_UPDATE_FULL_COLUMNS WITHOUT PRIMAYR KEY INDEX +######## test case 1, UPDATE_INPLACE(CHAIN->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(1,LPAD('A',8000,'A'),LPAD('B',8000,'B'),LPAD('C',8000,'C'),'D'); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=1; +ID A B C D +1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC D +UPDATE ROW_CHAIN_TABLE SET ID=1,A=LPAD('U',8000,'U'),B=LPAD('V',8000,'V'),C=LPAD('W',8000,'W'),D='X' WHERE ID=1; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=1; +ID A B C D +1 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW X +COMMIT; +######## test case 2, UPDATE_INPAGE(CHAIN->CHAIN) +UPDATE ROW_CHAIN_TABLE SET ID=2,A=LPAD('U',3000,'U'),B=LPAD('V',2000,'V'),C=LPAD('W',3000,'W'),D='X' WHERE ID=1; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=2; +ID A B C D +2 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW X +COMMIT; +######## test case 3, UPDATE_MIGR(CHAIN->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(3,LPAD('A',8000,'A'),'B','C',LPAD('D',8000,'D')); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=3; +ID A B C D +3 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B C DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +UPDATE ROW_CHAIN_TABLE SET ID=3,A=LPAD('U',8000,'U'),B=LPAD('V',8000,'V'),C=LPAD('W',8000,'W'),D=LPAD('X',8000,'X') WHERE ID=3; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=3; +ID A B C D +3 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +COMMIT; +######## test case 4, UPDATE_MIGR(NORMAL->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(4,'A','B','C','D'); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=4; +ID A B C D +4 A B C D +UPDATE ROW_CHAIN_TABLE SET ID=4,A=LPAD('U',8000,'U'),B=LPAD('V',8000,'V'),C=LPAD('W',8000,'W'),D=LPAD('X',8000,'X') WHERE ID=4; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=4; +ID A B C D +4 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +COMMIT; +######## test case 5, UPDATE_MIGR(CHAIN->NORMAL) +INSERT INTO ROW_CHAIN_TABLE VALUES(5,LPAD('A',8000,'A'),'B','C',LPAD('D',8000,'D')); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=5; +ID A B C D +5 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B C DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +UPDATE ROW_CHAIN_TABLE SET ID=5,A='A',B='B',C='C',D='D' WHERE ID=5; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=5; +ID A B C D +5 A B C D +COMMIT; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +4 +DELETE FROM ROW_CHAIN_TABLE WHERE ID=1; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=2; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=3; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=4; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=5; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +0 +ROLLBACK; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +4 +COMMIT; +######## UNDO_HEAP_UPDATE_PART_COLUMNS WITHOUT PRIMAYR KEY INDEX +######## test case 6, UPDATE_INPLACE(CHAIN->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(6,LPAD('A',8000,'A'),LPAD('B',3000,'B'),LPAD('C',8000,'C'),'D'); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=6; +ID A B C D +6 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC D +UPDATE ROW_CHAIN_TABLE SET ID=6,A=LPAD('U',8000,'U'),C=LPAD('W',8000,'W'),D='X' WHERE ID=6; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=6; +ID A B C D +6 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW X +COMMIT; +######## test case 7, UPDATE_INPAGE(CHAIN->CHAIN) +UPDATE ROW_CHAIN_TABLE SET ID=7,A=LPAD('U',3000,'U'),B=LPAD('V',2000,'V'),D='X' WHERE ID=6; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=7; +ID A B C D +7 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW X +COMMIT; +######## test case 8, UPDATE_MIGR(CHAIN->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(8,LPAD('A',8000,'A'),'B','C',LPAD('D',8000,'D')); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=8; +ID A B C D +8 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B C DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +UPDATE ROW_CHAIN_TABLE SET ID=8,B=LPAD('V',8000,'V'),C=LPAD('W',8000,'W') WHERE ID=8; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=8; +ID A B C D +8 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +COMMIT; +######## test case 9, UPDATE_MIGR(NORMAL->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(9,'A','B','C','D'); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=9; +ID A B C D +9 A B C D +UPDATE ROW_CHAIN_TABLE SET ID=9,B=LPAD('V',8000,'V'),C=LPAD('W',8000,'W') WHERE ID=9; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=9; +ID A B C D +9 A VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW D +COMMIT; +######## test case 10, UPDATE_MIGR(CHAIN->NORMAL) +INSERT INTO ROW_CHAIN_TABLE VALUES(10,LPAD('A',8000,'A'),'B','C',LPAD('D',8000,'D')); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=10; +ID A B C D +10 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B C DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +UPDATE ROW_CHAIN_TABLE SET ID=10,A='A',B='B',C='C',D='D' WHERE ID=10; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=10; +ID A B C D +10 A B C D +COMMIT; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +8 +DELETE FROM ROW_CHAIN_TABLE WHERE ID=6; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=7; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=8; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=9; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=10; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +4 +ROLLBACK; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +8 +COMMIT; +######## test case 11, ADD COLUMN WITHOUT PRIMAYR KEY INDEX +INSERT INTO ROW_CHAIN_TABLE VALUES(11,LPAD('A',8000,'A'),'B','C',LPAD('D',8000,'D')); +ALTER TABLE ROW_CHAIN_TABLE ADD COLUMN E VARCHAR(8000); +UPDATE ROW_CHAIN_TABLE SET E=LPAD('E',8000,'E') WHERE ID=11; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID > 10; +ID A B C D E +11 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B C DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +DELETE FROM ROW_CHAIN_TABLE WHERE ID=11; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +8 +ROLLBACK; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +9 +COMMIT; +DROP TABLE ROW_CHAIN_TABLE; +COMMIT; +CREATE TABLE ROW_CHAIN_TABLE(ID INT PRIMARY KEY,A VARCHAR(8000),B VARCHAR(8000),C VARCHAR(8000),D VARCHAR(8000)) ENGINE=CTC DEFAULT CHARSET=ascii; +COMMIT; +######## UNDO_HEAP_UPDATE_FULL_COLUMNS WITH PRIMAYR KEY INDEX +######## test case 1, UPDATE_INPLACE(CHAIN->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(1,LPAD('A',8000,'A'),LPAD('B',8000,'B'),LPAD('C',8000,'C'),'D'); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=1; +ID A B C D +1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC D +UPDATE ROW_CHAIN_TABLE SET ID=1,A=LPAD('U',8000,'U'),B=LPAD('V',8000,'V'),C=LPAD('W',8000,'W'),D='X' WHERE ID=1; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=1; +ID A B C D +1 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW X +COMMIT; +######## test case 2, UPDATE_INPAGE(CHAIN->CHAIN) +UPDATE ROW_CHAIN_TABLE SET ID=2,A=LPAD('U',3000,'U'),B=LPAD('V',2000,'V'),C=LPAD('W',3000,'W'),D='X' WHERE ID=1; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=2; +ID A B C D +2 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW X +COMMIT; +######## test case 3, UPDATE_MIGR(CHAIN->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(3,LPAD('A',8000,'A'),'B','C',LPAD('D',8000,'D')); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=3; +ID A B C D +3 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B C DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +UPDATE ROW_CHAIN_TABLE SET ID=3,A=LPAD('U',8000,'U'),B=LPAD('V',8000,'V'),C=LPAD('W',8000,'W'),D=LPAD('X',8000,'X') WHERE ID=3; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=3; +ID A B C D +3 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +COMMIT; +######## test case 4, UPDATE_MIGR(NORMAL->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(4,'A','B','C','D'); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=4; +ID A B C D +4 A B C D +UPDATE ROW_CHAIN_TABLE SET ID=4,A=LPAD('U',8000,'U'),B=LPAD('V',8000,'V'),C=LPAD('W',8000,'W'),D=LPAD('X',8000,'X') WHERE ID=4; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=4; +ID A B C D +4 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +COMMIT; +######## test case 5, UPDATE_MIGR(NORMAL->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(5,LPAD('A',8000,'A'),'B','C',LPAD('D',8000,'D')); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=5; +ID A B C D +5 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B C DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +UPDATE ROW_CHAIN_TABLE SET ID=5,A='A',B='B',C='C',D='D' WHERE ID=5; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=5; +ID A B C D +5 A B C D +COMMIT; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +4 +DELETE FROM ROW_CHAIN_TABLE WHERE ID=1; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=2; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=3; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=4; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=5; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +0 +ROLLBACK; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +4 +COMMIT; +######## UNDO_HEAP_UPDATE_PART_COLUMNS WITH PRIMAYR KEY INDEX +######## test case 6, UPDATE_INPLACE(CHAIN->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(6,LPAD('A',8000,'A'),LPAD('B',3000,'B'),LPAD('C',8000,'C'),'D'); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=6; +ID A B C D +6 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC D +UPDATE ROW_CHAIN_TABLE SET ID=6,A=LPAD('U',8000,'U'),C=LPAD('W',8000,'W'),D='X' WHERE ID=6; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=6; +ID A B C D +6 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW X +COMMIT; +######## test case 7, UPDATE_INPAGE(CHAIN->CHAIN) +UPDATE ROW_CHAIN_TABLE SET ID=7,A=LPAD('U',3000,'U'),B=LPAD('V',2000,'V'),D='X' WHERE ID=6; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=7; +ID A B C D +7 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW X +COMMIT; +######## test case 8, UPDATE_MIGR(CHAIN->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(8,LPAD('A',8000,'A'),'B','C',LPAD('D',8000,'D')); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=8; +ID A B C D +8 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B C DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +UPDATE ROW_CHAIN_TABLE SET ID=8,B=LPAD('V',8000,'V'),C=LPAD('W',8000,'W') WHERE ID=8; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=8; +ID A B C D +8 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +COMMIT; +######## test case 9, UPDATE_MIGR(NORMAL->CHAIN) +INSERT INTO ROW_CHAIN_TABLE VALUES(9,'A','B','C','D'); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=9; +ID A B C D +9 A B C D +UPDATE ROW_CHAIN_TABLE SET ID=9,B=LPAD('V',8000,'V'),C=LPAD('W',8000,'W') WHERE ID=9; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=9; +ID A B C D +9 A VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW D +COMMIT; +######## test case 10, UPDATE_MIGR(CHAIN->NORMAL) +INSERT INTO ROW_CHAIN_TABLE VALUES(10,LPAD('A',8000,'A'),'B','C',LPAD('D',8000,'D')); +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=10; +ID A B C D +10 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B C DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +UPDATE ROW_CHAIN_TABLE SET ID=10,A='A',B='B',C='C',D='D' WHERE ID=10; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID=10; +ID A B C D +10 A B C D +COMMIT; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +8 +DELETE FROM ROW_CHAIN_TABLE WHERE ID=6; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=7; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=8; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=9; +DELETE FROM ROW_CHAIN_TABLE WHERE ID=10; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +4 +ROLLBACK; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +8 +COMMIT; +######## test case 11, ADD COLUMN WITH PRIMAYR KEY INDEX +INSERT INTO ROW_CHAIN_TABLE VALUES(11,LPAD('A',8000,'A'),'B','C',LPAD('D',8000,'D')); +ALTER TABLE ROW_CHAIN_TABLE ADD COLUMN E VARCHAR(8000); +UPDATE ROW_CHAIN_TABLE SET E=LPAD('E',8000,'E') WHERE ID=11; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID > 8; +ID A B C D E +9 A VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW D NULL +10 A B C D NULL +11 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA B C DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +DELETE FROM ROW_CHAIN_TABLE WHERE ID=11; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +8 +ROLLBACK; +SELECT COUNT(*) FROM ROW_CHAIN_TABLE; +COUNT(*) +9 +COMMIT; +DROP TABLE ROW_CHAIN_TABLE; +COMMIT; +######## LINK AND MIGR ROW OTHER CASES +######## test case 1: COLUMN > 12 WITHOUT PRIMARY KEY +CREATE TABLE ROW_CHAIN_TABLE( +ID INT, +C_SERIAL INT, +C_DOUBLE INT, +C_FLOAT FLOAT, +C_INT INT, +C_INTEGER INTEGER, C_BIGINT INT, C_REAL REAL, C_NUMERIC INT, C_NUMERIC_PARM INT, C_NUMBER INT, C_NUMBER_PARM INT, C_DECIMAL DECIMAL, C_DECIMAL_PARM DECIMAL(5,2), C_BOOL CHAR(1), +C_CLOB VARCHAR(20), C_BLOB VARCHAR(20), +C_CHAR CHAR, C_CHAR1 CHAR(1), C_CHAR20 CHAR(20), C_CHAR4000 CHAR(255), +C_VARCHAR VARCHAR(4000), C_VARCHAR1 VARCHAR(1), C_VARCHAR20 VARCHAR(20), C_VARCHAR4000 VARCHAR(4000), +C_VARCHAR2 VARCHAR(20), C_VARCHAR21 VARCHAR(1), C_VARCHAR220 VARCHAR(20), C_VARCHAR24000 VARCHAR(4000), +C_RAW VARCHAR(20), C_RAW1 VARCHAR(1), C_RAW20 VARCHAR(20), C_RAW4000 VARCHAR(4000), +C_BINARY VARCHAR(20), C_BINARY1 VARCHAR(1), C_BINARY20 VARCHAR(20), C_BINARY4000 VARCHAR(4000), +C_VARBINARY VARCHAR(20), C_VARBINARY1 VARCHAR(1), C_VARBINARY20 VARCHAR(20), C_VARBINARY4000 VARCHAR(4000), +C_DATE DATE, C_DATETIME DATE, +C_TIMESTAMP TIMESTAMP, C_TIMESTAMP3 TIMESTAMP(3), C_TIMESTAMP6 TIMESTAMP(6), +C_TIMESTAMP_WTZ TIMESTAMP, C_TIMESTAMP_WTZ3 TIMESTAMP(3), C_TIMESTAMP_WTZ6 TIMESTAMP(6), +C_INTERVAL VARCHAR(20), +C_BYTEA VARCHAR(20) +) ENGINE=CTC DEFAULT CHARSET=ascii; +INSERT INTO ROW_CHAIN_TABLE VALUES( 12, -1727922176, 1494155264, 1.1, -1644429312, 733741056, 1650917376, -1717305344, -1141374976, 1827471360, -357040128, -1113063424, 7.7, 8.8, 'W', 'MTVYCNFQDRSKGB', 'IMTVYC', 'B', 'N', 'BIMTVYCNFQ', LPAD('EBIMTVYCNF',255,'EBIMTVYCNF'), LPAD('EBIMTVYCNF',4000,'EBIMTVYCNF'), 'P', 'LUEBIMTV', LPAD('EBIMTVYCNF',2000,'EBIMTVYCNF'), +'SDLUEBIMTVYCN', 'K', 'TSDL', LPAD('EBIMTVYCNF',3000,'EBIMTVYCNF'),'ZZTSDLUEBIMTVYCNFQD', 'K', 'BZZTS', LPAD('EBIMTVYCNF',3000,'EBIMTVYCNF'), 'Z', 'D', 'XZFBZ', LPAD('EBIMTVYCNF',4000,'EBIMTVYCNF'), 'A', 'I', 'MAJXZFBZZTSDLUEBIMTV', LPAD('EBIMTVYCNF',4000,'EBIMTVYCNF'),NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'MD', 'FMDMAJXZFB' ); +Warnings: +Note 1265 Data truncated for column 'C_DECIMAL' at row 1 +SELECT * FROM ROW_CHAIN_TABLE; +ID C_SERIAL C_DOUBLE C_FLOAT C_INT C_INTEGER C_BIGINT C_REAL C_NUMERIC C_NUMERIC_PARM C_NUMBER C_NUMBER_PARM C_DECIMAL C_DECIMAL_PARM C_BOOL C_CLOB C_BLOB C_CHAR C_CHAR1 C_CHAR20 C_CHAR4000 C_VARCHAR C_VARCHAR1 C_VARCHAR20 C_VARCHAR4000 C_VARCHAR2 C_VARCHAR21 C_VARCHAR220 C_VARCHAR24000 C_RAW C_RAW1 C_RAW20 C_RAW4000 C_BINARY C_BINARY1 C_BINARY20 C_BINARY4000 C_VARBINARY C_VARBINARY1 C_VARBINARY20 C_VARBINARY4000 C_DATE C_DATETIME C_TIMESTAMP C_TIMESTAMP3 C_TIMESTAMP6 C_TIMESTAMP_WTZ C_TIMESTAMP_WTZ3 C_TIMESTAMP_WTZ6 C_INTERVAL C_BYTEA +12 -1727922176 1494155264 1.1 -1644429312 733741056 1650917376 -1717305344 -1141374976 1827471360 -357040128 -1113063424 8 8.80 W MTVYCNFQDRSKGB IMTVYC B N BIMTVYCNFQ EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTEBIMTVYCNF EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF P LUEBIMTV EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF SDLUEBIMTVYCN K TSDL EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF ZZTSDLUEBIMTVYCNFQD K BZZTS EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF Z D XZFBZ EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF A I MAJXZFBZZTSDLUEBIMTV EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF NULL NULL NULL NULL NULL NULL NULL NULL MD FMDMAJXZFB +UPDATE ROW_CHAIN_TABLE SET ID=12,C_CHAR4000='A',C_BINARY4000='B' WHERE ID=12; +SELECT * FROM ROW_CHAIN_TABLE; +ID C_SERIAL C_DOUBLE C_FLOAT C_INT C_INTEGER C_BIGINT C_REAL C_NUMERIC C_NUMERIC_PARM C_NUMBER C_NUMBER_PARM C_DECIMAL C_DECIMAL_PARM C_BOOL C_CLOB C_BLOB C_CHAR C_CHAR1 C_CHAR20 C_CHAR4000 C_VARCHAR C_VARCHAR1 C_VARCHAR20 C_VARCHAR4000 C_VARCHAR2 C_VARCHAR21 C_VARCHAR220 C_VARCHAR24000 C_RAW C_RAW1 C_RAW20 C_RAW4000 C_BINARY C_BINARY1 C_BINARY20 C_BINARY4000 C_VARBINARY C_VARBINARY1 C_VARBINARY20 C_VARBINARY4000 C_DATE C_DATETIME C_TIMESTAMP C_TIMESTAMP3 C_TIMESTAMP6 C_TIMESTAMP_WTZ C_TIMESTAMP_WTZ3 C_TIMESTAMP_WTZ6 C_INTERVAL C_BYTEA +12 -1727922176 1494155264 1.1 -1644429312 733741056 1650917376 -1717305344 -1141374976 1827471360 -357040128 -1113063424 8 8.80 W MTVYCNFQDRSKGB IMTVYC B N BIMTVYCNFQ A EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF P LUEBIMTV EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF SDLUEBIMTVYCN K TSDL EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF ZZTSDLUEBIMTVYCNFQD K BZZTS EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF Z D XZFBZ B A I MAJXZFBZZTSDLUEBIMTV EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF NULL NULL NULL NULL NULL NULL NULL NULL MD FMDMAJXZFB +ROLLBACK; +SELECT * FROM ROW_CHAIN_TABLE; +ID C_SERIAL C_DOUBLE C_FLOAT C_INT C_INTEGER C_BIGINT C_REAL C_NUMERIC C_NUMERIC_PARM C_NUMBER C_NUMBER_PARM C_DECIMAL C_DECIMAL_PARM C_BOOL C_CLOB C_BLOB C_CHAR C_CHAR1 C_CHAR20 C_CHAR4000 C_VARCHAR C_VARCHAR1 C_VARCHAR20 C_VARCHAR4000 C_VARCHAR2 C_VARCHAR21 C_VARCHAR220 C_VARCHAR24000 C_RAW C_RAW1 C_RAW20 C_RAW4000 C_BINARY C_BINARY1 C_BINARY20 C_BINARY4000 C_VARBINARY C_VARBINARY1 C_VARBINARY20 C_VARBINARY4000 C_DATE C_DATETIME C_TIMESTAMP C_TIMESTAMP3 C_TIMESTAMP6 C_TIMESTAMP_WTZ C_TIMESTAMP_WTZ3 C_TIMESTAMP_WTZ6 C_INTERVAL C_BYTEA +COMMIT; +DROP TABLE ROW_CHAIN_TABLE; +COMMIT; +######## test case 2: COLUMN > 12 WITH PRIMARY KEY +CREATE TABLE ROW_CHAIN_TABLE( +ID INT PRIMARY KEY, +C_SERIAL INT, +C_DOUBLE INT, +C_FLOAT FLOAT, +C_INT INT, +C_INTEGER INTEGER, C_BIGINT INT, C_REAL REAL, C_NUMERIC INT, C_NUMERIC_PARM INT, C_NUMBER INT, C_NUMBER_PARM INT, C_DECIMAL DECIMAL, C_DECIMAL_PARM DECIMAL(5,2), C_BOOL CHAR(1), +C_CLOB VARCHAR(20), C_BLOB VARCHAR(20), +C_CHAR CHAR, C_CHAR1 CHAR(1), C_CHAR20 CHAR(20), C_CHAR4000 CHAR(255), +C_VARCHAR VARCHAR(4000), C_VARCHAR1 VARCHAR(1), C_VARCHAR20 VARCHAR(20), C_VARCHAR4000 VARCHAR(4000), +C_VARCHAR2 VARCHAR(20), C_VARCHAR21 VARCHAR(1), C_VARCHAR220 VARCHAR(20), C_VARCHAR24000 VARCHAR(4000), +C_RAW VARCHAR(20), C_RAW1 VARCHAR(1), C_RAW20 VARCHAR(20), C_RAW4000 VARCHAR(4000), +C_BINARY VARCHAR(20), C_BINARY1 VARCHAR(1), C_BINARY20 VARCHAR(20), C_BINARY4000 VARCHAR(4000), +C_VARBINARY VARCHAR(20), C_VARBINARY1 VARCHAR(1), C_VARBINARY20 VARCHAR(20), C_VARBINARY4000 VARCHAR(4000), +C_DATE DATE, C_DATETIME DATE, +C_TIMESTAMP TIMESTAMP, C_TIMESTAMP3 TIMESTAMP(3), C_TIMESTAMP6 TIMESTAMP(6), +C_TIMESTAMP_WTZ TIMESTAMP, C_TIMESTAMP_WTZ3 TIMESTAMP(3), C_TIMESTAMP_WTZ6 TIMESTAMP(6), +C_INTERVAL VARCHAR(20), +C_BYTEA VARCHAR(20) +) ENGINE=CTC DEFAULT CHARSET=ascii; +INSERT INTO ROW_CHAIN_TABLE VALUES( 12, -1727922176, 1494155264, 1.1, -1644429312, 733741056, 1650917376, -1717305344, -1141374976, 1827471360, -357040128, -1113063424, 7.7, 8.8, 'W', 'MTVYCNFQDRSKGB', 'IMTVYC', 'B', 'N', 'BIMTVYCNFQ', LPAD('EBIMTVYCNF',255,'EBIMTVYCNF'), LPAD('EBIMTVYCNF',4000,'EBIMTVYCNF'), 'P', 'LUEBIMTV', LPAD('EBIMTVYCNF',2000,'EBIMTVYCNF'), +'SDLUEBIMTVYCN', 'K', 'TSDL', LPAD('EBIMTVYCNF',3000,'EBIMTVYCNF'),'ZZTSDLUEBIMTVYCNFQD', 'K', 'BZZTS', LPAD('EBIMTVYCNF',3000,'EBIMTVYCNF'), 'Z', 'D', 'XZFBZ', LPAD('EBIMTVYCNF',4000,'EBIMTVYCNF'), 'A', 'I', 'MAJXZFBZZTSDLUEBIMTV', LPAD('EBIMTVYCNF',4000,'EBIMTVYCNF'),NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'MD', 'FMDMAJXZFB' ); +Warnings: +Note 1265 Data truncated for column 'C_DECIMAL' at row 1 +SELECT * FROM ROW_CHAIN_TABLE; +ID C_SERIAL C_DOUBLE C_FLOAT C_INT C_INTEGER C_BIGINT C_REAL C_NUMERIC C_NUMERIC_PARM C_NUMBER C_NUMBER_PARM C_DECIMAL C_DECIMAL_PARM C_BOOL C_CLOB C_BLOB C_CHAR C_CHAR1 C_CHAR20 C_CHAR4000 C_VARCHAR C_VARCHAR1 C_VARCHAR20 C_VARCHAR4000 C_VARCHAR2 C_VARCHAR21 C_VARCHAR220 C_VARCHAR24000 C_RAW C_RAW1 C_RAW20 C_RAW4000 C_BINARY C_BINARY1 C_BINARY20 C_BINARY4000 C_VARBINARY C_VARBINARY1 C_VARBINARY20 C_VARBINARY4000 C_DATE C_DATETIME C_TIMESTAMP C_TIMESTAMP3 C_TIMESTAMP6 C_TIMESTAMP_WTZ C_TIMESTAMP_WTZ3 C_TIMESTAMP_WTZ6 C_INTERVAL C_BYTEA +12 -1727922176 1494155264 1.1 -1644429312 733741056 1650917376 -1717305344 -1141374976 1827471360 -357040128 -1113063424 8 8.80 W MTVYCNFQDRSKGB IMTVYC B N BIMTVYCNFQ EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTEBIMTVYCNF EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF P LUEBIMTV EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF SDLUEBIMTVYCN K TSDL EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF ZZTSDLUEBIMTVYCNFQD K BZZTS EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF Z D XZFBZ EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF A I MAJXZFBZZTSDLUEBIMTV EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF NULL NULL NULL NULL NULL NULL NULL NULL MD FMDMAJXZFB +UPDATE ROW_CHAIN_TABLE SET ID=12,C_CHAR4000='A',C_BINARY4000='B' WHERE ID=12; +SELECT * FROM ROW_CHAIN_TABLE; +ID C_SERIAL C_DOUBLE C_FLOAT C_INT C_INTEGER C_BIGINT C_REAL C_NUMERIC C_NUMERIC_PARM C_NUMBER C_NUMBER_PARM C_DECIMAL C_DECIMAL_PARM C_BOOL C_CLOB C_BLOB C_CHAR C_CHAR1 C_CHAR20 C_CHAR4000 C_VARCHAR C_VARCHAR1 C_VARCHAR20 C_VARCHAR4000 C_VARCHAR2 C_VARCHAR21 C_VARCHAR220 C_VARCHAR24000 C_RAW C_RAW1 C_RAW20 C_RAW4000 C_BINARY C_BINARY1 C_BINARY20 C_BINARY4000 C_VARBINARY C_VARBINARY1 C_VARBINARY20 C_VARBINARY4000 C_DATE C_DATETIME C_TIMESTAMP C_TIMESTAMP3 C_TIMESTAMP6 C_TIMESTAMP_WTZ C_TIMESTAMP_WTZ3 C_TIMESTAMP_WTZ6 C_INTERVAL C_BYTEA +12 -1727922176 1494155264 1.1 -1644429312 733741056 1650917376 -1717305344 -1141374976 1827471360 -357040128 -1113063424 8 8.80 W MTVYCNFQDRSKGB IMTVYC B N BIMTVYCNFQ A EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF P LUEBIMTV EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF SDLUEBIMTVYCN K TSDL EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF ZZTSDLUEBIMTVYCNFQD K BZZTS EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF Z D XZFBZ B A I MAJXZFBZZTSDLUEBIMTV EBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNFEBIMTVYCNF NULL NULL NULL NULL NULL NULL NULL NULL MD FMDMAJXZFB +ROLLBACK; +SELECT * FROM ROW_CHAIN_TABLE; +ID C_SERIAL C_DOUBLE C_FLOAT C_INT C_INTEGER C_BIGINT C_REAL C_NUMERIC C_NUMERIC_PARM C_NUMBER C_NUMBER_PARM C_DECIMAL C_DECIMAL_PARM C_BOOL C_CLOB C_BLOB C_CHAR C_CHAR1 C_CHAR20 C_CHAR4000 C_VARCHAR C_VARCHAR1 C_VARCHAR20 C_VARCHAR4000 C_VARCHAR2 C_VARCHAR21 C_VARCHAR220 C_VARCHAR24000 C_RAW C_RAW1 C_RAW20 C_RAW4000 C_BINARY C_BINARY1 C_BINARY20 C_BINARY4000 C_VARBINARY C_VARBINARY1 C_VARBINARY20 C_VARBINARY4000 C_DATE C_DATETIME C_TIMESTAMP C_TIMESTAMP3 C_TIMESTAMP6 C_TIMESTAMP_WTZ C_TIMESTAMP_WTZ3 C_TIMESTAMP_WTZ6 C_INTERVAL C_BYTEA +COMMIT; +DROP TABLE ROW_CHAIN_TABLE; +COMMIT; +######## test case 3: create index +CREATE TABLE ROW_CHAIN_TABLE(ID INT, C1 VARCHAR(4000), C2 VARCHAR(4000), C3 VARCHAR(4000), C4 VARCHAR(4000), C5 VARCHAR(4000), C6 VARCHAR(4000), C7 VARCHAR(4000), C8 VARCHAR(3000)) ENGINE=CTC DEFAULT CHARSET=ascii; +CREATE INDEX IX_RC ON ROW_CHAIN_TABLE(ID); +INSERT INTO ROW_CHAIN_TABLE VALUES(1, LPAD('X', 2000, 'X'), LPAD('X', 2000, 'X'),LPAD('X', 2000, 'X'),LPAD('X', 2000, 'X'),LPAD('X', 2000, 'X'),LPAD('X', 2000, 'X'),LPAD('X', 2000, 'X'),LPAD('X', 2000, 'X')); +COMMIT; +UPDATE ROW_CHAIN_TABLE SET ID = 100, C1=LPAD('X', 2000, 'X'), C2=LPAD('Y', 3000, 'Y'), C3=LPAD('Z', 2000,'Z'); +COMMIT; +SELECT * FROM ROW_CHAIN_TABLE WHERE ID = 100; +ID C1 C2 C3 C4 C5 C6 C7 C8 +100 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +COMMIT; +DROP TABLE ROW_CHAIN_TABLE; +COMMIT; +######## test case 4: UPDATE ROW FOR MATCH MIGR ROW CONDITION WITHOUT INDEX +CREATE TABLE ROW_MIGR_TABLE(ID INT,A INT,B VARCHAR(8000)) ENGINE=CTC DEFAULT CHARSET=ascii; +INSERT INTO ROW_MIGR_TABLE VALUES(1, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(2, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(3, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(4, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(5, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(6, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(7, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(8, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(9, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(10, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(11, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(12, 1, NULL); +COMMIT; +UPDATE ROW_MIGR_TABLE SET B=LPAD('M',7840,'M') WHERE ID=1; +SELECT * FROM ROW_MIGR_TABLE WHERE ID=1; +ID A B +1 1 MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +COMMIT; +DROP TABLE ROW_MIGR_TABLE; +COMMIT; +######## test case 5: UPDATE ROW FOR MATCH MIGR ROW CONDITION WITH INDEX +CREATE TABLE ROW_MIGR_TABLE(ID INT PRIMARY KEY,A INT,B VARCHAR(8000)) ENGINE=CTC DEFAULT CHARSET=ascii; +INSERT INTO ROW_MIGR_TABLE VALUES(1, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(2, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(3, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(4, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(5, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(6, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(7, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(8, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(9, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(10, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(11, 1, NULL); +INSERT INTO ROW_MIGR_TABLE VALUES(12, 1, NULL); +COMMIT; +UPDATE ROW_MIGR_TABLE SET B=LPAD('M',7840,'M') WHERE ID=1; +SELECT * FROM ROW_MIGR_TABLE WHERE ID=1; +ID A B +1 1 MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +COMMIT; +DROP TABLE ROW_MIGR_TABLE; +COMMIT; +set autocommit = 1; diff --git a/mysql-test/suite/tianchi/r/ctc_lock_instance.result b/mysql-test/suite/tianchi/r/ctc_lock_instance.result new file mode 100644 index 0000000..82f480f --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_lock_instance.result @@ -0,0 +1,26 @@ +LOCK INSTANCE FOR BACKUP; +set global ctc_db_datafile_size=32; +ERROR HY000: Instance has been locked, disallow this operation +create database test; +ERROR HY000: Instance has been locked, disallow this operation +create table DEMO(id int); +ERROR HY000: Instance has been locked, disallow this operation +FLUSH NO_WRITE_TO_BINLOG BINARY LOGS; +set session ctc_sampling_ratio=90; +set session ctc_sampling_ratio=100; +UNLOCK INSTANCE; +SET SESSION wait_timeout=2147483; +SET SESSION lock_wait_timeout=31536000; +SET SESSION autocommit=1; +SET NAMES utf8; +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +LOCK INSTANCE FOR BACKUP; +SET SESSION wait_timeout=2147483; +SET SESSION lock_wait_timeout=31536000; +SET SESSION autocommit=1; +SET NAMES utf8; +Warnings: +Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous. +UNLOCK INSTANCE; +set @ctc_ddl_enabled=true; diff --git a/mysql-test/suite/tianchi/r/ctc_locking_read_concurrency_with_nowait_and_skip_locked.result b/mysql-test/suite/tianchi/r/ctc_locking_read_concurrency_with_nowait_and_skip_locked.result new file mode 100644 index 0000000..44f29be --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_locking_read_concurrency_with_nowait_and_skip_locked.result @@ -0,0 +1,43 @@ +connection default +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +CREATE TABLE t1 (id INT); +INSERT INTO t1 VALUES (1),(2); +CREATE TABLE t2 (id INT PRIMARY KEY); +INSERT INTO t2 VALUES (1),(2); +COMMIT; +start test case1 +START TRANSACTION; +select * from t1 where id = 1 for update; +id +1 +connection con1 +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +START TRANSACTION; +select * from t1 for update; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +select * from t1 for update skip locked; +id +select * from t1 for update nowait; +ERROR HY000: Statement aborted because lock(s) could not be acquired immediately and NOWAIT is set. +commit; +connection default +commit; +start test case2 +START TRANSACTION; +select * from t2 where id = 1 for update; +id +1 +connection con1 +START TRANSACTION; +select * from t2 for update; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +select * from t2 for update skip locked; +id +2 +select * from t2 for update nowait; +ERROR HY000: Statement aborted because lock(s) could not be acquired immediately and NOWAIT is set. +commit; +connection default +commit; +DROP TABLE t1; +DROP TABLE t2; diff --git a/mysql-test/suite/tianchi/r/ctc_partition_update.result b/mysql-test/suite/tianchi/r/ctc_partition_update.result new file mode 100644 index 0000000..67fd7e6 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_partition_update.result @@ -0,0 +1,143 @@ +drop database if exists db1; +create database db1; +create table db1.t1(a int , b int); +delete from db1.t1; +insert into db1.t1 values(0,0),(1,1),(2,2),(3,3),(4,4),(5,5); +update db1.t1 set a = 11 where a = 1; +select * from db1.t1 where a = 11; +a b +11 1 +update db1.t1 set a = 22 where a = 2; +select * from db1.t1 where a = 22; +a b +22 2 +update db1.t1 set a = 33 where a = 3; +select * from db1.t1 where a = 33; +a b +33 3 +update db1.t1 set a = 44 where a = 4; +select * from db1.t1 where a = 44; +a b +44 4 +update db1.t1 set a = 55 where a = 5; +select * from db1.t1 where a = 55; +a b +55 5 +update db1.t1 set a = 123 where a = 0; +select * from db1.t1 where a = 123; +a b +123 0 +create table db1.t2(a int , b int) partition by hash(a) partitions 5; +delete from db1.t2; +insert into db1.t2 values(0,0),(1,1),(2,2),(3,3),(4,4),(5,5); +update db1.t2 set a = 11 where a = 1; +select * from db1.t2 where a = 11; +a b +11 1 +update db1.t2 set a = 22 where a = 2; +select * from db1.t2 where a = 22; +a b +22 2 +update db1.t2 set a = 33 where a = 3; +select * from db1.t2 where a = 33; +a b +33 3 +update db1.t2 set a = 44 where a = 4; +select * from db1.t2 where a = 44; +a b +44 4 +update db1.t2 set a = 55 where a = 5; +select * from db1.t2 where a = 55; +a b +55 5 +update db1.t2 set a = 123 where a = 0; +select * from db1.t2 where a = 123; +a b +123 0 +create table db1.t3 (a int, b int) partition by range (a) +( +partition p0 values less than (10), +partition p1 values less than (20), +partition p2 values less than (30), +partition p3 values less than (40), +partition p4 values less than (50) +); +delete from db1.t3; +insert into db1.t3 values(0,0),(1,1),(11,11),(21,21),(31,31),(41,41); +update db1.t3 set a = 2 where a = 1; +select * from db1.t3 where a = 2; +a b +2 1 +update db1.t3 set a = 12 where a = 11; +select * from db1.t3 where a = 12; +a b +12 11 +update db1.t3 set a = 22 where a = 21; +select * from db1.t3 where a = 22; +a b +22 21 +update db1.t3 set a = 32 where a = 31; +select * from db1.t3 where a = 32; +a b +32 31 +update db1.t3 set a = 42 where a = 41; +select * from db1.t3 where a = 42; +a b +42 41 +update db1.t3 set a = 18 where a = 0; +select * from db1.t3 where a = 18; +a b +18 0 +create table db1.t4 (a int, b int) partition by list (a) +( +partition p0 values in (0, 10, 20, 30), +partition p1 values in (1, 11, 21, 31), +partition p2 values in (2, 12, 22, 32), +partition p3 values in (3, 13, 23, 33), +partition p4 values in (4, 14, 24, 34) +); +delete from db1.t4; +insert into db1.t4 values(0,0),(1,1),(2,2),(3,3),(4,4); +update db1.t4 set a = 11 where a = 1; +select * from db1.t4 where a = 11; +a b +11 1 +update db1.t4 set a = 12 where a = 2; +select * from db1.t4 where a = 12; +a b +12 2 +update db1.t4 set a = 13 where a = 3; +select * from db1.t4 where a = 13; +a b +13 3 +update db1.t4 set a = 14 where a = 4; +select * from db1.t4 where a = 14; +a b +14 4 +update db1.t4 set a = 34 where a = 0; +select * from db1.t4 where a = 34; +a b +34 0 +drop table db1.t1; +drop table db1.t2; +drop table db1.t3; +drop table db1.t4; +create table db1.t1 +( +id int unsigned auto_increment, +time datetime not null, +first_name varchar(40), +last_name varchar(50), +primary key (id, time), +index first_index (first_name), +index last_index (last_name) +) engine=CTC partition by range (to_days(time)) ( +partition p1 values less than (to_days('2007-02-07')), +partition p2 values less than (to_days('2007-02-08')), +partition p3 values less than MAXVALUE +); +insert into db1.t1 (time, first_name, last_name) values ('2007-02-07', 'Q', 'Robert'); +SELECT * FROM db1.t1 WHERE first_name='Andy' OR last_name='Jake'; +id time first_name last_name +drop table db1.t1; +drop database db1; diff --git a/mysql-test/suite/tianchi/r/ctc_read_only.result b/mysql-test/suite/tianchi/r/ctc_read_only.result new file mode 100644 index 0000000..09ebeb4 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_read_only.result @@ -0,0 +1,347 @@ +DROP TABLE IF EXISTS table_11733 ; +set @orig_sql_mode= @@sql_mode; +create user test@localhost; +grant CREATE, INSERT, SELECT, DROP on *.* to test@localhost; +set global read_only=0; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +create table table_11733 (a int); +BEGIN; +insert into table_11733 values(11733); +set global read_only=1; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +select @@global.read_only; +@@global.read_only +1 +select * from table_11733 ; +a +11733 +COMMIT; +ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement +set global read_only=0; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +COMMIT; +drop table table_11733 ; +drop user test@localhost; +CREATE USER test@localhost; +GRANT CREATE, SELECT, DROP ON *.* TO test@localhost; +CREATE TABLE t1(a INT); +INSERT INTO t1 VALUES (0), (1); +SET GLOBAL read_only=1; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT * FROM t1; +a +0 +1 +BEGIN; +SELECT * FROM t1; +a +0 +1 +COMMIT; +SET GLOBAL read_only=0; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +FLUSH TABLES WITH READ LOCK; +SELECT * FROM t1; +a +0 +1 +BEGIN; +SELECT * FROM t1; +a +0 +1 +COMMIT; +UNLOCK TABLES; +DROP TABLE t1; +DROP USER test@localhost; +DROP DATABASE IF EXISTS db1; +# Setup user and tables +CREATE USER bug33669@localhost; +CREATE DATABASE db1; +CREATE TABLE db1.t1 (a INT); +CREATE TABLE db1.t2 (a INT); +INSERT INTO db1.t1 VALUES (1); +INSERT INTO db1.t2 VALUES (2); +GRANT CREATE TEMPORARY TABLES, DROP, INSERT, DELETE, UPDATE, +SELECT, LOCK TABLES ON db1.* TO bug33669@localhost; +SET GLOBAL READ_ONLY = ON; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +CREATE TEMPORARY TABLE temp (a INT); +INSERT INTO temp VALUES (1); +DROP TABLE temp; +CREATE TEMPORARY TABLE temp (a INT); +LOCK TABLES t1 READ, t2 READ; +SELECT * FROM t1; +a +1 +INSERT INTO temp values (1); +SELECT * FROM t2; +a +2 +UNLOCK TABLES; +DROP TABLE temp; +BEGIN; +SELECT * FROM t1; +a +1 +CREATE TEMPORARY TABLE temp (a INT); +INSERT INTO t1 VALUES (1); +ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement +INSERT INTO temp VALUES (1); +SELECT * FROM t2; +a +2 +ROLLBACK; +Warnings: +Warning 1751 The creation of some temporary tables could not be rolled back. +SELECT * FROM temp; +a +DROP TABLE temp; +CREATE TEMPORARY TABLE temp (a INT); +LOCK TABLES t1 READ, temp WRITE; +SELECT * FROM t1; +a +1 +SELECT * FROM temp; +a +INSERT INTO t1 VALUES (1); +ERROR HY000: The MySQL server is running with the --read-only option so it cannot execute this statement +INSERT INTO temp VALUES (1); +DROP TABLE temp; +UNLOCK TABLES; +CREATE TEMPORARY TABLE t1 (a INT); +LOCK TABLES t1 WRITE; +DROP TABLE t1; +SELECT * FROM t1; +ERROR HY000: Table 't1' was not locked with LOCK TABLES +CREATE TEMPORARY TABLE temp1 (a INT); +CREATE TEMPORARY TABLE temp2 LIKE temp1; +BEGIN; +INSERT INTO temp1 VALUES (10); +INSERT INTO temp2 VALUES (10); +INSERT INTO temp1 SELECT * FROM t1; +INSERT INTO temp2 SELECT * FROM t2; +SELECT * FROM temp1 ORDER BY a; +a +1 +10 +SELECT * FROM temp2 ORDER BY a; +a +2 +10 +ROLLBACK; +SELECT * FROM temp1,temp2; +a a +LOCK TABLES t1 READ, t2 READ; +INSERT INTO temp1 VALUES (10); +INSERT INTO temp2 VALUES (10); +INSERT INTO temp1 SELECT * FROM t1; +INSERT INTO temp2 SELECT * FROM t2; +SELECT * FROM temp1 ORDER BY a; +a +1 +10 +SELECT * FROM temp2 ORDER BY a; +a +2 +10 +UNLOCK TABLES; +DELETE temp1, temp2 FROM temp1, temp2; +INSERT INTO temp1 VALUES (10); +INSERT INTO temp2 VALUES (10); +INSERT INTO temp1 SELECT * FROM t1; +INSERT INTO temp2 SELECT * FROM t2; +SELECT * FROM temp1 ORDER BY a; +a +1 +10 +SELECT * FROM temp2 ORDER BY a; +a +2 +10 +DROP TABLE temp1, temp2; +CREATE TEMPORARY TABLE temp1 (a INT); +CREATE TEMPORARY TABLE temp2 LIKE temp1; +INSERT INTO temp1 (a) VALUES ((SELECT MAX(a) FROM t1)); +LOCK TABLES t2 READ; +INSERT INTO temp2 (a) VALUES ((SELECT MAX(a) FROM t2)); +UNLOCK TABLES; +LOCK TABLES t1 READ, t2 READ; +INSERT INTO temp1 SELECT * FROM t1 WHERE a < (SELECT MAX(a) FROM t2); +INSERT INTO temp2 SELECT * FROM t2 WHERE a > (SELECT MAX(a) FROM t1); +UNLOCK TABLES; +INSERT INTO temp1 SELECT * FROM t1 WHERE a < (SELECT MAX(a) FROM t2); +INSERT INTO temp2 SELECT * FROM t2 WHERE a > (SELECT MAX(a) FROM t1); +SELECT * FROM temp1 ORDER BY a; +a +1 +1 +1 +SELECT * FROM temp2 ORDER BY a; +a +2 +2 +2 +DROP TABLE temp1, temp2; +CREATE TEMPORARY TABLE temp1 (a INT); +CREATE TEMPORARY TABLE temp2 LIKE temp1; +INSERT INTO temp1 VALUES (1),(2); +INSERT INTO temp2 VALUES (3),(4); +UPDATE temp1,temp2 SET temp1.a = 5, temp2.a = 10; +SELECT * FROM temp1, temp2; +a a +5 10 +5 10 +5 10 +5 10 +DROP TABLE temp1, temp2; +SET GLOBAL READ_ONLY = OFF; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +DROP USER bug33669@localhost; +DROP DATABASE db1; +SET @start_read_only = @@global.read_only; +SET @start_super_read_only = @@global.super_read_only; +SELECT @start_read_only, @start_super_read_only; +@start_read_only @start_super_read_only +0 0 +SET @@global.super_read_only = 1; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SET @@global.super_read_only = DEFAULT; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@global.super_read_only = @start_super_read_only; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT @@global.super_read_only = 0; +@@global.super_read_only = 0 +1 +SET @@global.super_read_only = 0; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@global.super_read_only = 1; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT @@global.super_read_only; +@@global.super_read_only +1 +SET @@global.super_read_only = TRUE; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT @@global.super_read_only; +@@global.super_read_only +1 +SET @@global.super_read_only = FALSE; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@global.super_read_only = ON; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT @@global.super_read_only; +@@global.super_read_only +1 +SET @@global.super_read_only = OFF; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@global.super_read_only = -1; +ERROR 42000: Variable 'super_read_only' can't be set to the value of '-1' +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@global.super_read_only = 4294967296; +ERROR 42000: Variable 'super_read_only' can't be set to the value of '4294967296' +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@global.super_read_only = 10240022115; +ERROR 42000: Variable 'super_read_only' can't be set to the value of '10240022115' +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@global.super_read_only = 10000.01; +ERROR 42000: Incorrect argument type to variable 'super_read_only' +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@global.super_read_only = -1024; +ERROR 42000: Variable 'super_read_only' can't be set to the value of '-1024' +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@global.super_read_only = 42949672950; +ERROR 42000: Variable 'super_read_only' can't be set to the value of '42949672950' +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@global.super_read_only = 'test'; +ERROR 42000: Variable 'super_read_only' can't be set to the value of 'test' +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SET @@session.super_read_only = 0; +ERROR HY000: Variable 'super_read_only' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@super_read_only; +@@super_read_only +0 +SELECT IF(@@global.super_read_only, "ON", "OFF") = VARIABLE_VALUE +FROM performance_schema.global_variables +WHERE VARIABLE_NAME='super_read_only'; +IF(@@global.super_read_only, "ON", "OFF") = VARIABLE_VALUE +1 +SELECT IF(@@read_only, "ON", "OFF") = VARIABLE_VALUE +FROM performance_schema.session_variables +WHERE VARIABLE_NAME='super_read_only'; +IF(@@read_only, "ON", "OFF") = VARIABLE_VALUE +0 +SET @@global.super_read_only = 1; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT @@super_read_only = @@global.super_read_only; +@@super_read_only = @@global.super_read_only +1 +SET super_read_only = 1; +ERROR HY000: Variable 'super_read_only' is a GLOBAL variable and should be set with SET GLOBAL +SELECT @@super_read_only; +@@super_read_only +1 +SET local.super_read_only = 1; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'local.super_read_only = 1' at line 1 +SELECT local.super_read_only; +ERROR 42S02: Unknown table 'local' in field list +SET global.super_read_only = 1; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'global.super_read_only = 1' at line 1 +SELECT global.super_read_only; +ERROR 42S02: Unknown table 'global' in field list +SELECT super_read_only = @@session.super_read_only; +ERROR 42S22: Unknown column 'super_read_only' in 'field list' +SET @@global.read_only = @start_read_only; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SET @@global.super_read_only = @start_super_read_only; +Warnings: +Warning 3655 CTC: This parameter will not be broadcast to other nodes. +SELECT @@global.super_read_only; +@@global.super_read_only +0 +SELECT @@global.read_only; +@@global.read_only +0 diff --git a/mysql-test/suite/tianchi/r/ctc_select_early_return.result b/mysql-test/suite/tianchi/r/ctc_select_early_return.result new file mode 100644 index 0000000..6ed2c47 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_select_early_return.result @@ -0,0 +1,173 @@ +drop database if exists test_DB; +Warnings: +Note 1008 Can't drop database 'test_DB'; database doesn't exist +create database test_DB; +use test_DB; +create table t1 (a int, b int, c int, d int); +create index idx1 on t1 (d, c, b); +insert into t1 values (1,2,null,4); +insert into t1 values (1,2,3,null); +insert into t1 values (1,2,3,4); +select b from t1 where b = 2; +b +2 +2 +2 +select b, c from t1; +b c +2 3 +2 NULL +2 3 +select d from t1; +d +NULL +4 +4 +select a, b from t1; +a b +1 2 +1 2 +1 2 +select * from t1; +a b c d +1 2 NULL 4 +1 2 3 NULL +1 2 3 4 +drop table t1; +create table t2 (a int, b int, c int, d int); +create index idx2 on t2 (d, a, c, b); +insert into t2 values (1,2,null,4); +insert into t2 values (1,2,3,null); +insert into t2 values (1,2,3,4); +select a from t2 where a = 1; +a +1 +1 +1 +select b, c from t2; +b c +2 3 +2 NULL +2 3 +select d from t2; +d +NULL +4 +4 +select * from t2; +a b c d +1 2 3 NULL +1 2 NULL 4 +1 2 3 4 +drop table t2; +create table t3 (a int, b int, c int, d int); +insert into t3 values (1,2,3,4); +insert into t3 values (1,2,3,4); +insert into t3 values (1,2,3,4); +select a from t3 where a = 1; +a +1 +1 +1 +select b, c from t3; +b c +2 3 +2 3 +2 3 +select d from t3; +d +4 +4 +4 +select * from t3; +a b c d +1 2 3 4 +1 2 3 4 +1 2 3 4 +drop table t3; +create table t4 (a int, b int, c int, d int, e int, f int); +create index idx4 on t4 (f,e,d); +insert into t4 values (1,2,3,4,null,6); +insert into t4 values (1,2,3,4,5,null); +insert into t4 values (1,2,3,4,5,6); +insert into t4 values (1,2,3,4,5,6); +select * from t4; +a b c d e f +1 2 3 4 NULL 6 +1 2 3 4 5 NULL +1 2 3 4 5 6 +1 2 3 4 5 6 +alter table t4 drop column a; +select d from t4 where d = 4; +d +4 +4 +4 +4 +select * from t4 where d = 4; +b c d e f +2 3 4 NULL 6 +2 3 4 5 NULL +2 3 4 5 6 +2 3 4 5 6 +alter table t4 drop column b; +select d from t4 where d = 4; +d +4 +4 +4 +4 +select * from t4 where f = 6; +c d e f +3 4 NULL 6 +3 4 5 6 +3 4 5 6 +drop table t4; +create table t5 (a int, b int, c int, d int, e int, f int); +insert into t5 values (1,2,3,4,null,6); +insert into t5 values (1,2,3,4,5,null); +insert into t5 values (1,2,3,4,5,6); +insert into t5 values (1,2,3,4,5,6); +select * from t5; +a b c d e f +1 2 3 4 NULL 6 +1 2 3 4 5 NULL +1 2 3 4 5 6 +1 2 3 4 5 6 +alter table t5 drop column a; +select d from t5 where d = 4; +d +4 +4 +4 +4 +select * from t5 where d = 4; +b c d e f +2 3 4 NULL 6 +2 3 4 5 NULL +2 3 4 5 6 +2 3 4 5 6 +alter table t5 drop column b; +select d from t5 where d = 4; +d +4 +4 +4 +4 +drop table t5; +create table t6(id int, v json)default CHARACTER SET=ascii; +insert into t6 values(1,'[0,1.1, "abc", "00:00:00", "1000-01-01 00:00:00", "1000-01-01", "2155", {"k1":1}, [1,2], true, null]'); +select * from t6 where id=1; +id v +1 [0, 1.1, "abc", "00:00:00", "1000-01-01 00:00:00", "1000-01-01", "2155", {"k1": 1}, [1, 2], true, null] +insert into t6 values(2,'{"k1":1, "k2":1.5, "k3":"abc", "k4":"00:00:00", "k5":"1000-01-01 00:00:00","k6":"1000-01-01","k7":"2155","k8":{"k1":1},"k9":[1,2],"k10":true, "k11":null}'); +select * from t6 where id=2; +id v +2 {"k1": 1, "k2": 1.5, "k3": "abc", "k4": "00:00:00", "k5": "1000-01-01 00:00:00", "k6": "1000-01-01", "k7": "2155", "k8": {"k1": 1}, "k9": [1, 2], "k10": true, "k11": null} +update t6 set v='[1]' where id=1; +select * from t6; +id v +1 [1] +2 {"k1": 1, "k2": 1.5, "k3": "abc", "k4": "00:00:00", "k5": "1000-01-01 00:00:00", "k6": "1000-01-01", "k7": "2155", "k8": {"k1": 1}, "k9": [1, 2], "k10": true, "k11": null} +drop table t6; +drop database test_DB; diff --git a/mysql-test/suite/tianchi/r/ctc_update_time.result b/mysql-test/suite/tianchi/r/ctc_update_time.result new file mode 100644 index 0000000..70f8321 --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_update_time.result @@ -0,0 +1,1490 @@ +DROP TABLE IF EXISTS t1,t2,t3,t4; +SET sql_mode='NO_ENGINE_SUBSTITUTION'; +CREATE TABLE t1(c1 TIME NOT NULL, c2 TIME NULL, PRIMARY KEY(c1)); +CREATE TABLE t2(c1 TIME NOT NULL, c2 TIME NOT NULL, PRIMARY KEY(c1,c2)); +CREATE TABLE t3(c1 TIME NOT NULL, c2 TIME NULL, UNIQUE INDEX idx(c1,c2)); +CREATE TABLE t4(c1 TIME NOT NULL, c2 TIME NULL); +INSERT INTO t1 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59'); +INSERT INTO t2 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59'); +INSERT INTO t3 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59'); +INSERT INTO t4 VALUES ('00:00:00.00','00:00:00.00'),('01:01:01.01','01:01:01.00'),('838:59:59.00','838:59:59.00'),('00:00:01','00:00:01'),('02:02:02','02:02:02'),('838:59:58','838:59:58'),('-838:59:59','-838:59:59'),('00:03','00:03'),('03:03','03:03'),('838:58','838:58'),('00 00:00:04','00 00:00:04'),('04 04:04:04','04 04:04:04'),('34 22:59:57','34 22:59:57'),('00 00:04','00 00:04'),('05 05:05','05 05:05'),('34 22:56','34 22:56'),('05 05','05 05'),('06 06','06 06'),('34 22','34 22'),('07','07'),('59','59'); +INSERT INTO t1 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53'); +INSERT INTO t2 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53'); +INSERT INTO t3 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53'); +INSERT INTO t4 VALUES('000008','000008'),('080808','080808'),('8385955','8385955'),('-8385955','-8385955'),('0009','0009'),('0909','0909'),('5454','5454'),('10','10'),('53','53'); +INSERT INTO t1 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50); +INSERT INTO t2 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50); +INSERT INTO t3 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50); +INSERT INTO t4 VALUES (000011.00,000011.00),(111111.11,111111.11),(8385952.00,8385952.00),(000012,000012),(121212,121212),(8385951,8385951),(1313,1313),(5151,5151),(14,14),(50,50); +SET TIMESTAMP=1233216687; +INSERT INTO t1 VALUES(CURRENT_TIME(),CURRENT_TIME()); +INSERT INTO t2 VALUES(CURRENT_TIME(),CURRENT_TIME()); +INSERT INTO t3 VALUES(CURRENT_TIME(),CURRENT_TIME()); +INSERT INTO t4 VALUES(CURRENT_TIME(),CURRENT_TIME()); +INSERT INTO t1 VALUES('123456',null); +INSERT INTO t3 VALUES('123456',null); +INSERT INTO t4 VALUES('123456',null); +SELECT * FROM t1; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +SELECT * FROM t2; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +SELECT * FROM t3; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +SELECT * FROM t4; +c1 c2 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +SELECT c1 FROM t1 WHERE c1='00:00:07'; +c1 +00:00:07 +UPDATE t1 SET c1='22:22:22' WHERE c1='00:00:07'; +SELECT c1 FROM t1; +c1 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +12:34:56 +150:00:00 +22:22:22 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +SELECT c1 FROM t2 WHERE c1='-838:59:59' AND c2='-838:59:59'; +c1 +-838:59:59 +UPDATE t2 SET c1='22:22:22' WHERE c1='-838:59:59' AND c2='-838:59:59'; +SELECT c1 FROM t2; +c1 +-838:59:55 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +22:22:22 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +SELECT c2 FROM t3 WHERE c2=null; +c2 +UPDATE t3 SET c2='34 22:59:59' WHERE c2=null; +SELECT c2 FROM t3; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +SELECT c2 FROM t4 WHERE c1='00:00:00'; +c2 +00:00:00 +UPDATE t4 SET c2=null WHERE c1='00:00:00'; +SELECT c2 FROM t4; +c2 +-838:59:55 +-838:59:59 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +NULL +SELECT c1 FROM t4 WHERE c1 < '000009'; +c1 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +UPDATE t4 SET c1='0101' WHERE c1 < '000009' ORDER BY c1 LIMIT 3; +SELECT c1 FROM t4; +c1 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:01:01 +00:01:01 +00:01:01 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +12:34:56 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +SELECT c1 FROM t1 WHERE c1='12:12:12'; +c1 +12:12:12 +UPDATE t1 SET c1='-12:12:12' WHERE c1='12:12:12'; +SELECT c1 FROM t1; +c1 +-12:12:12 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:34:56 +150:00:00 +22:22:22 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +SELECT c1 FROM t1 WHERE c1=111127; +c1 +11:11:27 +UPDATE t1 SET c1=c1+c2 WHERE c1=111127; +SELECT c1 FROM t1; +c1 +-12:12:12 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +125:00:00 +125:05:00 +12:34:56 +150:00:00 +22:22:22 +22:22:54 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +SELECT c1 FROM t2 WHERE c2='100:04:04'; +c1 +100:04:04 +UPDATE t2 SET c1=c1 - '010101' WHERE c2=1000404; +SELECT c1 FROM t2; +c1 +-838:59:55 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +22:22:22 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +99:03:03 +SELECT c2 FROM t3 WHERE c2=020202; +c2 +02:02:02 +UPDATE t3 SET c2=c1 * 2 WHERE c2='020202'; +SELECT c1 FROM t3; +c1 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +12:34:56 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +SELECT c1 FROM t4 WHERE c1=121212; +c1 +12:12:12 +UPDATE t4 SET c1=c1 / 2 WHERE c1='12:12:12'; +SELECT c1 FROM t4; +c1 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:01:01 +00:01:01 +00:01:01 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +06:06:06 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:34:56 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +UPDATE t1 SET c2=1250000 WHERE c1='00:00:09' AND c1='01:01:01'; +SELECT c2 FROM t1; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +UPDATE t2 SET c1=125959 WHERE c2=000400 OR c2= 000900; +SELECT c1 FROM t2; +c1 +-838:59:55 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +12:59:59 +150:00:00 +22:22:22 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +99:03:03 +UPDATE t2 SET c2='1111' WHERE c1 IN ('100:04:04',005454,'2:2:2',111111); +SELECT c2 FROM t2; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:11:11 +00:11:11 +00:11:11 +00:13:13 +00:51:51 +01:01:01 +03:03:00 +08:08:08 +100:04:04 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +UPDATE t4 SET c2='-838:59:60' WHERE c1='100:04:04'; +Warnings: +Warning 1264 Out of range value for column 'c2' at row 12 +SELECT c2 FROM t4; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +NULL +UPDATE t4 SET c2='838:59:60' WHERE c1='100:04:04'; +Warnings: +Warning 1264 Out of range value for column 'c2' at row 12 +SELECT c2 FROM t4; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +NULL +UPDATE t4 SET c2='00:00:00' WHERE c1='100:04:04'; +SELECT c2 FROM t4; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +NULL +UPDATE t4 SET c2='11:11:60' WHERE c1='100:04:04'; +Warnings: +Warning 1264 Out of range value for column 'c2' at row 12 +SELECT c2 FROM t4; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +NULL +UPDATE t4 SET c2='11:60:11' WHERE c1='100:04:04'; +Warnings: +Warning 1264 Out of range value for column 'c2' at row 12 +SELECT c2 FROM t4; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +NULL +SELECT c1 FROM t3 WHERE c2 < '000007'; +c1 +-838:59:55 +-838:59:59 +00:00:00 +00:00:01 +00:00:04 +SET SQL_MODE=STRICT_ALL_TABLES; +Warnings: +Warning 3135 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release. +UPDATE t3 SET c1=NULL WHERE c2 < '000007'; +ERROR 23000: Column 'c1' cannot be null +UPDATE IGNORE t3 SET c1=NULL WHERE c2 < '000007'; +Warnings: +Warning 1048 Column 'c1' cannot be null +Warning 1048 Column 'c1' cannot be null +Warning 1048 Column 'c1' cannot be null +Warning 1048 Column 'c1' cannot be null +Warning 1048 Column 'c1' cannot be null +SELECT c1 from t3 WHERE c2 < '000007'; +c1 +00:00:00 +00:00:00 +00:00:00 +00:00:00 +00:00:00 +SET SQL_MODE='NO_ENGINE_SUBSTITUTION'; +UPDATE t1 SET c1=8385958 WHERE c2='34 22:59:59'; +ERROR 23000: Duplicate entry '838:59:58' for key 't1.PRIMARY' +UPDATE t1 SET c2='def' WHERE c1=59; +Warnings: +Warning 1265 Data truncated for column 'c2' at row 1 +SELECT c2 FROM t1; +c2 +-838:59:55 +-838:59:59 +00:00:00 +00:00:00 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:12:12 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +NULL +UPDATE t4 SET c1=11:11:11 WHERE c2=NULL; +ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':11:11 WHERE c2=NULL' at line 1 +SELECT c1 FROM t4; +c1 +00:00:01 +00:00:04 +00:00:07 +00:00:08 +00:00:09 +00:00:10 +00:00:11 +00:00:12 +00:00:14 +00:00:50 +00:00:53 +00:00:59 +00:01:01 +00:01:01 +00:01:01 +00:03:00 +00:04:00 +00:09:09 +00:13:13 +00:51:51 +00:54:54 +01:01:01 +02:02:02 +03:03:00 +06:06:06 +08:08:08 +100:04:04 +11:11:11 +11:11:27 +125:00:00 +125:05:00 +12:34:56 +150:00:00 +838:00:00 +838:56:00 +838:58:00 +838:59:51 +838:59:52 +838:59:55 +838:59:57 +838:59:58 +838:59:59 +UPDATE t1,t2,t3,t4 SET t1.c2=t2.c1+t2.c2,t3.c2=t4.c1*2 WHERE t1.c1='00:13:13' AND t2.c1=080808 AND t4.c1='00:04:00' AND t3.c2=020202; +UPDATE t1 SET t1.c1='00:12:12' WHERE c1='00:09:09' AND c2='00:09:09'; +SELECT * FROM t1; +c1 c2 +-12:12:12 12:12:12 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:00 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:12:12 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:34:56 NULL +150:00:00 150:00:00 +22:22:22 00:00:07 +22:22:54 11:11:27 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +UPDATE t1 SET t1.c2='99999.99999' WHERE c1 BETWEEN 080000 AND 100000; +Warnings: +Warning 1264 Out of range value for column 'c2' at row 1 +SELECT * FROM t1; +c1 c2 +-12:12:12 12:12:12 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:00 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:12:12 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 00:00:00 +100:04:04 100:04:04 +11:11:11 11:11:11 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:34:56 NULL +150:00:00 150:00:00 +22:22:22 00:00:07 +22:22:54 11:11:27 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +UPDATE t1 SET c1=c1+1,c2=c2-1 WHERE c1 IN (222222,8385955,1500000) ORDER BY c1; +Warnings: +Warning 1264 Out of range value for column 'c2' at row 2 +SELECT * FROM t1; +c1 c2 +-12:12:12 12:12:12 +-838:59:55 -838:59:55 +-838:59:59 -838:59:59 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:00 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:12:12 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +08:08:08 00:00:00 +100:04:04 100:04:04 +11:11:11 11:11:11 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:34:56 NULL +150:00:01 00:00:00 +22:22:23 00:00:06 +22:22:54 11:11:27 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:56 838:59:54 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +UPDATE t1,t2 SET t1.c2='22222.22222' WHERE t1.c1=t2.c1 AND t1.c2=t2.c2; +SELECT * FROM t1; +c1 c2 +-12:12:12 12:12:12 +-838:59:55 02:22:22 +-838:59:59 -838:59:59 +00:00:00 02:22:22 +00:00:01 02:22:22 +00:00:04 02:22:22 +00:00:08 02:22:22 +00:00:09 02:22:22 +00:00:10 02:22:22 +00:00:11 02:22:22 +00:00:12 02:22:22 +00:00:14 02:22:22 +00:00:50 02:22:22 +00:00:53 02:22:22 +00:00:59 00:00:00 +00:03:00 02:22:22 +00:04:00 00:04:00 +00:12:12 00:09:09 +00:13:13 02:22:22 +00:51:51 02:22:22 +00:54:54 00:54:54 +01:01:01 02:22:22 +02:02:02 02:02:02 +03:03:00 02:22:22 +08:08:08 00:00:00 +100:04:04 100:04:04 +11:11:11 11:11:11 +125:00:00 02:22:22 +125:05:00 02:22:22 +12:34:56 NULL +150:00:01 00:00:00 +22:22:23 00:00:06 +22:22:54 11:11:27 +838:00:00 02:22:22 +838:56:00 02:22:22 +838:58:00 02:22:22 +838:59:51 02:22:22 +838:59:52 02:22:22 +838:59:56 838:59:54 +838:59:57 02:22:22 +838:59:58 02:22:22 +838:59:59 02:22:22 +SELECT * FROM t2; +c1 c2 +-838:59:55 -838:59:55 +00:00:00 00:00:00 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:11:11 +01:01:01 01:01:01 +02:02:02 00:11:11 +03:03:00 03:03:00 +08:08:08 08:08:08 +11:11:11 00:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:59:59 00:04:00 +150:00:00 150:00:00 +22:22:22 -838:59:59 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +99:03:03 100:04:04 +SELECT * FROM t3; +c1 c2 +00:00:00 -838:59:55 +00:00:00 -838:59:59 +00:00:00 00:00:00 +00:00:00 00:00:01 +00:00:00 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 04:04:04 +03:03:00 03:03:00 +08:08:08 08:08:08 +100:04:04 100:04:04 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:12:12 12:12:12 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +SELECT * FROM t4; +c1 c2 +00:00:01 00:00:01 +00:00:04 00:00:04 +00:00:07 00:00:07 +00:00:08 00:00:08 +00:00:09 00:00:09 +00:00:10 00:00:10 +00:00:11 00:00:11 +00:00:12 00:00:12 +00:00:14 00:00:14 +00:00:50 00:00:50 +00:00:53 00:00:53 +00:00:59 00:00:59 +00:01:01 -838:59:55 +00:01:01 -838:59:59 +00:01:01 NULL +00:03:00 00:03:00 +00:04:00 00:04:00 +00:09:09 00:09:09 +00:13:13 00:13:13 +00:51:51 00:51:51 +00:54:54 00:54:54 +01:01:01 01:01:01 +02:02:02 02:02:02 +03:03:00 03:03:00 +06:06:06 12:12:12 +08:08:08 08:08:08 +100:04:04 00:00:00 +11:11:11 11:11:11 +11:11:27 11:11:27 +125:00:00 125:00:00 +125:05:00 125:05:00 +12:34:56 NULL +150:00:00 150:00:00 +838:00:00 838:00:00 +838:56:00 838:56:00 +838:58:00 838:58:00 +838:59:51 838:59:51 +838:59:52 838:59:52 +838:59:55 838:59:55 +838:59:57 838:59:57 +838:59:58 838:59:58 +838:59:59 838:59:59 +DROP TABLE IF EXISTS t1,t2,t3,t4; +SET sql_mode=default; diff --git a/mysql-test/suite/tianchi/r/ctc_varchar.result b/mysql-test/suite/tianchi/r/ctc_varchar.result new file mode 100644 index 0000000..cc036bf --- /dev/null +++ b/mysql-test/suite/tianchi/r/ctc_varchar.result @@ -0,0 +1,439 @@ +drop table if exists DEMO; +drop table if exists t1; +create table t1 (a int, b varchar(9000) default ''); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int DEFAULT NULL, + `b` varchar(9000) DEFAULT '' +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into t1 values (1, repeat('a',8700)), (2, repeat('b',8800)), (3, repeat('c',9000)), (4, repeat('a',8700)); +select count(*) from t1; +count(*) +4 +alter table t1 add index idx (a); +select a from t1 where a=1; +a +1 +alter table t1 add index idb (b(768)); +select count(b) from t1 where b=repeat('a',8700); +count(b) +2 +alter table t1 add column c varchar(6400) default 'adbwedewdwed'; +select c from t1; +c +adbwedewdwed +adbwedewdwed +adbwedewdwed +adbwedewdwed +drop table t1; +create table t1 (a int, b varchar(6000) default ''); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int DEFAULT NULL, + `b` varchar(6000) DEFAULT '' +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into t1 values (1, repeat('a',5700)), (2, repeat('b',5800)), (3, repeat('c',6000)), (4, repeat('b',5800)); +select count(*) from t1; +count(*) +4 +alter table t1 add index idx (a); +select a from t1 where a=1; +a +1 +alter table t1 add index idb (b(768)); +select count(b) from t1 where b=repeat('b',5800); +count(b) +2 +alter table t1 add column c varchar(6400) default 'adbwedewdwed'; +select c from t1; +c +adbwedewdwed +adbwedewdwed +adbwedewdwed +adbwedewdwed +drop table t1; +create table t1 (a int, b varchar(600) default ''); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int DEFAULT NULL, + `b` varchar(600) DEFAULT '' +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into t1 values (1, repeat('a',570)), (2, repeat('b',580)), (3, repeat('c',600)), (4, repeat('c',600)); +select count(*) from t1; +count(*) +4 +alter table t1 add index idx (a); +select a from t1 where a=1; +a +1 +alter table t1 add index idb (b(200)); +select count(b) from t1 where b=repeat('c',600); +count(b) +2 +alter table t1 add column c varchar(6400) default 'adbwedewdwed'; +select c from t1; +c +adbwedewdwed +adbwedewdwed +adbwedewdwed +adbwedewdwed +drop table t1; +create table t1(i int,a varchar(10),b varchar(1000),c varchar(10000)); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int DEFAULT NULL, + `a` varchar(10) DEFAULT NULL, + `b` varchar(1000) DEFAULT NULL, + `c` varchar(10000) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into t1(i,a,b,c) values(1,'a',repeat('a',1000),repeat('a',10000)); +select length(c) from t1; +length(c) +10000 +alter table t1 drop b, drop c; +select * from t1; +i a +1 a +alter table t1 add column b varchar(10000),add column c varchar(1000); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int DEFAULT NULL, + `a` varchar(10) DEFAULT NULL, + `b` varchar(10000) DEFAULT NULL, + `c` varchar(1000) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +DROP PROCEDURE IF EXISTS insert_data_test1; +Warnings: +Note 1305 PROCEDURE test.insert_data_test1 does not exist +CREATE PROCEDURE insert_data_test1() +BEGIN +DECLARE k INT DEFAULT 1; +WHILE k <= 10000 DO +INSERT INTO t1(i,b,c,a) values(k,repeat('a',10000),repeat('a',1000),'a'); +SET k = k + 1; +END WHILE; +END// +CALL insert_data_test1(); +select length(b),length(c) from t1 limit 9990,10000; +length(b) length(c) +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +alter table t1 drop c; +select length(b) from t1 limit 9990,10000; +length(b) +10000 +10000 +10000 +10000 +10000 +10000 +10000 +10000 +10000 +10000 +10000 +DROP PROCEDURE insert_data_test1; +drop table t1; +create table t1(i int,a varchar(10),b varchar(10000),c varchar(1000)); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int DEFAULT NULL, + `a` varchar(10) DEFAULT NULL, + `b` varchar(10000) DEFAULT NULL, + `c` varchar(1000) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into t1(i,a,b,c) values(1,'a',repeat('a',10000),repeat('a',1000)); +select length(b) from t1; +length(b) +10000 +alter table t1 drop a, drop c; +select length(b) from t1; +length(b) +10000 +alter table t1 add column a varchar(1000),add column c varchar(10); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int DEFAULT NULL, + `b` varchar(10000) DEFAULT NULL, + `a` varchar(1000) DEFAULT NULL, + `c` varchar(10) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +DROP PROCEDURE IF EXISTS insert_data_test1; +Warnings: +Note 1305 PROCEDURE test.insert_data_test1 does not exist +CREATE PROCEDURE insert_data_test1() +BEGIN +DECLARE k INT DEFAULT 1; +WHILE k <= 10000 DO +INSERT INTO t1(i,b,c,a) values(k,repeat('a',10000),'a',repeat('a',1000)); +SET k = k + 1; +END WHILE; +END// +CALL insert_data_test1(); +select length(b),length(a) from t1 limit 9990,10000; +length(b) length(a) +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +10000 1000 +alter table t1 drop c; +select length(b) from t1 limit 9990,10000; +length(b) +10000 +10000 +10000 +10000 +10000 +10000 +10000 +10000 +10000 +10000 +10000 +DROP PROCEDURE insert_data_test1; +drop table t1; +create table t1(a tinytext, b text, c mediumtext, d longtext); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` tinytext, + `b` text, + `c` mediumtext, + `d` longtext +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table t1 modify a varchar(10000); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` varchar(10000) DEFAULT NULL, + `b` text, + `c` mediumtext, + `d` longtext +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table t1 modify a tinytext; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` tinytext, + `b` text, + `c` mediumtext, + `d` longtext +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table t1 modify b varchar(10000); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` tinytext, + `b` varchar(10000) DEFAULT NULL, + `c` mediumtext, + `d` longtext +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table t1 modify b text; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` tinytext, + `b` text, + `c` mediumtext, + `d` longtext +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table t1 modify c varchar(10000); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` tinytext, + `b` text, + `c` varchar(10000) DEFAULT NULL, + `d` longtext +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table t1 modify c mediumtext; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` tinytext, + `b` text, + `c` mediumtext, + `d` longtext +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table t1 modify d varchar(10000); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` tinytext, + `b` text, + `c` mediumtext, + `d` varchar(10000) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +alter table t1 modify d longtext; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` tinytext, + `b` text, + `c` mediumtext, + `d` longtext +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +DROP PROCEDURE IF EXISTS insert_data_test1; +Warnings: +Note 1305 PROCEDURE test.insert_data_test1 does not exist +CREATE PROCEDURE insert_data_test1() +BEGIN +DECLARE k INT DEFAULT 1; +WHILE k <= 10000 DO +INSERT INTO t1(a,b,c,d) values(repeat('a',255),repeat('b',1000),repeat('c',1000),repeat('d',1000)); +SET k = k + 1; +END WHILE; +END// +CALL insert_data_test1(); +select length(a),length(b),length(c),length(d) from t1 limit 9996,10000; +length(a) length(b) length(c) length(d) +255 1000 1000 1000 +255 1000 1000 1000 +255 1000 1000 1000 +255 1000 1000 1000 +truncate table t1; +alter table t1 modify a varchar(1000); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` varchar(1000) DEFAULT NULL, + `b` text, + `c` mediumtext, + `d` longtext +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +DROP PROCEDURE IF EXISTS insert_data_test1; +CREATE PROCEDURE insert_data_test1() +BEGIN +DECLARE k INT DEFAULT 1; +WHILE k <= 10000 DO +INSERT INTO t1(a,b,c,d) values(repeat('a',1000),repeat('b',1000),repeat('c',1000),repeat('d',1000)); +SET k = k + 1; +END WHILE; +END// +CALL insert_data_test1(); +select length(a),length(b),length(c),length(d) from t1 limit 9986,9990; +length(a) length(b) length(c) length(d) +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +1000 1000 1000 1000 +drop table t1; +create table t1(a varchar(10000), b varchar(100)); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` varchar(10000) DEFAULT NULL, + `b` varchar(100) DEFAULT NULL +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +DROP PROCEDURE IF EXISTS insert_data_test1; +CREATE PROCEDURE insert_data_test1() +BEGIN +DECLARE k INT DEFAULT 1; +WHILE k <= 10000 DO +INSERT INTO t1(a,b) values(repeat('a',10000),repeat('b',100)); +SET k = k + 1; +END WHILE; +END// +CALL insert_data_test1(); +truncate table t1; +alter table t1 modify a tinytext; +alter table t1 modify a text; +alter table t1 modify a mediumtext; +alter table t1 modify a longtext; +alter table t1 modify b tinytext; +alter table t1 modify b text; +alter table t1 modify b mediumtext; +alter table t1 modify b longtext; +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` longtext, + `b` longtext +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +DROP PROCEDURE insert_data_test1; +drop table t1; +create table t1(a int, b text, key(a)); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int DEFAULT NULL, + `b` text, + KEY `a` (`a`) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into t1 values(1,repeat('a',3900)),(2,repeat('b',3700)),(3,repeat('e',4700)); +CREATE INDEX idxb ON t1(b(700)); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int DEFAULT NULL, + `b` text, + KEY `a` (`a`), + KEY `idxb` (`b`(700)) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +select length(b) from t1 where b=repeat('b',3700); +length(b) +3700 +select a,length(b) from t1 where a<3; +a length(b) +1 3900 +2 3700 +alter table t1 add column c blob; +alter table t1 add index idxc(c(280)); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` int DEFAULT NULL, + `b` text, + `c` blob, + KEY `a` (`a`), + KEY `idxb` (`b`(700)), + KEY `idxc` (`c`(280)) +) ENGINE=CTC DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci +insert into t1 values(4,repeat('a',3900),repeat('o',2900)),(5,repeat('b',3700),repeat('p',5900)),(6,repeat('e',4700),repeat('q',6700)); +select length(b) from t1 where b=repeat('b',3700); +length(b) +3700 +3700 +select length(c) from t1 where c=repeat('p',5900); +length(c) +5900 +select a,length(b),length(c) from t1 where a>=1 and a<5; +a length(b) length(c) +1 3900 NULL +2 3700 NULL +3 4700 NULL +4 3900 2900 +drop table t1; diff --git a/mysql-test/suite/tianchi/r/recreate_test_db.result b/mysql-test/suite/tianchi/r/recreate_test_db.result new file mode 100644 index 0000000..6640698 --- /dev/null +++ b/mysql-test/suite/tianchi/r/recreate_test_db.result @@ -0,0 +1,2 @@ +drop database if exists test; +create database test; -- Gitee