]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Remove the 'not in' operator (!!=). This was a hangover from Berkeley
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 27 Aug 2007 01:39:25 +0000 (01:39 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 27 Aug 2007 01:39:25 +0000 (01:39 +0000)
days that was obsolete the moment we had IN (SELECT ...) capability.
It's arguably a security hole since it applied no permissions check to
the table it searched, and since it was never documented anywhere,
removing it seems more appropriate than fixing it.

src/backend/utils/adt/Makefile
src/backend/utils/adt/not_in.c [deleted file]
src/include/catalog/catversion.h
src/include/catalog/pg_operator.h
src/include/catalog/pg_proc.h
src/include/utils/builtins.h

index 73fcebb496dc44b3cb118d8fb73d762e3852c559..a1f233dca8279ce0efa422ce0bfe9e301ee812ee 100644 (file)
@@ -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 (file)
index 26ce2d1..0000000
+++ /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);
-}
index 13658efacf1dca80cbf053625bfdbf1738bef8cf..2fe3104136cdb1da379cd46ea3d32926d186f977 100644 (file)
@@ -37,7 +37,7 @@
  * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.418 2007/08/25 01:06:25 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.419 2007/08/27 01:39:24 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -53,6 +53,6 @@
  */
 
 /*                                                     yyyymmddN */
-#define CATALOG_VERSION_NO     200708241
+#define CATALOG_VERSION_NO     200708261
 
 #endif
index 4b6f25755745cb73f9c40ac0c0f6b01ae8c1ba84..7300dd2969b517855aacc4b23cd19e7c5592ec18 100644 (file)
@@ -8,7 +8,7 @@
  * 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
@@ -290,8 +290,6 @@ DATA(insert OID = 622 (  "<"           PGNSP PGUID b f f    700  700        16 623 625 float4lt s
 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 ));
index a19bda2ab7e30485223f7c17320d8022397fa712..eb1bcdf3554ac6d3a3d172b08e07e99d306c7561 100644 (file)
@@ -7,7 +7,7 @@
  * 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
@@ -902,10 +902,6 @@ DESCR("convert int8 to int2");
 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_ ));
index ee0532f63b73f5a5f8664981fd382ca118348742..8feb54c20803c6248c6b3b61416b6d8ad403f1f0 100644 (file)
@@ -7,7 +7,7 @@
  * 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 $
  *
  *-------------------------------------------------------------------------
  */
@@ -418,10 +418,6 @@ extern Datum pg_tablespace_databases(PG_FUNCTION_ARGS);
 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);