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

Commitd2b3a4e

Browse files
author
Arseny Kositsyn
committed
[PGPRO-12159] Removed unnecessary copying from get_rel_page().
Tags: rum
1 parent0c009c8 commitd2b3a4e

File tree

1 file changed

+8
-28
lines changed

1 file changed

+8
-28
lines changed

‎src/rum_debug_funcs.c‎

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -340,9 +340,6 @@ get_rel_from_name(text *relName)
340340
staticPage
341341
get_rel_page(Relationrel,BlockNumberblkNo)
342342
{
343-
bytea*rawPage;
344-
char*rawPageData;
345-
intrawPageSize;
346343
Bufferbuf;
347344
Pagepage;
348345

@@ -352,35 +349,18 @@ get_rel_page(Relation rel, BlockNumber blkNo)
352349
errmsg("block number %u is out of range for relation \"%s\"",
353350
blkNo,RelationGetRelationName(rel))));
354351

355-
/* Initialize buffer to copy to */
356-
rawPage= (bytea*)palloc(BLCKSZ+VARHDRSZ);
357-
SET_VARSIZE(rawPage,BLCKSZ+VARHDRSZ);
358-
rawPageData=VARDATA(rawPage);
359-
360-
/* Take a verbatim copy of the page */
361352
buf=ReadBufferExtended(rel,MAIN_FORKNUM,blkNo,RBM_NORMAL,NULL);
362-
LockBuffer(buf,BUFFER_LOCK_SHARE);
363-
364-
memcpy(rawPageData,BufferGetPage(buf),BLCKSZ);
365-
366-
LockBuffer(buf,BUFFER_LOCK_UNLOCK);
367-
ReleaseBuffer(buf);
368-
369-
rawPageSize=VARSIZE_ANY_EXHDR(rawPage);
370-
371-
if (rawPageSize!=BLCKSZ)
353+
if (!BufferIsValid(buf))
372354
ereport(ERROR,
373355
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
374-
errmsg("invalid page size"),
375-
errdetail("Expected %d bytes, got %d.",
376-
BLCKSZ,rawPageSize)));
377-
378-
page=palloc(rawPageSize);
379-
380-
memcpy(page,VARDATA_ANY(rawPage),rawPageSize);
356+
errmsg("could not read block %u of relation \"%s\"",
357+
blkNo,RelationGetRelationName(rel))));
381358

382-
/* Cleaning the memory that raw_page occupies */
383-
pfree(rawPage);
359+
LockBuffer(buf,BUFFER_LOCK_SHARE);
360+
page= (Page)palloc(BLCKSZ);
361+
memcpy(page,BufferGetPage(buf),BLCKSZ);
362+
LockBuffer(buf,BUFFER_LOCK_UNLOCK);
363+
ReleaseBuffer(buf);
384364

385365
returnpage;
386366
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp