projects
/
gevel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
56c12cb
)
Fix 8.3 support
author
teodor
<teodor>
Tue, 12 May 2009 10:04:13 +0000
(10:04 +0000)
committer
teodor
<teodor>
Tue, 12 May 2009 10:04:13 +0000
(10:04 +0000)
gevel.c
patch
|
blob
|
history
diff --git
a/gevel.c
b/gevel.c
index
2886c3d
..
d9d8397
100644
(file)
--- a/
gevel.c
+++ b/
gevel.c
@@
-710,11
+710,18
@@
Datum
gin_count_estimate(PG_FUNCTION_ARGS) {
text *name=PG_GETARG_TEXT_P(0);
Relation index;
gin_count_estimate(PG_FUNCTION_ARGS) {
text *name=PG_GETARG_TEXT_P(0);
Relation index;
- TIDBitmap *bitmap = tbm_create(work_mem * 1024L);
IndexScanDesc scan;
IndexScanDesc scan;
- int64 count;
+ int64 count
= 0
;
char *relname=t2c(name);
ScanKeyData key;
char *relname=t2c(name);
ScanKeyData key;
+#if PG_VERSION_NUM >= 80400
+ TIDBitmap *bitmap = tbm_create(work_mem * 1024L);
+#else
+#define MAXTIDS 1024
+ ItemPointerData tids[MAXTIDS];
+ int32 returned_tids;
+ bool more;
+#endif
index = gin_index_open(
makeRangeVarFromNameList(stringToQualifiedNameList(relname, "gin_count_estimate")));
index = gin_index_open(
makeRangeVarFromNameList(stringToQualifiedNameList(relname, "gin_count_estimate")));
@@
-732,15
+739,23
@@
gin_count_estimate(PG_FUNCTION_ARGS) {
fmgr_info( F_TS_MATCH_VQ , &key.sk_func );
fmgr_info( F_TS_MATCH_VQ , &key.sk_func );
+#if PG_VERSION_NUM >= 80400
scan = index_beginscan_bitmap(index, SnapshotNow, 1, &key);
count = index_getbitmap(scan, bitmap);
tbm_free(bitmap);
scan = index_beginscan_bitmap(index, SnapshotNow, 1, &key);
count = index_getbitmap(scan, bitmap);
tbm_free(bitmap);
+#else
+ scan = index_beginscan_multi(index, SnapshotNow, 1, &key);
+
+ do {
+ more = index_getmulti(scan, tids, MAXTIDS, &returned_tids);
+ count += returned_tids;
+ } while(more);
+#endif
index_endscan( scan );
gin_index_close(index);
index_endscan( scan );
gin_index_close(index);
-
PG_RETURN_INT64(count);
}
#else
PG_RETURN_INT64(count);
}
#else