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
5aea4062
Commit
5aea4062
authored
Jul 13, 1998
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Inline function, rename libpq variablees, change lrel to lockrel.
parent
8bac4ca8
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
164 additions
and
190 deletions
+164
-190
src/backend/libpq/be-dumpdata.c
src/backend/libpq/be-dumpdata.c
+3
-3
src/backend/libpq/portal.c
src/backend/libpq/portal.c
+6
-6
src/backend/storage/buffer/bufmgr.c
src/backend/storage/buffer/bufmgr.c
+4
-4
src/backend/storage/ipc/sinvaladt.c
src/backend/storage/ipc/sinvaladt.c
+2
-2
src/backend/storage/lmgr/lmgr.c
src/backend/storage/lmgr/lmgr.c
+70
-121
src/backend/storage/lmgr/multi.c
src/backend/storage/lmgr/multi.c
+16
-16
src/backend/storage/lmgr/single.c
src/backend/storage/lmgr/single.c
+7
-7
src/include/libpq/libpq.h
src/include/libpq/libpq.h
+3
-3
src/include/storage/buf_internals.h
src/include/storage/buf_internals.h
+4
-4
src/include/storage/lmgr.h
src/include/storage/lmgr.h
+35
-10
src/include/storage/multilev.h
src/include/storage/multilev.h
+5
-5
src/interfaces/libpq/fe-exec.c
src/interfaces/libpq/fe-exec.c
+5
-5
src/interfaces/libpq/libpq-fe.h
src/interfaces/libpq/libpq-fe.h
+3
-3
src/interfaces/odbc/pgtypes.c
src/interfaces/odbc/pgtypes.c
+1
-1
No files found.
src/backend/libpq/be-dumpdata.c
View file @
5aea4062
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-dumpdata.c,v 1.1
5 1998/03/30 16:46:29
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-dumpdata.c,v 1.1
6 1998/07/13 16:34:48
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -194,8 +194,8 @@ be_typeinit(PortalEntry *entry,
for
(
i
=
0
;
i
<
natts
;
++
i
)
{
strncpy
(
group
->
types
[
i
].
name
,
attrs
[
i
]
->
attname
.
data
,
NAMEDATALEN
);
group
->
types
[
i
].
adt
id
=
attrs
[
i
]
->
atttypid
;
group
->
types
[
i
].
adtsize
=
attrs
[
i
]
->
attlen
;
group
->
types
[
i
].
typ
id
=
attrs
[
i
]
->
atttypid
;
group
->
types
[
i
].
typlen
=
attrs
[
i
]
->
attlen
;
}
}
}
...
...
src/backend/libpq/portal.c
View file @
5aea4062
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/libpq/Attic/portal.c,v 1.1
4 1998/06/15 19:28:27
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/libpq/Attic/portal.c,v 1.1
5 1998/07/13 16:34:48
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -327,7 +327,7 @@ PQftypeGroup(PortalBuffer *portal, int group_index, int field_number)
if
((
gbp
=
pbuf_findGroup
(
portal
,
group_index
))
&&
in_range
(
"PQftypeGroup: field number"
,
field_number
,
0
,
gbp
->
no_fields
))
return
(
gbp
->
types
[
field_number
].
adt
id
);
return
(
gbp
->
types
[
field_number
].
typ
id
);
return
(
-
1
);
}
...
...
@@ -348,7 +348,7 @@ PQfsizeGroup(PortalBuffer *portal, int group_index, int field_number)
if
((
gbp
=
pbuf_findGroup
(
portal
,
group_index
))
&&
in_range
(
"PQfsizeGroup: field number"
,
field_number
,
0
,
gbp
->
no_fields
))
return
(
gbp
->
types
[
field_number
].
adtsize
);
return
(
gbp
->
types
[
field_number
].
typlen
);
return
(
-
1
);
}
...
...
@@ -481,8 +481,8 @@ PQftype(PortalBuffer *portal, int tuple_index, int field_number)
return
(
-
1
);
if
((
gbp
=
PQgroup
(
portal
,
tuple_index
))
&&
in_range
(
"PQftype: field number"
,
field_number
,
0
,
gbp
->
no_fields
))
return
(
gbp
->
types
[
field_number
].
adt
id
);
in_range
(
"PQftype: field number"
,
field_number
,
0
,
gbp
->
no_fields
))
return
(
gbp
->
types
[
field_number
].
typ
id
);
return
(
-
1
);
}
...
...
@@ -502,7 +502,7 @@ PQfsize(PortalBuffer *portal, int tuple_index, int field_number)
if
((
gbp
=
PQgroup
(
portal
,
tuple_index
))
&&
in_range
(
"PQfsize: field number"
,
field_number
,
0
,
gbp
->
no_fields
))
return
(
gbp
->
types
[
field_number
].
adtsize
);
return
(
gbp
->
types
[
field_number
].
typlen
);
return
(
-
1
);
}
...
...
src/backend/storage/buffer/bufmgr.c
View file @
5aea4062
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.3
8 1998/06/15 19:29:0
9 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/buffer/bufmgr.c,v 1.3
9 1998/07/13 16:34:4
9 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -114,14 +114,14 @@ RelationGetBufferWithBuffer(Relation relation,
Buffer
buffer
)
{
BufferDesc
*
bufHdr
;
LRelId
lrelId
;
L
ock
RelId
lrelId
;
if
(
BufferIsValid
(
buffer
))
{
if
(
!
BufferIsLocal
(
buffer
))
{
bufHdr
=
&
BufferDescriptors
[
buffer
-
1
];
lrelId
=
RelationGetLRelId
(
relation
);
lrelId
=
RelationGetL
ock
RelId
(
relation
);
SpinAcquire
(
BufMgrLock
);
if
(
bufHdr
->
tag
.
blockNum
==
blockNumber
&&
bufHdr
->
tag
.
relId
.
relId
==
lrelId
.
relId
&&
...
...
@@ -1282,7 +1282,7 @@ BufferGetRelation(Buffer buffer)
Assert
(
!
BufferIsLocal
(
buffer
));
/* not supported for local buffers */
/* XXX should be a critical section */
relid
=
LRelIdGetRelationId
(
BufferDescriptors
[
buffer
-
1
].
tag
.
relId
);
relid
=
L
ock
RelIdGetRelationId
(
BufferDescriptors
[
buffer
-
1
].
tag
.
relId
);
relation
=
RelationIdGetRelation
(
relid
);
RelationDecrementReferenceCount
(
relation
);
...
...
src/backend/storage/ipc/sinvaladt.c
View file @
5aea4062
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinvaladt.c,v 1.1
1 1998/06/27 04:53:36
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/ipc/sinvaladt.c,v 1.1
2 1998/07/13 16:34:49
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -85,7 +85,7 @@ SISetActiveProcess(SISeg *segInOutP, BackendId backendId)
int
SIBackendInit
(
SISeg
*
segInOutP
)
{
LRelId
LtCreateRelId
();
L
ock
RelId
LtCreateRelId
();
TransactionId
LMITransactionIdCopy
();
Assert
(
MyBackendTag
>
0
);
...
...
src/backend/storage/lmgr/lmgr.c
View file @
5aea4062
This diff is collapsed.
Click to expand it.
src/backend/storage/lmgr/multi.c
View file @
5aea4062
...
...
@@ -12,7 +12,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/Attic/multi.c,v 1.
19 1998/06/30 02:33:3
1 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/Attic/multi.c,v 1.
20 1998/07/13 16:34:5
1 momjian Exp $
*
* NOTES:
* (1) The lock.c module assumes that the caller here is doing
...
...
@@ -113,7 +113,7 @@ InitMultiLevelLocks()
* Returns: TRUE if the lock can be set, FALSE otherwise.
*/
bool
MultiLockReln
(
LockInfo
linfo
,
LOCKMODE
lockmode
)
MultiLockReln
(
LockInfo
l
ock
info
,
LOCKMODE
lockmode
)
{
LOCKTAG
tag
;
...
...
@@ -122,8 +122,8 @@ MultiLockReln(LockInfo linfo, LOCKMODE lockmode)
* will return miss if the padding bytes aren't zero'd.
*/
MemSet
(
&
tag
,
0
,
sizeof
(
tag
));
tag
.
relId
=
l
info
->
l
RelId
.
relId
;
tag
.
dbId
=
l
info
->
l
RelId
.
dbId
;
tag
.
relId
=
l
ockinfo
->
lock
RelId
.
relId
;
tag
.
dbId
=
l
ockinfo
->
lock
RelId
.
dbId
;
return
(
MultiAcquire
(
MultiTableId
,
&
tag
,
lockmode
,
RELN_LEVEL
));
}
...
...
@@ -136,7 +136,7 @@ MultiLockReln(LockInfo linfo, LOCKMODE lockmode)
* at the page and relation level.
*/
bool
MultiLockTuple
(
LockInfo
linfo
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
)
MultiLockTuple
(
LockInfo
l
ock
info
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
)
{
LOCKTAG
tag
;
...
...
@@ -146,8 +146,8 @@ MultiLockTuple(LockInfo linfo, ItemPointer tidPtr, LOCKMODE lockmode)
*/
MemSet
(
&
tag
,
0
,
sizeof
(
tag
));
tag
.
relId
=
l
info
->
l
RelId
.
relId
;
tag
.
dbId
=
l
info
->
l
RelId
.
dbId
;
tag
.
relId
=
l
ockinfo
->
lock
RelId
.
relId
;
tag
.
dbId
=
l
ockinfo
->
lock
RelId
.
dbId
;
/* not locking any valid Tuple, just the page */
tag
.
tupleId
=
*
tidPtr
;
...
...
@@ -158,7 +158,7 @@ MultiLockTuple(LockInfo linfo, ItemPointer tidPtr, LOCKMODE lockmode)
* same as above at page level
*/
bool
MultiLockPage
(
LockInfo
linfo
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
)
MultiLockPage
(
LockInfo
l
ock
info
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
)
{
LOCKTAG
tag
;
...
...
@@ -178,8 +178,8 @@ MultiLockPage(LockInfo linfo, ItemPointer tidPtr, LOCKMODE lockmode)
* when we say lock the page we mean the 8k block. -Jeff 16 July 1991
* ----------------------------
*/
tag
.
relId
=
l
info
->
l
RelId
.
relId
;
tag
.
dbId
=
l
info
->
l
RelId
.
dbId
;
tag
.
relId
=
l
ockinfo
->
lock
RelId
.
relId
;
tag
.
dbId
=
l
ockinfo
->
lock
RelId
.
dbId
;
BlockIdCopy
(
&
(
tag
.
tupleId
.
ip_blkid
),
&
(
tidPtr
->
ip_blkid
));
return
(
MultiAcquire
(
MultiTableId
,
&
tag
,
lockmode
,
PAGE_LEVEL
));
}
...
...
@@ -302,7 +302,7 @@ MultiAcquire(LOCKMETHOD lockmethod,
*/
#ifdef NOT_USED
bool
MultiReleasePage
(
LockInfo
linfo
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
)
MultiReleasePage
(
LockInfo
l
ock
info
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
)
{
LOCKTAG
tag
;
...
...
@@ -314,8 +314,8 @@ MultiReleasePage(LockInfo linfo, ItemPointer tidPtr, LOCKMODE lockmode)
*/
MemSet
(
&
tag
,
0
,
sizeof
(
LOCKTAG
));
tag
.
relId
=
l
info
->
l
RelId
.
relId
;
tag
.
dbId
=
l
info
->
l
RelId
.
dbId
;
tag
.
relId
=
l
ockinfo
->
lock
RelId
.
relId
;
tag
.
dbId
=
l
ockinfo
->
lock
RelId
.
dbId
;
BlockIdCopy
(
&
(
tag
.
tupleId
.
ip_blkid
),
&
(
tidPtr
->
ip_blkid
));
return
(
MultiRelease
(
MultiTableId
,
&
tag
,
lockmode
,
PAGE_LEVEL
));
...
...
@@ -328,7 +328,7 @@ MultiReleasePage(LockInfo linfo, ItemPointer tidPtr, LOCKMODE lockmode)
* ------------------
*/
bool
MultiReleaseReln
(
LockInfo
linfo
,
LOCKMODE
lockmode
)
MultiReleaseReln
(
LockInfo
l
ock
info
,
LOCKMODE
lockmode
)
{
LOCKTAG
tag
;
...
...
@@ -339,8 +339,8 @@ MultiReleaseReln(LockInfo linfo, LOCKMODE lockmode)
* ------------------
*/
MemSet
(
&
tag
,
0
,
sizeof
(
LOCKTAG
));
tag
.
relId
=
l
info
->
l
RelId
.
relId
;
tag
.
dbId
=
l
info
->
l
RelId
.
dbId
;
tag
.
relId
=
l
ockinfo
->
lock
RelId
.
relId
;
tag
.
dbId
=
l
ockinfo
->
lock
RelId
.
dbId
;
return
(
MultiRelease
(
MultiTableId
,
&
tag
,
lockmode
,
RELN_LEVEL
));
}
...
...
src/backend/storage/lmgr/single.c
View file @
5aea4062
...
...
@@ -13,7 +13,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/Attic/single.c,v 1.
7 1998/06/30 02:33:3
2 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/storage/lmgr/Attic/single.c,v 1.
8 1998/07/13 16:34:5
2 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -32,7 +32,7 @@
* Returns: TRUE if the lock can be set, FALSE otherwise.
*/
bool
SingleLockReln
(
LockInfo
linfo
,
LOCKMODE
lockmode
,
int
action
)
SingleLockReln
(
LockInfo
l
ock
info
,
LOCKMODE
lockmode
,
int
action
)
{
LOCKTAG
tag
;
...
...
@@ -41,8 +41,8 @@ SingleLockReln(LockInfo linfo, LOCKMODE lockmode, int action)
* will return miss if the padding bytes aren't zero'd.
*/
MemSet
(
&
tag
,
0
,
sizeof
(
tag
));
tag
.
relId
=
l
info
->
l
RelId
.
relId
;
tag
.
dbId
=
l
info
->
l
RelId
.
dbId
;
tag
.
relId
=
l
ockinfo
->
lock
RelId
.
relId
;
tag
.
dbId
=
l
ockinfo
->
lock
RelId
.
dbId
;
BlockIdSet
(
&
(
tag
.
tupleId
.
ip_blkid
),
InvalidBlockNumber
);
tag
.
tupleId
.
ip_posid
=
InvalidOffsetNumber
;
...
...
@@ -61,7 +61,7 @@ SingleLockReln(LockInfo linfo, LOCKMODE lockmode, int action)
*
*/
bool
SingleLockPage
(
LockInfo
linfo
,
SingleLockPage
(
LockInfo
l
ock
info
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
,
int
action
)
...
...
@@ -73,8 +73,8 @@ SingleLockPage(LockInfo linfo,
* will return miss if the padding bytes aren't zero'd.
*/
MemSet
(
&
tag
,
0
,
sizeof
(
tag
));
tag
.
relId
=
l
info
->
l
RelId
.
relId
;
tag
.
dbId
=
l
info
->
l
RelId
.
dbId
;
tag
.
relId
=
l
ockinfo
->
lock
RelId
.
relId
;
tag
.
dbId
=
l
ockinfo
->
lock
RelId
.
dbId
;
BlockIdCopy
(
&
(
tag
.
tupleId
.
ip_blkid
),
&
(
tidPtr
->
ip_blkid
));
tag
.
tupleId
.
ip_posid
=
InvalidOffsetNumber
;
...
...
src/include/libpq/libpq.h
View file @
5aea4062
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: libpq.h,v 1.1
7 1998/07/09 03:29:01 scrappy
Exp $
* $Id: libpq.h,v 1.1
8 1998/07/13 16:34:53 momjian
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -49,8 +49,8 @@ typedef struct
typedef
struct
TypeBlock
{
char
name
[
NAMEDATALEN
];
/* name of the attribute */
int
adtid
;
/* adt
id of the type */
int
adtsize
;
/* adtsize
of the type */
int
typid
;
/* typ
id of the type */
int
typlen
;
/* typlen
of the type */
}
TypeBlock
;
/* ----------------
...
...
src/include/storage/buf_internals.h
View file @
5aea4062
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: buf_internals.h,v 1.2
2 1998/06/15 18:40:01
momjian Exp $
* $Id: buf_internals.h,v 1.2
3 1998/07/13 16:34:55
momjian Exp $
*
* NOTE
* If BUFFERPAGE0 is defined, then 0 will be used as a
...
...
@@ -51,7 +51,7 @@ typedef long **BufferBlock;
struct
buftag
{
LRelId
relId
;
L
ock
RelId
relId
;
BlockNumber
blockNum
;
/* blknum relative to begin of reln */
};
...
...
@@ -65,14 +65,14 @@ struct buftag
#define INIT_BUFFERTAG(a,xx_reln,xx_blockNum) \
( \
(a)->blockNum = xx_blockNum, \
(a)->relId = RelationGetLRelId(xx_reln) \
(a)->relId = RelationGetL
ock
RelId(xx_reln) \
)
#ifdef NOT_USED
#define COPY_BUFFERTAG(a,b) \
( \
(a)->blockNum = (b)->blockNum, \
LRelIdAssign(*(a),*(b)) \
L
ock
RelIdAssign(*(a),*(b)) \
)
#define EQUAL_BUFFERTAG(a,b) \
...
...
src/include/storage/lmgr.h
View file @
5aea4062
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: lmgr.h,v 1.1
2 1998/06/30 02:33:32
momjian Exp $
* $Id: lmgr.h,v 1.1
3 1998/07/13 16:34:56
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -15,32 +15,57 @@
#include <storage/lock.h>
#include <utils/rel.h>
#include <catalog/catname.h>
/*
* This was moved from pladt.h for the new lock manager. Want to obsolete
* all of the old code.
*/
typedef
struct
LRelId
typedef
struct
L
ock
RelId
{
Oid
relId
;
/* a relation identifier */
Oid
dbId
;
/* a database identifier */
}
LRelId
;
}
L
ock
RelId
;
typedef
struct
LockInfoData
{
bool
initialized
;
L
RelId
l
RelId
;
L
ockRelId
lock
RelId
;
TransactionId
transactionIdData
;
uint16
flags
;
}
LockInfoData
;
typedef
LockInfoData
*
LockInfo
;
#define LockInfoIsValid(linfo) \
((PointerIsValid(linfo)) && ((LockInfo) linfo)->initialized)
#define LockInfoIsValid(lockinfo) \
((PointerIsValid(lockinfo)) && ((LockInfo) lockinfo)->initialized)
extern
LockRelId
VariableRelationLockRelId
;
/*
* RelationGetLockRelId --
* Returns "lock" relation identifier for a relation.
*/
/* ----------------
* final condition is a hack to prevent problems during
* VARIABLE relation initialization
* ----------------
*/
#define RelationGetLockRelId(relation) \
( \
AssertMacro(RelationIsValid(relation)), \
(!LockInfoIsValid((LockInfo)(relation)->lockInfo)) ? \
RelationInitLockInfo(relation) \
: \
(void)NULL, \
(strcmp(RelationGetRelationName(relation)->data, \
VariableRelationName) == 0) ? \
VariableRelationLockRelId \
: \
((LockInfo)(relation)->lockInfo)->lockRelId \
)
extern
LRelId
RelationGetLRelId
(
Relation
relation
);
extern
Oid
LRelIdGetRelationId
(
LRelId
lRelId
);
extern
Oid
LockRelIdGetRelationId
(
LockRelId
lockRelId
);
extern
void
RelationInitLockInfo
(
Relation
relation
);
extern
void
RelationSetLockForDescriptorOpen
(
Relation
relation
);
extern
void
RelationSetLockForRead
(
Relation
relation
);
...
...
@@ -72,9 +97,9 @@ extern void RelationSetWIntentLock(Relation relation);
extern
void
RelationUnsetWIntentLock
(
Relation
relation
);
/* single.c */
extern
bool
SingleLockReln
(
LockInfo
linfo
,
LOCKMODE
lockmode
,
int
action
);
extern
bool
SingleLockReln
(
LockInfo
l
ock
info
,
LOCKMODE
lockmode
,
int
action
);
extern
bool
SingleLockPage
(
LockInfo
linfo
,
ItemPointer
tidPtr
,
SingleLockPage
(
LockInfo
l
ock
info
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
,
int
action
);
/* proc.c */
...
...
src/include/storage/multilev.h
View file @
5aea4062
...
...
@@ -7,7 +7,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: multilev.h,v 1.1
0 1998/06/30 02:33:33
momjian Exp $
* $Id: multilev.h,v 1.1
1 1998/07/13 16:34:58
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -52,9 +52,9 @@ extern LOCKMETHOD ShortTermTableId;
* function prototypes
*/
extern
LOCKMETHOD
InitMultiLevelLocks
(
void
);
extern
bool
MultiLockReln
(
LockInfo
linfo
,
LOCKMODE
lockmode
);
extern
bool
MultiLockTuple
(
LockInfo
linfo
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
);
extern
bool
MultiLockPage
(
LockInfo
linfo
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
);
extern
bool
MultiReleaseReln
(
LockInfo
linfo
,
LOCKMODE
lockmode
);
extern
bool
MultiLockReln
(
LockInfo
l
ock
info
,
LOCKMODE
lockmode
);
extern
bool
MultiLockTuple
(
LockInfo
l
ock
info
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
);
extern
bool
MultiLockPage
(
LockInfo
l
ock
info
,
ItemPointer
tidPtr
,
LOCKMODE
lockmode
);
extern
bool
MultiReleaseReln
(
LockInfo
l
ock
info
,
LOCKMODE
lockmode
);
#endif
/* MULTILEV_H */
src/interfaces/libpq/fe-exec.c
View file @
5aea4062
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.5
8 1998/07/13 02:41:58
momjian Exp $
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.5
9 1998/07/13 16:35:00
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -497,12 +497,12 @@ getRowDescriptions(PGconn *conn)
for
(
i
=
0
;
i
<
nfields
;
i
++
)
{
char
typName
[
MAX_MESSAGE_LEN
];
int
adt
id
;
int
typ
id
;
int
typlen
;
int
atttypmod
=
-
1
;
if
(
pqGets
(
typName
,
MAX_MESSAGE_LEN
,
conn
)
||
pqGetInt
(
&
adt
id
,
4
,
conn
)
||
pqGetInt
(
&
typ
id
,
4
,
conn
)
||
pqGetInt
(
&
typlen
,
2
,
conn
)
||
pqGetInt
(
&
atttypmod
,
4
,
conn
))
{
...
...
@@ -510,7 +510,7 @@ getRowDescriptions(PGconn *conn)
return
EOF
;
}
result
->
attDescs
[
i
].
name
=
strdup
(
typName
);
result
->
attDescs
[
i
].
adtid
=
adt
id
;
result
->
attDescs
[
i
].
typid
=
typ
id
;
result
->
attDescs
[
i
].
typlen
=
(
short
)
typlen
;
result
->
attDescs
[
i
].
atttypmod
=
atttypmod
;
}
...
...
@@ -1272,7 +1272,7 @@ PQftype(PGresult *res, int field_num)
return
InvalidOid
;
}
if
(
res
->
attDescs
)
return
res
->
attDescs
[
field_num
].
adt
id
;
return
res
->
attDescs
[
field_num
].
typ
id
;
else
return
InvalidOid
;
}
...
...
src/interfaces/libpq/libpq-fe.h
View file @
5aea4062
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: libpq-fe.h,v 1.3
3 1998/07/13 02:41:59
momjian Exp $
* $Id: libpq-fe.h,v 1.3
4 1998/07/13 16:35:02
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -76,8 +76,8 @@ extern "C"
typedef
struct
pgresAttDesc
{
char
*
name
;
/* type name */
Oid
adt
id
;
/* type id */
short
adtsize
;
/* type size */
Oid
typ
id
;
/* type id */
short
typlen
;
/* type size */
int
atttypmod
;
/* type-specific modifier info */
}
PGresAttDesc
;
...
...
src/interfaces/odbc/pgtypes.c
View file @
5aea4062
...
...
@@ -223,7 +223,7 @@ mylog("getCharPrecision: type=%d, col=%d, unknown = %d\n", type,col,handle_unkno
if
(
stmt
->
manual_result
)
{
flds
=
result
->
fields
;
if
(
flds
)
return
flds
->
adtsize
[
col
];
return
flds
->
typlen
[
col
];
else
return
maxsize
;
}
...
...
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