diff --git a/doc/src/sgml/ports.sgml b/doc/src/sgml/ports.sgml index fbc9ecd9a71dacd709b6f09d73be77cab44ed1ce..869d7ad85383a11d7c7e2f108b3f32acce4c1622 100644 --- a/doc/src/sgml/ports.sgml +++ b/doc/src/sgml/ports.sgml @@ -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> diff --git a/doc/src/sgml/ref/create_rule.sgml b/doc/src/sgml/ref/create_rule.sgml index 05845f0752cbaf399b01beb8a8e4583234b6391a..243647c03ebf57bc3428e9cf07452651752b0031 100644 --- a/doc/src/sgml/ref/create_rule.sgml +++ b/doc/src/sgml/ref/create_rule.sgml @@ -198,11 +198,11 @@ Without <example> <title>Example of a circular rewrite rule combination.</title> <programlisting> -create rule bad_rule_combination_1 is +create rule bad_rule_combination_1 as on select to EMP do instead select to TOYEMP -create rule bad_rule_combination_2 is +create rule bad_rule_combination_2 as 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 is +create rule example_1 as 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 is +create rule example_2 as 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 is +create rule example_3 as 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 is +create rule example_4 as 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 is +create rule example_5 as on insert to EMP where new.salary > 5000 do update newset salary = 5000 </programlisting> diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index a3f813f64a574c3a326359ac8ed58e1f4e2e384b..8edcfcd4f02de2a9b991e41c29058917651fea4a 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.38 1999/01/25 18:02:15 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/planner.c,v 1.39 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); /* - * set the varno/attno entries to the appropriate references to + * get 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, diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c index 91dbd60163750c27a0bf576bd195df32760549aa..555fd7d093455f2c830be750b89dadf3023ea319 100644 --- a/src/backend/optimizer/plan/setrefs.c +++ b/src/backend/optimizer/plan/setrefs.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.34 1999/01/26 05:57:14 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.35 1999/02/02 17:46:15 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -701,7 +701,7 @@ OperandIsInner(Node *opnd, int inner_relid) /*--------------------------------------------------------- * * get_agg_tlist_references - - * changes the target list of an Agg node so that it points to + * generates 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! */ diff --git a/src/include/optimizer/planmain.h b/src/include/optimizer/planmain.h index eef980c9cce5deaff89aea114fc4910f403be70f..82024732f1c22573e8c7e6c85a6aa907c8a00a9e 100644 --- a/src/include/optimizer/planmain.h +++ b/src/include/optimizer/planmain.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: planmain.h,v 1.18 1999/01/25 18:02:28 momjian Exp $ + * $Id: planmain.h,v 1.19 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); diff --git a/src/man/create_rule.l b/src/man/create_rule.l index d83749f7bae2f143cf5cc88389325e68cb79c569..a30485ffe168af78f0e5ebaf22c6ce92c57296a1 100644 --- a/src/man/create_rule.l +++ b/src/man/create_rule.l @@ -1,6 +1,6 @@ .\" 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 is +create rule bad_rule_combination_1 as on select to EMP do instead select to TOYEMP -create rule bad_rule_combination_2 is +create rule bad_rule_combination_2 as 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 is +create rule example_1 as 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 is +create rule example_2 as 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 is +create rule example_3 as 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 is +create rule example_4 as 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 is +create rule example_5 as on insert to EMP where new.salary > 5000 do update newset salary = 5000 .fi