diff --git a/contrib/spi/autoinc.c b/contrib/spi/autoinc.c index 804e1d63838dbb9b12b616bd98de3d9785cff299..f8b86217e73b79115cef4017d32a4d013246dc12 100644 --- a/contrib/spi/autoinc.c +++ b/contrib/spi/autoinc.c @@ -53,12 +53,13 @@ autoinc(PG_FUNCTION_ARGS) for (i = 0; i < nargs;) { - text *seqname; int attnum = SPI_fnumber(tupdesc, args[i]); int32 val; + Datum seqname; if (attnum < 0) - elog(ERROR, "autoinc (%s): there is no attribute %s", relname, args[i]); + elog(ERROR, "autoinc (%s): there is no attribute %s", + relname, args[i]); if (SPI_gettypeid(tupdesc, attnum) != INT4OID) elog(ERROR, "autoinc (%s): attribute %s must be of INT4 type", relname, args[i]); @@ -73,13 +74,12 @@ autoinc(PG_FUNCTION_ARGS) i++; chattrs[chnattrs] = attnum; - seqname = textin(args[i]); - newvals[chnattrs] = DirectFunctionCall1(nextval, - PointerGetDatum(seqname)); + seqname = DirectFunctionCall1(textin, + CStringGetDatum(args[i])); + newvals[chnattrs] = DirectFunctionCall1(nextval, seqname); if (DatumGetInt32(newvals[chnattrs]) == 0) - newvals[chnattrs] = DirectFunctionCall1(nextval, - PointerGetDatum(seqname)); - pfree(seqname); + newvals[chnattrs] = DirectFunctionCall1(nextval, seqname); + pfree(DatumGetTextP(seqname)); chnattrs++; i++; } diff --git a/contrib/spi/insert_username.c b/contrib/spi/insert_username.c index 61b4150084522f506c8c7419d107caa15ac8cc98..978a873ec90dd67b7fe22009c560344b3e88d747 100644 --- a/contrib/spi/insert_username.c +++ b/contrib/spi/insert_username.c @@ -62,7 +62,7 @@ insert_username(PG_FUNCTION_ARGS) relname, args[0]); /* create fields containing name */ - newval = PointerGetDatum(textin(GetPgUserName())); + newval = DirectFunctionCall1(textin, CStringGetDatum(GetPgUserName())); /* construct new tuple */ rettuple = SPI_modifytuple(rel, rettuple, 1, &attnum, &newval, NULL); diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index bd330b5d1ea51ac8d49f6a7d9d700e2a06a395df..08b5e64c53def257e5b035f1adfdf8e2d9b3391f 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.138 2000/07/04 06:11:23 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/heap.c,v 1.139 2000/07/05 23:11:06 tgl Exp $ * * * INTERFACE ROUTINES @@ -1121,7 +1121,8 @@ RelationTruncateIndexes(Relation heapRelation) /* If a valid where predicate, compute predicate Node */ if (VARSIZE(&index->indpred) != 0) { - predString = textout(&index->indpred); + predString = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&index->indpred))); oldPred = stringToNode(predString); pfree(predString); } @@ -1602,8 +1603,10 @@ StoreAttrDefault(Relation rel, AttrNumber attnum, char *adbin, values[Anum_pg_attrdef_adrelid - 1] = RelationGetRelid(rel); values[Anum_pg_attrdef_adnum - 1] = attnum; - values[Anum_pg_attrdef_adbin - 1] = PointerGetDatum(textin(adbin)); - values[Anum_pg_attrdef_adsrc - 1] = PointerGetDatum(textin(adsrc)); + values[Anum_pg_attrdef_adbin - 1] = DirectFunctionCall1(textin, + CStringGetDatum(adbin)); + values[Anum_pg_attrdef_adsrc - 1] = DirectFunctionCall1(textin, + CStringGetDatum(adsrc)); adrel = heap_openr(AttrDefaultRelationName, RowExclusiveLock); tuple = heap_formtuple(adrel->rd_att, values, nulls); heap_insert(adrel, tuple); @@ -1685,8 +1688,10 @@ StoreRelCheck(Relation rel, char *ccname, char *ccbin) values[Anum_pg_relcheck_rcrelid - 1] = RelationGetRelid(rel); values[Anum_pg_relcheck_rcname - 1] = PointerGetDatum(namein(ccname)); - values[Anum_pg_relcheck_rcbin - 1] = PointerGetDatum(textin(ccbin)); - values[Anum_pg_relcheck_rcsrc - 1] = PointerGetDatum(textin(ccsrc)); + values[Anum_pg_relcheck_rcbin - 1] = DirectFunctionCall1(textin, + CStringGetDatum(ccbin)); + values[Anum_pg_relcheck_rcsrc - 1] = DirectFunctionCall1(textin, + CStringGetDatum(ccsrc)); rcrel = heap_openr(RelCheckRelationName, RowExclusiveLock); tuple = heap_formtuple(rcrel->rd_att, values, nulls); heap_insert(rcrel, tuple); diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index bedb84e6d24d1e9d77fec072353dcd9e5f0d1d03..e1909e4404ccf4da4b6581ce835cf0f2fa7de880 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.123 2000/07/05 16:17:37 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/index.c,v 1.124 2000/07/05 23:11:06 tgl Exp $ * * * INTERFACE ROUTINES @@ -680,11 +680,13 @@ UpdateIndexRelation(Oid indexoid, if (predicate != NULL) { predString = nodeToString(predicate); - predText = textin(predString); + predText = DatumGetTextP(DirectFunctionCall1(textin, + CStringGetDatum(predString))); pfree(predString); } else - predText = textin(""); + predText = DatumGetTextP(DirectFunctionCall1(textin, + CStringGetDatum(""))); predLen = VARSIZE(predText); itupLen = predLen + sizeof(FormData_pg_index); @@ -824,11 +826,13 @@ UpdateIndexPredicate(Oid indexoid, Node *oldPred, Node *predicate) if (newPred != NULL) { predString = nodeToString(newPred); - predText = textin(predString); + predText = DatumGetTextP(DirectFunctionCall1(textin, + CStringGetDatum(predString))); pfree(predString); } else - predText = textin(""); + predText = DatumGetTextP(DirectFunctionCall1(textin, + CStringGetDatum(""))); /* open the index system catalog relation */ pg_index = heap_openr(IndexRelationName, RowExclusiveLock); @@ -1337,7 +1341,7 @@ IndexesAreActive(Oid relid, bool confirmCommitted) elog(ERROR, "IndexesAreActive couldn't lock %u", relid); if (((Form_pg_class) GETSTRUCT(&tuple))->relkind != RELKIND_RELATION && ((Form_pg_class) GETSTRUCT(&tuple))->relkind != RELKIND_TOASTVALUE) - elog(ERROR, "relation %u isn't an relation", relid); + elog(ERROR, "relation %u isn't an indexable relation", relid); isactive = ((Form_pg_class) GETSTRUCT(&tuple))->relhasindex; ReleaseBuffer(buffer); if (isactive) @@ -2080,7 +2084,8 @@ reindex_index(Oid indexId, bool force) /* If a valid where predicate, compute predicate Node */ if (VARSIZE(&index->indpred) != 0) { - predString = textout(&index->indpred); + predString = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&index->indpred))); oldPred = stringToNode(predString); pfree(predString); } diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c index 37c6a8cb41d87bbf50d47a570936e65fcec88108..f068c897ec13e732d238e572a691cd37525962e6 100644 --- a/src/backend/catalog/pg_aggregate.c +++ b/src/backend/catalog/pg_aggregate.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.33 2000/05/30 04:24:36 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/pg_aggregate.c,v 1.34 2000/07/05 23:11:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -238,12 +238,14 @@ AggregateCreate(char *aggName, values[Anum_pg_aggregate_aggfinaltype - 1] = ObjectIdGetDatum(fret); if (agginitval1) - values[Anum_pg_aggregate_agginitval1 - 1] = PointerGetDatum(textin(agginitval1)); + values[Anum_pg_aggregate_agginitval1 - 1] = + DirectFunctionCall1(textin, CStringGetDatum(agginitval1)); else nulls[Anum_pg_aggregate_agginitval1 - 1] = 'n'; if (agginitval2) - values[Anum_pg_aggregate_agginitval2 - 1] = PointerGetDatum(textin(agginitval2)); + values[Anum_pg_aggregate_agginitval2 - 1] = + DirectFunctionCall1(textin, CStringGetDatum(agginitval2)); else nulls[Anum_pg_aggregate_agginitval2 - 1] = 'n'; @@ -277,7 +279,7 @@ AggNameGetInitVal(char *aggName, Oid basetype, int xfuncno, bool *isNull) Oid transtype, typinput, typelem; - text *textInitVal; + Datum textInitVal; char *strInitVal; Datum initVal; @@ -312,17 +314,15 @@ AggNameGetInitVal(char *aggName, Oid basetype, int xfuncno, bool *isNull) initValAttno = Anum_pg_aggregate_agginitval2; } - textInitVal = (text *) fastgetattr(tup, initValAttno, - RelationGetDescr(aggRel), - isNull); - if (!PointerIsValid(textInitVal)) - *isNull = true; + textInitVal = fastgetattr(tup, initValAttno, + RelationGetDescr(aggRel), + isNull); if (*isNull) { heap_close(aggRel, AccessShareLock); return PointerGetDatum(NULL); } - strInitVal = textout(textInitVal); + strInitVal = DatumGetCString(DirectFunctionCall1(textout, textInitVal)); heap_close(aggRel, AccessShareLock); diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index e6091f6f63c749cb5dd64a79ab85f492ffc3effc..0322d982d16c24e75f759caa1970c811af8cda26 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.45 2000/06/28 03:31:23 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/pg_proc.c,v 1.46 2000/07/05 23:11:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -156,7 +156,8 @@ ProcedureCreate(char *procedureName, */ text *prosrctext; - prosrctext = textin(prosrc); + prosrctext = DatumGetTextP(DirectFunctionCall1(textin, + CStringGetDatum(prosrc))); tup = SearchSysCacheTuple(PROSRC, PointerGetDatum(prosrctext), 0, 0, 0); @@ -306,8 +307,10 @@ ProcedureCreate(char *procedureName, values[i++] = Int32GetDatum(perbyte_cpu); /* properbyte_cpu */ values[i++] = Int32GetDatum(percall_cpu); /* propercall_cpu */ values[i++] = Int32GetDatum(outin_ratio); /* prooutin_ratio */ - values[i++] = (Datum) textin(prosrc); /* prosrc */ - values[i++] = (Datum) textin(probin); /* probin */ + values[i++] = DirectFunctionCall1(textin, /* prosrc */ + CStringGetDatum(prosrc)); + values[i++] = DirectFunctionCall1(textin, /* probin */ + CStringGetDatum(probin)); rel = heap_openr(ProcedureRelationName, RowExclusiveLock); diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c index bd34ee0a20061917308b6b2b68267636be0e7050..8356958d325186a008be2f0172f3a0a4b32dc886 100644 --- a/src/backend/catalog/pg_type.c +++ b/src/backend/catalog/pg_type.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.53 2000/07/03 23:09:28 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/catalog/pg_type.c,v 1.54 2000/07/05 23:11:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -167,32 +167,29 @@ TypeShellMakeWithOpenRelation(Relation pg_type_desc, char *typeName) } /* ---------------- - * initialize *values with the type name and + * initialize *values with the type name and dummy values * ---------------- */ i = 0; namestrcpy(&name, typeName); - values[i++] = NameGetDatum(&name); /* 1 */ - values[i++] = (Datum) InvalidOid; /* 2 */ - values[i++] = (Datum) (int16) 0; /* 3 */ - values[i++] = (Datum) (int16) 0; /* 4 */ - values[i++] = (Datum) (bool) 0; /* 5 */ - values[i++] = (Datum) (bool) 0; /* 6 */ - values[i++] = (Datum) (bool) 0; /* 7 */ - values[i++] = (Datum) (bool) 0; /* 8 */ - values[i++] = (Datum) InvalidOid; /* 9 */ - values[i++] = (Datum) InvalidOid; /* 10 */ - values[i++] = (Datum) InvalidOid; /* 11 */ - values[i++] = (Datum) InvalidOid; /* 12 */ - values[i++] = (Datum) InvalidOid; /* 13 */ - values[i++] = (Datum) InvalidOid; /* 14 */ - values[i++] = (Datum) 'p'; /* 15 */ - values[i++] = (Datum) 'i'; /* 16 */ - - /* - * ... and fill typdefault with a bogus value - */ - values[i++] = (Datum) textin(typeName); /* 15 */ + values[i++] = NameGetDatum(&name); /* 1 */ + values[i++] = ObjectIdGetDatum(InvalidOid); /* 2 */ + values[i++] = Int16GetDatum(0); /* 3 */ + values[i++] = Int16GetDatum(0); /* 4 */ + values[i++] = BoolGetDatum(false); /* 5 */ + values[i++] = BoolGetDatum(false); /* 6 */ + values[i++] = BoolGetDatum(false); /* 7 */ + values[i++] = BoolGetDatum(false); /* 8 */ + values[i++] = ObjectIdGetDatum(InvalidOid); /* 9 */ + values[i++] = ObjectIdGetDatum(InvalidOid); /* 10 */ + values[i++] = ObjectIdGetDatum(InvalidOid); /* 11 */ + values[i++] = ObjectIdGetDatum(InvalidOid); /* 12 */ + values[i++] = ObjectIdGetDatum(InvalidOid); /* 13 */ + values[i++] = ObjectIdGetDatum(InvalidOid); /* 14 */ + values[i++] = CharGetDatum('p'); /* 15 */ + values[i++] = CharGetDatum('i'); /* 16 */ + values[i++] = DirectFunctionCall1(textin, + CStringGetDatum(typeName)); /* 17 */ /* ---------------- * create a new type tuple with FormHeapTuple @@ -460,9 +457,8 @@ TypeCreate(char *typeName, * initialize the default value for this type. * ---------------- */ - values[i] = (Datum) textin(PointerIsValid(defaultTypeValue) /* 17 */ - ? defaultTypeValue : "-"); /* XXX default - * typdefault */ + values[i] = DirectFunctionCall1(textin, /* 17 */ + CStringGetDatum(defaultTypeValue ? defaultTypeValue : "-")); /* ---------------- * open pg_type and begin a scan for the type name. diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index 719e20a4161f23508392bc9f4c3400ddb370be47..c584d9722091b29c1325fa377698e663d710ca2c 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/analyze.c,v 1.2 2000/05/30 04:25:00 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/analyze.c,v 1.3 2000/07/05 23:11:08 tgl Exp $ * *------------------------------------------------------------------------- @@ -515,8 +515,8 @@ update_attstats(Oid relid, int natts, VacAttrStats *vacattrstats) */ if (VacAttrStatsLtGtValid(stats) && stats->initialized) { - float32data nullratio; - float32data bestratio; + float4 nullratio; + float4 bestratio; FmgrInfo out_function; char *out_string; double best_cnt_d = stats->best_cnt, @@ -541,26 +541,28 @@ update_attstats(Oid relid, int natts, VacAttrStats *vacattrstats) values[i++] = ObjectIdGetDatum(relid); /* starelid */ values[i++] = Int16GetDatum(attp->attnum); /* staattnum */ values[i++] = ObjectIdGetDatum(stats->op_cmplt); /* staop */ - /* hack: this code knows float4 is pass-by-ref */ - values[i++] = Float32GetDatum(&nullratio); /* stanullfrac */ - values[i++] = Float32GetDatum(&bestratio); /* stacommonfrac */ + values[i++] = Float4GetDatum(nullratio); /* stanullfrac */ + values[i++] = Float4GetDatum(bestratio); /* stacommonfrac */ out_string = DatumGetCString(FunctionCall3(&out_function, stats->best, ObjectIdGetDatum(stats->typelem), Int32GetDatum(stats->attr->atttypmod))); - values[i++] = PointerGetDatum(textin(out_string)); /* stacommonval */ + values[i++] = DirectFunctionCall1(textin, /* stacommonval */ + CStringGetDatum(out_string)); pfree(out_string); out_string = DatumGetCString(FunctionCall3(&out_function, stats->min, ObjectIdGetDatum(stats->typelem), Int32GetDatum(stats->attr->atttypmod))); - values[i++] = PointerGetDatum(textin(out_string)); /* staloval */ + values[i++] = DirectFunctionCall1(textin, /* staloval */ + CStringGetDatum(out_string)); pfree(out_string); out_string = DatumGetCString(FunctionCall3(&out_function, stats->max, ObjectIdGetDatum(stats->typelem), Int32GetDatum(stats->attr->atttypmod))); - values[i++] = PointerGetDatum(textin(out_string)); /* stahival */ + values[i++] = DirectFunctionCall1(textin, /* stahival */ + CStringGetDatum(out_string)); pfree(out_string); stup = heap_formtuple(sd->rd_att, values, nulls); diff --git a/src/backend/commands/command.c b/src/backend/commands/command.c index e3847ab5f4d42eb8b5b587c3266c383d00a1b1ad..6648e66f4e398f73cc7a8be56bd25f5203f7898d 100644 --- a/src/backend/commands/command.c +++ b/src/backend/commands/command.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.87 2000/07/05 16:17:38 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/Attic/command.c,v 1.88 2000/07/05 23:11:09 tgl Exp $ * * NOTES * The PerformAddAttribute() code, like most of the relation @@ -788,7 +788,6 @@ RemoveColumnReferences(Oid reloid, int attnum, bool checkonly, HeapTuple reltup) HeapTuple htup, indexTuple; Form_pg_index index; - Form_pg_relcheck relcheck; Form_pg_class pgcform = (Form_pg_class) NULL; int i; bool checkok = true; @@ -807,13 +806,13 @@ RemoveColumnReferences(Oid reloid, int attnum, bool checkonly, HeapTuple reltup) while (HeapTupleIsValid(htup = systable_getnext(sysscan))) { + Form_pg_relcheck relcheck; char *ccbin; Node *node; relcheck = (Form_pg_relcheck) GETSTRUCT(htup); - ccbin = textout(&relcheck->rcbin); - if (!ccbin) - continue; + ccbin = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&relcheck->rcbin))); node = stringToNode(ccbin); pfree(ccbin); if (find_attribute_in_node(node, attnum)) @@ -1322,10 +1321,12 @@ AlterTableCreateToastTable(const char *relationName, bool silent) BYTEAOID, -1, 0, false); - /* XXX what if owning relation is temp? need we mark toasttable too? */ - /* XXX How do we know? No naming collisions possible because names */ - /* are OID based. And toast table disappears when master table */ - /* is destroyed. So what is it good for anyway? Jan */ + /* + * Note: the toast relation is considered a "normal" relation even if + * its master relation is a temp table. There cannot be any naming + * collision, and the toast rel will be destroyed when its master is, + * so there's no need to handle the toast rel as temp. + */ heap_create_with_catalog(toast_relname, tupdesc, RELKIND_TOASTVALUE, false, true); @@ -1399,7 +1400,7 @@ AlterTableCreateToastTable(const char *relationName, bool silent) heap_freetuple(reltup); /* - * Close relatons and make changes visible + * Close relations and make changes visible */ heap_close(class_rel, NoLock); heap_close(rel, NoLock); diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c index 2b9bf4d7723ff035f1495e5db014e4626c0af0ed..c76912f332a85460a55391940bccf295fb8ff90d 100644 --- a/src/backend/commands/comment.c +++ b/src/backend/commands/comment.c @@ -151,7 +151,7 @@ CreateComments(Oid oid, char *comment) } i = 0; values[i++] = ObjectIdGetDatum(oid); - values[i++] = (Datum) textin(comment); + values[i++] = DirectFunctionCall1(textin, CStringGetDatum(comment)); } /*** Now, open pg_description and attempt to find the old tuple ***/ diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 177b339be8cdae73677fcea0cb1af282acdb9b4b..441941762eaac5f5a13076f336f26604d942d9ec 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.116 2000/06/28 06:05:36 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.117 2000/07/05 23:11:11 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -676,7 +676,8 @@ CopyFrom(Relation rel, bool binary, bool oids, FILE *fp, char *delim, char *null indexNatts[i] = natts; if (VARSIZE(&pgIndexP[i]->indpred) != 0) { - predString = textout(&pgIndexP[i]->indpred); + predString = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&pgIndexP[i]->indpred))); indexPred[i] = stringToNode(predString); pfree(predString); /* make dummy ExprContext for use by ExecQual */ diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 72cfd297aa7e55ed6c6dcb1ecd66cca328405106..bda64842c49d9842e9342949e6c901f5e07ce16e 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.57 2000/06/02 04:04:54 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/dbcommands.c,v 1.58 2000/07/05 23:11:11 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -101,7 +101,8 @@ createdb(const char *dbname, const char *dbpath, int encoding) new_record[Anum_pg_database_datname - 1] = NameGetDatum(namein(dbname)); new_record[Anum_pg_database_datdba - 1] = Int32GetDatum(user_id); new_record[Anum_pg_database_encoding - 1] = Int32GetDatum(encoding); - new_record[Anum_pg_database_datpath - 1] = PointerGetDatum(textin(locbuf)); + new_record[Anum_pg_database_datpath - 1] = DirectFunctionCall1(textin, + CStringGetDatum(locbuf)); tuple = heap_formtuple(pg_database_dsc, new_record, new_record_nulls); diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index 1446aa8844b7db9eedbf54a18b542af82059f32d..efe8a44180a7554a091b28fed77b093e83532f40 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.33 2000/07/04 06:11:27 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/indexcmds.c,v 1.34 2000/07/05 23:11:11 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -304,7 +304,8 @@ ExtendIndex(char *indexRelationName, Expr *predicate, List *rangetable) { char *predString; - predString = textout(&index->indpred); + predString = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&index->indpred))); oldPred = stringToNode(predString); pfree(predString); } diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c index 9b5f7c1ddff64a3a40e73918a41800dbfbf66307..ec8aec7005f169e3df795090322a658d2403293d 100644 --- a/src/backend/commands/proclang.c +++ b/src/backend/commands/proclang.c @@ -117,10 +117,11 @@ CreateProceduralLanguage(CreatePLangStmt *stmt) i = 0; values[i++] = PointerGetDatum(languageName); - values[i++] = Int8GetDatum((bool) 1); - values[i++] = Int8GetDatum(stmt->pltrusted); + values[i++] = BoolGetDatum(true); /* lanispl */ + values[i++] = BoolGetDatum(stmt->pltrusted); values[i++] = ObjectIdGetDatum(procTup->t_data->t_oid); - values[i++] = (Datum) textin(stmt->plcompiler); + values[i++] = DirectFunctionCall1(textin, + CStringGetDatum(stmt->plcompiler)); rel = heap_openr(LanguageRelationName, RowExclusiveLock); diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 968ae569ee019e555329cd395c797826b219ebb3..80fca6a38a116bf623168e9766034be3970e54b1 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -377,7 +377,8 @@ setval(PG_FUNCTION_ARGS) static char * get_seq_name(text *seqin) { - char *rawname = textout(seqin); + char *rawname = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(seqin))); int rawlen = strlen(rawname); char *seqname; diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index 9bb36311cc8d74d4023aff8635ceafac69eb5000..4698fa850c07033d2df75c3f090277ec596ff15d 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -6,7 +6,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.62 2000/06/28 03:31:28 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/user.c,v 1.63 2000/07/05 23:11:11 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -121,7 +121,8 @@ write_password_file(Relation rel) CRYPT_PWD_FILE_SEPSTR "%s\n", nameout(DatumGetName(datum_n)), - null_p ? "" : textout((text *) datum_p), + null_p ? "" : + DatumGetCString(DirectFunctionCall1(textout, datum_p)), null_v ? "\\N" : DatumGetCString(DirectFunctionCall1(nabstimeout, datum_v)) ); @@ -257,7 +258,8 @@ CreateUser(CreateUserStmt *stmt) new_record[Anum_pg_shadow_usecatupd - 1] = (Datum) (stmt->createuser); if (stmt->password) - new_record[Anum_pg_shadow_passwd - 1] = PointerGetDatum(textin(stmt->password)); + new_record[Anum_pg_shadow_passwd - 1] = + DirectFunctionCall1(textin, CStringGetDatum(stmt->password)); if (stmt->validUntil) new_record[Anum_pg_shadow_valuntil - 1] = DirectFunctionCall1(nabstimein, CStringGetDatum(stmt->validUntil)); @@ -424,13 +426,15 @@ AlterUser(AlterUserStmt *stmt) /* password */ if (stmt->password) { - new_record[Anum_pg_shadow_passwd - 1] = PointerGetDatum(textin(stmt->password)); + new_record[Anum_pg_shadow_passwd - 1] = + DirectFunctionCall1(textin, CStringGetDatum(stmt->password)); new_record_nulls[Anum_pg_shadow_passwd - 1] = ' '; } else { /* leave as is */ - new_record[Anum_pg_shadow_passwd - 1] = heap_getattr(tuple, Anum_pg_shadow_passwd, pg_shadow_dsc, &null); + new_record[Anum_pg_shadow_passwd - 1] = + heap_getattr(tuple, Anum_pg_shadow_passwd, pg_shadow_dsc, &null); new_record_nulls[Anum_pg_shadow_passwd - 1] = null ? 'n' : ' '; } @@ -444,7 +448,8 @@ AlterUser(AlterUserStmt *stmt) else { /* leave as is */ - new_record[Anum_pg_shadow_valuntil - 1] = heap_getattr(tuple, Anum_pg_shadow_valuntil, pg_shadow_dsc, &null); + new_record[Anum_pg_shadow_valuntil - 1] = + heap_getattr(tuple, Anum_pg_shadow_valuntil, pg_shadow_dsc, &null); new_record_nulls[Anum_pg_shadow_valuntil - 1] = null ? 'n' : ' '; } diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 3777b68e64c655bc303997d17caab0e5095e8dfa..a023405a2754be53532a77f0c1f4ba97ca75db3a 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.61 2000/06/19 23:40:47 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/executor/execUtils.c,v 1.62 2000/07/05 23:11:14 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -850,7 +850,8 @@ ExecOpenIndices(RelationInfo *resultRelationInfo) { char *predString; - predString = textout(&indexStruct->indpred); + predString = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&indexStruct->indpred))); predicate = (PredInfo *) stringToNode(predString); pfree(predString); } diff --git a/src/backend/libpq/be-pqexec.c b/src/backend/libpq/be-pqexec.c index 6834f51311353b0d72a59f64fe6203ed3f944b4d..78745d50a7f30e362188051402e794d5361ed0b8 100644 --- a/src/backend/libpq/be-pqexec.c +++ b/src/backend/libpq/be-pqexec.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-pqexec.c,v 1.34 2000/07/04 06:11:37 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/Attic/be-pqexec.c,v 1.35 2000/07/05 23:11:19 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -360,7 +360,9 @@ pqtest_PQfn(char *q) else { pqargs[k].len = VAR_LENGTH_ARG; - pqargs[k].u.ptr = (int *) textin(fields[j]); + pqargs[k].u.ptr = (int *) + DatumGetTextP(DirectFunctionCall1(textin, + CStringGetDatum(fields[j]))); printf("pqtest_PQfn: arg %d is text %s\n", k, fields[j]); /* debug */ } } @@ -405,9 +407,8 @@ pqtest(struct varlena * vlena) * get the query * ---------------- */ - q = textout(vlena); - if (q == NULL) - return -1; + q = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(vlena))); switch (q[0]) { diff --git a/src/backend/optimizer/path/indxpath.c b/src/backend/optimizer/path/indxpath.c index d727ddc24b6c5e30bfefa99c9323cb4c6510d56e..7b87555df0991fe7a7fffc9ff3a66f52395f8613 100644 --- a/src/backend/optimizer/path/indxpath.c +++ b/src/backend/optimizer/path/indxpath.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.85 2000/05/30 00:49:47 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/path/indxpath.c,v 1.86 2000/07/05 23:11:22 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1658,7 +1658,8 @@ match_special_index_operator(Expr *clause, Oid opclass, Oid relam, case OID_VARCHAR_LIKE_OP: case OID_NAME_LIKE_OP: /* the right-hand const is type text for all of these */ - patt = textout((text *) DatumGetPointer(constvalue)); + patt = DatumGetCString(DirectFunctionCall1(textout, + constvalue)); isIndexable = pattern_fixed_prefix(patt, Pattern_Type_Like, &prefix, &rest) != Pattern_Prefix_None; if (prefix) @@ -1671,7 +1672,8 @@ match_special_index_operator(Expr *clause, Oid opclass, Oid relam, case OID_VARCHAR_REGEXEQ_OP: case OID_NAME_REGEXEQ_OP: /* the right-hand const is type text for all of these */ - patt = textout((text *) DatumGetPointer(constvalue)); + patt = DatumGetCString(DirectFunctionCall1(textout, + constvalue)); isIndexable = pattern_fixed_prefix(patt, Pattern_Type_Regex, &prefix, &rest) != Pattern_Prefix_None; if (prefix) @@ -1684,7 +1686,8 @@ match_special_index_operator(Expr *clause, Oid opclass, Oid relam, case OID_VARCHAR_ICREGEXEQ_OP: case OID_NAME_ICREGEXEQ_OP: /* the right-hand const is type text for all of these */ - patt = textout((text *) DatumGetPointer(constvalue)); + patt = DatumGetCString(DirectFunctionCall1(textout, + constvalue)); isIndexable = pattern_fixed_prefix(patt, Pattern_Type_Regex_IC, &prefix, &rest) != Pattern_Prefix_None; if (prefix) @@ -1784,7 +1787,8 @@ expand_indexqual_conditions(List *indexquals) case OID_NAME_LIKE_OP: /* the right-hand const is type text for all of these */ constvalue = ((Const *) rightop)->constvalue; - patt = textout((text *) DatumGetPointer(constvalue)); + patt = DatumGetCString(DirectFunctionCall1(textout, + constvalue)); pstatus = pattern_fixed_prefix(patt, Pattern_Type_Like, &prefix, &rest); resultquals = nconc(resultquals, @@ -1801,7 +1805,8 @@ expand_indexqual_conditions(List *indexquals) case OID_NAME_REGEXEQ_OP: /* the right-hand const is type text for all of these */ constvalue = ((Const *) rightop)->constvalue; - patt = textout((text *) DatumGetPointer(constvalue)); + patt = DatumGetCString(DirectFunctionCall1(textout, + constvalue)); pstatus = pattern_fixed_prefix(patt, Pattern_Type_Regex, &prefix, &rest); resultquals = nconc(resultquals, @@ -1818,7 +1823,8 @@ expand_indexqual_conditions(List *indexquals) case OID_NAME_ICREGEXEQ_OP: /* the right-hand const is type text for all of these */ constvalue = ((Const *) rightop)->constvalue; - patt = textout((text *) DatumGetPointer(constvalue)); + patt = DatumGetCString(DirectFunctionCall1(textout, + constvalue)); pstatus = pattern_fixed_prefix(patt, Pattern_Type_Regex_IC, &prefix, &rest); resultquals = nconc(resultquals, @@ -1965,7 +1971,6 @@ find_operator(const char *opname, Oid datatype) static Datum string_to_datum(const char *str, Oid datatype) { - /* * We cheat a little by assuming that textin() will do for bpchar and * varchar constants too... @@ -1973,7 +1978,7 @@ string_to_datum(const char *str, Oid datatype) if (datatype == NAMEOID) return PointerGetDatum(namein((char *) str)); else - return PointerGetDatum(textin((char *) str)); + return DirectFunctionCall1(textin, CStringGetDatum(str)); } /* diff --git a/src/backend/optimizer/util/plancat.c b/src/backend/optimizer/util/plancat.c index 5c94c87487b5d02edbd25785d012831ef4f83d6a..1bec741c48b657d057faf3a328d03e54acd64a09 100644 --- a/src/backend/optimizer/util/plancat.c +++ b/src/backend/optimizer/util/plancat.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/optimizer/util/plancat.c,v 1.58 2000/06/20 04:22:14 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/optimizer/util/plancat.c,v 1.59 2000/07/05 23:11:26 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -125,8 +125,10 @@ find_secondary_indexes(Query *root, Index relid) info->indproc = index->indproc; /* functional index ?? */ if (VARSIZE(&index->indpred) != 0) /* partial index ?? */ { - char *predString = textout(&index->indpred); + char *predString; + predString = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&index->indpred))); info->indpred = (List *) stringToNode(predString); pfree(predString); } diff --git a/src/backend/parser/parse_coerce.c b/src/backend/parser/parse_coerce.c index f6e01a05ac42053ef4ddf5daa066b2eac88133c0..104a0cb926c29c9bb31adedd3c59bd895ae3f1f9 100644 --- a/src/backend/parser/parse_coerce.c +++ b/src/backend/parser/parse_coerce.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.44 2000/06/15 03:32:19 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_coerce.c,v 2.45 2000/07/05 23:11:32 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -77,7 +77,8 @@ coerce_type(ParseState *pstate, Node *node, Oid inputTypeId, if (!con->constisnull) { /* We know the source constant is really of type 'text' */ - char *val = textout((text *) con->constvalue); + char *val = DatumGetCString(DirectFunctionCall1(textout, + con->constvalue)); newcon->constvalue = stringTypeDatum(targetType, val, atttypmod); pfree(val); diff --git a/src/backend/parser/parse_node.c b/src/backend/parser/parse_node.c index e23d7930b66441968cb6fe6bea64a02ebe791259..273dc0ef64414d4f5d4035c4d0fdb5a5d4af621c 100644 --- a/src/backend/parser/parse_node.c +++ b/src/backend/parser/parse_node.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_node.c,v 1.42 2000/06/14 18:17:36 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_node.c,v 1.43 2000/07/05 23:11:32 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -462,7 +462,7 @@ make_const(Value *value) break; case T_String: - val = PointerGetDatum(textin(strVal(value))); + val = DirectFunctionCall1(textin, CStringGetDatum(strVal(value))); typeid = UNKNOWNOID;/* will be coerced later */ typelen = -1; /* variable len */ diff --git a/src/backend/utils/adt/formatting.c b/src/backend/utils/adt/formatting.c index cf7d3618426a004de6ffdd12eaf640828ef5affc..3df0fe3557952dabc9053e199f3d05e55b2eeb7b 100644 --- a/src/backend/utils/adt/formatting.c +++ b/src/backend/utils/adt/formatting.c @@ -1,7 +1,7 @@ /* ----------------------------------------------------------------------- * formatting.c * - * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.18 2000/07/03 23:09:50 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.19 2000/07/05 23:11:35 tgl Exp $ * * * Portions Copyright (c) 1999-2000, PostgreSQL, Inc @@ -2420,8 +2420,8 @@ timestamp_to_char(PG_FUNCTION_ARGS) len = VARSIZE(fmt) - VARHDRSZ; - if ((!len) || (TIMESTAMP_NOT_FINITE(dt))) - return PointerGetDatum(textin("")); + if (len <= 0 || TIMESTAMP_NOT_FINITE(dt)) + return DirectFunctionCall1(textin, CStringGetDatum("")); ZERO_tm(tm); tzn = NULL; @@ -3956,13 +3956,11 @@ NUM_processor(FormatNode *node, NUMDesc *Num, char *inout, char *number, #define NUM_TOCHAR_prepare \ do { \ len = VARSIZE(fmt) - VARHDRSZ; \ - \ if (len <= 0) \ - return PointerGetDatum(textin("")); \ - \ + return DirectFunctionCall1(textin, CStringGetDatum("")); \ result = (text *) palloc( (len * NUM_MAX_ITEM_SIZ) + 1 + VARHDRSZ); \ format = NUM_cache(len, &Num, VARDATA(fmt), &flag); \ -} while(0) +} while (0) /* ---------- * MACRO: Finish part of NUM diff --git a/src/backend/utils/adt/regexp.c b/src/backend/utils/adt/regexp.c index 052b68137f8843eaa38ce677b3a8ac24f64e8d8b..6bb7bac705d8d41b7b98cea1a635303321f3d6b1 100644 --- a/src/backend/utils/adt/regexp.c +++ b/src/backend/utils/adt/regexp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.30 2000/01/26 05:57:14 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/regexp.c,v 1.31 2000/07/05 23:11:35 tgl Exp $ * * Alistair Crooks added the code for the regex caching * agc - cached the regular expressions used - there's a good chance @@ -68,7 +68,8 @@ RE_compile_and_execute(struct varlena * text_re, char *text, int cflags) char *re; int regcomp_result; - re = textout(text_re); + re = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(text_re))); /* find a previously compiled regular expression */ for (i = 0; i < rec; i++) { diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c index 5cd46bb0de203729dded6fa1595eeb56fe4c58f1..d46c81157da8f56320fff703c6363e22882ba393 100644 --- a/src/backend/utils/adt/selfuncs.c +++ b/src/backend/utils/adt/selfuncs.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.73 2000/06/15 03:32:29 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.74 2000/07/05 23:11:35 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -442,7 +442,7 @@ patternsel(PG_FUNCTION_ARGS, Pattern_Type ptype) /* the right-hand const is type text for all supported operators */ Assert(rtype == TEXTOID); - patt = textout((text *) DatumGetPointer(value)); + patt = DatumGetCString(DirectFunctionCall1(textout, value)); /* divide pattern into fixed prefix and remainder */ pstatus = pattern_fixed_prefix(patt, ptype, &prefix, &rest); @@ -1184,9 +1184,9 @@ getattstatistics(Oid relid, */ if (commonval) { - text *val = (text *) SysCacheGetAttr(STATRELID, tuple, + Datum val = SysCacheGetAttr(STATRELID, tuple, Anum_pg_statistic_stacommonval, - &isnull); + &isnull); if (isnull) { @@ -1195,7 +1195,8 @@ getattstatistics(Oid relid, } else { - char *strval = textout(val); + char *strval = DatumGetCString(DirectFunctionCall1(textout, + val)); *commonval = FunctionCall3(&inputproc, CStringGetDatum(strval), @@ -1207,9 +1208,9 @@ getattstatistics(Oid relid, if (loval) { - text *val = (text *) SysCacheGetAttr(STATRELID, tuple, - Anum_pg_statistic_staloval, - &isnull); + Datum val = SysCacheGetAttr(STATRELID, tuple, + Anum_pg_statistic_staloval, + &isnull); if (isnull) { @@ -1218,7 +1219,8 @@ getattstatistics(Oid relid, } else { - char *strval = textout(val); + char *strval = DatumGetCString(DirectFunctionCall1(textout, + val)); *loval = FunctionCall3(&inputproc, CStringGetDatum(strval), @@ -1230,9 +1232,9 @@ getattstatistics(Oid relid, if (hival) { - text *val = (text *) SysCacheGetAttr(STATRELID, tuple, - Anum_pg_statistic_stahival, - &isnull); + Datum val = SysCacheGetAttr(STATRELID, tuple, + Anum_pg_statistic_stahival, + &isnull); if (isnull) { @@ -1241,7 +1243,8 @@ getattstatistics(Oid relid, } else { - char *strval = textout(val); + char *strval = DatumGetCString(DirectFunctionCall1(textout, + val)); *hival = FunctionCall3(&inputproc, CStringGetDatum(strval), @@ -1868,7 +1871,6 @@ find_operator(const char *opname, Oid datatype) static Datum string_to_datum(const char *str, Oid datatype) { - /* * We cheat a little by assuming that textin() will do for bpchar and * varchar constants too... @@ -1876,7 +1878,7 @@ string_to_datum(const char *str, Oid datatype) if (datatype == NAMEOID) return PointerGetDatum(namein((char *) str)); else - return PointerGetDatum(textin((char *) str)); + return DirectFunctionCall1(textin, CStringGetDatum(str)); } /*------------------------------------------------------------------------- diff --git a/src/backend/utils/adt/tid.c b/src/backend/utils/adt/tid.c index 263470a063cf54a675bbc41fb947181228fdb9cd..7d0f4447c2d627ea143711de186adc105c14b23b 100644 --- a/src/backend/utils/adt/tid.c +++ b/src/backend/utils/adt/tid.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/tid.c,v 1.20 2000/06/09 01:11:09 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/tid.c,v 1.21 2000/07/05 23:11:35 tgl Exp $ * * NOTES * input routine largely stolen from boxin(). @@ -126,38 +126,6 @@ tidne(ItemPointer arg1, ItemPointer arg2) } #endif -#ifdef NOT_USED -text * -tid_text(ItemPointer tid) -{ - char *str; - - if (!tid) - return (text *) NULL; - str = tidout(tid); - - return textin(str); -} /* tid_text() */ -#endif - -#ifdef NOT_USED -ItemPointer -text_tid(const text *string) -{ - ItemPointer result; - char *str; - - if (!string) - return (ItemPointer) 0; - - str = textout((text *) string); - result = tidin(str); - pfree(str); - - return result; -} /* text_tid() */ -#endif - /* * Functions to get latest tid of a specified tuple. * @@ -197,7 +165,8 @@ currtid_byrelname(PG_FUNCTION_ARGS) char *str; Relation rel; - str = textout(relname); + str = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(relname))); result = (ItemPointer) palloc(sizeof(ItemPointerData)); ItemPointerSetInvalid(result); diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 4b3f498a2af665f5f5f9d60a500810fa24f454a6..d5d5b86f9fe8ffb674dd4afd7e1a8c94b309ee18 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.31 2000/07/03 23:09:53 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.32 2000/07/05 23:11:35 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1487,7 +1487,9 @@ timestamp_trunc(PG_FUNCTION_ARGS) *tm = &tt; if (VARSIZE(units) - VARHDRSZ > MAXDATELEN) - elog(ERROR, "Interval units '%s' not recognized", textout(units)); + elog(ERROR, "Interval units '%s' not recognized", + DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(units)))); up = VARDATA(units); lp = lowunits; for (i = 0; i < (VARSIZE(units) - VARHDRSZ); i++) @@ -1625,7 +1627,9 @@ interval_trunc(PG_FUNCTION_ARGS) result = (Interval *) palloc(sizeof(Interval)); if (VARSIZE(units) - VARHDRSZ > MAXDATELEN) - elog(ERROR, "Interval units '%s' not recognized", textout(units)); + elog(ERROR, "Interval units '%s' not recognized", + DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(units)))); up = VARDATA(units); lp = lowunits; for (i = 0; i < (VARSIZE(units) - VARHDRSZ); i++) @@ -1706,7 +1710,9 @@ interval_trunc(PG_FUNCTION_ARGS) #endif else { - elog(ERROR, "Interval units '%s' not recognized", textout(units)); + elog(ERROR, "Interval units '%s' not recognized", + DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(units)))); PG_RETURN_NULL(); } @@ -1738,7 +1744,9 @@ timestamp_part(PG_FUNCTION_ARGS) *tm = &tt; if (VARSIZE(units) - VARHDRSZ > MAXDATELEN) - elog(ERROR, "Interval units '%s' not recognized", textout(units)); + elog(ERROR, "Interval units '%s' not recognized", + DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(units)))); up = VARDATA(units); lp = lowunits; for (i = 0; i < (VARSIZE(units) - VARHDRSZ); i++) @@ -1926,7 +1934,9 @@ interval_part(PG_FUNCTION_ARGS) *tm = &tt; if (VARSIZE(units) - VARHDRSZ > MAXDATELEN) - elog(ERROR, "Interval units '%s' not recognized", textout(units)); + elog(ERROR, "Interval units '%s' not recognized", + DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(units)))); up = VARDATA(units); lp = lowunits; for (i = 0; i < (VARSIZE(units) - VARHDRSZ); i++) @@ -2000,7 +2010,8 @@ interval_part(PG_FUNCTION_ARGS) default: elog(ERROR, "Interval units '%s' not yet supported", - textout(units)); + DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(units)))); result = 0; } @@ -2022,7 +2033,9 @@ interval_part(PG_FUNCTION_ARGS) } else { - elog(ERROR, "Interval units '%s' not recognized", textout(units)); + elog(ERROR, "Interval units '%s' not recognized", + DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(units)))); result = 0; } @@ -2056,7 +2069,9 @@ timestamp_zone(PG_FUNCTION_ARGS) int len; if (VARSIZE(zone) - VARHDRSZ > MAXDATELEN) - elog(ERROR, "Time zone '%s' not recognized", textout(zone)); + elog(ERROR, "Time zone '%s' not recognized", + DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(zone)))); up = VARDATA(zone); lp = lowzone; for (i = 0; i < (VARSIZE(zone) - VARHDRSZ); i++) diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 114bcff29a4ab914cfacb5d68794808ee0c7d3bf..8ddabdb4ee4efef3d6257863a9d67bafb45ce525 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.61 2000/07/03 23:09:54 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/varlena.c,v 1.62 2000/07/05 23:11:35 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -146,54 +146,46 @@ byteaout(bytea *vlena) /* * textin - converts "..." to internal representation */ -text * -textin(char *inputText) +Datum +textin(PG_FUNCTION_ARGS) { + char *inputText = PG_GETARG_CSTRING(0); text *result; int len; - if (inputText == NULL) - return NULL; - len = strlen(inputText) + VARHDRSZ; result = (text *) palloc(len); VARATT_SIZEP(result) = len; - memmove(VARDATA(result), inputText, len - VARHDRSZ); + memcpy(VARDATA(result), inputText, len - VARHDRSZ); #ifdef CYR_RECODE convertstr(VARDATA(result), len - VARHDRSZ, 0); #endif - return result; + PG_RETURN_TEXT_P(result); } /* * textout - converts internal representation to "..." */ -char * -textout(text *vlena) +Datum +textout(PG_FUNCTION_ARGS) { + text *t = PG_GETARG_TEXT_P(0); int len; char *result; - if (vlena == NULL) - { - result = (char *) palloc(2); - result[0] = '-'; - result[1] = '\0'; - return result; - } - len = VARSIZE(vlena) - VARHDRSZ; + len = VARSIZE(t) - VARHDRSZ; result = (char *) palloc(len + 1); - memmove(result, VARDATA(vlena), len); + memcpy(result, VARDATA(t), len); result[len] = '\0'; #ifdef CYR_RECODE convertstr(result, len, 1); #endif - return result; + PG_RETURN_CSTRING(result); } diff --git a/src/backend/utils/cache/fcache.c b/src/backend/utils/cache/fcache.c index 867de40baa92e0332d3c60e70c7974ad98eda7cd..7e9d18c7e27727627044effa4806107cbc81ffb5 100644 --- a/src/backend/utils/cache/fcache.c +++ b/src/backend/utils/cache/fcache.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/fcache.c,v 1.32 2000/06/06 17:44:25 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/Attic/fcache.c,v 1.33 2000/07/05 23:11:39 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -70,7 +70,7 @@ init_fcache(Oid foid, Form_pg_type typeStruct; FunctionCachePtr retval; int nargs; - text *tmp; + Datum tmp; bool isNull; retval = (FunctionCachePtr) palloc(sizeof(FunctionCache)); @@ -212,14 +212,14 @@ init_fcache(Oid foid, if (procedureStruct->prolang == SQLlanguageId) { - tmp = (text *) SysCacheGetAttr(PROCOID, - procedureTuple, - Anum_pg_proc_prosrc, - &isNull); + tmp = SysCacheGetAttr(PROCOID, + procedureTuple, + Anum_pg_proc_prosrc, + &isNull); if (isNull) elog(ERROR, "init_fcache: null prosrc for procedure %u", foid); - retval->src = textout(tmp); + retval->src = DatumGetCString(DirectFunctionCall1(textout, tmp)); retval->bin = (char *) NULL; } else @@ -229,14 +229,14 @@ init_fcache(Oid foid, retval->bin = (char *) NULL; else { - tmp = (text *) SysCacheGetAttr(PROCOID, - procedureTuple, - Anum_pg_proc_probin, - &isNull); + tmp = SysCacheGetAttr(PROCOID, + procedureTuple, + Anum_pg_proc_probin, + &isNull); if (isNull) elog(ERROR, "init_fcache: null probin for procedure %u", foid); - retval->bin = textout(tmp); + retval->bin = DatumGetCString(DirectFunctionCall1(textout, tmp)); } } diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index dc69a0e508fc42a5c9b634d5f93cc144b8a37a72..c1cc688e8f61d430e80ba8f464dbde8e3d03155e 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.105 2000/06/30 07:04:10 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.106 2000/07/05 23:11:39 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1901,7 +1901,7 @@ AttrDefaultFetch(Relation relation) IndexScanDesc sd = (IndexScanDesc) NULL; HeapScanDesc adscan = (HeapScanDesc) NULL; RetrieveIndexResult indexRes; - struct varlena *val; + Datum val; bool isnull; int found; int i; @@ -1959,16 +1959,17 @@ AttrDefaultFetch(Relation relation) NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), RelationGetRelationName(relation)); - val = (struct varlena *) fastgetattr(htup, - Anum_pg_attrdef_adbin, - adrel->rd_att, &isnull); + val = fastgetattr(htup, + Anum_pg_attrdef_adbin, + adrel->rd_att, &isnull); if (isnull) elog(NOTICE, "AttrDefaultFetch: adbin IS NULL for attr %s in rel %s", NameStr(relation->rd_att->attrs[adform->adnum - 1]->attname), RelationGetRelationName(relation)); else attrdef[i].adbin = MemoryContextStrdup(CacheMemoryContext, - textout(val)); + DatumGetCString(DirectFunctionCall1(textout, + val))); break; } if (hasindex) @@ -2008,7 +2009,7 @@ RelCheckFetch(Relation relation) HeapScanDesc rcscan = (HeapScanDesc) NULL; RetrieveIndexResult indexRes; Name rcname; - struct varlena *val; + Datum val; bool isnull; int found; bool hasindex; @@ -2066,14 +2067,15 @@ RelCheckFetch(Relation relation) RelationGetRelationName(relation)); check[found].ccname = MemoryContextStrdup(CacheMemoryContext, NameStr(*rcname)); - val = (struct varlena *) fastgetattr(htup, - Anum_pg_relcheck_rcbin, - rcrel->rd_att, &isnull); + val = fastgetattr(htup, + Anum_pg_relcheck_rcbin, + rcrel->rd_att, &isnull); if (isnull) elog(ERROR, "RelCheckFetch: rcbin IS NULL for rel %s", RelationGetRelationName(relation)); check[found].ccbin = MemoryContextStrdup(CacheMemoryContext, - textout(val)); + DatumGetCString(DirectFunctionCall1(textout, + val))); found++; if (hasindex) ReleaseBuffer(buffer); diff --git a/src/backend/utils/fmgr/dfmgr.c b/src/backend/utils/fmgr/dfmgr.c index baa89be7bb8c8e89878702a5d224e70c628b223d..3913dddeec2c721e443100a083e6c2163f384ad6 100644 --- a/src/backend/utils/fmgr/dfmgr.c +++ b/src/backend/utils/fmgr/dfmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.43 2000/06/28 03:32:31 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/fmgr/dfmgr.c,v 1.44 2000/07/05 23:11:40 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -71,21 +71,17 @@ fmgr_dynamic(Oid functionId) prosrcattr = SysCacheGetAttr(PROCOID, procedureTuple, Anum_pg_proc_prosrc, &isnull); - if (isnull || !PointerIsValid(prosrcattr)) - { + if (isnull) elog(ERROR, "fmgr: Could not extract prosrc for %u from pg_proc", functionId); - } - prosrcstring = textout((text *) DatumGetPointer(prosrcattr)); + prosrcstring = DatumGetCString(DirectFunctionCall1(textout, prosrcattr)); probinattr = SysCacheGetAttr(PROCOID, procedureTuple, Anum_pg_proc_probin, &isnull); - if (isnull || !PointerIsValid(probinattr)) - { + if (isnull) elog(ERROR, "fmgr: Could not extract probin for %u from pg_proc", functionId); - } - probinstring = textout((text *) DatumGetPointer(probinattr)); + probinstring = DatumGetCString(DirectFunctionCall1(textout, probinattr)); user_fn = load_external_function(probinstring, prosrcstring); diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c index 489d8c260fd385ea9c510e0534f6e6b240be7132..fd732c8f94de188d88aa5cebb570c56de97106e7 100644 --- a/src/backend/utils/fmgr/fmgr.c +++ b/src/backend/utils/fmgr/fmgr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.43 2000/06/05 07:28:55 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/fmgr/fmgr.c,v 1.44 2000/07/05 23:11:40 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -164,7 +164,8 @@ fmgr_info(Oid functionId, FmgrInfo *finfo) * stored in prosrc (it doesn't have to be the same as the * name of the alias!) */ - prosrc = textout(&(procedureStruct->prosrc)); + prosrc = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&procedureStruct->prosrc))); fbp = fmgr_lookupByName(prosrc); if (fbp == NULL) elog(ERROR, "fmgr_info: function %s not in internal table", diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index 3d700dcf2b7182636d8bbc9e631837e1c4c0b05d..b4af7610159da979d97711b8bdc3fd55901a69a4 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pg_proc.h,v 1.141 2000/06/19 03:54:45 tgl Exp $ + * $Id: pg_proc.h,v 1.142 2000/07/05 23:11:45 tgl Exp $ * * NOTES * The script catalog/genbki.sh reads this file and generates .bki @@ -129,9 +129,9 @@ DATA(insert OID = 44 ( regprocin PGUID 12 f t f t 1 f 24 "0" 100 0 0 100 DESCR("(internal)"); DATA(insert OID = 45 ( regprocout PGUID 12 f t f t 1 f 23 "0" 100 0 0 100 regprocout - )); DESCR("(internal)"); -DATA(insert OID = 46 ( textin PGUID 11 f t t t 1 f 25 "0" 100 0 0 100 textin - )); +DATA(insert OID = 46 ( textin PGUID 12 f t t t 1 f 25 "0" 100 0 0 100 textin - )); DESCR("(internal)"); -DATA(insert OID = 47 ( textout PGUID 11 f t t t 1 f 23 "0" 100 0 0 100 textout - )); +DATA(insert OID = 47 ( textout PGUID 12 f t t t 1 f 23 "0" 100 0 0 100 textout - )); DESCR("(internal)"); DATA(insert OID = 48 ( tidin PGUID 11 f t t t 1 f 27 "0" 100 0 0 100 tidin - )); DESCR("(internal)"); diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h index 267d7c55d12866f5c51fa95578e872ece222e196..9e7e995ee16c26b8207de50640a6be02ac4b0134 100644 --- a/src/include/utils/builtins.h +++ b/src/include/utils/builtins.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: builtins.h,v 1.118 2000/06/19 03:54:48 tgl Exp $ + * $Id: builtins.h,v 1.119 2000/07/05 23:11:51 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -436,8 +436,8 @@ extern int32 varcharlen(char *arg); extern int32 varcharoctetlen(char *arg); /* varlena.c */ -extern text *textin(char *inputText); -extern char *textout(text *vlena); +extern Datum textin(PG_FUNCTION_ARGS); +extern Datum textout(PG_FUNCTION_ARGS); extern text *textcat(text *arg1, text *arg2); extern bool texteq(text *arg1, text *arg2); extern bool textne(text *arg1, text *arg2); diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c index 66ae44373d06ab5a6170c0cbaee3874d83ab984f..687612a64c1498b2368f8235cbfcf71ffdbb3783 100644 --- a/src/pl/plperl/plperl.c +++ b/src/pl/plperl/plperl.c @@ -33,7 +33,7 @@ * ENHANCEMENTS, OR MODIFICATIONS. * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.11 2000/06/05 07:29:11 tgl Exp $ + * $Header: /cvsroot/pgsql/src/pl/plperl/plperl.c,v 1.12 2000/07/05 23:11:55 tgl Exp $ * **********************************************************************/ @@ -594,8 +594,8 @@ plperl_func_handler(PG_FUNCTION_ARGS) * through the reference. * ************************************************************/ - proc_source = textout(&(procStruct->prosrc)); - + proc_source = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&procStruct->prosrc))); /************************************************************ * Create the procedure in the interpreter @@ -789,7 +789,8 @@ plperl_trigger_handler(PG_FUNCTION_ARGS) "}\n" "unset i v\n\n", -1); - proc_source = textout(&(procStruct->prosrc)); + proc_source = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&procStruct->prosrc))); Tcl_DStringAppend(&proc_internal_body, proc_source, -1); pfree(proc_source); Tcl_DStringAppendElement(&proc_internal_def, diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c index c03d9398d139a50296114892a5066165923b7fb8..f18caa846440bc46a58e185492e3208b4acce9c2 100644 --- a/src/pl/plpgsql/src/pl_comp.c +++ b/src/pl/plpgsql/src/pl_comp.c @@ -3,7 +3,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.20 2000/05/11 04:00:00 momjian Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_comp.c,v 1.21 2000/07/05 23:11:58 tgl Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -142,7 +142,8 @@ plpgsql_compile(Oid fn_oid, int functype) * ---------- */ procStruct = (Form_pg_proc) GETSTRUCT(procTup); - proc_source = textout(&(procStruct->prosrc)); + proc_source = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&procStruct->prosrc))); plpgsql_setinput(proc_source, functype); plpgsql_error_funcname = nameout(&(procStruct->proname)); plpgsql_error_lineno = 0; diff --git a/src/pl/plpgsql/src/pl_exec.c b/src/pl/plpgsql/src/pl_exec.c index 77370801c9c4c51e3fed4aa0ab7e73b96dc29100..5b8c6d773f4931d285621554a9f6641f2b9ba1e2 100644 --- a/src/pl/plpgsql/src/pl_exec.c +++ b/src/pl/plpgsql/src/pl_exec.c @@ -3,7 +3,7 @@ * procedural language * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.23 2000/05/30 04:24:58 tgl Exp $ + * $Header: /cvsroot/pgsql/src/pl/plpgsql/src/pl_exec.c,v 1.24 2000/07/05 23:11:58 tgl Exp $ * * This software is copyrighted by Jan Wieck - Hamburg. * @@ -606,7 +606,7 @@ plpgsql_exec_trigger(PLpgSQL_function * func, rec_new->tupdesc = trigdata->tg_relation->rd_att; rec_old->tup = NULL; rec_old->tupdesc = NULL; - var->value = (Datum) textin("INSERT"); + var->value = DirectFunctionCall1(textin, CStringGetDatum("INSERT")); } else if (TRIGGER_FIRED_BY_UPDATE(trigdata->tg_event)) { @@ -614,7 +614,7 @@ plpgsql_exec_trigger(PLpgSQL_function * func, rec_new->tupdesc = trigdata->tg_relation->rd_att; rec_old->tup = trigdata->tg_trigtuple; rec_old->tupdesc = trigdata->tg_relation->rd_att; - var->value = (Datum) textin("UPDATE"); + var->value = DirectFunctionCall1(textin, CStringGetDatum("UPDATE")); } else if (TRIGGER_FIRED_BY_DELETE(trigdata->tg_event)) { @@ -622,13 +622,13 @@ plpgsql_exec_trigger(PLpgSQL_function * func, rec_new->tupdesc = NULL; rec_old->tup = trigdata->tg_trigtuple; rec_old->tupdesc = trigdata->tg_relation->rd_att; - var->value = (Datum) textin("DELETE"); + var->value = DirectFunctionCall1(textin, CStringGetDatum("DELETE")); } else { rec_new->tup = NULL; rec_new->tupdesc = NULL; - var->value = (Datum) textin("UNKNOWN"); + var->value = DirectFunctionCall1(textin, CStringGetDatum("UNKNOWN")); } /* ---------- @@ -642,20 +642,20 @@ plpgsql_exec_trigger(PLpgSQL_function * func, var = (PLpgSQL_var *) (estate.datums[func->tg_when_varno]); var->isnull = false; if (TRIGGER_FIRED_BEFORE(trigdata->tg_event)) - var->value = (Datum) textin("BEFORE"); + var->value = DirectFunctionCall1(textin, CStringGetDatum("BEFORE")); else if (TRIGGER_FIRED_AFTER(trigdata->tg_event)) - var->value = (Datum) textin("AFTER"); + var->value = DirectFunctionCall1(textin, CStringGetDatum("AFTER")); else - var->value = (Datum) textin("UNKNOWN"); + var->value = DirectFunctionCall1(textin, CStringGetDatum("UNKNOWN")); var = (PLpgSQL_var *) (estate.datums[func->tg_level_varno]); var->isnull = false; if (TRIGGER_FIRED_FOR_ROW(trigdata->tg_event)) - var->value = (Datum) textin("ROW"); + var->value = DirectFunctionCall1(textin, CStringGetDatum("ROW")); else if (TRIGGER_FIRED_FOR_STATEMENT(trigdata->tg_event)) - var->value = (Datum) textin("STATEMENT"); + var->value = DirectFunctionCall1(textin, CStringGetDatum("STATEMENT")); else - var->value = (Datum) textin("UNKNOWN"); + var->value = DirectFunctionCall1(textin, CStringGetDatum("UNKNOWN")); var = (PLpgSQL_var *) (estate.datums[func->tg_relid_varno]); var->isnull = false; @@ -682,7 +682,8 @@ plpgsql_exec_trigger(PLpgSQL_function * func, { estate.trig_argv = palloc(sizeof(Datum) * estate.trig_nargs); for (i = 0; i < trigdata->tg_trigger->tgnargs; i++) - estate.trig_argv[i] = (Datum) textin(trigdata->tg_trigger->tgargs[i]); + estate.trig_argv[i] = DirectFunctionCall1(textin, + CStringGetDatum(trigdata->tg_trigger->tgargs[i])); } /* ---------- @@ -1611,7 +1612,8 @@ exec_stmt_raise(PLpgSQL_execstate * estate, PLpgSQL_stmt_raise * stmt) if (value < 0 || value >= estate->trig_nargs) extval = "<OUT_OF_RANGE>"; else - extval = textout((text *) (estate->trig_argv[value])); + extval = DatumGetCString(DirectFunctionCall1(textout, + estate->trig_argv[value])); } plpgsql_dstring_append(&ds, extval); } diff --git a/src/pl/tcl/pltcl.c b/src/pl/tcl/pltcl.c index 37b413da2df2cb030bd326a9e359f051a2ca6927..6bdeec9be81cfe14c9490a69e9dbb798b420fe1b 100644 --- a/src/pl/tcl/pltcl.c +++ b/src/pl/tcl/pltcl.c @@ -31,7 +31,7 @@ * ENHANCEMENTS, OR MODIFICATIONS. * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.26 2000/06/05 07:29:13 tgl Exp $ + * $Header: /cvsroot/pgsql/src/pl/tcl/pltcl.c,v 1.27 2000/07/05 23:12:03 tgl Exp $ * **********************************************************************/ @@ -561,7 +561,8 @@ pltcl_func_handler(PG_FUNCTION_ARGS) sprintf(buf, "array set %d $__PLTcl_Tup_%d\n", i + 1, i + 1); Tcl_DStringAppend(&proc_internal_body, buf, -1); } - proc_source = textout(&(procStruct->prosrc)); + proc_source = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&procStruct->prosrc))); Tcl_DStringAppend(&proc_internal_body, proc_source, -1); pfree(proc_source); Tcl_DStringAppendElement(&proc_internal_def, @@ -836,7 +837,8 @@ pltcl_trigger_handler(PG_FUNCTION_ARGS) "}\n" "unset i v\n\n", -1); - proc_source = textout(&(procStruct->prosrc)); + proc_source = DatumGetCString(DirectFunctionCall1(textout, + PointerGetDatum(&procStruct->prosrc))); Tcl_DStringAppend(&proc_internal_body, proc_source, -1); pfree(proc_source); Tcl_DStringAppendElement(&proc_internal_def, diff --git a/src/test/regress/regress.c b/src/test/regress/regress.c index 67c62c8ab65b2232b280fbcadea969dcf9f734c1..ca2f0a69caa24da47a415defafdf1fe379d426f8 100644 --- a/src/test/regress/regress.c +++ b/src/test/regress/regress.c @@ -1,5 +1,5 @@ /* - * $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.40 2000/06/13 07:35:34 tgl Exp $ + * $Header: /cvsroot/pgsql/src/test/regress/regress.c,v 1.41 2000/07/05 23:12:09 tgl Exp $ */ #include <float.h> /* faked on sunos */ @@ -524,7 +524,8 @@ ttdummy(PG_FUNCTION_ARGS) } { - text *seqname = textin("ttdummy_seq"); + text *seqname = DatumGetTextP(DirectFunctionCall1(textin, + CStringGetDatum("ttdummy_seq"))); newoff = DirectFunctionCall1(nextval, PointerGetDatum(seqname));