+++ /dev/null
-/*-------------------------------------------------------------------------
- *
- * 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);
-}
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/catalog/pg_operator.h,v 1.154 2007/08/21 01:11:25 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/pg_operator.h,v 1.155 2007/08/27 01:39:24 tgl Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
DATA(insert OID = 623 ( ">" PGNSP PGUID b f f 700 700 16 622 624 float4gt scalargtsel scalargtjoinsel ));
DATA(insert OID = 624 ( "<=" PGNSP PGUID b f f 700 700 16 625 623 float4le scalarltsel scalarltjoinsel ));
DATA(insert OID = 625 ( ">=" PGNSP PGUID b f f 700 700 16 624 622 float4ge scalargtsel scalargtjoinsel ));
-DATA(insert OID = 626 ( "!!=" PGNSP PGUID b f f 23 25 16 0 0 int4notin - - ));
-DATA(insert OID = 627 ( "!!=" PGNSP PGUID b f f 26 25 16 0 0 oidnotin - - ));
DATA(insert OID = 630 ( "<>" PGNSP PGUID b f f 18 18 16 630 92 charne neqsel neqjoinsel ));
DATA(insert OID = 631 ( "<" PGNSP PGUID b f f 18 18 16 633 634 charlt scalarltsel scalarltjoinsel ));
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.464 2007/08/22 01:39:45 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.465 2007/08/27 01:39:24 tgl Exp $
*
* NOTES
* The script catalog/genbki.sh reads this file and generates .bki
DATA(insert OID = 754 ( int8 PGNSP PGUID 12 1 0 f f t f i 1 20 "21" _null_ _null_ _null_ int28 - _null_ ));
DESCR("convert int2 to int8");
-DATA(insert OID = 1285 ( int4notin PGNSP PGUID 12 1 0 f f t f s 2 16 "23 25" _null_ _null_ _null_ int4notin - _null_ ));
-DESCR("not in");
-DATA(insert OID = 1286 ( oidnotin PGNSP PGUID 12 1 0 f f t f s 2 16 "26 25" _null_ _null_ _null_ oidnotin - _null_ ));
-DESCR("not in");
DATA(insert OID = 655 ( namelt PGNSP PGUID 12 1 0 f f t f i 2 16 "19 19" _null_ _null_ _null_ namelt - _null_ ));
DESCR("less-than");
DATA(insert OID = 656 ( namele PGNSP PGUID 12 1 0 f f t f i 2 16 "19 19" _null_ _null_ _null_ namele - _null_ ));
* Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/utils/builtins.h,v 1.300 2007/08/21 01:11:30 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/utils/builtins.h,v 1.301 2007/08/27 01:39:25 tgl Exp $
*
*-------------------------------------------------------------------------
*/
extern Datum pg_rotate_logfile(PG_FUNCTION_ARGS);
extern Datum pg_sleep(PG_FUNCTION_ARGS);
-/* not_in.c */
-extern Datum int4notin(PG_FUNCTION_ARGS);
-extern Datum oidnotin(PG_FUNCTION_ARGS);
-
/* oid.c */
extern Datum oidin(PG_FUNCTION_ARGS);
extern Datum oidout(PG_FUNCTION_ARGS);