[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.135.205.24: ~ $
-- source include/have_ndb.inc

# Notes on index stats in *.test.
#
# Most tables here have few table rows.  Index stats are not very
# useful in such cases but the optimizer seems to use them anyway.
# One reason may be that nested joins is only join method.
#
# In real production index stats are computed daily or weekly.
# But tests here must compute them at once if "explain" is used.
# Thus: insert (or other dml) - analyze table - explain.
#
# Index stats are approximate since only one replica was scanned
# and values are interpolated from samples.  MTR however should be
# deterministic.  If not use --replace column 9 # (rows).

--disable_warnings
DROP TABLE IF EXISTS t1, t2;
--enable_warnings

set @is_enable_default = @@global.ndb_index_stat_enable;

set @is_enable = 1;
source ndb_index_stat_enable.inc;

# test changing suboptions
show global variables like 'ndb_index_stat_option';
set @save_option = @@global.ndb_index_stat_option;
# some options
set @@global.ndb_index_stat_option = 'loop_idle=3333,cache_limit=44M';
set @@global.ndb_index_stat_option = 'cache_lowpct=85,evict_delay=55';
set @@global.ndb_index_stat_option = 'check_delay=234s';
show global variables like 'ndb_index_stat_option';
set @@global.ndb_index_stat_option = @save_option;
show global variables like 'ndb_index_stat_option';

# TEST: main
create table t1 (
  a1 int unsigned not null,
  b1 int unsigned not null,
  c1 int unsigned not null,
  primary key (a1),
  index b1x (b1),
  index c1x (c1)
) engine=ndb;

create table t2 (
  a2 int unsigned not null,
  b2 int unsigned not null,
  c2 int unsigned not null,
  primary key (a2),
  index b2x (b2),
  index c2x (c2)
) engine=ndb;

# enough rows to make index stats more approximate

--disable_query_log
let $i = 1000;
while ($i)
{
  dec $i;
  eval insert into t1 values ($i, $i % 100, $i % 10);
}
let $i = 1000;
while ($i)
{
  dec $i;
  eval insert into t2 values ($i, $i % 10, $i % 100);
}
--enable_query_log
analyze table t1, t2;

# TEST: key equal constant

--echo # must use b1x
--replace_column 9 #
explain select * from t1
  where b1 = 5 and c1 = 5;

--echo # must use c2x
--replace_column 9 #
explain select * from t2
  where b2 = 5 and c2 = 5;

# TEST: keys equal constant in join

--echo # must use b1x, c2x
--replace_column 9 #
explain select * from t1, t2
  where c1 = c2 and b1 = 5 and b2 = 5;

--echo # must use c2x, b1x
--replace_column 9 #
explain select * from t1, t2
  where b1 = b2 and c1 = 5 and c2 = 5;

# TEST: join via keys of different selectivity

--echo # must use t1, c2x
--replace_column 9 #
explain select * from t1, t2
  where c1 = c2;
--echo # must use t2, b1x
--replace_column 9 #
explain select * from t1, t2
  where b1 = b2;

# TEST: bug#44760 quick distinct
# QUICK_GROUP_MIN_MAX_SELECT says "Using index for group-by".
# Should happen only for low cardinality index.
# wl4124_todo: result is wrong until HA_KEYREAD_ONLY is set

--echo # should NOT say: Using index for group-by
--replace_column 9 #
explain select distinct (a1) from t1;

--echo # must say: Using index for group by
--replace_column 9 #
explain select distinct (b1) from t1;

--echo # must say: Using index for group by
--replace_column 9 #
explain select distinct (c1) from t1;

# TEST: end
drop table t1, t2;

# turn index stats OFF in client (falls back on other methods)
# code snippet moved from ndb_index_ordered.test

create table t1 (a int, b int, c varchar(10) not null,
  primary key using hash (a), index(b,c)) engine=ndb;
insert into t1 values
  (1,10,'aaa'),(2,10,'bbb'),(3,10,'ccc'),
  (4,20,'aaa'),(5,20,'bbb'),(6,20,'ccc'),
  (7,30,'aaa'),(8,30,'bbb'),(9,30,'ccc');
analyze table t1;
let $is_loop = 4;
while ($is_loop)
{
  # 4-OFF 3-ON 2-OFF 1-ON
  let $is_enable = `select ($is_loop=3 or $is_loop=1)`;
  dec $is_loop;
  eval set @@local.ndb_index_stat_enable = $is_enable;

select count(*) from t1 where b < 10;
select count(*) from t1 where b >= 10 and c >= 'bbb';
select count(*) from t1 where b > 10;
select count(*) from t1 where b <= 20 and c < 'ccc';
select count(*) from t1 where b = 20 and c = 'ccc';
select count(*) from t1 where b > 20;
select count(*) from t1 where b = 30 and c > 'aaa';
select count(*) from t1 where b <= 20;
select count(*) from t1 where b >= 20 and c > 'aaa';
}
drop table t1;

# bug#XXXXX
# autocreate=false,enable=1 is now acceptable
# following gives warning while "no stats" is counted as error
create table t1 (a int, b int, primary key using hash (a), index x1 (b))
engine=ndb;
insert into t1 values (1,11),(2,22),(3,33);
# make_join_statistics() -> info() -> ndb_index_stat_set_rpk()
# error 4715 - no stats
select * from t1 order by a;
# error 9003 suppressed - previous recent error
select * from t1 order by a;
# analyze clears previous error at once
analyze table t1;
drop table t1;

# bug#XXXXX
# wrong byte size from some types to NdbPack
# before error fixes causes stats to be ignored silently (error 4716)
# best seen with debug and export NDB_PACK_ABORT_ON_ERROR=1
# affected types: mediumint datetime date time timestamp

create table t1 (
  pk int not null,
  a tinyint not null,
  b tinyint unsigned not null,
  c smallint not null,
  d smallint unsigned not null,
  e mediumint not null,
  f mediumint unsigned not null,
  g int not null,
  h int unsigned not null,
  i bigint not null,
  j bigint unsigned not null,
  k float not null,
  l double not null,
  m decimal not null,
  n decimal unsigned not null,
  primary key using hash (pk),
  index (a),
  index (b),
  index (c),
  index (d),
  index (e),
  index (f),
  index (g),
  index (h),
  index (i),
  index (j),
  index (k),
  index (l),
  index (m),
  index (n)
) engine=ndb;
insert into t1 values
(1,11,11,11,11,11,11,11,11,11,11,11,11,11,11),
(2,22,22,22,22,22,22,22,22,22,22,22,22,22,22),
(3,33,33,33,33,33,33,33,33,33,33,33,33,33,33);
let $i = 2;
while ($i)
{
  dec $i;
  if (!$i)
  {
    eval analyze table t1;
  }
  eval select count(*) from t1 where a > 22;
  eval select count(*) from t1 where b > 22;
  eval select count(*) from t1 where c > 22;
  eval select count(*) from t1 where d > 22;
  eval select count(*) from t1 where e > 22;
  eval select count(*) from t1 where f > 22;
  eval select count(*) from t1 where g > 22;
  eval select count(*) from t1 where h > 22;
  eval select count(*) from t1 where i > 22;
  eval select count(*) from t1 where j > 22;
  eval select count(*) from t1 where k > 22;
  eval select count(*) from t1 where l > 22;
  eval select count(*) from t1 where m > 22;
  eval select count(*) from t1 where n > 22;
}
drop table t1;

create table t1 (
  pk int not null,
  a datetime not null,
  b date not null,
  c year not null,
  d time not null,
  e timestamp not null,
  primary key using hash (pk),
  index (a),
  index (b),
  index (c),
  index (d),
  index (e)
) engine=ndb;
insert into t1 values
(1,'1971-01-01 01:01:01','1971-01-01','1971','01:01:01','1971-01-01 01:01:01'),
(2,'1972-02-02 02:02:02','1972-02-02','1972','02:02:02','1972-02-02 02:02:02'),
(3,'1973-03-03 03:03:03','1973-03-03','1973','03:03:03','1973-03-03 03:03:03');
let $i = 2;
while ($i)
{
  dec $i;
  if (!$i)
  {
    eval analyze table t1;
  }
  eval select count(*) from t1 where a > '1972-02-02 02:02:02';
  eval select count(*) from t1 where b > '1972-02-02';
  eval select count(*) from t1 where c > '1972';
  eval select count(*) from t1 where d > '02:02:02';
  eval select count(*) from t1 where e > '1972-02-02 02:02:02';
}
drop table t1;

create table t1 (
  pk int not null,
  a char(10) not null,
  b varchar(10) not null,
  c varchar(1000) not null,
  d binary(10) not null,
  e varbinary(10) not null,
  f varbinary(1000) not null,
  primary key using hash (pk),
  index (a),
  index (b),
  index (c),
  index (d),
  index (e),
  index (f)
) engine=ndb;
insert into t1 values
('1','111','111','111','111','111','111'),
('2','222','222','222','222','222','222'),
('3','333','333','333','333','333','333');
let $i = 2;
while ($i)
{
  dec $i;
  if (!$i)
  {
    eval analyze table t1;
  }
  eval select count(*) from t1 where a > '222';
  eval select count(*) from t1 where b > '222';
  eval select count(*) from t1 where c > '222';
  eval select count(*) from t1 where d > '222';
  eval select count(*) from t1 where e > '222';
  eval select count(*) from t1 where f > '222';
}
drop table t1;

#
# Check estimates of records per key for partial keys using unique/primary ordered index
#

create table t1 (a1 int, b1 int, primary key(b1), key(a1)) engine=ndbcluster partition by key() partitions 1;
create table t2 (b2 int, c2 int, primary key(b2,c2)) engine=ndbcluster partition by key() partitions 1;

--disable_query_log
let $i = 100;
while ($i)
{
  eval insert into t1 (a1,b1) values ($i,$i);
  eval insert into t2 (b2,c2) values ($i mod 2, $i div 2);
  dec $i;
}
--enable_query_log

--echo # table t1 is only for forcing record by key count for table t2 that should be near 50 (not 1)
analyze table t1, t2;
# Hide Extra column
--replace_column 10 #
explain select * from t1, t2 where b2 = b1 and a1 = 1;

drop table t1, t2;

# bugXXXXX rule b3.3 fix

CREATE TABLE t1(
  K INT NOT NULL AUTO_INCREMENT,
  I INT,
  J INT,
  L INT,
  PRIMARY KEY(K),
  KEY(I,J),
  KEY(L)
) ENGINE=ndbcluster
  partition by key (K) partitions 1;

INSERT INTO t1(I,J,L) VALUES
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(0,0,0);

INSERT INTO t1(I,J,L) SELECT I,1,I FROM t1;
INSERT INTO t1(I,J,L) SELECT I,2,I FROM t1;
INSERT INTO t1(I,J,L) SELECT I,3,I FROM t1;
INSERT INTO t1(I,J,L) SELECT I,4,I FROM t1;
INSERT INTO t1(I,J,L) SELECT I,5,I FROM t1;
INSERT INTO t1(I,J,L) SELECT I,6,I FROM t1;
INSERT INTO t1(I,J,L) SELECT I,7,I FROM t1;
INSERT INTO t1(I,J,L) SELECT I,8,I FROM t1;

select i, count(*) from t1 group by 1 order by 1;
select l, count(*) from t1 group by 1 order by 1;

ANALYZE TABLE t1;

explain SELECT count(*) as Count FROM t1 WHERE I = 5;
SELECT count(*) as Count FROM t1 WHERE I = 5;

# before fix rows was 128 instead of 256
explain SELECT count(*) as Count FROM t1 WHERE L = 5;
SELECT count(*) as Count FROM t1 WHERE L = 5;

drop table t1;

set @is_enable = @is_enable_default;
source ndb_index_stat_enable.inc;

Filemanager

Name Type Size Permission Actions
bug36547.test File 386 B 0644
clusterj.test File 1.8 KB 0644
clusterj_jpa.test File 2.46 KB 0644
disabled.def File 918 B 0644
have_ndb_dist_priv.inc File 857 B 0644
have_ndb_error_insert.inc File 931 B 0644
have_ndbinfo.inc File 821 B 0644
loaddata_autocom_ndb.test File 98 B 0644
ndb_add_partition.test File 6.78 KB 0644
ndb_addnode.cnf File 664 B 0644
ndb_addnode.test File 2.18 KB 0644
ndb_alter_table.test File 9.6 KB 0644
ndb_alter_table2.test File 1.31 KB 0644
ndb_alter_table3.test File 1.47 KB 0644
ndb_alter_table_backup.test File 1.53 KB 0644
ndb_alter_table_error.test File 953 B 0644
ndb_alter_table_online.test File 21.47 KB 0644
ndb_alter_table_online2.test File 4.82 KB 0644
ndb_alter_table_online_multi.test File 1.92 KB 0644
ndb_auto_increment.test File 11.59 KB 0644
ndb_autoinc.test File 642 B 0644
ndb_basic.test File 20.68 KB 0644
ndb_bitfield.test File 6.33 KB 0644
ndb_blob.test File 17.7 KB 0644
ndb_blob_big.cnf File 353 B 0644
ndb_blob_big.test File 1.62 KB 0644
ndb_blob_partition.test File 4.28 KB 0644
ndb_bug26793.test File 843 B 0644
ndb_bug31477.test File 2.13 KB 0644
ndb_bug31754.test File 206 B 0644
ndb_bulk_delete.test File 3.92 KB 0644
ndb_cache.test File 7.92 KB 0644
ndb_cache2.test File 11.05 KB 0644
ndb_cache_multi.test File 1.89 KB 0644
ndb_cache_multi2.test File 4.3 KB 0644
ndb_cache_trans.test File 4.64 KB 0644
ndb_charset.test File 6.41 KB 0644
ndb_column_properties.test File 4.48 KB 0644
ndb_condition_pushdown.test File 80.54 KB 0644
ndb_config.test File 3.53 KB 0644
ndb_config2.test File 346 B 0644
ndb_create_table.test File 795 B 0644
ndb_cursor.test File 918 B 0644
ndb_database.test File 2.99 KB 0644
ndb_dbug_lock.test File 1.94 KB 0644
ndb_dbug_tc_select.test File 3.81 KB 0644
ndb_dbug_tc_select_1.inc File 1.83 KB 0644
ndb_dbug_tc_select_2.inc File 1.91 KB 0644
ndb_dbug_tc_select_3.inc File 2.06 KB 0644
ndb_dd_alter.test File 7.87 KB 0644
ndb_dd_basic.test File 20.17 KB 0644
ndb_dd_bug12581213.cnf File 111 B 0644
ndb_dd_bug12581213.test File 370 B 0644
ndb_dd_ddl.test File 7.37 KB 0644
ndb_dd_disk2memory.test File 10.02 KB 0644
ndb_dd_dump.test File 10.58 KB 0644
ndb_dd_restore_compat.test File 949 B 0644
ndb_dd_sql_features.test File 16.14 KB 0644
ndb_ddl_open_trans.test File 2.54 KB 0644
ndb_disconnect_ddl.test File 1.31 KB 0644
ndb_discover_db-master.opt File 43 B 0644
ndb_discover_db.test File 1.88 KB 0644
ndb_dist_priv.test File 7.09 KB 0644
ndb_gis.test File 211 B 0644
ndb_global_schema_lock.test File 3.51 KB 0644
ndb_global_schema_lock_error.test File 1.53 KB 0644
ndb_grant.later File 10.98 KB 0644
ndb_hidden_pk.test File 2.55 KB 0644
ndb_index.test File 11.9 KB 0644
ndb_index_ordered.test File 15.46 KB 0644
ndb_index_stat.test File 9.91 KB 0644
ndb_index_stat_enable.inc File 1.18 KB 0644
ndb_index_unique.test File 14.63 KB 0644
ndb_init_schema_locks_count.inc File 226 B 0644
ndb_insert.test File 36.32 KB 0644
ndb_join_pushdown.test File 110.53 KB 0644
ndb_jtie.test File 990 B 0644
ndb_limit.test File 2.25 KB 0644
ndb_load.test File 2.12 KB 0644
ndb_loaddatalocal.test File 2.43 KB 0644
ndb_lock.test File 5.69 KB 0644
ndb_lock_table.test File 284 B 0644
ndb_mgm.inc File 130 B 0644
ndb_mgm.test File 3.38 KB 0644
ndb_minmax.test File 1.28 KB 0644
ndb_multi.test File 5.79 KB 0644
ndb_multi_row.test File 1.78 KB 0644
ndb_native_default_support.test File 25.47 KB 0644
ndb_optimize_table.test File 2.44 KB 0644
ndb_optimized_node_selection.test File 908 B 0644
ndb_partition_error.test File 1.83 KB 0644
ndb_partition_error2.test File 369 B 0644
ndb_partition_hash.test File 1.53 KB 0644
ndb_partition_key.test File 6.85 KB 0644
ndb_partition_list.test File 2.67 KB 0644
ndb_partition_range.test File 7.91 KB 0644
ndb_read_multi_range.test File 14.6 KB 0644
ndb_reconnect.test File 1.76 KB 0644
ndb_rename.test File 858 B 0644
ndb_replace.test File 3.95 KB 0644
ndb_restart_nostart.inc File 147 B 0644
ndb_restart_start.inc File 130 B 0644
ndb_restore_compat_compression-master.opt File 46 B 0644
ndb_restore_compat_compression.test File 589 B 0644
ndb_restore_compat_downward.test File 3.99 KB 0644
ndb_restore_compat_endianness.test File 6.68 KB 0644
ndb_restore_conv_lossy_charbinary.test File 16.86 KB 0644
ndb_restore_conv_lossy_integral.test File 22.53 KB 0644
ndb_restore_conv_padding.test File 9.09 KB 0644
ndb_restore_conv_promotion.test File 12.71 KB 0644
ndb_restore_discover.test File 1.72 KB 0644
ndb_restore_misc.test File 23.18 KB 0644
ndb_restore_print.test File 6.82 KB 0644
ndb_restore_schema_blobs.test File 4.26 KB 0644
ndb_restore_schema_partitions.test File 14.93 KB 0644
ndb_restore_schema_rewrites.test File 16.26 KB 0644
ndb_restore_schema_subsets.test File 10.97 KB 0644
ndb_restore_schema_tolerance.test File 6.55 KB 0644
ndb_restore_undolog.test File 16.53 KB 0644
ndb_row_count.test File 2.95 KB 0644
ndb_row_format.test File 1.89 KB 0644
ndb_schema_locks_count.inc File 209 B 0644
ndb_select_count.test File 364 B 0644
ndb_share.cnf File 652 B 0644
ndb_share.test File 9.38 KB 0644
ndb_short_sigs.cnf File 170 B 0644
ndb_short_sigs.test File 2.5 KB 0644
ndb_show_tables_result.inc File 563 B 0644
ndb_single_user-master.opt File 32 B 0644
ndb_single_user.test File 4.76 KB 0644
ndb_sp.test File 909 B 0644
ndb_sql_allow_batching.test File 1.12 KB 0644
ndb_statistics.inc File 3.33 KB 0644
ndb_statistics0.test File 232 B 0644
ndb_statistics1.test File 231 B 0644
ndb_subquery.test File 2.53 KB 0644
ndb_temporary.test File 1.08 KB 0644
ndb_tmp_table_and_DDL.test File 393 B 0644
ndb_transaction.test File 5.76 KB 0644
ndb_trigger.test File 8.77 KB 0644
ndb_truncate.test File 794 B 0644
ndb_types.test File 2.69 KB 0644
ndb_update.test File 2.74 KB 0644
ndb_update_no_read.test File 16.91 KB 0644
ndb_view.test File 607 B 0644
ndb_wait_nostart.inc File 103 B 0644
ndb_wait_started.inc File 84 B 0644
ndb_waiter.inc File 148 B 0644
ndbapi.test File 1.98 KB 0644
ndbinfo.test File 6.85 KB 0644
ndbinfo_cache.test File 794 B 0644
ndbinfo_create.inc File 387 B 0644
ndbinfo_drop.inc File 127 B 0644
ndbinfo_dump.test File 626 B 0644
ps_7ndb.test File 898 B 0644
show_attributes.inc File 664 B 0644
show_primary_keys.inc File 609 B 0644
show_varpart.inc File 762 B 0644
strict_autoinc_5ndb.test File 146 B 0644
test_mgmd.cnf File 232 B 0644
test_mgmd.test File 195 B 0644
test_ndbinfo.test File 229 B 0644