Merge branch '3.0' into PT-204

This commit is contained in:
Carlos Salguero
2017-12-06 15:01:47 -03:00
49 changed files with 758 additions and 39 deletions

View File

@@ -0,0 +1,75 @@
#!/usr/bin/env perl
BEGIN {
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
};
use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
use PerconaTest;
use Sandbox;
use SqlModes;
require "$trunk/bin/pt-table-checksum";
my $dp = new DSNParser(opts=>$dsn_opts);
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
my $dbh = $sb->get_dbh_for('master');
if ( !$dbh ) {
plan skip_all => 'Cannot connect to sandbox master';
}
else {
plan tests => 3;
}
diag("loading samples");
$sb->load_file('master', 't/pt-table-checksum/samples/pt-225.sql');
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = $sb->dsn_for('master');
diag("setting up the slaves");
my $slave_dbh = $sb->get_dbh_for('slave1');
# Create differences
$slave_dbh->do('DELETE FROM `test`.`sbtest1` WHERE id > 15');
$slave_dbh->do('FLUSH TABLES');
my @args = ($master_dsn, "--set-vars", "innodb_lock_wait_timeout=50",
"--ignore-databases", "mysql,sys,sakila,percona_test",
"--nocheck-replication-filters");
my $output;
my $exit_status;
# Test #1
$output = output(
sub { $exit_status = pt_table_checksum::main(@args) },
stderr => 1,
);
isnt(
$exit_status,
0,
"PT-225 virtual/generated columns are ignored - exit status",
);
like(
$output,
qr/1\s+\d+\s+\d+\s+\d+\s+.*test.sbtest1/,
"PT-225 virtual/generated columns were ignored",
);
# #############################################################################
# Done.
# #############################################################################
$sb->wipe_clean($dbh);
ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
exit;

View File

@@ -0,0 +1,77 @@
#!/usr/bin/env perl
BEGIN {
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
};
use strict;
use warnings FATAL => 'all';
use English qw(-no_match_vars);
use Test::More;
use PerconaTest;
use Sandbox;
use SqlModes;
require "$trunk/bin/pt-table-checksum";
my $dp = new DSNParser(opts=>$dsn_opts);
my $sb = new Sandbox(basedir => '/tmp', DSNParser => $dp);
my $dbh = $sb->get_dbh_for('master');
if ( !$dbh ) {
plan skip_all => 'Cannot connect to sandbox master';
}
else {
plan tests => 3;
}
diag("loading samples");
#$sb->load_file('master', 't/pt-table-checksum/samples/pt-226.sql');
$sb->load_file('master', 't/pt-table-checksum/samples/pt-226.sql');
# The sandbox servers run with lock_wait_timeout=3 and it's not dynamic
# so we need to specify --set-vars innodb_lock_wait_timeout=3 else the tool will die.
# And --max-load "" prevents waiting for status variables.
my $master_dsn = $sb->dsn_for('master');
diag("setting up the slaves");
my $slave_dbh = $sb->get_dbh_for('slave1');
# Create differences
$slave_dbh->do('DELETE FROM `test`.`joinit` WHERE i > 90');
$slave_dbh->do('FLUSH TABLES');
$dbh->do('SET GLOBAL binlog_format="ROW"');
my @args = ($master_dsn, "--set-vars", "innodb_lock_wait_timeout=50",
"--ignore-databases", "mysql",
"--nocheck-replication-filters");
my $output;
my $exit_status;
# Test #1
$output = output(
sub { $exit_status = pt_table_checksum::main(@args) },
stderr => 1,
);
isnt(
$exit_status,
0,
"PT-226 SET binlog_format='STATEMENT' exit status",
);
like(
$output,
qr/1\s+100\s+1\s+0\s+.*test.joinit/,
"PT-226 table joinit has differences",
);
$dbh->do('SET GLOBAL binlog_format="STATEMENT"');
# #############################################################################
# Done.
# #############################################################################
$sb->wipe_clean($dbh);
ok($sb->ok(), "Sandbox servers") or BAIL_OUT(__FILE__ . " broke the sandbox");
exit;

View File

@@ -0,0 +1,42 @@
DROP DATABASE IF EXISTS test;
CREATE DATABASE test;
USE test;
CREATE TABLE `sbtest1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`k` int(11) NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
`json_test_v` json GENERATED ALWAYS AS (json_array(`k`,`c`,`pad`)) VIRTUAL,
`json_test_s` json GENERATED ALWAYS AS (json_array(`k`,`c`,`pad`)) STORED,
`json_test_index` varchar(255) GENERATED ALWAYS AS (json_array(`k`,`c`,`pad`)) STORED,
PRIMARY KEY (`id`),
KEY `k_1` (`k`),
KEY `json_test_index` (`json_test_index`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=latin1 COMPRESSION='lz4';
/*!40000 ALTER TABLE `sbtest1` DISABLE KEYS */;
INSERT INTO `sbtest1` (`id`, `k`, `c`, `pad`) VALUES
(01,583532949,'at non eaque sint velit enim facilis quisquam nam quaerat.','impedit quae hic possimus ullam est eos totam qui.'),
(02,583532949,'eos exercitationem quisquam saepe totam dolore consequatur.','sit commodi consequatur neque qui.'),
(03,1342458479,'et quia sunt eum eveniet non eum nobis quia est mollitia.','corrupti minima et quibusdam.'),
(04,280366509,'ab minima laudantium!','est sed autem quia nobis suscipit pariatur modi!'),
(05,1801160058,'perspiciatis tenetur minima accusantium consequatur in et.','rerum quo molestiae voluptates harum aspernatur sunt.'),
(06,914091476,'quas aut nostrum a.','harum tempora adipisci et et.'),
(07,1022430181,'qui voluptates inventore voluptatem voluptas numquam blanditiis corporis illum doloremque aut!','dicta neque laboriosam voluptatibus.'),
(08,165910161,'voluptas molestiae harum quis quod.','voluptatem deleniti dolor blanditiis est earum.'),
(09,1255569388,'consequuntur nihil non veniam et possimus sunt.','est est possimus recusandae ab.'),
(10,1375471152,'doloribus quasi quasi eum hic et laborum autem laudantium saepe veritatis.','enim earum et placeat animi ut.'),
(11,1705409249,'eveniet recusandae expedita est consectetur ut laudantium temporibus.','et asperiores porro id sunt totam maiores eum quidem.'),
(12,2003588754,'debitis molestias voluptatibus quia.','sint est voluptatem nihil et.'),
(13,1714682759,'voluptas officiis culpa quaerat sit quis.','vitae omnis repellat rerum consectetur ex.'),
(14,1898674299,'et est quibusdam!','aut est labore.'),
(15,1698116023,'similique nisi quisquam pariatur minus repudiandae ducimus.','eveniet rem nihil voluptatibus voluptatem non.'),
(16,1310715836,'expedita ipsum aut veniam!','incidunt at officia nisi.'),
(17,472875023,'numquam et quaerat voluptatibus.','commodi natus consequatur reiciendis adipisci ut.'),
(18,1153628287,'aut quam quia vel molestiae qui.','eos voluptas quod doloremque!'),
(19,525456967,'dignissimos quibusdam aut et.','laborum reprehenderit eius consequatur qui.'),
(20,1396416465,'aperiam sint et.','fugiat neque impedit cumque soluta.'),
(21,1640670520,'nisi repellendus et velit ab.','incidunt quo eligendi.');

View File

@@ -0,0 +1,115 @@
DROP DATABASE IF EXISTS test;
CREATE DATABASE test;
USE test;
CREATE TABLE `joinit` (
`i` int(11) NOT NULL AUTO_INCREMENT,
`s` varchar(64) DEFAULT NULL,
`t` time NOT NULL,
`g` int(11) NOT NULL,
PRIMARY KEY (`i`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `joinit` VALUES (1,'dicta ipsa molestiae sit aut sunt nesciunt.','07:21:11',914091476),
(2,'id quia ut reprehenderit rerum.','06:08:56',1705409249),
(3,'voluptates dolore repudiandae voluptas.','15:34:36',1310715836),
(4,'aliquam error qui et rerum.','08:31:50',1640670520),
(5,'accusamus sequi eos porro pariatur possimus.','20:51:37',2011751560),
(6,NULL,'00:10:28',1657080267),
(7,'culpa porro necessitatibus recusandae recusandae.','11:03:59',1406095383),
(8,'beatae voluptatum odio.','19:47:12',1134860842),
(9,'ea soluta et occaecati facilis.','04:00:31',1777484703),
(10,NULL,'15:22:10',1933032615),
(11,NULL,'09:37:52',950391508),
(12,'ad est optio esse.','05:25:06',1947188364),
(13,'accusamus necessitatibus qui corrupti quae soluta adipisci.','21:04:30',341275526),
(14,'rem doloremque et nobis.','13:59:09',1897356779),
(15,'ab consequatur vel porro ut.','19:12:02',2131804237),
(16,'quas molestiae saepe voluptatem rerum quis.','03:41:59',1480121891),
(17,'assumenda ipsa facere et porro voluptas.','17:08:41',663551763),
(18,'est reprehenderit expedita magnam suscipit sunt et.','07:15:01',363238924),
(19,'rerum qui laudantium.','09:51:18',419864978),
(20,'ut qui temporibus vel.','08:40:00',284706965),
(21,'laboriosam ratione aliquid consectetur quidem ab assumenda qui.','15:21:45',1408072633),
(22,'at qui delectus quos sit.','12:43:10',1124985924),
(23,'doloremque odio eos accusantium praesentium officia molestiae ad','01:31:02',1874543227),
(24,'eaque suscipit ullam.','04:07:37',1442092269),
(25,'ut consectetur sit incidunt nostrum occaecati in similique.','20:12:29',1138469771),
(26,'maiores in ipsum.','12:34:46',156229088),
(27,'corporis et reiciendis velit veritatis eaque.','15:51:48',271447457),
(28,NULL,'14:48:19',1508837206),
(29,'rerum quod incidunt ut.','22:59:07',915259646),
(30,'nulla recusandae qui quisquam ut animi culpa rem dolor.','16:58:10',1648444437),
(31,'ipsa qui porro aliquam ab quisquam odio.','01:31:24',1928855257),
(32,'occaecati et officia quod unde.','23:40:12',2094599137),
(33,'molestiae ipsum animi illo incidunt sit fugiat.','20:27:01',682166125),
(34,'sed rerum tenetur ut maxime cumque et.','07:59:16',402527489),
(35,'quasi qui deleniti et quia aspernatur eum harum.','09:44:45',1875752492),
(36,'molestias deserunt sit.','04:47:40',1621124315),
(37,'ut sit dolorem praesentium voluptatem numquam vel est repellendu','04:27:29',1929299726),
(38,'nesciunt officia qui expedita officia!','14:12:17',1871749515),
(39,'molestias fugit qui quas aut quis quis.','02:20:50',133250776),
(40,'nemo voluptas nostrum quae at nesciunt aut.','05:30:16',1977544176),
(41,'neque at nemo laudantium.','18:49:09',1160495982),
(42,NULL,'01:53:15',238269571),
(43,'placeat sit magnam quasi officiis rem.','01:32:17',2050374349),
(44,'harum magnam repellendus natus molestias.','02:31:36',266881561),
(45,'corrupti optio aliquid et eum.','11:27:58',1057706898),
(46,'et aut a at alias quod.','20:27:16',1803439254),
(47,'eum enim voluptatem fugit ipsam iure.','10:00:56',465971914),
(48,'sapiente quis nemo est aperiam corporis exercitationem velit.','03:55:59',1754471891),
(49,'consequuntur aspernatur fugiat est sit autem est.','22:25:20',454377625),
(50,'aut sed consequatur amet.','21:59:00',1580210933),
(51,'autem eius delectus autem ut.','05:42:06',694812007),
(52,'magnam nisi ipsum sit quae reprehenderit eius.','10:57:48',1705595462),
(53,'qui sit ut est voluptatibus earum.','08:43:27',1756643709),
(54,'dolore enim at eum deserunt excepturi omnis!','15:32:25',1793291857),
(55,'nesciunt perferendis omnis quia perspiciatis.','00:53:16',439848412),
(56,'voluptas laboriosam commodi inventore.','12:17:27',502769231),
(57,'non nihil inventore qui.','12:23:29',2010474512),
(58,NULL,'07:59:58',195539887),
(59,NULL,'01:03:13',185293657),
(60,'sunt et perferendis.','01:41:52',593397986),
(61,'qui nemo magni explicabo iure corrupti exercitationem quas!','13:12:36',158590428),
(62,'fugiat optio omnis quisquam.','15:34:07',249619147),
(63,'suscipit dicta incidunt eaque vel officia.','00:12:54',884057050),
(64,'at qui reprehenderit quod est optio.','11:44:52',1888470232),
(65,NULL,'17:28:01',1631026724),
(66,'eius sunt omnis quibusdam autem ut.','08:24:17',91435374),
(67,'doloremque cum cupiditate dolorem omnis.','06:29:20',1151045825),
(68,'iure facilis qui illum aliquam sed asperiores sed!','11:18:27',86548934),
(69,'eos nisi ipsam molestiae ut.','03:13:29',1033200673),
(70,'ex sint aut et cumque et facilis et amet!','01:45:19',1258514903),
(71,'nihil sit assumenda voluptatibus explicabo!','21:36:39',185971679),
(72,'amet vero perferendis atque.','12:01:35',2040594002),
(73,'earum molestiae asperiores ut.','19:18:16',1165023000),
(74,'consequatur rerum similique quasi.','14:44:12',713361001),
(75,'pariatur voluptatibus omnis ipsum iure sint veritatis at cupidit','18:06:16',1550033064),
(76,'exercitationem maxime dolor totam velit sit provident.','15:33:33',979765860),
(77,'sed reiciendis aut id adipisci error!','05:17:42',542662142),
(78,'eaque quod distinctio nihil iste qui aspernatur et accusantium.','10:35:44',1134356103),
(79,'molestias deleniti deleniti perspiciatis.','19:16:57',1360205808),
(80,'architecto enim nulla.','09:28:24',531569080),
(81,'porro aut at quisquam commodi vel molestias.','22:49:27',1154086856),
(82,'libero in et in mollitia.','08:35:21',1945863708),
(83,'voluptates sequi ut enim in fuga debitis.','09:11:07',1987718992),
(84,'voluptatum neque voluptates minus.','21:44:27',1928647112),
(85,'maxime similique consectetur.','14:01:49',1808357109),
(86,'nesciunt aspernatur et mollitia aut labore.','00:48:27',1645832522),
(87,'alias quasi ut eveniet vero necessitatibus velit nesciunt nam!','18:22:59',740680075),
(88,'et totam est voluptas odit rem illum saepe.','02:35:28',980905093),
(89,'porro cupiditate assumenda et non magni deserunt qui repellendus','04:18:30',1965305195),
(90,'vitae quis ullam eos in debitis laudantium!','22:39:14',535565611),
(91,'quo consequatur expedita.','12:33:03',1037848256),
(92,'ipsum at ea consequatur tempore natus!','12:40:38',1216234763),
(93,'numquam repellendus modi culpa corporis aut.','07:46:22',984113837),
(94,'minima in sed modi maxime est iusto.','20:48:55',1026183968),
(95,NULL,'10:48:23',1418133890),
(96,'nesciunt similique fugiat quae repudiandae et eveniet.','17:44:07',583744287),
(97,'libero voluptatibus quibusdam.','09:09:23',1292950444),
(98,'id quasi distinctio molestiae eaque exercitationem id.','18:17:07',625537546),
(99,'veritatis ab quibusdam omnis eum dolor quasi doloremque quia.','02:10:52',1042143012),
(100,'vel accusamus nisi praesentium et.','04:15:54',661815870);