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
8e958b8a
Commit
8e958b8a
authored
Feb 02, 1999
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix create_rule is->as.
parent
7ab88a16
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
36 additions
and
44 deletions
+36
-44
doc/src/sgml/ports.sgml
doc/src/sgml/ports.sgml
+2
-6
doc/src/sgml/ref/create_rule.sgml
doc/src/sgml/ref/create_rule.sgml
+7
-7
src/backend/optimizer/plan/planner.c
src/backend/optimizer/plan/planner.c
+10
-10
src/backend/optimizer/plan/setrefs.c
src/backend/optimizer/plan/setrefs.c
+7
-11
src/include/optimizer/planmain.h
src/include/optimizer/planmain.h
+2
-2
src/man/create_rule.l
src/man/create_rule.l
+8
-8
No files found.
doc/src/sgml/ports.sgml
View file @
8e958b8a
...
...
@@ -235,7 +235,7 @@ At the time of publication, the following platforms have been tested:
<ENTRY>x86</ENTRY>
<ENTRY>v6.4</ENTRY>
<ENTRY>1998-10-08</ENTRY>
<ENTRY>
Mostly working with the Cygwin library. No DLLs yet
.
<ENTRY>
Working with the Cygwin library
.
(<ulink url="mailto:Dan.Horak@email.cz">Horak Daniel</ulink>) </ENTRY>
</ROW>
</TBODY>
...
...
@@ -251,11 +251,7 @@ confirmation of such at the time this list was compiled.
<para>
For <productname>Windows NT</productname>,
the server-side port of <productname>Postgres</productname> has recently been
accomplished. Check
<ulink url="http://www.askesis.nl/AskesisPostgresIndex.html">the Askesis Postgres Home Page</ulink>
for up to date information. You may also want to
look for possible patches on the
<ulink url="http://postgresql.org">Postgres web site</ulink>.
accomplished. The Cygnus library is required to compile it.
</para>
</note>
</sect1>
...
...
doc/src/sgml/ref/create_rule.sgml
View file @
8e958b8a
...
...
@@ -198,11 +198,11 @@ Without
<example>
<title>Example of a circular rewrite rule combination.</title>
<programlisting>
create rule bad_rule_combination_1
i
s
create rule bad_rule_combination_1
a
s
on select to EMP
do instead select to TOYEMP
create rule bad_rule_combination_2
i
s
create rule bad_rule_combination_2
a
s
on select to TOYEMP
do instead select to EMP
</programlisting>
...
...
@@ -232,7 +232,7 @@ select * from EMP
Make Sam get the same salary adjustment as Joe:
<programlisting>
create rule example_1
i
s
create rule example_1
a
s
on update EMP.salary where current.name = "Joe"
do update EMP (salary = new.salary)
where EMP.name = "Sam"
...
...
@@ -248,7 +248,7 @@ create rule example_1 is
<para>
Make Bill get Joe's salary when it is accessed:
<programlisting>
create rule example_2
i
s
create rule example_2
a
s
on select to EMP.salary
where current.name = "Bill"
do instead
...
...
@@ -261,7 +261,7 @@ create rule example_2 is
department (<function>current_user</function> returns the name of
the current user):
<programlisting>
create rule example_3
i
s
create rule example_3
a
s
on select to EMP.salary
where current.dept = "shoe" and current_user = "Joe"
do instead nothing
...
...
@@ -272,7 +272,7 @@ create rule example_3 is
<programlisting>
create TOYEMP(name = char16, salary = int4)
create rule example_4
i
s
create rule example_4
a
s
on select to TOYEMP
do instead
select (EMP.name, EMP.salary) from EMP
...
...
@@ -282,7 +282,7 @@ create rule example_4 is
<para>
All new employees must make 5,000 or less
<programlisting>
create rule example_5
i
s
create rule example_5
a
s
on insert to EMP where new.salary > 5000
do update newset salary = 5000
</programlisting>
...
...
src/backend/optimizer/plan/planner.c
View file @
8e958b8a
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.3
8 1999/01/25 18:02:15
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.3
9 1999/02/02 17:46:14
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -235,11 +235,10 @@ union_planner(Query *parse)
/***S*H***/
/* Use 'new_tlist' instead of 'tlist' */
result_plan
=
make_groupPlan
(
&
new_tlist
,
tuplePerGroup
,
parse
->
groupClause
,
result_plan
);
result_plan
=
make_groupPlan
(
&
new_tlist
,
tuplePerGroup
,
parse
->
groupClause
,
result_plan
);
}
/*
...
...
@@ -255,13 +254,12 @@ union_planner(Query *parse)
result_plan
=
(
Plan
*
)
make_agg
(
tlist
,
result_plan
);
/*
*
s
et the varno/attno entries to the appropriate references to
*
g
et the varno/attno entries to the appropriate references to
* the result tuple of the subplans.
*/
((
Agg
*
)
result_plan
)
->
aggs
=
get_agg_tlist_references
((
Agg
*
)
result_plan
);
/***S*H***/
if
(
parse
->
havingQual
!=
NULL
)
{
...
...
@@ -299,11 +297,13 @@ union_planner(Query *parse)
((
Agg
*
)
result_plan
)
->
plan
.
qual
=
(
List
*
)
parse
->
havingQual
;
/* Check every clause of the havingQual for aggregates used and append
* them to result_plan->aggs */
* them to result_plan->aggs
*/
foreach
(
clause
,
((
Agg
*
)
result_plan
)
->
plan
.
qual
)
{
/* Make sure there are aggregates in the havingQual
* if so, the list must be longer after check_having_qual_for_aggs */
* if so, the list must be longer after check_having_qual_for_aggs
*/
old_length
=
length
(((
Agg
*
)
result_plan
)
->
aggs
);
((
Agg
*
)
result_plan
)
->
aggs
=
nconc
(((
Agg
*
)
result_plan
)
->
aggs
,
...
...
src/backend/optimizer/plan/setrefs.c
View file @
8e958b8a
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.3
4 1999/01/26 05:57:14
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.3
5 1999/02/02 17:46:15
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -701,7 +701,7 @@ OperandIsInner(Node *opnd, int inner_relid)
/*---------------------------------------------------------
*
* get_agg_tlist_references -
*
chang
es the target list of an Agg node so that it points to
*
generat
es the target list of an Agg node so that it points to
* the tuples returned by its left tree subplan.
*
* We now also generate a linked list of Aggref pointers for Agg.
...
...
@@ -1177,8 +1177,7 @@ check_having_qual_for_aggs(Node *clause, List *subplanTargetList, List *groupCla
foreach
(
t
,
((
List
*
)
((
SubLink
*
)
((
SubPlan
*
)
((
Expr
*
)
clause
)
->
oper
)
->
sublink
)
->
lefthand
))
{
agg_list
=
nconc
(
agg_list
,
agg_list
=
nconc
(
agg_list
,
check_having_qual_for_aggs
(
lfirst
(
t
),
subplanTargetList
,
groupClause
));
}
...
...
@@ -1190,9 +1189,8 @@ check_having_qual_for_aggs(Node *clause, List *subplanTargetList, List *groupCla
foreach
(
tmp_ptr
,
((
SubLink
*
)
((
SubPlan
*
)
((
Expr
*
)
clause
)
->
oper
)
->
sublink
)
->
oper
)
{
agg_list
=
nconc
(
agg_list
,
check_having_qual_for_aggs
((
Node
*
)
lfirst
(((
Expr
*
)
agg_list
=
nconc
(
agg_list
,
check_having_qual_for_aggs
((
Node
*
)
lfirst
(((
Expr
*
)
lfirst
(
tmp_ptr
))
->
args
),
subplanTargetList
,
groupClause
));
}
...
...
@@ -1220,9 +1218,8 @@ check_having_qual_for_aggs(Node *clause, List *subplanTargetList, List *groupCla
*/
if
(
contained_in_group_clause
)
{
agg_list
=
nconc
(
agg_list
,
check_having_qual_for_aggs
(
lfirst
(
t
),
agg_list
=
nconc
(
agg_list
,
check_having_qual_for_aggs
(
lfirst
(
t
),
subplanTargetList
,
groupClause
));
}
else
...
...
@@ -1235,7 +1232,6 @@ check_having_qual_for_aggs(Node *clause, List *subplanTargetList, List *groupCla
}
else
{
/*
* Ooops! we can not handle that!
*/
...
...
src/include/optimizer/planmain.h
View file @
8e958b8a
...
...
@@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: planmain.h,v 1.1
8 1999/01/25 18:02:28
momjian Exp $
* $Id: planmain.h,v 1.1
9 1999/02/02 17:46:16
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -51,7 +51,7 @@ extern void add_missing_vars_to_tlist(Query *root, List *tlist);
*/
extern
void
set_tlist_references
(
Plan
*
plan
);
extern
List
*
join_references
(
List
*
clauses
,
List
*
outer_tlist
,
List
*
inner_tlist
);
List
*
inner_tlist
);
extern
List
*
index_outerjoin_references
(
List
*
inner_indxqual
,
List
*
outer_tlist
,
Index
inner_relid
);
extern
List
*
get_agg_tlist_references
(
Agg
*
aggNode
);
...
...
src/man/create_rule.l
View file @
8e958b8a
.\" This is -*-nroff-*-
.\" XXX standard disclaimer belongs here....
.\" $Header: /cvsroot/pgsql/src/man/Attic/create_rule.l,v 1.
9 1998/06/24 13:21:24
momjian Exp $
.\" $Header: /cvsroot/pgsql/src/man/Attic/create_rule.l,v 1.
10 1999/02/02 17:46:17
momjian Exp $
.TH "CREATE RULE" SQL 11/05/95 PostgreSQL PostgreSQL
.SH NAME
create rule - define a new rule
...
...
@@ -124,11 +124,11 @@ Postgres to
--
--Example of a circular rewrite rule combination.
--
create rule bad_rule_combination_1
i
s
create rule bad_rule_combination_1
a
s
on select to EMP
do instead select to TOYEMP
create rule bad_rule_combination_2
i
s
create rule bad_rule_combination_2
a
s
on select to TOYEMP
do instead select to EMP
...
...
@@ -146,7 +146,7 @@ access to a class in order to define a rule on it.
--
--Make Sam get the same salary adjustment as Joe
--
create rule example_1
i
s
create rule example_1
a
s
on update EMP.salary where current.name = "Joe"
do update EMP (salary = new.salary)
where EMP.name = "Sam"
...
...
@@ -161,7 +161,7 @@ Joe's salary on to Sam.
--
--Make Bill get Joe's salary when it is accessed
--
create rule example_2
i
s
create rule example_2
a
s
on select to EMP.salary
where current.name = "Bill"
do instead
...
...
@@ -172,7 +172,7 @@ create rule example_2 is
--Deny Joe access to the salary of employees in the shoe
--department. (pg_username() returns the name of the current user)
--
create rule example_3
i
s
create rule example_3
a
s
on select to EMP.salary
where current.dept = "shoe"
and pg_username() = "Joe"
...
...
@@ -184,7 +184,7 @@ create rule example_3 is
--
create TOYEMP(name = name, salary = int4)
create rule example_4
i
s
create rule example_4
a
s
on select to TOYEMP
do instead select (EMP.name, EMP.salary) from EMP
where EMP.dept = "toy"
...
...
@@ -193,7 +193,7 @@ create rule example_4 is
--
--All new employees must make 5,000 or less
--
create rule example_5
i
s
create rule example_5
a
s
on insert to EMP where new.salary > 5000
do update newset salary = 5000
.fi
...
...
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