mirror of https://github.com/citusdata/citus.git
Fix assert crash execMain.c l603
/* * Only relation RTEs and subquery RTEs that were once relation * RTEs (views) have their perminfoindex set. */ Assert(rte->rtekind == RTE_RELATION || (rte->rtekind == RTE_SUBQUERY && rte->relkind == RELKIND_VIEW)); Scenario that was crashing because RTE_RELATION was converted to RTE_SUBQUERY: CREATE TABLE events_table_local(user_id bigint, value_1 int, value_2 int); INSERT INTO events_table_local SELECT i, i %9, i %50 FROM generate_series(0, 100) i; CREATE TABLE events_table_part(user_id bigint, value_1 int, value_2 int) PARTITION BY RANGE (value_1); CREATE TABLE events_table_part_0 PARTITION OF events_table_part FOR VALUES FROM (0) TO (1); CREATE TABLE events_table_part_1 PARTITION OF events_table_part FOR VALUES FROM (1) TO (2); CREATE TABLE events_table_part_2 PARTITION OF events_table_part FOR VALUES FROM (2) TO (3); CREATE TABLE events_table_part_3 PARTITION OF events_table_part FOR VALUES FROM (3) TO (4); CREATE TABLE events_table_part_4 PARTITION OF events_table_part FOR VALUES FROM (4) TO (5); CREATE TABLE events_table_part_5 PARTITION OF events_table_part FOR VALUES FROM (5) TO (6); CREATE TABLE events_table_part_6 PARTITION OF events_table_part FOR VALUES FROM (6) TO (7); CREATE TABLE events_table_part_7 PARTITION OF events_table_part FOR VALUES FROM (7) TO (8); CREATE TABLE events_table_part_8 PARTITION OF events_table_part FOR VALUES FROM (8) TO (9); SELECT create_distributed_table('events_table_part', 'user_id'); INSERT INTO events_table_part SELECT i, i %9, i %50 FROM generate_series(0, 100) i; CREATE TABLE users_table_part(user_id bigint, value_1 int, value_2 int) PARTITION BY RANGE (value_1); CREATE TABLE users_table_part_0 PARTITION OF users_table_part FOR VALUES FROM (0) TO (1); CREATE TABLE users_table_part_1 PARTITION OF users_table_part FOR VALUES FROM (1) TO (2); CREATE TABLE users_table_part_2 PARTITION OF users_table_part FOR VALUES FROM (2) TO (3); CREATE TABLE users_table_part_3 PARTITION OF users_table_part FOR VALUES FROM (3) TO (4); CREATE TABLE users_table_part_4 PARTITION OF users_table_part FOR VALUES FROM (4) TO (5); CREATE TABLE users_table_part_5 PARTITION OF users_table_part FOR VALUES FROM (5) TO (6); CREATE TABLE users_table_part_6 PARTITION OF users_table_part FOR VALUES FROM (6) TO (7); CREATE TABLE users_table_part_7 PARTITION OF users_table_part FOR VALUES FROM (7) TO (8); CREATE TABLE users_table_part_8 PARTITION OF users_table_part FOR VALUES FROM (8) TO (9); SELECT create_distributed_table('users_table_part', 'user_id'); INSERT INTO users_table_part SELECT i, i %9, i %50 FROM generate_series(0, 100) i; SELECT * FROM (SELECT * FROM events_table_local UNION ALL SELECT events_table_local.* FROM events_table_part JOIN events_table_local USING(user_id)) AS foo JOIN users_table_part USING(user_id) LIMIT 1; $$);naisila/check_router_fix
parent
1cc885f1ef
commit
06e9ea4027
|
@ -1780,6 +1780,9 @@ ReplaceRTERelationWithRteSubquery(RangeTblEntry *rangeTableEntry,
|
|||
|
||||
/* replace the function with the constructed subquery */
|
||||
rangeTableEntry->rtekind = RTE_SUBQUERY;
|
||||
#if PG_VERSION_NUM >= PG_VERSION_16
|
||||
rangeTableEntry->perminfoindex = 0;
|
||||
#endif
|
||||
rangeTableEntry->subquery = subquery;
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue