<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_index.sgml,v 1.7 1999/07/22 15:09:10 thomas Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_index.sgml,v 1.8 2000/10/22 23:32:38 tgl Exp $
Postgres documentation
-->
DROP INDEX
</refname>
<refpurpose>
- Removes an index from a database
+ Removes existing indexes from a database
</refpurpose>
</refnamediv>
<refsynopsisdiv>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
-DROP INDEX <replaceable class="PARAMETER">index_name</replaceable>
+DROP INDEX <replaceable class="PARAMETER">index_name</replaceable> [, ...]
</synopsis>
<refsect2 id="R2-SQL-DROPINDEX-1">
<term><replaceable class="PARAMETER">index_name</replaceable></term>
<listitem>
<para>
- The name of the index to remove.
+ The name of an index to remove.
</para>
</listitem>
</varlistentry>
</computeroutput></term>
<listitem>
<para>
- The message returned if the index is successfully dropped.
+ The message returned if the command completes successfully.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>
-ERROR: index "<replaceable class="PARAMETER">index_name</replaceable>" nonexistent
+ERROR: index "<replaceable class="PARAMETER">index_name</replaceable>" does not exist
</computeroutput></term>
<listitem>
<para>
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_rule.sgml,v 1.7 2000/10/05 19:48:18 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_rule.sgml,v 1.8 2000/10/22 23:32:38 tgl Exp $
Postgres documentation
-->
DROP RULE
</refname>
<refpurpose>
- Removes an existing rule from the database
+ Removes existing rules from the database
</refpurpose>
</refnamediv>
<refsynopsisdiv>
<date>1998-09-22</date>
</refsynopsisdivinfo>
<synopsis>
-DROP RULE <replaceable class="PARAMETER">name</replaceable>
+DROP RULE <replaceable class="PARAMETER">name</replaceable> [, ...]
</synopsis>
<refsect2 id="R2-SQL-DROPRULE-1">
</varlistentry>
<varlistentry>
<term><computeroutput>
-ERROR: RewriteGetRuleEventRel: rule "<replaceable class="parameter">name</replaceable>" not found
+ERROR: Rule or view "<replaceable class="parameter">name</replaceable>" not found
</computeroutput></term>
<listitem>
<para>
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_sequence.sgml,v 1.7 2000/05/18 14:24:33 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_sequence.sgml,v 1.8 2000/10/22 23:32:38 tgl Exp $
Postgres documentation
-->
DROP SEQUENCE
</refname>
<refpurpose>
- Removes an existing sequence
+ Removes existing sequences from a database
</refpurpose>
</refnamediv>
<refsynopsisdiv>
</varlistentry>
<varlistentry>
<term><computeroutput>
-NOTICE: Relation "<replaceable class="parameter">name</replaceable>" does not exist.
+ERROR: sequence "<replaceable class="parameter">name</replaceable>" does not exist
</computeroutput></term>
<listitem>
<para>
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_table.sgml,v 1.8 2000/10/18 16:16:03 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_table.sgml,v 1.9 2000/10/22 23:32:38 tgl Exp $
Postgres documentation
-->
</varlistentry>
<varlistentry>
<term><computeroutput>
-ERROR: table "<replaceable class="parameter">name</replaceable>" is nonexistent
+ERROR: table "<replaceable class="parameter">name</replaceable>" does not exist
</computeroutput></term>
<listitem>
<para>
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_type.sgml,v 1.7 2000/07/22 04:30:27 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_type.sgml,v 1.8 2000/10/22 23:32:38 tgl Exp $
Postgres documentation
-->
DROP TYPE
</refname>
<refpurpose>
- Removes a user-defined type from the system catalogs
+ Removes user-defined types from the system catalogs
</refpurpose>
</refnamediv>
<refsynopsisdiv>
<date>1999-07-20</date>
</refsynopsisdivinfo>
<synopsis>
-DROP TYPE <replaceable class="PARAMETER">typename</replaceable>
+DROP TYPE <replaceable class="PARAMETER">typename</replaceable> [, ...]
</synopsis>
<refsect2 id="R2-SQL-DROPTYPE-1">
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_view.sgml,v 1.7 2000/10/18 16:16:03 momjian Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_view.sgml,v 1.8 2000/10/22 23:32:38 tgl Exp $
Postgres documentation
-->
DROP VIEW
</refname>
<refpurpose>
- Removes an existing view from a database
+ Removes existing views from a database
</refpurpose>
</refnamediv>
<refsynopsisdiv>
</varlistentry>
<varlistentry>
<term><computeroutput>
-ERROR: view <replaceable class="parameter">name</replaceable> is nonexistent
+ERROR: view <replaceable class="parameter">name</replaceable> does not exist
</computeroutput></term>
<listitem>
<para>
<title>
Notes
</title>
- <para>
- The <productname>Postgres</productname>
- <command>DROP TABLE</command> statement also drops views.
- </para>
<para>
Refer to <command>CREATE VIEW</command>
for information on how to create views.
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.149 2000/10/16 14:52:02 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.150 2000/10/22 23:32:38 tgl Exp $
*
*
* INTERFACE ROUTINES
if (!HeapTupleIsValid(tup))
{
heap_close(pg_class_desc, RowExclusiveLock);
- elog(ERROR, "Relation '%s' does not exist",
+ elog(ERROR, "Relation \"%s\" does not exist",
RelationGetRelationName(rel));
}
{
heap_endscan(pg_type_scan);
heap_close(pg_type_desc, RowExclusiveLock);
- elog(ERROR, "DeleteTypeTuple: %s type nonexistent",
+ elog(ERROR, "DeleteTypeTuple: type \"%s\" does not exist",
RelationGetRelationName(rel));
}
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.51 2000/08/21 17:22:35 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/catalog/pg_operator.c,v 1.52 2000/10/22 23:32:38 tgl Exp $
*
* NOTES
* these routines moved here from commands/define.c and somewhat cleaned up.
leftObjectId = TypeGet(leftTypeName, &leftDefined);
if (!OidIsValid(leftObjectId) || !leftDefined)
- elog(ERROR, "OperatorGet: left type '%s' nonexistent",
+ elog(ERROR, "OperatorGet: left type \"%s\" does not exist",
leftTypeName);
}
rightObjectId = TypeGet(rightTypeName, &rightDefined);
if (!OidIsValid(rightObjectId) || !rightDefined)
- elog(ERROR, "OperatorGet: right type '%s' nonexistent",
+ elog(ERROR, "OperatorGet: right type \"%s\" does not exist",
rightTypeName);
}
leftTypeId = TypeGet(leftTypeName, &leftDefined);
if (!OidIsValid(leftTypeId) || !leftDefined)
- elog(ERROR, "OperatorDef: left type '%s' nonexistent",
+ elog(ERROR, "OperatorDef: left type \"%s\" does not exist",
leftTypeName);
}
rightTypeId = TypeGet(rightTypeName, &rightDefined);
if (!OidIsValid(rightTypeId) || !rightDefined)
- elog(ERROR, "OperatorDef: right type '%s' nonexistent",
+ elog(ERROR, "OperatorDef: right type \"%s\" does not exist",
rightTypeName);
}
otherRightTypeName);
if (!OidIsValid(other_oid))
elog(ERROR,
- "OperatorDef: can't create operator shell '%s'",
+ "OperatorDef: can't create operator shell \"%s\"",
name[j]);
values[i++] = ObjectIdGetDatum(other_oid);
}
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.38 2000/09/06 14:15:16 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.39 2000/10/22 23:32:39 tgl Exp $
*
*-------------------------------------------------------------------------
*/
0, 0, 0);
if (!HeapTupleIsValid(tuple))
- elog(ERROR, "index \"%s\" nonexistent", name);
+ elog(ERROR, "index \"%s\" does not exist", name);
if (((Form_pg_class) GETSTRUCT(tuple))->relkind != RELKIND_INDEX)
{
0, 0, 0);
if (!HeapTupleIsValid(tuple))
- elog(ERROR, "index \"%s\" nonexistent", name);
+ elog(ERROR, "index \"%s\" does not exist", name);
if (((Form_pg_class) GETSTRUCT(tuple))->relkind != RELKIND_INDEX)
{
}
if (!reindex_index(tuple->t_data->t_oid, force))
- elog(NOTICE, "index '%s' wasn't reindexed", name);
+ elog(NOTICE, "index \"%s\" wasn't reindexed", name);
}
/*
0, 0, 0);
if (!HeapTupleIsValid(tuple))
- elog(ERROR, "table \"%s\" nonexistent", name);
+ elog(ERROR, "table \"%s\" does not exist", name);
if (((Form_pg_class) GETSTRUCT(tuple))->relkind != RELKIND_RELATION)
{
}
if (!reindex_relation(tuple->t_data->t_oid, force))
- elog(NOTICE, "table '%s' wasn't reindexed", name);
+ elog(NOTICE, "table \"%s\" wasn't reindexed", name);
}
/*
scan = heap_beginscan(relation, 0, SnapshotNow, 1, &scankey);
dbtuple = heap_getnext(scan, 0);
if (!HeapTupleIsValid(dbtuple))
- elog(ERROR, "Database \"%s\" doesn't exist", dbname);
+ elog(ERROR, "Database \"%s\" does not exist", dbname);
db_id = dbtuple->t_data->t_oid;
db_owner = ((Form_pg_database) GETSTRUCT(dbtuple))->datdba;
heap_endscan(scan);
{
StartTransactionCommand();
if (reindex_relation(relids[i], force))
- elog(NOTICE, "relation %d was reindexed", relids[i]);
+ elog(NOTICE, "relation %u was reindexed", relids[i]);
CommitTransactionCommand();
}
StartTransactionCommand();
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.50 2000/10/20 02:53:10 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.51 2000/10/22 23:32:39 tgl Exp $
*
*-------------------------------------------------------------------------
*/
PointerGetDatum(oldattname),
0, 0);
if (!HeapTupleIsValid(oldatttup))
- elog(ERROR, "renameatt: attribute \"%s\" nonexistent", oldattname);
+ elog(ERROR, "renameatt: attribute \"%s\" does not exist", oldattname);
if (((Form_pg_attribute) GETSTRUCT(oldatttup))->attnum < 0)
elog(ERROR, "renameatt: system attribute \"%s\" not renamed", oldattname);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.196 2000/10/18 16:16:05 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.197 2000/10/22 23:32:48 tgl Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
DropUserStmt, DropdbStmt, ExplainStmt, ExtendStmt, FetchStmt,
GrantStmt, IndexStmt, InsertStmt, ListenStmt, LoadStmt, LockStmt,
NotifyStmt, OptimizableStmt, ProcedureStmt, ReindexStmt,
- RemoveAggrStmt, RemoveFuncStmt, RemoveOperStmt, RemoveStmt,
+ RemoveAggrStmt, RemoveFuncStmt, RemoveOperStmt,
RenameStmt, RevokeStmt, RuleActionStmt, RuleActionStmtOrEmpty,
RuleStmt, SelectStmt, SetSessionStmt, TransactionStmt, TruncateStmt,
UnlistenStmt, UpdateStmt, VacuumStmt, VariableResetStmt,
opt_with_copy, index_opt_unique, opt_verbose, opt_analyze
%type <boolean> opt_cursor
-%type <ival> copy_dirn, def_type, direction, reindex_type, remove_type,
+%type <ival> copy_dirn, def_type, direction, reindex_type, drop_type,
opt_column, event, comment_type, comment_cl,
comment_ag, comment_fn, comment_op, comment_tg
| RemoveAggrStmt
| RemoveOperStmt
| RemoveFuncStmt
- | RemoveStmt
| RenameStmt
| RevokeStmt
| OptimizableStmt
/*****************************************************************************
*
* QUERY:
- * drop <relname1> [, <relname2> .. <relnameN> ]
+ *
+ * DROP itemtype itemname [, itemname ...]
*
*****************************************************************************/
-DropStmt: DROP TABLE relation_name_list
- {
- DropStmt *n = makeNode(DropStmt);
- n->names = $3;
- n->removeType = DROP_TABLE;
- $$ = (Node *)n;
- }
- | DROP SEQUENCE relation_name_list
- {
- DropStmt *n = makeNode(DropStmt);
- n->names = $3;
- n->removeType = DROP_SEQUENCE;
- $$ = (Node *)n;
- }
- | DROP VIEW relation_name_list
+DropStmt: DROP drop_type name_list
{
DropStmt *n = makeNode(DropStmt);
+ n->removeType = $2;
n->names = $3;
- n->removeType = DROP_VIEW;
$$ = (Node *)n;
}
;
+drop_type: TABLE { $$ = DROP_TABLE; }
+ | SEQUENCE { $$ = DROP_SEQUENCE; }
+ | VIEW { $$ = DROP_VIEW; }
+ | INDEX { $$ = DROP_INDEX; }
+ | RULE { $$ = DROP_RULE; }
+ | TYPE_P { $$ = DROP_TYPE_P; }
+ ;
+
/*****************************************************************************
*
* QUERY:
*
* QUERY:
*
- * remove function <funcname>
- * (REMOVE FUNCTION "funcname" (arg1, arg2, ...))
- * remove aggregate <aggname>
- * (REMOVE AGGREGATE "aggname" "aggtype")
- * remove operator <opname>
- * (REMOVE OPERATOR "opname" (leftoperand_typ rightoperand_typ))
- * remove type <typename>
- * (REMOVE TYPE "typename")
- * remove rule <rulename>
- * (REMOVE RULE "rulename")
+ * DROP FUNCTION funcname (arg1, arg2, ...)
+ * DROP AGGREGATE aggname aggtype
+ * DROP OPERATOR opname (leftoperand_typ rightoperand_typ)
*
*****************************************************************************/
-RemoveStmt: DROP remove_type name
+RemoveFuncStmt: DROP FUNCTION func_name func_args
{
- DropStmt *n = makeNode(DropStmt);
- n->removeType = $2;
- n->names = makeList1(makeString($3));
+ RemoveFuncStmt *n = makeNode(RemoveFuncStmt);
+ n->funcname = $3;
+ n->args = $4;
$$ = (Node *)n;
}
;
-remove_type: TYPE_P { $$ = DROP_TYPE_P; }
- | INDEX { $$ = DROP_INDEX; }
- | RULE { $$ = DROP_RULE; }
- ;
-
-
RemoveAggrStmt: DROP AGGREGATE name aggr_argtype
{
RemoveAggrStmt *n = makeNode(RemoveAggrStmt);
| '*' { $$ = NULL; }
;
-
-RemoveFuncStmt: DROP FUNCTION func_name func_args
- {
- RemoveFuncStmt *n = makeNode(RemoveFuncStmt);
- n->funcname = $3;
- n->args = $4;
- $$ = (Node *)n;
- }
- ;
-
-
RemoveOperStmt: DROP OPERATOR all_Op '(' oper_argtypes ')'
{
RemoveOperStmt *n = makeNode(RemoveOperStmt);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.97 2000/10/18 16:16:06 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.98 2000/10/22 23:32:41 tgl Exp $
*
*-------------------------------------------------------------------------
*/
/*
- *
+ * Error-checking support for DROP commands
*/
struct kindstrings {
char kind;
+ char *indef_article;
char *name;
char *command;
};
static struct kindstrings kindstringarray[] = {
- { RELKIND_RELATION, "table", "TABLE" },
- { RELKIND_SEQUENCE, "sequence", "SEQUENCE" },
- { RELKIND_VIEW, "view", "VIEW" },
- { RELKIND_INDEX, "index", "INDEX" },
- { '\0', "", "" }
+ { RELKIND_RELATION, "a", "table", "TABLE" },
+ { RELKIND_SEQUENCE, "a", "sequence", "SEQUENCE" },
+ { RELKIND_VIEW, "a", "view", "VIEW" },
+ { RELKIND_INDEX, "an", "index", "INDEX" },
+ { '\0', "a", "???", "???" }
};
break;
Assert(wentry->kind != '\0');
- elog(ERROR, "%s is not a %s. Use 'DROP %s' to remove a %s",
- relname, rentry->name, wentry->command, wentry->name);
+ elog(ERROR, "\"%s\" is not %s %s. Use DROP %s to remove %s %s",
+ relname, rentry->indef_article, rentry->name,
+ wentry->command, wentry->indef_article, wentry->name);
}
static void
-CheckClassKind(char *name, char rightkind)
+CheckDropPermissions(char *name, char rightkind)
{
- HeapTuple tuple;
struct kindstrings *rentry;
+ HeapTuple tuple;
Form_pg_class classform;
+ for (rentry = kindstringarray; rentry->kind != '\0'; rentry++)
+ if (rentry->kind == rightkind)
+ break;
+ Assert(rentry->kind != '\0');
+
tuple = SearchSysCacheTuple(RELNAME,
PointerGetDatum(name),
0, 0, 0);
-
if (!HeapTupleIsValid(tuple))
- {
- for (rentry = kindstringarray; rentry->kind != '\0'; rentry++)
- if (rentry->kind == rightkind)
- break;
- Assert(rentry->kind != '\0');
- elog(ERROR, "%s \"%s\" is nonexistent", rentry->name, name);
- }
+ elog(ERROR, "%s \"%s\" does not exist", rentry->name, name);
classform = (Form_pg_class) GETSTRUCT(tuple);
if (classform->relkind != rightkind)
DropErrorMsg(name, classform->relkind, rightkind);
+
+ if (!pg_ownercheck(GetUserId(), name, RELNAME))
+ elog(ERROR, "you do not own %s \"%s\"",
+ rentry->name, name);
+
+ if (!allowSystemTableMods && IsSystemRelationName(name))
+ elog(ERROR, "%s \"%s\" is a system %s",
+ rentry->name, name, rentry->name);
}
+
/* ----------------
* general utility function invoker
* ----------------
/*
* Let AlterTableCreateToastTable decide if this
* one needs a secondary relation too.
- *
*/
CommandCounterIncrement();
AlterTableCreateToastTable(((CreateStmt *)parsetree)->relname,
List *args = stmt->names;
List *arg;
- foreach(arg, args) {
+ set_ps_display(commandTag = "DROP");
+ foreach(arg, args)
+ {
relname = strVal(lfirst(arg));
- if (!allowSystemTableMods && IsSystemRelationName(relname))
- elog(ERROR, "class \"%s\" is a system catalog",
- relname);
-
- set_ps_display(commandTag = "DROP");
switch(stmt->removeType)
{
case DROP_TABLE:
- CheckClassKind(relname, RELKIND_RELATION);
- if (!pg_ownercheck(GetUserId(), relname, RELNAME))
- elog(ERROR, "you do not own table \"%s\"",
- relname);
+ CheckDropPermissions(relname, RELKIND_RELATION);
RemoveRelation(relname);
-
break;
case DROP_SEQUENCE:
- CheckClassKind(relname, RELKIND_SEQUENCE);
- if (!pg_ownercheck(GetUserId(), relname, RELNAME))
- elog(ERROR, "you do not own sequence \"%s\"",
- relname);
+ CheckDropPermissions(relname, RELKIND_SEQUENCE);
RemoveRelation(relname);
-
break;
case DROP_VIEW:
- CheckClassKind(relname, RELKIND_VIEW);
- if (!pg_ownercheck(GetUserId(), relname, RELNAME))
- elog(ERROR, "you do not own view \"%s\"",
- relname);
+ CheckDropPermissions(relname, RELKIND_VIEW);
RemoveView(relname);
-
break;
case DROP_INDEX:
- CheckClassKind(relname, RELKIND_INDEX);
- if (!pg_ownercheck(GetUserId(), relname, RELNAME))
- elog(ERROR, "%s: %s", relname,
- aclcheck_error_strings[ACLCHECK_NOT_OWNER]);
+ CheckDropPermissions(relname, RELKIND_INDEX);
RemoveIndex(relname);
-
break;
case DROP_RULE:
break;
case DROP_TYPE_P:
+ /* RemoveType does its own permissions checks */
RemoveType(relname);
break;
}
- }
+ /*
+ * Make sure subsequent loop iterations will see results
+ * of this one; needed if removing multiple rules for
+ * same table, for example.
+ */
+ CommandCounterIncrement();
+ }
}
break;
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: nodes.h,v 1.78 2000/10/05 19:11:36 tgl Exp $
+ * $Id: nodes.h,v 1.79 2000/10/22 23:32:44 tgl Exp $
*
*-------------------------------------------------------------------------
*/
T_RemoveAggrStmt,
T_RemoveFuncStmt,
T_RemoveOperStmt,
- T_RemoveStmt,
+ T_RemoveStmt_XXX, /* not used anymore; this tag# is available */
T_RenameStmt,
T_RuleStmt,
T_NotifyStmt,
ERROR: parser: parse error at or near ";"
-- no such relation
drop table nonesuch;
-ERROR: table "nonesuch" is nonexistent
+ERROR: table "nonesuch" does not exist
--
-- RENAME
ERROR: Relation 'nonesuchrel' does not exist
-- no such attribute
alter table emp rename column nonesuchatt to newnonesuchatt;
-ERROR: renameatt: attribute "nonesuchatt" nonexistent
+ERROR: renameatt: attribute "nonesuchatt" does not exist
-- conflict
alter table emp rename column salary to manager;
ERROR: renameatt: attribute "manager" exists
ERROR: parser: parse error at or near "314159"
-- no such index
drop index nonesuch;
-ERROR: index "nonesuch" is nonexistent
+ERROR: index "nonesuch" does not exist
--
-- REMOVE AGGREGATE
NOTICE: CREATE TABLE will create implicit trigger(s) for FOREIGN KEY check(s)
ERROR: UNIQUE constraint matching given keys for referenced table "pktable" not found
DROP TABLE FKTABLE_FAIL1;
-ERROR: table "fktable_fail1" is nonexistent
+ERROR: table "fktable_fail1" does not exist
DROP TABLE FKTABLE_FAIL2;
-ERROR: table "fktable_fail2" is nonexistent
+ERROR: table "fktable_fail2" does not exist
DROP TABLE PKTABLE;
--
-- prepare the table...
DROP TABLE INET_TBL;
-ERROR: table "inet_tbl" is nonexistent
+ERROR: table "inet_tbl" does not exist
CREATE TABLE INET_TBL (c cidr, i inet);
INSERT INTO INET_TBL (c, i) VALUES ('192.168.1', '192.168.1.226/24');
INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.2/24', '192.168.1.226');
if mytype = ''PS'' then
select into rec * from PSlot where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.backlink != blname then
update PSlot set backlink = blname where slotname = myname;
if mytype = ''WS'' then
select into rec * from WSlot where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.backlink != blname then
update WSlot set backlink = blname where slotname = myname;
if mytype = ''PL'' then
select into rec * from PLine where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.backlink != blname then
update PLine set backlink = blname where slotname = myname;
if mytype = ''PS'' then
select into rec * from PSlot where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.slotlink != blname then
update PSlot set slotlink = blname where slotname = myname;
if mytype = ''WS'' then
select into rec * from WSlot where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.slotlink != blname then
update WSlot set slotlink = blname where slotname = myname;
if mytype = ''IF'' then
select into rec * from IFace where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.slotlink != blname then
update IFace set slotlink = blname where slotname = myname;
if mytype = ''HS'' then
select into rec * from HSlot where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.slotlink != blname then
update HSlot set slotlink = blname where slotname = myname;
if mytype = ''PH'' then
select into rec * from PHone where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.slotlink != blname then
update PHone set slotlink = blname where slotname = myname;
insert into PField values ('PF1_1', 'should fail due to unique index');
ERROR: Cannot insert a duplicate key into unique index pfield_name
update PSlot set backlink = 'WS.not.there' where slotname = 'PS.base.a1';
-ERROR: WS.not.there does not exists
+ERROR: WS.not.there does not exist
update PSlot set backlink = 'XX.illegal' where slotname = 'PS.base.a1';
ERROR: illegal backlink beginning with XX
update PSlot set slotlink = 'PS.not.there' where slotname = 'PS.base.a1';
-ERROR: PS.not.there does not exists
+ERROR: PS.not.there does not exist
update PSlot set slotlink = 'XX.illegal' where slotname = 'PS.base.a1';
ERROR: illegal slotlink beginning with XX
insert into HSlot values ('HS', 'base.hub1', 1, '');
if mytype = ''PS'' then
select into rec * from PSlot where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.backlink != blname then
update PSlot set backlink = blname where slotname = myname;
if mytype = ''WS'' then
select into rec * from WSlot where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.backlink != blname then
update WSlot set backlink = blname where slotname = myname;
if mytype = ''PL'' then
select into rec * from PLine where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.backlink != blname then
update PLine set backlink = blname where slotname = myname;
if mytype = ''PS'' then
select into rec * from PSlot where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.slotlink != blname then
update PSlot set slotlink = blname where slotname = myname;
if mytype = ''WS'' then
select into rec * from WSlot where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.slotlink != blname then
update WSlot set slotlink = blname where slotname = myname;
if mytype = ''IF'' then
select into rec * from IFace where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.slotlink != blname then
update IFace set slotlink = blname where slotname = myname;
if mytype = ''HS'' then
select into rec * from HSlot where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.slotlink != blname then
update HSlot set slotlink = blname where slotname = myname;
if mytype = ''PH'' then
select into rec * from PHone where slotname = myname;
if not found then
- raise exception ''% does not exists'', myname;
+ raise exception ''% does not exist'', myname;
end if;
if rec.slotlink != blname then
update PHone set slotlink = blname where slotname = myname;