diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/utils/adt/Makefile | 4 | ||||
-rw-r--r-- | src/backend/utils/adt/not_in.c | 124 |
2 files changed, 2 insertions, 126 deletions
diff --git a/src/backend/utils/adt/Makefile b/src/backend/utils/adt/Makefile index 73fcebb496d..a1f233dca82 100644 --- a/src/backend/utils/adt/Makefile +++ b/src/backend/utils/adt/Makefile @@ -1,7 +1,7 @@ # # Makefile for utils/adt # -# $PostgreSQL: pgsql/src/backend/utils/adt/Makefile,v 1.65 2007/08/21 01:11:18 tgl Exp $ +# $PostgreSQL: pgsql/src/backend/utils/adt/Makefile,v 1.66 2007/08/27 01:39:24 tgl Exp $ # subdir = src/backend/utils/adt @@ -19,7 +19,7 @@ OBJS = acl.o arrayfuncs.o array_userfuncs.o arrayutils.o bool.o \ cash.o char.o date.o datetime.o datum.o domains.o \ enum.o float.o format_type.o \ geo_ops.o geo_selfuncs.o int.o int8.o like.o lockfuncs.o \ - misc.o nabstime.o name.o not_in.o numeric.o numutils.o \ + misc.o nabstime.o name.o numeric.o numutils.o \ oid.o oracle_compat.o pseudotypes.o rowtypes.o \ regexp.o regproc.o ruleutils.o selfuncs.o \ tid.o timestamp.o varbit.o varchar.o varlena.o version.o xid.o \ diff --git a/src/backend/utils/adt/not_in.c b/src/backend/utils/adt/not_in.c deleted file mode 100644 index 26ce2d1528e..00000000000 --- a/src/backend/utils/adt/not_in.c +++ /dev/null @@ -1,124 +0,0 @@ -/*------------------------------------------------------------------------- - * - * not_in.c - * Executes the "not_in" operator for any data type - * - * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * - * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/not_in.c,v 1.46 2007/01/05 22:19:41 momjian Exp $ - * - *------------------------------------------------------------------------- - */ -/* - * - * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - * X HACK WARNING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! X - * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - * - * This code is the OLD not-in code that is HACKED - * into place until operators that can have arguments as - * columns are ******REALLY****** implemented!!!!!!!!!!! - * - */ - -#include "postgres.h" - -#include "access/heapam.h" -#include "catalog/namespace.h" -#include "parser/parse_relation.h" -#include "utils/builtins.h" - - -/* ---------------------------------------------------------------- - * - * ---------------------------------------------------------------- - */ -Datum -int4notin(PG_FUNCTION_ARGS) -{ - int32 not_in_arg = PG_GETARG_INT32(0); - text *relation_and_attr = PG_GETARG_TEXT_P(1); - List *names; - int nnames; - RangeVar *relrv; - char *attribute; - Relation relation_to_scan; - int32 integer_value; - HeapTuple current_tuple; - HeapScanDesc scan_descriptor; - bool isNull, - retval; - int attrid; - Datum value; - - /* Parse the argument */ - - names = textToQualifiedNameList(relation_and_attr); - nnames = list_length(names); - if (nnames < 2) - ereport(ERROR, - (errcode(ERRCODE_INVALID_NAME), - errmsg("invalid name syntax"), - errhint("Must provide \"relationname.columnname\"."))); - attribute = strVal(llast(names)); - names = list_truncate(names, nnames - 1); - relrv = makeRangeVarFromNameList(names); - - /* Open the relation and get a relation descriptor */ - relation_to_scan = heap_openrv(relrv, AccessShareLock); - - /* Find the column to search */ - attrid = attnameAttNum(relation_to_scan, attribute, true); - if (attrid == InvalidAttrNumber) - ereport(ERROR, - (errcode(ERRCODE_UNDEFINED_COLUMN), - errmsg("column \"%s\" of relation \"%s\" does not exist", - attribute, - RelationGetRelationName(relation_to_scan)))); - - scan_descriptor = heap_beginscan(relation_to_scan, SnapshotNow, - 0, (ScanKey) NULL); - - retval = true; - - /* do a scan of the relation, and do the check */ - while ((current_tuple = heap_getnext(scan_descriptor, ForwardScanDirection)) != NULL) - { - value = heap_getattr(current_tuple, - (AttrNumber) attrid, - RelationGetDescr(relation_to_scan), - &isNull); - if (isNull) - continue; - integer_value = DatumGetInt32(value); - if (not_in_arg == integer_value) - { - retval = false; - break; /* can stop scanning now */ - } - } - - /* close the relation */ - heap_endscan(scan_descriptor); - heap_close(relation_to_scan, AccessShareLock); - - PG_RETURN_BOOL(retval); -} - -Datum -oidnotin(PG_FUNCTION_ARGS) -{ - Oid the_oid = PG_GETARG_OID(0); - -#ifdef NOT_USED - text *relation_and_attr = PG_GETARG_TEXT_P(1); -#endif - - if (the_oid == InvalidOid) - PG_RETURN_BOOL(false); - /* XXX assume oid maps to int4 */ - return int4notin(fcinfo); -} |