Subselects with =, >, etc.
Cleanup for vacuum help, manual page, and error message
This commit is contained in:
parent
f00a9e3e9f
commit
00f325d510
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.59 1998/01/31 04:38:21 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/commands/vacuum.c,v 1.60 1998/02/03 19:26:33 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -135,7 +135,9 @@ vacuum(char *vacrel, bool verbose, bool analyze, List *va_spec)
|
|||||||
pmem = PortalGetVariableMemory(vc_portal);
|
pmem = PortalGetVariableMemory(vc_portal);
|
||||||
old = MemoryContextSwitchTo((MemoryContext) pmem);
|
old = MemoryContextSwitchTo((MemoryContext) pmem);
|
||||||
|
|
||||||
Assert(va_spec == NIL || analyze);
|
if (va_spec == NIL || analyze)
|
||||||
|
elog(ERROR,"Can't vacuum columns, only tables. You can 'vacuum analyze' columns.");
|
||||||
|
|
||||||
foreach(le, va_spec)
|
foreach(le, va_spec)
|
||||||
{
|
{
|
||||||
char *col = (char *) lfirst(le);
|
char *col = (char *) lfirst(le);
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.102 1998/02/03 16:04:02 thomas Exp $
|
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.103 1998/02/03 19:26:41 momjian Exp $
|
||||||
*
|
*
|
||||||
* HISTORY
|
* HISTORY
|
||||||
* AUTHOR DATE MAJOR EVENT
|
* AUTHOR DATE MAJOR EVENT
|
||||||
@ -2916,6 +2916,76 @@ row_expr: '(' row_descriptor ')' IN '(' SubSelect ')'
|
|||||||
n->subselect = $7;
|
n->subselect = $7;
|
||||||
$$ = (Node *)n;
|
$$ = (Node *)n;
|
||||||
}
|
}
|
||||||
|
| '(' row_descriptor ')' '+' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("+",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '-' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("-",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '/' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("/",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '*' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("*",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '<' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("<",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '>' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons(">",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '=' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("=",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
| '(' row_descriptor ')' Op ALL '(' SubSelect ')'
|
| '(' row_descriptor ')' Op ALL '(' SubSelect ')'
|
||||||
{
|
{
|
||||||
SubLink *n = makeNode(SubLink);
|
SubLink *n = makeNode(SubLink);
|
||||||
@ -2926,6 +2996,76 @@ row_expr: '(' row_descriptor ')' IN '(' SubSelect ')'
|
|||||||
n->subselect = $7;
|
n->subselect = $7;
|
||||||
$$ = (Node *)n;
|
$$ = (Node *)n;
|
||||||
}
|
}
|
||||||
|
| '(' row_descriptor ')' '+' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("+",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '-' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("-",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '/' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("/",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '*' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("*",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '<' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("<",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '>' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons(">",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '=' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("=",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $7;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
| '(' row_descriptor ')' Op '(' SubSelect ')'
|
| '(' row_descriptor ')' Op '(' SubSelect ')'
|
||||||
{
|
{
|
||||||
SubLink *n = makeNode(SubLink);
|
SubLink *n = makeNode(SubLink);
|
||||||
@ -2939,10 +3079,108 @@ row_expr: '(' row_descriptor ')' IN '(' SubSelect ')'
|
|||||||
n->subselect = $6;
|
n->subselect = $6;
|
||||||
$$ = (Node *)n;
|
$$ = (Node *)n;
|
||||||
}
|
}
|
||||||
|
| '(' row_descriptor ')' '+' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("+", NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = EXPR_SUBLINK;
|
||||||
|
n->subselect = $6;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '-' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("-", NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = EXPR_SUBLINK;
|
||||||
|
n->subselect = $6;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '/' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("/", NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = EXPR_SUBLINK;
|
||||||
|
n->subselect = $6;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '*' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("*", NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = EXPR_SUBLINK;
|
||||||
|
n->subselect = $6;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '<' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("<", NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = EXPR_SUBLINK;
|
||||||
|
n->subselect = $6;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '>' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons(">", NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = EXPR_SUBLINK;
|
||||||
|
n->subselect = $6;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '=' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = $2;
|
||||||
|
n->oper = lcons("=", NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = EXPR_SUBLINK;
|
||||||
|
n->subselect = $6;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
| '(' row_descriptor ')' Op '(' row_descriptor ')'
|
| '(' row_descriptor ')' Op '(' row_descriptor ')'
|
||||||
{
|
{
|
||||||
$$ = makeRowExpr($4, $2, $6);
|
$$ = makeRowExpr($4, $2, $6);
|
||||||
}
|
}
|
||||||
|
| '(' row_descriptor ')' '+' '(' row_descriptor ')'
|
||||||
|
{
|
||||||
|
$$ = makeRowExpr("+", $2, $6);
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '-' '(' row_descriptor ')'
|
||||||
|
{
|
||||||
|
$$ = makeRowExpr("-", $2, $6);
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '/' '(' row_descriptor ')'
|
||||||
|
{
|
||||||
|
$$ = makeRowExpr("/", $2, $6);
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '*' '(' row_descriptor ')'
|
||||||
|
{
|
||||||
|
$$ = makeRowExpr("*", $2, $6);
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '<' '(' row_descriptor ')'
|
||||||
|
{
|
||||||
|
$$ = makeRowExpr("<", $2, $6);
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '>' '(' row_descriptor ')'
|
||||||
|
{
|
||||||
|
$$ = makeRowExpr(">", $2, $6);
|
||||||
|
}
|
||||||
|
| '(' row_descriptor ')' '=' '(' row_descriptor ')'
|
||||||
|
{
|
||||||
|
$$ = makeRowExpr("=", $2, $6);
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
row_descriptor: row_list ',' a_expr
|
row_descriptor: row_list ',' a_expr
|
||||||
@ -3320,6 +3558,76 @@ a_expr: attr opt_indirection
|
|||||||
n->subselect = $5;
|
n->subselect = $5;
|
||||||
$$ = (Node *)n;
|
$$ = (Node *)n;
|
||||||
}
|
}
|
||||||
|
| a_expr '+' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1,NIL);
|
||||||
|
n->oper = lcons("+",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '-' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1,NIL);
|
||||||
|
n->oper = lcons("-",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '/' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1,NIL);
|
||||||
|
n->oper = lcons("/",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '*' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1,NIL);
|
||||||
|
n->oper = lcons("*",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '<' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1,NIL);
|
||||||
|
n->oper = lcons("<",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '>' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1,NIL);
|
||||||
|
n->oper = lcons(">",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '=' ANY '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1,NIL);
|
||||||
|
n->oper = lcons("=",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ANY_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
| a_expr Op ALL '(' SubSelect ')'
|
| a_expr Op ALL '(' SubSelect ')'
|
||||||
{
|
{
|
||||||
SubLink *n = makeNode(SubLink);
|
SubLink *n = makeNode(SubLink);
|
||||||
@ -3330,6 +3638,76 @@ a_expr: attr opt_indirection
|
|||||||
n->subselect = $5;
|
n->subselect = $5;
|
||||||
$$ = (Node *)n;
|
$$ = (Node *)n;
|
||||||
}
|
}
|
||||||
|
| a_expr '+' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("+",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '-' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("-",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '/' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("/",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '*' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("*",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '<' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("<",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '>' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons(">",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '=' ALL '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("=",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $5;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
| a_expr Op '(' SubSelect ')'
|
| a_expr Op '(' SubSelect ')'
|
||||||
{
|
{
|
||||||
SubLink *n = makeNode(SubLink);
|
SubLink *n = makeNode(SubLink);
|
||||||
@ -3340,6 +3718,76 @@ a_expr: attr opt_indirection
|
|||||||
n->subselect = $4;
|
n->subselect = $4;
|
||||||
$$ = (Node *)n;
|
$$ = (Node *)n;
|
||||||
}
|
}
|
||||||
|
| a_expr '+' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("+",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $4;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '-' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("-",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $4;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '/' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("/",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $4;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '*' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("*",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $4;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '<' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("<",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $4;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '>' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons(">",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $4;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
|
| a_expr '=' '(' SubSelect ')'
|
||||||
|
{
|
||||||
|
SubLink *n = makeNode(SubLink);
|
||||||
|
n->lefthand = lcons($1, NULL);
|
||||||
|
n->oper = lcons("=",NIL);
|
||||||
|
n->useor = false;
|
||||||
|
n->subLinkType = ALL_SUBLINK;
|
||||||
|
n->subselect = $4;
|
||||||
|
$$ = (Node *)n;
|
||||||
|
}
|
||||||
| a_expr AND a_expr
|
| a_expr AND a_expr
|
||||||
{ $$ = makeA_Expr(AND, NULL, $1, $3); }
|
{ $$ = makeA_Expr(AND, NULL, $1, $3); }
|
||||||
| a_expr OR a_expr
|
| a_expr OR a_expr
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: psqlHelp.h,v 1.39 1998/01/22 23:05:09 momjian Exp $
|
* $Id: psqlHelp.h,v 1.40 1998/02/03 19:27:00 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -292,9 +292,10 @@ set R_PLANS to {'ON' | 'OFF'}"},
|
|||||||
"update <class_name> set <attr1>=<expr1>,...<attrN>=<exprN> [from <from_clause>] [where <qual>];"},
|
"update <class_name> set <attr1>=<expr1>,...<attrN>=<exprN> [from <from_clause>] [where <qual>];"},
|
||||||
{"vacuum",
|
{"vacuum",
|
||||||
"vacuum the database, i.e. cleans out deleted records, updates statistics",
|
"vacuum the database, i.e. cleans out deleted records, updates statistics",
|
||||||
"vacuum [verbose] [analyze]\n\
|
"\
|
||||||
|
vacuum [verbose] [analyze] [table]\n\
|
||||||
\tor\n\
|
\tor\n\
|
||||||
vacuum [verbose] [analyze] table [analyze [(attr1, ... attrN)] ];"},
|
vacuum [verbose] analyze [table [(attr1, ... attrN)]];"},
|
||||||
{NULL, NULL, NULL} /* important to keep a NULL terminator
|
{NULL, NULL, NULL} /* important to keep a NULL terminator
|
||||||
* here! */
|
* here! */
|
||||||
};
|
};
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1994, Regents of the University of California
|
* Copyright (c) 1994, Regents of the University of California
|
||||||
*
|
*
|
||||||
* $Id: pg_type.h,v 1.29 1998/02/03 01:53:24 momjian Exp $
|
* $Id: pg_type.h,v 1.30 1998/02/03 19:27:17 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* the genbki.sh script reads this file and generates .bki
|
* the genbki.sh script reads this file and generates .bki
|
||||||
@ -366,7 +366,7 @@ DESCR("limited-range ISO-format date and time");
|
|||||||
|
|
||||||
|
|
||||||
#define USE_ATTTYPMOD(typeid) ((typeid) == BPCHAROID || (typeid) == VARCHAROID)
|
#define USE_ATTTYPMOD(typeid) ((typeid) == BPCHAROID || (typeid) == VARCHAROID)
|
||||||
#define VARLENA_FIXED_SIZE(typeid) ((typeid) == BPCHAROID)
|
#define VARLENA_FIXED_SIZE(attr) (false && (attr)->atttypid == BPCHAROID && (attr)->atttypmod > 0)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* prototypes for functions in pg_type.c
|
* prototypes for functions in pg_type.c
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
.\" This is -*-nroff-*-
|
.\" This is -*-nroff-*-
|
||||||
.\" XXX standard disclaimer belongs here....
|
.\" XXX standard disclaimer belongs here....
|
||||||
.\" $Header: /cvsroot/pgsql/src/man/Attic/vacuum.l,v 1.7 1998/01/11 22:18:01 momjian Exp $
|
.\" $Header: /cvsroot/pgsql/src/man/Attic/vacuum.l,v 1.8 1998/02/03 19:27:30 momjian Exp $
|
||||||
.TH VACUUM SQL 11/05/95 PostgreSQL PostgreSQL
|
.TH VACUUM SQL 11/05/95 PostgreSQL PostgreSQL
|
||||||
.SH NAME
|
.SH NAME
|
||||||
vacuum - vacuum a database
|
vacuum - vacuum a database
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.nf
|
.nf
|
||||||
\fBvacuum [verbose] [analyze] [\fPtable [(column,...)]\fB]\fP
|
\fBvacuum [verbose] [analyze] [\fPtable\fB]\fP
|
||||||
|
\fBvacuum [verbose] analyze [\fPtable [(column,...)]\fB]\fP
|
||||||
.fi
|
.fi
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.BR Vacuum
|
.BR Vacuum
|
||||||
|
Loading…
x
Reference in New Issue
Block a user