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
5d27bf20
Commit
5d27bf20
authored
Jul 28, 2005
by
Tom Lane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make use of new list primitives list_append_unique and list_concat_unique
where applicable.
parent
ef85f5fa
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
44 additions
and
65 deletions
+44
-65
src/backend/optimizer/path/joinrels.c
src/backend/optimizer/path/joinrels.c
+6
-18
src/backend/optimizer/path/pathkeys.c
src/backend/optimizer/path/pathkeys.c
+5
-8
src/backend/optimizer/prep/prepunion.c
src/backend/optimizer/prep/prepunion.c
+16
-14
src/backend/optimizer/util/relnode.c
src/backend/optimizer/util/relnode.c
+3
-3
src/backend/parser/analyze.c
src/backend/parser/analyze.c
+5
-5
src/backend/rewrite/rewriteHandler.c
src/backend/rewrite/rewriteHandler.c
+2
-3
src/backend/utils/adt/acl.c
src/backend/utils/adt/acl.c
+4
-7
src/backend/utils/init/flatfiles.c
src/backend/utils/init/flatfiles.c
+3
-7
No files found.
src/backend/optimizer/path/joinrels.c
View file @
5d27bf20
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/optimizer/path/joinrels.c,v 1.7
4 2005/06/09 04:18:59
tgl Exp $
* $PostgreSQL: pgsql/src/backend/optimizer/path/joinrels.c,v 1.7
5 2005/07/28 22:27:00
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -44,7 +44,6 @@ make_rels_by_joins(PlannerInfo *root, int level, List **joinrels)
{
List
*
result_rels
=
NIL
;
List
*
new_rels
;
ListCell
*
nr
;
ListCell
*
r
;
int
k
;
...
...
@@ -121,13 +120,7 @@ make_rels_by_joins(PlannerInfo *root, int level, List **joinrels)
* for subsequent passes, do not enter the same RelOptInfo into
* our output list multiple times.
*/
foreach
(
nr
,
new_rels
)
{
RelOptInfo
*
jrel
=
(
RelOptInfo
*
)
lfirst
(
nr
);
if
(
!
list_member_ptr
(
result_rels
,
jrel
))
result_rels
=
lcons
(
jrel
,
result_rels
);
}
result_rels
=
list_concat_unique_ptr
(
result_rels
,
new_rels
);
}
/*
...
...
@@ -182,8 +175,9 @@ make_rels_by_joins(PlannerInfo *root, int level, List **joinrels)
jrel
=
make_join_rel
(
root
,
old_rel
,
new_rel
,
JOIN_INNER
);
/* Avoid making duplicate entries ... */
if
(
jrel
&&
!
list_member_ptr
(
result_rels
,
jrel
))
result_rels
=
lcons
(
jrel
,
result_rels
);
if
(
jrel
)
result_rels
=
list_append_unique_ptr
(
result_rels
,
jrel
);
}
}
}
...
...
@@ -224,13 +218,7 @@ make_rels_by_joins(PlannerInfo *root, int level, List **joinrels)
old_rel
,
other_rels
);
foreach
(
nr
,
new_rels
)
{
RelOptInfo
*
jrel
=
(
RelOptInfo
*
)
lfirst
(
nr
);
if
(
!
list_member_ptr
(
result_rels
,
jrel
))
result_rels
=
lcons
(
jrel
,
result_rels
);
}
result_rels
=
list_concat_unique_ptr
(
result_rels
,
new_rels
);
}
/*----------
...
...
src/backend/optimizer/path/pathkeys.c
View file @
5d27bf20
...
...
@@ -11,7 +11,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/optimizer/path/pathkeys.c,v 1.7
0 2005/07/03 18:26:32
tgl Exp $
* $PostgreSQL: pgsql/src/backend/optimizer/path/pathkeys.c,v 1.7
1 2005/07/28 22:27:00
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -163,7 +163,7 @@ add_equijoined_keys(PlannerInfo *root, RestrictInfo *restrictinfo)
newset
=
list_make2
(
item1
,
item2
);
/* Found a set to merge into our new set */
newset
=
list_
union
(
newset
,
curset
);
newset
=
list_
concat_unique
(
newset
,
curset
);
/*
* Remove old set from equi_key_list.
...
...
@@ -714,8 +714,7 @@ canonicalize_pathkeys(PlannerInfo *root, List *pathkeys)
* canonicalized the keys, so that equivalent-key knowledge is
* used when deciding if an item is redundant.
*/
if
(
!
list_member_ptr
(
new_pathkeys
,
cpathkey
))
new_pathkeys
=
lappend
(
new_pathkeys
,
cpathkey
);
new_pathkeys
=
list_append_unique_ptr
(
new_pathkeys
,
cpathkey
);
}
return
new_pathkeys
;
}
...
...
@@ -1024,8 +1023,7 @@ build_index_pathkeys(PlannerInfo *root,
* Eliminate redundant ordering info; could happen if query is
* such that index keys are equijoined...
*/
if
(
!
list_member_ptr
(
retval
,
cpathkey
))
retval
=
lappend
(
retval
,
cpathkey
);
retval
=
list_append_unique_ptr
(
retval
,
cpathkey
);
indexkeys
++
;
ordering
++
;
...
...
@@ -1467,8 +1465,7 @@ make_pathkeys_for_mergeclauses(PlannerInfo *root,
* pathkey, a simple ptrMember test is sufficient to detect
* redundant keys.
*/
if
(
!
list_member_ptr
(
pathkeys
,
pathkey
))
pathkeys
=
lappend
(
pathkeys
,
pathkey
);
pathkeys
=
list_append_unique_ptr
(
pathkeys
,
pathkey
);
}
return
pathkeys
;
...
...
src/backend/optimizer/prep/prepunion.c
View file @
5d27bf20
...
...
@@ -14,7 +14,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/optimizer/prep/prepunion.c,v 1.12
4 2005/06/10 02:21:05
tgl Exp $
* $PostgreSQL: pgsql/src/backend/optimizer/prep/prepunion.c,v 1.12
5 2005/07/28 22:27:00
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -706,21 +706,24 @@ tlist_same_datatypes(List *tlist, List *colTypes, bool junkOK)
List
*
find_all_inheritors
(
Oid
parentrel
)
{
List
*
examined_relids
=
NIL
;
List
*
unexamined_relids
=
list_make1_oid
(
parentrel
)
;
List
*
rels_list
;
List
Cell
*
l
;
/*
* While the queue of unexamined relids is nonempty, remove the first
* element, mark it examined, and find its direct descendants. NB:
* cannot use foreach(), since we modify the queue inside loop.
/*
* We build a list starting with the given rel and adding all direct and
* indirect children. We can use a single list as both the record of
* already-found rels and the agenda of rels yet to be scanned for more
* children. This is a bit tricky but works because the foreach() macro
* doesn't fetch the next list element until the bottom of the loop.
*/
while
(
unexamined_relids
!=
NIL
)
rels_list
=
list_make1_oid
(
parentrel
);
foreach
(
l
,
rels_list
)
{
Oid
currentrel
=
l
initial_oid
(
unexamined_relids
);
Oid
currentrel
=
l
first_oid
(
l
);
List
*
currentchildren
;
unexamined_relids
=
list_delete_first
(
unexamined_relids
);
examined_relids
=
lappend_oid
(
examined_relids
,
currentrel
);
/* Get the direct children of this rel */
currentchildren
=
find_inheritance_children
(
currentrel
);
/*
...
...
@@ -730,11 +733,10 @@ find_all_inheritors(Oid parentrel)
* into an infinite loop, though theoretically there can't be any
* cycles in the inheritance graph anyway.)
*/
currentchildren
=
list_difference_oid
(
currentchildren
,
examined_relids
);
unexamined_relids
=
list_union_oid
(
unexamined_relids
,
currentchildren
);
rels_list
=
list_concat_unique_oid
(
rels_list
,
currentchildren
);
}
return
examined_relids
;
return
rels_list
;
}
/*
...
...
src/backend/optimizer/util/relnode.c
View file @
5d27bf20
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/optimizer/util/relnode.c,v 1.7
0 2005/06/09 04:19
:00 tgl Exp $
* $PostgreSQL: pgsql/src/backend/optimizer/util/relnode.c,v 1.7
1 2005/07/28 22:27
:00 tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -619,8 +619,8 @@ subbuild_joinrel_joinlist(RelOptInfo *joinrel,
* in, no great harm is done --- they'll be detected by
* redundant-clause testing when they reach a restriction list.)
*/
if
(
!
list_member_ptr
(
joinrel
->
joininfo
,
rinfo
))
joinrel
->
joininfo
=
lappend
(
joinrel
->
joininfo
,
rinfo
);
joinrel
->
joininfo
=
list_append_unique_ptr
(
joinrel
->
joininfo
,
rinfo
);
}
}
}
src/backend/parser/analyze.c
View file @
5d27bf20
...
...
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/backend/parser/analyze.c,v 1.32
2 2005/06/05 00:38:09
tgl Exp $
* $PostgreSQL: pgsql/src/backend/parser/analyze.c,v 1.32
3 2005/07/28 22:27:00
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -2789,8 +2789,8 @@ transformLocking(Query *qry, List *lockedRels, bool forUpdate)
switch
(
rte
->
rtekind
)
{
case
RTE_RELATION
:
if
(
!
list_member_int
(
rowMarks
,
i
))
/*
avoid duplicates */
rowMarks
=
lappend
_int
(
rowMarks
,
i
);
/* use list_append_unique to
avoid duplicates */
rowMarks
=
list_append_unique
_int
(
rowMarks
,
i
);
rte
->
requiredPerms
|=
ACL_SELECT_FOR_UPDATE
;
break
;
case
RTE_SUBQUERY
:
...
...
@@ -2826,8 +2826,8 @@ transformLocking(Query *qry, List *lockedRels, bool forUpdate)
switch
(
rte
->
rtekind
)
{
case
RTE_RELATION
:
if
(
!
list_member_int
(
rowMarks
,
i
))
/*
avoid duplicates */
rowMarks
=
lappend
_int
(
rowMarks
,
i
);
/* use list_append_unique to
avoid duplicates */
rowMarks
=
list_append_unique
_int
(
rowMarks
,
i
);
rte
->
requiredPerms
|=
ACL_SELECT_FOR_UPDATE
;
break
;
case
RTE_SUBQUERY
:
...
...
src/backend/rewrite/rewriteHandler.c
View file @
5d27bf20
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.15
5 2005/06/28 05:08:59
tgl Exp $
* $PostgreSQL: pgsql/src/backend/rewrite/rewriteHandler.c,v 1.15
6 2005/07/28 22:27:02
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -1001,8 +1001,7 @@ markQueryForLocking(Query *qry, bool forUpdate, bool skipOldNew)
if
(
rte
->
rtekind
==
RTE_RELATION
)
{
if
(
!
list_member_int
(
qry
->
rowMarks
,
rti
))
qry
->
rowMarks
=
lappend_int
(
qry
->
rowMarks
,
rti
);
qry
->
rowMarks
=
list_append_unique_int
(
qry
->
rowMarks
,
rti
);
rte
->
requiredPerms
|=
ACL_SELECT_FOR_UPDATE
;
}
else
if
(
rte
->
rtekind
==
RTE_SUBQUERY
)
...
...
src/backend/utils/adt/acl.c
View file @
5d27bf20
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.12
2 2005/07/26 16:38:27
tgl Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/acl.c,v 1.12
3 2005/07/28 22:27:02
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -2843,8 +2843,7 @@ has_privs_of_role(Oid member, Oid role)
* graph, we must test for having already seen this role.
* It is legal for instance to have both A->B and A->C->B.
*/
if
(
!
list_member_oid
(
roles_list
,
otherid
))
roles_list
=
lappend_oid
(
roles_list
,
otherid
);
roles_list
=
list_append_unique_oid
(
roles_list
,
otherid
);
}
ReleaseSysCacheList
(
memlist
);
}
...
...
@@ -2931,8 +2930,7 @@ is_member_of_role(Oid member, Oid role)
* graph, we must test for having already seen this role.
* It is legal for instance to have both A->B and A->C->B.
*/
if
(
!
list_member_oid
(
roles_list
,
otherid
))
roles_list
=
lappend_oid
(
roles_list
,
otherid
);
roles_list
=
list_append_unique_oid
(
roles_list
,
otherid
);
}
ReleaseSysCacheList
(
memlist
);
}
...
...
@@ -3024,8 +3022,7 @@ is_admin_of_role(Oid member, Oid role)
break
;
}
if
(
!
list_member_oid
(
roles_list
,
otherid
))
roles_list
=
lappend_oid
(
roles_list
,
otherid
);
roles_list
=
list_append_unique_oid
(
roles_list
,
otherid
);
}
ReleaseSysCacheList
(
memlist
);
if
(
result
)
...
...
src/backend/utils/init/flatfiles.c
View file @
5d27bf20
...
...
@@ -23,7 +23,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/backend/utils/init/flatfiles.c,v 1.1
2 2005/07/04 04:51:50
tgl Exp $
* $PostgreSQL: pgsql/src/backend/utils/init/flatfiles.c,v 1.1
3 2005/07/28 22:27:02
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -571,12 +571,8 @@ write_auth_file(Relation rel_authid, Relation rel_authmem)
* Now add all the new roles to roles_list.
*/
for
(
i
=
first_found
;
i
<=
last_found
;
i
++
)
{
Oid
rolid
=
authmem_info
[
i
].
roleid
;
if
(
!
list_member_oid
(
roles_list
,
rolid
))
roles_list
=
lappend_oid
(
roles_list
,
rolid
);
}
roles_list
=
list_append_unique_oid
(
roles_list
,
authmem_info
[
i
].
roleid
);
}
/*
...
...
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