Skip to content

Commit 6177a5b

Browse files
author
Artur Zakirov
committed
rum module is compiled
1 parent 8e42d5a commit 6177a5b

File tree

12 files changed

+4489
-1332
lines changed

12 files changed

+4489
-1332
lines changed

Makefile

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
# contrib/rum/Makefile
22

33
MODULE_big = rum
4-
OBJS = ginarrayproc.o ginbtree.o ginbulk.o gindatapage.o \
4+
OBJS = ginsort.o \
5+
ginarrayproc.o ginbtree.o ginbulk.o gindatapage.o \
56
ginentrypage.o ginfast.o ginget.o gininsert.o \
6-
ginscan.o ginutil.o ginvacuum.o ginxlog.o $(WIN32RES)
7+
ginscan.o ginutil.o ginvacuum.o $(WIN32RES)
78

89
EXTENSION = rum
910
DATA = rum--1.0.sql

gindatapage.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -739,6 +739,7 @@ dataPlaceToPage(GinBtree btree, Buffer buf, OffsetNumber off, XLogRecData **prda
739739
rdata[0].data = NULL;
740740
rdata[0].len = 0;
741741
rdata[0].next = &rdata[1];
742+
XLogBeginInsert();
742743

743744
rdata[1].buffer = InvalidBuffer;
744745
rdata[1].data = (char *) &data;
@@ -747,13 +748,15 @@ dataPlaceToPage(GinBtree btree, Buffer buf, OffsetNumber off, XLogRecData **prda
747748

748749
if (GinPageIsLeaf(page))
749750
{
750-
int i = 0, j, max_j;
751-
Pointer ptr = GinDataPageGetData(page), copy_ptr, insertStart;
751+
int i = 0, j, max_j;
752+
Pointer ptr = GinDataPageGetData(page),
753+
copy_ptr = NULL,
754+
insertStart;
752755
ItemPointerData iptr = {{0,0},0}, copy_iptr;
753-
char pageCopy[BLCKSZ];
754-
Datum addInfo = 0;
755-
bool addInfoIsNull = false;
756-
int maxoff = GinPageGetOpaque(page)->maxoff;
756+
char pageCopy[BLCKSZ];
757+
Datum addInfo = 0;
758+
bool addInfoIsNull = false;
759+
int maxoff = GinPageGetOpaque(page)->maxoff;
757760

758761
/*
759762
* We're going to prevent var-byte re-encoding of whole page.

ginfast.c

Lines changed: 59 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -107,30 +107,30 @@ writeListPage(Relation index, Buffer buffer,
107107

108108
MarkBufferDirty(buffer);
109109

110-
if (RelationNeedsWAL(index))
111-
{
112-
XLogRecData rdata[2];
113-
ginxlogInsertListPage data;
114-
XLogRecPtr recptr;
115-
116-
data.node = index->rd_node;
117-
data.blkno = BufferGetBlockNumber(buffer);
118-
data.rightlink = rightlink;
119-
data.ntuples = ntuples;
120-
121-
rdata[0].buffer = InvalidBuffer;
122-
rdata[0].data = (char *) &data;
123-
rdata[0].len = sizeof(ginxlogInsertListPage);
124-
rdata[0].next = rdata + 1;
125-
126-
rdata[1].buffer = InvalidBuffer;
127-
rdata[1].data = workspace;
128-
rdata[1].len = size;
129-
rdata[1].next = NULL;
130-
131-
recptr = XLogInsert(RM_GIN_ID, XLOG_GIN_INSERT_LISTPAGE, rdata);
132-
PageSetLSN(page, recptr);
133-
}
110+
// if (RelationNeedsWAL(index))
111+
// {
112+
// XLogRecData rdata[2];
113+
// ginxlogInsertListPage data;
114+
// XLogRecPtr recptr;
115+
//
116+
// data.node = index->rd_node;
117+
// data.blkno = BufferGetBlockNumber(buffer);
118+
// data.rightlink = rightlink;
119+
// data.ntuples = ntuples;
120+
//
121+
// rdata[0].buffer = InvalidBuffer;
122+
// rdata[0].data = (char *) &data;
123+
// rdata[0].len = sizeof(ginxlogInsertListPage);
124+
// rdata[0].next = rdata + 1;
125+
//
126+
// rdata[1].buffer = InvalidBuffer;
127+
// rdata[1].data = workspace;
128+
// rdata[1].len = size;
129+
// rdata[1].next = NULL;
130+
//
131+
// recptr = XLogInsert(RM_GIN_ID, XLOG_GIN_INSERT_LISTPAGE, rdata);
132+
// PageSetLSN(page, recptr);
133+
// }
134134

135135
/* get free space before releasing buffer */
136136
freesize = PageGetExactFreeSpace(page);
@@ -402,20 +402,20 @@ ginHeapTupleFastInsert(GinState *ginstate, GinTupleCollector *collector)
402402
*/
403403
MarkBufferDirty(metabuffer);
404404

405-
if (RelationNeedsWAL(index))
406-
{
407-
XLogRecPtr recptr;
408-
409-
memcpy(&data.metadata, metadata, sizeof(GinMetaPageData));
410-
411-
recptr = XLogInsert(RM_GIN_ID, XLOG_GIN_UPDATE_META_PAGE, rdata);
412-
PageSetLSN(metapage, recptr);
413-
414-
if (buffer != InvalidBuffer)
415-
{
416-
PageSetLSN(page, recptr);
417-
}
418-
}
405+
// if (RelationNeedsWAL(index))
406+
// {
407+
// XLogRecPtr recptr;
408+
//
409+
// memcpy(&data.metadata, metadata, sizeof(GinMetaPageData));
410+
//
411+
// recptr = XLogInsert(RM_GIN_ID, XLOG_GIN_UPDATE_META_PAGE, rdata);
412+
// PageSetLSN(metapage, recptr);
413+
//
414+
// if (buffer != InvalidBuffer)
415+
// {
416+
// PageSetLSN(page, recptr);
417+
// }
418+
// }
419419

420420
if (buffer != InvalidBuffer)
421421
UnlockReleaseBuffer(buffer);
@@ -614,15 +614,15 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
614614
int i;
615615
int64 nDeletedHeapTuples = 0;
616616
ginxlogDeleteListPages data;
617-
XLogRecData rdata[1];
617+
// XLogRecData rdata[1];
618618
Buffer buffers[GIN_NDELETE_AT_ONCE];
619619

620620
data.node = index->rd_node;
621621

622-
rdata[0].buffer = InvalidBuffer;
623-
rdata[0].data = (char *) &data;
624-
rdata[0].len = sizeof(ginxlogDeleteListPages);
625-
rdata[0].next = NULL;
622+
// rdata[0].buffer = InvalidBuffer;
623+
// rdata[0].data = (char *) &data;
624+
// rdata[0].len = sizeof(ginxlogDeleteListPages);
625+
// rdata[0].next = NULL;
626626

627627
data.ndeleted = 0;
628628
while (data.ndeleted < GIN_NDELETE_AT_ONCE && blknoToDelete != newHead)
@@ -677,22 +677,22 @@ shiftList(Relation index, Buffer metabuffer, BlockNumber newHead,
677677
MarkBufferDirty(buffers[i]);
678678
}
679679

680-
if (RelationNeedsWAL(index))
681-
{
682-
XLogRecPtr recptr;
683-
684-
memcpy(&data.metadata, metadata, sizeof(GinMetaPageData));
685-
686-
recptr = XLogInsert(RM_GIN_ID, XLOG_GIN_DELETE_LISTPAGE, rdata);
687-
PageSetLSN(metapage, recptr);
688-
689-
for (i = 0; i < data.ndeleted; i++)
690-
{
691-
page = BufferGetPage(buffers[i], NULL, NULL,
692-
BGP_NO_SNAPSHOT_TEST);
693-
PageSetLSN(page, recptr);
694-
}
695-
}
680+
// if (RelationNeedsWAL(index))
681+
// {
682+
// XLogRecPtr recptr;
683+
//
684+
// memcpy(&data.metadata, metadata, sizeof(GinMetaPageData));
685+
//
686+
// recptr = XLogInsert(RM_GIN_ID, XLOG_GIN_DELETE_LISTPAGE, rdata);
687+
// PageSetLSN(metapage, recptr);
688+
//
689+
// for (i = 0; i < data.ndeleted; i++)
690+
// {
691+
// page = BufferGetPage(buffers[i], NULL, NULL,
692+
// BGP_NO_SNAPSHOT_TEST);
693+
// PageSetLSN(page, recptr);
694+
// }
695+
// }
696696

697697
for (i = 0; i < data.ndeleted; i++)
698698
UnlockReleaseBuffer(buffers[i]);

ginget.c

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
*/
1414

1515
#include "postgres.h"
16+
#include "ginsort.h"
1617

1718
#include "access/relscan.h"
1819
#include "miscadmin.h"
@@ -1513,7 +1514,6 @@ scanGetItemFast(IndexScanDesc scan, ItemPointer advancePast,
15131514
for (i = 0; i < so->nkeys; i++)
15141515
{
15151516
GinScanKey key = so->keys + i;
1516-
ItemPointer iptr;
15171517

15181518
if (key->orderBy)
15191519
continue;
@@ -1536,7 +1536,6 @@ scanGetItemFast(IndexScanDesc scan, ItemPointer advancePast,
15361536
key->addInfoIsNull[j] = true;
15371537
}
15381538
}
1539-
iptr = &so->sortedEntries[so->totalentries - 1]->curItem;
15401539
if (!callConsistentFn(&so->ginstate, key))
15411540
{
15421541
consistentFalse = true;
@@ -2074,11 +2073,9 @@ scanPendingInsert(IndexScanDesc scan)
20742073
#define GinIsNewKey(s) ( ((GinScanOpaque) scan->opaque)->keys == NULL )
20752074
#define GinIsVoidRes(s) ( ((GinScanOpaque) scan->opaque)->isVoidRes )
20762075

2077-
Datum
2078-
gingetbitmap(PG_FUNCTION_ARGS)
2076+
int64
2077+
gingetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
20792078
{
2080-
IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0);
2081-
TIDBitmap *tbm = (TIDBitmap *) PG_GETARG_POINTER(1);
20822079
GinScanOpaque so = (GinScanOpaque)scan->opaque;
20832080
int64 ntids;
20842081
bool recheck;
@@ -2090,7 +2087,7 @@ gingetbitmap(PG_FUNCTION_ARGS)
20902087
ginNewScanKey(scan);
20912088

20922089
if (GinIsVoidRes(scan))
2093-
PG_RETURN_INT64(0);
2090+
return 0;
20942091

20952092
ntids = 0;
20962093

@@ -2127,7 +2124,7 @@ gingetbitmap(PG_FUNCTION_ARGS)
21272124
ntids++;
21282125
}
21292126

2130-
PG_RETURN_INT64(ntids);
2127+
return ntids;
21312128
}
21322129

21332130
static float8

0 commit comments

Comments
 (0)