*
*
* 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
* ----------------
*/
Relation
-heap_openr(char *relationName, LOCKMODE lockmode)
+heap_openr(const char *relationName, LOCKMODE lockmode)
{
Relation r;
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
snprintf(path, bufsize, "%s/%s", DataDir, relname);
return path;
}
- return relname;
+ return pstrdup(relname);
}
/*
*
*
* 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
* --------------------------------
*/
Oid
-RelnameFindRelid(char *relname)
+RelnameFindRelid(const char *relname)
{
HeapTuple tuple;
Oid relid;
* --------------------------------
*/
void
-heap_drop_with_catalog(char *relname)
+heap_drop_with_catalog(const char *relname)
{
Relation rel;
Oid rid;
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
* ----------------------------------------------------------------
*/
void
-TypeRename(char *oldTypeName, char *newTypeName)
+TypeRename(const char *oldTypeName, const char *newTypeName)
{
Relation pg_type_desc;
Relation idescs[Num_pg_type_indices];
*
*
* 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
#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"
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,
* 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! */
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);
/* 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);
/*
* 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");
}
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
* renamerel - change the name of a relation
*/
void
-renamerel(char *oldrelname, char *newrelname)
+renamerel(const char *oldrelname, const char *newrelname)
{
int i;
Relation targetrelation;
*
*
* 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
$$ = (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 ... */
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
* Now, always NULL terminated
*/
NameData *
-namein(char *s)
+namein(const char *s)
{
NameData *result;
int len;
* nameout - converts internal reprsentation to "..."
*/
char *
-nameout(NameData *s)
+nameout(const NameData *s)
{
if (s == NULL)
return "-";
*
*/
bool
-nameeq(NameData *arg1, NameData *arg2)
+nameeq(const NameData *arg1, const NameData *arg2)
{
if (!arg1 || !arg2)
return 0;
}
bool
-namene(NameData *arg1, NameData *arg2)
+namene(const NameData *arg1, const NameData *arg2)
{
if (arg1 == NULL || arg2 == NULL)
return (bool) 0;
}
bool
-namelt(NameData *arg1, NameData *arg2)
+namelt(const NameData *arg1, const NameData *arg2)
{
if (arg1 == NULL || arg2 == NULL)
return (bool) 0;
}
bool
-namele(NameData *arg1, NameData *arg2)
+namele(const NameData *arg1, const NameData *arg2)
{
if (arg1 == NULL || arg2 == NULL)
return (bool) 0;
}
bool
-namegt(NameData *arg1, NameData *arg2)
+namegt(const NameData *arg1, const NameData *arg2)
{
if (arg1 == NULL || arg2 == NULL)
return (bool) 0;
}
bool
-namege(NameData *arg1, NameData *arg2)
+namege(const NameData *arg1, const NameData *arg2)
{
if (arg1 == NULL || arg2 == NULL)
return (bool) 0;
#endif
int
-namestrcpy(Name name, char *str)
+namestrcpy(Name name, const char *str)
{
if (!name || !str)
return -1;
#ifdef NOT_USED
int
-namestrcat(Name name, char *str)
+namestrcat(Name name, const char *str)
{
int i;
char *p,
#endif
int
-namestrcmp(Name name, char *str)
+namestrcmp(Name name, const char *str)
{
if (!name && !str)
return 0;
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
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);
* --------------------------------
*/
static Relation
-RelationNameCacheGetRelation(char *relationName)
+RelationNameCacheGetRelation(const char *relationName)
{
Relation rd;
NameData name;
* --------------------------------
*/
Relation
-RelationNameGetRelation(char *relationName)
+RelationNameGetRelation(const char *relationName)
{
char *temprelname;
Relation rd;
* ----------------
*/
buildinfo.infotype = INFO_RELNAME;
- buildinfo.i.info_name = relationName;
+ buildinfo.i.info_name = (char *)relationName;
rd = RelationBuildDesc(buildinfo, NULL);
return rd;
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));
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);
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);
*
*
* 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 $
*
*-------------------------------------------------------------------------
*/
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;
}
char *
-get_temp_rel_by_username(char *user_relname)
+get_temp_rel_by_username(const char *user_relname)
{
List *l;
}
char *
-get_temp_rel_by_physicalname(char *relname)
+get_temp_rel_by_physicalname(const char *relname)
{
List *l;
return temp_rel->user_relname;
}
/* needed for bootstrapping temp tables */
- return relname;
+ return pstrdup(relname);
}
*
* 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"
pset.inputfile = filename;
result = MainLoop(fd);
fclose(fd);
+ pset.inputfile = NULL;
return (result == EXIT_SUCCESS);
}
*
* 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 $
*
*-------------------------------------------------------------------------
*/
/* 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);
*
* 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 $
*
*-------------------------------------------------------------------------
*/
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);
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);
*
* 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
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);
*
* 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 $
*
*-------------------------------------------------------------------------
*/
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 */
*
* 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.
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. */
*
* 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 $
*
*-------------------------------------------------------------------------
*/
* 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), \
*
* 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 $
*
*-------------------------------------------------------------------------
*/
*/
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);
*
* 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 $
*
*-------------------------------------------------------------------------
*/
#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 */