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
4a700021
Commit
4a700021
authored
Aug 20, 1998
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix for index problem.
parent
31309423
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
69 additions
and
61 deletions
+69
-61
src/backend/access/heap/heapam.c
src/backend/access/heap/heapam.c
+19
-19
src/backend/catalog/heap.c
src/backend/catalog/heap.c
+22
-16
src/backend/catalog/index.c
src/backend/catalog/index.c
+11
-11
src/backend/catalog/indexing.c
src/backend/catalog/indexing.c
+3
-2
src/backend/catalog/pg_type.c
src/backend/catalog/pg_type.c
+4
-4
src/backend/commands/vacuum.c
src/backend/commands/vacuum.c
+2
-2
src/backend/executor/execUtils.c
src/backend/executor/execUtils.c
+2
-2
src/backend/utils/cache/inval.c
src/backend/utils/cache/inval.c
+2
-1
src/bin/initdb/initdb.sh
src/bin/initdb/initdb.sh
+4
-4
No files found.
src/backend/access/heap/heapam.c
View file @
4a700021
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.3
2 1998/08/19 02:01:05
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.3
3 1998/08/20 22:07:30
momjian Exp $
*
*
* INTERFACE ROUTINES
...
...
@@ -1274,10 +1274,10 @@ heap_delete(Relation relation, ItemPointer tid)
* ----------------
*/
int
heap_replace
(
Relation
relation
,
ItemPointer
otid
,
HeapTuple
tup
)
heap_replace
(
Relation
relation
,
ItemPointer
otid
,
HeapTuple
replace_tuple
)
{
ItemId
lp
;
HeapTuple
tp
;
HeapTuple
old_tuple
;
Page
dp
;
Buffer
buffer
;
HeapTuple
tuple
;
...
...
@@ -1319,8 +1319,8 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup)
* ----------------
*/
tp
=
(
HeapTuple
)
PageGetItem
(
dp
,
lp
);
Assert
(
HeapTupleIsValid
(
tp
));
old_tuple
=
(
HeapTuple
)
PageGetItem
(
dp
,
lp
);
Assert
(
HeapTupleIsValid
(
old_tuple
));
/* -----------------
* the following test should be able to catch all non-functional
...
...
@@ -1333,7 +1333,7 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup)
* -----------------
*/
if
(
TupleUpdatedByCurXactAndCmd
(
tp
))
if
(
TupleUpdatedByCurXactAndCmd
(
old_tuple
))
{
elog
(
NOTICE
,
"Non-functional update, only first update is performed"
);
if
(
IsSystemRelationName
(
RelationGetRelationName
(
relation
)
->
data
))
...
...
@@ -1367,19 +1367,19 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup)
}
/* XXX order problems if not atomic assignment ??? */
tup
->
t_oid
=
tp
->
t_oid
;
TransactionIdStore
(
GetCurrentTransactionId
(),
&
(
tup
->
t_xmin
));
tup
->
t_cmin
=
GetCurrentCommandId
();
StoreInvalidTransactionId
(
&
(
tup
->
t_xmax
));
tup
->
t_infomask
&=
~
(
HEAP_XACT_MASK
);
tup
->
t_infomask
|=
HEAP_XMAX_INVALID
;
replace_tuple
->
t_oid
=
old_tuple
->
t_oid
;
TransactionIdStore
(
GetCurrentTransactionId
(),
&
(
replace_tuple
->
t_xmin
));
replace_tuple
->
t_cmin
=
GetCurrentCommandId
();
StoreInvalidTransactionId
(
&
(
replace_tuple
->
t_xmax
));
replace_tuple
->
t_infomask
&=
~
(
HEAP_XACT_MASK
);
replace_tuple
->
t_infomask
|=
HEAP_XMAX_INVALID
;
/* ----------------
* insert new item
* ----------------
*/
if
((
unsigned
)
DOUBLEALIGN
(
tup
->
t_len
)
<=
PageGetFreeSpace
((
Page
)
dp
))
RelationPutHeapTuple
(
relation
,
BufferGetBlockNumber
(
buffer
),
tup
);
if
((
unsigned
)
DOUBLEALIGN
(
replace_tuple
->
t_len
)
<=
PageGetFreeSpace
((
Page
)
dp
))
RelationPutHeapTuple
(
relation
,
BufferGetBlockNumber
(
buffer
),
replace_tuple
);
else
{
/* ----------------
...
...
@@ -1387,23 +1387,23 @@ heap_replace(Relation relation, ItemPointer otid, HeapTuple tup)
* for a new place to put it.
* ----------------
*/
doinsert
(
relation
,
tup
);
doinsert
(
relation
,
replace_tuple
);
}
/* ----------------
* new item in place, now record transaction information
* ----------------
*/
TransactionIdStore
(
GetCurrentTransactionId
(),
&
(
tp
->
t_xmax
));
tp
->
t_cmax
=
GetCurrentCommandId
();
tp
->
t_infomask
&=
~
(
HEAP_XMAX_COMMITTED
|
HEAP_XMAX_INVALID
);
TransactionIdStore
(
GetCurrentTransactionId
(),
&
(
old_tuple
->
t_xmax
));
old_tuple
->
t_cmax
=
GetCurrentCommandId
();
old_tuple
->
t_infomask
&=
~
(
HEAP_XMAX_COMMITTED
|
HEAP_XMAX_INVALID
);
/* ----------------
* invalidate caches
* ----------------
*/
SetRefreshWhenInvalidate
(
ImmediateInvalidation
);
RelationInvalidateHeapTuple
(
relation
,
tp
);
RelationInvalidateHeapTuple
(
relation
,
old_tuple
);
SetRefreshWhenInvalidate
((
bool
)
!
ImmediateInvalidation
);
WriteBuffer
(
buffer
);
...
...
src/backend/catalog/heap.c
View file @
4a700021
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.5
8 1998/08/19 02:01:30
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.5
9 1998/08/20 22:07:32
momjian Exp $
*
* INTERFACE ROUTINES
* heap_create() - Create an uncataloged heap relation
...
...
@@ -1051,18 +1051,20 @@ DeletePgAttributeTuples(Relation rel)
*/
RelationSetLockForWrite
(
pg_attribute_desc
);
attnum
=
FirstLowInvalidHeapAttributeNumber
+
1
;
/* cmax */
while
(
HeapTupleIsValid
(
tup
=
SearchSysCacheTupleCopy
(
ATTNUM
,
ObjectIdGetDatum
(
rel
->
rd_att
->
attrs
[
0
]
->
attrelid
),
Int16GetDatum
(
attnum
),
0
,
0
)))
for
(
attnum
=
FirstLowInvalidHeapAttributeNumber
+
1
;
attnum
<=
rel
->
rd_att
->
natts
;
attnum
++
)
{
heap_delete
(
pg_attribute_desc
,
&
tup
->
t_ctid
);
pfree
(
tup
);
attnum
++
;
if
(
HeapTupleIsValid
(
tup
=
SearchSysCacheTupleCopy
(
ATTNUM
,
ObjectIdGetDatum
(
RelationGetRelid
(
rel
)),
Int16GetDatum
(
attnum
),
0
,
0
)))
{
heap_delete
(
pg_attribute_desc
,
&
tup
->
t_ctid
);
pfree
(
tup
);
}
}
/* ----------------
* Release the write lock
* ----------------
...
...
@@ -1104,8 +1106,10 @@ DeletePgTypeTuple(Relation rel)
* to this relation.
* ----------------
*/
ScanKeyEntryInitialize
(
&
key
,
0
,
Anum_pg_type_typrelid
,
F_INT4EQ
,
rel
->
rd_att
->
attrs
[
0
]
->
attrelid
);
ScanKeyEntryInitialize
(
&
key
,
0
,
Anum_pg_type_typrelid
,
F_OIDEQ
,
ObjectIdGetDatum
(
RelationGetRelid
(
rel
)));
pg_type_scan
=
heap_beginscan
(
pg_type_desc
,
0
,
...
...
@@ -1140,7 +1144,9 @@ DeletePgTypeTuple(Relation rel)
pg_attribute_desc
=
heap_openr
(
AttributeRelationName
);
ScanKeyEntryInitialize
(
&
attkey
,
0
,
Anum_pg_attribute_atttypid
,
F_INT4EQ
,
0
,
Anum_pg_attribute_atttypid
,
F_OIDEQ
,
typoid
);
pg_attribute_scan
=
heap_beginscan
(
pg_attribute_desc
,
...
...
@@ -1151,13 +1157,13 @@ DeletePgTypeTuple(Relation rel)
/* ----------------
* try and get a pg_attribute tuple. if we succeed it means
* we cant delete the relation because something depends on
* we can
'
t delete the relation because something depends on
* the schema.
* ----------------
*/
atttup
=
heap_getnext
(
pg_attribute_scan
,
0
);
if
(
Pointer
IsValid
(
atttup
))
if
(
HeapTuple
IsValid
(
atttup
))
{
Oid
relid
=
((
AttributeTupleForm
)
GETSTRUCT
(
atttup
))
->
attrelid
;
...
...
src/backend/catalog/index.c
View file @
4a700021
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.
49 1998/08/20 15:16:5
4 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.
50 1998/08/20 22:07:3
4 momjian Exp $
*
*
* INTERFACE ROUTINES
...
...
@@ -1173,6 +1173,7 @@ index_destroy(Oid indexId)
{
Relation
indexRelation
;
Relation
catalogRelation
;
Relation
attributeRelation
;
HeapTuple
tuple
;
int16
attnum
;
...
...
@@ -1200,7 +1201,7 @@ index_destroy(Oid indexId)
* fix ATTRIBUTE relation
* ----------------
*/
catalog
Relation
=
heap_openr
(
AttributeRelationName
);
attribute
Relation
=
heap_openr
(
AttributeRelationName
);
attnum
=
1
;
/* indexes start at 1 */
...
...
@@ -1209,29 +1210,28 @@ index_destroy(Oid indexId)
Int16GetDatum
(
attnum
),
0
,
0
)))
{
heap_delete
(
catalog
Relation
,
&
tuple
->
t_ctid
);
heap_delete
(
attribute
Relation
,
&
tuple
->
t_ctid
);
pfree
(
tuple
);
attnum
++
;
}
heap_close
(
catalogRelation
);
heap_close
(
attributeRelation
);
/* ----------------
* fix INDEX relation
* ----------------
*/
tuple
=
SearchSysCacheTupleCopy
(
INDEXRELID
,
ObjectIdGetDatum
(
indexId
),
0
,
0
,
0
);
ObjectIdGetDatum
(
indexId
),
0
,
0
,
0
);
if
(
!
HeapTupleIsValid
(
tuple
))
{
elog
(
NOTICE
,
"IndexRelationDestroy: %s's INDEX tuple missing"
,
RelationGetRelationName
(
indexRelation
));
}
heap_delete
(
catalogRelation
,
&
tuple
->
t_ctid
);
Assert
(
ItemPointerIsValid
(
&
tuple
->
t_ctid
));
heap_delete
(
indexRelation
,
&
tuple
->
t_ctid
);
pfree
(
tuple
);
heap_close
(
catalogRelation
);
/*
* flush cache and physically remove the file
...
...
src/backend/catalog/indexing.c
View file @
4a700021
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.2
1 1998/08/20 15:16:55
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.2
2 1998/08/20 22:07:36
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -125,7 +125,7 @@ CatalogIndexInsert(Relation *idescs,
InsertIndexResult
indexRes
;
indexDescriptor
=
RelationGetTupleDescriptor
(
idescs
[
i
]);
pgIndexTup
=
SearchSysCacheTuple
(
INDEXRELID
,
pgIndexTup
=
SearchSysCacheTuple
Copy
(
INDEXRELID
,
ObjectIdGetDatum
(
idescs
[
i
]
->
rd_id
),
0
,
0
,
0
);
Assert
(
pgIndexTup
);
...
...
@@ -163,6 +163,7 @@ CatalogIndexInsert(Relation *idescs,
&
heapTuple
->
t_ctid
,
heapRelation
);
if
(
indexRes
)
pfree
(
indexRes
);
pfree
(
pgIndexTup
);
}
}
...
...
src/backend/catalog/pg_type.c
View file @
4a700021
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.2
7 1998/08/19 02:01:38
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.2
8 1998/08/20 22:07:37
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -384,12 +384,12 @@ TypeCreate(char *typeName,
values
[
i
++
]
=
(
Datum
)
GetUserId
();
/* 2 */
values
[
i
++
]
=
(
Datum
)
internalSize
;
/* 3 */
values
[
i
++
]
=
(
Datum
)
externalSize
;
/* 4 */
values
[
i
++
]
=
(
Datum
)
passedByValue
;
/* 5 */
values
[
i
++
]
=
(
Datum
)
passedByValue
;
/* 5 */
values
[
i
++
]
=
(
Datum
)
typeType
;
/* 6 */
values
[
i
++
]
=
(
Datum
)
(
bool
)
1
;
/* 7 */
values
[
i
++
]
=
(
Datum
)
typDelim
;
/* 8 */
values
[
i
++
]
=
(
Datum
)
(
typeType
==
'c'
?
relationOid
:
InvalidOid
);
/* 9 */
values
[
i
++
]
=
(
Datum
)
elementObjectId
;
/* 10 */
values
[
i
++
]
=
(
Datum
)
elementObjectId
;
/* 10 */
/*
* arguments to type input and output functions must be 0
...
...
@@ -431,7 +431,7 @@ TypeCreate(char *typeName,
func_error
(
"TypeCreate"
,
procname
,
1
,
argList
,
NULL
);
}
values
[
i
++
]
=
(
Datum
)
tup
->
t_oid
;
/* 11 - 14 */
values
[
i
++
]
=
(
Datum
)
tup
->
t_oid
;
/* 11 - 14 */
}
/* ----------------
...
...
src/backend/commands/vacuum.c
View file @
4a700021
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.7
5 1998/08/20 15:16:57
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.7
6 1998/08/20 22:07:39
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -2217,7 +2217,7 @@ vc_mkindesc(Relation onerel, int nindices, Relation *Irel, IndDesc **Idesc)
cachetuple
=
SearchSysCacheTupleCopy
(
INDEXRELID
,
ObjectIdGetDatum
(
RelationGetRelid
(
Irel
[
i
])),
0
,
0
,
0
);
Assert
(
tuple
);
Assert
(
cache
tuple
);
/* get the buffer cache tuple */
tuple
=
heap_fetch
(
onerel
,
SnapshotNow
,
&
cachetuple
->
t_ctid
,
&
buffer
);
...
...
src/backend/executor/execUtils.c
View file @
4a700021
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.3
5 1998/08/19 02:02:0
1 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.3
6 1998/08/20 22:07:4
1 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -690,7 +690,7 @@ ExecGetIndexKeyInfo(IndexTupleForm indexTuple,
* the IndexCatalogInformation function in plancat.c
* because IndexCatalogInformation is poorly written.
*
* It would be much better the functionality provided
* It would be much better
if
the functionality provided
* by this function and IndexCatalogInformation was
* in the form of a small set of orthogonal routines..
* If you are trying to understand this, I suggest you
...
...
src/backend/utils/cache/inval.c
View file @
4a700021
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.1
3 1998/08/19 14:51:29
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/cache/inval.c,v 1.1
4 1998/08/20 22:07:43
momjian Exp $
*
* Note - this code is real crufty...
*
...
...
@@ -643,6 +643,7 @@ RelationInvalidateHeapTuple(Relation relation, HeapTuple tuple)
RelationIdRegisterLocalInvalid
);
if
(
RefreshWhenInvalidate
)
/* what does this do? bjm 1998/08/20 */
RelationInvalidateCatalogCacheTuple
(
relation
,
tuple
,
(
void
(
*
)
())
NULL
);
...
...
src/bin/initdb/initdb.sh
View file @
4a700021
...
...
@@ -26,7 +26,7 @@
#
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.
49 1998/08/20 15:16:59
momjian Exp $
# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.
50 1998/08/20 22:07:46
momjian Exp $
#
#-------------------------------------------------------------------------
...
...
@@ -404,13 +404,13 @@ echo
PGSQL_OPT
=
"-o /dev/null -F -Q -D
$PGDATA
"
# If the COPY is first, the VACUUM generates an error, so we vacuum first
echo
"
v
acuuming template1"
echo
"
V
acuuming template1"
echo
"vacuum"
| postgres
$PGSQL_OPT
template1
>
/dev/null
echo
"COPY pg_shadow TO '
$PGDATA
/pg_pwd' USING DELIMITERS '
\\
t'"
|
\
postgres
$PGSQL_OPT
template1
>
/dev/null
echo
"
c
reating public pg_user view"
echo
"
C
reating public pg_user view"
echo
"CREATE TABLE xpg_user (
\
usename name,
\
usesysid int4,
\
...
...
@@ -436,7 +436,7 @@ echo "CREATE RULE _RETpg_user AS ON SELECT TO pg_user DO INSTEAD \
echo
"REVOKE ALL on pg_shadow FROM public"
|
\
postgres
$PGSQL_OPT
template1
>
/dev/null
echo
"
l
oading pg_description"
echo
"
L
oading pg_description"
echo
"copy pg_description from '
$TEMPLATE_DESCR
'"
|
\
postgres
$PGSQL_OPT
template1
>
/dev/null
echo
"copy pg_description from '
$GLOBAL_DESCR
'"
|
\
...
...
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