Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
ca64391d
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,发现更多精彩内容 >>
提交
ca64391d
编写于
6月 25, 2003
作者:
B
Bruce Momjian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Updated the pg_get_constraintdef() to use conbin. Update pg_dump to use
pg_get_constraintdef() for >= 70400. Rod Taylor <rbt@rbt.ca>
上级
be94f198
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
105 addition
and
15 deletion
+105
-15
src/backend/utils/adt/ruleutils.c
src/backend/utils/adt/ruleutils.c
+32
-3
src/backend/utils/cache/lsyscache.c
src/backend/utils/cache/lsyscache.c
+32
-1
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dump.c
+39
-10
src/include/utils/lsyscache.h
src/include/utils/lsyscache.h
+2
-1
未找到文件。
src/backend/utils/adt/ruleutils.c
浏览文件 @
ca64391d
...
...
@@ -3,7 +3,7 @@
* back to source text
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.14
1 2003/05/28 16:03:59 tgl
Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.14
2 2003/06/25 03:56:30 momjian
Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
...
...
@@ -894,6 +894,10 @@ pg_get_constraintdef(PG_FUNCTION_ARGS)
{
Datum
val
;
bool
isnull
;
char
*
conbin
;
char
*
consrc
;
Node
*
expr
;
List
*
context
;
/* Start off the constraint definition */
/* The consrc for CHECK constraints always seems to be
...
...
@@ -901,14 +905,39 @@ pg_get_constraintdef(PG_FUNCTION_ARGS)
appendStringInfo
(
&
buf
,
"CHECK "
);
/* Fetch constraint source */
val
=
heap_getattr
(
tup
,
Anum_pg_constraint_con
src
,
val
=
heap_getattr
(
tup
,
Anum_pg_constraint_con
bin
,
RelationGetDescr
(
conDesc
),
&
isnull
);
if
(
isnull
)
elog
(
ERROR
,
"pg_get_constraintdef: Null consrc for constraint %u"
,
constraintId
);
conbin
=
DatumGetCString
(
DirectFunctionCall1
(
textout
,
val
));
expr
=
stringToNode
(
conbin
);
/*
* If top level is a List, assume it is an implicit-AND structure, and
* convert to explicit AND. This is needed for partial index
* predicates.
*/
if
(
expr
&&
IsA
(
expr
,
List
))
expr
=
(
Node
*
)
make_ands_explicit
((
List
*
)
expr
);
if
(
conForm
->
conrelid
!=
InvalidOid
)
/* It's a Relation */
context
=
deparse_context_for
(
get_rel_name
(
conForm
->
conrelid
),
conForm
->
conrelid
);
else
/*
* Since VARNOs aren't allowed in domain constraints, relation context
* isn't required as anything other than a shell.
*/
context
=
deparse_context_for
(
get_typname
(
conForm
->
contypid
),
InvalidOid
);
consrc
=
deparse_expression
(
expr
,
context
,
false
,
false
);
/* Append the constraint source */
appendStringInfoString
(
&
buf
,
DatumGetCString
(
DirectFunctionCall1
(
textout
,
val
))
);
appendStringInfoString
(
&
buf
,
consrc
);
break
;
}
...
...
src/backend/utils/cache/lsyscache.c
浏览文件 @
ca64391d
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v 1.9
7 2003/06/24 23:14:46
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/cache/lsyscache.c,v 1.9
8 2003/06/25 03:56:31
momjian Exp $
*
* NOTES
* Eventually, the index information should go through here, too.
...
...
@@ -1443,6 +1443,37 @@ get_typtype(Oid typid)
return
'\0'
;
}
/*
* get_typname
* Returns the name of a given type.
*
* Returns a palloc'd copy of the string, or NULL if no such relation.
*
* NOTE: since type name is not unique, be wary of code that uses this
* for anything except preparing error messages.
*/
char
*
get_typname
(
Oid
typid
)
{
HeapTuple
tp
;
tp
=
SearchSysCache
(
TYPEOID
,
ObjectIdGetDatum
(
typid
),
0
,
0
,
0
);
if
(
HeapTupleIsValid
(
tp
))
{
Form_pg_type
typtup
=
(
Form_pg_type
)
GETSTRUCT
(
tp
);
char
*
result
;
result
=
pstrdup
(
NameStr
(
typtup
->
typname
));
ReleaseSysCache
(
tp
);
return
result
;
}
else
return
NULL
;
}
/*
* get_typ_typrelid
*
...
...
src/bin/pg_dump/pg_dump.c
浏览文件 @
ca64391d
...
...
@@ -12,7 +12,7 @@
* by PostgreSQL
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.33
3 2003/06/11 16:29:42 tgl
Exp $
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.33
4 2003/06/25 03:56:31 momjian
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -3303,10 +3303,17 @@ dumpOneDomain(Archive *fout, TypeInfo *tinfo)
/*
* Fetch and process CHECK constraints for the domain
*/
appendPQExpBuffer
(
chkquery
,
"SELECT conname, consrc "
"FROM pg_catalog.pg_constraint "
"WHERE contypid = '%s'::pg_catalog.oid"
,
tinfo
->
oid
);
if
(
g_fout
->
remoteVersion
>=
70400
)
appendPQExpBuffer
(
chkquery
,
"SELECT conname,"
"pg_catalog.pg_get_constraintdef(oid) AS consrc "
"FROM pg_catalog.pg_constraint "
"WHERE contypid = '%s'::pg_catalog.oid"
,
tinfo
->
oid
);
else
appendPQExpBuffer
(
chkquery
,
"SELECT conname, 'CHECK (' || consrc || ')'"
"FROM pg_catalog.pg_constraint "
"WHERE contypid = '%s'::pg_catalog.oid"
,
tinfo
->
oid
);
res
=
PQexec
(
g_conn
,
chkquery
->
data
);
if
(
!
res
||
...
...
@@ -3326,7 +3333,7 @@ dumpOneDomain(Archive *fout, TypeInfo *tinfo)
conname
=
PQgetvalue
(
res
,
i
,
PQfnumber
(
res
,
"conname"
));
consrc
=
PQgetvalue
(
res
,
i
,
PQfnumber
(
res
,
"consrc"
));
appendPQExpBuffer
(
q
,
"
\n\t
CONSTRAINT %s
CHECK
%s"
,
appendPQExpBuffer
(
q
,
"
\n\t
CONSTRAINT %s %s"
,
fmtId
(
conname
),
consrc
);
}
...
...
@@ -5257,8 +5264,29 @@ dumpOneTable(Archive *fout, TableInfo *tbinfo, TableInfo *g_tblinfo)
tbinfo
->
relname
);
resetPQExpBuffer
(
query
);
if
(
g_fout
->
remoteVersion
>=
70300
)
appendPQExpBuffer
(
query
,
"SELECT conname, consrc"
if
(
g_fout
->
remoteVersion
>=
70400
)
appendPQExpBuffer
(
query
,
"SELECT conname, "
" pg_catalog.pg_get_constraintdef(c1.oid) AS consrc "
" from pg_catalog.pg_constraint c1"
" where conrelid = '%s'::pg_catalog.oid "
" and contype = 'c' "
" and not exists "
" (select 1 from "
" pg_catalog.pg_constraint c2, "
" pg_catalog.pg_inherits i "
" where i.inhrelid = c1.conrelid "
" and (c2.conname = c1.conname "
" or (c2.conname[0] = '$' "
" and c1.conname[0] = '$')"
" )"
" and pg_catalog.pg_get_constraintdef(c2.oid) "
" = pg_catalog.pg_get_constraintdef(c1.oid) "
" and c2.conrelid = i.inhparent) "
" order by conname "
,
tbinfo
->
oid
);
else
if
(
g_fout
->
remoteVersion
>=
70300
)
appendPQExpBuffer
(
query
,
"SELECT conname, "
" 'CHECK (' || consrc || ')'"
" from pg_catalog.pg_constraint c1"
" where conrelid = '%s'::pg_catalog.oid "
" and contype = 'c' "
...
...
@@ -5276,7 +5304,8 @@ dumpOneTable(Archive *fout, TableInfo *tbinfo, TableInfo *g_tblinfo)
" order by conname "
,
tbinfo
->
oid
);
else
appendPQExpBuffer
(
query
,
"SELECT rcname as conname, rcsrc as consrc"
appendPQExpBuffer
(
query
,
"SELECT rcname as conname,"
" 'CHECK (' || rcsrc || ')' as consrc"
" from pg_relcheck c1"
" where rcrelid = '%s'::oid "
" and not exists "
...
...
@@ -5321,7 +5350,7 @@ dumpOneTable(Archive *fout, TableInfo *tbinfo, TableInfo *g_tblinfo)
if
(
name
[
0
]
!=
'$'
)
appendPQExpBuffer
(
q
,
"CONSTRAINT %s "
,
fmtId
(
name
));
appendPQExpBuffer
(
q
,
"
CHECK (%s)
"
,
expr
);
appendPQExpBuffer
(
q
,
"
%s
"
,
expr
);
}
PQclear
(
res2
);
}
...
...
src/include/utils/lsyscache.h
浏览文件 @
ca64391d
...
...
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: lsyscache.h,v 1.7
2 2003/06/24 23:14:49
momjian Exp $
* $Id: lsyscache.h,v 1.7
3 2003/06/25 03:56:31
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -81,6 +81,7 @@ extern char get_typtype(Oid typid);
extern
Oid
get_typ_typrelid
(
Oid
typid
);
extern
Oid
get_element_type
(
Oid
typid
);
extern
Oid
get_array_type
(
Oid
typid
);
extern
char
*
get_typname
(
Oid
relid
);
extern
void
getTypeInputInfo
(
Oid
type
,
Oid
*
typInput
,
Oid
*
typElem
);
extern
void
getTypeOutputInfo
(
Oid
type
,
Oid
*
typOutput
,
Oid
*
typElem
,
bool
*
typIsVarlena
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录