aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/catalog/heap.c6
-rw-r--r--src/backend/commands/explain.c32
-rw-r--r--src/backend/nodes/copyfuncs.c3
-rw-r--r--src/backend/nodes/freefuncs.c3
-rw-r--r--src/backend/optimizer/prep/prepunion.c6
-rw-r--r--src/backend/parser/analyze.c34
-rw-r--r--src/backend/parser/gram.y72
-rw-r--r--src/backend/parser/keywords.c3
-rw-r--r--src/backend/parser/parse_agg.c4
-rw-r--r--src/backend/parser/parse_clause.c6
-rw-r--r--src/backend/parser/parse_coerce.c3
-rw-r--r--src/backend/parser/parse_expr.c12
-rw-r--r--src/backend/parser/parse_func.c8
-rw-r--r--src/backend/parser/parse_relation.c45
-rw-r--r--src/backend/parser/parse_target.c4
-rw-r--r--src/backend/utils/adt/date.c336
-rw-r--r--src/backend/utils/adt/datetime.c82
-rw-r--r--src/backend/utils/adt/float.c27
-rw-r--r--src/backend/utils/adt/geo_ops.c25
-rw-r--r--src/backend/utils/adt/int.c23
-rw-r--r--src/backend/utils/adt/int8.c59
-rw-r--r--src/backend/utils/adt/oracle_compat.c68
-rw-r--r--src/backend/utils/adt/ruleutils.c18
-rw-r--r--src/backend/utils/adt/timestamp.c28
-rw-r--r--src/bin/scripts/createlang.sh4
-rw-r--r--src/include/catalog/catversion.h4
-rw-r--r--src/include/catalog/pg_aggregate.h6
-rw-r--r--src/include/catalog/pg_amop.h22
-rw-r--r--src/include/catalog/pg_amproc.h10
-rw-r--r--src/include/catalog/pg_opclass.h56
-rw-r--r--src/include/catalog/pg_operator.h52
-rw-r--r--src/include/catalog/pg_proc.h966
-rw-r--r--src/include/catalog/pg_type.h6
-rw-r--r--src/include/nodes/parsenodes.h12
-rw-r--r--src/include/parser/parse_coerce.h5
-rw-r--r--src/include/utils/builtins.h9
-rw-r--r--src/include/utils/date.h34
-rw-r--r--src/include/utils/datetime.h174
-rw-r--r--src/include/utils/geo_decls.h4
-rw-r--r--src/include/utils/int8.h5
-rw-r--r--src/include/utils/timestamp.h56
-rw-r--r--src/test/regress/expected/alter_table.out6
-rw-r--r--src/test/regress/expected/box.out2
-rw-r--r--src/test/regress/expected/errors.out22
-rw-r--r--src/test/regress/expected/float8.out20
-rw-r--r--src/test/regress/expected/geometry.out62
-rw-r--r--src/test/regress/expected/int4.out18
-rw-r--r--src/test/regress/expected/numeric.out4
-rw-r--r--src/test/regress/expected/rules.out30
-rw-r--r--src/test/regress/expected/timestamp.out18
-rwxr-xr-xsrc/test/regress/regress.sh57
-rw-r--r--src/test/regress/sql/alter_table.sql4
-rw-r--r--src/test/regress/sql/box.sql2
-rw-r--r--src/test/regress/sql/float8.sql8
-rw-r--r--src/test/regress/sql/geometry.sql4
-rw-r--r--src/test/regress/sql/int4.sql7
-rw-r--r--src/test/regress/sql/numeric.sql4
-rw-r--r--src/test/regress/sql/timestamp.sql8
58 files changed, 1495 insertions, 1113 deletions
diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c
index 271dc3ed978..c90516be801 100644
--- a/src/backend/catalog/heap.c
+++ b/src/backend/catalog/heap.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.122 2000/02/18 09:28:40 inoue Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.123 2000/03/14 23:06:06 thomas Exp $
*
*
* INTERFACE ROUTINES
@@ -1719,8 +1719,10 @@ StoreAttrDefault(Relation rel, AttrNumber attnum, char *adbin,
*/
rte = makeNode(RangeTblEntry);
rte->relname = RelationGetRelationName(rel);
+#ifndef DISABLE_EREF
rte->ref = makeNode(Attr);
rte->ref->relname = RelationGetRelationName(rel);
+#endif
rte->relid = RelationGetRelid(rel);
rte->inh = false;
rte->inFromCl = true;
@@ -1799,8 +1801,10 @@ StoreRelCheck(Relation rel, char *ccname, char *ccbin)
*/
rte = makeNode(RangeTblEntry);
rte->relname = RelationGetRelationName(rel);
+#ifndef DISABLE_EREF
rte->ref = makeNode(Attr);
rte->ref->relname = RelationGetRelationName(rel);
+#endif
rte->relid = RelationGetRelid(rel);
rte->inh = false;
rte->inFromCl = true;
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index 2a38a349d60..64dc164a0d5 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -5,7 +5,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994-5, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.54 2000/02/15 20:49:08 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/explain.c,v 1.55 2000/03/14 23:06:12 thomas Exp $
*
*/
@@ -232,9 +232,33 @@ explain_outNode(StringInfo str, Plan *plan, int indent, ExplainState *es)
appendStringInfo(str, " on %s",
stringStringInfo(rte->relname));
- if (rte->ref && strcmp(rte->ref->relname, rte->relname) != 0)
- appendStringInfo(str, " %s",
- stringStringInfo(rte->ref->relname));
+ if (rte->ref != NULL)
+ {
+ if ((strcmp(rte->ref->relname, rte->relname) != 0)
+ || (length(rte->ref->attrs) > 0))
+ {
+ appendStringInfo(str, " %s",
+ stringStringInfo(rte->ref->relname));
+
+ if (length(rte->ref->attrs) > 0)
+ {
+ List *c;
+ int firstEntry = true;
+
+ appendStringInfo(str, " (");
+ foreach (c, rte->ref->attrs)
+ {
+ if (! firstEntry)
+ {
+ appendStringInfo(str, ", ");
+ firstEntry = false;
+ }
+ appendStringInfo(str, "%s", strVal(lfirst(c)));
+ }
+ appendStringInfo(str, ")");
+ }
+ }
+ }
}
break;
default:
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c
index 601b503ec11..6afa4d8549f 100644
--- a/src/backend/nodes/copyfuncs.c
+++ b/src/backend/nodes/copyfuncs.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.108 2000/02/21 18:47:00 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.109 2000/03/14 23:06:27 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1366,6 +1366,7 @@ _copyRangeTblEntry(RangeTblEntry *from)
if (from->relname)
newnode->relname = pstrdup(from->relname);
Node_Copy(from, newnode, ref);
+ Node_Copy(from, newnode, eref);
newnode->relid = from->relid;
newnode->inh = from->inh;
newnode->inFromCl = from->inFromCl;
diff --git a/src/backend/nodes/freefuncs.c b/src/backend/nodes/freefuncs.c
index 14a5ed12d9e..96ce56c94c4 100644
--- a/src/backend/nodes/freefuncs.c
+++ b/src/backend/nodes/freefuncs.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/nodes/Attic/freefuncs.c,v 1.38 2000/02/21 18:47:00 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/nodes/Attic/freefuncs.c,v 1.39 2000/03/14 23:06:28 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1031,6 +1031,7 @@ _freeRangeTblEntry(RangeTblEntry *node)
if (node->relname)
pfree(node->relname);
freeObject(node->ref);
+ freeObject(node->eref);
pfree(node);
}
diff --git a/src/backend/optimizer/prep/prepunion.c b/src/backend/optimizer/prep/prepunion.c
index 10a48c666e6..c0e09dc6d9b 100644
--- a/src/backend/optimizer/prep/prepunion.c
+++ b/src/backend/optimizer/prep/prepunion.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.45 2000/02/15 20:49:19 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/prep/prepunion.c,v 1.46 2000/03/14 23:06:29 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -454,8 +454,8 @@ new_rangetable_entry(Oid new_relid, RangeTblEntry *old_entry)
RangeTblEntry *new_entry = copyObject(old_entry);
/* ??? someone tell me what the following is doing! - ay 11/94 */
- if (!strcmp(new_entry->ref->relname, "*CURRENT*") ||
- !strcmp(new_entry->ref->relname, "*NEW*"))
+ if (!strcmp(new_entry->eref->relname, "*CURRENT*") ||
+ !strcmp(new_entry->eref->relname, "*NEW*"))
new_entry->ref->relname = get_rel_name(new_relid);
else
new_entry->relname = get_rel_name(new_relid);
diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c
index 612481deabc..c192b4ce7a1 100644
--- a/src/backend/parser/analyze.c
+++ b/src/backend/parser/analyze.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: analyze.c,v 1.139 2000/03/01 05:18:20 tgl Exp $
+ * $Id: analyze.c,v 1.140 2000/03/14 23:06:30 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -146,6 +146,34 @@ transformStmt(ParseState *pstate, Node *parseTree)
ViewStmt *n = (ViewStmt *) parseTree;
n->query = (Query *) transformStmt(pstate, (Node *) n->query);
+
+ /* If a list of column names was given, run through and insert these
+ * into the actual query tree. - thomas 2000-03-08
+ */
+ if (n->aliases != NIL)
+ {
+ int i;
+ List *targetList = n->query->targetList;
+
+ if (length(targetList) < length(n->aliases))
+ elog(ERROR, "CREATE VIEW specifies %d columns"
+ " but only %d columns are present",
+ length(targetList), length(n->aliases));
+
+ for (i = 0; i < length(n->aliases); i++)
+ {
+ Ident *id;
+ TargetEntry *te;
+ Resdom *rd;
+ id = nth(i, n->aliases);
+ Assert(nodeTag(id) == T_Ident);
+ te = nth(i, targetList);
+ Assert(nodeTag(te) == T_TargetEntry);
+ rd = te->resdom;
+ Assert(nodeTag(rd) == T_Resdom);
+ rd->resname = pstrdup(id->name);
+ }
+ }
result = makeNode(Query);
result->commandType = CMD_UTILITY;
result->utilityStmt = (Node *) n;
@@ -1904,7 +1932,7 @@ transformForUpdate(Query *qry, List *forUpdate)
i = 1;
foreach(l2, qry->rtable)
{
- if (strcmp(((RangeTblEntry *) lfirst(l2))->ref->relname, relname) == 0)
+ if (strcmp(((RangeTblEntry *) lfirst(l2))->eref->relname, relname) == 0)
{
List *l3;
@@ -1925,7 +1953,7 @@ transformForUpdate(Query *qry, List *forUpdate)
i++;
}
if (l2 == NULL)
- elog(ERROR, "FOR UPDATE: relation %s not found in FROM clause",
+ elog(ERROR, "FOR UPDATE: relation '%s' not found in FROM clause",
relname);
}
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index ab69eb4794f..c4d98d203ec 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.155 2000/03/12 20:09:41 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.156 2000/03/14 23:06:31 thomas Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@@ -307,7 +307,7 @@ static void doNegateFloat(Value *v);
ISOLATION, JOIN, KEY, LANGUAGE, LEADING, LEFT, LEVEL, LIKE, LOCAL,
MATCH, MINUTE_P, MONTH_P, NAMES,
NATIONAL, NATURAL, NCHAR, NEXT, NO, NOT, NULLIF, NULL_P, NUMERIC,
- OF, ON, ONLY, OPTION, OR, ORDER, OUTER_P,
+ OF, ON, ONLY, OPTION, OR, ORDER, OUTER_P, OVERLAPS,
PARTIAL, POSITION, PRECISION, PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC,
READ, REFERENCES, RELATIVE, REVOKE, RIGHT, ROLLBACK,
SCROLL, SECOND_P, SELECT, SESSION_USER, SET, SUBSTRING,
@@ -363,6 +363,7 @@ static void doNegateFloat(Value *v);
%right '='
%nonassoc '<' '>'
%nonassoc LIKE
+%nonassoc OVERLAPS
%nonassoc BETWEEN
%nonassoc IN
%left Op /* multi-character ops and user-defined operators */
@@ -1903,7 +1904,7 @@ comment_text: Sconst { $$ = $1; }
*
*****************************************************************************/
-FetchStmt: FETCH direction fetch_how_many from_in name
+FetchStmt: FETCH direction fetch_how_many from_in name
{
FetchStmt *n = makeNode(FetchStmt);
if ($2 == RELATIVE)
@@ -1923,7 +1924,7 @@ FetchStmt: FETCH direction fetch_how_many from_in name
n->ismove = false;
$$ = (Node *)n;
}
- | FETCH fetch_how_many from_in name
+ | FETCH fetch_how_many from_in name
{
FetchStmt *n = makeNode(FetchStmt);
if ($2 < 0)
@@ -1940,7 +1941,7 @@ FetchStmt: FETCH direction fetch_how_many from_in name
n->ismove = false;
$$ = (Node *)n;
}
- | FETCH direction from_in name
+ | FETCH direction from_in name
{
FetchStmt *n = makeNode(FetchStmt);
if ($2 == RELATIVE)
@@ -1953,7 +1954,7 @@ FetchStmt: FETCH direction fetch_how_many from_in name
n->ismove = false;
$$ = (Node *)n;
}
- | FETCH from_in name
+ | FETCH from_in name
{
FetchStmt *n = makeNode(FetchStmt);
n->direction = FORWARD;
@@ -1962,7 +1963,7 @@ FetchStmt: FETCH direction fetch_how_many from_in name
n->ismove = false;
$$ = (Node *)n;
}
- | FETCH name
+ | FETCH name
{
FetchStmt *n = makeNode(FetchStmt);
n->direction = FORWARD;
@@ -1972,7 +1973,7 @@ FetchStmt: FETCH direction fetch_how_many from_in name
$$ = (Node *)n;
}
- | MOVE direction fetch_how_many from_in name
+ | MOVE direction fetch_how_many from_in name
{
FetchStmt *n = makeNode(FetchStmt);
if ($3 < 0)
@@ -1986,7 +1987,7 @@ FetchStmt: FETCH direction fetch_how_many from_in name
n->ismove = TRUE;
$$ = (Node *)n;
}
- | MOVE fetch_how_many from_in name
+ | MOVE fetch_how_many from_in name
{
FetchStmt *n = makeNode(FetchStmt);
if ($2 < 0)
@@ -2003,7 +2004,7 @@ FetchStmt: FETCH direction fetch_how_many from_in name
n->ismove = TRUE;
$$ = (Node *)n;
}
- | MOVE direction from_in name
+ | MOVE direction from_in name
{
FetchStmt *n = makeNode(FetchStmt);
n->direction = $2;
@@ -2021,7 +2022,7 @@ FetchStmt: FETCH direction fetch_how_many from_in name
n->ismove = TRUE;
$$ = (Node *)n;
}
- | MOVE name
+ | MOVE name
{
FetchStmt *n = makeNode(FetchStmt);
n->direction = FORWARD;
@@ -2659,11 +2660,12 @@ opt_trans: WORK { $$ = TRUE; }
*
*****************************************************************************/
-ViewStmt: CREATE VIEW name AS SelectStmt
+ViewStmt: CREATE VIEW name opt_column_list AS SelectStmt
{
ViewStmt *n = makeNode(ViewStmt);
n->viewname = $3;
- n->query = (Query *)$5;
+ n->aliases = $4;
+ n->query = (Query *)$6;
if (((SelectStmt *)n->query)->sortClause != NULL)
elog(ERROR,"ORDER BY and DISTINCT on views are not implemented");
if (((SelectStmt *)n->query)->unionClause != NULL)
@@ -2737,7 +2739,7 @@ createdb_opt_encoding:
int i;
i = pg_char_to_encoding($3);
if (i == -1)
- elog(ERROR, "%s is not a valid encoding name.", $3);
+ elog(ERROR, "%s is not a valid encoding name", $3);
$$ = i;
#else
elog(ERROR, "Multi-byte support is not enabled");
@@ -2747,7 +2749,7 @@ createdb_opt_encoding:
{
#ifdef MULTIBYTE
if (!pg_get_encent_by_encoding($3))
- elog(ERROR, "%d is not a valid encoding code.", $3);
+ elog(ERROR, "%d is not a valid encoding code", $3);
$$ = $3;
#else
elog(ERROR, "Multi-byte support is not enabled");
@@ -3979,10 +3981,13 @@ Datetime: datetime
$$->timezone = $2;
$$->typmod = -1;
}
- | TIME
+ | TIME opt_timezone
{
$$ = makeNode(TypeName);
- $$->name = xlateSqlType("time");
+ if ($2)
+ $$->name = xlateSqlType("timetz");
+ else
+ $$->name = xlateSqlType("time");
$$->typmod = -1;
}
| INTERVAL opt_interval
@@ -4077,6 +4082,27 @@ row_expr: '(' row_descriptor ')' IN '(' SubSelect ')'
{
$$ = makeRowExpr($4, $2, $6);
}
+ | '(' row_descriptor ')' OVERLAPS '(' row_descriptor ')'
+ {
+ FuncCall *n = makeNode(FuncCall);
+ List *largs = $2;
+ List *rargs = $6;
+ n->funcname = xlateSqlFunc("overlaps");
+ if (length(largs) == 1)
+ largs = lappend(largs, $2);
+ else if (length(largs) != 2)
+ elog(ERROR, "Wrong number of parameters"
+ " on left side of OVERLAPS expression");
+ if (length(rargs) == 1)
+ rargs = lappend(rargs, $6);
+ else if (length(rargs) != 2)
+ elog(ERROR, "Wrong number of parameters"
+ " on right side of OVERLAPS expression");
+ n->args = nconc(largs, rargs);
+ n->agg_star = false;
+ n->agg_distinct = false;
+ $$ = (Node *)n;
+ }
;
row_descriptor: row_list ',' a_expr
@@ -4579,7 +4605,8 @@ c_expr: attr
n->agg_distinct = false;
if ($3 != 0)
- elog(NOTICE,"CURRENT_TIME(%d) precision not implemented; zero used instead",$3);
+ elog(NOTICE,"CURRENT_TIME(%d) precision not implemented"
+ "; zero used instead",$3);
$$ = (Node *)n;
}
@@ -4632,7 +4659,8 @@ c_expr: attr
n->agg_distinct = false;
if ($3 != 0)
- elog(NOTICE,"CURRENT_TIMESTAMP(%d) precision not implemented; zero used instead",$3);
+ elog(NOTICE,"CURRENT_TIMESTAMP(%d) precision not implemented"
+ "; zero used instead",$3);
$$ = (Node *)n;
}
@@ -5219,6 +5247,7 @@ ColId: IDENT { $$ = $1; }
| ONLY { $$ = "only"; }
| OPERATOR { $$ = "operator"; }
| OPTION { $$ = "option"; }
+ | OVERLAPS { $$ = "overlaps"; }
| PASSWORD { $$ = "password"; }
| PENDANT { $$ = "pendant"; }
| PRIOR { $$ = "prior"; }
@@ -5454,9 +5483,8 @@ mapTargetColumns(List *src, List *dst)
static char *
xlateSqlFunc(char *name)
{
- if (!strcasecmp(name,"character_length")
- || !strcasecmp(name,"char_length"))
- return "length";
+ if (!strcasecmp(name,"character_length"))
+ return "char_length";
else
return name;
} /* xlateSqlFunc() */
diff --git a/src/backend/parser/keywords.c b/src/backend/parser/keywords.c
index d971e95762d..5bf703703d3 100644
--- a/src/backend/parser/keywords.c
+++ b/src/backend/parser/keywords.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.67 2000/02/18 09:29:40 inoue Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.68 2000/03/14 23:06:32 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -184,6 +184,7 @@ static ScanKeyword ScanKeywords[] = {
{"or", OR},
{"order", ORDER},
{"outer", OUTER_P},
+ {"overlaps", OVERLAPS},
{"partial", PARTIAL},
{"password", PASSWORD},
{"pendant", PENDANT},
diff --git a/src/backend/parser/parse_agg.c b/src/backend/parser/parse_agg.c
index afaa55e54f1..17cc026bfde 100644
--- a/src/backend/parser/parse_agg.c
+++ b/src/backend/parser/parse_agg.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_agg.c,v 1.34 2000/02/15 03:37:47 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_agg.c,v 1.35 2000/03/14 23:06:32 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -111,7 +111,7 @@ check_ungrouped_columns_walker(Node *node,
elog(ERROR, "cache lookup of attribute %d in relation %u failed",
var->varattno, rte->relid);
elog(ERROR, "Attribute %s.%s must be GROUPed or used in an aggregate function",
- rte->ref->relname, attname);
+ rte->eref->relname, attname);
}
/* Otherwise, recurse. */
return expression_tree_walker(node, check_ungrouped_columns_walker,
diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c
index 68da571f922..53d9b25f11b 100644
--- a/src/backend/parser/parse_clause.c
+++ b/src/backend/parser/parse_clause.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.55 2000/02/19 23:45:05 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_clause.c,v 1.56 2000/03/14 23:06:32 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -478,7 +478,7 @@ parseFromClause(ParseState *pstate, List *frmList)
{
Assert(IsA(j->larg, RangeVar));
l_rte = transformTableEntry(pstate, (RangeVar *) j->larg);
- l_name = expandTable(pstate, l_rte->ref->relname, TRUE);
+ l_name = expandTable(pstate, l_rte->eref->relname, TRUE);
}
if (IsA(j->rarg, JoinExpr))
@@ -490,7 +490,7 @@ parseFromClause(ParseState *pstate, List *frmList)
{
Assert(IsA(j->rarg, RangeVar));
r_rte = transformTableEntry(pstate, (RangeVar *) j->rarg);
- r_name = expandTable(pstate, r_rte->ref->relname, TRUE);
+ r_name = expandTable(pstate, r_rte->eref->relname, TRUE);
}
/* Natural join does not explicitly specify columns; must generate columns to join.
diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c
index 210a8f946e3..ce06da2669e 100644
--- a/src/backend/parser/parse_coerce.c
+++ b/src/backend/parser/parse_coerce.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.34 2000/03/11 23:19:50 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.35 2000/03/14 23:06:32 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -319,6 +319,7 @@ TypeCategory(Oid inType)
case (DATEOID):
case (TIMEOID):
+ case (TIMETZOID):
case (ABSTIMEOID):
case (TIMESTAMPOID):
result = DATETIME_TYPE;
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c
index e1e86199722..e2e297cb6b6 100644
--- a/src/backend/parser/parse_expr.c
+++ b/src/backend/parser/parse_expr.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.72 2000/03/07 23:30:53 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.73 2000/03/14 23:06:32 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -574,15 +574,7 @@ transformIdent(ParseState *pstate, Ident *ident, int precedence)
if ((rte = colnameRangeTableEntry(pstate, ident->name)) != NULL)
{
/* Convert it to a fully qualified Attr, and transform that */
-#ifndef DISABLE_JOIN_SYNTAX
- Attr *att = makeAttr(rte->ref->relname, ident->name);
-#else
- Attr *att = makeNode(Attr);
-
- att->relname = rte->refname;
- att->paramNo = NULL;
- att->attrs = lcons(makeString(ident->name), NIL);
-#endif
+ Attr *att = makeAttr(rte->eref->relname, ident->name);
att->indirection = ident->indirection;
return transformAttr(pstate, att, precedence);
}
diff --git a/src/backend/parser/parse_func.c b/src/backend/parser/parse_func.c
index 90c65a3830e..eb4884accbb 100644
--- a/src/backend/parser/parse_func.c
+++ b/src/backend/parser/parse_func.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.73 2000/03/11 23:17:47 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_func.c,v 1.74 2000/03/14 23:06:32 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -325,7 +325,7 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
* now allow column aliases.
* - thomas 2000-02-07
*/
- if (rte->ref->attrs != NULL)
+ if (rte->eref->attrs != NULL)
{
List *c;
/* start counting attributes/columns from one.
@@ -333,7 +333,7 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
* - thomas 2000-01-27
*/
int i = 1;
- foreach (c, rte->ref->attrs)
+ foreach (c, rte->eref->attrs)
{
char *colname = strVal(lfirst(c));
/* found a match? */
@@ -550,7 +550,7 @@ ParseFuncOrColumn(ParseState *pstate, char *funcname, List *fargs,
relname = rte->relname;
- vnum = refnameRangeTablePosn(pstate, rte->ref->relname, NULL);
+ vnum = refnameRangeTablePosn(pstate, rte->eref->relname, NULL);
/*
* for func(relname), the param to the function is the tuple
diff --git a/src/backend/parser/parse_relation.c b/src/backend/parser/parse_relation.c
index 265642faaf3..4a943af6739 100644
--- a/src/backend/parser/parse_relation.c
+++ b/src/backend/parser/parse_relation.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.36 2000/03/09 05:00:24 inoue Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_relation.c,v 1.37 2000/03/14 23:06:33 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -68,8 +68,12 @@ static char *attnum_type[SPECIALS] = {
/* refnameRangeTableEntries()
* Given refname, return a list of range table entries
* This is possible with JOIN syntax, where tables in a join
- * acquire the same reference name
+ * acquire the same reference name.
* - thomas 2000-01-20
+ * But at the moment we aren't carrying along a full list of
+ * table/column aliases, so we don't have the full mechanism
+ * to support outer joins in place yet.
+ * - thomas 2000-03-04
*/
List *
refnameRangeTableEntries(ParseState *pstate, char *refname);
@@ -86,7 +90,7 @@ refnameRangeTableEntries(ParseState *pstate, char *refname)
{
RangeTblEntry *rte = lfirst(temp);
- if (strcmp(rte->ref->relname, refname) == 0)
+ if (strcmp(rte->eref->relname, refname) == 0)
rteList = lappend(rteList, rte);
}
/* only allow correlated columns in WHERE clause */
@@ -110,11 +114,7 @@ refnameRangeTableEntry(ParseState *pstate, char *refname)
{
RangeTblEntry *rte = lfirst(temp);
-#ifndef DISABLE_JOIN_SYNTAX
- if (strcmp(rte->ref->relname, refname) == 0)
-#else
- if (!strcmp(rte->refname, refname))
-#endif
+ if (strcmp(rte->eref->relname, refname) == 0)
return rte;
}
/* only allow correlated columns in WHERE clause */
@@ -143,11 +143,7 @@ refnameRangeTablePosn(ParseState *pstate, char *refname, int *sublevels_up)
{
RangeTblEntry *rte = lfirst(temp);
-#ifndef DISABLE_JOIN_SYNTAX
- if (strcmp(rte->ref->relname, refname) == 0)
-#else
- if (!strcmp(rte->refname, refname))
-#endif
+ if (strcmp(rte->eref->relname, refname) == 0)
return index;
index++;
}
@@ -191,7 +187,7 @@ colnameRangeTableEntry(ParseState *pstate, char *colname)
if (!rte->inFromCl && rte != pstate->p_target_rangetblentry)
continue;
- if (rte->ref->attrs != NULL)
+ if (rte->eref->attrs != NULL)
{
List *c;
foreach (c, rte->ref->attrs)
@@ -253,6 +249,7 @@ addRangeTableEntry(ParseState *pstate,
{
Relation rel;
RangeTblEntry *rte;
+ Attr *eref;
int maxattrs;
int sublevels_up;
int varattno;
@@ -286,19 +283,22 @@ addRangeTableEntry(ParseState *pstate,
rel = heap_openr(relname, AccessShareLock);
rte->relid = RelationGetRelid(rel);
maxattrs = RelationGetNumberOfAttributes(rel);
- if (maxattrs < length(ref->attrs))
+
+ eref = copyObject(ref);
+ if (maxattrs < length(eref->attrs))
elog(ERROR, "Table '%s' has %d columns available but %d columns specified",
- relname, maxattrs, length(ref->attrs));
+ relname, maxattrs, length(eref->attrs));
/* fill in any unspecified alias columns */
- for (varattno = length(ref->attrs); varattno < maxattrs; varattno++)
+ for (varattno = length(eref->attrs); varattno < maxattrs; varattno++)
{
char *attrname;
attrname = pstrdup(NameStr(rel->rd_att->attrs[varattno]->attname));
- ref->attrs = lappend(ref->attrs, makeString(attrname));
+ eref->attrs = lappend(eref->attrs, makeString(attrname));
}
heap_close(rel, AccessShareLock);
+ rte->eref = eref;
/*
* Flags:
@@ -337,10 +337,9 @@ expandTable(ParseState *pstate, char *refname, bool getaliases)
rte = refnameRangeTableEntry(pstate, refname);
- if (getaliases && (rte != NULL) && (rte->ref != NULL)
- && (length(rte->ref->attrs) > 0))
+ if (getaliases && (rte != NULL))
{
- return rte->ref;
+ return rte->eref;
}
if (rte != NULL)
@@ -415,8 +414,8 @@ expandAll(ParseState *pstate, char *relname, Attr *ref, int *this_resno)
attrname = pstrdup(NameStr(rel->rd_att->attrs[varattno]->attname));
/* varattno is zero-based, so check that length() is always greater */
- if (length(rte->ref->attrs) > varattno)
- label = pstrdup(strVal(nth(varattno, rte->ref->attrs)));
+ if (length(rte->eref->attrs) > varattno)
+ label = pstrdup(strVal(nth(varattno, rte->eref->attrs)));
else
label = attrname;
varnode = make_var(pstate, rte->relid, relname, attrname);
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index e815efc9639..65a5b33d58c 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.56 2000/03/09 05:00:24 inoue Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.57 2000/03/14 23:06:33 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -430,7 +430,7 @@ ExpandAllTables(ParseState *pstate)
continue;
target = nconc(target,
- expandAll(pstate, rte->ref->relname, rte->ref,
+ expandAll(pstate, rte->eref->relname, rte->eref,
&pstate->p_last_resno));
}
return target;
diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c
index 7102f64a44f..378289373b8 100644
--- a/src/backend/utils/adt/date.c
+++ b/src/backend/utils/adt/date.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.42 2000/02/16 18:17:02 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.43 2000/03/14 23:06:35 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -198,7 +198,7 @@ date_timestamp(DateADT dateVal)
double fsec = 0;
char *tzn;
- result = palloc(sizeof(Timestamp));
+ result = palloc(sizeof(*result));
if (date2tm(dateVal, &tz, tm, &fsec, &tzn) != 0)
elog(ERROR, "Unable to convert date to timestamp");
@@ -392,10 +392,10 @@ time_in(char *str)
elog(ERROR, "Bad (null) time external representation");
if ((ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf) != 0)
- || (DecodeTimeOnly(field, ftype, nf, &dtype, tm, &fsec) != 0))
+ || (DecodeTimeOnly(field, ftype, nf, &dtype, tm, &fsec, NULL) != 0))
elog(ERROR, "Bad time external representation '%s'", str);
- time = palloc(sizeof(TimeADT));
+ time = palloc(sizeof(*time));
*time = ((((tm->tm_hour * 60) + tm->tm_min) * 60) + tm->tm_sec + fsec);
@@ -422,7 +422,7 @@ time_out(TimeADT *time)
fsec = 0;
- EncodeTimeOnly(tm, fsec, DateStyle, buf);
+ EncodeTimeOnly(tm, fsec, NULL, DateStyle, buf);
result = palloc(strlen(buf) + 1);
@@ -456,8 +456,8 @@ time_lt(TimeADT *time1, TimeADT *time2)
if (!PointerIsValid(time1) || !PointerIsValid(time2))
return FALSE;
- return *time1 < *time2;
-} /* time_eq() */
+ return (*time1 < *time2);
+} /* time_lt() */
bool
time_le(TimeADT *time1, TimeADT *time2)
@@ -465,8 +465,8 @@ time_le(TimeADT *time1, TimeADT *time2)
if (!PointerIsValid(time1) || !PointerIsValid(time2))
return FALSE;
- return *time1 <= *time2;
-} /* time_eq() */
+ return (*time1 <= *time2);
+} /* time_le() */
bool
time_gt(TimeADT *time1, TimeADT *time2)
@@ -474,8 +474,8 @@ time_gt(TimeADT *time1, TimeADT *time2)
if (!PointerIsValid(time1) || !PointerIsValid(time2))
return FALSE;
- return *time1 > *time2;
-} /* time_eq() */
+ return (*time1 > *time2);
+} /* time_gt() */
bool
time_ge(TimeADT *time1, TimeADT *time2)
@@ -483,8 +483,8 @@ time_ge(TimeADT *time1, TimeADT *time2)
if (!PointerIsValid(time1) || !PointerIsValid(time2))
return FALSE;
- return *time1 >= *time2;
-} /* time_eq() */
+ return (*time1 >= *time2);
+} /* time_ge() */
int
time_cmp(TimeADT *time1, TimeADT *time2)
@@ -492,6 +492,43 @@ time_cmp(TimeADT *time1, TimeADT *time2)
return (*time1 < *time2) ? -1 : (((*time1 > *time2) ? 1 : 0));
} /* time_cmp() */
+TimeADT *
+time_larger(TimeADT *time1, TimeADT *time2)
+{
+ return time_gt(time1, time2)? time1: time2;
+} /* time_larger() */
+
+TimeADT *
+time_smaller(TimeADT *time1, TimeADT *time2)
+{
+ return time_lt(time1, time2)? time1: time2;
+} /* time_smaller() */
+
+/* overlaps_time()
+ * Implements the SQL92 OVERLAPS operator.
+ * Algorithm from Date and Darwen, 1997
+ */
+bool
+overlaps_time(TimeADT *ts1, TimeADT *te1, TimeADT *ts2, TimeADT *te2)
+{
+ /* Make sure we have ordered pairs... */
+ if (time_gt(ts1, te1))
+ {
+ TimeADT *tt = ts1;
+ ts1 = te1;
+ te1 = tt;
+ }
+ if (time_gt(ts2, te2))
+ {
+ TimeADT *tt = ts2;
+ ts2 = te2;
+ te2 = tt;
+ }
+
+ return ((time_gt(ts1, ts2) && (time_lt(ts1, te2) || time_lt(te1, te2)))
+ || (time_gt(ts2, ts1) && (time_lt(ts2, te1) || time_lt(te2, te1)))
+ || time_eq(ts1, ts2));
+}
/* timestamp_time()
* Convert timestamp to time data type.
@@ -515,12 +552,10 @@ timestamp_time(Timestamp *timestamp)
if (TIMESTAMP_IS_EPOCH(*timestamp))
{
timestamp2tm(SetTimestamp(*timestamp), NULL, tm, &fsec, NULL);
-
}
else if (TIMESTAMP_IS_CURRENT(*timestamp))
{
timestamp2tm(SetTimestamp(*timestamp), &tz, tm, &fsec, &tzn);
-
}
else
{
@@ -528,7 +563,7 @@ timestamp_time(Timestamp *timestamp)
elog(ERROR, "Unable to convert timestamp to date");
}
- result = palloc(sizeof(TimeADT));
+ result = palloc(sizeof(*result));
*result = ((((tm->tm_hour * 60) + tm->tm_min) * 60) + tm->tm_sec + fsec);
@@ -546,7 +581,7 @@ datetime_timestamp(DateADT date, TimeADT *time)
if (!PointerIsValid(time))
{
- result = palloc(sizeof(Timestamp));
+ result = palloc(sizeof(*result));
TIMESTAMP_INVALID(*result);
}
else
@@ -557,3 +592,270 @@ datetime_timestamp(DateADT date, TimeADT *time)
return result;
} /* datetime_timestamp() */
+
+
+/* time_interval()
+ * Convert time to interval data type.
+ */
+Interval *
+time_interval(TimeADT *time)
+{
+ Interval *result;
+
+ if (!PointerIsValid(time))
+ return NULL;
+
+ result = palloc(sizeof(*result));
+ result->time = *time;
+ result->month = 0;
+
+ return result;
+} /* time_interval() */
+
+
+/*****************************************************************************
+ * Time With Time Zone ADT
+ *****************************************************************************/
+
+
+TimeTzADT *
+timetz_in(char *str)
+{
+ TimeTzADT *time;
+
+ double fsec;
+ struct tm tt,
+ *tm = &tt;
+ int tz;
+
+ int nf;
+ char lowstr[MAXDATELEN + 1];
+ char *field[MAXDATEFIELDS];
+ int dtype;
+ int ftype[MAXDATEFIELDS];
+
+ if (!PointerIsValid(str))
+ elog(ERROR, "Bad (null) time external representation");
+
+ if ((ParseDateTime(str, lowstr, field, ftype, MAXDATEFIELDS, &nf) != 0)
+ || (DecodeTimeOnly(field, ftype, nf, &dtype, tm, &fsec, &tz) != 0))
+ elog(ERROR, "Bad time external representation '%s'", str);
+
+ time = palloc(sizeof(*time));
+
+ time->time = ((((tm->tm_hour * 60) + tm->tm_min) * 60) + tm->tm_sec + fsec);
+ time->zone = tz;
+
+ return time;
+} /* timetz_in() */
+
+
+char *
+timetz_out(TimeTzADT *time)
+{
+ char *result;
+ struct tm tt,
+ *tm = &tt;
+
+ double fsec;
+ int tz;
+ char buf[MAXDATELEN + 1];
+
+ if (!PointerIsValid(time))
+ return NULL;
+
+ tm->tm_hour = (time->time / (60 * 60));
+ tm->tm_min = (((int) (time->time / 60)) % 60);
+ tm->tm_sec = (((int) time->time) % 60);
+
+ fsec = 0;
+ tz = time->zone;
+
+ EncodeTimeOnly(tm, fsec, &tz, DateStyle, buf);
+
+ result = palloc(strlen(buf) + 1);
+
+ strcpy(result, buf);
+
+ return result;
+} /* timetz_out() */
+
+
+bool
+timetz_eq(TimeTzADT *time1, TimeTzADT *time2)
+{
+ if (!PointerIsValid(time1) || !PointerIsValid(time2))
+ return FALSE;
+
+ return ((time1->time + time1->zone) == (time2->time + time2->zone));
+} /* timetz_eq() */
+
+bool
+timetz_ne(TimeTzADT *time1, TimeTzADT *time2)
+{
+ if (!PointerIsValid(time1) || !PointerIsValid(time2))
+ return FALSE;
+
+ return ((time1->time + time1->zone) != (time2->time + time2->zone));
+} /* timetz_ne() */
+
+bool
+timetz_lt(TimeTzADT *time1, TimeTzADT *time2)
+{
+ if (!PointerIsValid(time1) || !PointerIsValid(time2))
+ return FALSE;
+
+ return ((time1->time + time1->zone) < (time2->time + time2->zone));
+} /* timetz_lt() */
+
+bool
+timetz_le(TimeTzADT *time1, TimeTzADT *time2)
+{
+ if (!PointerIsValid(time1) || !PointerIsValid(time2))
+ return FALSE;
+
+ return ((time1->time + time1->zone) <= (time2->time + time2->zone));
+} /* timetz_le() */
+
+bool
+timetz_gt(TimeTzADT *time1, TimeTzADT *time2)
+{
+ if (!PointerIsValid(time1) || !PointerIsValid(time2))
+ return FALSE;
+
+ return ((time1->time + time1->zone) > (time2->time + time2->zone));
+} /* timetz_gt() */
+
+bool
+timetz_ge(TimeTzADT *time1, TimeTzADT *time2)
+{
+ if (!PointerIsValid(time1) || !PointerIsValid(time2))
+ return FALSE;
+
+ return ((time1->time + time1->zone) >= (time2->time + time2->zone));
+} /* timetz_ge() */
+
+int
+timetz_cmp(TimeTzADT *time1, TimeTzADT *time2)
+{
+ return (timetz_lt(time1, time2) ? -1 : (timetz_gt(time1, time2)? 1: 0));
+} /* timetz_cmp() */
+
+TimeTzADT *
+timetz_larger(TimeTzADT *time1, TimeTzADT *time2)
+{
+ return timetz_gt(time1, time2)? time1: time2;
+} /* timetz_larger() */
+
+TimeTzADT *
+timetz_smaller(TimeTzADT *time1, TimeTzADT *time2)
+{
+ return timetz_lt(time1, time2)? time1: time2;
+} /* timetz_smaller() */
+
+/* overlaps_timetz()
+ * Implements the SQL92 OVERLAPS operator.
+ * Algorithm from Date and Darwen, 1997
+ */
+bool
+overlaps_timetz(TimeTzADT *ts1, TimeTzADT *te1, TimeTzADT *ts2, TimeTzADT *te2)
+{
+ /* Make sure we have ordered pairs... */
+ if (timetz_gt(ts1, te1))
+ {
+ TimeTzADT *tt = ts1;
+ ts1 = te1;
+ te1 = tt;
+ }
+ if (timetz_gt(ts2, te2))
+ {
+ TimeTzADT *tt = ts2;
+ ts2 = te2;
+ te2 = tt;
+ }
+
+ return ((timetz_gt(ts1, ts2) && (timetz_lt(ts1, te2) || timetz_lt(te1, te2)))
+ || (timetz_gt(ts2, ts1) && (timetz_lt(ts2, te1) || timetz_lt(te2, te1)))
+ || timetz_eq(ts1, ts2));
+} /* overlaps_timetz() */
+
+/* timestamp_timetz()
+ * Convert timestamp to timetz data type.
+ */
+TimeTzADT *
+timestamp_timetz(Timestamp *timestamp)
+{
+ TimeTzADT *result;
+ struct tm tt,
+ *tm = &tt;
+ int tz;
+ double fsec;
+ char *tzn;
+
+ if (!PointerIsValid(timestamp))
+ elog(ERROR, "Unable to convert null timestamp to date");
+
+ if (TIMESTAMP_NOT_FINITE(*timestamp))
+ elog(ERROR, "Unable to convert timestamp to date");
+
+ if (TIMESTAMP_IS_EPOCH(*timestamp))
+ {
+ timestamp2tm(SetTimestamp(*timestamp), NULL, tm, &fsec, NULL);
+ tz = 0;
+ }
+ else if (TIMESTAMP_IS_CURRENT(*timestamp))
+ {
+ timestamp2tm(SetTimestamp(*timestamp), &tz, tm, &fsec, &tzn);
+ }
+ else
+ {
+ if (timestamp2tm(*timestamp, &tz, tm, &fsec, &tzn) != 0)
+ elog(ERROR, "Unable to convert timestamp to date");
+ }
+
+ result = palloc(sizeof(*result));
+
+ result->time = ((((tm->tm_hour * 60) + tm->tm_min) * 60) + tm->tm_sec + fsec);
+ result->zone = tz;
+
+ return result;
+} /* timestamp_timetz() */
+
+
+/* datetimetz_timestamp()
+ * Convert date and timetz to timestamp data type.
+ * Timestamp is stored in GMT, so add the time zone
+ * stored with the timetz to the result.
+ * - thomas 2000-03-10
+ */
+Timestamp *
+datetimetz_timestamp(DateADT date, TimeTzADT *time)
+{
+ Timestamp *result;
+ struct tm tt,
+ *tm = &tt;
+ int tz;
+ double fsec = 0;
+ char *tzn;
+
+ result = palloc(sizeof(*result));
+
+ if (!PointerIsValid(date) || !PointerIsValid(time))
+ {
+ TIMESTAMP_INVALID(*result);
+ }
+ else
+ {
+ if (date2tm(date, &tz, tm, &fsec, &tzn) != 0)
+ elog(ERROR, "Unable to convert date to timestamp");
+
+ if (tm2timestamp(tm, fsec, &time->zone, result) != 0)
+ elog(ERROR, "Timestamp out of range");
+
+ *result += time->time;
+ }
+
+ return result;
+} /* datetimetz_timestamp() */
+
+
diff --git a/src/backend/utils/adt/datetime.c b/src/backend/utils/adt/datetime.c
index 1418a0c34c2..3c88ac3a3d1 100644
--- a/src/backend/utils/adt/datetime.c
+++ b/src/backend/utils/adt/datetime.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.42 2000/02/16 18:17:02 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/datetime.c,v 1.43 2000/03/14 23:06:36 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -618,8 +618,7 @@ DecodeDateTime(char **field, int *ftype, int nf,
tm->tm_min = 0;
tm->tm_sec = 0;
*fsec = 0;
- tm->tm_isdst = -1; /* don't know daylight savings time status
- * apriori */
+ tm->tm_isdst = -1; /* don't know daylight savings time status apriori */
if (tzp != NULL)
*tzp = 0;
@@ -897,8 +896,7 @@ DecodeDateTime(char **field, int *ftype, int nf,
tm->tm_mon += 1;
#if defined(HAVE_TM_ZONE)
- *tzp = -(tm->tm_gmtoff); /* tm_gmtoff is
- * Sun/DEC-ism */
+ *tzp = -(tm->tm_gmtoff); /* tm_gmtoff is Sun/DEC-ism */
#elif defined(HAVE_INT_TIMEZONE)
#ifdef __CYGWIN__
*tzp = ((tm->tm_isdst > 0) ? (_timezone - 3600) : _timezone);
@@ -927,9 +925,18 @@ DecodeDateTime(char **field, int *ftype, int nf,
/* DecodeTimeOnly()
* Interpret parsed string as time fields only.
+ * Note that support for time zone is here for
+ * SQL92 TIME WITH TIME ZONE, but it reveals
+ * bogosity with SQL92 date/time standards, since
+ * we must infer a time zone from current time.
+ * XXX Later, we should probably support
+ * SET TIME ZONE <integer>
+ * which of course is a screwed up convention.
+ * - thomas 2000-03-10
*/
int
-DecodeTimeOnly(char **field, int *ftype, int nf, int *dtype, struct tm * tm, double *fsec)
+DecodeTimeOnly(char **field, int *ftype, int nf,
+ int *dtype, struct tm * tm, double *fsec, int *tzp)
{
int fmask,
tmask,
@@ -944,9 +951,10 @@ DecodeTimeOnly(char **field, int *ftype, int nf, int *dtype, struct tm * tm, dou
tm->tm_hour = 0;
tm->tm_min = 0;
tm->tm_sec = 0;
- tm->tm_isdst = -1; /* don't know daylight savings time status
- * apriori */
*fsec = 0;
+ tm->tm_isdst = -1; /* don't know daylight savings time status apriori */
+ if (tzp != NULL)
+ *tzp = 0;
fmask = DTK_DATE_M;
@@ -959,6 +967,14 @@ DecodeTimeOnly(char **field, int *ftype, int nf, int *dtype, struct tm * tm, dou
return -1;
break;
+ case DTK_TZ:
+ if (tzp == NULL)
+ return -1;
+ if (DecodeTimezone(field[i], tzp) != 0)
+ return -1;
+ tmask = DTK_M(TZ);
+ break;
+
case DTK_NUMBER:
flen = strlen(field[i]);
@@ -1035,6 +1051,45 @@ DecodeTimeOnly(char **field, int *ftype, int nf, int *dtype, struct tm * tm, dou
if ((fmask & DTK_TIME_M) != DTK_TIME_M)
return -1;
+ /* timezone not specified? then find local timezone if possible */
+ if ((tzp != NULL) && (!(fmask & DTK_M(TZ))))
+ {
+ struct tm tt, *tmp = &tt;
+
+ /*
+ * daylight savings time modifier but no standard timezone?
+ * then error
+ */
+ if (fmask & DTK_M(DTZMOD))
+ return -1;
+
+ GetCurrentTime(tmp);
+ tmp->tm_hour = tm->tm_hour;
+ tmp->tm_min = tm->tm_min;
+ tmp->tm_sec = tm->tm_sec;
+
+#ifdef USE_POSIX_TIME
+ tmp->tm_isdst = -1;
+ mktime(tmp);
+ tm->tm_isdst = tmp->tm_isdst;
+
+#if defined(HAVE_TM_ZONE)
+ *tzp = -(tmp->tm_gmtoff); /* tm_gmtoff is Sun/DEC-ism */
+#elif defined(HAVE_INT_TIMEZONE)
+#ifdef __CYGWIN__
+ *tzp = ((tmp->tm_isdst > 0) ? (_timezone - 3600) : _timezone);
+#else
+ *tzp = ((tmp->tm_isdst > 0) ? (timezone - 3600) : timezone);
+#endif
+#else
+#error USE_POSIX_TIME is defined but neither HAVE_TM_ZONE or HAVE_INT_TIMEZONE are defined
+#endif
+
+#else /* !USE_POSIX_TIME */
+ *tzp = CTimeZone;
+#endif
+ }
+
return 0;
} /* DecodeTimeOnly() */
@@ -1830,7 +1885,7 @@ EncodeDateOnly(struct tm * tm, int style, char *str)
* Encode time fields only.
*/
int
-EncodeTimeOnly(struct tm * tm, double fsec, int style, char *str)
+EncodeTimeOnly(struct tm * tm, double fsec, int *tzp, int style, char *str)
{
double sec;
@@ -1842,6 +1897,15 @@ EncodeTimeOnly(struct tm * tm, double fsec, int style, char *str)
sprintf(str, "%02d:%02d:", tm->tm_hour, tm->tm_min);
sprintf((str + 6), ((fsec != 0) ? "%05.2f" : "%02.0f"), sec);
+ if (tzp != NULL)
+ {
+ int hour, min;
+
+ hour = -(*tzp / 3600);
+ min = ((abs(*tzp) / 60) % 60);
+ sprintf((str + strlen(str)), ((min != 0) ? "%+03d:%02d" : "%+03d"), hour, min);
+ }
+
return TRUE;
} /* EncodeTimeOnly() */
diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c
index 0a0df27b808..6af9cd906d3 100644
--- a/src/backend/utils/adt/float.c
+++ b/src/backend/utils/adt/float.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.53 2000/01/26 05:57:14 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.54 2000/03/14 23:06:36 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1236,6 +1236,31 @@ dlog1(float64 arg1)
return result;
}
+/*
+ * dlog10 - returns a pointer to the base 10 logarithm of arg1
+ */
+float64
+dlog10(float64 arg1)
+{
+ float64 result;
+ double tmp;
+
+ if (!PointerIsValid(arg1))
+ return (float64) NULL;
+
+ result = (float64) palloc(sizeof(float64data));
+
+ tmp = *arg1;
+ if (tmp == 0.0)
+ elog(ERROR, "can't take log of zero");
+ if (tmp < 0)
+ elog(ERROR, "can't take log of a negative number");
+ *result = (float64data) log10(tmp);
+
+ CheckFloat8Val(*result);
+ return result;
+} /* dlog10() */
+
/*
* ====================
diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c
index 7b56fba275b..9561f9e875d 100644
--- a/src/backend/utils/adt/geo_ops.c
+++ b/src/backend/utils/adt/geo_ops.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.48 2000/01/26 05:57:14 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/geo_ops.c,v 1.49 2000/03/14 23:06:36 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -3510,29 +3510,6 @@ path_div_pt(PATH *path, Point *point)
} /* path_div_pt() */
-bool
-path_contain_pt(PATH *path, Point *p)
-{
- if (!PointerIsValid(path) || !PointerIsValid(p))
- return FALSE;
-
- return (on_ppath(p, path));
-} /* path_contain_pt() */
-
-/* pt_contained_path
- * Point in or on path? This is the same as on_ppath.
- * - thomas 1998-10-29
- */
-bool
-pt_contained_path(Point *p, PATH *path)
-{
- if (!PointerIsValid(p) || !PointerIsValid(path))
- return FALSE;
-
- return path_contain_pt(path, p);
-} /* pt_contained_path() */
-
-
Point *
path_center(PATH *path)
{
diff --git a/src/backend/utils/adt/int.c b/src/backend/utils/adt/int.c
index 244bf3aaa4b..7eb7783274c 100644
--- a/src/backend/utils/adt/int.c
+++ b/src/backend/utils/adt/int.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/int.c,v 1.34 2000/03/07 23:58:38 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/int.c,v 1.35 2000/03/14 23:06:36 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -659,8 +659,8 @@ int42mod(int32 arg1, int32 arg2)
return arg1 % arg2;
}
-/*
- * int[24]fac - returns arg1!
+/* int[24]fac()
+ * Factorial
*/
int32
int4fac(int32 arg1)
@@ -678,7 +678,7 @@ int4fac(int32 arg1)
int32
int2fac(int16 arg1)
{
- int16 result;
+ int32 result;
if (arg1 < 1)
result = 0;
@@ -688,6 +688,21 @@ int2fac(int16 arg1)
return result;
}
+/* int[24]abs()
+ * Absolute value
+ */
+int32
+int4abs(int32 arg1)
+{
+ return ((arg1 < 0)? -arg1: arg1);
+}
+
+int16
+int2abs(int16 arg1)
+{
+ return ((arg1 < 0)? -arg1: arg1);
+}
+
int16
int2larger(int16 arg1, int16 arg2)
{
diff --git a/src/backend/utils/adt/int8.c b/src/backend/utils/adt/int8.c
index 7c00686b194..27b0f42c97f 100644
--- a/src/backend/utils/adt/int8.c
+++ b/src/backend/utils/adt/int8.c
@@ -359,6 +359,63 @@ int8div(int64 *val1, int64 *val2)
return result;
} /* int8div() */
+/* int8abs()
+ * Absolute value
+ */
+int64 *
+int8abs(int64 *arg1)
+{
+ int64 *result;
+
+ if (!PointerIsValid(arg1))
+ return NULL;
+
+ result = palloc(sizeof(*result));
+
+ *result = ((*arg1 < 0)? -*arg1: *arg1);
+
+ return result;
+}
+
+/* int8mod()
+ * Modulo operation.
+ */
+int64 *
+int8mod(int64 *val1, int64 *val2)
+{
+ int64 *result;
+
+ /* use the divide operation to check params and allocate storage */
+ result = int8div(val1, val2);
+ *result *= *val2;
+ *result = *val1 - *result;
+
+ return result;
+} /* int8mod() */
+
+/* int8fac()
+ * Factorial
+ */
+int64 *
+int8fac(int64 *arg1)
+{
+ int64 *result;
+ int64 i;
+
+ if (!PointerIsValid(arg1))
+ return NULL;
+
+ result = palloc(sizeof(*result));
+
+ if (*arg1 < 1)
+ *result = 0;
+ else
+ for (i = *arg1, *result = 1; i > 0; --i)
+ *result *= i;
+
+ return result;
+}
+
int64 *
int8larger(int64 *val1, int64 *val2)
{
@@ -634,4 +691,4 @@ int8_text(int64 *val)
memmove(VARDATA(result), s, len);
return result;
-} /* int8out() */
+} /* int8_text() */
diff --git a/src/backend/utils/adt/oracle_compat.c b/src/backend/utils/adt/oracle_compat.c
index 50be811b22c..b18cbf4a208 100644
--- a/src/backend/utils/adt/oracle_compat.c
+++ b/src/backend/utils/adt/oracle_compat.c
@@ -1,24 +1,14 @@
/*
* Edmund Mergl <E.Mergl@bawue.de>
*
- * $Id: oracle_compat.c,v 1.20 1999/07/15 15:20:19 momjian Exp $
+ * $Id: oracle_compat.c,v 1.21 2000/03/14 23:06:37 thomas Exp $
*
*/
#include <ctype.h>
#include "postgres.h"
-
-text *lower(text *string);
-text *upper(text *string);
-text *initcap(text *string);
-text *lpad(text *string1, int4 len, text *string2);
-text *rpad(text *string1, int4 len, text *string2);
-text *btrim(text *string, text *set);
-text *ltrim(text *string, text *set);
-text *rtrim(text *string, text *set);
-text *substr(text *string, int4 m, int4 n);
-text *translate(text *string, char from, char to);
+#include "utils/builtins.h"
/********************************************************************
@@ -506,42 +496,68 @@ substr(text *string, int4 m, int4 n)
*
* Syntax:
*
- * text *translate(text *string, char from, char to)
+ * text *translate(text *string, text *from, text *to)
*
* Purpose:
*
* Returns string after replacing all occurences of from with
* the corresponding character in to. TRANSLATE will not remove
* characters.
+ * Modified to work with strings rather than single character
+ * for the substitution arguments.
+ * Modifications from Edwin Ramirez <ramirez@doc.mssm.edu>.
*
********************************************************************/
text *
-translate(text *string, char from, char to)
+translate(text *string, text *from, text *to)
{
- text *ret;
- char *ptr,
- *ptr_ret;
- int m;
+ text *ret;
+ char *ptr_ret, *from_ptr, *to_ptr;
+ char *source, *target, *temp, rep;
+ int m, fromlen, tolen, retlen, i;
if ((string == (text *) NULL) ||
((m = VARSIZE(string) - VARHDRSZ) <= 0))
return string;
- ret = (text *) palloc(VARSIZE(string));
- VARSIZE(ret) = VARSIZE(string);
-
- ptr = VARDATA(string);
- ptr_ret = VARDATA(ret);
+ target = (char *) palloc(VARSIZE(string) - VARHDRSZ);
+ source = VARDATA(string);
+ temp = target;
+ fromlen = VARSIZE(from) - VARHDRSZ;
+ from_ptr = VARDATA(from);
+ tolen = VARSIZE(to) - VARHDRSZ;
+ to_ptr = VARDATA(to);
+ retlen = 0;
while (m--)
{
- *ptr_ret++ = *ptr == from ? to : *ptr;
- ptr++;
+ rep = *source;
+ for(i=0;i<fromlen;i++) {
+ if(from_ptr[i] == *source) {
+ if(i < tolen) {
+ rep = to_ptr[i];
+ } else {
+ rep = 0;
+ }
+ break;
+ }
+ }
+ if(rep != 0) {
+ *target++ = rep;
+ retlen++;
+ }
+ source++;
}
+ ret = (text *) palloc(retlen + VARHDRSZ);
+ VARSIZE(ret) = retlen + VARHDRSZ;
+ ptr_ret = VARDATA(ret);
+ for(i=0;i<retlen;i++) {
+ *ptr_ret++ = temp[i];
+ }
+ pfree(target);
return ret;
}
-
/* EOF */
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index bdeaf440829..59ec46a85aa 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -3,7 +3,7 @@
* out of its tuple
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.44 2000/02/26 21:13:18 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/ruleutils.c,v 1.45 2000/03/14 23:06:37 thomas Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@@ -923,6 +923,8 @@ get_select_query_def(Query *query, deparse_context *context)
continue;
rte = (RangeTblEntry *) lfirst(l);
+ if (rte->ref == NULL)
+ continue;
if (!strcmp(rte->ref->relname, "*NEW*"))
continue;
if (!strcmp(rte->ref->relname, "*CURRENT*"))
@@ -982,9 +984,10 @@ get_select_query_def(Query *query, deparse_context *context)
{
rte = (RangeTblEntry *) lfirst(l);
+ if (rte->ref == NULL)
+ continue;
if (!strcmp(rte->ref->relname, "*NEW*"))
continue;
-
if (!strcmp(rte->ref->relname, "*CURRENT*"))
continue;
@@ -1008,7 +1011,9 @@ get_select_query_def(Query *query, deparse_context *context)
* Since we don't really support SQL joins yet, dropping
* the list of column aliases doesn't hurt anything...
*/
- if (strcmp(rte->relname, rte->ref->relname) != 0)
+ if ((rte->ref != NULL)
+ && ((strcmp(rte->relname, rte->ref->relname) != 0)
+ || (rte->ref->attrs != NIL)))
{
appendStringInfo(buf, " %s",
quote_identifier(rte->ref->relname));
@@ -1104,6 +1109,8 @@ get_insert_query_def(Query *query, deparse_context *context)
continue;
rte = (RangeTblEntry *) lfirst(l);
+ if (rte->ref == NULL)
+ continue;
if (!strcmp(rte->ref->relname, "*NEW*"))
continue;
if (!strcmp(rte->ref->relname, "*CURRENT*"))
@@ -1274,7 +1281,10 @@ get_rule_expr(Node *node, deparse_context *context)
if (context->varprefix)
{
- if (!strcmp(rte->ref->relname, "*NEW*"))
+ if (rte->ref == NULL)
+ appendStringInfo(buf, "%s.",
+ quote_identifier(rte->relname));
+ else if (!strcmp(rte->ref->relname, "*NEW*"))
appendStringInfo(buf, "new.");
else if (!strcmp(rte->ref->relname, "*CURRENT*"))
appendStringInfo(buf, "old.");
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index 77202c8308e..4086a803dd7 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.22 2000/02/16 17:24:48 thomas Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.23 2000/03/14 23:06:37 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -952,6 +952,32 @@ interval_cmp(Interval *interval1, Interval *interval2)
return (span1 < span2) ? -1 : (span1 > span2) ? 1 : 0;
} /* interval_cmp() */
+/* overlaps_timestamp()
+ * Implements the SQL92 OVERLAPS operator.
+ * Algorithm from Date and Darwen, 1997
+ */
+bool
+overlaps_timestamp(Timestamp *ts1, Timestamp *te1, Timestamp *ts2, Timestamp *te2)
+{
+ /* Make sure we have ordered pairs... */
+ if (timestamp_gt(ts1, te1))
+ {
+ Timestamp *tt = ts1;
+ ts1 = te1;
+ te1 = tt;
+ }
+ if (timestamp_gt(ts2, te2))
+ {
+ Timestamp *tt = ts2;
+ ts2 = te2;
+ te2 = tt;
+ }
+
+ return ((timestamp_gt(ts1, ts2) && (timestamp_lt(ts1, te2) || timestamp_lt(te1, te2)))
+ || (timestamp_gt(ts2, ts1) && (timestamp_lt(ts2, te1) || timestamp_lt(te2, te1)))
+ || timestamp_eq(ts1, ts2));
+} /* overlaps_timestamp() */
+
/*----------------------------------------------------------
* "Arithmetic" operators on date/times.
diff --git a/src/bin/scripts/createlang.sh b/src/bin/scripts/createlang.sh
index b789196652f..8fb3c72e4c6 100644
--- a/src/bin/scripts/createlang.sh
+++ b/src/bin/scripts/createlang.sh
@@ -8,7 +8,7 @@
#
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createlang.sh,v 1.6 2000/01/19 20:08:35 petere Exp $
+# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createlang.sh,v 1.7 2000/03/14 23:06:41 thomas Exp $
#
#-------------------------------------------------------------------------
@@ -241,11 +241,11 @@ if [ $? -ne 0 ]; then
echo "$CMDNAME: language installation failed"
exit 1
fi
+
$PSQL "CREATE ${trusted}PROCEDURAL LANGUAGE '$langname' HANDLER $handler LANCOMPILER '$lancomp'"
if [ $? -ne 0 ]; then
echo "$CMDNAME: language installation failed"
exit 1
fi
-echo "Ok"
exit 0
diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h
index 168cd88ac6a..3d302be9d75 100644
--- a/src/include/catalog/catversion.h
+++ b/src/include/catalog/catversion.h
@@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: catversion.h,v 1.17 2000/02/27 18:06:28 tgl Exp $
+ * $Id: catversion.h,v 1.18 2000/03/14 23:06:42 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -53,6 +53,6 @@
*/
/* yyyymmddN */
-#define CATALOG_VERSION_NO 200002271
+#define CATALOG_VERSION_NO 200003141
#endif
diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h
index 67c761e3690..c953d33d00a 100644
--- a/src/include/catalog/pg_aggregate.h
+++ b/src/include/catalog/pg_aggregate.h
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_aggregate.h,v 1.23 2000/02/16 17:26:06 thomas Exp $
+ * $Id: pg_aggregate.h,v 1.24 2000/03/14 23:06:42 thomas Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@@ -114,6 +114,8 @@ DATA(insert OID = 0 ( max PGUID float4larger - - 700 700 0 700 _null_ _null_
DATA(insert OID = 0 ( max PGUID float8larger - - 701 701 0 701 _null_ _null_ ));
DATA(insert OID = 0 ( max PGUID int4larger - - 702 702 0 702 _null_ _null_ ));
DATA(insert OID = 0 ( max PGUID date_larger - - 1082 1082 0 1082 _null_ _null_ ));
+DATA(insert OID = 0 ( max PGUID time_larger - - 1083 1083 0 1083 _null_ _null_ ));
+DATA(insert OID = 0 ( max PGUID timetz_larger - - 1266 1266 0 1266 _null_ _null_ ));
DATA(insert OID = 0 ( max PGUID cashlarger - - 790 790 0 790 _null_ _null_ ));
DATA(insert OID = 0 ( max PGUID timestamp_larger - - 1184 1184 0 1184 _null_ _null_ ));
DATA(insert OID = 0 ( max PGUID interval_larger - - 1186 1186 0 1186 _null_ _null_ ));
@@ -127,6 +129,8 @@ DATA(insert OID = 0 ( min PGUID float4smaller - - 700 700 0 700 _null_ _null
DATA(insert OID = 0 ( min PGUID float8smaller - - 701 701 0 701 _null_ _null_ ));
DATA(insert OID = 0 ( min PGUID int4smaller - - 702 702 0 702 _null_ _null_ ));
DATA(insert OID = 0 ( min PGUID date_smaller - - 1082 1082 0 1082 _null_ _null_ ));
+DATA(insert OID = 0 ( min PGUID time_smaller - - 1083 1083 0 1083 _null_ _null_ ));
+DATA(insert OID = 0 ( min PGUID timetz_smaller - - 1266 1266 0 1266 _null_ _null_ ));
DATA(insert OID = 0 ( min PGUID cashsmaller - - 790 790 0 790 _null_ _null_ ));
DATA(insert OID = 0 ( min PGUID timestamp_smaller - - 1184 1184 0 1184 _null_ _null_ ));
DATA(insert OID = 0 ( min PGUID interval_smaller - - 1186 1186 0 1186 _null_ _null_ ));
diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h
index 66830cb1868..3f8859dd216 100644
--- a/src/include/catalog/pg_amop.h
+++ b/src/include/catalog/pg_amop.h
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_amop.h,v 1.31 2000/02/27 12:02:33 wieck Exp $
+ * $Id: pg_amop.h,v 1.32 2000/03/14 23:06:43 thomas Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@@ -285,7 +285,17 @@ DATA(insert OID = 0 ( 403 1115 1113 4 ));
DATA(insert OID = 0 ( 403 1115 1112 5 ));
/*
- * nbtree datetime_ops
+ * nbtree timetz_ops
+ */
+
+DATA(insert OID = 0 ( 403 1399 1552 1 ));
+DATA(insert OID = 0 ( 403 1399 1553 2 ));
+DATA(insert OID = 0 ( 403 1399 1550 3 ));
+DATA(insert OID = 0 ( 403 1399 1555 4 ));
+DATA(insert OID = 0 ( 403 1399 1554 5 ));
+
+/*
+ * nbtree timestamp_ops
*/
DATA(insert OID = 0 ( 403 1312 1322 1 ));
@@ -295,7 +305,7 @@ DATA(insert OID = 0 ( 403 1312 1325 4 ));
DATA(insert OID = 0 ( 403 1312 1324 5 ));
/*
- * nbtree timespan_ops
+ * nbtree interval_ops
*/
DATA(insert OID = 0 ( 403 1313 1332 1 ));
@@ -397,9 +407,11 @@ DATA(insert OID = 0 ( 405 1077 1062 1 ));
DATA(insert OID = 0 ( 405 1114 1093 1 ));
/* time_ops */
DATA(insert OID = 0 ( 405 1115 1108 1 ));
-/* datetime_ops */
+/* timetz_ops */
+DATA(insert OID = 0 ( 405 1399 1550 1 ));
+/* timestamp_ops */
DATA(insert OID = 0 ( 405 1312 1320 1 ));
-/* timespan_ops */
+/* interval_ops */
DATA(insert OID = 0 ( 405 1313 1330 1 ));
/* macaddr_ops */
DATA(insert OID = 0 ( 405 810 1220 1 ));
diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h
index 8be2a8ef964..a8cdb38d147 100644
--- a/src/include/catalog/pg_amproc.h
+++ b/src/include/catalog/pg_amproc.h
@@ -10,7 +10,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_amproc.h,v 1.21 2000/02/27 12:02:33 wieck Exp $
+ * $Id: pg_amproc.h,v 1.22 2000/03/14 23:06:43 thomas Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@@ -95,12 +95,13 @@ DATA(insert OID = 0 (403 1115 1107 1));
DATA(insert OID = 0 (403 1181 359 1));
DATA(insert OID = 0 (403 1312 1314 1));
DATA(insert OID = 0 (403 1313 1315 1));
-DATA(insert OID = 0 (403 810 836 1));
-DATA(insert OID = 0 (403 935 926 1));
-DATA(insert OID = 0 (403 652 926 1));
+DATA(insert OID = 0 (403 810 836 1));
+DATA(insert OID = 0 (403 935 926 1));
+DATA(insert OID = 0 (403 652 926 1));
DATA(insert OID = 0 (403 1768 1769 1));
DATA(insert OID = 0 (403 1690 1693 1));
DATA(insert OID = 0 (403 1663 1636 1));
+DATA(insert OID = 0 (403 1399 1358 1));
@@ -120,5 +121,6 @@ DATA(insert OID = 0 (405 1115 452 1));
DATA(insert OID = 0 (405 1181 455 1));
DATA(insert OID = 0 (405 1312 452 1));
DATA(insert OID = 0 (405 1313 452 1));
+DATA(insert OID = 0 (405 1399 452 1));
#endif /* PG_AMPROC_H */
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 1d17f6151a5..617bb0f4d31 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_opclass.h,v 1.30 2000/02/27 12:02:33 wieck Exp $
+ * $Id: pg_opclass.h,v 1.31 2000/03/14 23:06:43 thomas Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@@ -63,64 +63,66 @@ typedef FormData_pg_opclass *Form_pg_opclass;
* (see the README in this directory), so just put zeros
* in, which are invalid OID's anyway. --djm
*/
-DATA(insert OID = 421 ( int2_ops 21 ));
+DATA(insert OID = 421 ( int2_ops 21 ));
DESCR("");
-DATA(insert OID = 422 ( box_ops 603 ));
+DATA(insert OID = 422 ( box_ops 603 ));
DESCR("");
-DATA(insert OID = 423 ( float8_ops 701 ));
+DATA(insert OID = 423 ( float8_ops 701 ));
DESCR("");
-DATA(insert OID = 424 ( int24_ops 0 ));
+DATA(insert OID = 424 ( int24_ops 0 ));
DESCR("");
-DATA(insert OID = 425 ( int42_ops 0 ));
+DATA(insert OID = 425 ( int42_ops 0 ));
DESCR("");
-DATA(insert OID = 426 ( int4_ops 23 ));
+DATA(insert OID = 426 ( int4_ops 23 ));
DESCR("");
#define INT4_OPS_OID 426
-DATA(insert OID = 427 ( oid_ops 26 ));
+DATA(insert OID = 427 ( oid_ops 26 ));
DESCR("");
-DATA(insert OID = 428 ( float4_ops 700 ));
+DATA(insert OID = 428 ( float4_ops 700 ));
DESCR("");
-DATA(insert OID = 429 ( char_ops 18 ));
+DATA(insert OID = 429 ( char_ops 18 ));
DESCR("");
-DATA(insert OID = 431 ( text_ops 25 ));
+DATA(insert OID = 431 ( text_ops 25 ));
DESCR("");
-DATA(insert OID = 432 ( abstime_ops 702 ));
+DATA(insert OID = 432 ( abstime_ops 702 ));
DESCR("");
-DATA(insert OID = 433 ( bigbox_ops 603 ));
+DATA(insert OID = 433 ( bigbox_ops 603 ));
DESCR("");
-DATA(insert OID = 434 ( poly_ops 604 ));
+DATA(insert OID = 434 ( poly_ops 604 ));
DESCR("");
-DATA(insert OID = 435 ( oidvector_ops 30 ));
+DATA(insert OID = 435 ( oidvector_ops 30 ));
DESCR("");
-DATA(insert OID = 714 ( circle_ops 718 ));
+DATA(insert OID = 714 ( circle_ops 718 ));
DESCR("");
-DATA(insert OID = 754 ( int8_ops 20 ));
+DATA(insert OID = 754 ( int8_ops 20 ));
DESCR("");
-DATA(insert OID = 1076 ( bpchar_ops 1042 ));
+DATA(insert OID = 1076 ( bpchar_ops 1042 ));
DESCR("");
DATA(insert OID = 1077 ( varchar_ops 1043 ));
DESCR("");
-DATA(insert OID = 1114 ( date_ops 1082 ));
+DATA(insert OID = 1114 ( date_ops 1082 ));
DESCR("");
-DATA(insert OID = 1115 ( time_ops 1083 ));
+DATA(insert OID = 1115 ( time_ops 1083 ));
DESCR("");
-DATA(insert OID = 1181 ( name_ops 19 ));
+DATA(insert OID = 1181 ( name_ops 19 ));
DESCR("");
DATA(insert OID = 1312 ( timestamp_ops 1184 ));
DESCR("");
DATA(insert OID = 1313 ( interval_ops 1186 ));
DESCR("");
-DATA(insert OID = 810 ( macaddr_ops 829 ));
+DATA(insert OID = 810 ( macaddr_ops 829 ));
DESCR("");
-DATA(insert OID = 935 ( inet_ops 869 ));
+DATA(insert OID = 935 ( inet_ops 869 ));
DESCR("");
-DATA(insert OID = 652 ( cidr_ops 650 ));
+DATA(insert OID = 652 ( cidr_ops 650 ));
DESCR("");
-DATA(insert OID = 1768 ( numeric_ops 1700 ));
+DATA(insert OID = 1768 ( numeric_ops 1700 ));
DESCR("");
-DATA(insert OID = 1663 ( lztext_ops 1625 ));
+DATA(insert OID = 1663 ( lztext_ops 1625 ));
DESCR("");
-DATA(insert OID = 1690 ( bool_ops 16 ));
+DATA(insert OID = 1690 ( bool_ops 16 ));
+DESCR("");
+DATA(insert OID = 1399 ( timetz_ops 1266 ));
DESCR("");
#endif /* PG_OPCLASS_H */
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index 98f0a418311..571f480ce24 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_operator.h,v 1.71 2000/02/27 12:02:33 wieck Exp $
+ * $Id: pg_operator.h,v 1.72 2000/03/14 23:06:43 thomas Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@@ -141,6 +141,8 @@ DATA(insert OID = 401 ( "=" PGUID 0 b t f 1034 1034 16 401 0 0 0 array_e
DATA(insert OID = 387 ( "=" PGUID 0 b t t 27 27 16 387 0 0 0 tideq eqsel eqjoinsel ));
#define TIDEqualOperator 387
+DATA(insert OID = 388 ( "!" PGUID 0 r t f 20 0 20 0 0 0 0 int8fac - - ));
+DATA(insert OID = 389 ( "!!" PGUID 0 l t f 0 20 20 0 0 0 0 int8fac - - ));
DATA(insert OID = 410 ( "=" PGUID 0 b t t 20 20 16 410 411 412 412 int8eq eqsel eqjoinsel ));
DATA(insert OID = 411 ( "<>" PGUID 0 b t f 20 20 16 411 410 0 0 int8ne neqsel neqjoinsel ));
@@ -155,6 +157,8 @@ DATA(insert OID = 418 ( "<" PGUID 0 b t f 20 23 16 76 430 0 0 int84lt sc
DATA(insert OID = 419 ( ">" PGUID 0 b t f 20 23 16 37 420 0 0 int84gt scalargtsel scalargtjoinsel ));
DATA(insert OID = 420 ( "<=" PGUID 0 b t f 20 23 16 82 419 0 0 int84le scalarltsel scalarltjoinsel ));
DATA(insert OID = 430 ( ">=" PGUID 0 b t f 20 23 16 80 418 0 0 int84ge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 439 ( "%" PGUID 0 b t f 20 20 20 0 0 0 0 int8mod - - ));
+DATA(insert OID = 473 ( "@" PGUID 0 l t f 0 20 20 0 0 0 0 int8abs - - ));
DATA(insert OID = 484 ( "-" PGUID 0 l t f 0 20 20 0 0 0 0 int8um - - ));
DATA(insert OID = 485 ( "<<" PGUID 0 b t f 604 604 16 0 0 0 0 poly_left positionsel positionjoinsel ));
@@ -216,12 +220,12 @@ DATA(insert OID = 540 ( "<=" PGUID 0 b t f 21 23 16 543 536 0 0 int24le
DATA(insert OID = 541 ( "<=" PGUID 0 b t f 23 21 16 542 537 0 0 int42le scalarltsel scalarltjoinsel ));
DATA(insert OID = 542 ( ">=" PGUID 0 b t f 21 23 16 541 534 0 0 int24ge scalargtsel scalargtjoinsel ));
DATA(insert OID = 543 ( ">=" PGUID 0 b t f 23 21 16 540 535 0 0 int42ge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 544 ( "*" PGUID 0 b t f 21 23 23 545 0 0 0 int24mul - - ));
-DATA(insert OID = 545 ( "*" PGUID 0 b t f 23 21 23 544 0 0 0 int42mul - - ));
-DATA(insert OID = 546 ( "/" PGUID 0 b t f 21 23 23 0 0 0 0 int24div - - ));
-DATA(insert OID = 547 ( "/" PGUID 0 b t f 23 21 23 0 0 0 0 int42div - - ));
-DATA(insert OID = 548 ( "%" PGUID 0 b t f 21 23 23 0 0 0 0 int24mod - - ));
-DATA(insert OID = 549 ( "%" PGUID 0 b t f 23 21 23 0 0 0 0 int42mod - - ));
+DATA(insert OID = 544 ( "*" PGUID 0 b t f 21 23 23 545 0 0 0 int24mul - - ));
+DATA(insert OID = 545 ( "*" PGUID 0 b t f 23 21 23 544 0 0 0 int42mul - - ));
+DATA(insert OID = 546 ( "/" PGUID 0 b t f 21 23 23 0 0 0 0 int24div - - ));
+DATA(insert OID = 547 ( "/" PGUID 0 b t f 23 21 23 0 0 0 0 int42div - - ));
+DATA(insert OID = 548 ( "%" PGUID 0 b t f 21 23 23 0 0 0 0 int24mod - - ));
+DATA(insert OID = 549 ( "%" PGUID 0 b t f 23 21 23 0 0 0 0 int42mod - - ));
DATA(insert OID = 550 ( "+" PGUID 0 b t f 21 21 21 550 0 0 0 int2pl - - ));
DATA(insert OID = 551 ( "+" PGUID 0 b t f 23 23 23 551 0 0 0 int4pl - - ));
DATA(insert OID = 552 ( "+" PGUID 0 b t f 21 23 23 553 0 0 0 int24pl - - ));
@@ -272,10 +276,10 @@ DATA(insert OID = 596 ( "|/" PGUID 0 l t f 0 701 701 0 0 0 0 dsqrt
DATA(insert OID = 597 ( "||/" PGUID 0 l t f 0 701 701 0 0 0 0 dcbrt - - ));
DATA(insert OID = 598 ( "%" PGUID 0 l t f 0 701 701 0 0 0 0 dtrunc - - ));
DATA(insert OID = 599 ( "%" PGUID 0 r t f 701 0 701 0 0 0 0 dround - - ));
-DATA(insert OID = 1282 ( ":" PGUID 0 l t f 0 701 701 0 0 0 0 dexp - - ));
-DATA(insert OID = 1283 ( ";" PGUID 0 l t f 0 701 701 0 0 0 0 dlog1 - - ));
-DATA(insert OID = 1284 ( "|" PGUID 0 l t f 0 704 702 0 0 0 0 tintervalstart - - ));
-DATA(insert OID = 606 ( "<#>" PGUID 0 b t f 702 702 704 0 0 0 0 mktinterval - - ));
+DATA(insert OID = 1282 ( ":" PGUID 0 l t f 0 701 701 0 0 0 0 dexp - - ));
+DATA(insert OID = 1283 ( ";" PGUID 0 l t f 0 701 701 0 0 0 0 dlog1 - - ));
+DATA(insert OID = 1284 ( "|" PGUID 0 l t f 0 704 702 0 0 0 0 tintervalstart - - ));
+DATA(insert OID = 606 ( "<#>" PGUID 0 b t f 702 702 704 0 0 0 0 mktinterval - - ));
DATA(insert OID = 607 ( "=" PGUID 0 b t t 26 26 16 607 608 609 609 oideq eqsel eqjoinsel ));
#define MIN_OIDCMP 607 /* used by cache code */
DATA(insert OID = 608 ( "<>" PGUID 0 b t f 26 26 16 608 607 0 0 oidne neqsel neqjoinsel ));
@@ -344,6 +348,7 @@ DATA(insert OID = 673 ( "<=" PGUID 0 b t f 701 701 16 675 674 0 0 float8le
DATA(insert OID = 674 ( ">" PGUID 0 b t f 701 701 16 672 673 0 0 float8gt scalargtsel scalargtjoinsel ));
DATA(insert OID = 675 ( ">=" PGUID 0 b t f 701 701 16 673 672 0 0 float8ge scalargtsel scalargtjoinsel ));
+DATA(insert OID = 682 ( "@" PGUID 0 l t f 0 21 21 0 0 0 0 int2abs - - ));
DATA(insert OID = 684 ( "+" PGUID 0 b t f 20 20 20 684 0 0 0 int8pl - - ));
DATA(insert OID = 685 ( "-" PGUID 0 b t f 20 20 20 0 0 0 0 int8mi - - ));
DATA(insert OID = 686 ( "*" PGUID 0 b t f 20 20 20 686 0 0 0 int8mul - - ));
@@ -379,6 +384,8 @@ DATA(insert OID = 757 ( "~" PGUID 0 b t f 604 600 16 756 0 0 0 poly_con
DATA(insert OID = 758 ( "@" PGUID 0 b t f 600 718 16 759 0 0 0 pt_contained_circle - - ));
DATA(insert OID = 759 ( "~" PGUID 0 b t f 718 600 16 758 0 0 0 circle_contain_pt - - ));
+DATA(insert OID = 773 ( "@" PGUID 0 l t f 0 23 23 0 0 0 0 int4abs - - ));
+
/* additional operators for geometric types - thomas 1997-07-09 */
DATA(insert OID = 792 ( "=" PGUID 0 b t f 602 602 16 792 0 0 0 path_n_eq eqsel eqjoinsel ));
DATA(insert OID = 793 ( "<" PGUID 0 b t f 602 602 16 794 0 0 0 path_n_lt - - ));
@@ -480,6 +487,14 @@ DATA(insert OID = 1111 ( "<=" PGUID 0 b t f 1083 1083 16 1113 1112 0 0 time
DATA(insert OID = 1112 ( ">" PGUID 0 b t f 1083 1083 16 1110 1111 0 0 time_gt scalargtsel scalargtjoinsel ));
DATA(insert OID = 1113 ( ">=" PGUID 0 b t f 1083 1083 16 1111 1110 0 0 time_ge scalargtsel scalargtjoinsel ));
+/* timetz operators */
+DATA(insert OID = 1550 ( "=" PGUID 0 b t f 1266 1266 16 1550 1551 1552 1552 timetz_eq eqsel eqjoinsel ));
+DATA(insert OID = 1551 ( "<>" PGUID 0 b t f 1266 1266 16 1551 1550 0 0 timetz_ne neqsel neqjoinsel ));
+DATA(insert OID = 1552 ( "<" PGUID 0 b t f 1266 1266 16 1554 1555 0 0 timetz_lt scalarltsel scalarltjoinsel ));
+DATA(insert OID = 1553 ( "<=" PGUID 0 b t f 1266 1266 16 1555 1554 0 0 timetz_le scalarltsel scalarltjoinsel ));
+DATA(insert OID = 1554 ( ">" PGUID 0 b t f 1266 1266 16 1552 1553 0 0 timetz_gt scalargtsel scalargtjoinsel ));
+DATA(insert OID = 1555 ( ">=" PGUID 0 b t f 1266 1266 16 1553 1552 0 0 timetz_ge scalargtsel scalargtjoinsel ));
+
/* float48 operators */
DATA(insert OID = 1116 ( "+" PGUID 0 b t f 700 701 701 1126 0 0 0 float48pl - - ));
DATA(insert OID = 1117 ( "-" PGUID 0 b t f 700 701 701 0 0 0 0 float48mi - - ));
@@ -505,8 +520,11 @@ DATA(insert OID = 1134 ( "<=" PGUID 0 b t f 701 700 16 1125 1133 0 0 float8
DATA(insert OID = 1135 ( ">=" PGUID 0 b t f 701 700 16 1124 1132 0 0 float84ge scalargtsel scalargtjoinsel ));
/* int4 and oid equality */
-DATA(insert OID = 1136 ( "=" PGUID 0 b t t 23 26 16 1137 0 0 0 int4eqoid eqsel eqjoinsel ));
-DATA(insert OID = 1137 ( "=" PGUID 0 b t t 26 23 16 1136 0 0 0 oideqint4 eqsel eqjoinsel ));
+DATA(insert OID = 1136 ( "=" PGUID 0 b t t 23 26 16 1137 0 0 0 int4eqoid eqsel eqjoinsel ));
+DATA(insert OID = 1137 ( "=" PGUID 0 b t t 26 23 16 1136 0 0 0 oideqint4 eqsel eqjoinsel ));
+
+DATA(insert OID = 1158 ( "!" PGUID 0 r t f 21 0 23 0 0 0 0 int2fac - - ));
+DATA(insert OID = 1175 ( "!!" PGUID 0 l t f 0 21 23 0 0 0 0 int2fac - - ));
/* LIKE hacks by Keith Parks. */
DATA(insert OID = 1207 ( "~~" PGUID 0 b t f 19 25 16 0 1208 0 0 namelike eqsel eqjoinsel ));
@@ -544,7 +562,6 @@ DATA(insert OID = 1322 ( "<" PGUID 0 b t f 1184 1184 16 1324 1325 0 0 times
DATA(insert OID = 1323 ( "<=" PGUID 0 b t f 1184 1184 16 1325 1324 0 0 timestamp_le scalarltsel scalarltjoinsel ));
DATA(insert OID = 1324 ( ">" PGUID 0 b t f 1184 1184 16 1322 1323 0 0 timestamp_gt scalargtsel scalargtjoinsel ));
DATA(insert OID = 1325 ( ">=" PGUID 0 b t f 1184 1184 16 1323 1322 0 0 timestamp_ge scalargtsel scalargtjoinsel ));
-
DATA(insert OID = 1327 ( "+" PGUID 0 b t f 1184 1186 1184 0 0 0 0 timestamp_pl_span - - ));
DATA(insert OID = 1328 ( "-" PGUID 0 b t f 1184 1184 1186 0 0 0 0 timestamp_mi - - ));
DATA(insert OID = 1329 ( "-" PGUID 0 b t f 1184 1186 1184 0 0 0 0 timestamp_mi_span - - ));
@@ -561,6 +578,11 @@ DATA(insert OID = 1336 ( "-" PGUID 0 l t f 0 1186 1186 0 0 0 0 interval_u
DATA(insert OID = 1337 ( "+" PGUID 0 b t f 1186 1186 1186 1337 0 0 0 interval_pl - - ));
DATA(insert OID = 1338 ( "-" PGUID 0 b t f 1186 1186 1186 0 0 0 0 interval_mi - - ));
+DATA(insert OID = 1360 ( "+" PGUID 0 b t f 1082 1083 1184 0 0 0 0 datetime_pl - - ));
+DATA(insert OID = 1361 ( "+" PGUID 0 b t f 1082 1266 1184 0 0 0 0 datetimetz_pl - - ));
+DATA(insert OID = 1363 ( "+" PGUID 0 b t f 1083 1082 1184 0 0 0 0 timedate_pl - - ));
+DATA(insert OID = 1366 ( "+" PGUID 0 b t f 1266 1082 1184 0 0 0 0 timetzdate_pl - - ));
+
/* additional geometric operators - thomas 97/04/18 */
DATA(insert OID = 1420 ( "@@" PGUID 0 l t f 0 718 600 0 0 0 0 circle_center - - ));
DATA(insert OID = 1500 ( "=" PGUID 0 b t f 718 718 16 1500 1501 1502 1502 circle_eq eqsel eqjoinsel ));
@@ -670,6 +692,7 @@ DATA(insert OID = 828 ( ">>" PGUID 0 b t f 650 650 16 826 0 0 0 network_s
DATA(insert OID = 1004 ( ">>=" PGUID 0 b t f 650 650 16 827 0 0 0 network_supeq - - ));
/* NUMERIC type - OID's 1700-1799 */
+DATA(insert OID = 1751 ( "-" PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_uminus - - ));
DATA(insert OID = 1752 ( "=" PGUID 0 b t f 1700 1700 16 1752 1753 1754 1754 numeric_eq eqsel eqjoinsel ));
DATA(insert OID = 1753 ( "<>" PGUID 0 b t f 1700 1700 16 1753 1752 0 0 numeric_ne neqsel neqjoinsel ));
DATA(insert OID = 1754 ( "<" PGUID 0 b t f 1700 1700 16 1756 1757 0 0 numeric_lt scalarltsel scalarltjoinsel ));
@@ -682,7 +705,6 @@ DATA(insert OID = 1760 ( "*" PGUID 0 b t f 1700 1700 1700 1760 0 0 0 numeric
DATA(insert OID = 1761 ( "/" PGUID 0 b t f 1700 1700 1700 0 0 0 0 numeric_div - - ));
DATA(insert OID = 1762 ( "%" PGUID 0 b t f 1700 1700 1700 0 0 0 0 numeric_mod - - ));
DATA(insert OID = 1763 ( "@" PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_abs - - ));
-DATA(insert OID = 1788 ( "-" PGUID 0 l t f 0 1700 1700 0 0 0 0 numeric_uminus - - ));
/* LZTEXT type */
DATA(insert OID = 1657 ( "=" PGUID 0 b t f 1625 1625 16 1657 1658 1659 1659 lztext_eq eqsel eqjoinsel ));
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 1e8e1632c56..8568dc51810 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_proc.h,v 1.126 2000/02/27 12:02:33 wieck Exp $
+ * $Id: pg_proc.h,v 1.127 2000/03/14 23:06:44 thomas Exp $
*
* NOTES
* The script catalog/genbki.sh reads this file and generates .bki
@@ -204,8 +204,6 @@ DATA(insert OID = 1257 ( textlen PGUID 11 f t t 1 f 23 "25" 100 0 1 0 text
DESCR("length");
DATA(insert OID = 1258 ( textcat PGUID 11 f t t 2 f 25 "25 25" 100 0 1 0 textcat - ));
DESCR("concatenate");
-DATA(insert OID = 1377 ( textoctetlen PGUID 11 f t t 1 f 23 "25" 100 0 1 0 textoctetlen - ));
-DESCR("octet length");
DATA(insert OID = 84 ( boolne PGUID 11 f t t 2 f 16 "16 16" 100 0 0 100 boolne - ));
DESCR("not equal");
@@ -219,7 +217,9 @@ DESCR("btree cost estimator");
/* OIDS 100 - 199 */
-DATA(insert OID = 1272 ( eqsel PGUID 11 f t f 5 f 701 "26 26 21 0 23" 100 0 0 100 eqsel - ));
+DATA(insert OID = 100 ( int8fac PGUID 11 f t t 1 f 20 "20" 100 0 0 100 int8fac - ));
+DESCR("factorial");
+DATA(insert OID = 101 ( eqsel PGUID 11 f t f 5 f 701 "26 26 21 0 23" 100 0 0 100 eqsel - ));
DESCR("restriction selectivity of = and related operators");
DATA(insert OID = 102 ( neqsel PGUID 11 f t f 5 f 701 "26 26 21 0 23" 100 0 0 100 neqsel - ));
DESCR("restriction selectivity of <> and related operators");
@@ -236,11 +236,11 @@ DESCR("join selectivity of < and related operators on scalar datatypes");
DATA(insert OID = 108 ( scalargtjoinsel PGUID 11 f t f 5 f 701 "26 26 21 26 21" 100 0 0 100 scalargtjoinsel - ));
DESCR("join selectivity of > and related operators on scalar datatypes");
-DATA(insert OID = 112 ( int4_text PGUID 11 f t t 1 f 25 "23" 100 0 0 100 int4_text - ));
+DATA(insert OID = 112 ( text PGUID 11 f t t 1 f 25 "23" 100 0 0 100 int4_text - ));
DESCR("convert int4 to text");
-DATA(insert OID = 113 ( int2_text PGUID 11 f t t 1 f 25 "21" 100 0 0 100 int2_text - ));
+DATA(insert OID = 113 ( text PGUID 11 f t t 1 f 25 "21" 100 0 0 100 int2_text - ));
DESCR("convert int2 to text");
-DATA(insert OID = 114 ( oid_text PGUID 11 f t t 1 f 25 "26" 100 0 0 100 oid_text - ));
+DATA(insert OID = 114 ( text PGUID 11 f t t 1 f 25 "26" 100 0 0 100 oid_text - ));
DESCR("convert oid to text");
DATA(insert OID = 115 ( box_above PGUID 11 f t t 2 f 16 "603 603" 100 1 0 100 box_above - ));
@@ -299,7 +299,7 @@ DESCR("join selectivity for area-comparison operators");
DATA(insert OID = 141 ( int4mul PGUID 11 f t t 2 f 23 "23 23" 100 0 0 100 int4mul - ));
DESCR("multiply");
DATA(insert OID = 142 ( int4fac PGUID 11 f t t 1 f 23 "23" 100 0 0 100 int4fac - ));
-DESCR("fraction");
+DESCR("factorial");
DATA(insert OID = 143 ( pointdist PGUID 11 f t t 2 f 23 "600 600" 100 0 0 100 pointdist - ));
DESCR("");
DATA(insert OID = 144 ( int4ne PGUID 11 f t t 2 f 16 "23 23" 100 0 0 100 int4ne - ));
@@ -406,7 +406,7 @@ DATA(insert OID = 194 ( rt_box_inter PGUID 11 f t t 2 f 603 "603 603" 100 0
DESCR("r-tree");
DATA(insert OID = 195 ( rt_box_size PGUID 11 f t t 2 f 700 "603 700" 100 0 0 100 rt_box_size - ));
DESCR("r-tree");
-DATA(insert OID = 196 ( rt_bigbox_size PGUID 11 f t t 2 f 700 "603 700" 100 0 0 100 rt_bigbox_size - ));
+DATA(insert OID = 196 ( rt_bigbox_size PGUID 11 f t t 2 f 700 "603 700" 100 0 0 100 rt_bigbox_size - ));
DESCR("r-tree");
DATA(insert OID = 197 ( rt_poly_union PGUID 11 f t t 2 f 604 "604 604" 100 0 0 100 rt_poly_union - ));
DESCR("r-tree");
@@ -476,7 +476,7 @@ DATA(insert OID = 227 ( poly_center PGUID 11 f t t 1 f 600 "604" 100 0 0 100
DESCR("center of");
DATA(insert OID = 228 ( dround PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dround - ));
-DESCR("truncate to integer");
+DESCR("round to integer");
DATA(insert OID = 229 ( dtrunc PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dtrunc - ));
DESCR("truncate to integer");
DATA(insert OID = 230 ( dsqrt PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dsqrt - ));
@@ -484,19 +484,19 @@ DESCR("square root");
DATA(insert OID = 231 ( dcbrt PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dcbrt - ));
DESCR("cube root");
DATA(insert OID = 232 ( dpow PGUID 11 f t t 2 f 701 "701 701" 100 0 0 100 dpow - ));
-DESCR("exponentiation");
+DESCR("exponential (x^y)");
DATA(insert OID = 233 ( dexp PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dexp - ));
-DESCR("exponential");
+DESCR("natural exponential (e^x)");
DATA(insert OID = 234 ( dlog1 PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dlog1 - ));
-DESCR("natural logarithm (in psql, protect with ()");
+DESCR("natural logarithm");
-DATA(insert OID = 235 ( i2tod PGUID 11 f t t 1 f 701 "21" 100 0 0 100 i2tod - ));
+DATA(insert OID = 235 ( float8 PGUID 11 f t t 1 f 701 "21" 100 0 0 100 i2tod - ));
DESCR("convert int2 to float8");
-DATA(insert OID = 236 ( i2tof PGUID 11 f t t 1 f 700 "21" 100 0 0 100 i2tof - ));
+DATA(insert OID = 236 ( float4 PGUID 11 f t t 1 f 700 "21" 100 0 0 100 i2tof - ));
DESCR("convert int2 to float4");
-DATA(insert OID = 237 ( dtoi2 PGUID 11 f t t 1 f 21 "701" 100 0 0 100 dtoi2 - ));
+DATA(insert OID = 237 ( int2 PGUID 11 f t t 1 f 21 "701" 100 0 0 100 dtoi2 - ));
DESCR("convert float8 to int2");
-DATA(insert OID = 238 ( ftoi2 PGUID 11 f t t 1 f 21 "700" 100 0 0 100 ftoi2 - ));
+DATA(insert OID = 238 ( int2 PGUID 11 f t t 1 f 21 "700" 100 0 0 100 ftoi2 - ));
DESCR("convert float4 to int2");
DATA(insert OID = 239 ( line_distance PGUID 11 f t t 2 f 701 "628 628" 100 0 0 100 line_distance - ));
DESCR("distance between");
@@ -522,7 +522,7 @@ DESCR("abstime in tinterval");
DATA(insert OID = 249 ( tintervalrel PGUID 11 f t f 1 f 703 "704" 100 0 0 100 tintervalrel - ));
DESCR("");
DATA(insert OID = 250 ( timenow PGUID 11 f t f 0 f 702 "0" 100 0 0 100 timenow - ));
-DESCR("Current date and time");
+DESCR("Current date and time (abstime)");
DATA(insert OID = 251 ( abstimeeq PGUID 11 f t f 2 f 16 "702 702" 100 0 0 100 abstimeeq - ));
DESCR("equal");
DATA(insert OID = 252 ( abstimene PGUID 11 f t f 2 f 16 "702 702" 100 0 0 100 abstimene - ));
@@ -571,10 +571,10 @@ DATA(insert OID = 273 ( tintervalend PGUID 11 f t f 1 f 702 "704" 100 0 0 10
DESCR("");
DATA(insert OID = 274 ( timeofday PGUID 11 f t f 0 f 25 "0" 100 0 0 100 timeofday - ));
DESCR("Current date and time with microseconds");
-DATA(insert OID = 275 ( abstime_finite PGUID 11 f t f 1 f 16 "702" 100 0 0 100 abstime_finite - ));
+DATA(insert OID = 275 ( isfinite PGUID 11 f t f 1 f 16 "702" 100 0 0 100 abstime_finite - ));
DESCR("");
-DATA(insert OID = 276 ( int2fac PGUID 11 f t t 1 f 21 "21" 100 0 0 100 int2fac - ));
+DATA(insert OID = 276 ( int2fac PGUID 11 f t t 1 f 23 "21" 100 0 0 100 int2fac - ));
DESCR("");
DATA(insert OID = 277 ( inter_sl PGUID 11 f t t 2 f 16 "601 628" 100 0 0 100 inter_sl - ));
@@ -653,23 +653,23 @@ DESCR("greater-than");
DATA(insert OID = 310 ( float84ge PGUID 11 f t t 2 f 16 "701 700" 100 0 0 100 float84ge - ));
DESCR("greater-than-or-equal");
-DATA(insert OID = 311 ( ftod PGUID 11 f t t 1 f 701 "700" 100 0 0 100 ftod - ));
+DATA(insert OID = 311 ( float8 PGUID 11 f t t 1 f 701 "700" 100 0 0 100 ftod - ));
DESCR("convert float4 to float8");
-DATA(insert OID = 312 ( dtof PGUID 11 f t t 1 f 700 "701" 100 0 0 100 dtof - ));
+DATA(insert OID = 312 ( float4 PGUID 11 f t t 1 f 700 "701" 100 0 0 100 dtof - ));
DESCR("convert float8 to float4");
-DATA(insert OID = 313 ( i2toi4 PGUID 11 f t t 1 f 23 "21" 100 0 0 100 i2toi4 - ));
+DATA(insert OID = 313 ( int4 PGUID 11 f t t 1 f 23 "21" 100 0 0 100 i2toi4 - ));
DESCR("convert int2 to int4");
-DATA(insert OID = 314 ( i4toi2 PGUID 11 f t t 1 f 21 "23" 100 0 0 100 i4toi2 - ));
+DATA(insert OID = 314 ( int2 PGUID 11 f t t 1 f 21 "23" 100 0 0 100 i4toi2 - ));
DESCR("convert int4 to int2");
DATA(insert OID = 315 ( int2vectoreq PGUID 11 f t t 2 f 16 "22 22" 100 0 0 100 int2vectoreq - ));
DESCR("equal");
-DATA(insert OID = 316 ( i4tod PGUID 11 f t t 1 f 701 "23" 100 0 0 100 i4tod - ));
+DATA(insert OID = 316 ( float8 PGUID 11 f t t 1 f 701 "23" 100 0 0 100 i4tod - ));
DESCR("convert int4 to float8");
-DATA(insert OID = 317 ( dtoi4 PGUID 11 f t t 1 f 23 "701" 100 0 0 100 dtoi4 - ));
+DATA(insert OID = 317 ( int4 PGUID 11 f t t 1 f 23 "701" 100 0 0 100 dtoi4 - ));
DESCR("convert float8 to int4");
-DATA(insert OID = 318 ( i4tof PGUID 11 f t t 1 f 700 "23" 100 0 0 100 i4tof - ));
+DATA(insert OID = 318 ( float4 PGUID 11 f t t 1 f 700 "23" 100 0 0 100 i4tof - ));
DESCR("convert int4 to float4");
-DATA(insert OID = 319 ( ftoi4 PGUID 11 f t t 1 f 23 "700" 100 0 0 100 ftoi4 - ));
+DATA(insert OID = 319 ( int4 PGUID 11 f t t 1 f 23 "700" 100 0 0 100 ftoi4 - ));
DESCR("convert float4 to int4");
DATA(insert OID = 320 ( rtinsert PGUID 11 f t f 5 f 23 "0" 100 0 0 100 rtinsert - ));
@@ -718,11 +718,11 @@ DATA(insert OID = 341 ( poly_left PGUID 11 f t t 2 f 16 "604 604" 100 0 1 0
DESCR("is left of");
DATA(insert OID = 342 ( poly_overleft PGUID 11 f t t 2 f 16 "604 604" 100 0 1 0 poly_overleft - ));
DESCR("overlaps, but does not extend to right of");
-DATA(insert OID = 343 ( poly_overright PGUID 11 f t t 2 f 16 "604 604" 100 0 1 0 poly_overright - ));
+DATA(insert OID = 343 ( poly_overright PGUID 11 f t t 2 f 16 "604 604" 100 0 1 0 poly_overright - ));
DESCR("overlaps, but does not extend to left of");
DATA(insert OID = 344 ( poly_right PGUID 11 f t t 2 f 16 "604 604" 100 0 1 0 poly_right - ));
DESCR("is left of");
-DATA(insert OID = 345 ( poly_contained PGUID 11 f t t 2 f 16 "604 604" 100 0 1 0 poly_contained - ));
+DATA(insert OID = 345 ( poly_contained PGUID 11 f t t 2 f 16 "604 604" 100 0 1 0 poly_contained - ));
DESCR("contained in");
DATA(insert OID = 346 ( poly_overlap PGUID 11 f t t 2 f 16 "604 604" 100 0 1 0 poly_overlap - ));
DESCR("overlaps");
@@ -765,35 +765,35 @@ DESCR("");
DATA(insert OID = 363 ( dist_ps PGUID 11 f t t 2 f 701 "600 601" 100 0 0 100 dist_ps - ));
DESCR("distance between");
DATA(insert OID = 364 ( dist_pb PGUID 11 f t t 2 f 701 "600 603" 100 0 0 100 dist_pb - ));
-DESCR("distance between");
+DESCR("distance between point and box");
DATA(insert OID = 365 ( dist_sb PGUID 11 f t t 2 f 701 "601 603" 100 0 0 100 dist_sb - ));
-DESCR("distance between");
+DESCR("distance between segment and box");
DATA(insert OID = 366 ( close_ps PGUID 11 f t t 2 f 600 "600 601" 100 0 0 100 close_ps - ));
DESCR("closest point on line segment");
DATA(insert OID = 367 ( close_pb PGUID 11 f t t 2 f 600 "600 603" 100 0 0 100 close_pb - ));
DESCR("closest point on box");
DATA(insert OID = 368 ( close_sb PGUID 11 f t t 2 f 600 "601 603" 100 0 0 100 close_sb - ));
DESCR("closest point to line segment on box");
-DATA(insert OID = 369 ( on_ps PGUID 11 f t t 2 f 16 "600 601" 100 0 0 100 on_ps - ));
-DESCR("contained in");
-DATA(insert OID = 370 ( path_distance PGUID 11 f t t 2 f 701 "602 602" 100 0 1 0 path_distance - ));
-DESCR("distance between");
-DATA(insert OID = 371 ( dist_ppath PGUID 11 f t t 2 f 701 "600 602" 100 0 1 0 dist_ppath - ));
-DESCR("distance between");
+DATA(insert OID = 369 ( on_ps PGUID 11 f t t 2 f 16 "600 601" 100 0 0 100 on_ps - ));
+DESCR("point contained in segment");
+DATA(insert OID = 370 ( path_distance PGUID 11 f t t 2 f 701 "602 602" 100 0 1 0 path_distance - ));
+DESCR("distance between paths");
+DATA(insert OID = 371 ( dist_ppath PGUID 11 f t t 2 f 701 "600 602" 100 0 1 0 dist_ppath - ));
+DESCR("distance between point and patch");
DATA(insert OID = 372 ( on_sb PGUID 11 f t t 2 f 16 "601 603" 100 0 0 100 on_sb - ));
DESCR("contained in");
DATA(insert OID = 373 ( inter_sb PGUID 11 f t t 2 f 16 "601 603" 100 0 0 100 inter_sb - ));
-DESCR("");
+DESCR("intersects?");
/* OIDS 400 - 499 */
-DATA(insert OID = 406 ( name_text PGUID 11 f t t 1 f 25 "19" 100 0 0 100 name_text - ));
+DATA(insert OID = 406 ( text PGUID 11 f t t 1 f 25 "19" 100 0 0 100 name_text - ));
DESCR("convert name to text");
-DATA(insert OID = 407 ( text_name PGUID 11 f t t 1 f 19 "25" 100 0 0 100 text_name - ));
+DATA(insert OID = 407 ( name PGUID 11 f t t 1 f 19 "25" 100 0 0 100 text_name - ));
DESCR("convert text to name");
-DATA(insert OID = 408 ( name_bpchar PGUID 11 f t t 1 f 1042 "19" 100 0 0 100 name_bpchar - ));
+DATA(insert OID = 408 ( bpchar PGUID 11 f t t 1 f 1042 "19" 100 0 0 100 name_bpchar - ));
DESCR("convert name to char()");
-DATA(insert OID = 409 ( bpchar_name PGUID 11 f t t 1 f 19 "1042" 100 0 0 100 bpchar_name - ));
+DATA(insert OID = 409 ( name PGUID 11 f t t 1 f 19 "1042" 100 0 0 100 bpchar_name - ));
DESCR("convert char() to name");
DATA(insert OID = 438 ( hashcostestimate PGUID 11 f t f 7 f 0 "0 0 0 0 0 0 0" 100 0 0 100 hashcostestimate - ));
@@ -882,13 +882,13 @@ DESCR("less-than-or-equal");
DATA(insert OID = 479 ( int84ge PGUID 11 f t t 2 f 16 "20 23" 100 0 0 100 int84ge - ));
DESCR("greater-than-or-equal");
-DATA(insert OID = 480 ( int84 PGUID 11 f t t 1 f 23 "20" 100 0 0 100 int84 - ));
+DATA(insert OID = 480 ( int4 PGUID 11 f t t 1 f 23 "20" 100 0 0 100 int84 - ));
DESCR("convert int8 to int4");
-DATA(insert OID = 481 ( int48 PGUID 11 f t t 1 f 20 "23" 100 0 0 100 int48 - ));
+DATA(insert OID = 481 ( int8 PGUID 11 f t t 1 f 20 "23" 100 0 0 100 int48 - ));
DESCR("convert int4 to int8");
-DATA(insert OID = 482 ( i8tod PGUID 11 f t t 1 f 701 "20" 100 0 0 100 i8tod - ));
+DATA(insert OID = 482 ( float8 PGUID 11 f t t 1 f 701 "20" 100 0 0 100 i8tod - ));
DESCR("convert int8 to float8");
-DATA(insert OID = 483 ( dtoi8 PGUID 11 f t t 1 f 20 "701" 100 0 0 100 dtoi8 - ));
+DATA(insert OID = 483 ( int8 PGUID 11 f t t 1 f 20 "701" 100 0 0 100 dtoi8 - ));
DESCR("convert float8 to int8");
/* OIDS 500 - 599 */
@@ -960,11 +960,11 @@ DATA(insert OID = 724 ( byteaSetBit PGUID 11 f t t 3 f 17 "17 23 23" 100 0 0
DESCR("");
DATA(insert OID = 725 ( dist_pl PGUID 11 f t t 2 f 701 "600 628" 100 0 0 100 dist_pl - ));
-DESCR("distance between");
+DESCR("distance between point and line");
DATA(insert OID = 726 ( dist_lb PGUID 11 f t t 2 f 701 "628 603" 100 0 0 100 dist_lb - ));
-DESCR("distance between");
+DESCR("distance between line and box");
DATA(insert OID = 727 ( dist_sl PGUID 11 f t t 2 f 701 "601 628" 100 0 0 100 dist_sl - ));
-DESCR("distance between");
+DESCR("distance between lseg and line");
DATA(insert OID = 728 ( dist_cpoly PGUID 11 f t t 2 f 701 "718 604" 100 0 0 100 dist_cpoly - ));
DESCR("distance between");
DATA(insert OID = 729 ( poly_distance PGUID 11 f t t 2 f 701 "604 604" 100 0 0 100 poly_distance - ));
@@ -1067,20 +1067,20 @@ DESCR("greater-than-or-equal");
/* OIDS 800 - 899 */
-DATA(insert OID = 817 ( text_oid PGUID 11 f t t 1 f 26 "25" 100 0 0 100 text_oid -));
+DATA(insert OID = 817 ( oid PGUID 11 f t t 1 f 26 "25" 100 0 0 100 text_oid -));
DESCR("convert text to oid");
-DATA(insert OID = 818 ( text_int2 PGUID 11 f t t 1 f 21 "25" 100 0 0 100 text_int2 -));
+DATA(insert OID = 818 ( int2 PGUID 11 f t t 1 f 21 "25" 100 0 0 100 text_int2 -));
DESCR("convert text to int2");
-DATA(insert OID = 819 ( text_int4 PGUID 11 f t t 1 f 23 "25" 100 0 0 100 text_int4 -));
+DATA(insert OID = 819 ( int4 PGUID 11 f t t 1 f 23 "25" 100 0 0 100 text_int4 -));
DESCR("convert text to int4");
-DATA(insert OID = 838 ( text_float8 PGUID 11 f t t 1 f 701 "25" 100 0 0 100 text_float8 -));
+DATA(insert OID = 838 ( float8 PGUID 11 f t t 1 f 701 "25" 100 0 0 100 text_float8 -));
DESCR("convert text to float8");
-DATA(insert OID = 839 ( text_float4 PGUID 11 f t t 1 f 700 "25" 100 0 0 100 text_float4 -));
+DATA(insert OID = 839 ( float4 PGUID 11 f t t 1 f 700 "25" 100 0 0 100 text_float4 -));
DESCR("convert text to float4");
-DATA(insert OID = 840 ( float8_text PGUID 11 f t t 1 f 25 "701" 100 0 0 100 float8_text -));
+DATA(insert OID = 840 ( text PGUID 11 f t t 1 f 25 "701" 100 0 0 100 float8_text -));
DESCR("convert float8 to text");
-DATA(insert OID = 841 ( float4_text PGUID 11 f t t 1 f 25 "700" 100 0 0 100 float4_text -));
+DATA(insert OID = 841 ( text PGUID 11 f t t 1 f 25 "700" 100 0 0 100 float4_text -));
DESCR("convert float4 to text");
DATA(insert OID = 846 ( cash_mul_flt4 PGUID 11 f t t 2 f 790 "790 700" 100 0 0 100 cash_mul_flt4 - ));
@@ -1090,7 +1090,7 @@ DESCR("divide");
DATA(insert OID = 848 ( flt4_mul_cash PGUID 11 f t t 2 f 790 "700 790" 100 0 0 100 flt4_mul_cash - ));
DESCR("multiply");
-DATA(insert OID = 849 ( textpos PGUID 11 f t t 2 f 23 "25 25" 100 0 1 0 textpos - ));
+DATA(insert OID = 849 ( position PGUID 11 f t t 2 f 23 "25 25" 100 0 1 0 textpos - ));
DESCR("return position of substring");
DATA(insert OID = 850 ( textlike PGUID 11 f t t 2 f 16 "25 25" 100 0 1 0 textlike - ));
DESCR("matches LIKE expression");
@@ -1115,9 +1115,9 @@ DESCR("matches LIKE expression");
DATA(insert OID = 859 ( namenlike PGUID 11 f t t 2 f 16 "19 25" 100 0 0 100 namenlike - ));
DESCR("does not match LIKE expression");
-DATA(insert OID = 860 ( char_bpchar PGUID 11 f t t 1 f 1042 "18" 100 0 0 100 char_bpchar - ));
+DATA(insert OID = 860 ( bpchar PGUID 11 f t t 1 f 1042 "18" 100 0 0 100 char_bpchar - ));
DESCR("convert char to char()");
-DATA(insert OID = 861 ( bpchar_char PGUID 11 f t t 1 f 18 "1042" 100 0 0 100 bpchar_char - ));
+DATA(insert OID = 861 ( char PGUID 11 f t t 1 f 18 "1042" 100 0 0 100 bpchar_char - ));
DESCR("convert char() to char");
DATA(insert OID = 862 ( int4_mul_cash PGUID 11 f t t 2 f 790 "23 790" 100 0 0 100 int4_mul_cash - ));
@@ -1179,18 +1179,26 @@ DESCR("");
DATA(insert OID = 939 ( revertpoly PGUID 11 f t f 1 f 604 "604" 100 0 0 100 revertpoly - ));
DESCR("");
-DATA(insert OID = 942 ( char_text PGUID 11 f t t 1 f 25 "18" 100 0 0 100 char_text - ));
-DESCR("convert char to text");
-DATA(insert OID = 943 ( text_char PGUID 11 f t t 1 f 18 "25" 100 0 0 100 text_char - ));
-DESCR("convert text to char");
+DATA(insert OID = 940 ( mod PGUID 11 f t t 2 f 21 "21 21" 100 0 0 100 int2mod - ));
+DESCR("modulus");
+DATA(insert OID = 941 ( mod PGUID 11 f t t 2 f 23 "23 23" 100 0 0 100 int4mod - ));
+DESCR("modulus");
+DATA(insert OID = 942 ( mod PGUID 11 f t t 2 f 23 "21 23" 100 0 0 100 int24mod - ));
+DESCR("modulus");
+DATA(insert OID = 943 ( mod PGUID 11 f t t 2 f 23 "23 21" 100 0 0 100 int42mod - ));
+DESCR("modulus");
+
+DATA(insert OID = 945 ( int8mod PGUID 11 f t t 2 f 20 "20 20" 100 0 0 100 int8mod - ));
+DESCR("modulus");
+DATA(insert OID = 947 ( mod PGUID 11 f t t 2 f 20 "20 20" 100 0 0 100 int8mod - ));
+DESCR("modulus");
+
DATA(insert OID = 944 ( char PGUID 11 f t t 1 f 18 "25" 100 0 0 100 text_char - ));
-DESCR("convert text to char()");
+DESCR("convert text to char");
DATA(insert OID = 946 ( text PGUID 11 f t t 1 f 25 "18" 100 0 0 100 char_text - ));
DESCR("convert char to text");
-DATA(insert OID = 947 ( char PGUID 11 f t t 1 f 18 "1042" 100 0 0 100 bpchar_char - ));
-DESCR("convert char() to char");
DATA(insert OID = 948 ( varchar PGUID 11 f t t 1 f 25 "1043" 100 0 0 100 bpchar_char - ));
-DESCR("convert char to text");
+DESCR("convert varchar() to text");
DATA(insert OID = 950 ( istrue PGUID 11 f t t 1 f 16 "16" 100 0 0 100 istrue - ));
DESCR("");
@@ -1213,9 +1221,9 @@ DATA(insert OID = 958 ( lo_tell PGUID 11 f t f 1 f 23 "23" 100 0 0 100 lo_
DESCR("large object position");
DATA(insert OID = 959 ( on_pl PGUID 11 f t t 2 f 16 "600 628" 100 0 10 100 on_pl - ));
-DESCR("contained in");
+DESCR("point on line?");
DATA(insert OID = 960 ( on_sl PGUID 11 f t t 2 f 16 "601 628" 100 0 10 100 on_sl - ));
-DESCR("contained in");
+DESCR("lseg on line?");
DATA(insert OID = 961 ( close_pl PGUID 11 f t t 2 f 600 "600 628" 100 0 10 100 close_pl - ));
DESCR("closest point on line");
DATA(insert OID = 962 ( close_sl PGUID 11 f t t 2 f 600 "601 628" 100 0 10 100 close_sl - ));
@@ -1229,18 +1237,18 @@ DATA(insert OID = 972 ( regproctooid PGUID 11 f t t 1 f 26 "24" 100 0 0 100
DESCR("get oid for regproc");
DATA(insert OID = 973 ( path_inter PGUID 11 f t t 2 f 16 "602 602" 100 0 10 100 path_inter - ));
-DESCR("");
-DATA(insert OID = 975 ( box_area PGUID 11 f t t 1 f 701 "603" 100 0 0 100 box_area - ));
+DESCR("paths intersect?");
+DATA(insert OID = 975 ( area PGUID 11 f t t 1 f 701 "603" 100 0 0 100 box_area - ));
DESCR("box area");
-DATA(insert OID = 976 ( box_width PGUID 11 f t t 1 f 701 "603" 100 0 0 100 box_width - ));
+DATA(insert OID = 976 ( width PGUID 11 f t t 1 f 701 "603" 100 0 0 100 box_width - ));
DESCR("box width");
-DATA(insert OID = 977 ( box_height PGUID 11 f t t 1 f 701 "603" 100 0 0 100 box_height - ));
+DATA(insert OID = 977 ( height PGUID 11 f t t 1 f 701 "603" 100 0 0 100 box_height - ));
DESCR("box height");
DATA(insert OID = 978 ( box_distance PGUID 11 f t t 2 f 701 "603 603" 100 0 0 100 box_distance - ));
-DESCR("distance between");
+DESCR("distance between boxes");
DATA(insert OID = 980 ( box_intersect PGUID 11 f t t 2 f 603 "603 603" 100 0 0 100 box_intersect - ));
-DESCR("intersects");
-DATA(insert OID = 981 ( box_diagonal PGUID 11 f t t 1 f 601 "603" 100 0 0 100 box_diagonal - ));
+DESCR("box intersection (another box)");
+DATA(insert OID = 981 ( diagonal PGUID 11 f t t 1 f 601 "603" 100 0 0 100 box_diagonal - ));
DESCR("box diagonal");
DATA(insert OID = 982 ( path_n_lt PGUID 11 f t t 2 f 16 "602 602" 100 0 0 100 path_n_lt - ));
DESCR("less-than");
@@ -1257,25 +1265,25 @@ DESCR("sum of path segments");
DATA(insert OID = 988 ( point_ne PGUID 11 f t t 2 f 16 "600 600" 100 0 0 100 point_ne - ));
DESCR("not equal");
DATA(insert OID = 989 ( point_vert PGUID 11 f t t 2 f 16 "600 600" 100 0 0 100 point_vert - ));
-DESCR("is vertical");
+DESCR("vertical?");
DATA(insert OID = 990 ( point_horiz PGUID 11 f t t 2 f 16 "600 600" 100 0 0 100 point_horiz - ));
-DESCR("is horizontal");
-DATA(insert OID = 991 ( point_distance PGUID 11 f t t 2 f 701 "600 600" 100 0 0 100 point_distance - ));
+DESCR("horizontal?");
+DATA(insert OID = 991 ( point_distance PGUID 11 f t t 2 f 701 "600 600" 100 0 0 100 point_distance - ));
DESCR("distance between");
-DATA(insert OID = 992 ( point_slope PGUID 11 f t t 2 f 701 "600 600" 100 0 0 100 point_slope - ));
+DATA(insert OID = 992 ( slope PGUID 11 f t t 2 f 701 "600 600" 100 0 0 100 point_slope - ));
DESCR("slope between points");
-DATA(insert OID = 993 ( lseg_construct PGUID 11 f t t 2 f 601 "600 600" 100 0 0 100 lseg_construct - ));
+DATA(insert OID = 993 ( lseg PGUID 11 f t t 2 f 601 "600 600" 100 0 0 100 lseg_construct - ));
DESCR("convert points to line segment");
-DATA(insert OID = 994 ( lseg_intersect PGUID 11 f t t 2 f 16 "601 601" 100 0 0 100 lseg_intersect - ));
-DESCR("intersects");
+DATA(insert OID = 994 ( lseg_intersect PGUID 11 f t t 2 f 16 "601 601" 100 0 0 100 lseg_intersect - ));
+DESCR("intersects?");
DATA(insert OID = 995 ( lseg_parallel PGUID 11 f t t 2 f 16 "601 601" 100 0 0 100 lseg_parallel - ));
-DESCR("is parallel to");
+DESCR("parallel?");
DATA(insert OID = 996 ( lseg_perp PGUID 11 f t t 2 f 16 "601 601" 100 0 0 100 lseg_perp - ));
-DESCR("is perpendicular to");
+DESCR("perpendicular?");
DATA(insert OID = 997 ( lseg_vertical PGUID 11 f t t 1 f 16 "601" 100 0 0 100 lseg_vertical - ));
-DESCR("is vertical");
+DESCR("vertical?");
DATA(insert OID = 998 ( lseg_horizontal PGUID 11 f t t 1 f 16 "601" 100 0 0 100 lseg_horizontal - ));
-DESCR("is horizontal");
+DESCR("horizontal?");
DATA(insert OID = 999 ( lseg_eq PGUID 11 f t t 2 f 16 "601 601" 100 0 0 100 lseg_eq - ));
DESCR("equal");
@@ -1413,10 +1421,8 @@ DATA(insert OID = 1156 ( timestamp_ge PGUID 11 f t f 2 f 16 "1184 1184" 100
DESCR("greater-than-or-equal");
DATA(insert OID = 1157 ( timestamp_gt PGUID 11 f t f 2 f 16 "1184 1184" 100 0 0 100 timestamp_gt - ));
DESCR("greater-than");
-DATA(insert OID = 1158 ( timestamp_finite PGUID 11 f t f 1 f 16 "1184" 100 0 0 100 timestamp_finite - ));
-DESCR("");
-DATA(insert OID = 1159 ( timestamp_zone PGUID 11 f t f 2 f 25 "25 1184" 100 0 0 100 timestamp_zone - ));
-DESCR("");
+DATA(insert OID = 1159 ( timezone PGUID 11 f t f 2 f 25 "25 1184" 100 0 0 100 timestamp_zone - ));
+DESCR("time zone");
DATA(insert OID = 1160 ( interval_in PGUID 11 f t f 1 f 1186 "0" 100 0 0 100 interval_in - ));
DESCR("(internal)");
@@ -1436,28 +1442,28 @@ DATA(insert OID = 1167 ( interval_gt PGUID 11 f t f 2 f 16 "1186 1186" 100 0
DESCR("greater-than");
DATA(insert OID = 1168 ( interval_um PGUID 11 f t f 1 f 1186 "1186" 100 0 0 100 interval_um - ));
DESCR("subtract");
-DATA(insert OID = 1169 ( interval_pl PGUID 11 f t f 2 f 1186 "1186 1186" 100 0 0 100 interval_pl - ));
+DATA(insert OID = 1169 ( interval_pl PGUID 11 f t f 2 f 1186 "1186 1186" 100 0 0 100 interval_pl - ));
DESCR("addition");
-DATA(insert OID = 1170 ( interval_mi PGUID 11 f t f 2 f 1186 "1186 1186" 100 0 0 100 interval_mi - ));
+DATA(insert OID = 1170 ( interval_mi PGUID 11 f t f 2 f 1186 "1186 1186" 100 0 0 100 interval_mi - ));
DESCR("subtract");
-DATA(insert OID = 1171 ( timestamp_part PGUID 11 f t f 2 f 701 "25 1184" 100 0 0 100 timestamp_part - ));
+DATA(insert OID = 1171 ( date_part PGUID 11 f t f 2 f 701 "25 1184" 100 0 0 100 timestamp_part - ));
DESCR("extract field from timestamp");
-DATA(insert OID = 1172 ( interval_part PGUID 11 f t f 2 f 701 "25 1186" 100 0 0 100 interval_part - ));
+DATA(insert OID = 1172 ( date_part PGUID 11 f t f 2 f 701 "25 1186" 100 0 0 100 interval_part - ));
DESCR("extract field from interval");
-DATA(insert OID = 1173 ( abstime_timestamp PGUID 11 f t f 1 f 1184 "702" 100 0 0 100 abstime_timestamp - ));
+DATA(insert OID = 1173 ( timestamp PGUID 11 f t f 1 f 1184 "702" 100 0 0 100 abstime_timestamp - ));
DESCR("convert abstime to timestamp");
-DATA(insert OID = 1174 ( date_timestamp PGUID 11 f t f 1 f 1184 "1082" 100 0 0 100 date_timestamp - ));
+DATA(insert OID = 1174 ( timestamp PGUID 11 f t f 1 f 1184 "1082" 100 0 0 100 date_timestamp - ));
DESCR("convert date to timestamp");
-DATA(insert OID = 1176 ( datetime_timestamp PGUID 11 f t f 2 f 1184 "1082 1083" 100 0 0 100 datetime_timestamp - ));
+DATA(insert OID = 1176 ( timestamp PGUID 11 f t f 2 f 1184 "1082 1083" 100 0 0 100 datetime_timestamp - ));
DESCR("convert date and time to timestamp");
-DATA(insert OID = 1177 ( reltime_interval PGUID 11 f t f 1 f 1186 "703" 100 0 0 100 reltime_interval - ));
+DATA(insert OID = 1177 ( interval PGUID 11 f t f 1 f 1186 "703" 100 0 0 100 reltime_interval - ));
DESCR("convert reltime to interval");
-DATA(insert OID = 1178 ( timestamp_date PGUID 11 f t f 1 f 1082 "1184" 100 0 0 100 timestamp_date - ));
+DATA(insert OID = 1178 ( date PGUID 11 f t f 1 f 1082 "1184" 100 0 0 100 timestamp_date - ));
DESCR("convert timestamp to date");
-DATA(insert OID = 1179 ( abstime_date PGUID 11 f t f 1 f 1082 "702" 100 0 0 100 abstime_date - ));
+DATA(insert OID = 1179 ( date PGUID 11 f t f 1 f 1082 "702" 100 0 0 100 abstime_date - ));
DESCR("convert abstime to date");
-DATA(insert OID = 1180 ( timestamp_abstime PGUID 11 f t f 1 f 702 "1184" 100 0 0 100 timestamp_abstime - ));
+DATA(insert OID = 1180 ( abstime PGUID 11 f t f 1 f 702 "1184" 100 0 0 100 timestamp_abstime - ));
DESCR("convert timestamp to abstime");
DATA(insert OID = 1188 ( timestamp_mi PGUID 11 f t f 2 f 1186 "1184 1184" 100 0 0 100 timestamp_mi - ));
@@ -1466,37 +1472,37 @@ DATA(insert OID = 1189 ( timestamp_pl_span PGUID 11 f t f 2 f 1184 "1184 1186"
DESCR("plus");
DATA(insert OID = 1190 ( timestamp_mi_span PGUID 11 f t f 2 f 1184 "1184 1186" 100 0 0 100 timestamp_mi_span - ));
DESCR("minus");
-DATA(insert OID = 1191 ( text_timestamp PGUID 11 f t f 1 f 1184 "25" 100 0 0 100 text_timestamp - ));
+DATA(insert OID = 1191 ( timestamp PGUID 11 f t f 1 f 1184 "25" 100 0 0 100 text_timestamp - ));
DESCR("convert text to timestamp");
-DATA(insert OID = 1192 ( timestamp_text PGUID 11 f t f 1 f 25 "1184" 100 0 0 100 timestamp_text - ));
+DATA(insert OID = 1192 ( text PGUID 11 f t f 1 f 25 "1184" 100 0 0 100 timestamp_text - ));
DESCR("convert timestamp to text");
-DATA(insert OID = 1193 ( interval_text PGUID 11 f t f 1 f 25 "1186" 100 0 0 100 interval_text - ));
+DATA(insert OID = 1193 ( text PGUID 11 f t f 1 f 25 "1186" 100 0 0 100 interval_text - ));
DESCR("convert interval to text");
-DATA(insert OID = 1194 ( interval_reltime PGUID 11 f t f 1 f 703 "1186" 100 0 0 100 interval_reltime - ));
+DATA(insert OID = 1194 ( reltime PGUID 11 f t f 1 f 703 "1186" 100 0 0 100 interval_reltime - ));
DESCR("convert interval to reltime");
-DATA(insert OID = 1195 ( timestamp_smaller PGUID 11 f t f 2 f 1184 "1184 1184" 100 0 0 100 timestamp_smaller - ));
+DATA(insert OID = 1195 ( timestamp_smaller PGUID 11 f t f 2 f 1184 "1184 1184" 100 0 0 100 timestamp_smaller - ));
DESCR("smaller of two");
-DATA(insert OID = 1196 ( timestamp_larger PGUID 11 f t f 2 f 1184 "1184 1184" 100 0 0 100 timestamp_larger - ));
+DATA(insert OID = 1196 ( timestamp_larger PGUID 11 f t f 2 f 1184 "1184 1184" 100 0 0 100 timestamp_larger - ));
DESCR("larger of two");
-DATA(insert OID = 1197 ( interval_smaller PGUID 11 f t f 2 f 1186 "1186 1186" 100 0 0 100 interval_smaller - ));
+DATA(insert OID = 1197 ( interval_smaller PGUID 11 f t f 2 f 1186 "1186 1186" 100 0 0 100 interval_smaller - ));
DESCR("smaller of two");
-DATA(insert OID = 1198 ( interval_larger PGUID 11 f t f 2 f 1186 "1186 1186" 100 0 0 100 interval_larger - ));
+DATA(insert OID = 1198 ( interval_larger PGUID 11 f t f 2 f 1186 "1186 1186" 100 0 0 100 interval_larger - ));
DESCR("larger of two");
-DATA(insert OID = 1199 ( timestamp_age PGUID 11 f t f 2 f 1186 "1184 1184" 100 0 0 100 timestamp_age - ));
+DATA(insert OID = 1199 ( age PGUID 11 f t f 2 f 1186 "1184 1184" 100 0 0 100 timestamp_age - ));
DESCR("date difference preserving months and years");
/* OIDS 1200 - 1299 */
-DATA(insert OID = 1200 ( int4reltime PGUID 11 f t t 1 f 703 "23" 100 0 0 100 int4reltime - ));
+DATA(insert OID = 1200 ( reltime PGUID 11 f t t 1 f 703 "23" 100 0 0 100 int4reltime - ));
DESCR("convert int4 to reltime");
-DATA(insert OID = 1217 ( timestamp_trunc PGUID 11 f t f 2 f 1184 "25 1184" 100 0 0 100 timestamp_trunc - ));
+DATA(insert OID = 1217 ( date_trunc PGUID 11 f t f 2 f 1184 "25 1184" 100 0 0 100 timestamp_trunc - ));
DESCR("truncate timestamp to specified units");
-DATA(insert OID = 1218 ( interval_trunc PGUID 11 f t f 2 f 1186 "25 1186" 100 0 0 100 interval_trunc - ));
+DATA(insert OID = 1218 ( date_trunc PGUID 11 f t f 2 f 1186 "25 1186" 100 0 0 100 interval_trunc - ));
DESCR("truncate interval to specified units");
-DATA(insert OID = 1230 ( bpchar PGUID 11 f t t 1 f 1042 "18" 100 0 0 100 char_bpchar - ));
-DESCR("convert char to char()");
+DATA(insert OID = 1230 ( int8abs PGUID 11 f t t 1 f 20 "20" 100 0 0 100 int8abs - ));
+DESCR("absolute value");
DATA(insert OID = 1236 ( int8larger PGUID 11 f t t 2 f 20 "20 20" 100 0 0 100 int8larger - ));
DESCR("larger of two");
@@ -1512,19 +1518,18 @@ DESCR("matches regex., case-insensitive");
DATA(insert OID = 1241 ( nameicregexne PGUID 11 f t t 2 f 16 "19 25" 100 0 0 100 nameicregexne - ));
DESCR("does not match regex., case-insensitive");
-DATA(insert OID = 1251 ( bpcharlen PGUID 11 f t t 1 f 23 "1042" 100 0 0 100 bpcharlen - ));
-DESCR("octet length");
-DATA(insert OID = 1378 ( bpcharoctetlen PGUID 11 f t t 1 f 23 "1042" 100 0 0 100 bpcharoctetlen - ));
-DESCR("octet length");
-DATA(insert OID = 1253 ( varcharlen PGUID 11 f t t 1 f 23 "1043" 100 0 0 100 varcharlen - ));
-DESCR("character length");
-DATA(insert OID = 1379 ( varcharoctetlen PGUID 11 f t t 1 f 23 "1043" 100 0 0 100 varcharoctetlen - ));
-DESCR("octet length");
+DATA(insert OID = 1251 ( int4abs PGUID 11 f t t 1 f 23 "23" 100 0 0 100 int4abs - ));
+DESCR("absolute value");
+DATA(insert OID = 1253 ( int2abs PGUID 11 f t t 1 f 21 "21" 100 0 0 100 int2abs - ));
+DESCR("absolute value");
-DATA(insert OID = 1263 ( text_interval PGUID 11 f t f 1 f 1186 "25" 100 0 0 100 text_interval - ));
+DATA(insert OID = 1263 ( interval PGUID 11 f t f 1 f 1186 "25" 100 0 0 100 text_interval - ));
DESCR("convert text to interval");
-DATA(insert OID = 1271 ( interval_finite PGUID 11 f t f 1 f 16 "1186" 100 0 0 100 interval_finite - ));
-DESCR("boolean test");
+
+DATA(insert OID = 1271 ( overlaps PGUID 11 f t t 4 f 16 "1266 1266 1266 1266" 100 0 1 0 overlaps_timetz - ));
+DESCR("SQL92 interval comparison");
+DATA(insert OID = 1272 ( datetime_pl PGUID 11 f t f 2 f 1184 "1082 1083" 100 0 0 100 datetime_timestamp - ));
+DESCR("convert date and time to timestamp");
DATA(insert OID = 1274 ( int84pl PGUID 11 f t t 2 f 20 "20 23" 100 0 0 100 int84pl - ));
DESCR("addition");
@@ -1543,9 +1548,9 @@ DESCR("multiply");
DATA(insert OID = 1281 ( int48div PGUID 11 f t t 2 f 20 "23 20" 100 0 0 100 int48div - ));
DESCR("divide");
-DATA(insert OID = 1288 ( int8_text PGUID 11 f t t 1 f 25 "20" 100 0 0 100 int8_text - ));
+DATA(insert OID = 1288 ( text PGUID 11 f t t 1 f 25 "20" 100 0 0 100 int8_text - ));
DESCR("convert int8 to text");
-DATA(insert OID = 1289 ( text_int8 PGUID 11 f t t 1 f 20 "25" 100 0 0 100 text_int8 - ));
+DATA(insert OID = 1289 ( int8 PGUID 11 f t t 1 f 20 "25" 100 0 0 100 text_int8 - ));
DESCR("convert text to int8");
DATA(insert OID = 1290 ( _bpchar PGUID 11 f t t 2 f 1014 "1014 23" 100 0 0 100 _bpchar - ));
@@ -1560,6 +1565,12 @@ DESCR("latest tid of a tuple");
DATA(insert OID = 1294 ( currtid2 PGUID 11 f t f 2 f 27 "25 27" 100 0 0 100 currtid_byrelname - ));
DESCR("latest tid of a tuple");
+DATA(insert OID = 1296 ( timedate_pl PGUID 14 f t f 2 f 1184 "1083 1082" 100 0 0 100 "select datetime_pl($2, $1)" - ));
+DESCR("convert time and date to timestamp");
+DATA(insert OID = 1297 ( datetimetz_pl PGUID 11 f t f 2 f 1184 "1082 1266" 100 0 0 100 datetimetz_timestamp - ));
+DESCR("convert date and time with time zone to timestamp");
+DATA(insert OID = 1298 ( timetzdate_pl PGUID 14 f t f 2 f 1184 "1266 1082" 100 0 0 100 "select datetimetz_pl($2, $1)" - ));
+DESCR("convert time with time zone and date to timestamp");
DATA(insert OID = 1299 ( now PGUID 11 f t f 0 f 1184 "0" 100 0 0 100 now - ));
DESCR("current transaction time");
@@ -1574,79 +1585,106 @@ DESCR("restriction selectivity for containment comparison operators");
DATA(insert OID = 1303 ( contjoinsel PGUID 11 f t f 5 f 701 "26 26 21 26 21" 100 0 0 100 contjoinsel - ));
DESCR("join selectivity for containment comparison operators");
+DATA(insert OID = 1304 ( overlaps PGUID 11 f t t 4 f 16 "1184 1184 1184 1184" 100 0 1 0 overlaps_timestamp - ));
+DESCR("SQL92 interval comparison");
+DATA(insert OID = 1305 ( overlaps PGUID 14 f t t 4 f 16 "1184 1186 1184 1186" 100 0 1 0 "select overlaps($1, ($1 + $2), $3, ($3 + $4))" - ));
+DESCR("SQL92 interval comparison");
+DATA(insert OID = 1306 ( overlaps PGUID 14 f t t 4 f 16 "1184 1184 1184 1186" 100 0 1 0 "select overlaps($1, $2, $3, ($3 + $4))" - ));
+DESCR("SQL92 interval comparison");
+DATA(insert OID = 1307 ( overlaps PGUID 14 f t t 4 f 16 "1184 1186 1184 1184" 100 0 1 0 "select overlaps($1, ($1 + $2), $3, $4)" - ));
+DESCR("SQL92 interval comparison");
+
+DATA(insert OID = 1308 ( overlaps PGUID 11 f t t 4 f 16 "1083 1083 1083 1083" 100 0 1 0 overlaps_time - ));
+DESCR("SQL92 interval comparison");
+DATA(insert OID = 1309 ( overlaps PGUID 14 f t t 4 f 16 "1083 1186 1083 1186" 100 0 1 0 "select overlaps($1, ($1 + $2), $3, ($3 + $4))" - ));
+DESCR("SQL92 interval comparison");
+DATA(insert OID = 1310 ( overlaps PGUID 14 f t t 4 f 16 "1083 1083 1083 1186" 100 0 1 0 "select overlaps($1, $2, $3, ($3 + $4))" - ));
+DESCR("SQL92 interval comparison");
+DATA(insert OID = 1311 ( overlaps PGUID 14 f t t 4 f 16 "1083 1186 1083 1083" 100 0 1 0 "select overlaps($1, ($1 + $2), $3, $4)" - ));
+DESCR("SQL92 interval comparison");
+
DATA(insert OID = 1314 ( timestamp_cmp PGUID 11 f t f 2 f 23 "1184 1184" 100 0 0 100 timestamp_cmp - ));
DESCR("less-equal-greater");
DATA(insert OID = 1315 ( interval_cmp PGUID 11 f t f 2 f 23 "1186 1186" 100 0 0 100 interval_cmp - ));
DESCR("less-equal-greater");
-DATA(insert OID = 1316 ( timestamp_time PGUID 11 f t f 1 f 1083 "1184" 100 0 0 100 timestamp_time - ));
+DATA(insert OID = 1316 ( time PGUID 11 f t f 1 f 1083 "1184" 100 0 0 100 timestamp_time - ));
DESCR("convert timestamp to time");
+
+DATA(insert OID = 1317 ( length PGUID 11 f t t 1 f 23 "25" 100 0 1 0 textlen - ));
+DESCR("length");
+DATA(insert OID = 1318 ( length PGUID 11 f t t 1 f 23 "1042" 100 0 0 100 bpcharlen - ));
+DESCR("character length");
+DATA(insert OID = 1319 ( length PGUID 11 f t t 1 f 23 "1043" 100 0 0 100 varcharlen - ));
+DESCR("character length");
+
DATA(insert OID = 1326 ( interval_div PGUID 11 f t f 2 f 1186 "1186 701" 100 0 0 100 interval_div - ));
DESCR("divide");
-DATA(insert OID = 1339 ( date_zone PGUID 11 f t f 2 f 25 "25 1184" 100 0 0 100 timestamp_zone - ));
-DESCR("");
-DATA(insert OID = 1340 ( text PGUID 11 f t f 1 f 25 "1184" 100 0 0 100 timestamp_text - ));
-DESCR("convert timestamp to text");
-DATA(insert OID = 1341 ( text PGUID 11 f t f 1 f 25 "1186" 100 0 0 100 interval_text - ));
-DESCR("convert interval to text");
-DATA(insert OID = 1342 ( text PGUID 11 f t t 1 f 25 "23" 100 0 0 100 int4_text - ));
-DESCR("convert int4 to text");
-DATA(insert OID = 1343 ( text PGUID 11 f t t 1 f 25 "21" 100 0 0 100 int2_text - ));
-DESCR("convert int2 to text");
-DATA(insert OID = 1344 ( text PGUID 11 f t t 1 f 25 "26" 100 0 0 100 oid_text - ));
-DESCR("convert oid to text");
-DATA(insert OID = 1345 ( oid PGUID 11 f t t 1 f 26 "25" 100 0 0 100 text_oid - ));
-DESCR("convert text to oid");
-DATA(insert OID = 1346 ( int2 PGUID 11 f t t 1 f 21 "25" 100 0 0 100 text_int2 - ));
-DESCR("convert text to int2");
-DATA(insert OID = 1347 ( int4 PGUID 11 f t t 1 f 23 "25" 100 0 0 100 text_int4 - ));
-DESCR("convert text to int4");
+DATA(insert OID = 1339 ( dlog10 PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dlog10 - ));
+DESCR("base 10 logarithm");
+DATA(insert OID = 1340 ( log PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dlog10 - ));
+DESCR("base 10 logarithm");
+DATA(insert OID = 1341 ( ln PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dlog1 - ));
+DESCR("base 10 logarithm");
+DATA(insert OID = 1342 ( round PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dround - ));
+DESCR("round to integral part");
+DATA(insert OID = 1343 ( trunc PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dtrunc - ));
+DESCR("truncate to integral part");
+DATA(insert OID = 1344 ( sqrt PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dsqrt - ));
+DESCR("square root");
+DATA(insert OID = 1345 ( cbrt PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dcbrt - ));
+DESCR("cube root");
+DATA(insert OID = 1346 ( pow PGUID 11 f t t 2 f 701 "701 701" 100 0 0 100 dpow - ));
+DESCR("exponentiation");
+DATA(insert OID = 1347 ( exp PGUID 11 f t t 1 f 701 "701" 100 0 0 100 dexp - ));
+DESCR("exponential");
+
DATA(insert OID = 1348 ( obj_description PGUID 14 f t f 1 f 25 "26" 100 0 0 100 "select description from pg_description where objoid = $1" - ));
DESCR("get description for object id");
DATA(insert OID = 1349 ( oidvectortypes PGUID 11 f t f 1 f 25 "30" 100 0 0 100 oidvectortypes - ));
DESCR("print type names of oidvector field");
-DATA(insert OID = 1350 ( timestamp PGUID 14 f t f 1 f 1184 "1184" 100 0 0 100 "select $1" - ));
-DESCR("convert (noop)");
-DATA(insert OID = 1351 ( timestamp PGUID 11 f t f 1 f 1184 "25" 100 0 0 100 text_timestamp - ));
-DESCR("convert text to timestamp");
-DATA(insert OID = 1352 ( timestamp PGUID 11 f t f 1 f 1184 "702" 100 0 0 100 abstime_timestamp - ));
-DESCR("convert abstime to timestamp");
-DATA(insert OID = 1353 ( timestamp PGUID 11 f t f 1 f 1184 "1082" 100 0 0 100 date_timestamp - ));
-DESCR("convert date to timestamp");
-DATA(insert OID = 1355 ( timestamp PGUID 11 f t f 2 f 1184 "1082 1083" 100 0 0 100 datetime_timestamp - ));
-DESCR("convert date and time to timestamp");
-DATA(insert OID = 1356 ( interval PGUID 14 f t t 1 f 1186 "1186" 100 0 0 100 "select $1" - ));
-DESCR("convert (noop)");
-DATA(insert OID = 1357 ( interval PGUID 11 f t f 1 f 1186 "703" 100 0 0 100 reltime_interval - ));
-DESCR("convert reltime to interval");
-DATA(insert OID = 1358 ( interval PGUID 14 f t f 1 f 1186 "1083" 100 0 0 100 "select time_interval($1)" - ));
-DESCR("convert time to interval");
-DATA(insert OID = 1359 ( date PGUID 14 f t t 1 f 1082 "1082" 100 0 0 100 "select $1" - ));
-DESCR("convert (noop)");
-DATA(insert OID = 1360 ( date PGUID 11 f t f 1 f 1082 "1184" 100 0 0 100 timestamp_date - ));
-DESCR("convert timestamp to date");
-DATA(insert OID = 1361 ( date PGUID 11 f t f 1 f 1082 "702" 100 0 0 100 abstime_date - ));
-DESCR("convert abstime to date");
+
+DATA(insert OID = 1350 ( timetz_in PGUID 11 f t f 1 f 1266 "0" 100 0 0 100 timetz_in - ));
+DESCR("(internal)");
+DATA(insert OID = 1351 ( timetz_out PGUID 11 f t f 1 f 23 "0" 100 0 0 100 timetz_out - ));
+DESCR("(internal)");
+DATA(insert OID = 1352 ( timetz_eq PGUID 11 f t t 2 f 16 "1266 1266" 100 0 0 100 timetz_eq - ));
+DESCR("equal");
+DATA(insert OID = 1353 ( timetz_ne PGUID 11 f t t 2 f 16 "1266 1266" 100 0 0 100 timetz_ne - ));
+DESCR("not equal");
+DATA(insert OID = 1354 ( timetz_lt PGUID 11 f t t 2 f 16 "1266 1266" 100 0 0 100 timetz_lt - ));
+DESCR("less-than");
+DATA(insert OID = 1355 ( timetz_le PGUID 11 f t t 2 f 16 "1266 1266" 100 0 0 100 timetz_le - ));
+DESCR("less-than-or-equal");
+DATA(insert OID = 1356 ( timetz_ge PGUID 11 f t t 2 f 16 "1266 1266" 100 0 0 100 timetz_ge - ));
+DESCR("greater-than-or-equal");
+DATA(insert OID = 1357 ( timetz_gt PGUID 11 f t t 2 f 16 "1266 1266" 100 0 0 100 timetz_gt - ));
+DESCR("greater-than");
+DATA(insert OID = 1358 ( timetz_cmp PGUID 11 f t t 2 f 23 "1266 1266" 100 0 0 100 timetz_cmp - ));
+DESCR("less-equal-greater");
+DATA(insert OID = 1359 ( timestamp PGUID 11 f t f 2 f 1184 "1082 1266" 100 0 0 100 datetimetz_timestamp - ));
+DESCR("convert date and time with time zone to timestamp");
+
DATA(insert OID = 1362 ( time PGUID 14 f t t 1 f 1083 "1083" 100 0 0 100 "select $1" - ));
DESCR("convert (noop)");
-DATA(insert OID = 1363 ( time PGUID 11 f t f 1 f 1083 "1184" 100 0 0 100 timestamp_time - ));
-DESCR("convert timestamp to time");
DATA(insert OID = 1364 ( time PGUID 14 f t f 1 f 1083 "702" 100 0 0 100 "select time(timestamp($1))" - ));
DESCR("convert abstime to time");
DATA(insert OID = 1365 ( abstime PGUID 14 f t f 1 f 702 "702" 100 0 0 100 "select $1" - ));
DESCR("convert (noop)");
-DATA(insert OID = 1366 ( abstime PGUID 11 f t f 1 f 702 "1184" 100 0 0 100 timestamp_abstime - ));
-DESCR("convert timestamp to abstime");
DATA(insert OID = 1367 ( reltime PGUID 14 f t t 1 f 703 "703" 100 0 0 100 "select $1" - ));
DESCR("convert (noop)");
-DATA(insert OID = 1368 ( reltime PGUID 11 f t f 1 f 703 "1186" 100 0 0 100 interval_reltime - ));
-DESCR("convert interval to reltime");
-DATA(insert OID = 1371 ( length PGUID 11 f t t 1 f 23 "25" 100 0 0 100 textlen - ));
-DESCR("character length");
-DATA(insert OID = 1372 ( length PGUID 11 f t t 1 f 23 "1042" 100 0 0 100 bpcharlen - ));
+DATA(insert OID = 1368 ( timestamp PGUID 14 f t f 1 f 1184 "1184" 100 0 0 100 "select $1" - ));
+DESCR("convert (noop)");
+DATA(insert OID = 1369 ( interval PGUID 14 f t t 1 f 1186 "1186" 100 0 0 100 "select $1" - ));
+DESCR("convert (noop)");
+DATA(insert OID = 1370 ( interval PGUID 11 f t f 1 f 1186 "1083" 100 0 0 100 time_interval - ));
+DESCR("convert time to interval");
+DATA(insert OID = 1371 ( date PGUID 14 f t t 1 f 1082 "1082" 100 0 0 100 "select $1" - ));
+DESCR("convert (noop)");
+DATA(insert OID = 1372 ( char_length PGUID 11 f t t 1 f 23 "1042" 100 0 0 100 bpcharlen - ));
DESCR("character length");
-DATA(insert OID = 1373 ( length PGUID 11 f t t 1 f 23 "1043" 100 0 0 100 varcharlen - ));
+DATA(insert OID = 1373 ( char_length PGUID 11 f t t 1 f 23 "1043" 100 0 0 100 varcharlen - ));
DESCR("character length");
DATA(insert OID = 1374 ( octet_length PGUID 11 f t t 1 f 23 "25" 100 0 0 100 textoctetlen - ));
@@ -1656,90 +1694,95 @@ DESCR("octet length");
DATA(insert OID = 1376 ( octet_length PGUID 11 f t t 1 f 23 "1043" 100 0 0 100 varcharoctetlen - ));
DESCR("octet length");
-DATA(insert OID = 1380 ( date_part PGUID 11 f t f 2 f 701 "25 1184" 100 0 0 100 timestamp_part - ));
-DESCR("extract field from timestamp");
-DATA(insert OID = 1381 ( date_part PGUID 11 f t f 2 f 701 "25 1186" 100 0 0 100 interval_part - ));
-DESCR("extract field from interval");
-DATA(insert OID = 1382 ( date_part PGUID 14 f t f 2 f 701 "25 702" 100 0 0 100 "select timestamp_part($1, timestamp($2))" - ));
+DATA(insert OID = 1377 ( time_larger PGUID 11 f t t 2 f 1083 "1083 1083" 100 0 0 100 time_larger - ));
+DESCR("larger of two");
+DATA(insert OID = 1378 ( time_smaller PGUID 11 f t t 2 f 1083 "1083 1083" 100 0 0 100 time_smaller - ));
+DESCR("smaller of two");
+DATA(insert OID = 1379 ( timetz_larger PGUID 11 f t t 2 f 1083 "1266 1266" 100 0 0 100 timetz_larger - ));
+DESCR("larger of two");
+DATA(insert OID = 1380 ( timetz_smaller PGUID 11 f t t 2 f 1083 "1266 1266" 100 0 0 100 timetz_smaller - ));
+DESCR("smaller of two");
+
+DATA(insert OID = 1381 ( char_length PGUID 11 f t t 1 f 23 "25" 100 0 1 0 textlen - ));
+DESCR("length");
+
+DATA(insert OID = 1382 ( date_part PGUID 14 f t f 2 f 701 "25 702" 100 0 0 100 "select date_part($1, timestamp($2))" - ));
DESCR("extract field from abstime");
-DATA(insert OID = 1383 ( date_part PGUID 14 f t f 2 f 701 "25 703" 100 0 0 100 "select interval_part($1, interval($2))" - ));
+DATA(insert OID = 1383 ( date_part PGUID 14 f t f 2 f 701 "25 703" 100 0 0 100 "select date_part($1, interval($2))" - ));
DESCR("extract field from reltime");
-DATA(insert OID = 1384 ( date_part PGUID 14 f t f 2 f 701 "25 1082" 100 0 0 100 "select timestamp_part($1, timestamp($2))" - ));
+DATA(insert OID = 1384 ( date_part PGUID 14 f t f 2 f 701 "25 1082" 100 0 0 100 "select date_part($1, timestamp($2))" - ));
DESCR("extract field from date");
-DATA(insert OID = 1385 ( date_part PGUID 14 f t f 2 f 701 "25 1083" 100 0 0 100 "select interval_part($1, interval($2))" - ));
+DATA(insert OID = 1385 ( date_part PGUID 14 f t f 2 f 701 "25 1083" 100 0 0 100 "select date_part($1, interval($2))" - ));
DESCR("extract field from time");
-DATA(insert OID = 1386 ( date_trunc PGUID 11 f t f 2 f 1184 "25 1184" 100 0 0 100 timestamp_trunc - ));
-DESCR("truncate timestamp to field");
-DATA(insert OID = 1387 ( date_trunc PGUID 11 f t f 2 f 1186 "25 1186" 100 0 0 100 interval_trunc - ));
-DESCR("truncate interval to field");
-DATA(insert OID = 1388 ( age PGUID 11 f t f 2 f 1186 "1184 1184" 100 0 0 100 timestamp_age - ));
-DESCR("difference between timestamps but leave years and months unresolved");
-DATA(insert OID = 1389 ( age PGUID 14 f t f 1 f 1186 "1184" 100 0 0 100 "select timestamp_age(\'today\', $1)" - ));
-DESCR("difference between timestamp and today but leave years and months unresolved");
-
-DATA(insert OID = 1390 ( isfinite PGUID 11 f t f 1 f 16 "1184" 100 0 0 100 timestamp_finite - ));
-DESCR("boolean test");
-DATA(insert OID = 1391 ( isfinite PGUID 11 f t f 1 f 16 "1186" 100 0 0 100 interval_finite - ));
+DATA(insert OID = 1386 ( age PGUID 14 f t f 1 f 1186 "1184" 100 0 0 100 "select age(\'today\', $1)" - ));
+DESCR("date difference from today preserving months and years");
+
+DATA(insert OID = 1387 ( timetz PGUID 14 f t f 1 f 1266 "1266" 100 0 0 100 "select $1" - ));
+DESCR("noop conversion");
+DATA(insert OID = 1388 ( timetz PGUID 11 f t f 1 f 1266 "1184" 100 0 0 100 timestamp_timetz - ));
+DESCR("convert timestamp to time");
+
+DATA(insert OID = 1389 ( isfinite PGUID 11 f t f 1 f 16 "1184" 100 0 0 100 timestamp_finite - ));
DESCR("boolean test");
-DATA(insert OID = 1392 ( isfinite PGUID 11 f t f 1 f 16 "702" 100 0 0 100 abstime_finite - ));
+DATA(insert OID = 1390 ( isfinite PGUID 11 f t f 1 f 16 "1186" 100 0 0 100 interval_finite - ));
DESCR("boolean test");
-DATA(insert OID = 1393 ( interval PGUID 11 f t f 1 f 1186 "25" 100 0 0 100 text_interval - ));
-DESCR("convert text to interval");
-DATA(insert OID = 1394 ( name PGUID 11 f t t 1 f 19 "25" 100 0 0 100 text_name - ));
-DESCR("convert text to name");
-DATA(insert OID = 1395 ( text PGUID 11 f t t 1 f 25 "19" 100 0 0 100 name_text - ));
-DESCR("convert name to text");
-DATA(insert OID = 1396 ( name PGUID 11 f t t 1 f 19 "1042" 100 0 0 100 bpchar_name - ));
-DESCR("convert char() to name");
-DATA(insert OID = 1397 ( bpchar PGUID 11 f t t 1 f 1042 "19" 100 0 0 100 name_bpchar - ));
-DESCR("convert name to char()");
-DATA(insert OID = 1398 ( name PGUID 11 f t t 1 f 19 "1043" 100 0 0 100 text_name - ));
-DESCR("convert varchar to name");
-DATA(insert OID = 1399 ( varchar PGUID 11 f t t 1 f 1043 "19" 100 0 0 100 name_text - ));
-DESCR("convert convert name to varchar");
+DATA(insert OID = 1391 ( factorial PGUID 11 f t t 1 f 23 "21" 100 0 0 100 int2fac - ));
+DESCR("factorial");
+DATA(insert OID = 1392 ( factorial PGUID 11 f t t 1 f 23 "23" 100 0 0 100 int4fac - ));
+DESCR("factorial");
+DATA(insert OID = 1393 ( factorial PGUID 11 f t t 1 f 20 "20" 100 0 0 100 int8fac - ));
+DESCR("factorial");
+DATA(insert OID = 1394 ( abs PGUID 11 f t t 1 f 700 "700" 100 0 0 100 float4abs - ));
+DESCR("absolute value");
+DATA(insert OID = 1395 ( abs PGUID 11 f t t 1 f 701 "701" 100 0 0 100 float8abs - ));
+DESCR("absolute value");
+DATA(insert OID = 1396 ( abs PGUID 11 f t t 1 f 20 "20" 100 0 0 100 int8abs - ));
+DESCR("absolute value");
+DATA(insert OID = 1397 ( abs PGUID 11 f t t 1 f 23 "23" 100 0 0 100 int4abs - ));
+DESCR("absolute value");
+DATA(insert OID = 1398 ( abs PGUID 11 f t t 1 f 21 "21" 100 0 0 100 int2abs - ));
+DESCR("absolute value");
/* OIDS 1400 - 1499 */
-DATA(insert OID = 1400 ( float PGUID 14 f t t 1 f 701 "701" 100 0 0 100 "select $1" - ));
-DESCR("convert float8 to float8 (no-op)");
-DATA(insert OID = 1401 ( float PGUID 11 f t t 1 f 701 "700" 100 0 0 100 ftod - ));
-DESCR("convert float4 to float8");
+DATA(insert OID = 1400 ( name PGUID 11 f t t 1 f 19 "1043" 100 0 0 100 text_name - ));
+DESCR("convert varchar to name");
+DATA(insert OID = 1401 ( varchar PGUID 11 f t t 1 f 1043 "19" 100 0 0 100 name_text - ));
+DESCR("convert convert name to varchar");
+
DATA(insert OID = 1402 ( float4 PGUID 14 f t t 1 f 700 "700" 100 0 0 100 "select $1" - ));
DESCR("convert float4 to float4 (no-op)");
-DATA(insert OID = 1403 ( float4 PGUID 11 f t t 1 f 700 "701" 100 0 0 100 dtof - ));
-DESCR("convert float8 to float4");
-DATA(insert OID = 1404 ( int PGUID 14 f t t 1 f 23 "23" 100 0 0 100 "select $1" - ));
+DATA(insert OID = 1403 ( int2 PGUID 14 f t t 1 f 21 "21" 100 0 0 100 "select $1" - ));
DESCR("convert (no-op)");
-DATA(insert OID = 1405 ( int2 PGUID 14 f t t 1 f 21 "21" 100 0 0 100 "select $1" - ));
+DATA(insert OID = 1404 ( float8 PGUID 14 f t t 1 f 701 "701" 100 0 0 100 "select $1" - ));
DESCR("convert (no-op)");
-DATA(insert OID = 1406 ( float8 PGUID 14 f t t 1 f 701 "701" 100 0 0 100 "select $1" - ));
-DESCR("convert (no-op)");
-DATA(insert OID = 1407 ( float8 PGUID 11 f t t 1 f 701 "700" 100 0 0 100 ftod - ));
-DESCR("convert float4 to float8");
-DATA(insert OID = 1408 ( float8 PGUID 11 f t t 1 f 701 "23" 100 0 0 100 i4tod - ));
-DESCR("convert int4 to float8");
-DATA(insert OID = 1409 ( float8 PGUID 11 f t t 1 f 701 "21" 100 0 0 100 i2tod - ));
-DESCR("convert int2 to float8");
-DATA(insert OID = 1410 ( float4 PGUID 11 f t t 1 f 700 "23" 100 0 0 100 i4tof - ));
-DESCR("convert int4 to float4");
-DATA(insert OID = 1411 ( float4 PGUID 11 f t t 1 f 700 "21" 100 0 0 100 i2tof - ));
-DESCR("convert int2 to float4");
-DATA(insert OID = 1412 ( int4 PGUID 14 f t t 1 f 23 "23" 100 0 0 100 "select $1" - ));
+DATA(insert OID = 1405 ( int4 PGUID 14 f t t 1 f 23 "23" 100 0 0 100 "select $1" - ));
DESCR("convert (no-op)");
-DATA(insert OID = 1413 ( int4 PGUID 11 f t t 1 f 23 "701" 100 0 0 100 dtoi4 - ));
-DESCR("convert float8 to int4");
-DATA(insert OID = 1414 ( int4 PGUID 11 f t t 1 f 23 "21" 100 0 0 100 i2toi4 - ));
-DESCR("convert int2 to int4");
-DATA(insert OID = 1415 ( int4 PGUID 11 f t t 1 f 23 "700" 100 0 0 100 ftoi4 - ));
-DESCR("convert float4 to int4");
-DATA(insert OID = 1417 ( int2 PGUID 11 f t t 1 f 21 "23" 100 0 0 100 i4toi2 - ));
-DESCR("convert int4 to int2");
-DATA(insert OID = 1418 ( int2 PGUID 11 f t t 1 f 21 "701" 100 0 0 100 dtoi2 - ));
-DESCR("convert float8 to int2");
-DATA(insert OID = 1419 ( int2 PGUID 11 f t t 1 f 21 "700" 100 0 0 100 ftoi2 - ));
-DESCR("convert float4 to int2");
+
+DATA(insert OID = 1406 ( isvertical PGUID 11 f t t 2 f 16 "600 600" 100 0 0 100 point_vert - ));
+DESCR("vertical?");
+DATA(insert OID = 1407 ( ishorizontal PGUID 11 f t t 2 f 16 "600 600" 100 0 0 100 point_horiz - ));
+DESCR("horizontal?");
+DATA(insert OID = 1408 ( isparallel PGUID 11 f t t 2 f 16 "601 601" 100 0 0 100 lseg_parallel - ));
+DESCR("parallel?");
+DATA(insert OID = 1409 ( isperp PGUID 11 f t t 2 f 16 "601 601" 100 0 0 100 lseg_perp - ));
+DESCR("perpendicular?");
+DATA(insert OID = 1410 ( isvertical PGUID 11 f t t 1 f 16 "601" 100 0 0 100 lseg_vertical - ));
+DESCR("vertical?");
+DATA(insert OID = 1411 ( ishorizontal PGUID 11 f t t 1 f 16 "601" 100 0 0 100 lseg_horizontal - ));
+DESCR("horizontal?");
+DATA(insert OID = 1412 ( isparallel PGUID 11 f t t 2 f 16 "628 628" 100 0 0 100 line_parallel - ));
+DESCR("lines parallel?");
+DATA(insert OID = 1413 ( isperp PGUID 11 f t t 2 f 16 "628 628" 100 0 0 100 line_perp - ));
+DESCR("lines perpendicular?");
+DATA(insert OID = 1414 ( isvertical PGUID 11 f t t 1 f 16 "628" 100 0 0 100 line_vertical - ));
+DESCR("lines vertical?");
+DATA(insert OID = 1415 ( ishorizontal PGUID 11 f t t 1 f 16 "628" 100 0 0 100 line_horizontal - ));
+DESCR("lines horizontal?");
+DATA(insert OID = 1416 ( point PGUID 11 f t t 1 f 600 "718" 100 0 1 0 circle_center - ));
+DESCR("center of");
DATA(insert OID = 1421 ( box PGUID 11 f t t 2 f 603 "600 600" 100 0 0 100 box - ));
DESCR("convert points to box");
@@ -1751,25 +1794,28 @@ DATA(insert OID = 1424 ( box_mul PGUID 11 f t t 2 f 603 "603 600" 100 0 0 100
DESCR("multiply box by point (scale)");
DATA(insert OID = 1425 ( box_div PGUID 11 f t t 2 f 603 "603 600" 100 0 0 100 box_div - ));
DESCR("divide box by point (scale)");
-DATA(insert OID = 1426 ( path_contain_pt PGUID 11 f t t 2 f 16 "602 600" 100 0 0 100 path_contain_pt - ));
+DATA(insert OID = 1426 ( path_contain_pt PGUID 14 f t t 2 f 16 "602 600" 100 0 0 100 "select on_ppath($2, $1)" - ));
DESCR("path contains point?");
-DATA(insert OID = 1427 ( pt_contained_path PGUID 11 f t t 2 f 16 "600 602" 100 0 0 100 pt_contained_path - ));
-DESCR("point contained in path?");
DATA(insert OID = 1428 ( poly_contain_pt PGUID 11 f t t 2 f 16 "604 600" 100 0 0 100 poly_contain_pt - ));
DESCR("polygon contains point?");
-DATA(insert OID = 1429 ( pt_contained_poly PGUID 11 f t t 2 f 16 "600 604" 100 0 0 100 pt_contained_poly - ));
+DATA(insert OID = 1429 ( pt_contained_poly PGUID 11 f t t 2 f 16 "600 604" 100 0 0 100 pt_contained_poly - ));
DESCR("point contained by polygon?");
-DATA(insert OID = 1430 ( path_isclosed PGUID 11 f t t 1 f 16 "602" 100 0 0 100 path_isclosed - ));
-DESCR("");
-DATA(insert OID = 1431 ( path_isopen PGUID 11 f t t 1 f 16 "602" 100 0 0 100 path_isopen - ));
-DESCR("");
+DATA(insert OID = 1430 ( isclosed PGUID 11 f t t 1 f 16 "602" 100 0 0 100 path_isclosed - ));
+DESCR("path closed?");
+DATA(insert OID = 1431 ( isopen PGUID 11 f t t 1 f 16 "602" 100 0 0 100 path_isopen - ));
+DESCR("path open?");
DATA(insert OID = 1432 ( path_npoints PGUID 11 f t t 1 f 23 "602" 100 0 0 100 path_npoints - ));
-DESCR("");
-DATA(insert OID = 1433 ( path_close PGUID 11 f t t 1 f 602 "602" 100 0 0 100 path_close - ));
-DESCR("");
-DATA(insert OID = 1434 ( path_open PGUID 11 f t t 1 f 602 "602" 100 0 0 100 path_open - ));
-DESCR("");
+DESCR("# points in path");
+
+/* pclose and popen might better be named close and open, but that crashes initdb.
+ * - thomas 97/04/20
+ */
+
+DATA(insert OID = 1433 ( pclose PGUID 11 f t t 1 f 602 "602" 100 0 0 100 path_close - ));
+DESCR("close path");
+DATA(insert OID = 1434 ( popen PGUID 11 f t t 1 f 602 "602" 100 0 0 100 path_open - ));
+DESCR("open path");
DATA(insert OID = 1435 ( path_add PGUID 11 f t t 2 f 602 "602 602" 100 0 0 100 path_add - ));
DESCR("addition");
DATA(insert OID = 1436 ( path_add_pt PGUID 11 f t t 2 f 602 "602 600" 100 0 0 100 path_add_pt - ));
@@ -1794,13 +1840,13 @@ DESCR("divide points (scale/rotate)");
DATA(insert OID = 1445 ( poly_npoints PGUID 11 f t t 1 f 23 "604" 100 0 0 100 poly_npoints - ));
DESCR("number of points in polygon");
-DATA(insert OID = 1446 ( poly_box PGUID 11 f t t 1 f 603 "604" 100 0 0 100 poly_box - ));
+DATA(insert OID = 1446 ( box PGUID 11 f t t 1 f 603 "604" 100 0 0 100 poly_box - ));
DESCR("convert polygon to bounding box");
-DATA(insert OID = 1447 ( poly_path PGUID 11 f t t 1 f 602 "604" 100 0 0 100 poly_path - ));
+DATA(insert OID = 1447 ( path PGUID 11 f t t 1 f 602 "604" 100 0 0 100 poly_path - ));
DESCR("convert polygon to path");
-DATA(insert OID = 1448 ( box_poly PGUID 11 f t t 1 f 604 "603" 100 0 0 100 box_poly - ));
+DATA(insert OID = 1448 ( polygon PGUID 11 f t t 1 f 604 "603" 100 0 0 100 box_poly - ));
DESCR("convert box to polygon");
-DATA(insert OID = 1449 ( path_poly PGUID 11 f t t 1 f 604 "602" 100 0 0 100 path_poly - ));
+DATA(insert OID = 1449 ( polygon PGUID 11 f t t 1 f 604 "602" 100 0 0 100 path_poly - ));
DESCR("convert path to polygon");
DATA(insert OID = 1450 ( circle_in PGUID 11 f t t 1 f 718 "0" 100 0 1 0 circle_in - ));
@@ -1839,35 +1885,34 @@ DATA(insert OID = 1466 ( circle_le PGUID 11 f t t 2 f 16 "718 718" 100 0 1 0
DESCR("less-than-or-equal");
DATA(insert OID = 1467 ( circle_ge PGUID 11 f t t 2 f 16 "718 718" 100 0 1 0 circle_ge - ));
DESCR("greater-than-or-equal");
-DATA(insert OID = 1468 ( circle_area PGUID 11 f t t 1 f 701 "718" 100 0 1 0 circle_area - ));
-DESCR("area");
-DATA(insert OID = 1469 ( circle_diameter PGUID 11 f t t 1 f 701 "718" 100 0 1 0 circle_diameter - ));
-DESCR("diameter");
-DATA(insert OID = 1470 ( circle_radius PGUID 11 f t t 1 f 701 "718" 100 0 1 0 circle_radius - ));
-DESCR("radius");
+DATA(insert OID = 1468 ( area PGUID 11 f t t 1 f 701 "718" 100 0 1 0 circle_area - ));
+DESCR("area of circle");
+DATA(insert OID = 1469 ( diameter PGUID 11 f t t 1 f 701 "718" 100 0 1 0 circle_diameter - ));
+DESCR("diameter of circle");
+DATA(insert OID = 1470 ( radius PGUID 11 f t t 1 f 701 "718" 100 0 1 0 circle_radius - ));
+DESCR("radius of circle");
DATA(insert OID = 1471 ( circle_distance PGUID 11 f t t 2 f 701 "718 718" 100 0 1 0 circle_distance - ));
DESCR("distance between");
DATA(insert OID = 1472 ( circle_center PGUID 11 f t t 1 f 600 "718" 100 0 1 0 circle_center - ));
DESCR("center of");
DATA(insert OID = 1473 ( circle PGUID 11 f t t 2 f 718 "600 701" 100 0 1 0 circle - ));
DESCR("convert point and radius to circle");
-DATA(insert OID = 1474 ( poly_circle PGUID 11 f t t 1 f 718 "604" 100 0 1 0 poly_circle - ));
+DATA(insert OID = 1474 ( circle PGUID 11 f t t 1 f 718 "604" 100 0 1 0 poly_circle - ));
DESCR("convert polygon to circle");
-DATA(insert OID = 1475 ( circle_poly PGUID 11 f t t 2 f 604 "23 718" 100 0 1 0 circle_poly - ));
+DATA(insert OID = 1475 ( polygon PGUID 11 f t t 2 f 604 "23 718" 100 0 1 0 circle_poly - ));
DESCR("convert vertex count and circle to polygon");
DATA(insert OID = 1476 ( dist_pc PGUID 11 f t t 2 f 701 "600 718" 100 0 1 0 dist_pc - ));
-DESCR("distance between");
-DATA(insert OID = 1477 ( circle_contain_pt PGUID 11 f t t 2 f 16 "718 600" 100 0 0 100 circle_contain_pt - ));
-DESCR("");
-DATA(insert OID = 1478 ( pt_contained_circle PGUID 11 f t t 2 f 16 "600 718" 100 0 0 100 pt_contained_circle - ));
-DESCR("");
-DATA(insert OID = 1479 ( box_circle PGUID 11 f t t 1 f 718 "603" 100 0 1 0 box_circle - ));
+DESCR("distance between point and circle");
+DATA(insert OID = 1477 ( circle_contain_pt PGUID 11 f t t 2 f 16 "718 600" 100 0 0 100 circle_contain_pt - ));
+DESCR("circle contains point?");
+DATA(insert OID = 1478 ( pt_contained_circle PGUID 11 f t t 2 f 16 "600 718" 100 0 0 100 pt_contained_circle - ));
+DESCR("point inside circle?");
+DATA(insert OID = 1479 ( circle PGUID 11 f t t 1 f 718 "603" 100 0 1 0 box_circle - ));
DESCR("convert box to circle");
-DATA(insert OID = 1480 ( circle_box PGUID 11 f t t 1 f 603 "718" 100 0 1 0 circle_box - ));
+DATA(insert OID = 1480 ( box PGUID 11 f t t 1 f 603 "718" 100 0 1 0 circle_box - ));
DESCR("convert circle to box");
-
-DATA(insert OID = 1481 ( text_substr PGUID 11 f t t 3 f 25 "25 23 23" 100 0 0 100 text_substr - ));
-DESCR("return portion of string");
+DATA(insert OID = 1481 ( tinterval PGUID 11 f t f 2 f 704 "702 702" 100 0 0 100 mktinterval - ));
+DESCR("convert to tinterval");
DATA(insert OID = 1482 ( lseg_ne PGUID 11 f t t 2 f 16 "601 601" 100 0 0 100 lseg_ne - ));
DESCR("not equal");
@@ -1892,7 +1937,7 @@ DATA(insert OID = 1491 ( line_out PGUID 11 f t t 1 f 23 "0" 100 0 0 100 line
DESCR("(internal)");
DATA(insert OID = 1492 ( line_eq PGUID 11 f t t 2 f 16 "628 628" 100 0 0 100 line_eq - ));
DESCR("lines equal?");
-DATA(insert OID = 1493 ( line_construct_pp PGUID 11 f t t 2 f 628 "600 600" 100 0 0 100 line_construct_pp - ));
+DATA(insert OID = 1493 ( line PGUID 11 f t t 2 f 628 "600 600" 100 0 0 100 line_construct_pp - ));
DESCR("line from points");
DATA(insert OID = 1494 ( line_interpt PGUID 11 f t t 2 f 600 "628 628" 100 0 0 100 line_interpt - ));
DESCR("intersection point");
@@ -1909,135 +1954,90 @@ DESCR("lines horizontal?");
/* OIDS 1500 - 1599 */
-DATA(insert OID = 1530 ( point PGUID 11 f t t 2 f 600 "601 601" 100 0 0 100 lseg_interpt - ));
-DESCR("convert two line segments to point (intersection)");
-DATA(insert OID = 1531 ( point PGUID 11 f t t 1 f 600 "718" 100 0 0 100 circle_center - ));
-DESCR("convert circle to point (center)");
-DATA(insert OID = 1532 ( isvertical PGUID 11 f t t 2 f 16 "600 600" 100 0 0 100 point_vert - ));
-DESCR("");
-DATA(insert OID = 1533 ( ishorizontal PGUID 11 f t t 2 f 16 "600 600" 100 0 0 100 point_horiz - ));
-DESCR("");
-DATA(insert OID = 1534 ( slope PGUID 11 f t t 2 f 701 "600 600" 100 0 0 100 point_slope - ));
-DESCR("");
-
-DATA(insert OID = 1540 ( lseg PGUID 11 f t t 2 f 601 "600 600" 100 0 0 100 lseg_construct - ));
-DESCR("");
-DATA(insert OID = 1541 ( lseg PGUID 11 f t t 1 f 601 "603" 100 0 0 100 box_diagonal - ));
-DESCR("");
-DATA(insert OID = 1542 ( isparallel PGUID 11 f t t 2 f 16 "601 601" 100 0 0 100 lseg_parallel - ));
-DESCR("");
-DATA(insert OID = 1543 ( isperpendicular PGUID 11 f t t 2 f 16 "601 601" 100 0 0 100 lseg_perp - ));
-DESCR("");
-DATA(insert OID = 1544 ( isvertical PGUID 11 f t t 1 f 16 "601" 100 0 0 100 lseg_vertical - ));
-DESCR("");
-DATA(insert OID = 1545 ( ishorizontal PGUID 11 f t t 1 f 16 "601" 100 0 0 100 lseg_horizontal - ));
-DESCR("");
+DATA(insert OID = 1530 ( length PGUID 11 f t t 1 f 701 "601" 100 0 1 0 lseg_length - ));
+DESCR("distance between endpoints");
+DATA(insert OID = 1531 ( length PGUID 11 f t t 1 f 701 "602" 100 0 1 0 path_length - ));
+DESCR("sum of path segments");
-/* pclose and popen might better be named close and open, but that crashes initdb.
- * - tgl 97/04/20
- */
-DATA(insert OID = 1550 ( path PGUID 11 f t t 1 f 602 "604" 100 0 0 100 poly_path - ));
-DESCR("");
-DATA(insert OID = 1551 ( length PGUID 11 f t t 1 f 701 "602" 100 0 1 0 path_length - ));
-DESCR("sum of lengths of path segments");
-DATA(insert OID = 1552 ( points PGUID 11 f t t 1 f 23 "602" 100 0 0 100 path_npoints - ));
-DESCR("");
-DATA(insert OID = 1553 ( pclose PGUID 11 f t t 1 f 602 "602" 100 0 0 100 path_close - ));
-DESCR("");
-DATA(insert OID = 1554 ( popen PGUID 11 f t t 1 f 602 "602" 100 0 0 100 path_open - ));
-DESCR("");
-DATA(insert OID = 1555 ( isopen PGUID 11 f t t 1 f 16 "602" 100 0 0 100 path_isopen - ));
-DESCR("");
-DATA(insert OID = 1556 ( isclosed PGUID 11 f t t 1 f 16 "602" 100 0 0 100 path_isclosed - ));
+DATA(insert OID = 1532 ( point PGUID 11 f t t 1 f 600 "601" 100 0 0 100 lseg_center - ));
+DESCR("center of");
+DATA(insert OID = 1533 ( point PGUID 11 f t t 1 f 600 "602" 100 0 0 100 path_center - ));
+DESCR("center of");
+DATA(insert OID = 1534 ( point PGUID 11 f t t 1 f 600 "603" 100 1 0 100 box_center - ));
+DESCR("center of");
+DATA(insert OID = 1540 ( point PGUID 11 f t t 1 f 600 "604" 100 0 0 100 poly_center - ));
+DESCR("center of");
+DATA(insert OID = 1541 ( lseg PGUID 11 f t t 1 f 601 "603" 100 0 0 100 box_diagonal - ));
DESCR("");
-
-DATA(insert OID = 1560 ( box PGUID 11 f t t 2 f 603 "603 603" 100 0 0 100 box_intersect - ));
-DESCR("convert boxes to box (intersection)");
-DATA(insert OID = 1561 ( box PGUID 11 f t t 1 f 603 "604" 100 0 0 100 poly_box - ));
-DESCR("convert polygon to box");
-DATA(insert OID = 1562 ( width PGUID 11 f t t 1 f 701 "603" 100 0 0 100 box_width - ));
-DESCR("box width");
-DATA(insert OID = 1563 ( height PGUID 11 f t t 1 f 701 "603" 100 0 0 100 box_height - ));
-DESCR("box height");
-DATA(insert OID = 1564 ( center PGUID 11 f t t 1 f 600 "603" 100 0 0 100 box_center - ));
-DESCR("box center");
-DATA(insert OID = 1565 ( area PGUID 11 f t t 1 f 701 "603" 100 0 0 100 box_area - ));
-DESCR("box area");
-DATA(insert OID = 1569 ( box PGUID 11 f t t 1 f 603 "718" 100 0 0 100 circle_box - ));
-DESCR("convert circle to box");
-
-DATA(insert OID = 1570 ( polygon PGUID 11 f t t 1 f 604 "602" 100 0 0 100 path_poly - ));
-DESCR("convert path to polygon");
-DATA(insert OID = 1571 ( polygon PGUID 11 f t t 1 f 604 "603" 100 0 0 100 box_poly - ));
-DESCR("convert box to polygon");
-DATA(insert OID = 1572 ( polygon PGUID 11 f t t 2 f 604 "23 718" 100 0 0 100 circle_poly - ));
-DESCR("convert circle to polygon");
-DATA(insert OID = 1573 ( polygon PGUID 14 f t t 1 f 604 "718" 100 0 0 100 "select circle_poly(12, $1)" - ));
+DATA(insert OID = 1542 ( center PGUID 11 f t t 1 f 600 "603" 100 1 0 100 box_center - ));
+DESCR("center of");
+DATA(insert OID = 1543 ( center PGUID 11 f t t 1 f 600 "718" 100 0 1 0 circle_center - ));
+DESCR("center of");
+DATA(insert OID = 1544 ( polygon PGUID 14 f t t 1 f 604 "718" 100 0 0 100 "select polygon(12, $1)" - ));
DESCR("convert circle to 12-vertex polygon");
-DATA(insert OID = 1574 ( points PGUID 11 f t t 1 f 23 "604" 100 0 0 100 poly_npoints - ));
-DESCR("");
-DATA(insert OID = 1575 ( center PGUID 11 f t t 1 f 600 "604" 100 0 0 100 poly_center - ));
-DESCR("");
-DATA(insert OID = 1576 ( length PGUID 11 f t t 1 f 701 "601" 100 0 1 0 lseg_length - ));
-DESCR("distance between endpoints");
-
-DATA(insert OID = 1579 ( circle PGUID 11 f t t 1 f 718 "603" 100 0 0 100 box_circle - ));
-DESCR("convert box to circle");
-DATA(insert OID = 1580 ( circle PGUID 11 f t t 1 f 718 "604" 100 0 0 100 poly_circle - ));
-DESCR("convert polygon to circle");
-DATA(insert OID = 1581 ( center PGUID 11 f t t 1 f 600 "718" 100 0 0 100 circle_center - ));
-DESCR("center of circle");
-DATA(insert OID = 1582 ( radius PGUID 11 f t t 1 f 701 "718" 100 0 0 100 circle_radius - ));
-DESCR("radius of circle");
-DATA(insert OID = 1583 ( diameter PGUID 11 f t t 1 f 701 "718" 100 0 0 100 circle_diameter - ));
-DESCR("diameter of circle");
-DATA(insert OID = 1584 ( area PGUID 11 f t t 1 f 701 "718" 100 0 0 100 circle_area - ));
-DESCR("area of circle");
-
-DATA(insert OID = 1592 ( int8 PGUID 14 f t t 1 f 20 "20" 100 0 0 100 "select $1" - ));
+DATA(insert OID = 1545 ( npoints PGUID 11 f t t 1 f 23 "602" 100 0 0 100 path_npoints - ));
+DESCR("# points in path");
+DATA(insert OID = 1556 ( npoints PGUID 11 f t t 1 f 23 "604" 100 0 0 100 poly_npoints - ));
+DESCR("number of points in polygon");
+DATA(insert OID = 1573 ( int8 PGUID 14 f t t 1 f 20 "20" 100 0 0 100 "select $1" - ));
DESCR("convert int8 to int8 (no-op)");
-DATA(insert OID = 1593 ( int8 PGUID 11 f t t 1 f 20 "23" 100 0 0 100 int48 - ));
-DESCR("convert int4 to int8");
-DATA(insert OID = 1594 ( int8 PGUID 11 f t t 1 f 20 "701" 100 0 0 100 dtoi8 - ));
-DESCR("convert float8 to int8");
-DATA(insert OID = 1595 ( int4 PGUID 11 f t t 1 f 23 "20" 100 0 0 100 int84 - ));
-DESCR("convert int8 to int4");
-DATA(insert OID = 1596 ( float8 PGUID 11 f t t 1 f 701 "20" 100 0 0 100 i8tod - ));
-DESCR("convert int8 to float8");
-/* OIDS 1600 - 1699 */
+DATA(insert OID = 1569 ( like PGUID 11 f t t 2 f 16 "25 25" 100 0 1 0 textlike - ));
+DESCR("matches LIKE expression");
+DATA(insert OID = 1570 ( notlike PGUID 11 f t t 2 f 16 "25 25" 100 0 1 0 textnlike - ));
+DESCR("does not match LIKE expression");
+DATA(insert OID = 1571 ( like PGUID 11 f t t 2 f 16 "19 25" 100 0 0 100 namelike - ));
+DESCR("matches LIKE expression");
+DATA(insert OID = 1572 ( notlike PGUID 11 f t t 2 f 16 "19 25" 100 0 0 100 namenlike - ));
+DESCR("does not match LIKE expression");
-DATA(insert OID = 1600 ( line PGUID 11 f t t 2 f 628 "600 600" 100 0 0 100 line_construct_pp - ));
-DESCR("points to line");
-DATA(insert OID = 1601 ( ishorizontal PGUID 11 f t t 1 f 16 "628" 100 0 0 100 line_horizontal - ));
-DESCR("is line horizontal?");
-DATA(insert OID = 1602 ( isvertical PGUID 11 f t t 1 f 16 "628" 100 0 0 100 line_vertical - ));
-DESCR("is line vertical?");
-DATA(insert OID = 1603 ( isparallel PGUID 11 f t t 2 f 16 "628 628" 100 0 0 100 line_parallel - ));
-DESCR("are lines parallel?");
+/* SEQUENCEs nextval & currval functions */
+DATA(insert OID = 1574 ( nextval PGUID 11 f t f 1 f 23 "25" 100 0 0 100 nextval - ));
+DESCR("sequence next value");
+DATA(insert OID = 1575 ( currval PGUID 11 f t f 1 f 23 "25" 100 0 0 100 currval - ));
+DESCR("sequence current value");
+DATA(insert OID = 1576 ( setval PGUID 11 f t f 2 f 23 "25 23" 100 0 0 100 setval - ));
+DESCR("sequence set value");
-DATA(insert OID = 1604 ( float8 PGUID 11 f t t 1 f 701 "25" 100 0 0 100 text_float8 - ));
-DESCR("convert text to float8");
-DATA(insert OID = 1605 ( float4 PGUID 11 f t t 1 f 700 "25" 100 0 0 100 text_float4 - ));
-DESCR("convert text to float4");
-DATA(insert OID = 1606 ( text PGUID 11 f t t 1 f 25 "701" 100 0 0 100 float8_text - ));
-DESCR("convert float8 to text");
-DATA(insert OID = 1607 ( text PGUID 11 f t t 1 f 25 "700" 100 0 0 100 float4_text - ));
-DESCR("convert float4 to text");
+/* OIDS 1600 - 1699 */
DATA(insert OID = 1619 ( varchar PGUID 11 f t t 1 f 1043 "23" 100 0 0 100 int4_text - ));
DESCR("convert int4 to varchar");
-DATA(insert OID = 1620 ( int4 PGUID 11 f t t 1 f 23 "1043" 100 0 0 100 text_int4 - ));
-DESCR("convert varchar to int4");
-DATA(insert OID = 1621 ( text PGUID 11 f t t 1 f 25 "20" 100 0 0 100 int8_text - ));
-DESCR("convert int8 to text");
-DATA(insert OID = 1622 ( int8 PGUID 11 f t t 1 f 20 "25" 100 0 0 100 text_int8 - ));
-DESCR("convert text to int8");
DATA(insert OID = 1623 ( varchar PGUID 11 f t t 1 f 1043 "20" 100 0 0 100 int8_text - ));
DESCR("convert int8 to varchar");
-DATA(insert OID = 1624 ( int8 PGUID 11 f t t 1 f 20 "1043" 100 0 0 100 text_int8 - ));
-DESCR("convert varchar to int8");
+
+/* OID's 1625 - 1639 LZTEXT data type */
+DATA(insert OID = 1626 ( lztextin PGUID 11 f t t 1 f 1625 "0" 100 0 0 100 lztextin - ));
+DESCR("(internal)");
+DATA(insert OID = 1627 ( lztextout PGUID 11 f t t 1 f 23 "0" 100 0 0 100 lztextout - ));
+DESCR("(internal)");
+DATA(insert OID = 1629 ( text PGUID 11 f t t 1 f 25 "1625" 100 0 0 100 lztext_text -));
+DESCR("convert lztext to text");
+DATA(insert OID = 1631 ( lztext PGUID 11 f t t 1 f 1625 "25" 100 0 0 100 text_lztext -));
+DESCR("convert text to lztext");
+DATA(insert OID = 1632 ( lztext PGUID 14 f t t 1 f 1625 "1625" 100 0 0 100 "select $1" -));
+DESCR("convert text to lztext");
+DATA(insert OID = 1633 ( char_length PGUID 11 f t t 1 f 23 "1625" 100 0 1 0 lztextlen - ));
+DESCR("length");
+DATA(insert OID = 1634 ( length PGUID 11 f t t 1 f 23 "1625" 100 0 1 0 lztextlen - ));
+DESCR("length");
+DATA(insert OID = 1635 ( octet_length PGUID 11 f t t 1 f 23 "1625" 100 0 1 0 lztextoctetlen - ));
+DESCR("octet length");
+DATA(insert OID = 1636 ( lztext_cmp PGUID 11 f t t 2 f 23 "1625 1625" 100 0 1 0 lztext_cmp - ));
+DESCR("compare lztext");
+DATA(insert OID = 1637 ( lztext_eq PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_eq - ));
+DESCR("equal");
+DATA(insert OID = 1638 ( lztext_ne PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_ne - ));
+DESCR("not equal");
+DATA(insert OID = 1639 ( lztext_gt PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_gt - ));
+DESCR("greater-than");
+DATA(insert OID = 1664 ( lztext_ge PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_ge - ));
+DESCR("greater-than-or-equal");
+DATA(insert OID = 1665 ( lztext_lt PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_lt - ));
+DESCR("less-than");
+DATA(insert OID = 1656 ( lztext_le PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_le - ));
+DESCR("less-than-or-equal");
/* Oracle Compatibility Related Functions - By Edmund Mergl <E.Mergl@bawue.de> */
DATA(insert OID = 868 ( strpos PGUID 11 f t t 2 f 23 "25 25" 100 0 0 100 textpos - ));
@@ -2058,7 +2058,7 @@ DATA(insert OID = 876 ( rtrim PGUID 11 f t t 2 f 25 "25 25" 100 0 0 100 r
DESCR("right-pad string to length");
DATA(insert OID = 877 ( substr PGUID 11 f t t 3 f 25 "25 23 23" 100 0 0 100 text_substr - ));
DESCR("return portion of string");
-DATA(insert OID = 878 ( translate PGUID 11 f t t 3 f 25 "25 18 18" 100 0 0 100 translate - ));
+DATA(insert OID = 878 ( translate PGUID 11 f t t 3 f 25 "25 25 25" 100 0 0 100 translate - ));
DESCR("modify string by substring replacement");
DATA(insert OID = 879 ( lpad PGUID 14 f t t 2 f 25 "25 23" 100 0 0 100 "select lpad($1, $2, \' \')" - ));
DESCR("left-pad string to length");
@@ -2068,22 +2068,13 @@ DATA(insert OID = 881 ( ltrim PGUID 14 f t t 1 f 25 "25" 100 0 0 100 "sel
DESCR("remove initial characters from string");
DATA(insert OID = 882 ( rtrim PGUID 14 f t t 1 f 25 "25" 100 0 0 100 "select rtrim($1, \' \')" - ));
DESCR("remove trailing characters from string");
-DATA(insert OID = 883 ( substr PGUID 14 f t t 2 f 25 "25 23" 100 0 0 100 "select text_substr($1, $2, -1)" - ));
+DATA(insert OID = 883 ( substr PGUID 14 f t t 2 f 25 "25 23" 100 0 0 100 "select substr($1, $2, -1)" - ));
DESCR("return portion of string");
DATA(insert OID = 884 ( btrim PGUID 11 f t t 2 f 25 "25 25" 100 0 0 100 btrim - ));
DESCR("trim both ends of string");
DATA(insert OID = 885 ( btrim PGUID 14 f t t 1 f 25 "25" 100 0 0 100 "select btrim($1, \' \')" - ));
DESCR("trim both ends of string");
-
-/* SEQUENCEs nextval & currval functions */
-DATA(insert OID = 1317 ( nextval PGUID 11 f t f 1 f 23 "25" 100 0 0 100 nextval - ));
-DESCR("sequence next value");
-DATA(insert OID = 1319 ( currval PGUID 11 f t f 1 f 23 "25" 100 0 0 100 currval - ));
-DESCR("sequence current value");
-DATA(insert OID = 1618 ( setval PGUID 11 f t f 2 f 23 "25 23" 100 0 0 100 setval - ));
-DESCR("sequence set value");
-
/* for multi-byte support */
DATA(insert OID = 1039 ( getdatabaseencoding PGUID 11 f t f 0 f 19 "0" 100 0 0 100 getdatabaseencoding - ));
DESCR("encoding name of current database");
@@ -2162,7 +2153,7 @@ DESCR("(internal)");
/* for cidr type support */
DATA(insert OID = 1267 ( cidr_in PGUID 11 f t t 1 f 650 "0" 100 0 0 100 cidr_in - ));
DESCR("(internal)");
-DATA(insert OID = 1416 ( cidr_out PGUID 11 f t t 1 f 23 "0" 100 0 0 100 cidr_out - ));
+DATA(insert OID = 1427 ( cidr_out PGUID 11 f t t 1 f 23 "0" 100 0 0 100 cidr_out - ));
DESCR("(internal)");
/* these are used for both inet and cidr */
@@ -2190,18 +2181,6 @@ DATA(insert OID = 930 ( network_supeq PGUID 11 f t t 2 f 16 "869 869" 100 0
DESCR("is-supernet-or-equal");
/* inet/cidr versions */
-DATA(insert OID = 940 ( network_netmask PGUID 11 f t t 1 f 25 "869" 100 0 0 100 network_netmask - ));
-DESCR("netmask of address");
-DATA(insert OID = 941 ( network_masklen PGUID 11 f t t 1 f 23 "869" 100 0 0 100 network_masklen - ));
-DESCR("netmask length");
-DATA(insert OID = 945 ( network_broadcast PGUID 11 f t t 1 f 25 "869" 100 0 0 100 network_broadcast - ));
-DESCR("broadcast address");
-DATA(insert OID = 682 ( network_host PGUID 11 f t t 1 f 25 "869" 100 0 0 100 network_host - ));
-DESCR("host address");
-DATA(insert OID = 473 ( network_network PGUID 11 f t t 1 f 25 "869" 100 0 0 100 network_network - ));
-DESCR("network address");
-
-/* shortcut names */
DATA(insert OID = 696 ( netmask PGUID 11 f t t 1 f 25 "869" 100 0 0 100 network_netmask - ));
DESCR("netmask of address");
DATA(insert OID = 697 ( masklen PGUID 11 f t t 1 f 23 "869" 100 0 0 100 network_masklen - ));
@@ -2231,29 +2210,19 @@ DATA(insert OID = 1704 ( numeric_abs PGUID 11 f t t 1 f 1700 "1700" 100 0 0 10
DESCR("absolute value");
DATA(insert OID = 1705 ( abs PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_abs - ));
DESCR("absolute value");
-DATA(insert OID = 1706 ( numeric_sign PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_sign - ));
+DATA(insert OID = 1706 ( sign PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_sign - ));
DESCR("sign of value");
-DATA(insert OID = 1707 ( sign PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_sign - ));
-DESCR("sign of value");
-DATA(insert OID = 1708 ( numeric_round PGUID 11 f t t 2 f 1700 "1700 23" 100 0 0 100 numeric_round - ));
-DESCR("value rounded to 'scale'");
-DATA(insert OID = 1709 ( round PGUID 11 f t t 2 f 1700 "1700 23" 100 0 0 100 numeric_round - ));
+DATA(insert OID = 1707 ( round PGUID 11 f t t 2 f 1700 "1700 23" 100 0 0 100 numeric_round - ));
DESCR("value rounded to 'scale'");
-DATA(insert OID = 1710 ( round PGUID 14 f t t 1 f 1700 "1700" 100 0 0 100 "select numeric_round($1,0)" - ));
+DATA(insert OID = 1708 ( round PGUID 14 f t t 1 f 1700 "1700" 100 0 0 100 "select numeric_round($1,0)" - ));
DESCR("value rounded to 'scale' of zero");
-DATA(insert OID = 1711 ( numeric_trunc PGUID 11 f t t 2 f 1700 "1700 23" 100 0 0 100 numeric_trunc - ));
+DATA(insert OID = 1709 ( trunc PGUID 11 f t t 2 f 1700 "1700 23" 100 0 0 100 numeric_trunc - ));
DESCR("value truncated to 'scale'");
-DATA(insert OID = 1712 ( trunc PGUID 11 f t t 2 f 1700 "1700 23" 100 0 0 100 numeric_trunc - ));
-DESCR("value truncated to 'scale'");
-DATA(insert OID = 1713 ( trunc PGUID 14 f t t 1 f 1700 "1700" 100 0 0 100 "select numeric_trunc($1,0)" - ));
+DATA(insert OID = 1710 ( trunc PGUID 14 f t t 1 f 1700 "1700" 100 0 0 100 "select numeric_trunc($1,0)" - ));
DESCR("value truncated to 'scale' of zero");
-DATA(insert OID = 1714 ( numeric_ceil PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_ceil - ));
-DESCR("smallest integer >= value");
-DATA(insert OID = 1715 ( ceil PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_ceil - ));
+DATA(insert OID = 1711 ( ceil PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_ceil - ));
DESCR("smallest integer >= value");
-DATA(insert OID = 1716 ( numeric_floor PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_floor - ));
-DESCR("largest integer <= value");
-DATA(insert OID = 1717 ( floor PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_floor - ));
+DATA(insert OID = 1712 ( floor PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_floor - ));
DESCR("largest integer <= value");
DATA(insert OID = 1718 ( numeric_eq PGUID 11 f t t 2 f 16 "1700 1700" 100 0 0 100 numeric_eq - ));
DESCR("equal");
@@ -2275,53 +2244,43 @@ DATA(insert OID = 1726 ( numeric_mul PGUID 11 f t t 2 f 1700 "1700 1700" 100 0
DESCR("multiply");
DATA(insert OID = 1727 ( numeric_div PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_div - ));
DESCR("divide");
-DATA(insert OID = 1728 ( numeric_mod PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_mod - ));
+DATA(insert OID = 1728 ( mod PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_mod - ));
DESCR("modulus");
-DATA(insert OID = 1729 ( mod PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_mod - ));
+DATA(insert OID = 1729 ( numeric_mod PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_mod - ));
DESCR("modulus");
-DATA(insert OID = 1730 ( numeric_sqrt PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_sqrt - ));
+DATA(insert OID = 1730 ( sqrt PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_sqrt - ));
DESCR("square root");
-DATA(insert OID = 1731 ( sqrt PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_sqrt - ));
+DATA(insert OID = 1731 ( numeric_sqrt PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_sqrt - ));
DESCR("square root");
-DATA(insert OID = 1732 ( numeric_exp PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_exp - ));
+DATA(insert OID = 1732 ( exp PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_exp - ));
DESCR("e raised to the power of n");
-DATA(insert OID = 1733 ( exp PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_exp - ));
+DATA(insert OID = 1733 ( numeric_exp PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_exp - ));
DESCR("e raised to the power of n");
-DATA(insert OID = 1734 ( numeric_ln PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_ln - ));
+DATA(insert OID = 1734 ( ln PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_ln - ));
DESCR("natural logarithm of n");
-DATA(insert OID = 1735 ( ln PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_ln - ));
+DATA(insert OID = 1735 ( numeric_ln PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_ln - ));
DESCR("natural logarithm of n");
-DATA(insert OID = 1736 ( numeric_log PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_log - ));
+DATA(insert OID = 1736 ( log PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_log - ));
DESCR("logarithm base m of n");
-DATA(insert OID = 1737 ( log PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_log - ));
+DATA(insert OID = 1737 ( numeric_log PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_log - ));
DESCR("logarithm base m of n");
-DATA(insert OID = 1738 ( numeric_power PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_power - ));
+DATA(insert OID = 1738 ( pow PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_power - ));
DESCR("m raised to the power of n");
-DATA(insert OID = 1739 ( power PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_power - ));
+DATA(insert OID = 1739 ( numeric_power PGUID 11 f t t 2 f 1700 "1700 1700" 100 0 0 100 numeric_power - ));
DESCR("m raised to the power of n");
-DATA(insert OID = 1740 ( int4_numeric PGUID 11 f t t 1 f 1700 "23" 100 0 0 100 int4_numeric - ));
-DESCR("(internal)");
-DATA(insert OID = 1741 ( numeric PGUID 11 f t t 1 f 1700 "23" 100 0 0 100 int4_numeric - ));
-DESCR("(internal)");
-DATA(insert OID = 1742 ( float4_numeric PGUID 11 f t t 1 f 1700 "700" 100 0 0 100 float4_numeric - ));
-DESCR("(internal)");
-DATA(insert OID = 1743 ( numeric PGUID 11 f t t 1 f 1700 "700" 100 0 0 100 float4_numeric - ));
-DESCR("(internal)");
-DATA(insert OID = 1744 ( float8_numeric PGUID 11 f t t 1 f 1700 "701" 100 0 0 100 float8_numeric - ));
-DESCR("(internal)");
-DATA(insert OID = 1745 ( numeric PGUID 11 f t t 1 f 1700 "701" 100 0 0 100 float8_numeric - ));
-DESCR("(internal)");
-DATA(insert OID = 1746 ( numeric_int4 PGUID 11 f t t 1 f 23 "1700" 100 0 0 100 numeric_int4 - ));
+DATA(insert OID = 1740 ( numeric PGUID 11 f t t 1 f 1700 "23" 100 0 0 100 int4_numeric - ));
DESCR("(internal)");
-DATA(insert OID = 1747 ( int4 PGUID 11 f t t 1 f 23 "1700" 100 0 0 100 numeric_int4 - ));
+DATA(insert OID = 1741 ( log PGUID 14 f t t 1 f 1700 "1700" 100 0 0 100 "select(10, $1)" - ));
+DESCR("logarithm base m of n");
+DATA(insert OID = 1742 ( numeric PGUID 11 f t t 1 f 1700 "700" 100 0 0 100 float4_numeric - ));
DESCR("(internal)");
-DATA(insert OID = 1748 ( numeric_float4 PGUID 11 f t t 1 f 700 "1700" 100 0 0 100 numeric_float4 - ));
+DATA(insert OID = 1743 ( numeric PGUID 11 f t t 1 f 1700 "701" 100 0 0 100 float8_numeric - ));
DESCR("(internal)");
-DATA(insert OID = 1749 ( float4 PGUID 11 f t t 1 f 700 "1700" 100 0 0 100 numeric_float4 - ));
+DATA(insert OID = 1744 ( int4 PGUID 11 f t t 1 f 23 "1700" 100 0 0 100 numeric_int4 - ));
DESCR("(internal)");
-DATA(insert OID = 1750 ( numeric_float8 PGUID 11 f t t 1 f 701 "1700" 100 0 0 100 numeric_float8 - ));
+DATA(insert OID = 1745 ( float4 PGUID 11 f t t 1 f 700 "1700" 100 0 0 100 numeric_float4 - ));
DESCR("(internal)");
-DATA(insert OID = 1751 ( float8 PGUID 11 f t t 1 f 701 "1700" 100 0 0 100 numeric_float8 - ));
+DATA(insert OID = 1746 ( float8 PGUID 11 f t t 1 f 701 "1700" 100 0 0 100 numeric_float8 - ));
DESCR("(internal)");
DATA(insert OID = 1764 ( numeric_inc PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_inc - ));
DESCR("increment by one");
@@ -2335,72 +2294,28 @@ DATA(insert OID = 1769 ( numeric_cmp PGUID 11 f t t 2 f 23 "1700 1700" 100 0 0
DESCR("compare two numbers");
DATA(insert OID = 1771 ( numeric_uminus PGUID 11 f t t 1 f 1700 "1700" 100 0 0 100 numeric_uminus - ));
DESCR("negate");
-DATA(insert OID = 1779 ( int8_numeric PGUID 11 f t t 1 f 1700 "20" 100 0 0 100 int8_numeric - ));
+DATA(insert OID = 1779 ( int8 PGUID 11 f t t 1 f 20 "1700" 100 0 0 100 numeric_int8 - ));
DESCR("(internal)");
DATA(insert OID = 1781 ( numeric PGUID 11 f t t 1 f 1700 "20" 100 0 0 100 int8_numeric - ));
DESCR("(internal)");
-DATA(insert OID = 1782 ( numeric_int8 PGUID 11 f t t 1 f 20 "1700" 100 0 0 100 numeric_int8 - ));
-DESCR("(internal)");
-DATA(insert OID = 1783 ( int8 PGUID 11 f t t 1 f 20 "1700" 100 0 0 100 numeric_int8 - ));
-DESCR("(internal)");
-DATA(insert OID = 1784 ( int2_numeric PGUID 11 f t t 1 f 1700 "21" 100 0 0 100 int2_numeric - ));
-DESCR("(internal)");
-DATA(insert OID = 1785 ( numeric PGUID 11 f t t 1 f 1700 "21" 100 0 0 100 int2_numeric - ));
-DESCR("(internal)");
-DATA(insert OID = 1786 ( numeric_int2 PGUID 11 f t t 1 f 21 "1700" 100 0 0 100 numeric_int2 - ));
-DESCR("(internal)");
-DATA(insert OID = 1787 ( int2 PGUID 11 f t t 1 f 21 "1700" 100 0 0 100 numeric_int2 - ));
-DESCR("(internal)");
-
-/* OID's 1625 - 1639 LZTEXT data type */
-DATA(insert OID = 1626 ( lztextin PGUID 11 f t t 1 f 1625 "0" 100 0 0 100 lztextin - ));
+DATA(insert OID = 1782 ( numeric PGUID 11 f t t 1 f 1700 "21" 100 0 0 100 int2_numeric - ));
DESCR("(internal)");
-DATA(insert OID = 1627 ( lztextout PGUID 11 f t t 1 f 23 "0" 100 0 0 100 lztextout - ));
+DATA(insert OID = 1783 ( int2 PGUID 11 f t t 1 f 21 "1700" 100 0 0 100 numeric_int2 - ));
DESCR("(internal)");
-DATA(insert OID = 1628 ( lztext_text PGUID 11 f t t 1 f 25 "1625" 100 0 0 100 lztext_text -));
-DESCR("convert lztext to text");
-DATA(insert OID = 1629 ( text PGUID 11 f t t 1 f 25 "1625" 100 0 0 100 lztext_text -));
-DESCR("convert lztext to text");
-DATA(insert OID = 1630 ( text_lztext PGUID 11 f t t 1 f 1625 "25" 100 0 0 100 text_lztext -));
-DESCR("convert text to lztext");
-DATA(insert OID = 1631 ( lztext PGUID 11 f t t 1 f 1625 "25" 100 0 0 100 text_lztext -));
-DESCR("convert text to lztext");
-DATA(insert OID = 1632 ( lztextlen PGUID 11 f t t 1 f 23 "1625" 100 0 1 0 lztextlen - ));
-DESCR("length");
-DATA(insert OID = 1633 ( length PGUID 11 f t t 1 f 23 "1625" 100 0 1 0 lztextlen - ));
-DESCR("length");
-DATA(insert OID = 1634 ( lztextoctetlen PGUID 11 f t t 1 f 23 "1625" 100 0 1 0 lztextoctetlen - ));
-DESCR("octet length");
-DATA(insert OID = 1635 ( octet_length PGUID 11 f t t 1 f 23 "1625" 100 0 1 0 lztextoctetlen - ));
-DESCR("octet length");
-DATA(insert OID = 1636 ( lztext_cmp PGUID 11 f t t 2 f 23 "1625 1625" 100 0 1 0 lztext_cmp - ));
-DESCR("compare lztext vs. lztext");
-DATA(insert OID = 1637 ( lztext_eq PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_eq - ));
-DESCR("equal");
-DATA(insert OID = 1638 ( lztext_ne PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_ne - ));
-DESCR("not equal");
-DATA(insert OID = 1639 ( lztext_gt PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_gt - ));
-DESCR("greater-than");
-DATA(insert OID = 1664 ( lztext_ge PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_ge - ));
-DESCR("greater-than-or-equal");
-DATA(insert OID = 1665 ( lztext_lt PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_lt - ));
-DESCR("lower-than");
-DATA(insert OID = 1656 ( lztext_le PGUID 11 f t t 2 f 16 "1625 1625" 100 0 1 0 lztext_le - ));
-DESCR("lower-than-or-equal");
/* formatting */
DATA(insert OID = 1770 ( to_char PGUID 11 f t f 2 f 25 "1184 25" 100 0 0 100 timestamp_to_char - ));
-DESCR("convert / formatting timestamp to text");
+DESCR("format timestamp to text");
DATA(insert OID = 1772 ( to_char PGUID 11 f t f 2 f 25 "1700 25" 100 0 0 100 numeric_to_char - ));
-DESCR("convert / formatting numeric to text");
+DESCR("format numeric to text");
DATA(insert OID = 1773 ( to_char PGUID 11 f t f 2 f 25 "23 25" 100 0 0 100 int4_to_char - ));
-DESCR("convert / formatting int4 to text");
+DESCR("format int4 to text");
DATA(insert OID = 1774 ( to_char PGUID 11 f t f 2 f 25 "20 25" 100 0 0 100 int8_to_char - ));
-DESCR("convert / formatting int8 to text");
+DESCR("format int8 to text");
DATA(insert OID = 1775 ( to_char PGUID 11 f t f 2 f 25 "700 25" 100 0 0 100 float4_to_char - ));
-DESCR("convert / formatting float4 to text");
+DESCR("format float4 to text");
DATA(insert OID = 1776 ( to_char PGUID 11 f t f 2 f 25 "701 25" 100 0 0 100 float8_to_char - ));
-DESCR("convert / formatting float8 to text");
+DESCR("format float8 to text");
DATA(insert OID = 1777 ( to_number PGUID 11 f t f 2 f 1700 "25 25" 100 0 0 100 numeric_to_number - ));
DESCR("convert text to numeric");
DATA(insert OID = 1778 ( to_timestamp PGUID 11 f t f 2 f 1184 "25 25" 100 0 0 100 to_timestamp - ));
@@ -2429,3 +2344,4 @@ extern Oid ProcedureCreate(char *procedureName,
#endif /* PG_PROC_H */
+
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index ae945a0f9bc..001f9070c9a 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pg_type.h,v 1.84 2000/02/27 12:02:34 wieck Exp $
+ * $Id: pg_type.h,v 1.85 2000/03/14 23:06:45 thomas Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@@ -377,6 +377,10 @@ DATA(insert OID = 1187 ( _interval PGUID -1 -1 f b t \054 0 1186 array_in array
/* OIDS 1200 - 1299 */
DATA(insert OID = 1231 ( _numeric PGUID -1 -1 f b t \054 0 1700 array_in array_out array_in array_out i _null_ ));
+DATA(insert OID = 1266 ( timetz PGUID 12 22 f b t \054 0 0 timetz_in timetz_out timetz_in timetz_out d _null_ ));
+DESCR("hh:mm:ss, ANSI SQL time");
+#define TIMETZOID 1266
+DATA(insert OID = 1270 ( _timetz PGUID -1 -1 f b t \054 0 1266 array_in array_out array_in array_out d _null_ ));
/* OIDS 1700 - 1799 */
DATA(insert OID = 1700 ( numeric PGUID -1 -1 f b t \054 0 0 numeric_in numeric_out numeric_in numeric_out i _null_ ));
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index e90b42c01e8..969d0c3bc6c 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: parsenodes.h,v 1.101 2000/03/01 05:18:18 tgl Exp $
+ * $Id: parsenodes.h,v 1.102 2000/03/14 23:06:47 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -614,6 +614,7 @@ typedef struct ViewStmt
{
NodeTag type;
char *viewname; /* name of the view */
+ List *aliases; /* target column names */
Query *query; /* the SQL statement */
} ViewStmt;
@@ -1131,6 +1132,12 @@ typedef struct TargetEntry
* Some of the following are only used in one of
* the parsing, optimizing, execution stages.
*
+ * eref is the expanded table name and columns for the underlying
+ * relation. Note that for outer join syntax, allowed reference names
+ * could be modified as one evaluates the nested clauses (e.g.
+ * "SELECT ... FROM t1 NATURAL JOIN t2 WHERE ..." forbids explicit mention
+ * of a table name in any reference to the join column.
+ *
* inFromCl marks those range variables that are listed in the FROM clause.
* In SQL, the query can only refer to range variables listed in the
* FROM clause, but POSTQUEL allows you to refer to tables not listed,
@@ -1157,9 +1164,8 @@ typedef struct RangeTblEntry
{
NodeTag type;
char *relname; /* real name of the relation */
-#ifndef DISABLE_JOIN_SYNTAX
Attr *ref; /* reference names (given in FROM clause) */
-#endif
+ Attr *eref; /* expanded reference names */
Oid relid; /* OID of the relation */
bool inh; /* inheritance requested? */
bool inFromCl; /* present in FROM clause */
diff --git a/src/include/parser/parse_coerce.h b/src/include/parser/parse_coerce.h
index 54107ef3b80..d0acd944e11 100644
--- a/src/include/parser/parse_coerce.h
+++ b/src/include/parser/parse_coerce.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: parse_coerce.h,v 1.18 2000/02/16 17:26:16 thomas Exp $
+ * $Id: parse_coerce.h,v 1.19 2000/03/14 23:06:48 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -53,6 +53,9 @@ typedef enum CATEGORY
|| ((t) == INTERVALOID) \
|| ((t) == ABSTIMEOID) \
|| ((t) == RELTIMEOID) \
+ || ((t) == DATEOID) \
+ || ((t) == TIMEOID) \
+ || ((t) == TIMETZOID) \
|| ((t) == CHAROID) \
|| ((t) == NAMEOID) \
|| ((t) == CASHOID) \
diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h
index ec3eda8629f..7e4ee5a560d 100644
--- a/src/include/utils/builtins.h
+++ b/src/include/utils/builtins.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: builtins.h,v 1.105 2000/02/27 12:02:34 wieck Exp $
+ * $Id: builtins.h,v 1.106 2000/03/14 23:06:50 thomas Exp $
*
* NOTES
* This should normally only be included by fmgr.h.
@@ -116,12 +116,14 @@ extern int32 int4pl(int32 arg1, int32 arg2);
extern int32 int4mi(int32 arg1, int32 arg2);
extern int32 int4mul(int32 arg1, int32 arg2);
extern int32 int4div(int32 arg1, int32 arg2);
+extern int32 int4abs(int32 arg);
extern int32 int4inc(int32 arg);
extern int16 int2um(int16 arg);
extern int16 int2pl(int16 arg1, int16 arg2);
extern int16 int2mi(int16 arg1, int16 arg2);
extern int16 int2mul(int16 arg1, int16 arg2);
extern int16 int2div(int16 arg1, int16 arg2);
+extern int16 int2abs(int16 arg);
extern int16 int2inc(int16 arg);
extern int32 int24pl(int32 arg1, int32 arg2);
extern int32 int24mi(int32 arg1, int32 arg2);
@@ -268,6 +270,7 @@ extern float64 dcbrt(float64 arg1);
extern float64 dpow(float64 arg1, float64 arg2);
extern float64 dexp(float64 arg1);
extern float64 dlog1(float64 arg1);
+extern float64 dlog10(float64 arg1);
extern float64 float48pl(float32 arg1, float64 arg2);
extern float64 float48mi(float32 arg1, float64 arg2);
extern float64 float48mul(float32 arg1, float64 arg2);
@@ -468,9 +471,11 @@ extern text *upper(text *string);
extern text *initcap(text *string);
extern text *lpad(text *string1, int4 len, text *string2);
extern text *rpad(text *string1, int4 len, text *string2);
+extern text *btrim(text *string, text *set);
extern text *ltrim(text *string, text *set);
extern text *rtrim(text *string, text *set);
-extern text *translate(text *string, char from, char to);
+extern text *substr(text *string, int4 m, int4 n);
+extern text *translate(text *string, text *from, text *to);
/* acl.c */
diff --git a/src/include/utils/date.h b/src/include/utils/date.h
index 003ee2e0265..b474634a384 100644
--- a/src/include/utils/date.h
+++ b/src/include/utils/date.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: date.h,v 1.1 2000/02/16 17:26:26 thomas Exp $
+ * $Id: date.h,v 1.2 2000/03/14 23:06:50 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -18,6 +18,12 @@ typedef int32 DateADT;
typedef float8 TimeADT;
+typedef struct
+{
+ double time; /* all time units other than months and years */
+ int4 zone; /* numeric time zone, in seconds */
+} TimeTzADT;
+
/* date.c */
extern DateADT date_in(char *datestr);
extern char *date_out(DateADT dateVal);
@@ -46,7 +52,31 @@ extern bool time_lt(TimeADT *time1, TimeADT *time2);
extern bool time_le(TimeADT *time1, TimeADT *time2);
extern bool time_gt(TimeADT *time1, TimeADT *time2);
extern bool time_ge(TimeADT *time1, TimeADT *time2);
-extern int time_cmp(TimeADT *time1, TimeADT *time2);
+extern int time_cmp(TimeADT *time1, TimeADT *time2);
+extern bool overlaps_time(TimeADT *time1, TimeADT *time2,
+ TimeADT *time3, TimeADT *time4);
+extern TimeADT *time_larger(TimeADT *time1, TimeADT *time2);
+extern TimeADT *time_smaller(TimeADT *time1, TimeADT *time2);
extern TimeADT *timestamp_time(Timestamp *timestamp);
+extern Interval *time_interval(TimeADT *time);
+
+extern TimeTzADT *timetz_in(char *timestr);
+extern char *timetz_out(TimeTzADT *time);
+extern bool timetz_eq(TimeTzADT *time1, TimeTzADT *time2);
+extern bool timetz_ne(TimeTzADT *time1, TimeTzADT *time2);
+extern bool timetz_lt(TimeTzADT *time1, TimeTzADT *time2);
+extern bool timetz_le(TimeTzADT *time1, TimeTzADT *time2);
+extern bool timetz_gt(TimeTzADT *time1, TimeTzADT *time2);
+extern bool timetz_ge(TimeTzADT *time1, TimeTzADT *time2);
+extern int timetz_cmp(TimeTzADT *time1, TimeTzADT *time2);
+extern bool overlaps_timetz(TimeTzADT *time1, TimeTzADT *time2,
+ TimeTzADT *time3, TimeTzADT *time4);
+extern TimeTzADT *timetz_larger(TimeTzADT *time1, TimeTzADT *time2);
+extern TimeTzADT *timetz_smaller(TimeTzADT *time1, TimeTzADT *time2);
+extern TimeTzADT *timestamp_timetz(Timestamp *timestamp);
+extern Timestamp *datetimetz_timestamp(DateADT date, TimeTzADT *time);
#endif /* DATE_H */
+
+
+
diff --git a/src/include/utils/datetime.h b/src/include/utils/datetime.h
index 3df9ddf19f0..e6469d46de5 100644
--- a/src/include/utils/datetime.h
+++ b/src/include/utils/datetime.h
@@ -9,7 +9,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: datetime.h,v 1.10 2000/02/16 17:26:26 thomas Exp $
+ * $Id: datetime.h,v 1.11 2000/03/14 23:06:50 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -21,32 +21,6 @@
#include <limits.h>
#include "utils/timestamp.h"
-#if 0
-
-
-/*
- * Timestamp represents absolute time.
- * TimeSpan represents delta time. Keep track of months (and years)
- * separately since the elapsed time spanned is unknown until instantiated
- * relative to an absolute time.
- *
- * Note that Postgres uses "time interval" to mean a bounded interval,
- * consisting of a beginning and ending time, not a time span - thomas 97/03/20
- */
-
-typedef double Timestamp;
-
-typedef struct
-{
- double time; /* all time units other than months and
- * years */
- int4 month; /* months and years, after time for
- * alignment */
-} TimeSpan;
-
-
-#endif
-
/* ----------------------------------------------------------------
* time types + support macros
@@ -209,74 +183,6 @@ typedef struct
} datetkn;
-#if 0
-
-
-#ifdef NAN
-#define TIMESTAMP_INVALID (NAN)
-#else
-#define TIMESTAMP_INVALID (DBL_MIN+DBL_MIN)
-#endif
-#ifdef HUGE_VAL
-#define TIMESTAMP_NOBEGIN (-HUGE_VAL)
-#define TIMESTAMP_NOEND (HUGE_VAL)
-#else
-#define TIMESTAMP_NOBEGIN (-DBL_MAX)
-#define TIMESTAMP_NOEND (DBL_MAX)
-#endif
-#define TIMESTAMP_CURRENT (DBL_MIN)
-#define TIMESTAMP_EPOCH (-DBL_MIN)
-
-#define TIMESTAMP_INVALID(j) {j = TIMESTAMP_INVALID;}
-#ifdef NAN
-#define TIMESTAMP_IS_INVALID(j) (isnan(j))
-#else
-#define TIMESTAMP_IS_INVALID(j) (j == TIMESTAMP_INVALID)
-#endif
-
-#define TIMESTAMP_NOBEGIN(j) {j = DT_NOBEGIN;}
-#define TIMESTAMP_IS_NOBEGIN(j) (j == TIMESTAMP_NOBEGIN)
-
-#define TIMESTAMP_NOEND(j) {j = TIMESTAMP_NOEND;}
-#define TIMESTAMP_IS_NOEND(j) (j == TIMESTAMP_NOEND)
-
-#define TIMESTAMP_CURRENT(j) {j = TIMESTAMP_CURRENT;}
-#if defined(linux) && defined(__powerpc__)
-extern int timestamp_is_current(double j);
-
-#define TIMESTAMP_IS_CURRENT(j) timestamp_is_current(j)
-#else
-#define TIMESTAMP_IS_CURRENT(j) (j == TIMESTAMP_CURRENT)
-#endif
-
-#define TIMESTAMP_EPOCH(j) {j = TIMESTAMP_EPOCH;}
-#if defined(linux) && defined(__powerpc__)
-extern int timestamp_is_epoch(double j);
-
-#define TIMESTAMP_IS_EPOCH(j) timestamp_is_epoch(j)
-#else
-#define TIMESTAMP_IS_EPOCH(j) (j == TIMESTAMP_EPOCH)
-#endif
-
-#define TIMESTAMP_IS_RELATIVE(j) (TIMESTAMP_IS_CURRENT(j) || TIMESTAMP_IS_EPOCH(j))
-#define TIMESTAMP_NOT_FINITE(j) (TIMESTAMP_IS_INVALID(j) \
- || TIMESTAMP_IS_NOBEGIN(j) || TIMESTAMP_IS_NOEND(j))
-#define TIMESTAMP_IS_RESERVED(j) (TIMESTAMP_IS_RELATIVE(j) || TIMESTAMP_NOT_FINITE(j))
-
-#define TIMESPAN_INVALID(j) {(j).time = DT_INVALID;}
-#ifdef NAN
-#define TIMESPAN_IS_INVALID(j) (isnan((j).time))
-#else
-#define TIMESPAN_IS_INVALID(j) ((j).time == DATETIME_INVALID)
-#endif
-#define TIMESPAN_NOT_FINITE(j) TIMESPAN_IS_INVALID(j)
-
-#define TIME_PREC_INV 1000000.0
-#define JROUND(j) (rint(((double) (j))*TIME_PREC_INV)/TIME_PREC_INV)
-
-
-#endif
-
/* TMODULO()
* Macro to replace modf(), which is broken on some platforms.
*/
@@ -325,63 +231,6 @@ extern int day_tab[2][13];
|| ((m == UTIME_MAXMONTH) && (d <= UTIME_MAXDAY))))))
-#if 0
-
-
-/*
- * datetime.c prototypes
- */
-
-extern DateTime *datetime_in(char *str);
-extern char *datetime_out(DateTime *dt);
-extern bool datetime_eq(DateTime *dt1, DateTime *dt2);
-extern bool datetime_ne(DateTime *dt1, DateTime *dt2);
-extern bool datetime_lt(DateTime *dt1, DateTime *dt2);
-extern bool datetime_le(DateTime *dt1, DateTime *dt2);
-extern bool datetime_ge(DateTime *dt1, DateTime *dt2);
-extern bool datetime_gt(DateTime *dt1, DateTime *dt2);
-extern bool datetime_finite(DateTime *datetime);
-extern int datetime_cmp(DateTime *dt1, DateTime *dt2);
-extern DateTime *datetime_smaller(DateTime *dt1, DateTime *dt2);
-extern DateTime *datetime_larger(DateTime *dt1, DateTime *dt2);
-
-extern TimeSpan *timespan_in(char *str);
-extern char *timespan_out(TimeSpan *span);
-extern bool timespan_eq(TimeSpan *span1, TimeSpan *span2);
-extern bool timespan_ne(TimeSpan *span1, TimeSpan *span2);
-extern bool timespan_lt(TimeSpan *span1, TimeSpan *span2);
-extern bool timespan_le(TimeSpan *span1, TimeSpan *span2);
-extern bool timespan_ge(TimeSpan *span1, TimeSpan *span2);
-extern bool timespan_gt(TimeSpan *span1, TimeSpan *span2);
-extern bool timespan_finite(TimeSpan *span);
-extern int timespan_cmp(TimeSpan *span1, TimeSpan *span2);
-extern TimeSpan *timespan_smaller(TimeSpan *span1, TimeSpan *span2);
-extern TimeSpan *timespan_larger(TimeSpan *span1, TimeSpan *span2);
-
-extern text *datetime_text(DateTime *datetime);
-extern DateTime *text_datetime(text *str);
-extern text *timespan_text(TimeSpan *timespan);
-extern TimeSpan *text_timespan(text *str);
-extern DateTime *datetime_trunc(text *units, DateTime *datetime);
-extern TimeSpan *timespan_trunc(text *units, TimeSpan *timespan);
-extern float64 datetime_part(text *units, DateTime *datetime);
-extern float64 timespan_part(text *units, TimeSpan *timespan);
-extern text *datetime_zone(text *zone, DateTime *datetime);
-
-extern TimeSpan *timespan_um(TimeSpan *span);
-extern TimeSpan *timespan_pl(TimeSpan *span1, TimeSpan *span2);
-extern TimeSpan *timespan_mi(TimeSpan *span1, TimeSpan *span2);
-extern TimeSpan *timespan_div(TimeSpan *span1, float8 *arg2);
-
-extern TimeSpan *datetime_mi(DateTime *dt1, DateTime *dt2);
-extern DateTime *datetime_pl_span(DateTime *dt, TimeSpan *span);
-extern DateTime *datetime_mi_span(DateTime *dt, TimeSpan *span);
-extern TimeSpan *datetime_age(DateTime *dt1, DateTime *dt2);
-
-
-#endif
-
-
extern void GetCurrentTime(struct tm * tm);
extern void j2date(int jd, int *year, int *month, int *day);
extern int date2j(int year, int month, int day);
@@ -393,15 +242,16 @@ extern int DecodeDateTime(char **field, int *ftype,
int nf, int *dtype,
struct tm * tm, double *fsec, int *tzp);
-extern int DecodeTimeOnly(char **field, int *ftype, int nf,
- int *dtype, struct tm * tm, double *fsec);
+extern int DecodeTimeOnly(char **field, int *ftype,
+ int nf, int *dtype,
+ struct tm * tm, double *fsec, int *tzp);
extern int DecodeDateDelta(char **field, int *ftype,
int nf, int *dtype,
struct tm * tm, double *fsec);
extern int EncodeDateOnly(struct tm * tm, int style, char *str);
-extern int EncodeTimeOnly(struct tm * tm, double fsec, int style, char *str);
+extern int EncodeTimeOnly(struct tm * tm, double fsec, int *tzp, int style, char *str);
extern int EncodeDateTime(struct tm * tm, double fsec, int *tzp, char **tzn, int style, char *str);
extern int EncodeTimeSpan(struct tm * tm, double fsec, int style, char *str);
@@ -421,18 +271,4 @@ extern datetkn *datebsearch(char *key, datetkn *base, unsigned int nel);
extern int j2day(int jd);
-
-#if 0
-
-
-static int EncodeSpecialTimestamp(Timestamp dt, char *str);
-static Timestamp dt2local(Timestamp dt, int timezone);
-static void dt2time(Timestamp dt, int *hour, int *min, double *sec);
-static int timespan2tm(TimeSpan span, struct tm * tm, float8 *fsec);
-static int tm2timespan(struct tm * tm, double fsec, TimeSpan *span);
-
-
-#endif
-
-
#endif /* DATETIME_H */
diff --git a/src/include/utils/geo_decls.h b/src/include/utils/geo_decls.h
index 50745f9008b..6d8869802c0 100644
--- a/src/include/utils/geo_decls.h
+++ b/src/include/utils/geo_decls.h
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: geo_decls.h,v 1.25 2000/02/17 03:39:51 tgl Exp $
+ * $Id: geo_decls.h,v 1.26 2000/03/14 23:06:50 thomas Exp $
*
* NOTE
* These routines do *not* use the float types from adt/.
@@ -284,8 +284,6 @@ extern PATH *path_add_pt(PATH *path, Point *point);
extern PATH *path_sub_pt(PATH *path, Point *point);
extern PATH *path_mul_pt(PATH *path, Point *point);
extern PATH *path_div_pt(PATH *path, Point *point);
-extern bool path_contain_pt(PATH *path, Point *p);
-extern bool pt_contained_path(Point *p, PATH *path);
extern Point *path_center(PATH *path);
extern POLYGON *path_poly(PATH *path);
diff --git a/src/include/utils/int8.h b/src/include/utils/int8.h
index e4e4f04b19c..02053d6c393 100644
--- a/src/include/utils/int8.h
+++ b/src/include/utils/int8.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: int8.h,v 1.18 2000/02/21 03:36:59 tgl Exp $
+ * $Id: int8.h,v 1.19 2000/03/14 23:06:50 thomas Exp $
*
* NOTES
* These data types are supported on all 64-bit architectures, and may
@@ -76,6 +76,9 @@ extern int64 *int8pl(int64 *val1, int64 *val2);
extern int64 *int8mi(int64 *val1, int64 *val2);
extern int64 *int8mul(int64 *val1, int64 *val2);
extern int64 *int8div(int64 *val1, int64 *val2);
+extern int64 *int8abs(int64 *val1);
+extern int64 *int8fac(int64 *val1);
+extern int64 *int8mod(int64 *val1, int64 *val2);
extern int64 *int8larger(int64 *val1, int64 *val2);
extern int64 *int8smaller(int64 *val1, int64 *val2);
diff --git a/src/include/utils/timestamp.h b/src/include/utils/timestamp.h
index 27a5288cf39..22f304dff24 100644
--- a/src/include/utils/timestamp.h
+++ b/src/include/utils/timestamp.h
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: timestamp.h,v 1.1 2000/02/16 17:26:26 thomas Exp $
+ * $Id: timestamp.h,v 1.2 2000/03/14 23:06:51 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -31,10 +31,8 @@ typedef double Timestamp;
typedef struct
{
- double time; /* all time units other than months and
- * years */
- int4 month; /* months and years, after time for
- * alignment */
+ double time; /* all time units other than months and years */
+ int4 month; /* months and years, after time for alignment */
} Interval;
@@ -101,49 +99,6 @@ extern int timestamp_is_epoch(double j);
#define JROUND(j) (rint(((double) (j))*TIME_PREC_INV)/TIME_PREC_INV)
-#if 0
-
-
-/*
- * Date/time validation
- * Include check for leap year.
- */
-
-extern int day_tab[2][13];
-
-#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
-
-/* Julian date support for date2j() and j2date()
- * Set the minimum year to one greater than the year of the first valid day
- * to avoid having to check year and day both. - tgl 97/05/08
- */
-
-#define JULIAN_MINYEAR (-4713)
-#define JULIAN_MINMONTH (11)
-#define JULIAN_MINDAY (23)
-
-#define IS_VALID_JULIAN(y,m,d) ((y > JULIAN_MINYEAR) \
- || ((y == JULIAN_MINYEAR) && ((m > JULIAN_MINMONTH) \
- || ((m == JULIAN_MINMONTH) && (d >= JULIAN_MINDAY)))))
-
-#define UTIME_MINYEAR (1901)
-#define UTIME_MINMONTH (12)
-#define UTIME_MINDAY (14)
-#define UTIME_MAXYEAR (2038)
-#define UTIME_MAXMONTH (01)
-#define UTIME_MAXDAY (18)
-
-#define IS_VALID_UTIME(y,m,d) (((y > UTIME_MINYEAR) \
- || ((y == UTIME_MINYEAR) && ((m > UTIME_MINMONTH) \
- || ((m == UTIME_MINMONTH) && (d >= UTIME_MINDAY))))) \
- && ((y < UTIME_MAXYEAR) \
- || ((y == UTIME_MAXYEAR) && ((m < UTIME_MAXMONTH) \
- || ((m == UTIME_MAXMONTH) && (d <= UTIME_MAXDAY))))))
-
-
-#endif
-
-
/*
* timestamp.c prototypes
*/
@@ -193,9 +148,10 @@ extern Interval *timestamp_mi(Timestamp *dt1, Timestamp *dt2);
extern Timestamp *timestamp_pl_span(Timestamp *dt, Interval *span);
extern Timestamp *timestamp_mi_span(Timestamp *dt, Interval *span);
extern Interval *timestamp_age(Timestamp *dt1, Timestamp *dt2);
+extern bool overlaps_timestamp(Timestamp *dt1, Timestamp *dt2, Timestamp *dt3, Timestamp *dt4);
-extern int tm2timestamp(struct tm * tm, double fsec, int *tzp, Timestamp *dt);
-extern int timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, double *fsec, char **tzn);
+extern int tm2timestamp(struct tm * tm, double fsec, int *tzp, Timestamp *dt);
+extern int timestamp2tm(Timestamp dt, int *tzp, struct tm * tm, double *fsec, char **tzn);
extern Timestamp SetTimestamp(Timestamp timestamp);
extern Timestamp dt2local(Timestamp dt, int timezone);
diff --git a/src/test/regress/expected/alter_table.out b/src/test/regress/expected/alter_table.out
index 6ef19f56cf6..80010b965bd 100644
--- a/src/test/regress/expected/alter_table.out
+++ b/src/test/regress/expected/alter_table.out
@@ -291,5 +291,7 @@ DELETE FROM tmp3 where a=5;
-- Try (and succeed)
ALTER TABLE tmp3 add constraint tmpconstr foreign key (a) references tmp2 match full;
NOTICE: ALTER TABLE ... ADD CONSTRAINT will create implicit trigger(s) for FOREIGN KEY check(s)
-DROP TABLE tmp3
-DROP TABLE tmp2
+DROP TABLE tmp3;
+NOTICE: DROP TABLE implicitly drops referential integrity trigger from table "tmp2"
+NOTICE: DROP TABLE implicitly drops referential integrity trigger from table "tmp2"
+DROP TABLE tmp2;
diff --git a/src/test/regress/expected/box.out b/src/test/regress/expected/box.out
index 6631da3ccea..e0276d6f69f 100644
--- a/src/test/regress/expected/box.out
+++ b/src/test/regress/expected/box.out
@@ -36,7 +36,7 @@ SELECT '' AS four, BOX_TBL.*;
| (3,3),(3,3)
(4 rows)
-SELECT '' AS four, b.*, box_area(b.f1) as barea
+SELECT '' AS four, b.*, area(b.f1) as barea
FROM BOX_TBL b;
four | f1 | barea
------+---------------------+-------
diff --git a/src/test/regress/expected/errors.out b/src/test/regress/expected/errors.out
index 16771a4530c..8332d4d8949 100644
--- a/src/test/regress/expected/errors.out
+++ b/src/test/regress/expected/errors.out
@@ -40,7 +40,7 @@ ERROR: Attribute 'foobar' not found
-- missing relation name (this had better not wildcard!)
delete from;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- no such relation
delete from nonesuch;
ERROR: Relation 'nonesuch' does not exist
@@ -49,7 +49,7 @@ ERROR: Relation 'nonesuch' does not exist
-- missing relation name (this had better not wildcard!)
drop table;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- no such relation
drop table nonesuch;
ERROR: Relation 'nonesuch' does not exist
@@ -59,7 +59,7 @@ ERROR: Relation 'nonesuch' does not exist
-- relation renaming
-- missing relation name
alter table rename;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- no such relation
alter table nonesuch rename to newnonesuch;
ERROR: Relation 'nonesuch' does not exist
@@ -144,7 +144,7 @@ ERROR: AggregateCreate: transition function 2 MUST have an initial value
-- missing index name
drop index;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- bad index name
drop index 314159;
ERROR: parser: parse error at or near "314159"
@@ -156,16 +156,16 @@ ERROR: index "nonesuch" nonexistent
-- missing aggregate name
drop aggregate;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- bad aggregate name
drop aggregate 314159;
ERROR: parser: parse error at or near "314159"
-- no such aggregate
drop aggregate nonesuch;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- missing aggregate type
drop aggregate newcnt1;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- bad aggregate type
drop aggregate newcnt nonesuch;
ERROR: RemoveAggregate: type 'nonesuch' does not exist
@@ -189,7 +189,7 @@ ERROR: RemoveFunction: function 'nonesuch()' does not exist
-- missing type name
drop type;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- bad type name
drop type 314159;
ERROR: parser: parse error at or near "314159"
@@ -201,13 +201,13 @@ ERROR: RemoveType: type 'nonesuch' does not exist
-- missing everything
drop operator;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- bad operator name
drop operator equals;
ERROR: parser: parse error at or near "equals"
-- missing type list
drop operator ===;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- missing parentheses
drop operator int4, int4;
ERROR: parser: parse error at or near "int4"
@@ -243,7 +243,7 @@ ERROR: parser: parse error at or near ")"
-- missing rule name
drop rule;
-ERROR: parser: parse error at or near ""
+ERROR: parser: parse error at or near ";"
-- bad rule name
drop rule 314159;
ERROR: parser: parse error at or near "314159"
diff --git a/src/test/regress/expected/float8.out b/src/test/regress/expected/float8.out
index fc7b3779d70..d4679d663ae 100644
--- a/src/test/regress/expected/float8.out
+++ b/src/test/regress/expected/float8.out
@@ -149,7 +149,19 @@ SELECT '' AS five, f.f1, f.f1 % AS round_f1
| 1.2345678901234e-200 | 0
(5 rows)
+SELECT sqrt(float8 '64') AS eight;
+ eight
+-------
+ 8
+(1 row)
+
-- square root
+SELECT |/ float8 '64' AS eight;
+ eight
+-------
+ 8
+(1 row)
+
SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1
FROM FLOAT8_TBL f
WHERE f.f1 > '0.0';
@@ -172,6 +184,12 @@ SELECT '' AS three, f.f1, : ( ; f.f1) AS exp_ln_f1
(3 rows)
-- cube root
+SELECT ||/ float8 '27' AS three;
+ three
+-------
+ 3
+(1 row)
+
SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
five | f1 | cbrt_f1
------+----------------------+----------------------
@@ -217,7 +235,7 @@ SELECT '' AS five, FLOAT8_TBL.*;
| -1.2345678901234e-200
(5 rows)
--- test for over and under flow
+-- test for over- and underflow
INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
ERROR: Input '10e400' is out of range for float8
INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
diff --git a/src/test/regress/expected/geometry.out b/src/test/regress/expected/geometry.out
index 2ca15d31317..6fe945f913b 100644
--- a/src/test/regress/expected/geometry.out
+++ b/src/test/regress/expected/geometry.out
@@ -150,11 +150,11 @@ SELECT '' as six, box(f1) AS box FROM CIRCLE_TBL;
six | box
-----+----------------------------------------------------------------------------
| (2.12132034355964,2.12132034355964),(-2.12132034355964,-2.12132034355964)
- | (71.7106781186547,72.7106781186547),(-69.7106781186547,-68.7106781186547)
- | (4.53553390593274,6.53553390593274),(-2.53553390593274,-0.535533905932737)
+ | (71.7106781186548,72.7106781186548),(-69.7106781186548,-68.7106781186548)
+ | (4.53553390593274,6.53553390593274),(-2.53553390593274,-0.535533905932738)
| (3.12132034355964,4.12132034355964),(-1.12132034355964,-0.121320343559642)
| (107.071067811865,207.071067811865),(92.9289321881345,192.928932188135)
- | (170.710678118655,70.7106781186547),(29.2893218813453,-70.7106781186547)
+ | (170.710678118655,70.7106781186548),(29.2893218813452,-70.7106781186548)
(6 rows)
-- translation
@@ -280,7 +280,7 @@ SELECT '' AS twenty, b.f1 / p.f1 AS rotation
-- Paths
--
SET geqo TO 'off';
-SELECT '' AS eight, points(f1) AS npoints, f1 AS path FROM PATH_TBL;
+SELECT '' AS eight, npoints(f1) AS npoints, f1 AS path FROM PATH_TBL;
eight | npoints | path
-------+---------+---------------------------
| 2 | [(1,2),(3,4)]
@@ -397,7 +397,7 @@ SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 @ poly.f1 AS contained
| (10,10) | ((0,1),(0,1)) | f
(24 rows)
-SELECT '' AS four, points(f1) AS npoints, f1 AS polygon
+SELECT '' AS four, npoints(f1) AS npoints, f1 AS polygon
FROM POLYGON_TBL;
four | npoints | polygon
------+---------+---------------------
@@ -502,31 +502,31 @@ SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS d
FROM CIRCLE_TBL c1, POINT_TBL p1
WHERE (p1.f1 <-> c1.f1) > 0
ORDER BY distance, circle, point using <<;
- twentyfour | circle | point | distance
-------------+----------------+------------+------------------
- | <(100,0),100> | (5.1,34.5) | 0.97653192697797
- | <(1,2),3> | (-3,4) | 1.47213595499958
- | <(0,0),3> | (-3,4) | 2
- | <(100,0),100> | (-3,4) | 3.07764064044152
- | <(100,0),100> | (-5,-12) | 5.68348972285122
- | <(1,3),5> | (-10,0) | 6.40175425099138
- | <(1,3),5> | (10,10) | 6.40175425099138
- | <(0,0),3> | (-10,0) | 7
- | <(1,2),3> | (-10,0) | 8.18033988749895
- | <(1,2),3> | (10,10) | 9.0415945787923
- | <(0,0),3> | (-5,-12) | 10
- | <(100,0),100> | (-10,0) | 10
- | <(0,0),3> | (10,10) | 11.142135623731
- | <(1,3),5> | (-5,-12) | 11.1554944214035
- | <(1,2),3> | (-5,-12) | 12.2315462117278
- | <(1,3),5> | (5.1,34.5) | 26.7657047773223
- | <(1,2),3> | (5.1,34.5) | 29.757594539282
- | <(0,0),3> | (5.1,34.5) | 31.8749193547455
- | <(100,200),10> | (5.1,34.5) | 180.778038568384
- | <(100,200),10> | (10,10) | 200.237960416286
- | <(100,200),10> | (-3,4) | 211.415898254845
- | <(100,200),10> | (0,0) | 213.606797749979
- | <(100,200),10> | (-10,0) | 218.254244210267
- | <(100,200),10> | (-5,-12) | 226.577682802077
+ twentyfour | circle | point | distance
+------------+----------------+------------+-------------------
+ | <(100,0),100> | (5.1,34.5) | 0.976531926977965
+ | <(1,2),3> | (-3,4) | 1.47213595499958
+ | <(0,0),3> | (-3,4) | 2
+ | <(100,0),100> | (-3,4) | 3.07764064044151
+ | <(100,0),100> | (-5,-12) | 5.68348972285122
+ | <(1,3),5> | (-10,0) | 6.40175425099138
+ | <(1,3),5> | (10,10) | 6.40175425099138
+ | <(0,0),3> | (-10,0) | 7
+ | <(1,2),3> | (-10,0) | 8.18033988749895
+ | <(1,2),3> | (10,10) | 9.0415945787923
+ | <(0,0),3> | (-5,-12) | 10
+ | <(100,0),100> | (-10,0) | 10
+ | <(0,0),3> | (10,10) | 11.142135623731
+ | <(1,3),5> | (-5,-12) | 11.1554944214035
+ | <(1,2),3> | (-5,-12) | 12.2315462117278
+ | <(1,3),5> | (5.1,34.5) | 26.7657047773223
+ | <(1,2),3> | (5.1,34.5) | 29.757594539282
+ | <(0,0),3> | (5.1,34.5) | 31.8749193547455
+ | <(100,200),10> | (5.1,34.5) | 180.778038568384
+ | <(100,200),10> | (10,10) | 200.237960416286
+ | <(100,200),10> | (-3,4) | 211.415898254845
+ | <(100,200),10> | (0,0) | 213.606797749979
+ | <(100,200),10> | (-10,0) | 218.254244210267
+ | <(100,200),10> | (-5,-12) | 226.577682802077
(24 rows)
diff --git a/src/test/regress/expected/int4.out b/src/test/regress/expected/int4.out
index 9a0205b5408..99522ab188e 100644
--- a/src/test/regress/expected/int4.out
+++ b/src/test/regress/expected/int4.out
@@ -295,21 +295,3 @@ SELECT (2 + 2) / 2 AS two;
2
(1 row)
-SELECT dsqrt(float8 '64') AS eight;
- eight
--------
- 8
-(1 row)
-
-SELECT |/float8 '64' AS eight;
- eight
--------
- 8
-(1 row)
-
-SELECT ||/float8 '27' AS three;
- three
--------
- 3
-(1 row)
-
diff --git a/src/test/regress/expected/numeric.out b/src/test/regress/expected/numeric.out
index 35ec4557548..825a0fcafe4 100644
--- a/src/test/regress/expected/numeric.out
+++ b/src/test/regress/expected/numeric.out
@@ -646,10 +646,10 @@ SELECT t1.id1, t1.result, t2.expected
(0 rows)
-- ******************************
--- * POWER(10, LN(value)) check
+-- * POW(10, LN(value)) check
-- ******************************
DELETE FROM num_result;
-INSERT INTO num_result SELECT id, 0, POWER(numeric '10', LN(ABS(round(val,200))))
+INSERT INTO num_result SELECT id, 0, POW(numeric '10', LN(ABS(round(val,200))))
FROM num_data
WHERE val != '0.0';
SELECT t1.id1, t1.result, t2.expected
diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out
index ac20f3ee777..ab332b49e68 100644
--- a/src/test/regress/expected/rules.out
+++ b/src/test/regress/expected/rules.out
@@ -1147,27 +1147,27 @@ SELECT * FROM shoelace ORDER BY sl_name;
-- Check that ruleutils are working
--
SELECT viewname, definition FROM pg_views ORDER BY viewname;
- viewname | definition
---------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- iexit | SELECT ih.name, ih.thepath, interpt_pp(ih.thepath, r.thepath) AS exit FROM ihighway ih (name, thepath), ramp r (name, thepath) WHERE (ih.thepath ## r.thepath);
- pg_indexes | SELECT c.relname AS tablename, i.relname AS indexname, pg_get_indexdef(x.indexrelid) AS indexdef FROM pg_index x (indexrelid, indrelid, indproc, indkey, indclass, indisclustered, indislossy, indhaskeytype, indisunique, indisprimary, indreference, indpred), pg_class c (relname, reltype, relowner, relam, relpages, reltuples, rellongrelid, relhasindex, relisshared, relkind, relnatts, relchecks, reltriggers, relukeys, relfkeys, relrefs, relhaspkey, relhasrules, relacl), pg_class i (relname, reltype, relowner, relam, relpages, reltuples, rellongrelid, relhasindex, relisshared, relkind, relnatts, relchecks, reltriggers, relukeys, relfkeys, relrefs, relhaspkey, relhasrules, relacl) WHERE ((c.oid = x.indrelid) AND (i.oid = x.indexrelid));
- pg_rules | SELECT c.relname AS tablename, r.rulename, pg_get_ruledef(r.rulename) AS definition FROM pg_rewrite r (rulename, ev_type, ev_class, ev_attr, is_instead, ev_qual, ev_action), pg_class c (relname, reltype, relowner, relam, relpages, reltuples, rellongrelid, relhasindex, relisshared, relkind, relnatts, relchecks, reltriggers, relukeys, relfkeys, relrefs, relhaspkey, relhasrules, relacl) WHERE ((r.rulename !~ '^_RET'::text) AND (c.oid = r.ev_class));
- pg_tables | SELECT c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, c.relhasindex AS hasindexes, c.relhasrules AS hasrules, (c.reltriggers > 0) AS hastriggers FROM pg_class c (relname, reltype, relowner, relam, relpages, reltuples, rellongrelid, relhasindex, relisshared, relkind, relnatts, relchecks, reltriggers, relukeys, relfkeys, relrefs, relhaspkey, relhasrules, relacl) WHERE (((c.relkind = 'r'::"char") OR (c.relkind = 's'::"char")) AND (NOT (EXISTS (SELECT pg_rewrite.rulename FROM pg_rewrite WHERE ((pg_rewrite.ev_class = c.oid) AND (pg_rewrite.ev_type = '1'::"char"))))));
+ viewname | definition
+--------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ iexit | SELECT ih.name, ih.thepath, interpt_pp(ih.thepath, r.thepath) AS exit FROM ihighway ih, ramp r WHERE (ih.thepath ## r.thepath);
+ pg_indexes | SELECT c.relname AS tablename, i.relname AS indexname, pg_get_indexdef(x.indexrelid) AS indexdef FROM pg_index x, pg_class c, pg_class i WHERE ((c.oid = x.indrelid) AND (i.oid = x.indexrelid));
+ pg_rules | SELECT c.relname AS tablename, r.rulename, pg_get_ruledef(r.rulename) AS definition FROM pg_rewrite r, pg_class c WHERE ((r.rulename !~ '^_RET'::text) AND (c.oid = r.ev_class));
+ pg_tables | SELECT c.relname AS tablename, pg_get_userbyid(c.relowner) AS tableowner, c.relhasindex AS hasindexes, c.relhasrules AS hasrules, (c.reltriggers > 0) AS hastriggers FROM pg_class c WHERE (((c.relkind = 'r'::"char") OR (c.relkind = 's'::"char")) AND (NOT (EXISTS (SELECT pg_rewrite.rulename FROM pg_rewrite WHERE ((pg_rewrite.ev_class = c.oid) AND (pg_rewrite.ev_type = '1'::"char"))))));
pg_user | SELECT pg_shadow.usename, pg_shadow.usesysid, pg_shadow.usecreatedb, pg_shadow.usetrace, pg_shadow.usesuper, pg_shadow.usecatupd, '********'::text AS passwd, pg_shadow.valuntil FROM pg_shadow;
- pg_views | SELECT c.relname AS viewname, pg_get_userbyid(c.relowner) AS viewowner, pg_get_viewdef(c.relname) AS definition FROM pg_class c (relname, reltype, relowner, relam, relpages, reltuples, rellongrelid, relhasindex, relisshared, relkind, relnatts, relchecks, reltriggers, relukeys, relfkeys, relrefs, relhaspkey, relhasrules, relacl) WHERE (c.relhasrules AND (EXISTS (SELECT r.rulename FROM pg_rewrite r (rulename, ev_type, ev_class, ev_attr, is_instead, ev_qual, ev_action) WHERE ((r.ev_class = c.oid) AND (r.ev_type = '1'::"char")))));
+ pg_views | SELECT c.relname AS viewname, pg_get_userbyid(c.relowner) AS viewowner, pg_get_viewdef(c.relname) AS definition FROM pg_class c WHERE (c.relhasrules AND (EXISTS (SELECT r.rulename FROM pg_rewrite r WHERE ((r.ev_class = c.oid) AND (r.ev_type = '1'::"char")))));
rtest_v1 | SELECT rtest_t1.a, rtest_t1.b FROM rtest_t1;
- rtest_vcomp | SELECT x.part, (x.size * y.factor) AS size_in_cm FROM rtest_comp x (part, unit, size), rtest_unitfact y (unit, factor) WHERE (x.unit = y.unit);
- rtest_vview1 | SELECT x.a, x.b FROM rtest_view1 x (a, b, v) WHERE (0 < (SELECT count(*) AS count FROM rtest_view2 y (a) WHERE (y.a = x.a)));
+ rtest_vcomp | SELECT x.part, (x.size * y.factor) AS size_in_cm FROM rtest_comp x, rtest_unitfact y WHERE (x.unit = y.unit);
+ rtest_vview1 | SELECT x.a, x.b FROM rtest_view1 x WHERE (0 < (SELECT count(*) AS count FROM rtest_view2 y WHERE (y.a = x.a)));
rtest_vview2 | SELECT rtest_view1.a, rtest_view1.b FROM rtest_view1 WHERE rtest_view1.v;
- rtest_vview3 | SELECT x.a, x.b FROM rtest_vview2 x (a, b) WHERE (0 < (SELECT count(*) AS count FROM rtest_view2 y (a) WHERE (y.a = x.a)));
- rtest_vview4 | SELECT x.a, x.b, count(y.a) AS refcount FROM rtest_view1 x (a, b, v), rtest_view2 y (a) WHERE (x.a = y.a) GROUP BY x.a, x.b;
+ rtest_vview3 | SELECT x.a, x.b FROM rtest_vview2 x WHERE (0 < (SELECT count(*) AS count FROM rtest_view2 y WHERE (y.a = x.a)));
+ rtest_vview4 | SELECT x.a, x.b, count(y.a) AS refcount FROM rtest_view1 x, rtest_view2 y WHERE (x.a = y.a) GROUP BY x.a, x.b;
rtest_vview5 | SELECT rtest_view1.a, rtest_view1.b, rtest_viewfunc1(rtest_view1.a) AS refcount FROM rtest_view1;
- shoe | SELECT sh.shoename, sh.sh_avail, sh.slcolor, sh.slminlen, (sh.slminlen * un.un_fact) AS slminlen_cm, sh.slmaxlen, (sh.slmaxlen * un.un_fact) AS slmaxlen_cm, sh.slunit FROM shoe_data sh (shoename, sh_avail, slcolor, slminlen, slmaxlen, slunit), unit un (un_name, un_fact) WHERE (sh.slunit = un.un_name);
- shoe_ready | SELECT rsh.shoename, rsh.sh_avail, rsl.sl_name, rsl.sl_avail, int4smaller(rsh.sh_avail, rsl.sl_avail) AS total_avail FROM shoe rsh (shoename, sh_avail, slcolor, slminlen, slminlen_cm, slmaxlen, slmaxlen_cm, slunit), shoelace rsl (sl_name, sl_avail, sl_color, sl_len, sl_unit, sl_len_cm) WHERE (((rsl.sl_color = rsh.slcolor) AND (rsl.sl_len_cm >= rsh.slminlen_cm)) AND (rsl.sl_len_cm <= rsh.slmaxlen_cm));
- shoelace | SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, (s.sl_len * u.un_fact) AS sl_len_cm FROM shoelace_data s (sl_name, sl_avail, sl_color, sl_len, sl_unit), unit u (un_name, un_fact) WHERE (s.sl_unit = u.un_name);
+ shoe | SELECT sh.shoename, sh.sh_avail, sh.slcolor, sh.slminlen, (sh.slminlen * un.un_fact) AS slminlen_cm, sh.slmaxlen, (sh.slmaxlen * un.un_fact) AS slmaxlen_cm, sh.slunit FROM shoe_data sh, unit un WHERE (sh.slunit = un.un_name);
+ shoe_ready | SELECT rsh.shoename, rsh.sh_avail, rsl.sl_name, rsl.sl_avail, int4smaller(rsh.sh_avail, rsl.sl_avail) AS total_avail FROM shoe rsh, shoelace rsl WHERE (((rsl.sl_color = rsh.slcolor) AND (rsl.sl_len_cm >= rsh.slminlen_cm)) AND (rsl.sl_len_cm <= rsh.slmaxlen_cm));
+ shoelace | SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, (s.sl_len * u.un_fact) AS sl_len_cm FROM shoelace_data s, unit u WHERE (s.sl_unit = u.un_name);
shoelace_candelete | SELECT shoelace_obsolete.sl_name, shoelace_obsolete.sl_avail, shoelace_obsolete.sl_color, shoelace_obsolete.sl_len, shoelace_obsolete.sl_unit, shoelace_obsolete.sl_len_cm FROM shoelace_obsolete WHERE (shoelace_obsolete.sl_avail = 0);
shoelace_obsolete | SELECT shoelace.sl_name, shoelace.sl_avail, shoelace.sl_color, shoelace.sl_len, shoelace.sl_unit, shoelace.sl_len_cm FROM shoelace WHERE (NOT (EXISTS (SELECT shoe.shoename FROM shoe WHERE (shoe.slcolor = shoelace.sl_color))));
- street | SELECT r.name, r.thepath, c.cname FROM road r (name, thepath), real_city c (pop, cname, outline) WHERE (c.outline ## r.thepath);
+ street | SELECT r.name, r.thepath, c.cname FROM road r, real_city c WHERE (c.outline ## r.thepath);
toyemp | SELECT emp.name, emp.age, emp."location", (12 * emp.salary) AS annualsal FROM emp;
(20 rows)
diff --git a/src/test/regress/expected/timestamp.out b/src/test/regress/expected/timestamp.out
index efe704a5698..8ac97f1cb5d 100644
--- a/src/test/regress/expected/timestamp.out
+++ b/src/test/regress/expected/timestamp.out
@@ -3,7 +3,7 @@
--
-- Shorthand values
-- Not directly usable for regression testing since these are not constants.
--- So, just try to test parser and hope for the best - tgl 97/04/26
+-- So, just try to test parser and hope for the best - thomas 97/04/26
SELECT (timestamp 'today' = (timestamp 'yesterday' + interval '1 day')) as "True";
True
------
@@ -34,13 +34,25 @@ SELECT (timestamp 'now' - 'current') AS "ZeroSecs";
@ 0
(1 row)
-SET DateStyle = 'Postgres,noneuropean';
-SELECT timestamp('1994-01-01', '11:00') AS "Jan_01_1994_11am";
+SET DateStyle = 'Postgres,NonEuropean';
+SELECT timestamp(date '1994-01-01', time '11:00') AS "Jan_01_1994_11am";
Jan_01_1994_11am
------------------------------
Sat Jan 01 11:00:00 1994 PST
(1 row)
+SELECT timestamp(date '1994-01-01', time '10:00') AS "Jan_01_1994_10am";
+ Jan_01_1994_10am
+------------------------------
+ Sat Jan 01 10:00:00 1994 PST
+(1 row)
+
+SELECT timestamp(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_8am";
+ Jan_01_1994_8am
+------------------------------
+ Sat Jan 01 08:00:00 1994 PST
+(1 row)
+
CREATE TABLE TIMESTAMP_TBL ( d1 timestamp);
INSERT INTO TIMESTAMP_TBL VALUES ('current');
INSERT INTO TIMESTAMP_TBL VALUES ('today');
diff --git a/src/test/regress/regress.sh b/src/test/regress/regress.sh
index 3e422be9c5f..cf5dc2409cd 100755
--- a/src/test/regress/regress.sh
+++ b/src/test/regress/regress.sh
@@ -1,8 +1,7 @@
#!/bin/sh
-# $Header: /cvsroot/pgsql/src/test/regress/Attic/regress.sh,v 1.43 2000/03/01 21:10:04 petere Exp $
+# $Header: /cvsroot/pgsql/src/test/regress/Attic/regress.sh,v 1.44 2000/03/14 23:06:55 thomas Exp $
#
-if [ $# -eq 0 ]
-then
+if [ $# -eq 0 ]; then
echo "Syntax: $0 <hostname> [extra-tests]"
exit 1
fi
@@ -11,8 +10,7 @@ hostname=$1
shift
extratests="$*"
-if [ "x$hostname" = "xwin" -o "x$hostname" = "xi386-pc-qnx4" ]
-then
+if [ "x$hostname" = "xwin" -o "x$hostname" = "xi386-pc-qnx4" ]; then
HOSTLOC="-h localhost"
else
HOSTLOC=""
@@ -81,21 +79,22 @@ if [ $? -ne 0 ]; then
exit 1
fi
-if [ "x$hostname" != "xi386-pc-qnx4" ]
-then
-echo "=============== installing PL/pgSQL... ================="
+if [ "x$hostname" != "xi386-pc-qnx4" ]; then
+echo "=============== installing languages... ================="
+$ECHO_N "installing PL/pgSQL .. " $ECHO_C
createlang $HOSTLOC plpgsql regression
if [ $? -ne 0 -a $? -ne 2 ]; then
- echo createlang failed
+ echo failed
exit 1
+else
+ echo ok
fi
fi
echo "=============== running regression queries... ================="
echo "" > regression.diffs
-if [ "x$hostname" = "xi386-pc-qnx4" ]
-then
+if [ "x$hostname" = "xi386-pc-qnx4" ]; then
DIFFOPT="-b"
else
DIFFOPT="-w"
@@ -126,8 +125,7 @@ do
fi
done
- if [ `diff ${DIFFOPT} ${EXPECTED} results/${tst}.out | wc -l` -ne 0 ]
- then
+ if [ `diff ${DIFFOPT} ${EXPECTED} results/${tst}.out | wc -l` -ne 0 ]; then
( diff ${DIFFOPT} -C3 ${EXPECTED} results/${tst}.out; \
echo ""; \
echo "----------------------"; \
@@ -147,24 +145,23 @@ $FRONTEND regression < errors.sql
#set this to 1 to avoid clearing the database
debug=0
-if test "$debug" -eq 1
-then
-echo Skipping clearing and deletion of the regression database
+if [ test "$debug" -eq 1 ]; then
+ echo Skipping clearing and deletion of the regression database
else
-echo "=============== clearing regression database... ================="
-$FRONTEND regression < drop.sql
-if [ $? -ne 0 ]; then
- echo the drop script has an error
- exit 1
-fi
+ echo "=============== clearing regression database... ================="
+ $FRONTEND regression < drop.sql
+ if [ $? -ne 0 ]; then
+ echo the drop script has an error
+ exit 1
+ fi
-exit 0
-echo "=============== dropping regression database... ================="
-dropdb regression
-if [ $? -ne 0 ]; then
- echo dropdb failed
- exit 1
-fi
+ exit 0
+ echo "=============== dropping regression database... ================="
+ dropdb regression
+ if [ $? -ne 0 ]; then
+ echo dropdb failed
+ exit 1
+ fi
-exit 0
+ exit 0
fi
diff --git a/src/test/regress/sql/alter_table.sql b/src/test/regress/sql/alter_table.sql
index 512b74d49c3..0642e96ba19 100644
--- a/src/test/regress/sql/alter_table.sql
+++ b/src/test/regress/sql/alter_table.sql
@@ -189,7 +189,7 @@ DELETE FROM tmp3 where a=5;
-- Try (and succeed)
ALTER TABLE tmp3 add constraint tmpconstr foreign key (a) references tmp2 match full;
-DROP TABLE tmp3
+DROP TABLE tmp3;
-DROP TABLE tmp2
+DROP TABLE tmp2;
diff --git a/src/test/regress/sql/box.sql b/src/test/regress/sql/box.sql
index bd28243c7ce..68dbe138223 100644
--- a/src/test/regress/sql/box.sql
+++ b/src/test/regress/sql/box.sql
@@ -39,7 +39,7 @@ INSERT INTO BOX_TBL (f1) VALUES ('asdfasdf(ad');
SELECT '' AS four, BOX_TBL.*;
-SELECT '' AS four, b.*, box_area(b.f1) as barea
+SELECT '' AS four, b.*, area(b.f1) as barea
FROM BOX_TBL b;
-- overlap
diff --git a/src/test/regress/sql/float8.sql b/src/test/regress/sql/float8.sql
index 8fc7a7baf42..e3bbb9d21cb 100644
--- a/src/test/regress/sql/float8.sql
+++ b/src/test/regress/sql/float8.sql
@@ -60,7 +60,11 @@ SELECT '' AS five, f.f1, %f.f1 AS trunc_f1
SELECT '' AS five, f.f1, f.f1 % AS round_f1
FROM FLOAT8_TBL f;
+SELECT sqrt(float8 '64') AS eight;
+
-- square root
+SELECT |/ float8 '64' AS eight;
+
SELECT '' AS three, f.f1, |/f.f1 AS sqrt_f1
FROM FLOAT8_TBL f
WHERE f.f1 > '0.0';
@@ -71,6 +75,8 @@ SELECT '' AS three, f.f1, : ( ; f.f1) AS exp_ln_f1
WHERE f.f1 > '0.0';
-- cube root
+SELECT ||/ float8 '27' AS three;
+
SELECT '' AS five, f.f1, ||/f.f1 AS cbrt_f1 FROM FLOAT8_TBL f;
@@ -94,7 +100,7 @@ SELECT '' AS bad, f.f1 / '0.0' from FLOAT8_TBL f;
SELECT '' AS five, FLOAT8_TBL.*;
--- test for over and under flow
+-- test for over- and underflow
INSERT INTO FLOAT8_TBL(f1) VALUES ('10e400');
INSERT INTO FLOAT8_TBL(f1) VALUES ('-10e400');
diff --git a/src/test/regress/sql/geometry.sql b/src/test/regress/sql/geometry.sql
index a19b7883abe..d2694663e39 100644
--- a/src/test/regress/sql/geometry.sql
+++ b/src/test/regress/sql/geometry.sql
@@ -85,7 +85,7 @@ SELECT '' AS twenty, b.f1 / p.f1 AS rotation
SET geqo TO 'off';
-SELECT '' AS eight, points(f1) AS npoints, f1 AS path FROM PATH_TBL;
+SELECT '' AS eight, npoints(f1) AS npoints, f1 AS path FROM PATH_TBL;
SELECT '' AS four, path(f1) FROM POLYGON_TBL;
@@ -110,7 +110,7 @@ SELECT '' AS twentyfour, p.f1, poly.f1, poly.f1 ~ p.f1 AS contains
SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 @ poly.f1 AS contained
FROM POLYGON_TBL poly, POINT_TBL p;
-SELECT '' AS four, points(f1) AS npoints, f1 AS polygon
+SELECT '' AS four, npoints(f1) AS npoints, f1 AS polygon
FROM POLYGON_TBL;
SELECT '' AS four, polygon(f1)
diff --git a/src/test/regress/sql/int4.sql b/src/test/regress/sql/int4.sql
index 96e947eebaa..8663e284fbf 100644
--- a/src/test/regress/sql/int4.sql
+++ b/src/test/regress/sql/int4.sql
@@ -103,10 +103,3 @@ SELECT 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 AS ten;
SELECT 2 + 2 / 2 AS three;
SELECT (2 + 2) / 2 AS two;
-
-SELECT dsqrt(float8 '64') AS eight;
-
-SELECT |/float8 '64' AS eight;
-
-SELECT ||/float8 '27' AS three;
-
diff --git a/src/test/regress/sql/numeric.sql b/src/test/regress/sql/numeric.sql
index 2f4e4adefd4..3097cc5af7f 100644
--- a/src/test/regress/sql/numeric.sql
+++ b/src/test/regress/sql/numeric.sql
@@ -623,10 +623,10 @@ SELECT t1.id1, t1.result, t2.expected
AND t1.result != t2.expected;
-- ******************************
--- * POWER(10, LN(value)) check
+-- * POW(10, LN(value)) check
-- ******************************
DELETE FROM num_result;
-INSERT INTO num_result SELECT id, 0, POWER(numeric '10', LN(ABS(round(val,200))))
+INSERT INTO num_result SELECT id, 0, POW(numeric '10', LN(ABS(round(val,200))))
FROM num_data
WHERE val != '0.0';
SELECT t1.id1, t1.result, t2.expected
diff --git a/src/test/regress/sql/timestamp.sql b/src/test/regress/sql/timestamp.sql
index 5fc46066062..984b5c79c6e 100644
--- a/src/test/regress/sql/timestamp.sql
+++ b/src/test/regress/sql/timestamp.sql
@@ -4,7 +4,7 @@
-- Shorthand values
-- Not directly usable for regression testing since these are not constants.
--- So, just try to test parser and hope for the best - tgl 97/04/26
+-- So, just try to test parser and hope for the best - thomas 97/04/26
SELECT (timestamp 'today' = (timestamp 'yesterday' + interval '1 day')) as "True";
SELECT (timestamp 'today' = (timestamp 'tomorrow' - interval '1 day')) as "True";
@@ -12,8 +12,10 @@ SELECT (timestamp 'tomorrow' = (timestamp 'yesterday' + interval '2 days')) as "
SELECT (timestamp 'current' = 'now') as "True";
SELECT (timestamp 'now' - 'current') AS "ZeroSecs";
-SET DateStyle = 'Postgres,noneuropean';
-SELECT timestamp('1994-01-01', '11:00') AS "Jan_01_1994_11am";
+SET DateStyle = 'Postgres,NonEuropean';
+SELECT timestamp(date '1994-01-01', time '11:00') AS "Jan_01_1994_11am";
+SELECT timestamp(date '1994-01-01', time '10:00') AS "Jan_01_1994_10am";
+SELECT timestamp(date '1994-01-01', time with time zone '11:00-5') AS "Jan_01_1994_8am";
CREATE TABLE TIMESTAMP_TBL ( d1 timestamp);