Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
5b4c16e0
Commit
5b4c16e0
authored
Dec 06, 2002
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Back out ALTER DOMAIN patch until missing file appears.
parent
853153ca
Changes
22
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
262 additions
and
1526 deletions
+262
-1526
doc/src/sgml/ref/allfiles.sgml
doc/src/sgml/ref/allfiles.sgml
+1
-2
doc/src/sgml/ref/alter_domain.sgml
doc/src/sgml/ref/alter_domain.sgml
+0
-237
doc/src/sgml/reference.sgml
doc/src/sgml/reference.sgml
+1
-2
src/backend/catalog/dependency.c
src/backend/catalog/dependency.c
+1
-2
src/backend/catalog/pg_constraint.c
src/backend/catalog/pg_constraint.c
+4
-11
src/backend/catalog/pg_type.c
src/backend/catalog/pg_type.c
+73
-111
src/backend/commands/cluster.c
src/backend/commands/cluster.c
+5
-5
src/backend/commands/typecmds.c
src/backend/commands/typecmds.c
+147
-819
src/backend/executor/execQual.c
src/backend/executor/execQual.c
+3
-3
src/backend/nodes/copyfuncs.c
src/backend/nodes/copyfuncs.c
+1
-18
src/backend/nodes/equalfuncs.c
src/backend/nodes/equalfuncs.c
+1
-16
src/backend/parser/gram.y
src/backend/parser/gram.y
+2
-50
src/backend/parser/parse_expr.c
src/backend/parser/parse_expr.c
+1
-9
src/backend/tcop/postgres.c
src/backend/tcop/postgres.c
+2
-6
src/backend/tcop/utility.c
src/backend/tcop/utility.c
+1
-45
src/include/catalog/pg_type.h
src/include/catalog/pg_type.h
+2
-14
src/include/commands/defrem.h
src/include/commands/defrem.h
+9
-1
src/include/nodes/nodes.h
src/include/nodes/nodes.h
+1
-2
src/include/nodes/parsenodes.h
src/include/nodes/parsenodes.h
+1
-28
src/test/regress/expected/domain.out
src/test/regress/expected/domain.out
+3
-77
src/test/regress/resultmap
src/test/regress/resultmap
+2
-2
src/test/regress/sql/domain.sql
src/test/regress/sql/domain.sql
+1
-66
No files found.
doc/src/sgml/ref/allfiles.sgml
View file @
5b4c16e0
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/allfiles.sgml,v 1.5
0 2002/12/06 03:28:27
momjian Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/ref/allfiles.sgml,v 1.5
1 2002/12/06 03:42:52
momjian Exp $
PostgreSQL documentation
Complete list of usable sgml source files in this directory.
-->
...
...
@@ -38,7 +38,6 @@ Complete list of usable sgml source files in this directory.
<!-- SQL commands -->
<!entity abort system "abort.sgml">
<!entity alterDatabase system "alter_database.sgml">
<!entity alterDomain system "alter_domain.sgml">
<!entity alterGroup system "alter_group.sgml">
<!entity alterTable system "alter_table.sgml">
<!entity alterTrigger system "alter_trigger.sgml">
...
...
doc/src/sgml/ref/alter_domain.sgml
deleted
100644 → 0
View file @
853153ca
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/ref/alter_domain.sgml,v 1.1 2002/12/06 03:28:27 momjian Exp $
PostgreSQL documentation
-->
<refentry id="SQL-ALTERDOMAIN">
<refmeta>
<refentrytitle id="sql-alterdomain-title">ALTER DOMAIN</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<refname>
ALTER DOMAIN
</refname>
<refpurpose>
change the definition of a table
</refpurpose>
</refnamediv>
<refsynopsisdiv>
<refsynopsisdivinfo>
<date>2002-11-27</date>
</refsynopsisdivinfo>
<synopsis>
ALTER DOMAIN <replaceable class="PARAMETER">domain</replaceable>
{ SET DEFAULT <replaceable class="PARAMETER">value</replaceable> | DROP DEFAULT }
ALTER DOMAIN <replaceable class="PARAMETER">domain</replaceable>
{ SET | DROP } NOT NULL
ALTER DOMAIN <replaceable class="PARAMETER">domain</replaceable>
ADD <replaceable class="PARAMETER">domain_constraint</replaceable>
ALTER DOMAIN <replaceable class="PARAMETER">domain</replaceable>
DROP CONSTRAINT <replaceable class="PARAMETER">constraint_name</replaceable> [ RESTRICT | CASCADE ]
</synopsis>
<refsect2 id="R2-SQL-ALTERDOMAIN-1">
<refsect2info>
<date>2002-11-27</date>
</refsect2info>
<title>
Inputs
</title>
<para>
<variablelist>
<varlistentry>
<term><replaceable class="PARAMETER"> domain </replaceable></term>
<listitem>
<para>
The name (possibly schema-qualified) of an existing domain to
alter.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER"> domain_constraint </replaceable></term>
<listitem>
<para>
New domain constraint for the domain.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><replaceable class="PARAMETER"> constraint_name </replaceable></term>
<listitem>
<para>
Name of an existing constraint to drop.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>CASCADE</term>
<listitem>
<para>
Automatically drop objects that depend constraint.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>RESTRICT</term>
<listitem>
<para>
Refuse to drop the constraint if there are any dependent
objects. This is the default behavior.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
<refsect2 id="R2-SQL-ALTERDOMAIN-2">
<refsect2info>
<date>1998-04-15</date>
</refsect2info>
<title>
Outputs
</title>
<para>
<variablelist>
<varlistentry>
<term><computeroutput>ALTER DOMAIN</computeroutput></term>
<listitem>
<para>
Message returned from domain alteration.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><computeroutput>ERROR</computeroutput></term>
<listitem>
<para>
Message returned if domain is not available.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect2>
</refsynopsisdiv>
<refsect1 id="R1-SQL-ALTERDOMAIN-1">
<refsect1info>
<date>2002-11-27</date>
</refsect1info>
<title>
Description
</title>
<para>
<command>ALTER DOMAIN</command> changes the definition of an existing domain.
There are several sub-forms:
</para>
<variablelist>
<varlistentry>
<term>SET/DROP DEFAULT</term>
<listitem>
<para>
These forms set or remove the default value for a column. Note
that defaults only apply to subsequent <command>INSERT</command>
commands; they do not cause rows already in a table using the domain.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>SET/DROP NOT NULL</term>
<listitem>
<para>
These forms change whether a domain is marked to allow NULL
values or to reject NULL values. You may only <literal>SET NOT NULL</>
when the tables using the domain contain no null values in the domain
based column.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>ADD <replaceable class="PARAMETER">domain_constraint</replaceable></term>
<listitem>
<para>
This form adds a new constraint to a table using the same syntax as
<xref linkend="SQL-CREATEDOMAIN" endterm="SQL-CREATEDOMAIN-TITLE">.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>DROP CONSTRAINT</term>
<listitem>
<para>
This form drops constraints on a domain.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
You must own the domain to use <command>ALTER DOMAIN</>; except for
<command>ALTER TABLE OWNER</>, which may only be executed by a superuser.
</para>
</refsect1>
<refsect1 id="R1-SQL-ALTERDOMAIN-2">
<title>
Usage
</title>
<para>
To add a NOT NULL constraint to a column:
<programlisting>
ALTER DOMAIN zipcode SET NOT NULL;
</programlisting>
To remove a NOT NULL constraint from a column:
<programlisting>
ALTER DOMAIN zipcode DROP NOT NULL;
</programlisting>
</para>
<para>
To add a check constraint to a table:
<programlisting>
ALTER DOMAIN zipcode ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);
</programlisting>
</para>
<para>
To remove a check constraint from a table and all its children:
<programlisting>
ALTER DOMAIN zipcode DROP CONSTRAINT zipchk;
</programlisting>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:"/usr/lib/sgml/catalog"
sgml-local-ecat-files:nil
End:
-->
doc/src/sgml/reference.sgml
View file @
5b4c16e0
<!-- reference.sgml
$Header: /cvsroot/pgsql/doc/src/sgml/reference.sgml,v 1.
39 2002/12/06 03:28:27
momjian Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/reference.sgml,v 1.
40 2002/12/06 03:42:48
momjian Exp $
PostgreSQL Reference Manual
-->
...
...
@@ -47,7 +47,6 @@ PostgreSQL Reference Manual
&abort;
&alterDatabase;
&alterDomain;
&alterGroup;
&alterTable;
&alterTrigger;
...
...
src/backend/catalog/dependency.c
View file @
5b4c16e0
...
...
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.1
5 2002/12/06 03:28:27
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/dependency.c,v 1.1
6 2002/12/06 03:42:54
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -36,7 +36,6 @@
#include "commands/proclang.h"
#include "commands/schemacmds.h"
#include "commands/trigger.h"
#include "commands/typecmds.h"
#include "lib/stringinfo.h"
#include "miscadmin.h"
#include "optimizer/clauses.h"
...
...
src/backend/catalog/pg_constraint.c
View file @
5b4c16e0
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_constraint.c,v 1.
9 2002/12/06 03:28:2
7 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_constraint.c,v 1.
10 2002/12/06 03:42:5
7 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -199,7 +199,6 @@ CreateConstraintEntry(const char *constraintName,
domobject
.
classId
=
RelOid_pg_type
;
domobject
.
objectId
=
domainId
;
domobject
.
objectSubId
=
0
;
recordDependencyOn
(
&
conobject
,
&
domobject
,
DEPENDENCY_AUTO
);
}
...
...
@@ -497,16 +496,15 @@ RemoveConstraintById(Oid conId)
HeapTuple
typTup
;
ScanKeyData
typKey
[
1
];
SysScanDesc
typScan
;
int
nkeys
=
0
;
typRel
=
heap_openr
(
TypeRelationName
,
RowExclusiveLock
);
ScanKeyEntryInitialize
(
&
typKey
[
nkeys
++
],
0x0
,
ObjectIdAttributeNumber
,
F_OIDEQ
,
ScanKeyEntryInitialize
(
&
typKey
[
0
],
0x0
,
Anum_pg_constraint_contypid
,
F_OIDEQ
,
ObjectIdGetDatum
(
con
->
contypid
));
typScan
=
systable_beginscan
(
typRel
,
TypeOidIndex
,
true
,
SnapshotNow
,
nkeys
,
typKey
);
SnapshotNow
,
1
,
typKey
);
typTup
=
systable_getnext
(
typScan
);
...
...
@@ -519,11 +517,6 @@ RemoveConstraintById(Oid conId)
/* Keep lock on domain type until end of xact */
heap_close
(
typRel
,
NoLock
);
}
else
{
elog
(
ERROR
,
"RemoveConstraintById: Constraint %u is not a known type"
,
conId
);
}
/* Fry the constraint itself */
simple_heap_delete
(
conDesc
,
&
tup
->
t_self
);
...
...
src/backend/catalog/pg_type.c
View file @
5b4c16e0
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.8
3 2002/12/06 03:28:2
7 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.8
4 2002/12/06 03:42:5
7 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -139,7 +139,7 @@ TypeCreate(const char *typeName,
Oid
elementType
,
Oid
baseType
,
const
char
*
defaultTypeValue
,
/* human readable rep */
char
*
defaultTypeBin
,
/* cooked rep */
c
onst
c
har
*
defaultTypeBin
,
/* cooked rep */
bool
passedByValue
,
char
alignment
,
char
storage
,
...
...
@@ -291,50 +291,9 @@ TypeCreate(const char *typeName,
*/
if
(
!
IsBootstrapProcessingMode
())
{
GenerateTypeDependencies
(
typeNamespace
,
typeObjectId
,
relationOid
,
relationKind
,
inputProcedure
,
outputProcedure
,
elementType
,
baseType
,
defaultTypeBin
,
false
);
}
/*
* finish up
*/
heap_close
(
pg_type_desc
,
RowExclusiveLock
);
return
typeObjectId
;
}
void
GenerateTypeDependencies
(
Oid
typeNamespace
,
Oid
typeObjectId
,
Oid
relationOid
,
/* only for 'c'atalog typeType */
char
relationKind
,
Oid
inputProcedure
,
Oid
outputProcedure
,
Oid
elementType
,
Oid
baseType
,
char
*
defaultTypeBin
,
/* cooked rep */
bool
rebuild
)
{
ObjectAddress
myself
,
referenced
;
/*
* If true, we need to remove all current dependencies that the type
* holds, and rebuild them from scratch. This allows us to easily
* implement alter type, and alter domain statements.
*/
if
(
rebuild
)
deleteDependencyRecordsFor
(
RelOid_pg_type
,
typeObjectId
);
myself
.
classId
=
RelOid_pg_type
;
myself
.
objectId
=
typeObjectId
;
myself
.
objectSubId
=
0
;
...
...
@@ -405,11 +364,14 @@ GenerateTypeDependencies(Oid typeNamespace,
referenced
.
objectSubId
=
0
;
recordDependencyOn
(
&
myself
,
&
referenced
,
DEPENDENCY_NORMAL
);
}
}
/* Dependency on the default expression */
if
(
defaultTypeBin
)
recordDependencyOnExpr
(
&
myself
,
stringToNode
(
defaultTypeBin
),
NIL
,
DEPENDENCY_NORMAL
);
/*
* finish up
*/
heap_close
(
pg_type_desc
,
RowExclusiveLock
);
return
typeObjectId
;
}
/*
...
...
src/backend/commands/cluster.c
View file @
5b4c16e0
...
...
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.10
0 2002/12/06 03:28:2
7 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/cluster.c,v 1.10
1 2002/12/06 03:42:5
7 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
src/backend/commands/typecmds.c
View file @
5b4c16e0
This diff is collapsed.
Click to expand it.
src/backend/executor/execQual.c
View file @
5b4c16e0
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.11
4 2002/12/06 03:28:2
7 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/executor/execQual.c,v 1.11
5 2002/12/06 03:42:5
7 momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -1610,8 +1610,8 @@ ExecEvalConstraintTest(ConstraintTest *constraint, ExprContext *econtext,
conResult
=
ExecEvalExpr
(
constraint
->
check_expr
,
econtext
,
isNull
,
isDone
);
if
(
!
DatumGetBool
(
conResult
))
elog
(
ERROR
,
"
ExecEvalConstraintTest:
Domain %s constraint %s failed"
,
constraint
->
domname
,
constraint
->
name
);
elog
(
ERROR
,
"Domain %s constraint %s failed"
,
constraint
->
name
,
constraint
->
dom
name
);
}
break
;
default:
...
...
src/backend/nodes/copyfuncs.c
View file @
5b4c16e0
...
...
@@ -15,7 +15,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.22
7 2002/12/06 03:28:28
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/nodes/copyfuncs.c,v 1.22
8 2002/12/06 03:42:59
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -1479,20 +1479,6 @@ _copyAlterTableStmt(AlterTableStmt *from)
return
newnode
;
}
static
AlterDomainStmt
*
_copyAlterDomainStmt
(
AlterDomainStmt
*
from
)
{
AlterDomainStmt
*
newnode
=
makeNode
(
AlterDomainStmt
);
COPY_SCALAR_FIELD
(
subtype
);
COPY_NODE_FIELD
(
typename
);
COPY_STRING_FIELD
(
name
);
COPY_NODE_FIELD
(
def
);
COPY_SCALAR_FIELD
(
behavior
);
return
newnode
;
}
static
GrantStmt
*
_copyGrantStmt
(
GrantStmt
*
from
)
{
...
...
@@ -2478,9 +2464,6 @@ copyObject(void *from)
case
T_AlterTableStmt
:
retval
=
_copyAlterTableStmt
(
from
);
break
;
case
T_AlterDomainStmt
:
retval
=
_copyAlterDomainStmt
(
from
);
break
;
case
T_GrantStmt
:
retval
=
_copyGrantStmt
(
from
);
break
;
...
...
src/backend/nodes/equalfuncs.c
View file @
5b4c16e0
...
...
@@ -18,7 +18,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.17
2 2002/12/06 03:28:32
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/nodes/equalfuncs.c,v 1.17
3 2002/12/06 03:43:08
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -525,18 +525,6 @@ _equalAlterTableStmt(AlterTableStmt *a, AlterTableStmt *b)
return
true
;
}
static
bool
_equalAlterDomainStmt
(
AlterDomainStmt
*
a
,
AlterDomainStmt
*
b
)
{
COMPARE_SCALAR_FIELD
(
subtype
);
COMPARE_NODE_FIELD
(
typename
);
COMPARE_STRING_FIELD
(
name
);
COMPARE_NODE_FIELD
(
def
);
COMPARE_SCALAR_FIELD
(
behavior
);
return
true
;
}
static
bool
_equalGrantStmt
(
GrantStmt
*
a
,
GrantStmt
*
b
)
{
...
...
@@ -1633,9 +1621,6 @@ equal(void *a, void *b)
case
T_AlterTableStmt
:
retval
=
_equalAlterTableStmt
(
a
,
b
);
break
;
case
T_AlterDomainStmt
:
retval
=
_equalAlterDomainStmt
(
a
,
b
);
break
;
case
T_GrantStmt
:
retval
=
_equalGrantStmt
(
a
,
b
);
break
;
...
...
src/backend/parser/gram.y
View file @
5b4c16e0
...
...
@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.38
4 2002/12/06 03:28:33
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.38
5 2002/12/06 03:43:08
momjian Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
...
...
@@ -128,7 +128,7 @@ static void doNegateFloat(Value *v);
}
%type <node> stmt schema_stmt
AlterDatabaseSetStmt Alter
DomainStmt Alter
GroupStmt
AlterDatabaseSetStmt AlterGroupStmt
AlterTableStmt AlterUserStmt AlterUserSetStmt
AnalyzeStmt ClosePortalStmt ClusterStmt CommentStmt
ConstraintsSetStmt CopyStmt CreateAsStmt CreateCastStmt
...
...
@@ -479,7 +479,6 @@ stmtmulti: stmtmulti ';' stmt
stmt :
AlterDatabaseSetStmt
| AlterDomainStmt
| AlterGroupStmt
| AlterTableStmt
| AlterUserStmt
...
...
@@ -3730,53 +3729,6 @@ CreateDomainStmt:
}
;
AlterDomainStmt:
/* ALTER DOMAIN <domain> {SET DEFAULT <expr>|DROP DEFAULT} */
ALTER DOMAIN_P any_name alter_column_default
{
AlterDomainStmt *n = makeNode(AlterDomainStmt);
n->subtype = 'T';
n->typename = $3;
n->def = $4;
$$ = (Node *)n;
}
/* ALTER DOMAIN <domain> DROP NOT NULL */
| ALTER DOMAIN_P any_name DROP NOT NULL_P
{
AlterDomainStmt *n = makeNode(AlterDomainStmt);
n->subtype = 'N';
n->typename = $3;
$$ = (Node *)n;
}
/* ALTER DOMAIN <domain> SET NOT NULL */
| ALTER DOMAIN_P any_name SET NOT NULL_P
{
AlterDomainStmt *n = makeNode(AlterDomainStmt);
n->subtype = 'O';
n->typename = $3;
$$ = (Node *)n;
}
/* ALTER DOMAIN <domain> ADD CONSTRAINT ... */
| ALTER DOMAIN_P any_name ADD TableConstraint
{
AlterDomainStmt *n = makeNode(AlterDomainStmt);
n->subtype = 'C';
n->typename = $3;
n->def = $5;
$$ = (Node *)n;
}
/* ALTER DOMAIN <domain> DROP CONSTRAINT <name> [RESTRICT|CASCADE] */
| ALTER DOMAIN_P any_name DROP CONSTRAINT name opt_drop_behavior
{
AlterDomainStmt *n = makeNode(AlterDomainStmt);
n->subtype = 'X';
n->typename = $3;
n->name = $6;
n->behavior = $7;
$$ = (Node *)n;
}
;
opt_as: AS {}
| /* EMPTY */ {}
;
...
...
src/backend/parser/parse_expr.c
View file @
5b4c16e0
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.13
3 2002/12/06 03:28:33
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.13
4 2002/12/06 03:43:12
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -629,14 +629,6 @@ transformExpr(ParseState *pstate, Node *expr, ConstraintTestValue *domVal)
case
T_DomainConstraintValue
:
{
/*
* If domVal is NULL, we are not translating an expression that
* can use it
*/
if
(
domVal
==
NULL
)
elog
(
ERROR
,
"VALUE is not allowed in expression for node %d"
,
nodeTag
(
expr
));
result
=
(
Node
*
)
copyObject
(
domVal
);
break
;
...
...
src/backend/tcop/postgres.c
View file @
5b4c16e0
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.31
1 2002/12/06 03:28:3
3 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/tcop/postgres.c,v 1.31
2 2002/12/06 03:43:1
3 momjian Exp $
*
* NOTES
* this is the "main" module of the postgres backend and
...
...
@@ -1781,7 +1781,7 @@ PostgresMain(int argc, char *argv[], const char *username)
if
(
!
IsUnderPostmaster
)
{
puts
(
"
\n
POSTGRES backend interactive interface "
);
puts
(
"$Revision: 1.31
1 $ $Date: 2002/12/06 03:28:3
3 $
\n
"
);
puts
(
"$Revision: 1.31
2 $ $Date: 2002/12/06 03:43:1
3 $
\n
"
);
}
/*
...
...
@@ -2319,10 +2319,6 @@ CreateCommandTag(Node *parsetree)
tag
=
"ALTER TABLE"
;
break
;
case
T_AlterDomainStmt
:
tag
=
"ALTER DOMAIN"
;
break
;
case
T_GrantStmt
:
{
GrantStmt
*
stmt
=
(
GrantStmt
*
)
parsetree
;
...
...
src/backend/tcop/utility.c
View file @
5b4c16e0
...
...
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.18
3 2002/12/06 03:28:33
momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.18
4 2002/12/06 03:43:16
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -36,7 +36,6 @@
#include "commands/sequence.h"
#include "commands/tablecmds.h"
#include "commands/trigger.h"
#include "commands/typecmds.h"
#include "commands/user.h"
#include "commands/vacuum.h"
#include "commands/view.h"
...
...
@@ -561,49 +560,6 @@ ProcessUtility(Node *parsetree,
}
break
;
case
T_AlterDomainStmt
:
{
AlterDomainStmt
*
stmt
=
(
AlterDomainStmt
*
)
parsetree
;
/*
* Some or all of these functions are recursive to cover
* inherited things, so permission checks are done there.
*/
switch
(
stmt
->
subtype
)
{
case
'T'
:
/* ALTER COLUMN DEFAULT */
/*
* Recursively alter column default for table and,
* if requested, for descendants
*/
AlterDomainDefault
(
stmt
->
typename
,
stmt
->
def
);
break
;
case
'N'
:
/* ALTER COLUMN DROP NOT NULL */
AlterDomainNotNull
(
stmt
->
typename
,
false
);
break
;
case
'O'
:
/* ALTER COLUMN SET NOT NULL */
AlterDomainNotNull
(
stmt
->
typename
,
true
);
break
;
case
'C'
:
/* ADD CONSTRAINT */
AlterDomainAddConstraint
(
stmt
->
typename
,
stmt
->
def
);
break
;
case
'X'
:
/* DROP CONSTRAINT */
AlterDomainDropConstraint
(
stmt
->
typename
,
stmt
->
name
,
stmt
->
behavior
);
break
;
default:
/* oops */
elog
(
ERROR
,
"T_AlterDomainStmt: unknown subtype"
);
break
;
}
}
break
;
case
T_GrantStmt
:
ExecuteGrantStmt
((
GrantStmt
*
)
parsetree
);
...
...
src/include/catalog/pg_type.h
View file @
5b4c16e0
...
...
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_type.h,v 1.13
5 2002/12/06 03:28:33
momjian Exp $
* $Id: pg_type.h,v 1.13
6 2002/12/06 03:43:18
momjian Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
...
...
@@ -550,7 +550,7 @@ extern Oid TypeCreate(const char *typeName,
Oid
elementType
,
Oid
baseType
,
const
char
*
defaultTypeValue
,
char
*
defaultTypeBin
,
c
onst
c
har
*
defaultTypeBin
,
bool
passedByValue
,
char
alignment
,
char
storage
,
...
...
@@ -558,18 +558,6 @@ extern Oid TypeCreate(const char *typeName,
int32
typNDims
,
bool
typeNotNull
);
extern
void
GenerateTypeDependencies
(
Oid
typeNamespace
,
Oid
typeObjectId
,
Oid
relationOid
,
/* only for 'c'atalog typeType */
char
relationKind
,
Oid
inputProcedure
,
Oid
outputProcedure
,
Oid
elementType
,
Oid
baseType
,
char
*
defaultTypeBin
,
/* cooked rep */
bool
rebuild
);
extern
void
TypeRename
(
const
char
*
oldTypeName
,
Oid
typeNamespace
,
const
char
*
newTypeName
);
...
...
src/include/commands/defrem.h
View file @
5b4c16e0
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: defrem.h,v 1.4
7 2002/12/06 03:28:33
momjian Exp $
* $Id: defrem.h,v 1.4
8 2002/12/06 03:43:28
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -52,6 +52,14 @@ extern void RemoveOperatorById(Oid operOid);
extern
void
DefineAggregate
(
List
*
names
,
List
*
parameters
);
extern
void
RemoveAggregate
(
RemoveAggrStmt
*
stmt
);
/* commands/typecmds.c */
extern
void
DefineType
(
List
*
names
,
List
*
parameters
);
extern
void
RemoveType
(
List
*
names
,
DropBehavior
behavior
);
extern
void
RemoveTypeById
(
Oid
typeOid
);
extern
void
DefineDomain
(
CreateDomainStmt
*
stmt
);
extern
void
RemoveDomain
(
List
*
names
,
DropBehavior
behavior
);
extern
Oid
DefineCompositeType
(
const
RangeVar
*
typevar
,
List
*
coldeflist
);
/* commands/opclasscmds.c */
extern
void
DefineOpClass
(
CreateOpClassStmt
*
stmt
);
extern
void
RemoveOpClass
(
RemoveOpClassStmt
*
stmt
);
...
...
src/include/nodes/nodes.h
View file @
5b4c16e0
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: nodes.h,v 1.12
7 2002/12/06 03:28:33
momjian Exp $
* $Id: nodes.h,v 1.12
8 2002/12/06 03:43:28
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -157,7 +157,6 @@ typedef enum NodeTag
T_UpdateStmt
,
T_SelectStmt
,
T_AlterTableStmt
,
T_AlterDomainStmt
,
T_SetOperationStmt
,
T_GrantStmt
,
T_ClosePortalStmt
,
...
...
src/include/nodes/parsenodes.h
View file @
5b4c16e0
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $Id: parsenodes.h,v 1.2
19 2002/12/06 03:28:33
momjian Exp $
* $Id: parsenodes.h,v 1.2
20 2002/12/06 03:43:28
momjian Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -827,33 +827,6 @@ typedef struct AlterTableStmt
DropBehavior
behavior
;
/* RESTRICT or CASCADE for DROP cases */
}
AlterTableStmt
;
/* ----------------------
* Alter Domain
*
* The fields are used in different ways by the different variants of
* this command. Subtypes should match AlterTable subtypes
* ----------------------
*/
typedef
struct
AlterDomainStmt
{
NodeTag
type
;
char
subtype
;
/*------------
* T = alter column default
* N = alter column drop not null
* O = alter column set not null
* C = add constraint
* X = drop constraint
* U = change owner
*------------
*/
List
*
typename
;
/* table to work on */
char
*
name
;
/* column or constraint name to act on, or
* new owner */
Node
*
def
;
/* definition of default or constraint */
DropBehavior
behavior
;
/* RESTRICT or CASCADE for DROP cases */
}
AlterDomainStmt
;
/* ----------------------
* Grant|Revoke Statement
* ----------------------
...
...
src/test/regress/expected/domain.out
View file @
5b4c16e0
...
...
@@ -115,7 +115,7 @@ INSERT INTO nulltest DEFAULT VALUES;
ERROR: Domain dnotnull does not allow NULL values
INSERT INTO nulltest values ('a', 'b', 'c', 'd', 'c'); -- Good
insert into nulltest values ('a', 'b', 'c', 'd', NULL);
ERROR:
ExecEvalConstraintTest: Domain dcheck constraint $1
failed
ERROR:
Domain $1 constraint dcheck
failed
insert into nulltest values ('a', 'b', 'c', 'd', 'a');
ERROR: ExecInsert: rejected due to CHECK constraint "nulltest_col5" on "nulltest"
INSERT INTO nulltest values (NULL, 'b', 'c', 'd', 'd');
...
...
@@ -127,7 +127,7 @@ ERROR: ExecInsert: Fail to add null value in not null attribute col3
INSERT INTO nulltest values ('a', 'b', 'c', NULL, 'd'); -- Good
-- Test copy
COPY nulltest FROM stdin; --fail
ERROR: copy: line 1,
ExecEvalConstraintTest: Domain dcheck constraint $1
failed
ERROR: copy: line 1,
Domain $1 constraint dcheck
failed
lost synchronization with server, resetting connection
SET autocommit TO 'on';
-- Last row is bad
...
...
@@ -158,7 +158,6 @@ ERROR: Domain dnotnull does not allow NULL values
drop table nulltest;
drop domain dnotnull restrict;
drop domain dnull restrict;
drop domain dcheck restrict;
create domain ddef1 int4 DEFAULT 3;
create domain ddef2 oid DEFAULT '12';
-- Type mixing, function returns int8
...
...
@@ -192,80 +191,7 @@ select * from defaulttest;
(4 rows)
drop sequence ddef4_seq;
drop table defaulttest cascade;
-- Test ALTER DOMAIN .. NOT NULL
create domain dnotnulltest integer;
create table domnotnull
( col1 dnotnulltest
, col2 dnotnulltest
);
insert into domnotnull default values;
alter domain dnotnulltest set not null; -- fails
ERROR: ALTER DOMAIN: Relation "domnotnull" Attribute "col1" contains NULL values
update domnotnull set col1 = 5;
alter domain dnotnulltest set not null; -- fails
ERROR: ALTER DOMAIN: Relation "domnotnull" Attribute "col2" contains NULL values
update domnotnull set col2 = 6;
alter domain dnotnulltest set not null;
alter domain dnotnulltest set not null; -- fails
ERROR: AlterDomain: dnotnulltest is already set to NOT NULL
update domnotnull set col1 = null; -- fails
ERROR: Domain dnotnulltest does not allow NULL values
alter domain dnotnulltest drop not null;
alter domain dnotnulltest drop not null; -- fails
ERROR: AlterDomain: dnotnulltest is already set to NULL
update domnotnull set col1 = null;
drop domain dnotnulltest cascade;
NOTICE: Drop cascades to table domnotnull column col2
NOTICE: Drop cascades to table domnotnull column col1
-- Test ALTER DOMAIN .. DEFAULT ..
create table domdeftest (col1 ddef1);
insert into domdeftest default values;
select * from domdeftest;
col1
------
3
(1 row)
alter domain ddef1 set default '42';
insert into domdeftest default values;
select * from domdeftest;
col1
------
3
42
(2 rows)
alter domain ddef1 drop default;
insert into domdeftest default values;
select * from domdeftest;
col1
------
3
42
(3 rows)
drop table domdeftest;
-- Test ALTER DOMAIN .. CONSTRAINT ..
create domain con as integer;
create table domcontest (col1 con);
insert into domcontest values (1);
insert into domcontest values (2);
alter domain con add constraint t check (VALUE < 1); -- fails
ERROR: AlterDomainAddConstraint: Domain con constraint t failed
alter domain con add constraint t check (VALUE < 34);
alter domain con add check (VALUE > 0);
insert into domcontest values (-5); -- fails
ERROR: ExecEvalConstraintTest: Domain con constraint $1 failed
insert into domcontest values (42); -- fails
ERROR: ExecEvalConstraintTest: Domain con constraint t failed
insert into domcontest values (5);
alter domain con drop constraint t;
insert into domcontest values (-5); --fails
ERROR: ExecEvalConstraintTest: Domain con constraint $1 failed
insert into domcontest values (42);
-- cleanup
drop table defaulttest;
drop domain ddef1 restrict;
drop domain ddef2 restrict;
drop domain ddef3 restrict;
...
...
src/test/regress/resultmap
View file @
5b4c16e0
...
...
@@ -14,8 +14,8 @@ float8/.*-qnx=float8-exp-three-digits
float8/alpha.*-dec-osf.*:cc=float8-fp-exception
float8/i.86-pc-cygwin=float8-small-is-zero
geometry/.*-darwin=geometry-positive-zeros
geometry/i.86-.*-freebsd4.[0-
7
]=geometry-positive-zeros
geometry/alpha.*-freebsd4.[0-
7
]=geometry-positive-zeros
geometry/i.86-.*-freebsd4.[0-
5
]=geometry-positive-zeros
geometry/alpha.*-freebsd4.[0-
5
]=geometry-positive-zeros
geometry/i.86-.*-openbsd=geometry-positive-zeros
geometry/sparc-.*-openbsd=geometry-positive-zeros
geometry/.*-netbsd1.[0-5]=geometry-positive-zeros
...
...
src/test/regress/sql/domain.sql
View file @
5b4c16e0
...
...
@@ -127,7 +127,6 @@ SELECT cast(col4 as dnotnull) from nulltest; -- fail
drop
table
nulltest
;
drop
domain
dnotnull
restrict
;
drop
domain
dnull
restrict
;
drop
domain
dcheck
restrict
;
create
domain
ddef1
int4
DEFAULT
3
;
...
...
@@ -160,71 +159,7 @@ COPY defaulttest(col5) FROM stdin;
select
*
from
defaulttest
;
drop
sequence
ddef4_seq
;
drop
table
defaulttest
cascade
;
-- Test ALTER DOMAIN .. NOT NULL
create
domain
dnotnulltest
integer
;
create
table
domnotnull
(
col1
dnotnulltest
,
col2
dnotnulltest
);
insert
into
domnotnull
default
values
;
alter
domain
dnotnulltest
set
not
null
;
-- fails
update
domnotnull
set
col1
=
5
;
alter
domain
dnotnulltest
set
not
null
;
-- fails
update
domnotnull
set
col2
=
6
;
alter
domain
dnotnulltest
set
not
null
;
alter
domain
dnotnulltest
set
not
null
;
-- fails
update
domnotnull
set
col1
=
null
;
-- fails
alter
domain
dnotnulltest
drop
not
null
;
alter
domain
dnotnulltest
drop
not
null
;
-- fails
update
domnotnull
set
col1
=
null
;
drop
domain
dnotnulltest
cascade
;
-- Test ALTER DOMAIN .. DEFAULT ..
create
table
domdeftest
(
col1
ddef1
);
insert
into
domdeftest
default
values
;
select
*
from
domdeftest
;
alter
domain
ddef1
set
default
'42'
;
insert
into
domdeftest
default
values
;
select
*
from
domdeftest
;
alter
domain
ddef1
drop
default
;
insert
into
domdeftest
default
values
;
select
*
from
domdeftest
;
drop
table
domdeftest
;
-- Test ALTER DOMAIN .. CONSTRAINT ..
create
domain
con
as
integer
;
create
table
domcontest
(
col1
con
);
insert
into
domcontest
values
(
1
);
insert
into
domcontest
values
(
2
);
alter
domain
con
add
constraint
t
check
(
VALUE
<
1
);
-- fails
alter
domain
con
add
constraint
t
check
(
VALUE
<
34
);
alter
domain
con
add
check
(
VALUE
>
0
);
insert
into
domcontest
values
(
-
5
);
-- fails
insert
into
domcontest
values
(
42
);
-- fails
insert
into
domcontest
values
(
5
);
alter
domain
con
drop
constraint
t
;
insert
into
domcontest
values
(
-
5
);
--fails
insert
into
domcontest
values
(
42
);
-- cleanup
drop
table
defaulttest
;
drop
domain
ddef1
restrict
;
drop
domain
ddef2
restrict
;
drop
domain
ddef3
restrict
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment