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

Commitdc5aeca

Browse files
committed
Remove unnecessary "head" arguments from some dlist/slist functions.
dlist_delete, dlist_insert_after, dlist_insert_before, slist_insert_afterdo not need access to the list header, and indeed insisting on that negatesone of the main advantages of a doubly-linked list.In consequence, revert addition of "cache_bucket" field to CatCTup.
1 parent8f8d746 commitdc5aeca

File tree

5 files changed

+27
-48
lines changed

5 files changed

+27
-48
lines changed

‎src/backend/postmaster/autovacuum.c

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,6 @@ AutoVacLauncherMain(int argc, char *argv[])
580580
structtimevalnap;
581581
TimestampTzcurrent_time=0;
582582
boolcan_launch;
583-
avl_dbase*avdb;
584583
intrc;
585584

586585
/*
@@ -725,7 +724,8 @@ AutoVacLauncherMain(int argc, char *argv[])
725724
worker->wi_tableoid=InvalidOid;
726725
worker->wi_proc=NULL;
727726
worker->wi_launchtime=0;
728-
dlist_push_head(&AutoVacuumShmem->av_freeWorkers,&worker->wi_links);
727+
dlist_push_head(&AutoVacuumShmem->av_freeWorkers,
728+
&worker->wi_links);
729729
AutoVacuumShmem->av_startingWorker=NULL;
730730
elog(WARNING,"worker took too long to start; canceled");
731731
}
@@ -760,6 +760,8 @@ AutoVacLauncherMain(int argc, char *argv[])
760760
* distant adl_next_worker first, we obtain our database from the
761761
* tail of the list.
762762
*/
763+
avl_dbase*avdb;
764+
763765
avdb=dlist_tail_element(avl_dbase,adl_node,&DatabaseList);
764766

765767
/*
@@ -790,8 +792,6 @@ AutoVacLauncherMain(int argc, char *argv[])
790792
staticvoid
791793
launcher_determine_sleep(boolcanlaunch,boolrecursing,structtimeval*nap)
792794
{
793-
avl_dbase*avdb;
794-
795795
/*
796796
* We sleep until the next scheduled vacuum. We trust that when the
797797
* database list was built, care was taken so that no entries have times
@@ -807,6 +807,7 @@ launcher_determine_sleep(bool canlaunch, bool recursing, struct timeval * nap)
807807
{
808808
TimestampTzcurrent_time=GetCurrentTimestamp();
809809
TimestampTznext_wakeup;
810+
avl_dbase*avdb;
810811
longsecs;
811812
intusecs;
812813

@@ -1677,15 +1678,16 @@ FreeWorkerInfo(int code, Datum arg)
16771678
*/
16781679
AutovacuumLauncherPid=AutoVacuumShmem->av_launcherpid;
16791680

1680-
dlist_delete(&AutoVacuumShmem->av_runningWorkers,&MyWorkerInfo->wi_links);
1681+
dlist_delete(&MyWorkerInfo->wi_links);
16811682
MyWorkerInfo->wi_dboid=InvalidOid;
16821683
MyWorkerInfo->wi_tableoid=InvalidOid;
16831684
MyWorkerInfo->wi_proc=NULL;
16841685
MyWorkerInfo->wi_launchtime=0;
16851686
MyWorkerInfo->wi_cost_delay=0;
16861687
MyWorkerInfo->wi_cost_limit=0;
16871688
MyWorkerInfo->wi_cost_limit_base=0;
1688-
dlist_push_head(&AutoVacuumShmem->av_freeWorkers,&MyWorkerInfo->wi_links);
1689+
dlist_push_head(&AutoVacuumShmem->av_freeWorkers,
1690+
&MyWorkerInfo->wi_links);
16891691
/* not mine anymore */
16901692
MyWorkerInfo=NULL;
16911693

@@ -2863,7 +2865,8 @@ AutoVacuumShmemInit(void)
28632865

28642866
/* initialize the WorkerInfo free list */
28652867
for (i=0;i<autovacuum_max_workers;i++)
2866-
dlist_push_head(&AutoVacuumShmem->av_freeWorkers,&worker[i].wi_links);
2868+
dlist_push_head(&AutoVacuumShmem->av_freeWorkers,
2869+
&worker[i].wi_links);
28672870
}
28682871
else
28692872
Assert(found);

‎src/backend/postmaster/postmaster.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2696,7 +2696,7 @@ CleanupBackend(int pid,
26962696
ShmemBackendArrayRemove(bp);
26972697
#endif
26982698
}
2699-
dlist_delete(&BackendList,iter.cur);
2699+
dlist_delete(iter.cur);
27002700
free(bp);
27012701
break;
27022702
}
@@ -2744,7 +2744,7 @@ HandleChildCrash(int pid, int exitstatus, const char *procname)
27442744
ShmemBackendArrayRemove(bp);
27452745
#endif
27462746
}
2747-
dlist_delete(&BackendList,iter.cur);
2747+
dlist_delete(iter.cur);
27482748
free(bp);
27492749
/* Keep looping so we can signal remaining backends */
27502750
}

‎src/backend/utils/cache/catcache.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ CatCacheRemoveCTup(CatCache *cache, CatCTup *ct)
370370
return;/* nothing left to do */
371371
}
372372

373-
dlist_delete(ct->cache_bucket,&ct->cache_elem);
373+
dlist_delete(&ct->cache_elem);
374374

375375
/* free associated tuple data */
376376
if (ct->tuple.t_data!=NULL)
@@ -413,7 +413,7 @@ CatCacheRemoveCList(CatCache *cache, CatCList *cl)
413413
}
414414

415415
/* delink from linked list */
416-
dlist_delete(&cache->cc_lists,&cl->cache_elem);
416+
dlist_delete(&cl->cache_elem);
417417

418418
/* free associated tuple data */
419419
if (cl->tuple.t_data!=NULL)
@@ -1664,15 +1664,13 @@ CatalogCacheCreateEntry(CatCache *cache, HeapTuple ntp,
16641664
*/
16651665
ct->ct_magic=CT_MAGIC;
16661666
ct->my_cache=cache;
1667-
ct->cache_bucket=&cache->cc_bucket[hashIndex];
1668-
16691667
ct->c_list=NULL;
16701668
ct->refcount=0;/* for the moment */
16711669
ct->dead= false;
16721670
ct->negative=negative;
16731671
ct->hash_value=hashValue;
16741672

1675-
dlist_push_head(ct->cache_bucket,&ct->cache_elem);
1673+
dlist_push_head(&cache->cc_bucket[hashIndex],&ct->cache_elem);
16761674

16771675
cache->cc_ntup++;
16781676
CacheHdr->ch_ntup++;

‎src/include/lib/ilist.h

Lines changed: 12 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
*continue;// don't touch this one
9090
*
9191
*// unlink the current table from the linked list
92-
*dlist_delete(&db->tables,miter.cur);
92+
*dlist_delete(miter.cur);
9393
*// as these lists never manage memory, we can still access the table
9494
*// after it's been unlinked
9595
*drop_table(db, tbl);
@@ -271,11 +271,9 @@ extern void dlist_init(dlist_head *head);
271271
externbooldlist_is_empty(dlist_head*head);
272272
externvoiddlist_push_head(dlist_head*head,dlist_node*node);
273273
externvoiddlist_push_tail(dlist_head*head,dlist_node*node);
274-
externvoiddlist_insert_after(dlist_head*head,
275-
dlist_node*after,dlist_node*node);
276-
externvoiddlist_insert_before(dlist_head*head,
277-
dlist_node*before,dlist_node*node);
278-
externvoiddlist_delete(dlist_head*head,dlist_node*node);
274+
externvoiddlist_insert_after(dlist_node*after,dlist_node*node);
275+
externvoiddlist_insert_before(dlist_node*before,dlist_node*node);
276+
externvoiddlist_delete(dlist_node*node);
279277
externdlist_node*dlist_pop_head_node(dlist_head*head);
280278
externvoiddlist_move_head(dlist_head*head,dlist_node*node);
281279
externbooldlist_has_next(dlist_head*head,dlist_node*node);
@@ -352,50 +350,34 @@ dlist_push_tail(dlist_head *head, dlist_node *node)
352350
* Insert a node after another *in the same list*
353351
*/
354352
STATIC_IF_INLINEvoid
355-
dlist_insert_after(dlist_head*head,dlist_node*after,dlist_node*node)
353+
dlist_insert_after(dlist_node*after,dlist_node*node)
356354
{
357-
dlist_check(head);
358-
/* XXX: assert 'after' is in 'head'? */
359-
360355
node->prev=after;
361356
node->next=after->next;
362357
after->next=node;
363358
node->next->prev=node;
364-
365-
dlist_check(head);
366359
}
367360

368361
/*
369362
* Insert a node before another *in the same list*
370363
*/
371364
STATIC_IF_INLINEvoid
372-
dlist_insert_before(dlist_head*head,dlist_node*before,dlist_node*node)
365+
dlist_insert_before(dlist_node*before,dlist_node*node)
373366
{
374-
dlist_check(head);
375-
/* XXX: assert 'before' is in 'head'? */
376-
377367
node->prev=before->prev;
378368
node->next=before;
379369
before->prev=node;
380370
node->prev->next=node;
381-
382-
dlist_check(head);
383371
}
384372

385373
/*
386-
* Delete 'node' from list.
387-
*
388-
* It is not allowed to delete a 'node' which is is not in the list 'head'
374+
* Delete 'node' from its list (it must be in one).
389375
*/
390376
STATIC_IF_INLINEvoid
391-
dlist_delete(dlist_head*head,dlist_node*node)
377+
dlist_delete(dlist_node*node)
392378
{
393-
dlist_check(head);
394-
395379
node->prev->next=node->next;
396380
node->next->prev=node->prev;
397-
398-
dlist_check(head);
399381
}
400382

401383
/*
@@ -408,7 +390,7 @@ dlist_pop_head_node(dlist_head *head)
408390

409391
Assert(!dlist_is_empty(head));
410392
node=head->head.next;
411-
dlist_delete(head,node);
393+
dlist_delete(node);
412394
returnnode;
413395
}
414396

@@ -425,7 +407,7 @@ dlist_move_head(dlist_head *head, dlist_node *node)
425407
if (head->head.next==node)
426408
return;
427409

428-
dlist_delete(head,node);
410+
dlist_delete(node);
429411
dlist_push_head(head,node);
430412

431413
dlist_check(head);
@@ -591,8 +573,7 @@ dlist_tail_node(dlist_head *head)
591573
externvoidslist_init(slist_head*head);
592574
externboolslist_is_empty(slist_head*head);
593575
externvoidslist_push_head(slist_head*head,slist_node*node);
594-
externvoidslist_insert_after(slist_head*head,
595-
slist_node*after,slist_node*node);
576+
externvoidslist_insert_after(slist_node*after,slist_node*node);
596577
externslist_node*slist_pop_head_node(slist_head*head);
597578
externboolslist_has_next(slist_head*head,slist_node*node);
598579
externslist_node*slist_next_node(slist_head*head,slist_node*node);
@@ -640,12 +621,10 @@ slist_push_head(slist_head *head, slist_node *node)
640621
* Insert a node after another *in the same list*
641622
*/
642623
STATIC_IF_INLINEvoid
643-
slist_insert_after(slist_head*head,slist_node*after,slist_node*node)
624+
slist_insert_after(slist_node*after,slist_node*node)
644625
{
645626
node->next=after->next;
646627
after->next=node;
647-
648-
slist_check(head);
649628
}
650629

651630
/*

‎src/include/utils/catcache.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ typedef struct catctup
8282
* lookups.
8383
*/
8484
dlist_nodecache_elem;/* list member of per-bucket list */
85-
dlist_head*cache_bucket;/* containing bucket dlist */
8685

8786
/*
8887
* The tuple may also be a member of at most one CatCList.(If a single

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp