mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
AIX patch from Darren King and Univel patch from Billy Allie, mostly
related to grammar and parser issues, with one postmaster fix.
This commit is contained in:
@ -10,7 +10,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.99 1998/01/25 04:12:28 scrappy Exp $
|
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 1.100 1998/02/01 19:43:34 momjian Exp $
|
||||||
*
|
*
|
||||||
* HISTORY
|
* HISTORY
|
||||||
* AUTHOR DATE MAJOR EVENT
|
* AUTHOR DATE MAJOR EVENT
|
||||||
@ -125,8 +125,6 @@ Oid param_type(int t); /* used in parse_expr.c */
|
|||||||
ExplainStmt, VariableSetStmt, VariableShowStmt, VariableResetStmt,
|
ExplainStmt, VariableSetStmt, VariableShowStmt, VariableResetStmt,
|
||||||
CreateUserStmt, AlterUserStmt, DropUserStmt
|
CreateUserStmt, AlterUserStmt, DropUserStmt
|
||||||
|
|
||||||
%type <rtstmt>
|
|
||||||
|
|
||||||
%type <str> opt_database, location
|
%type <str> opt_database, location
|
||||||
|
|
||||||
%type <pboolean> user_createdb_clause, user_createuser_clause
|
%type <pboolean> user_createdb_clause, user_createuser_clause
|
||||||
@ -261,7 +259,7 @@ Oid param_type(int t); /* used in parse_expr.c */
|
|||||||
SECOND_P, SELECT, SET, SUBSTRING,
|
SECOND_P, SELECT, SET, SUBSTRING,
|
||||||
TABLE, TIME, TIMESTAMP, TO, TRAILING, TRANSACTION, TRIM,
|
TABLE, TIME, TIMESTAMP, TO, TRAILING, TRANSACTION, TRIM,
|
||||||
UNION, UNIQUE, UPDATE, USING,
|
UNION, UNIQUE, UPDATE, USING,
|
||||||
VALUES, VARCHAR, VARYING, VERBOSE, VERSION, VIEW,
|
VALUES, VARCHAR, VARYING, VIEW,
|
||||||
WHERE, WITH, WORK, YEAR_P, ZONE
|
WHERE, WITH, WORK, YEAR_P, ZONE
|
||||||
|
|
||||||
/* Keywords (in SQL3 reserved words) */
|
/* Keywords (in SQL3 reserved words) */
|
||||||
@ -2222,7 +2220,7 @@ LockStmt: LOCK_P relation_name
|
|||||||
c->typename->name = xlateSqlType("bool");
|
c->typename->name = xlateSqlType("bool");
|
||||||
|
|
||||||
n->relname = $2;
|
n->relname = $2;
|
||||||
n->whereClause = c;
|
n->whereClause = (Node *)c;
|
||||||
$$ = (Node *)n;
|
$$ = (Node *)n;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
@ -3284,8 +3282,9 @@ a_expr: attr opt_indirection
|
|||||||
makeA_Expr(OP, "<", $1, $4),
|
makeA_Expr(OP, "<", $1, $4),
|
||||||
makeA_Expr(OP, ">", $1, $6));
|
makeA_Expr(OP, ">", $1, $6));
|
||||||
}
|
}
|
||||||
| a_expr IN { saved_In_Expr = lcons($1,saved_In_Expr); } '(' in_expr ')' { saved_In_Expr = lnext(saved_In_Expr); }
|
| a_expr IN { saved_In_Expr = lcons($1,saved_In_Expr); } '(' in_expr ')'
|
||||||
{
|
{
|
||||||
|
saved_In_Expr = lnext(saved_In_Expr);
|
||||||
if (nodeTag($5) == T_SubLink)
|
if (nodeTag($5) == T_SubLink)
|
||||||
{
|
{
|
||||||
SubLink *n = (SubLink *)$5;
|
SubLink *n = (SubLink *)$5;
|
||||||
@ -3297,8 +3296,9 @@ a_expr: attr opt_indirection
|
|||||||
}
|
}
|
||||||
else $$ = $5;
|
else $$ = $5;
|
||||||
}
|
}
|
||||||
| a_expr NOT IN { saved_In_Expr = lcons($1,saved_In_Expr); } '(' not_in_expr ')' { saved_In_Expr = lnext(saved_In_Expr); }
|
| a_expr NOT IN { saved_In_Expr = lcons($1,saved_In_Expr); } '(' not_in_expr ')'
|
||||||
{
|
{
|
||||||
|
saved_In_Expr = lnext(saved_In_Expr);
|
||||||
if (nodeTag($6) == T_SubLink)
|
if (nodeTag($6) == T_SubLink)
|
||||||
{
|
{
|
||||||
SubLink *n = (SubLink *)$6;
|
SubLink *n = (SubLink *)$6;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.12 1998/01/20 22:11:55 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.13 1998/02/01 19:43:37 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -242,25 +242,24 @@ transformExpr(ParseState *pstate, Node *expr, int precedence)
|
|||||||
{
|
{
|
||||||
SubLink *sublink = (SubLink *) expr;
|
SubLink *sublink = (SubLink *) expr;
|
||||||
QueryTreeList *qtree;
|
QueryTreeList *qtree;
|
||||||
Query *subselect;
|
|
||||||
List *llist;
|
List *llist;
|
||||||
|
|
||||||
qtree = parse_analyze(lcons(sublink->subselect,NIL), pstate);
|
qtree = parse_analyze(lcons(sublink->subselect,NIL), pstate);
|
||||||
Assert(qtree->len == 1);
|
Assert(qtree->len == 1);
|
||||||
sublink->subselect = (Node *) subselect = qtree->qtrees[0];
|
sublink->subselect = (Node *) qtree->qtrees[0];
|
||||||
|
|
||||||
foreach(llist, sublink->lefthand)
|
foreach(llist, sublink->lefthand)
|
||||||
lfirst(llist) = transformExpr(pstate, lfirst(llist), precedence);
|
lfirst(llist) = transformExpr(pstate, lfirst(llist), precedence);
|
||||||
|
|
||||||
if (length(sublink->lefthand) !=
|
if (length(sublink->lefthand) !=
|
||||||
length(subselect->targetList))
|
length(sublink->subselect->targetList))
|
||||||
elog(ERROR,"Subselect has too many or too few fields.");
|
elog(ERROR,"Subselect has too many or too few fields.");
|
||||||
|
|
||||||
if (sublink->subLinkType != EXISTS_SUBLINK)
|
if (sublink->subLinkType != EXISTS_SUBLINK)
|
||||||
{
|
{
|
||||||
char *op = lfirst(sublink->oper);
|
char *op = lfirst(sublink->oper);
|
||||||
List *left_expr = sublink->lefthand;
|
List *left_expr = sublink->lefthand;
|
||||||
List *right_expr = subselect->targetList;
|
List *right_expr = sublink->subselect->targetList;
|
||||||
List *elist;
|
List *elist;
|
||||||
|
|
||||||
sublink->oper = NIL;
|
sublink->oper = NIL;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.63 1998/01/26 01:41:35 scrappy Exp $
|
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.64 1998/02/01 19:43:46 momjian Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* this is the "main" module of the postgres backend and
|
* this is the "main" module of the postgres backend and
|
||||||
@ -492,7 +492,7 @@ pg_parse_and_plan(char *query_string, /* string to execute */
|
|||||||
|
|
||||||
for (i = 0; i < querytree_list->len; i++)
|
for (i = 0; i < querytree_list->len; i++)
|
||||||
{
|
{
|
||||||
print(querytree_list->qtrees[i]);
|
nodeDisplay(querytree_list->qtrees[i]);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1293,7 +1293,7 @@ PostgresMain(int argc, char *argv[])
|
|||||||
if (IsUnderPostmaster == false)
|
if (IsUnderPostmaster == false)
|
||||||
{
|
{
|
||||||
puts("\nPOSTGRES backend interactive interface");
|
puts("\nPOSTGRES backend interactive interface");
|
||||||
puts("$Revision: 1.63 $ $Date: 1998/01/26 01:41:35 $");
|
puts("$Revision: 1.64 $ $Date: 1998/02/01 19:43:46 $");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.39 1998/01/07 18:46:50 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.40 1998/02/01 19:43:54 momjian Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -138,11 +138,9 @@ abstime2tm(AbsoluteTime time, int *tzp, struct tm * tm, char *tzn)
|
|||||||
{
|
{
|
||||||
tx = gmtime((time_t *) &time);
|
tx = gmtime((time_t *) &time);
|
||||||
};
|
};
|
||||||
#else
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DATEDEBUG
|
#if defined(DATEDEBUG) && defined(HAVE_INT_TIMEZONE)
|
||||||
#ifdef HAVE_INT_TIMEZONE
|
|
||||||
printf("datetime2tm- (localtime) %d.%02d.%02d %02d:%02d:%02d %s %s dst=%d\n",
|
printf("datetime2tm- (localtime) %d.%02d.%02d %02d:%02d:%02d %s %s dst=%d\n",
|
||||||
tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, tx->tm_sec,
|
tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, tx->tm_sec,
|
||||||
tzname[0], tzname[1], tx->tm_isdst);
|
tzname[0], tzname[1], tx->tm_isdst);
|
||||||
@ -151,8 +149,6 @@ abstime2tm(AbsoluteTime time, int *tzp, struct tm * tm, char *tzn)
|
|||||||
tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, tx->tm_sec,
|
tx->tm_year, tx->tm_mon, tx->tm_mday, tx->tm_hour, tx->tm_min, tx->tm_sec,
|
||||||
tx->tm_zone, tx->tm_isdst);
|
tx->tm_zone, tx->tm_isdst);
|
||||||
#endif
|
#endif
|
||||||
#else
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_POSIX_TIME
|
#ifdef USE_POSIX_TIME
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user