Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6a60886

Browse files
committed
Fix handling of append_rel_array.
Also a bunch of other stuff noted by@funbringer.
1 parent389c807 commit6a60886

File tree

7 files changed

+66
-28
lines changed

7 files changed

+66
-28
lines changed

‎src/compat/pg_compat.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,8 @@ create_plain_partial_paths(PlannerInfo *root, RelOptInfo *rel)
4848
{
4949
intparallel_workers;
5050

51-
#ifPG_VERSION_NUM >=110000
52-
parallel_workers=compute_parallel_worker(rel,rel->pages,-1,
53-
max_parallel_workers_per_gather);
54-
#else
55-
parallel_workers=compute_parallel_worker(rel,rel->pages,-1);
56-
#endif
51+
/* no more than max_parallel_workers_per_gather since 11 */
52+
parallel_workers=compute_parallel_worker_compat(rel,rel->pages,-1);
5753

5854
/* If any limit was set to zero, the user doesn't want a parallel scan. */
5955
if (parallel_workers <=0)

‎src/hooks.c

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,17 @@ pathman_rel_pathlist_hook(PlannerInfo *root,
477477
memset((void*)&root->simple_rte_array[current_len],0,
478478
irange_len*sizeof(RangeTblEntry*));
479479

480+
#ifPG_VERSION_NUM >=110000
481+
/* Make sure append_rel_array is wide enough */
482+
if (root->append_rel_array==NULL)
483+
root->append_rel_array= (AppendRelInfo**)palloc0(0);
484+
root->append_rel_array= (AppendRelInfo**)
485+
repalloc(root->append_rel_array,
486+
new_len*sizeof(AppendRelInfo*));
487+
memset((void*)&root->append_rel_array[current_len],0,
488+
irange_len*sizeof(AppendRelInfo*));
489+
#endif
490+
480491
/* Don't forget to update array size! */
481492
root->simple_rel_array_size=new_len;
482493
}
@@ -485,7 +496,7 @@ pathman_rel_pathlist_hook(PlannerInfo *root,
485496
parent_rel=heap_open(rte->relid,NoLock);
486497

487498
parent_rowmark=get_plan_rowmark(root->rowMarks,rti);
488-
499+
489500
/* Add parent if asked to */
490501
if (prel->enable_parent)
491502
append_child_relation(root,parent_rel,parent_rowmark,
@@ -514,21 +525,12 @@ pathman_rel_pathlist_hook(PlannerInfo *root,
514525
rel->partial_pathlist=NIL;
515526
#endif
516527

517-
/* Convert list to array for faster lookups */
518-
#ifPG_VERSION_NUM >=110000
519-
setup_append_rel_array(root);
520-
#endif
521-
522528
/* Generate new paths using the rels we've just added */
523529
set_append_rel_pathlist(root,rel,rti,pathkeyAsc,pathkeyDesc);
524530
set_append_rel_size_compat(root,rel,rti);
525531

526-
/* consider gathering partial paths for the parent appendrel */
527-
#ifPG_VERSION_NUM >=110000
528-
generate_gather_paths(root,rel, false);
529-
#elifPG_VERSION_NUM >=90600
530-
generate_gather_paths(root,rel);
531-
#endif
532+
/* consider gathering partial paths for the parent appendrel */
533+
generate_gather_paths_compat(root,rel);
532534

533535
/* Skip if both custom nodes are disabled */
534536
if (!(pg_pathman_enable_runtimeappend||

‎src/include/compat/pg_compat.h

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,45 @@ extern AttrNumber *convert_tuples_by_name_map(TupleDesc indesc,
787787
heap_delete((relation), (tid), (cid), (crosscheck), (wait), (hufd))
788788
#endif
789789

790+
/*
791+
* compute_parallel_worker
792+
*/
793+
#ifPG_VERSION_NUM >=110000
794+
#definecompute_parallel_worker_compat(rel,heap_pages,index_pages) \
795+
compute_parallel_worker((rel), (heap_pages), (index_pages), \
796+
max_parallel_workers_per_gather)
797+
#elifPG_VERSION_NUM >=100000
798+
#definecompute_parallel_worker_compat(rel,heap_pages,index_pages) \
799+
compute_parallel_worker((rel), (heap_pages), (index_pages))
800+
#endif
801+
802+
803+
/*
804+
* generate_gather_paths
805+
*/
806+
#ifPG_VERSION_NUM >=110000
807+
#definegenerate_gather_paths_compat(root,rel) \
808+
generate_gather_paths((root), (rel), false)
809+
#elifPG_VERSION_NUM >=90600
810+
#definegenerate_gather_paths_compat(root,rel) \
811+
generate_gather_paths((rel), (heap_pages), false)
812+
#else
813+
#definegenerate_gather_paths_compat(root,rel)
814+
#endif
815+
816+
817+
/*
818+
* handling appendrelinfo array
819+
*/
820+
#ifPG_VERSION_NUM >=110000
821+
#definefind_childrel_appendrelinfo_compat(root,rel) \
822+
((root)->append_rel_array[(rel)->relid])
823+
#else
824+
#definefind_childrel_appendrelinfo_compat(root,rel) \
825+
find_childrel_appendrelinfo((root), (rel))
826+
#endif
827+
828+
790829
/*
791830
* -------------
792831
* Common code

‎src/init.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@
2525
#include"catalog/indexing.h"
2626
#include"catalog/pg_extension.h"
2727
#include"catalog/pg_inherits.h"
28-
#ifPG_VERSION_NUM<110000
29-
#include"catalog/pg_inherits_fn.h"
30-
#endif
3128
#include"catalog/pg_type.h"
3229
#include"miscadmin.h"
3330
#include"optimizer/clauses.h"
@@ -39,6 +36,9 @@
3936
#include"utils/snapmgr.h"
4037
#include"utils/syscache.h"
4138
#include"utils/typcache.h"
39+
#ifPG_VERSION_NUM<110000
40+
#include"catalog/pg_inherits_fn.h"
41+
#endif
4242

4343
#include<stdlib.h>
4444

‎src/nodes_common.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -569,11 +569,9 @@ create_append_plan_common(PlannerInfo *root, RelOptInfo *rel,
569569
{
570570
Plan*child_plan= (Plan*)lfirst(lc2);
571571
RelOptInfo*child_rel= ((Path*)lfirst(lc1))->parent;
572-
#ifPG_VERSION_NUM >=110000
573-
AppendRelInfo*appinfo=root->append_rel_array[child_rel->relid];
574-
#else
575-
AppendRelInfo*appinfo=find_childrel_appendrelinfo(root,child_rel);
576-
#endif
572+
AppendRelInfo*appinfo;
573+
574+
appinfo=find_childrel_appendrelinfo_compat(root,child_rel);
577575

578576
/* Replace rel's tlist with a matching one (for ExecQual()) */
579577
if (!processed_rel_tlist)

‎src/pathman_workers.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,6 @@ bgw_main_concurrent_part(Datum main_arg)
483483

484484
Oidtypes[2]= {OIDOID,INT4OID };
485485
Datumvals[2]= {part_slot->relid,part_slot->batch_size };
486-
charnulls[2]= { false,false };
487486

488487
boolrel_locked= false;
489488

@@ -557,7 +556,7 @@ bgw_main_concurrent_part(Datum main_arg)
557556
}
558557

559558
/* Call concurrent partitioning function */
560-
ret=SPI_execute_with_args(sql,2,types,vals,nulls, false,0);
559+
ret=SPI_execute_with_args(sql,2,types,vals,NULL, false,0);
561560
if (ret==SPI_OK_SELECT)
562561
{
563562
TupleDesctupdesc=SPI_tuptable->tupdesc;

‎src/pg_pathman.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,10 @@ append_child_relation(PlannerInfo *root,
535535

536536
/* Now append 'appinfo' to 'root->append_rel_list' */
537537
root->append_rel_list=lappend(root->append_rel_list,appinfo);
538+
/* And to array in >= 11, it must be big enough */
539+
#ifPG_VERSION_NUM >=110000
540+
root->append_rel_array[child_rti]=appinfo;
541+
#endif
538542

539543
/* Translate column privileges for this child */
540544
if (parent_rte->relid!=child_oid)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp