Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
74096ed1
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
74096ed1
编写于
2月 19, 2007
作者:
M
Magnus Hagander
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix pg_dump on win32 to properly dump files larger than 2Gb when using
binary dump formats.
上级
bc959b7b
变更
6
显示空白变更内容
内联
并排
Showing
6 changed file
with
59 addition
and
41 deletion
+59
-41
src/bin/pg_dump/pg_backup_archiver.c
src/bin/pg_dump/pg_backup_archiver.c
+14
-14
src/bin/pg_dump/pg_backup_archiver.h
src/bin/pg_dump/pg_backup_archiver.h
+4
-4
src/bin/pg_dump/pg_backup_custom.c
src/bin/pg_dump/pg_backup_custom.c
+9
-9
src/bin/pg_dump/pg_backup_files.c
src/bin/pg_dump/pg_backup_files.c
+2
-2
src/bin/pg_dump/pg_backup_tar.c
src/bin/pg_dump/pg_backup_tar.c
+11
-11
src/bin/pg_dump/pg_dump.h
src/bin/pg_dump/pg_dump.h
+19
-1
未找到文件。
src/bin/pg_dump/pg_backup_archiver.c
浏览文件 @
74096ed1
...
...
@@ -15,7 +15,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.14
1 2007/02/01 19:10:28 momjian
Exp $
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.c,v 1.14
2 2007/02/19 15:05:06 mha
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -1311,24 +1311,24 @@ TocIDRequired(ArchiveHandle *AH, DumpId id, RestoreOptions *ropt)
}
size_t
WriteOffset
(
ArchiveHandle
*
AH
,
off_t
o
,
int
wasSet
)
WriteOffset
(
ArchiveHandle
*
AH
,
pg
off_t
o
,
int
wasSet
)
{
int
off
;
/* Save the flag */
(
*
AH
->
WriteBytePtr
)
(
AH
,
wasSet
);
/* Write out off_t smallest byte first, prevents endian mismatch */
for
(
off
=
0
;
off
<
sizeof
(
off_t
);
off
++
)
/* Write out
pg
off_t smallest byte first, prevents endian mismatch */
for
(
off
=
0
;
off
<
sizeof
(
pg
off_t
);
off
++
)
{
(
*
AH
->
WriteBytePtr
)
(
AH
,
o
&
0xFF
);
o
>>=
8
;
}
return
sizeof
(
off_t
)
+
1
;
return
sizeof
(
pg
off_t
)
+
1
;
}
int
ReadOffset
(
ArchiveHandle
*
AH
,
off_t
*
o
)
ReadOffset
(
ArchiveHandle
*
AH
,
pg
off_t
*
o
)
{
int
i
;
int
off
;
...
...
@@ -1348,8 +1348,8 @@ ReadOffset(ArchiveHandle *AH, off_t *o)
else
if
(
i
==
0
)
return
K_OFFSET_NO_DATA
;
/* Cast to off_t because it was written as an int. */
*
o
=
(
off_t
)
i
;
/* Cast to
pg
off_t because it was written as an int. */
*
o
=
(
pg
off_t
)
i
;
return
K_OFFSET_POS_SET
;
}
...
...
@@ -1379,8 +1379,8 @@ ReadOffset(ArchiveHandle *AH, off_t *o)
*/
for
(
off
=
0
;
off
<
AH
->
offSize
;
off
++
)
{
if
(
off
<
sizeof
(
off_t
))
*
o
|=
((
off_t
)
((
*
AH
->
ReadBytePtr
)
(
AH
)))
<<
(
off
*
8
);
if
(
off
<
sizeof
(
pg
off_t
))
*
o
|=
((
pg
off_t
)
((
*
AH
->
ReadBytePtr
)
(
AH
)))
<<
(
off
*
8
);
else
{
if
((
*
AH
->
ReadBytePtr
)
(
AH
)
!=
0
)
...
...
@@ -1647,7 +1647,7 @@ _allocAH(const char *FileSpec, const ArchiveFormat fmt,
AH
->
createDate
=
time
(
NULL
);
AH
->
intSize
=
sizeof
(
int
);
AH
->
offSize
=
sizeof
(
off_t
);
AH
->
offSize
=
sizeof
(
pg
off_t
);
if
(
FileSpec
)
{
AH
->
fSpec
=
strdup
(
FileSpec
);
...
...
@@ -2768,11 +2768,11 @@ checkSeek(FILE *fp)
if
(
fseeko
(
fp
,
0
,
SEEK_CUR
)
!=
0
)
return
false
;
else
if
(
sizeof
(
off_t
)
>
sizeof
(
long
))
else
if
(
sizeof
(
pg
off_t
)
>
sizeof
(
long
))
/*
* At this point, off_t is too large for long, so we return based on
* whether an off_t version of fseek is available.
* At this point,
pg
off_t is too large for long, so we return based on
* whether an
pg
off_t version of fseek is available.
*/
#ifdef HAVE_FSEEKO
return
true
;
...
...
src/bin/pg_dump/pg_backup_archiver.h
浏览文件 @
74096ed1
...
...
@@ -17,7 +17,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.7
4 2007/01/25 03:30:43 momjian
Exp $
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_archiver.h,v 1.7
5 2007/02/19 15:05:06 mha
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -199,7 +199,7 @@ typedef struct _archiveHandle
* format */
size_t
lookaheadSize
;
/* Size of allocated buffer */
size_t
lookaheadLen
;
/* Length of data in lookahead */
off_t
lookaheadPos
;
/* Current read position in lookahead buffer */
pg
off_t
lookaheadPos
;
/* Current read position in lookahead buffer */
ArchiveEntryPtr
ArchiveEntryPtr
;
/* Called for each metadata object */
StartDataPtr
StartDataPtr
;
/* Called when table data is about to be
...
...
@@ -332,8 +332,8 @@ extern int ReadInt(ArchiveHandle *AH);
extern
char
*
ReadStr
(
ArchiveHandle
*
AH
);
extern
size_t
WriteStr
(
ArchiveHandle
*
AH
,
const
char
*
s
);
int
ReadOffset
(
ArchiveHandle
*
,
off_t
*
);
size_t
WriteOffset
(
ArchiveHandle
*
,
off_t
,
int
);
int
ReadOffset
(
ArchiveHandle
*
,
pg
off_t
*
);
size_t
WriteOffset
(
ArchiveHandle
*
,
pg
off_t
,
int
);
extern
void
StartRestoreBlobs
(
ArchiveHandle
*
AH
);
extern
void
StartRestoreBlob
(
ArchiveHandle
*
AH
,
Oid
oid
);
...
...
src/bin/pg_dump/pg_backup_custom.c
浏览文件 @
74096ed1
...
...
@@ -19,7 +19,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_custom.c,v 1.3
6 2006/10/04 00:30:05 momjian
Exp $
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_custom.c,v 1.3
7 2007/02/19 15:05:06 mha
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -70,14 +70,14 @@ typedef struct
char
*
zlibIn
;
size_t
inSize
;
int
hasSeek
;
off_t
filePos
;
off_t
dataStart
;
pg
off_t
filePos
;
pg
off_t
dataStart
;
}
lclContext
;
typedef
struct
{
int
dataState
;
off_t
dataPos
;
pg
off_t
dataPos
;
}
lclTocEntry
;
...
...
@@ -88,7 +88,7 @@ typedef struct
static
void
_readBlockHeader
(
ArchiveHandle
*
AH
,
int
*
type
,
int
*
id
);
static
void
_StartDataCompressor
(
ArchiveHandle
*
AH
,
TocEntry
*
te
);
static
void
_EndDataCompressor
(
ArchiveHandle
*
AH
,
TocEntry
*
te
);
static
off_t
_getFilePos
(
ArchiveHandle
*
AH
,
lclContext
*
ctx
);
static
pg
off_t
_getFilePos
(
ArchiveHandle
*
AH
,
lclContext
*
ctx
);
static
int
_DoDeflate
(
ArchiveHandle
*
AH
,
lclContext
*
ctx
,
int
flush
);
static
char
*
modulename
=
gettext_noop
(
"custom archiver"
);
...
...
@@ -791,7 +791,7 @@ static void
_CloseArchive
(
ArchiveHandle
*
AH
)
{
lclContext
*
ctx
=
(
lclContext
*
)
AH
->
formatData
;
off_t
tpos
;
pg
off_t
tpos
;
if
(
AH
->
mode
==
archModeWrite
)
{
...
...
@@ -827,10 +827,10 @@ _CloseArchive(ArchiveHandle *AH)
/*
* Get the current position in the archive file.
*/
static
off_t
static
pg
off_t
_getFilePos
(
ArchiveHandle
*
AH
,
lclContext
*
ctx
)
{
off_t
pos
;
pg
off_t
pos
;
if
(
ctx
->
hasSeek
)
{
...
...
@@ -841,7 +841,7 @@ _getFilePos(ArchiveHandle *AH, lclContext *ctx)
/*
* Prior to 1.7 (pg7.3) we relied on the internally maintained
* pointer. Now we rely on off_t always. pos = ctx->filePos;
* pointer. Now we rely on
pg
off_t always. pos = ctx->filePos;
*/
}
}
...
...
src/bin/pg_dump/pg_backup_files.c
浏览文件 @
74096ed1
...
...
@@ -20,7 +20,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_files.c,v 1.3
0 2007/02/08 11:10:27 petere
Exp $
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_files.c,v 1.3
1 2007/02/19 15:05:06 mha
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -51,7 +51,7 @@ static void _EndBlobs(ArchiveHandle *AH, TocEntry *te);
typedef
struct
{
int
hasSeek
;
off_t
filePos
;
pg
off_t
filePos
;
FILE
*
blobToc
;
}
lclContext
;
...
...
src/bin/pg_dump/pg_backup_tar.c
浏览文件 @
74096ed1
...
...
@@ -16,7 +16,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.5
6 2006/11/01 15:59:26 tgl
Exp $
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_backup_tar.c,v 1.5
7 2007/02/19 15:05:06 mha
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -67,30 +67,30 @@ typedef struct
FILE
*
tmpFH
;
char
*
targetFile
;
char
mode
;
off_t
pos
;
off_t
fileLen
;
pg
off_t
pos
;
pg
off_t
fileLen
;
ArchiveHandle
*
AH
;
}
TAR_MEMBER
;
/*
* Maximum file size for a tar member: The limit inherent in the
* format is 2^33-1 bytes (nearly 8 GB). But we don't want to exceed
* what we can represent by an off_t.
* what we can represent by an
pg
off_t.
*/
#ifdef INT64_IS_BUSTED
#define MAX_TAR_MEMBER_FILELEN INT_MAX
#else
#define MAX_TAR_MEMBER_FILELEN (((int64) 1 << Min(33, sizeof(off_t)*8 - 1)) - 1)
#define MAX_TAR_MEMBER_FILELEN (((int64) 1 << Min(33, sizeof(
pg
off_t)*8 - 1)) - 1)
#endif
typedef
struct
{
int
hasSeek
;
off_t
filePos
;
pg
off_t
filePos
;
TAR_MEMBER
*
blobToc
;
FILE
*
tarFH
;
off_t
tarFHpos
;
off_t
tarNextMember
;
pg
off_t
tarFHpos
;
pg
off_t
tarNextMember
;
TAR_MEMBER
*
FH
;
int
isSpecialScript
;
TAR_MEMBER
*
scriptTH
;
...
...
@@ -1048,7 +1048,7 @@ _tarAddFile(ArchiveHandle *AH, TAR_MEMBER *th)
FILE
*
tmp
=
th
->
tmpFH
;
/* Grab it for convenience */
char
buf
[
32768
];
size_t
cnt
;
off_t
len
=
0
;
pg
off_t
len
=
0
;
size_t
res
;
size_t
i
,
pad
;
...
...
@@ -1061,7 +1061,7 @@ _tarAddFile(ArchiveHandle *AH, TAR_MEMBER *th)
/*
* Some compilers with throw a warning knowing this test can never be true
* because off_t can't exceed the compared maximum.
* because
pg
off_t can't exceed the compared maximum.
*/
if
(
th
->
fileLen
>
MAX_TAR_MEMBER_FILELEN
)
die_horribly
(
AH
,
modulename
,
"archive member too large for tar format
\n
"
);
...
...
@@ -1197,7 +1197,7 @@ _tarGetHeader(ArchiveHandle *AH, TAR_MEMBER *th)
chk
;
size_t
len
;
unsigned
long
ullen
;
off_t
hPos
;
pg
off_t
hPos
;
bool
gotBlock
=
false
;
while
(
!
gotBlock
)
...
...
src/bin/pg_dump/pg_dump.h
浏览文件 @
74096ed1
...
...
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.h,v 1.13
2 2007/01/23 17:54:50 tgl
Exp $
* $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.h,v 1.13
3 2007/02/19 15:05:06 mha
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -16,6 +16,24 @@
#include "postgres_fe.h"
/*
* WIN32 does not provide 64-bit off_t, but does provide the functions operating
* with 64-bit offsets.
*/
#ifdef WIN32
#define pgoff_t __int64
#undef fseeko
#undef ftello
#ifdef WIN32_ONLY_COMPILER
#define fseeko(stream, offset, origin) _fseeki64(stream, offset, origin)
#define ftello(stream) _ftelli64(stream)
#else
#define fseeko(stream, offset, origin) fseeko64(stream, offset, origin)
#define ftello(stream) ftello64(stream)
#endif
#else
#define pgoff_t off_t
#endif
/*
* pg_dump uses two different mechanisms for identifying database objects:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录