Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
d5f23af6
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,发现更多精彩内容 >>
提交
d5f23af6
编写于
12月 07, 2011
作者:
P
Peter Eisentraut
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add const qualifiers to node inspection functions
Thomas Munro
上级
0d0ec527
变更
12
展开全部
隐藏空白更改
内联
并排
Showing
12 changed file
with
913 addition
and
913 deletion
+913
-913
src/backend/nodes/copyfuncs.c
src/backend/nodes/copyfuncs.c
+259
-259
src/backend/nodes/equalfuncs.c
src/backend/nodes/equalfuncs.c
+182
-182
src/backend/nodes/list.c
src/backend/nodes/list.c
+37
-37
src/backend/nodes/nodeFuncs.c
src/backend/nodes/nodeFuncs.c
+153
-153
src/backend/nodes/outfuncs.c
src/backend/nodes/outfuncs.c
+220
-220
src/backend/nodes/print.c
src/backend/nodes/print.c
+17
-17
src/backend/optimizer/util/clauses.c
src/backend/optimizer/util/clauses.c
+4
-4
src/include/nodes/nodeFuncs.h
src/include/nodes/nodeFuncs.h
+6
-6
src/include/nodes/nodes.h
src/include/nodes/nodes.h
+4
-4
src/include/nodes/pg_list.h
src/include/nodes/pg_list.h
+22
-22
src/include/nodes/print.h
src/include/nodes/print.h
+7
-7
src/include/optimizer/clauses.h
src/include/optimizer/clauses.h
+2
-2
未找到文件。
src/backend/nodes/copyfuncs.c
浏览文件 @
d5f23af6
此差异已折叠。
点击以展开。
src/backend/nodes/equalfuncs.c
浏览文件 @
d5f23af6
此差异已折叠。
点击以展开。
src/backend/nodes/list.c
浏览文件 @
d5f23af6
...
...
@@ -31,7 +31,7 @@
* Check that the specified List is valid (so far as we can tell).
*/
static
void
check_list_invariants
(
List
*
list
)
check_list_invariants
(
const
List
*
list
)
{
if
(
list
==
NIL
)
return
;
...
...
@@ -383,7 +383,7 @@ list_truncate(List *list, int new_size)
* failure if there is no such cell.
*/
static
ListCell
*
list_nth_cell
(
List
*
list
,
int
n
)
list_nth_cell
(
const
List
*
list
,
int
n
)
{
ListCell
*
match
;
...
...
@@ -407,7 +407,7 @@ list_nth_cell(List *list, int n)
* specified list. (List elements begin at 0.)
*/
void
*
list_nth
(
List
*
list
,
int
n
)
list_nth
(
const
List
*
list
,
int
n
)
{
Assert
(
IsPointerList
(
list
));
return
lfirst
(
list_nth_cell
(
list
,
n
));
...
...
@@ -418,7 +418,7 @@ list_nth(List *list, int n)
* specified list.
*/
int
list_nth_int
(
List
*
list
,
int
n
)
list_nth_int
(
const
List
*
list
,
int
n
)
{
Assert
(
IsIntegerList
(
list
));
return
lfirst_int
(
list_nth_cell
(
list
,
n
));
...
...
@@ -429,7 +429,7 @@ list_nth_int(List *list, int n)
* list.
*/
Oid
list_nth_oid
(
List
*
list
,
int
n
)
list_nth_oid
(
const
List
*
list
,
int
n
)
{
Assert
(
IsOidList
(
list
));
return
lfirst_oid
(
list_nth_cell
(
list
,
n
));
...
...
@@ -441,9 +441,9 @@ list_nth_oid(List *list, int n)
* Node as 'datum'.
*/
bool
list_member
(
List
*
list
,
void
*
datum
)
list_member
(
const
List
*
list
,
const
void
*
datum
)
{
ListCell
*
cell
;
const
ListCell
*
cell
;
Assert
(
IsPointerList
(
list
));
check_list_invariants
(
list
);
...
...
@@ -462,9 +462,9 @@ list_member(List *list, void *datum)
* determined by using simple pointer comparison.
*/
bool
list_member_ptr
(
List
*
list
,
void
*
datum
)
list_member_ptr
(
const
List
*
list
,
const
void
*
datum
)
{
ListCell
*
cell
;
const
ListCell
*
cell
;
Assert
(
IsPointerList
(
list
));
check_list_invariants
(
list
);
...
...
@@ -482,9 +482,9 @@ list_member_ptr(List *list, void *datum)
* Return true iff the integer 'datum' is a member of the list.
*/
bool
list_member_int
(
List
*
list
,
int
datum
)
list_member_int
(
const
List
*
list
,
int
datum
)
{
ListCell
*
cell
;
const
ListCell
*
cell
;
Assert
(
IsIntegerList
(
list
));
check_list_invariants
(
list
);
...
...
@@ -502,9 +502,9 @@ list_member_int(List *list, int datum)
* Return true iff the OID 'datum' is a member of the list.
*/
bool
list_member_oid
(
List
*
list
,
Oid
datum
)
list_member_oid
(
const
List
*
list
,
Oid
datum
)
{
ListCell
*
cell
;
const
ListCell
*
cell
;
Assert
(
IsOidList
(
list
));
check_list_invariants
(
list
);
...
...
@@ -694,10 +694,10 @@ list_delete_first(List *list)
* performance bottleneck.
*/
List
*
list_union
(
List
*
list1
,
List
*
list2
)
list_union
(
const
List
*
list1
,
const
List
*
list2
)
{
List
*
result
;
ListCell
*
cell
;
const
ListCell
*
cell
;
Assert
(
IsPointerList
(
list1
));
Assert
(
IsPointerList
(
list2
));
...
...
@@ -718,10 +718,10 @@ list_union(List *list1, List *list2)
* pointer comparison.
*/
List
*
list_union_ptr
(
List
*
list1
,
List
*
list2
)
list_union_ptr
(
const
List
*
list1
,
const
List
*
list2
)
{
List
*
result
;
ListCell
*
cell
;
const
ListCell
*
cell
;
Assert
(
IsPointerList
(
list1
));
Assert
(
IsPointerList
(
list2
));
...
...
@@ -741,10 +741,10 @@ list_union_ptr(List *list1, List *list2)
* This variant of list_union() operates upon lists of integers.
*/
List
*
list_union_int
(
List
*
list1
,
List
*
list2
)
list_union_int
(
const
List
*
list1
,
const
List
*
list2
)
{
List
*
result
;
ListCell
*
cell
;
const
ListCell
*
cell
;
Assert
(
IsIntegerList
(
list1
));
Assert
(
IsIntegerList
(
list2
));
...
...
@@ -764,10 +764,10 @@ list_union_int(List *list1, List *list2)
* This variant of list_union() operates upon lists of OIDs.
*/
List
*
list_union_oid
(
List
*
list1
,
List
*
list2
)
list_union_oid
(
const
List
*
list1
,
const
List
*
list2
)
{
List
*
result
;
ListCell
*
cell
;
const
ListCell
*
cell
;
Assert
(
IsOidList
(
list1
));
Assert
(
IsOidList
(
list2
));
...
...
@@ -797,10 +797,10 @@ list_union_oid(List *list1, List *list2)
* to in the result.
*/
List
*
list_intersection
(
List
*
list1
,
List
*
list2
)
list_intersection
(
const
List
*
list1
,
const
List
*
list2
)
{
List
*
result
;
ListCell
*
cell
;
const
ListCell
*
cell
;
if
(
list1
==
NIL
||
list2
==
NIL
)
return
NIL
;
...
...
@@ -829,9 +829,9 @@ list_intersection(List *list1, List *list2)
* membership via equal()
*/
List
*
list_difference
(
List
*
list1
,
List
*
list2
)
list_difference
(
const
List
*
list1
,
const
List
*
list2
)
{
ListCell
*
cell
;
const
ListCell
*
cell
;
List
*
result
=
NIL
;
Assert
(
IsPointerList
(
list1
));
...
...
@@ -855,9 +855,9 @@ list_difference(List *list1, List *list2)
* simple pointer equality.
*/
List
*
list_difference_ptr
(
List
*
list1
,
List
*
list2
)
list_difference_ptr
(
const
List
*
list1
,
const
List
*
list2
)
{
ListCell
*
cell
;
const
ListCell
*
cell
;
List
*
result
=
NIL
;
Assert
(
IsPointerList
(
list1
));
...
...
@@ -880,9 +880,9 @@ list_difference_ptr(List *list1, List *list2)
* This variant of list_difference() operates upon lists of integers.
*/
List
*
list_difference_int
(
List
*
list1
,
List
*
list2
)
list_difference_int
(
const
List
*
list1
,
const
List
*
list2
)
{
ListCell
*
cell
;
const
ListCell
*
cell
;
List
*
result
=
NIL
;
Assert
(
IsIntegerList
(
list1
));
...
...
@@ -905,9 +905,9 @@ list_difference_int(List *list1, List *list2)
* This variant of list_difference() operates upon lists of OIDs.
*/
List
*
list_difference_oid
(
List
*
list1
,
List
*
list2
)
list_difference_oid
(
const
List
*
list1
,
const
List
*
list2
)
{
ListCell
*
cell
;
const
ListCell
*
cell
;
List
*
result
=
NIL
;
Assert
(
IsOidList
(
list1
));
...
...
@@ -1131,7 +1131,7 @@ list_free_deep(List *list)
* Return a shallow copy of the specified list.
*/
List
*
list_copy
(
List
*
oldlist
)
list_copy
(
const
List
*
oldlist
)
{
List
*
newlist
;
ListCell
*
newlist_prev
;
...
...
@@ -1174,7 +1174,7 @@ list_copy(List *oldlist)
* Return a shallow copy of the specified list, without the first N elements.
*/
List
*
list_copy_tail
(
List
*
oldlist
,
int
nskip
)
list_copy_tail
(
const
List
*
oldlist
,
int
nskip
)
{
List
*
newlist
;
ListCell
*
newlist_prev
;
...
...
@@ -1230,7 +1230,7 @@ list_copy_tail(List *oldlist, int nskip)
#ifndef USE_INLINE
ListCell
*
list_head
(
List
*
l
)
list_head
(
const
List
*
l
)
{
return
l
?
l
->
head
:
NULL
;
}
...
...
@@ -1242,7 +1242,7 @@ list_tail(List *l)
}
int
list_length
(
List
*
l
)
list_length
(
const
List
*
l
)
{
return
l
?
l
->
length
:
0
;
}
...
...
@@ -1264,10 +1264,10 @@ list_length(List *l)
* list_length() macro in order to avoid the overhead of a function
* call.
*/
int
length
(
List
*
list
);
int
length
(
const
List
*
list
);
int
length
(
List
*
list
)
length
(
const
List
*
list
)
{
return
list_length
(
list
);
}
src/backend/nodes/nodeFuncs.c
浏览文件 @
d5f23af6
此差异已折叠。
点击以展开。
src/backend/nodes/outfuncs.c
浏览文件 @
d5f23af6
此差异已折叠。
点击以展开。
src/backend/nodes/print.c
浏览文件 @
d5f23af6
...
...
@@ -31,7 +31,7 @@
* print contents of Node to stdout
*/
void
print
(
void
*
obj
)
print
(
const
void
*
obj
)
{
char
*
s
;
char
*
f
;
...
...
@@ -49,7 +49,7 @@ print(void *obj)
* pretty-print contents of Node to stdout
*/
void
pprint
(
void
*
obj
)
pprint
(
const
void
*
obj
)
{
char
*
s
;
char
*
f
;
...
...
@@ -67,7 +67,7 @@ pprint(void *obj)
* send pretty-printed contents of Node to postmaster log
*/
void
elog_node_display
(
int
lev
,
const
char
*
title
,
void
*
obj
,
bool
pretty
)
elog_node_display
(
int
lev
,
const
char
*
title
,
const
void
*
obj
,
bool
pretty
)
{
char
*
s
;
char
*
f
;
...
...
@@ -249,9 +249,9 @@ pretty_format_node_dump(const char *dump)
* print contents of range table
*/
void
print_rt
(
List
*
rtable
)
print_rt
(
const
List
*
rtable
)
{
ListCell
*
l
;
const
ListCell
*
l
;
int
i
=
1
;
printf
(
"resno
\t
refname
\t
relid
\t
inFromCl
\n
"
);
...
...
@@ -304,7 +304,7 @@ print_rt(List *rtable)
* print an expression
*/
void
print_expr
(
Node
*
expr
,
List
*
rtable
)
print_expr
(
const
Node
*
expr
,
const
List
*
rtable
)
{
if
(
expr
==
NULL
)
{
...
...
@@ -314,7 +314,7 @@ print_expr(Node *expr, List *rtable)
if
(
IsA
(
expr
,
Var
))
{
Var
*
var
=
(
Var
*
)
expr
;
const
Var
*
var
=
(
const
Var
*
)
expr
;
char
*
relname
,
*
attname
;
...
...
@@ -348,7 +348,7 @@ print_expr(Node *expr, List *rtable)
}
else
if
(
IsA
(
expr
,
Const
))
{
Const
*
c
=
(
Const
*
)
expr
;
const
Const
*
c
=
(
const
Const
*
)
expr
;
Oid
typoutput
;
bool
typIsVarlena
;
char
*
outputstr
;
...
...
@@ -368,26 +368,26 @@ print_expr(Node *expr, List *rtable)
}
else
if
(
IsA
(
expr
,
OpExpr
))
{
OpExpr
*
e
=
(
OpExpr
*
)
expr
;
const
OpExpr
*
e
=
(
const
OpExpr
*
)
expr
;
char
*
opname
;
opname
=
get_opname
(
e
->
opno
);
if
(
list_length
(
e
->
args
)
>
1
)
{
print_expr
(
get_leftop
((
Expr
*
)
e
),
rtable
);
print_expr
(
get_leftop
((
const
Expr
*
)
e
),
rtable
);
printf
(
" %s "
,
((
opname
!=
NULL
)
?
opname
:
"(invalid operator)"
));
print_expr
(
get_rightop
((
Expr
*
)
e
),
rtable
);
print_expr
(
get_rightop
((
const
Expr
*
)
e
),
rtable
);
}
else
{
/* we print prefix and postfix ops the same... */
printf
(
"%s "
,
((
opname
!=
NULL
)
?
opname
:
"(invalid operator)"
));
print_expr
(
get_leftop
((
Expr
*
)
e
),
rtable
);
print_expr
(
get_leftop
((
const
Expr
*
)
e
),
rtable
);
}
}
else
if
(
IsA
(
expr
,
FuncExpr
))
{
FuncExpr
*
e
=
(
FuncExpr
*
)
expr
;
const
FuncExpr
*
e
=
(
const
FuncExpr
*
)
expr
;
char
*
funcname
;
ListCell
*
l
;
...
...
@@ -410,9 +410,9 @@ print_expr(Node *expr, List *rtable)
* pathkeys list of PathKeys
*/
void
print_pathkeys
(
List
*
pathkeys
,
List
*
rtable
)
print_pathkeys
(
const
List
*
pathkeys
,
const
List
*
rtable
)
{
ListCell
*
i
;
const
ListCell
*
i
;
printf
(
"("
);
foreach
(
i
,
pathkeys
)
...
...
@@ -450,9 +450,9 @@ print_pathkeys(List *pathkeys, List *rtable)
* print targetlist in a more legible way.
*/
void
print_tl
(
List
*
tlist
,
List
*
rtable
)
print_tl
(
const
List
*
tlist
,
const
List
*
rtable
)
{
ListCell
*
tl
;
const
ListCell
*
tl
;
printf
(
"(
\n
"
);
foreach
(
tl
,
tlist
)
...
...
src/backend/optimizer/util/clauses.c
浏览文件 @
d5f23af6
...
...
@@ -181,9 +181,9 @@ make_opclause(Oid opno, Oid opresulttype, bool opretset,
* or (op expr)
*/
Node
*
get_leftop
(
Expr
*
clause
)
get_leftop
(
const
Expr
*
clause
)
{
OpExpr
*
expr
=
(
OpExpr
*
)
clause
;
const
OpExpr
*
expr
=
(
const
OpExpr
*
)
clause
;
if
(
expr
->
args
!=
NIL
)
return
linitial
(
expr
->
args
);
...
...
@@ -198,9 +198,9 @@ get_leftop(Expr *clause)
* NB: result will be NULL if applied to a unary op clause.
*/
Node
*
get_rightop
(
Expr
*
clause
)
get_rightop
(
const
Expr
*
clause
)
{
OpExpr
*
expr
=
(
OpExpr
*
)
clause
;
const
OpExpr
*
expr
=
(
const
OpExpr
*
)
clause
;
if
(
list_length
(
expr
->
args
)
>=
2
)
return
lsecond
(
expr
->
args
);
...
...
src/include/nodes/nodeFuncs.h
浏览文件 @
d5f23af6
...
...
@@ -26,17 +26,17 @@
#define QTW_DONT_COPY_QUERY 0x20
/* do not copy top Query */
extern
Oid
exprType
(
Node
*
expr
);
extern
int32
exprTypmod
(
Node
*
expr
);
extern
bool
exprIsLengthCoercion
(
Node
*
expr
,
int32
*
coercedTypmod
);
extern
Oid
exprType
(
const
Node
*
expr
);
extern
int32
exprTypmod
(
const
Node
*
expr
);
extern
bool
exprIsLengthCoercion
(
const
Node
*
expr
,
int32
*
coercedTypmod
);
extern
bool
expression_returns_set
(
Node
*
clause
);
extern
Oid
exprCollation
(
Node
*
expr
);
extern
Oid
exprInputCollation
(
Node
*
expr
);
extern
Oid
exprCollation
(
const
Node
*
expr
);
extern
Oid
exprInputCollation
(
const
Node
*
expr
);
extern
void
exprSetCollation
(
Node
*
expr
,
Oid
collation
);
extern
void
exprSetInputCollation
(
Node
*
expr
,
Oid
inputcollation
);
extern
int
exprLocation
(
Node
*
expr
);
extern
int
exprLocation
(
const
Node
*
expr
);
extern
bool
expression_tree_walker
(
Node
*
node
,
bool
(
*
walker
)
(),
void
*
context
);
...
...
src/include/nodes/nodes.h
浏览文件 @
d5f23af6
...
...
@@ -431,7 +431,7 @@ typedef struct Node
NodeTag
type
;
}
Node
;
#define nodeTag(nodeptr) (((Node*)(nodeptr))->type)
#define nodeTag(nodeptr) (((
const
Node*)(nodeptr))->type)
/*
* newNode -
...
...
@@ -487,7 +487,7 @@ extern PGDLLIMPORT Node *newNodeMacroHolder;
/*
* nodes/{outfuncs.c,print.c}
*/
extern
char
*
nodeToString
(
void
*
obj
);
extern
char
*
nodeToString
(
const
void
*
obj
);
/*
* nodes/{readfuncs.c,read.c}
...
...
@@ -497,12 +497,12 @@ extern void *stringToNode(char *str);
/*
* nodes/copyfuncs.c
*/
extern
void
*
copyObject
(
void
*
obj
);
extern
void
*
copyObject
(
const
void
*
obj
);
/*
* nodes/equalfuncs.c
*/
extern
bool
equal
(
void
*
a
,
void
*
b
);
extern
bool
equal
(
const
void
*
a
,
const
void
*
b
);
/*
...
...
src/include/nodes/pg_list.h
浏览文件 @
d5f23af6
...
...
@@ -77,7 +77,7 @@ struct ListCell
#ifdef USE_INLINE
static
inline
ListCell
*
list_head
(
List
*
l
)
list_head
(
const
List
*
l
)
{
return
l
?
l
->
head
:
NULL
;
}
...
...
@@ -89,15 +89,15 @@ list_tail(List *l)
}
static
inline
int
list_length
(
List
*
l
)
list_length
(
const
List
*
l
)
{
return
l
?
l
->
length
:
0
;
}
#else
extern
ListCell
*
list_head
(
List
*
l
);
extern
ListCell
*
list_head
(
const
List
*
l
);
extern
ListCell
*
list_tail
(
List
*
l
);
extern
int
list_length
(
List
*
l
);
extern
int
list_length
(
const
List
*
l
);
#endif
/* USE_INLINE */
/*
...
...
@@ -206,14 +206,14 @@ extern List *lcons_oid(Oid datum, List *list);
extern
List
*
list_concat
(
List
*
list1
,
List
*
list2
);
extern
List
*
list_truncate
(
List
*
list
,
int
new_size
);
extern
void
*
list_nth
(
List
*
list
,
int
n
);
extern
int
list_nth_int
(
List
*
list
,
int
n
);
extern
Oid
list_nth_oid
(
List
*
list
,
int
n
);
extern
void
*
list_nth
(
const
List
*
list
,
int
n
);
extern
int
list_nth_int
(
const
List
*
list
,
int
n
);
extern
Oid
list_nth_oid
(
const
List
*
list
,
int
n
);
extern
bool
list_member
(
List
*
list
,
void
*
datum
);
extern
bool
list_member_ptr
(
List
*
list
,
void
*
datum
);
extern
bool
list_member_int
(
List
*
list
,
int
datum
);
extern
bool
list_member_oid
(
List
*
list
,
Oid
datum
);
extern
bool
list_member
(
const
List
*
list
,
const
void
*
datum
);
extern
bool
list_member_ptr
(
const
List
*
list
,
const
void
*
datum
);
extern
bool
list_member_int
(
const
List
*
list
,
int
datum
);
extern
bool
list_member_oid
(
const
List
*
list
,
Oid
datum
);
extern
List
*
list_delete
(
List
*
list
,
void
*
datum
);
extern
List
*
list_delete_ptr
(
List
*
list
,
void
*
datum
);
...
...
@@ -222,19 +222,19 @@ extern List *list_delete_oid(List *list, Oid datum);
extern
List
*
list_delete_first
(
List
*
list
);
extern
List
*
list_delete_cell
(
List
*
list
,
ListCell
*
cell
,
ListCell
*
prev
);
extern
List
*
list_union
(
List
*
list1
,
List
*
list2
);
extern
List
*
list_union_ptr
(
List
*
list1
,
List
*
list2
);
extern
List
*
list_union_int
(
List
*
list1
,
List
*
list2
);
extern
List
*
list_union_oid
(
List
*
list1
,
List
*
list2
);
extern
List
*
list_union
(
const
List
*
list1
,
const
List
*
list2
);
extern
List
*
list_union_ptr
(
const
List
*
list1
,
const
List
*
list2
);
extern
List
*
list_union_int
(
const
List
*
list1
,
const
List
*
list2
);
extern
List
*
list_union_oid
(
const
List
*
list1
,
const
List
*
list2
);
extern
List
*
list_intersection
(
List
*
list1
,
List
*
list2
);
extern
List
*
list_intersection
(
const
List
*
list1
,
const
List
*
list2
);
/* currently, there's no need for list_intersection_int etc */
extern
List
*
list_difference
(
List
*
list1
,
List
*
list2
);
extern
List
*
list_difference_ptr
(
List
*
list1
,
List
*
list2
);
extern
List
*
list_difference_int
(
List
*
list1
,
List
*
list2
);
extern
List
*
list_difference_oid
(
List
*
list1
,
List
*
list2
);
extern
List
*
list_difference
(
const
List
*
list1
,
const
List
*
list2
);
extern
List
*
list_difference_ptr
(
const
List
*
list1
,
const
List
*
list2
);
extern
List
*
list_difference_int
(
const
List
*
list1
,
const
List
*
list2
);
extern
List
*
list_difference_oid
(
const
List
*
list1
,
const
List
*
list2
);
extern
List
*
list_append_unique
(
List
*
list
,
void
*
datum
);
extern
List
*
list_append_unique_ptr
(
List
*
list
,
void
*
datum
);
...
...
@@ -249,8 +249,8 @@ extern List *list_concat_unique_oid(List *list1, List *list2);
extern
void
list_free
(
List
*
list
);
extern
void
list_free_deep
(
List
*
list
);
extern
List
*
list_copy
(
List
*
list
);
extern
List
*
list_copy_tail
(
List
*
list
,
int
nskip
);
extern
List
*
list_copy
(
const
List
*
list
);
extern
List
*
list_copy_tail
(
const
List
*
list
,
int
nskip
);
/*
* To ease migration to the new list API, a set of compatibility
...
...
src/include/nodes/print.h
浏览文件 @
d5f23af6
...
...
@@ -19,16 +19,16 @@
#define nodeDisplay(x) pprint(x)
extern
void
print
(
void
*
obj
);
extern
void
pprint
(
void
*
obj
);
extern
void
print
(
const
void
*
obj
);
extern
void
pprint
(
const
void
*
obj
);
extern
void
elog_node_display
(
int
lev
,
const
char
*
title
,
void
*
obj
,
bool
pretty
);
const
void
*
obj
,
bool
pretty
);
extern
char
*
format_node_dump
(
const
char
*
dump
);
extern
char
*
pretty_format_node_dump
(
const
char
*
dump
);
extern
void
print_rt
(
List
*
rtable
);
extern
void
print_expr
(
Node
*
expr
,
List
*
rtable
);
extern
void
print_pathkeys
(
List
*
pathkeys
,
List
*
rtable
);
extern
void
print_tl
(
List
*
tlist
,
List
*
rtable
);
extern
void
print_rt
(
const
List
*
rtable
);
extern
void
print_expr
(
const
Node
*
expr
,
const
List
*
rtable
);
extern
void
print_pathkeys
(
const
List
*
pathkeys
,
const
List
*
rtable
);
extern
void
print_tl
(
const
List
*
tlist
,
const
List
*
rtable
);
extern
void
print_slot
(
TupleTableSlot
*
slot
);
#endif
/* PRINT_H */
src/include/optimizer/clauses.h
浏览文件 @
d5f23af6
...
...
@@ -31,8 +31,8 @@ typedef struct
extern
Expr
*
make_opclause
(
Oid
opno
,
Oid
opresulttype
,
bool
opretset
,
Expr
*
leftop
,
Expr
*
rightop
,
Oid
opcollid
,
Oid
inputcollid
);
extern
Node
*
get_leftop
(
Expr
*
clause
);
extern
Node
*
get_rightop
(
Expr
*
clause
);
extern
Node
*
get_leftop
(
const
Expr
*
clause
);
extern
Node
*
get_rightop
(
const
Expr
*
clause
);
extern
bool
not_clause
(
Node
*
clause
);
extern
Expr
*
make_notclause
(
Expr
*
notclause
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录