-
Notifications
You must be signed in to change notification settings - Fork 68
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
When I execute a use case of pg_pathman on postgresql 12.7, a core file is generated. #230
Comments
i got same problem on postgresql 13.3,how you fixed it? |
i have fixed this problem by using master branch. do not use version release 1.5.12 |
Problem description
When I execute a use case of pg_pathman on postgresql 12.7, a core file is generated
core file:
[dytestpg@host-10-57-68-13 corefile]$ gdb /home/dytestpg/postgres/bin/postgres /corefile/core-1625843430-postgres-18236-6
Errors:
void
heap_insert(Relation relation, HeapTuple tup, CommandId cid,
int options, BulkInsertState bistate)
{
TransactionId xid = GetCurrentTransactionId();
HeapTuple heaptup;
Buffer buffer;
Buffer vmbuffer = InvalidBuffer;
bool all_visible_cleared = false;
Breakpoint 1, heap_insert (relation=0x7f8a3a221998, tup=0x1471e70, cid=0, options=0, bistate=0x0) at heapam.c:1883
3: * relation->rd_rel = {oid = 73801, relname = {data = "test_12", '\000' <repeats 56 times>}, relnamespace = 73728, reltype = 73803, reloftype = 0, relowner = 10, relam = 2,
relfilenode = 73801, reltablespace = 0, relpages = 0, reltuples = 0, relallvisible = 0, reltoastrelid = 0, relhasindex = false, relisshared = false, relpersistence = 112 'p',
relkind = 114 'r', relnatts = 2, relchecks = 1, relhasrules = false, relhastriggers = false, relhassubclass = false, relrowsecurity = false, relforcerowsecurity = false,
relispopulated = true, relreplident = 100 'd', relispartition = false, relrewrite = 0, relfrozenxid = 1136, relminmxid = 1}
2: RelationGetNumberOfAttributes(relation) = 2
1: HeapTupleHeaderGetNatts(tup->t_data) = 3
The use cases that report errors are executed in sequence, and errors will be reported at the end.
/*
/
\set VERBOSITY terse
SET search_path = 'public';
CREATE EXTENSION pg_pathman;
CREATE SCHEMA test_updates;
/
/
/ create partitioned table */
CREATE TABLE test_updates.test(a FLOAT4, val INT4 NOT NULL, b FLOAT8);
INSERT INTO test_updates.test SELECT i, i, i FROM generate_series(1, 100) AS i;
SELECT create_range_partitions('test_updates.test', 'val', 1, 10);
create_range_partitions
(1 row)
/* drop column 'a' /
ALTER TABLE test_updates.test DROP COLUMN a;
/ append new partition */
SELECT append_range_partition('test_updates.test');
append_range_partition
test_updates.test_11
(1 row)
INSERT INTO test_updates.test_11 (val, b) VALUES (101, 10);
VACUUM ANALYZE;
/* tuple descs are the same */
EXPLAIN (COSTS OFF) UPDATE test_updates.test SET b = 0 WHERE val = 1;
QUERY PLAN
Update on test_1
-> Seq Scan on test_1
Filter: (val = 1)
(3 rows)
UPDATE test_updates.test SET b = 0 WHERE val = 1 RETURNING *, tableoid::REGCLASS;
val | b | tableoid
-----+---+---------------------
1 | 0 | test_updates.test_1
(1 row)
/* tuple descs are different */
EXPLAIN (COSTS OFF) UPDATE test_updates.test SET b = 0 WHERE val = 101;
QUERY PLAN
Update on test_11
-> Seq Scan on test_11
Filter: (val = 101)
(3 rows)
UPDATE test_updates.test SET b = 0 WHERE val = 101 RETURNING *, tableoid::REGCLASS;
val | b | tableoid
-----+---+----------------------
101 | 0 | test_updates.test_11
(1 row)
CREATE TABLE test_updates.test_dummy (val INT4);
EXPLAIN (COSTS OFF) UPDATE test_updates.test SET val = val + 1
WHERE val = 101 AND val = ANY (TABLE test_updates.test_dummy)
RETURNING *, tableoid::REGCLASS;
QUERY PLAN
Update on test_11
-> Nested Loop Semi Join
-> Seq Scan on test_11
Filter: (val = 101)
-> Seq Scan on test_dummy
Filter: (val = 101)
(6 rows)
EXPLAIN (COSTS OFF) UPDATE test_updates.test t1 SET b = 0
FROM test_updates.test_dummy t2
WHERE t1.val = 101 AND t1.val = t2.val
RETURNING t1.*, t1.tableoid::REGCLASS;
QUERY PLAN
Update on test_11 t1
-> Nested Loop
-> Seq Scan on test_11 t1
Filter: (val = 101)
-> Seq Scan on test_dummy t2
Filter: (val = 101)
(6 rows)
EXPLAIN (COSTS OFF) UPDATE test_updates.test SET b = 0
WHERE val = 101 AND test >= (100, 8)
RETURNING *, tableoid::REGCLASS;
QUERY PLAN
Update on test_11
-> Seq Scan on test_11
Filter: (((test_11.*)::test_updates.test >= '(100,8)'::record) AND (val = 101))
(3 rows)
/* execute this one */
UPDATE test_updates.test SET b = 0
WHERE val = 101 AND test >= (100, -1)
RETURNING test;
test
(101,0)
(1 row)
DROP TABLE test_updates.test_dummy;
/* cross-partition updates (& different tuple descs) */
TRUNCATE test_updates.test;
SET pg_pathman.enable_partitionrouter = ON;
SELECT , (select count() from pg_attribute where attrelid = partition) as columns
FROM pathman_partition_list
ORDER BY range_min::int, range_max::int;
parent | partition | parttype | expr | range_min | range_max | columns
-------------------+----------------------+----------+------+-----------+-----------+---------
test_updates.test | test_updates.test_1 | 2 | val | 1 | 11 | 9
test_updates.test | test_updates.test_2 | 2 | val | 11 | 21 | 9
test_updates.test | test_updates.test_3 | 2 | val | 21 | 31 | 9
test_updates.test | test_updates.test_4 | 2 | val | 31 | 41 | 9
test_updates.test | test_updates.test_5 | 2 | val | 41 | 51 | 9
test_updates.test | test_updates.test_6 | 2 | val | 51 | 61 | 9
test_updates.test | test_updates.test_7 | 2 | val | 61 | 71 | 9
test_updates.test | test_updates.test_8 | 2 | val | 71 | 81 | 9
test_updates.test | test_updates.test_9 | 2 | val | 81 | 91 | 9
test_updates.test | test_updates.test_10 | 2 | val | 91 | 101 | 9
test_updates.test | test_updates.test_11 | 2 | val | 101 | 111 | 8
(11 rows)
INSERT INTO test_updates.test VALUES (105, 105);
UPDATE test_updates.test SET val = 106 WHERE val = 105 RETURNING *, tableoid::REGCLASS;
val | b | tableoid
-----+-----+----------------------
106 | 105 | test_updates.test_11
(1 row)
UPDATE test_updates.test SET val = 115 WHERE val = 106 RETURNING *, tableoid::REGCLASS;
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
connection to server was lost
Environment
postgres=# SELECT * FROM pg_extension
postgres-# ;
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+------------+----------+--------------+----------------+------------+---------------+--------------
13579 | plpgsql | 10 | 11 | f | 1.0 | |
16384 | pg_pathman | 10 | 2200 | f | 1.5 | {16386,16397} | {"",""}
(2 rows)
postgres=# SELECT version();
version
PostgreSQL 12.7 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 row)
The text was updated successfully, but these errors were encountered: