added ALTER TABLE DROP COLUMN, early version

This commit is contained in:
Peter Eisentraut 2000-01-22 14:20:56 +00:00
parent 3f51bdafdc
commit fa5400c0a4
19 changed files with 286 additions and 82 deletions

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.63 2000/01/10 06:30:50 inoue Exp $
* $Header: /cvsroot/pgsql/src/backend/access/heap/heapam.c,v 1.64 2000/01/22 14:20:43 petere Exp $
*
*
* INTERFACE ROUTINES
@ -562,7 +562,7 @@ heap_open(Oid relationId, LOCKMODE lockmode)
* ----------------
*/
Relation
heap_openr(char *relationName, LOCKMODE lockmode)
heap_openr(const char *relationName, LOCKMODE lockmode)
{
Relation r;

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/catalog.c,v 1.28 2000/01/16 20:04:54 petere Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/catalog.c,v 1.29 2000/01/22 14:20:44 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -38,7 +38,7 @@ relpath(const char *relname)
snprintf(path, bufsize, "%s/%s", DataDir, relname);
return path;
}
return relname;
return pstrdup(relname);
}
/*

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.117 2000/01/17 23:57:43 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.118 2000/01/22 14:20:44 petere Exp $
*
*
* INTERFACE ROUTINES
@ -480,7 +480,7 @@ CheckAttributeNames(TupleDesc tupdesc)
* --------------------------------
*/
Oid
RelnameFindRelid(char *relname)
RelnameFindRelid(const char *relname)
{
HeapTuple tuple;
Oid relid;
@ -1441,7 +1441,7 @@ DeleteTypeTuple(Relation rel)
* --------------------------------
*/
void
heap_drop_with_catalog(char *relname)
heap_drop_with_catalog(const char *relname)
{
Relation rel;
Oid rid;

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.47 2000/01/17 23:57:43 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.48 2000/01/22 14:20:44 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -525,7 +525,7 @@ TypeCreate(char *typeName,
* ----------------------------------------------------------------
*/
void
TypeRename(char *oldTypeName, char *newTypeName)
TypeRename(const char *oldTypeName, const char *newTypeName)
{
Relation pg_type_desc;
Relation idescs[Num_pg_type_indices];

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.63 2000/01/16 20:04:55 petere Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.64 2000/01/22 14:20:45 petere Exp $
*
* NOTES
* The PortalExecutorHeapMemory crap needs to be eliminated
@ -30,6 +30,7 @@
#include "catalog/pg_attrdef.h"
#include "catalog/pg_type.h"
#include "commands/command.h"
#include "commands/rename.h"
#include "executor/execdefs.h"
#include "executor/executor.h"
#include "catalog/heap.h"
@ -299,7 +300,7 @@ AlterTableAddColumn(const char *relationName,
Relation idescs[Num_pg_attr_indices];
Relation ridescs[Num_pg_class_indices];
bool hasindex;
List *rawDefaults = NIL;
// List *rawDefaults = NIL;
/*
* permissions checking. this would normally be done in utility.c,
@ -319,7 +320,7 @@ AlterTableAddColumn(const char *relationName,
* Grab an exclusive lock on the target table, which we will NOT release
* until end of transaction.
*/
rel = heap_openr((char *)relationName, AccessExclusiveLock);
rel = heap_openr(relationName, AccessExclusiveLock);
myrelid = RelationGetRelid(rel);
heap_close(rel, NoLock); /* close rel but keep lock! */
@ -519,8 +520,7 @@ AlterTableAlterColumn(const char *relationName,
elog(ERROR, "ALTER TABLE: permission denied");
#endif
/* XXX should heap_openr take const char * ? */
rel = heap_openr((char *)relationName, AccessExclusiveLock);
rel = heap_openr(relationName, AccessExclusiveLock);
myrelid = RelationGetRelid(rel);
heap_close(rel, NoLock);
@ -626,7 +626,7 @@ AlterTableAlterColumn(const char *relationName,
/* keep the system catalog indices current */
CatalogOpenIndices(Num_pg_attr_indices, Name_pg_attr_indices, irelations);
CatalogIndexInsert(irelations, Num_pg_attr_indices, attr_rel, newtuple);
CatalogCloseIndices(Num_pg_class_indices, irelations);
CatalogCloseIndices(Num_pg_attrdef_indices, irelations);
/* get rid of actual default definition */
drop_default(myrelid, attnum);
@ -672,31 +672,234 @@ drop_default(Oid relid, int16 attnum)
/*
* ALTER TABLE DROP COLUMN
*
* Strategy:
* - permission/sanity checks
* - create a new table _ATDC<name> with all attributes minus the desired one
* - copy over all the data
* - make the column defaults point to the new table
* - kill the old table
* - rename the intermediate table back
*/
void
AlterTableDropColumn(const char *relationName,
bool inh, const char *colName,
int behavior)
{
elog(NOTICE, "ALTER TABLE / DROP COLUMN is not implemented");
Relation oldrel, newrel, defrel;
HeapTuple tuple;
TupleDesc olddesc, newdesc, defdsc;
int16 dropattnum, oldnumatts;
Oid oldrel_oid, newrel_oid;
char tmpname[NAMEDATALEN];
int16 i;
HeapScanDesc scan;
ScanKeyData scankey;
if (!allowSystemTableMods && IsSystemRelationName(relationName))
elog(ERROR, "ALTER TABLE: relation \"%s\" is a system catalog",
relationName);
#ifndef NO_SECURITY
if (!pg_ownercheck(UserName, relationName, RELNAME))
elog(ERROR, "ALTER TABLE: permission denied");
#endif
oldrel = heap_openr(relationName, AccessExclusiveLock);
if (oldrel->rd_rel->relkind != RELKIND_RELATION)
{
heap_close(oldrel, AccessExclusiveLock);
elog(ERROR, "ALTER TABLE: relation %s is not a table", relationName);
}
oldrel_oid = ObjectIdGetDatum(RelationGetRelid(oldrel));
oldnumatts = RelationGetNumberOfAttributes(oldrel);
if (oldnumatts==1)
{
heap_close(oldrel, AccessExclusiveLock);
elog(ERROR, "ALTER TABLE: relation %s only has one column", relationName);
}
/* What to do here? */
/*
if (length(find_all_inheritors(RelationGetRelid(oldrel)))>0)
elog(ERROR, "ALTER TABLE: cannot drop a column on table that is inherited from");
*/
/*
* get the number of the attribute
*/
tuple = SearchSysCacheTuple(ATTNAME, oldrel_oid, NameGetDatum(namein(colName)), 0, 0);
if (!HeapTupleIsValid(tuple))
{
heap_close(oldrel, AccessExclusiveLock);
elog(ERROR, "ALTER TABLE: relation \"%s\" has no column \"%s\"",
relationName, colName);
}
dropattnum = ((Form_pg_attribute) GETSTRUCT(tuple))->attnum;
if (snprintf(tmpname, NAMEDATALEN, "_ATDC%s", relationName)==-1)
{
heap_close(oldrel, AccessExclusiveLock);
elog(ERROR, "AlterTableDropColumn: relation name too long");
}
/*
* Build descriptor for new relation
*/
olddesc = RelationGetDescr(oldrel);
newdesc = CreateTemplateTupleDesc(oldnumatts-1);
for(i = 1; i < dropattnum; i++)
{
Form_pg_attribute att = olddesc->attrs[i-1];
TupleDescInitEntry(newdesc, i, nameout(&(att->attname)),
att->atttypid, att->atttypmod,
att->attnelems, att->attisset);
/* the above function doesn't take care of these two */
newdesc->attrs[i-1]->attnotnull = att->attnotnull;
newdesc->attrs[i-1]->atthasdef = att->atthasdef;
}
for(i = dropattnum; i <= oldnumatts-1; i++)
{
Form_pg_attribute att = olddesc->attrs[i];
TupleDescInitEntry(newdesc, i, nameout(&(att->attname)),
att->atttypid, att->atttypmod,
att->attnelems, att->attisset);
/* the above function doesn't take care of these two */
newdesc->attrs[i-1]->attnotnull = att->attnotnull;
newdesc->attrs[i-1]->atthasdef = att->atthasdef;
}
/* Create the new table */
newrel_oid = heap_create_with_catalog(tmpname, newdesc, RELKIND_RELATION, false);
if (newrel_oid == InvalidOid)
{
heap_close(oldrel, AccessExclusiveLock);
elog(ERROR, "ALTER TABLE: something went wrong");
}
/* Make the new table visible */
CommandCounterIncrement();
/*
* Copy over the data
*/
newrel = heap_open(newrel_oid, AccessExclusiveLock);
scan = heap_beginscan(oldrel, false, SnapshotNow, 0, NULL);
while (HeapTupleIsValid(tuple = heap_getnext(scan, 0)))
{
bool isnull;
Datum *new_record;
bool *new_record_nulls;
HeapTuple new_tuple;
new_record = palloc((oldnumatts-1) * sizeof(*new_record));
new_record_nulls = palloc((oldnumatts-1) * sizeof(*new_record_nulls));
for(i = 1; i < dropattnum; i++)
{
new_record[i-1] = heap_getattr(tuple, i, olddesc, &isnull);
new_record_nulls[i-1] = isnull ? 'n' : ' ';
}
for(i = dropattnum+1; i <= oldnumatts; i++)
{
new_record[i-2] = heap_getattr(tuple, i, olddesc, &isnull);
new_record_nulls[i-2] = isnull ? 'n' : ' ';
}
new_tuple = heap_formtuple(newdesc, new_record, new_record_nulls);
Assert(new_tuple);
if (heap_insert(newrel, new_tuple) == InvalidOid)
elog(ERROR, "AlterTableDropColumn: heap_insert failed");
pfree(new_record);
pfree(new_record_nulls);
}
heap_endscan(scan);
heap_close(newrel, NoLock);
heap_close(oldrel, NoLock);
/*
* Move defaults over to the new table
*/
defrel = heap_openr(AttrDefaultRelationName, AccessExclusiveLock);
defdsc = RelationGetDescr(defrel);
/* look for all entries referencing the old table */
ScanKeyEntryInitialize(&scankey, 0x0, Anum_pg_attrdef_adrelid, F_OIDEQ,
ObjectIdGetDatum(oldrel_oid));
scan = heap_beginscan(defrel, false, SnapshotNow, 1, &scankey);
while(HeapTupleIsValid(tuple = heap_getnext(scan, false)))
{
HeapTuple newtuple;
int2 attrnum;
Relation irelations[Num_pg_attrdef_indices];
attrnum = ((Form_pg_attrdef) GETSTRUCT(tuple))->adnum;
/* remove the entry about the dropped column */
if (attrnum == dropattnum)
{
heap_delete(defrel, &tuple->t_self, NULL);
continue;
}
newtuple = heap_copytuple(tuple);
if (attrnum > dropattnum)
((Form_pg_attrdef) GETSTRUCT(newtuple))->adnum--;
/* make it point to the new table */
((Form_pg_attrdef) GETSTRUCT(newtuple))->adrelid = newrel_oid;
heap_update(defrel, &tuple->t_self, newtuple, NULL);
/* keep the system catalog indices current */
CatalogOpenIndices(Num_pg_attrdef_indices, Name_pg_attrdef_indices, irelations);
CatalogIndexInsert(irelations, Num_pg_attrdef_indices, defrel, newtuple);
CatalogCloseIndices(Num_pg_attrdef_indices, irelations);
}
heap_endscan(scan);
heap_close(defrel, NoLock);
CommandCounterIncrement();
/* make the old table disappear */
heap_drop_with_catalog(relationName);
CommandCounterIncrement();
/* set back original name */
TypeRename(tmpname, relationName);
renamerel(tmpname, relationName);
}
/*
* ALTER TABLE ADD CONSTRAINT
*/
void
AlterTableAddConstraint(const char *relationName,
bool inh, Node *newConstraint)
{
elog(NOTICE, "ALTER TABLE / ADD CONSTRAINT is not implemented");
elog(ERROR, "ALTER TABLE / ADD CONSTRAINT is not implemented");
}
void AlterTableDropConstraint(const char *relationName,
bool inh, const char *constrName,
int behavior)
/*
* ALTER TABLE DROP CONSTRAINT
*/
void
AlterTableDropConstraint(const char *relationName,
bool inh, const char *constrName,
int behavior)
{
elog(NOTICE, "ALTER TABLE / DROP CONSTRAINT is not implemented");
elog(ERROR, "ALTER TABLE / DROP CONSTRAINT is not implemented");
}

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.39 1999/12/16 22:19:42 wieck Exp $
* $Header: /cvsroot/pgsql/src/backend/commands/Attic/rename.c,v 1.40 2000/01/22 14:20:45 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -172,7 +172,7 @@ renameatt(char *relname,
* renamerel - change the name of a relation
*/
void
renamerel(char *oldrelname, char *newrelname)
renamerel(const char *oldrelname, const char *newrelname)
{
int i;
Relation targetrelation;

View File

@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.132 2000/01/20 02:24:50 tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.133 2000/01/22 14:20:46 petere Exp $
*
* HISTORY
* AUTHOR DATE MAJOR EVENT
@ -830,14 +830,14 @@ AlterTableStmt:
$$ = (Node *)n;
}
/* ALTER TABLE <name> DROP [COLUMN] <name> {RESTRICT|CASCADE} */
| ALTER TABLE relation_name opt_inh_star DROP opt_column ColId drop_behavior
| ALTER TABLE relation_name opt_inh_star DROP opt_column ColId /* drop_behavior */
{
AlterTableStmt *n = makeNode(AlterTableStmt);
n->subtype = 'D';
n->relname = $3;
n->inh = $4;
n->name = $7;
n->behavior = $8;
/* n->behavior = $8; */
$$ = (Node *)n;
}
/* ALTER TABLE <name> ADD CONSTRAINT ... */

View File

@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.25 1999/11/25 19:15:20 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/adt/name.c,v 1.26 2000/01/22 14:20:49 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -31,7 +31,7 @@
* Now, always NULL terminated
*/
NameData *
namein(char *s)
namein(const char *s)
{
NameData *result;
int len;
@ -54,7 +54,7 @@ namein(char *s)
* nameout - converts internal reprsentation to "..."
*/
char *
nameout(NameData *s)
nameout(const NameData *s)
{
if (s == NULL)
return "-";
@ -82,7 +82,7 @@ nameout(NameData *s)
*
*/
bool
nameeq(NameData *arg1, NameData *arg2)
nameeq(const NameData *arg1, const NameData *arg2)
{
if (!arg1 || !arg2)
return 0;
@ -91,7 +91,7 @@ nameeq(NameData *arg1, NameData *arg2)
}
bool
namene(NameData *arg1, NameData *arg2)
namene(const NameData *arg1, const NameData *arg2)
{
if (arg1 == NULL || arg2 == NULL)
return (bool) 0;
@ -99,7 +99,7 @@ namene(NameData *arg1, NameData *arg2)
}
bool
namelt(NameData *arg1, NameData *arg2)
namelt(const NameData *arg1, const NameData *arg2)
{
if (arg1 == NULL || arg2 == NULL)
return (bool) 0;
@ -107,7 +107,7 @@ namelt(NameData *arg1, NameData *arg2)
}
bool
namele(NameData *arg1, NameData *arg2)
namele(const NameData *arg1, const NameData *arg2)
{
if (arg1 == NULL || arg2 == NULL)
return (bool) 0;
@ -115,7 +115,7 @@ namele(NameData *arg1, NameData *arg2)
}
bool
namegt(NameData *arg1, NameData *arg2)
namegt(const NameData *arg1, const NameData *arg2)
{
if (arg1 == NULL || arg2 == NULL)
return (bool) 0;
@ -124,7 +124,7 @@ namegt(NameData *arg1, NameData *arg2)
}
bool
namege(NameData *arg1, NameData *arg2)
namege(const NameData *arg1, const NameData *arg2)
{
if (arg1 == NULL || arg2 == NULL)
return (bool) 0;
@ -163,7 +163,7 @@ namecmp(Name n1, Name n2)
#endif
int
namestrcpy(Name name, char *str)
namestrcpy(Name name, const char *str)
{
if (!name || !str)
return -1;
@ -173,7 +173,7 @@ namestrcpy(Name name, char *str)
#ifdef NOT_USED
int
namestrcat(Name name, char *str)
namestrcat(Name name, const char *str)
{
int i;
char *p,
@ -195,7 +195,7 @@ namestrcat(Name name, char *str)
#endif
int
namestrcmp(Name name, char *str)
namestrcmp(Name name, const char *str)
{
if (!name && !str)
return 0;

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.85 2000/01/15 02:59:39 petere Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.86 2000/01/22 14:20:50 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -62,7 +62,7 @@
static void RelationClearRelation(Relation relation, bool rebuildIt);
static void RelationFlushRelation(Relation *relationPtr,
bool onlyFlushReferenceCountZero);
static Relation RelationNameCacheGetRelation(char *relationName);
static Relation RelationNameCacheGetRelation(const char *relationName);
static void RelationCacheAbortWalker(Relation *relationPtr,
int dummy);
static void init_irels(void);
@ -1067,7 +1067,7 @@ RelationIdCacheGetRelation(Oid relationId)
* --------------------------------
*/
static Relation
RelationNameCacheGetRelation(char *relationName)
RelationNameCacheGetRelation(const char *relationName)
{
Relation rd;
NameData name;
@ -1144,7 +1144,7 @@ RelationIdGetRelation(Oid relationId)
* --------------------------------
*/
Relation
RelationNameGetRelation(char *relationName)
RelationNameGetRelation(const char *relationName)
{
char *temprelname;
Relation rd;
@ -1180,7 +1180,7 @@ RelationNameGetRelation(char *relationName)
* ----------------
*/
buildinfo.infotype = INFO_RELNAME;
buildinfo.i.info_name = relationName;
buildinfo.i.info_name = (char *)relationName;
rd = RelationBuildDesc(buildinfo, NULL);
return rd;
@ -1727,7 +1727,7 @@ AttrDefaultFetch(Relation relation)
if (adform->adnum != attrdef[i].adnum)
continue;
if (attrdef[i].adbin != NULL)
elog(ERROR, "AttrDefaultFetch: second record found for attr %s in rel %s",
elog(NOTICE, "AttrDefaultFetch: second record found for attr %s in rel %s",
NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname),
RelationGetRelationName(relation));
@ -1735,7 +1735,7 @@ AttrDefaultFetch(Relation relation)
Anum_pg_attrdef_adbin,
adrel->rd_att, &isnull);
if (isnull)
elog(ERROR, "AttrDefaultFetch: adbin IS NULL for attr %s in rel %s",
elog(NOTICE, "AttrDefaultFetch: adbin IS NULL for attr %s in rel %s",
NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname),
RelationGetRelationName(relation));
attrdef[i].adbin = textout(val);
@ -1744,13 +1744,13 @@ AttrDefaultFetch(Relation relation)
ReleaseBuffer(buffer);
if (i >= ndef)
elog(ERROR, "AttrDefaultFetch: unexpected record found for attr %d in rel %s",
elog(NOTICE, "AttrDefaultFetch: unexpected record found for attr %d in rel %s",
adform->adnum,
RelationGetRelationName(relation));
}
if (found < ndef)
elog(ERROR, "AttrDefaultFetch: %d record not found for rel %s",
elog(NOTICE, "AttrDefaultFetch: %d record not found for rel %s",
ndef - found, RelationGetRelationName(relation));
index_endscan(sd);

View File

@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/temprel.c,v 1.18 1999/12/10 03:56:00 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/temprel.c,v 1.19 2000/01/22 14:20:50 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -49,7 +49,7 @@ typedef struct TempTable
void
create_temp_relation(char *relname, HeapTuple pg_class_tuple)
create_temp_relation(const char *relname, HeapTuple pg_class_tuple)
{
MemoryContext oldcxt;
TempTable *temp_rel;
@ -202,7 +202,7 @@ invalidate_temp_relations(void)
}
char *
get_temp_rel_by_username(char *user_relname)
get_temp_rel_by_username(const char *user_relname)
{
List *l;
@ -217,7 +217,7 @@ get_temp_rel_by_username(char *user_relname)
}
char *
get_temp_rel_by_physicalname(char *relname)
get_temp_rel_by_physicalname(const char *relname)
{
List *l;
@ -229,5 +229,5 @@ get_temp_rel_by_physicalname(char *relname)
return temp_rel->user_relname;
}
/* needed for bootstrapping temp tables */
return relname;
return pstrdup(relname);
}

View File

@ -3,7 +3,7 @@
*
* Copyright 2000 by PostgreSQL Global Development Team
*
* $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.13 2000/01/18 23:30:22 petere Exp $
* $Header: /cvsroot/pgsql/src/bin/psql/command.c,v 1.14 2000/01/22 14:20:51 petere Exp $
*/
#include <c.h>
#include "command.h"
@ -1217,6 +1217,7 @@ process_file(char *filename)
pset.inputfile = filename;
result = MainLoop(fd);
fclose(fd);
pset.inputfile = NULL;
return (result == EXIT_SUCCESS);
}

View File

@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: heapam.h,v 1.49 1999/12/16 22:19:58 wieck Exp $
* $Id: heapam.h,v 1.50 2000/01/22 14:20:52 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -248,7 +248,7 @@ extern HeapAccessStatistics heap_access_stats; /* in stats.c */
/* heapam.c */
extern Relation heap_open(Oid relationId, LOCKMODE lockmode);
extern Relation heap_openr(char *relationName, LOCKMODE lockmode);
extern Relation heap_openr(const char *relationName, LOCKMODE lockmode);
extern void heap_close(Relation relation, LOCKMODE lockmode);
extern HeapScanDesc heap_beginscan(Relation relation, int atend,
Snapshot snapshot, unsigned nkeys, ScanKey key);

View File

@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: heap.h,v 1.26 1999/12/10 03:56:05 momjian Exp $
* $Id: heap.h,v 1.27 2000/01/22 14:20:53 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -21,7 +21,7 @@ typedef struct RawColumnDefault
Node *raw_default; /* default value (untransformed parse tree) */
} RawColumnDefault;
extern Oid RelnameFindRelid(char *relname);
extern Oid RelnameFindRelid(const char *relname);
extern Relation heap_create(char *relname, TupleDesc att,
bool isnoname, bool istemp, bool storage_create);
extern bool heap_storage_create(Relation rel);
@ -29,7 +29,7 @@ extern bool heap_storage_create(Relation rel);
extern Oid heap_create_with_catalog(char *relname, TupleDesc tupdesc,
char relkind, bool istemp);
extern void heap_drop_with_catalog(char *relname);
extern void heap_drop_with_catalog(const char *relname);
extern void heap_truncate(char *relname);
extern void heap_drop(Relation rel);

View File

@ -7,7 +7,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_type.h,v 1.77 2000/01/17 01:29:07 tgl Exp $
* $Id: pg_type.h,v 1.78 2000/01/22 14:20:53 petere Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@ -410,7 +410,7 @@ extern Oid TypeCreate(char *typeName,
char *elementTypeName,
char *defaultTypeValue,
bool passedByValue, char alignment);
extern void TypeRename(char *oldTypeName, char *newTypeName);
extern void TypeRename(const char *oldTypeName, const char *newTypeName);
extern char *makeArrayTypeName(char *typeName);

View File

@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: rename.h,v 1.6 1999/02/13 23:21:19 momjian Exp $
* $Id: rename.h,v 1.7 2000/01/22 14:20:54 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -18,7 +18,7 @@ extern void renameatt(char *relname,
char *newattname,
char *userName, int recurse);
extern void renamerel(char *oldrelname,
char *newrelname);
extern void renamerel(const char *oldrelname,
const char *newrelname);
#endif /* RENAME_H */

View File

@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: builtins.h,v 1.95 2000/01/10 16:13:22 momjian Exp $
* $Id: builtins.h,v 1.96 2000/01/22 14:20:55 petere Exp $
*
* NOTES
* This should normally only be included by fmgr.h.
@ -136,17 +136,17 @@ extern int32 int4larger(int32 arg1, int32 arg2);
extern int32 int4smaller(int32 arg1, int32 arg2);
/* name.c */
extern NameData *namein(char *s);
extern char *nameout(NameData *s);
extern bool nameeq(NameData *arg1, NameData *arg2);
extern bool namene(NameData *arg1, NameData *arg2);
extern bool namelt(NameData *arg1, NameData *arg2);
extern bool namele(NameData *arg1, NameData *arg2);
extern bool namegt(NameData *arg1, NameData *arg2);
extern bool namege(NameData *arg1, NameData *arg2);
extern NameData *namein(const char *s);
extern char *nameout(const NameData *s);
extern bool nameeq(const NameData *arg1, const NameData *arg2);
extern bool namene(const NameData *arg1, const NameData *arg2);
extern bool namelt(const NameData *arg1, const NameData *arg2);
extern bool namele(const NameData *arg1, const NameData *arg2);
extern bool namegt(const NameData *arg1, const NameData *arg2);
extern bool namege(const NameData *arg1, const NameData *arg2);
extern int namecpy(Name n1, Name n2);
extern int namestrcpy(Name name, char *str);
extern int namestrcmp(Name name, char *str);
extern int namestrcpy(Name name, const char *str);
extern int namestrcmp(Name name, const char *str);
/* numutils.c */
/* XXX hack. HP-UX has a ltoa (with different arguments) already. */

View File

@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: rel.h,v 1.31 2000/01/10 17:14:44 momjian Exp $
* $Id: rel.h,v 1.32 2000/01/22 14:20:56 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -176,7 +176,7 @@ typedef Relation *RelationPtr;
* Returns a Relation Name
*/
/* added to prevent circular dependency. bjm 1999/11/15 */
char *get_temp_rel_by_physicalname(char *relname);
char *get_temp_rel_by_physicalname(const char *relname);
#define RelationGetRelationName(relation) \
(\
(strncmp(RelationGetPhysicalRelationName(relation), \

View File

@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: relcache.h,v 1.16 1999/11/21 01:58:20 tgl Exp $
* $Id: relcache.h,v 1.17 2000/01/22 14:20:56 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -20,7 +20,7 @@
*/
extern Relation RelationIdCacheGetRelation(Oid relationId);
extern Relation RelationIdGetRelation(Oid relationId);
extern Relation RelationNameGetRelation(char *relationName);
extern Relation RelationNameGetRelation(const char *relationName);
extern void RelationClose(Relation relation);
extern void RelationForgetRelation(Oid rid);

View File

@ -6,7 +6,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: temprel.h,v 1.6 1999/11/16 04:14:03 momjian Exp $
* $Id: temprel.h,v 1.7 2000/01/22 14:20:56 petere Exp $
*
*-------------------------------------------------------------------------
*/
@ -15,11 +15,11 @@
#include "access/htup.h"
void create_temp_relation(char *relname, HeapTuple pg_class_tuple);
void create_temp_relation(const char *relname, HeapTuple pg_class_tuple);
void remove_all_temp_relations(void);
void invalidate_temp_relations(void);
void remove_temp_relation(Oid relid);
char *get_temp_rel_by_username(char *user_relname);
char *get_temp_rel_by_physicalname(char *relname);
char *get_temp_rel_by_username(const char *user_relname);
char *get_temp_rel_by_physicalname(const char *relname);
#endif /* TEMPREL_H */