Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
617dd33b
Commit
617dd33b
authored
Mar 27, 2005
by
Tom Lane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Eliminate duplicate hasnulls bit testing in index tuple access, and
clean up itup.h a little bit.
parent
926e8a00
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
33 additions
and
64 deletions
+33
-64
src/backend/access/common/indextuple.c
src/backend/access/common/indextuple.c
+4
-5
src/include/access/ibit.h
src/include/access/ibit.h
+0
-32
src/include/access/itup.h
src/include/access/itup.h
+29
-27
No files found.
src/backend/access/common/indextuple.c
View file @
617dd33b
...
...
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/access/common/indextuple.c,v 1.7
3 2005/03/21 01:23:55
tgl Exp $
* $PostgreSQL: pgsql/src/backend/access/common/indextuple.c,v 1.7
4 2005/03/27 18:38:26
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -137,7 +137,7 @@ index_form_tuple(TupleDesc tupleDescriptor,
isnull
,
(
char
*
)
tp
+
hoff
,
&
tupmask
,
(
hasnull
?
(
bits8
*
)
tp
+
sizeof
(
*
tuple
)
:
NULL
));
(
hasnull
?
(
bits8
*
)
tp
+
sizeof
(
IndexTupleData
)
:
NULL
));
#ifdef TOAST_INDEX_HACK
for
(
i
=
0
;
i
<
numberOfAttributes
;
i
++
)
...
...
@@ -230,8 +230,7 @@ nocache_index_getattr(IndexTuple tup,
*
isnull
=
false
;
#endif
data_off
=
IndexTupleHasMinHeader
(
tup
)
?
sizeof
*
tup
:
IndexInfoFindDataOffset
(
tup
->
t_info
);
data_off
=
IndexInfoFindDataOffset
(
tup
->
t_info
);
attnum
--
;
...
...
@@ -256,7 +255,7 @@ nocache_index_getattr(IndexTuple tup,
*/
/* XXX "knows" t_bits are just after fixed tuple header! */
bp
=
(
bits8
*
)
((
char
*
)
tup
+
sizeof
(
*
tup
));
bp
=
(
bits8
*
)
((
char
*
)
tup
+
sizeof
(
IndexTupleData
));
#ifdef IN_MACRO
/* This is handled in the macro */
...
...
src/include/access/ibit.h
deleted
100644 → 0
View file @
926e8a00
/*-------------------------------------------------------------------------
*
* ibit.h
* POSTGRES index valid attribute bit map definitions.
*
*
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/access/ibit.h,v 1.23 2004/12/31 22:03:21 pgsql Exp $
*
*-------------------------------------------------------------------------
*/
#ifndef IBIT_H
#define IBIT_H
typedef
struct
IndexAttributeBitMapData
{
bits8
bits
[(
INDEX_MAX_KEYS
+
8
-
1
)
/
8
];
}
IndexAttributeBitMapData
;
typedef
IndexAttributeBitMapData
*
IndexAttributeBitMap
;
#define IndexAttributeBitMapSize sizeof(IndexAttributeBitMapData)
/*
* IndexAttributeBitMapIsValid
* True iff attribute bit map is valid.
*/
#define IndexAttributeBitMapIsValid(bits) PointerIsValid(bits)
#endif
/* IBIT_H */
src/include/access/itup.h
View file @
617dd33b
...
...
@@ -7,19 +7,31 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/access/itup.h,v 1.4
2 2005/03/21 01:24:04
tgl Exp $
* $PostgreSQL: pgsql/src/include/access/itup.h,v 1.4
3 2005/03/27 18:38:27
tgl Exp $
*
*-------------------------------------------------------------------------
*/
#ifndef ITUP_H
#define ITUP_H
#include "access/ibit.h"
#include "access/tupdesc.h"
#include "access/tupmacs.h"
#include "storage/itemptr.h"
/*
* Index tuple header structure
*
* All index tuples start with IndexTupleData. If the HasNulls bit is set,
* this is followed by an IndexAttributeBitMapData. The index attribute
* values follow, beginning at a MAXALIGN boundary.
*
* Note that the space allocated for the bitmap does not vary with the number
* of attributes; that is because we don't have room to store the number of
* attributes in the header. Given the MAXALIGN constraint there's no space
* savings to be had anyway, for usual values of INDEX_MAX_KEYS.
*/
typedef
struct
IndexTupleData
{
ItemPointerData
t_tid
;
/* reference TID to heap tuple */
...
...
@@ -36,44 +48,40 @@ typedef struct IndexTupleData
unsigned
short
t_info
;
/* various info about tuple */
/*
* please make sure sizeof(IndexTupleData) is MAXALIGN'ed. See
* IndexInfoFindDataOffset() for the reason.
*/
}
IndexTupleData
;
/* MORE DATA FOLLOWS AT END OF STRUCT */
typedef
IndexTupleData
*
IndexTuple
;
typedef
struct
IndexAttributeBitMapData
{
bits8
bits
[(
INDEX_MAX_KEYS
+
8
-
1
)
/
8
];
}
IndexAttributeBitMapData
;
typedef
IndexAttributeBitMapData
*
IndexAttributeBitMap
;
/* ----------------
* externs
* ----------------
/*
* t_info manipulation macros
*/
#define INDEX_SIZE_MASK 0x1FFF
#define INDEX_NULL_MASK 0x8000
/* bit 0x2000 is not used at present */
#define INDEX_VAR_MASK 0x4000
/* bit 0x2000 is not used */
#define INDEX_NULL_MASK 0x8000
#define IndexTupleSize(itup) ((Size) (((IndexTuple) (itup))->t_info & INDEX_SIZE_MASK))
#define IndexTupleDSize(itup) ((Size) ((itup).t_info & INDEX_SIZE_MASK))
#define IndexTupleHasNulls(itup) ((((IndexTuple) (itup))->t_info & INDEX_NULL_MASK))
#define IndexTupleHasVarwidths(itup) ((((IndexTuple) (itup))->t_info & INDEX_VAR_MASK))
#define IndexTupleHasMinHeader(itup) (!IndexTupleHasNulls(itup))
/*
* Takes an infomask as argument (primarily because this needs to be usable
* at index_form_tuple time so enough space is allocated).
*
* Change me if adding an attribute to IndexTuples!!!!!!!!!!!
*/
#define IndexInfoFindDataOffset(t_info) \
( \
(!((
unsigned short)(
t_info) & INDEX_NULL_MASK)) ? \
(!((t_info) & INDEX_NULL_MASK)) ? \
( \
(Size)
sizeof(IndexTupleData
) \
(Size)
MAXALIGN(sizeof(IndexTupleData)
) \
) \
: \
( \
...
...
@@ -85,7 +93,7 @@ typedef IndexTupleData *IndexTuple;
* index_getattr
*
* This gets called many times, so we macro the cacheable and NULL
* lookups, and call no
ncache
getattr() for the rest.
* lookups, and call no
cache_index_
getattr() for the rest.
*
* ----------------
*/
...
...
@@ -98,13 +106,7 @@ typedef IndexTupleData *IndexTuple;
(tupleDesc)->attrs[(attnum)-1]->attcacheoff >= 0 ? \
( \
fetchatt((tupleDesc)->attrs[(attnum)-1], \
(char *) (tup) + \
( \
IndexTupleHasMinHeader(tup) ? \
sizeof (*(tup)) \
: \
IndexInfoFindDataOffset((tup)->t_info) \
) \
(char *) (tup) + IndexInfoFindDataOffset((tup)->t_info) \
+ (tupleDesc)->attrs[(attnum)-1]->attcacheoff) \
) \
: \
...
...
@@ -112,7 +114,7 @@ typedef IndexTupleData *IndexTuple;
) \
: \
( \
(att_isnull((attnum)-1, (char *)(tup) + sizeof(
*(tup)
))) ? \
(att_isnull((attnum)-1, (char *)(tup) + sizeof(
IndexTupleData
))) ? \
( \
*(isnull) = true, \
(Datum)NULL \
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment