step-to-crash-v0.patch

text/plain

Filename: step-to-crash-v0.patch
Type: text/plain
Part: 0
Message: Re: CREATE INDEX CONCURRENTLY does not index prepared xact's data

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: unified
Series: patch v0
File+
src/test/subscription/t/080_step_equalTupleDescs.pl 94 0
diff --git a/src/test/subscription/t/080_step_equalTupleDescs.pl b/src/test/subscription/t/080_step_equalTupleDescs.pl
new file mode 100644
index 0000000..efa6dbd
--- /dev/null
+++ b/src/test/subscription/t/080_step_equalTupleDescs.pl
@@ -0,0 +1,94 @@
+# run with: make -C src/test/subscription check PROVE_TESTS=t/080_step_equalTupleDescs.pl
+# email src/test/subscription/tmp_check/log/regress_log_080_step_equalTupleDescs
+
+use strict;
+use warnings;
+use PostgreSQL::Test::Cluster;
+use PostgreSQL::Test::Utils;
+use Test::More tests => 1;
+use IPC::Run;
+
+my $node = PostgreSQL::Test::Cluster->new('main');
+$node->init;
+$node->start;
+
+my $in  = '';
+my $out = '';
+my $timer = IPC::Run::timeout(180);
+my $psql = $node->background_psql('postgres', \$in, \$out, $timer,
+	on_error_stop => 0);
+
+$in .= q{
+SELECT pg_backend_pid(), 'after_pid';
+};
+$psql->pump until $out =~ /^([0-9]*)\|after_pid/m;
+my $pid = $1;
+print "backend pid: $pid\n";
+
+my $gdb_cmd_file = $node->basedir . '/commands-gdb';
+PostgreSQL::Test::Utils::append_to_file($gdb_cmd_file, q{
+b equalTupleDescs
+ignore 1 9
+set logging file } . $node->basedir . q{/gdb_started.txt
+set logging on
+set logging off
+continue
+p *tupdesc1
+p *tupdesc2
+p tupdesc1->attrs[0]
+p tupdesc1->attrs[1]
+p tupdesc1->attrs[2]
+p tupdesc2->attrs[0]
+p tupdesc2->attrs[1]
+p tupdesc2->attrs[2]
+backtrace full
+set $loopvar = 25000
+while ($loopvar--)
+  stepi
+end
+quit
+});
+
+my $gdb = IPC::Run::start(
+	[qw(gdb --batch --nx --pid), $pid, '-x', $gdb_cmd_file],
+	$timer);
+sleep .1 while !-f $node->basedir.'/gdb_started.txt';
+
+# first 28 lines of src/test/regress/sql/alter_table.sql
+$in .= q{
+--
+-- ALTER_TABLE
+--
+
+-- Clean up in case a prior regression run failed
+SET client_min_messages TO 'warning';
+DROP ROLE IF EXISTS regress_alter_table_user1;
+RESET client_min_messages;
+
+CREATE USER regress_alter_table_user1;
+
+--
+-- add attribute
+--
+
+CREATE TABLE attmp (initial int4);
+
+COMMENT ON TABLE attmp_wrong IS 'table comment';
+COMMENT ON TABLE attmp IS 'table comment';
+COMMENT ON TABLE attmp IS NULL;
+
+ALTER TABLE attmp ADD COLUMN xmin integer; -- fails
+
+ALTER TABLE attmp ADD COLUMN a int4 default 3;
+
+ALTER TABLE attmp ADD COLUMN b name;
+
+ALTER TABLE attmp ADD COLUMN c text;
+};
+
+$in .= q{
+\q
+};
+$psql->finish;
+$gdb->finish;
+ok(1);