]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Remove Ops parameter from STATRELID cache lookup, for Tom Lane and
authorBruce Momjian <bruce@momjian.us>
Mon, 24 Jan 2000 02:12:58 +0000 (02:12 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 24 Jan 2000 02:12:58 +0000 (02:12 +0000)
optimizer.

doc/src/sgml/oper.sgml
src/backend/catalog/indexing.c
src/backend/utils/adt/selfuncs.c
src/backend/utils/cache/syscache.c
src/include/catalog/catversion.h
src/include/catalog/indexing.h
src/interfaces/libpq/fe-connect.c
src/interfaces/libpq/fe-exec.c

index 673adfbc6a33c36e50db836a290530c9d9c549db..179a05e4913b7d5b8419364462f1b01e797404ca 100644 (file)
@@ -411,7 +411,7 @@ logical union
        <ROW>
        <ENTRY> !~* </ENTRY>
        <ENTRY>Does not match (regex), case insensitive</ENTRY>
-       <ENTRY>'thomas' !~ '.*vadim.*'</ENTRY>
+       <ENTRY>'thomas' !~* '.*vadim.*'</ENTRY>
        </ROW>
       </TBODY>
      </TGROUP>
index 97e15d5d1d35768c1a386196154452330d4fca76..83f51eba54083823f572316f8cd3c314cafc67a8 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.56 2000/01/10 16:13:12 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/catalog/indexing.c,v 1.57 2000/01/24 02:12:54 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -64,7 +64,7 @@ char     *Name_pg_rewrite_indices[Num_pg_rewrite_indices] =
 char      *Name_pg_shadow_indices[Num_pg_shadow_indices] =
                        {ShadowNameIndex, ShadowSysidIndex};
 char      *Name_pg_statistic_indices[Num_pg_statistic_indices] =
-                       {StatisticRelidAttnumOpIndex};
+                       {StatisticRelidAttnumIndex};
 char      *Name_pg_trigger_indices[Num_pg_trigger_indices] =
                        {TriggerRelidIndex,     TriggerConstrNameIndex, TriggerConstrRelidIndex};
 char      *Name_pg_type_indices[Num_pg_type_indices] =
@@ -926,13 +926,12 @@ ShadowSysidIndexScan(Relation heapRelation, int4 sysId)
 
 
 HeapTuple
-StatisticRelidAttnumOpIndexScan(Relation heapRelation,
+StatisticRelidAttnumIndexScan(Relation heapRelation,
                                           Oid relId,
-                                          AttrNumber attNum,
-                                          Oid op)
+                                          AttrNumber attNum)
 {
        Relation        idesc;
-       ScanKeyData skey[3];
+       ScanKeyData skey[2];
        HeapTuple       tuple;
 
        ScanKeyEntryInitialize(&skey[0],
@@ -947,14 +946,8 @@ StatisticRelidAttnumOpIndexScan(Relation heapRelation,
                                                   (RegProcedure) F_INT2EQ,
                                                   Int16GetDatum(attNum));
 
-       ScanKeyEntryInitialize(&skey[2],
-                                                  (bits16) 0x0,
-                                                  (AttrNumber) 3,
-                                                  (RegProcedure) F_OIDEQ,
-                                                  ObjectIdGetDatum(op));
-
-       idesc = index_openr(StatisticRelidAttnumOpIndex);
-       tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 3);
+       idesc = index_openr(StatisticRelidAttnumIndex);
+       tuple = CatalogIndexFetchTuple(heapRelation, idesc, skey, 2);
 
        index_close(idesc);
 
index 5838fdc471ff2fa07bebb5bd6ccec56a8891dfa3..c6b9520a26323b64765c1bf6bcdb82a1db0cac96 100644 (file)
@@ -14,7 +14,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.51 2000/01/23 03:43:23 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v 1.52 2000/01/24 02:12:55 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -609,7 +609,7 @@ getattstatistics(Oid relid, AttrNumber attnum, Oid opid, Oid typid,
        tuple = SearchSysCacheTuple(STATRELID,
                                                                ObjectIdGetDatum(relid),
                                                                Int16GetDatum((int16) attnum),
-                                                               opid,
+                                                               0,
                                                                0);
        if (!HeapTupleIsValid(tuple))
        {
index 0d4c1e3e056855cc81003c3812642834453add50..879e21c69b8c772910c76d5723531811d4d00c41 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.45 2000/01/23 03:43:24 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/utils/cache/syscache.c,v 1.46 2000/01/24 02:12:56 momjian Exp $
  *
  * NOTES
  *       These routines allow the parser/planner/executor to perform
@@ -54,7 +54,7 @@ typedef HeapTuple (*ScanFunc) ();
        Add your new cache to the list in include/utils/syscache.h.  Keep
        the list sorted alphabetically and adjust the cache numbers
        accordingly.
-       
+
        Add your entry to the cacheinfo[] array below.  All cache lists are
        alphabetical, so add it in the proper place.  Specify the relation
     name, number of arguments, argument names, size of tuple, index lookup
@@ -75,7 +75,7 @@ typedef HeapTuple (*ScanFunc) ();
     Finally, any place your relation gets heap_insert() or
        heap_update calls, include code to do a CatalogIndexInsert() to update
        the system indexes.  The heap_* calls do not update indexes.
-       
+
     bjm 1999/11/22
 
   ---------------------------------------------------------------------------
@@ -360,16 +360,16 @@ NULL,NULL
 /*             ShadowSysidIndex,
        ShadowSysidIndexScan*/},
        {StatisticRelationName,         /* STATRELID */
-               3,
+               2,
                {
                        Anum_pg_statistic_starelid,
                        Anum_pg_statistic_staattnum,
-                       Anum_pg_statistic_staop,
+                       0,
                        0
                },
                offsetof(FormData_pg_statistic, stacommonval),
-               StatisticRelidAttnumOpIndex,
-       (ScanFunc) StatisticRelidAttnumOpIndexScan},
+               StatisticRelidAttnumIndex,
+       (ScanFunc) StatisticRelidAttnumIndexScan},
        {TypeRelationName,                      /* TYPENAME */
                1,
                {
@@ -520,7 +520,7 @@ SearchSysCacheTuple(int cacheId,/* cache selection code */
                         get_temp_rel_by_username(DatumGetPointer(key1))) != NULL)
                        key1 = PointerGetDatum(nontemp_relname);
        }
-       
+
        tp = SearchSysCache(SysCache[cacheId], key1, key2, key3, key4);
        if (!HeapTupleIsValid(tp))
        {
index d706d1f20a0168dcf5be88b16f265ddcfb02cdb8..87d0f84b1cd045cf176053d0423c02647f126bc6 100644 (file)
@@ -36,7 +36,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: catversion.h,v 1.9 2000/01/22 23:50:23 tgl Exp $
+ * $Id: catversion.h,v 1.10 2000/01/24 02:12:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -52,6 +52,6 @@
  */
 
 /*                          yyyymmddN */
-#define CATALOG_VERSION_NO  200001221
+#define CATALOG_VERSION_NO  200001251
 
 #endif
index ff7a166f2e1a29e80c6b02d040af35038b2389ce..2c88379d7d1afedccfeaaa24e6f716fca1d609ca 100644 (file)
@@ -7,7 +7,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- * $Id: indexing.h,v 1.33 2000/01/10 16:13:20 momjian Exp $
+ * $Id: indexing.h,v 1.34 2000/01/24 02:12:57 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -73,7 +73,7 @@
 #define RewriteRulenameIndex           "pg_rewrite_rulename_index"
 #define ShadowNameIndex                                "pg_shadow_name_index"
 #define ShadowSysidIndex                       "pg_shadow_sysid_index"
-#define StatisticRelidAttnumOpIndex    "pg_statistic_relid_att_op_index"
+#define StatisticRelidAttnumIndex      "pg_statistic_relid_att_index"
 #define TriggerConstrNameIndex         "pg_trigger_tgconstrname_index"
 #define TriggerConstrRelidIndex                "pg_trigger_tgconstrrelid_index"
 #define TriggerRelidIndex                      "pg_trigger_tgrelid_index"
@@ -153,8 +153,8 @@ extern HeapTuple RewriteRulenameIndexScan(Relation heapRelation,
                                        char *ruleName);
 extern HeapTuple ShadowNameIndexScan(Relation heapRelation, char *useName);
 extern HeapTuple ShadowSysidIndexScan(Relation heapRelation, int4 sysId);
-extern HeapTuple StatisticRelidAttnumOpIndexScan(Relation heapRelation,
-                                Oid relId, AttrNumber attNum, Oid op);
+extern HeapTuple StatisticRelidAttnumIndexScan(Relation heapRelation,
+                                Oid relId, AttrNumber attNum);
 extern HeapTuple TypeNameIndexScan(Relation heapRelation, char *typeName);
 extern HeapTuple TypeOidIndexScan(Relation heapRelation, Oid typeId);
 
@@ -202,7 +202,7 @@ DECLARE_UNIQUE_INDEX(pg_rewrite_rulename_index on pg_rewrite using btree(rulenam
 xDECLARE_UNIQUE_INDEX(pg_shadow_name_index on pg_shadow using btree(usename name_ops));
 xDECLARE_UNIQUE_INDEX(pg_shadow_sysid_index on pg_shadow using btree(usesysid int4_ops));
 */
-DECLARE_INDEX(pg_statistic_relid_att_op_index on pg_statistic using btree(starelid oid_ops, staattnum int2_ops, staop oid_ops));
+DECLARE_INDEX(pg_statistic_relid_att_op_index on pg_statistic using btree(starelid oid_ops, staattnum int2_ops));
 DECLARE_INDEX(pg_trigger_tgconstrname_index on pg_trigger using btree(tgconstrname name_ops));
 DECLARE_INDEX(pg_trigger_tgconstrrelid_index on pg_trigger using btree(tgconstrrelid oid_ops));
 DECLARE_INDEX(pg_trigger_tgrelid_index on pg_trigger using btree(tgrelid oid_ops));
index 6cfe06e3d1996c8874128e1185fe0e993ff45c53..48f4117aceaba2c50a508299de94850c7a47f937 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.114 2000/01/23 01:27:39 petere Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.115 2000/01/24 02:12:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -391,7 +391,6 @@ PQsetdbLogin(const char *pghost, const char *pgport, const char *pgoptions,
        PGconn     *conn;
        char       *tmp;        /* An error message from some service we call. */
        bool            error = FALSE;  /* We encountered an error. */
-       int                     i;
 
        conn = makeEmptyPGconn();
        if (conn == NULL)
@@ -585,6 +584,30 @@ update_db_info(PGconn *conn)
        return 0;
 }
 
+/* ----------
+ * connectMakeNonblocking -
+ * Make a connection non-blocking.
+ * Returns 1 if successful, 0 if not.
+ * ----------
+ */
+static int
+connectMakeNonblocking(PGconn *conn)
+{
+#ifndef WIN32
+       if (fcntl(conn->sock, F_SETFL, O_NONBLOCK) < 0)
+#else
+       if (ioctlsocket(conn->sock, FIONBIO, &on) != 0)
+#endif
+       {
+               printfPQExpBuffer(&conn->errorMessage,
+                                                 "connectMakeNonblocking -- fcntl() failed: errno=%d\n%s\n",
+                                                 errno, strerror(errno));
+               return 0;
+       }
+
+       return 1;
+}
+
 /* ----------
  * connectNoDelay -
  * Sets the TCP_NODELAY socket option.
@@ -755,7 +778,7 @@ connectDBStart(PGconn *conn)
         *   Ewan Mellor <eem21@cam.ac.uk>.
         * ---------- */
 #if (!defined(WIN32) || defined(WIN32_NON_BLOCKING_CONNECTIONS)) && !defined(USE_SSL)
-       if (PQsetnonblocking(conn, TRUE) != 0)
+       if (connectMakeNonblocking(conn) == 0)
                goto connect_errReturn;
 #endif 
 
@@ -868,7 +891,7 @@ connectDBStart(PGconn *conn)
        /* This makes the connection non-blocking, for all those cases which forced us
           not to do it above. */
 #if (defined(WIN32) && !defined(WIN32_NON_BLOCKING_CONNECTIONS)) || defined(USE_SSL)
-       if (PQsetnonblocking(conn, TRUE) != 0)
+       if (connectMakeNonblocking(conn) == 0)
                goto connect_errReturn;
 #endif 
 
@@ -1786,6 +1809,13 @@ closePGconn(PGconn *conn)
                (void) pqFlush(conn);
        }
 
+       /* 
+        * must reset the blocking status so a possible reconnect will work
+        * don't call PQsetnonblocking() because it will fail if it's unable
+        * to flush the connection.
+        */
+       conn->nonblocking = FALSE;
+
        /*
         * Close the connection, reset all transient state, flush I/O buffers.
         */
index 9840cc3b9c6483cfd505372cd7493730c27d4efc..0b4a5077fd9eda91e82831ff1591dba193459c9b 100644 (file)
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.87 2000/01/18 06:09:24 momjian Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.88 2000/01/24 02:12:58 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -2116,7 +2116,6 @@ PQgetisnull(const PGresult *res, int tup_num, int field_num)
 int
 PQsetnonblocking(PGconn *conn, int arg)
 {
-       int     fcntlarg;
 
        arg = (arg == TRUE) ? 1 : 0;
        /* early out if the socket is already in the state requested */
@@ -2131,45 +2130,11 @@ PQsetnonblocking(PGconn *conn, int arg)
         *  _from_ or _to_ blocking mode, either way we can block them.
         */
        /* if we are going from blocking to non-blocking flush here */
-       if (!pqIsnonblocking(conn) && pqFlush(conn))
-               return (-1);
-
-
-#ifdef USE_SSL
-       if (conn->ssl)
-       {
-               printfPQExpBuffer(&conn->errorMessage,
-                       "PQsetnonblocking() -- not supported when using SSL\n");
-               return (-1);
-       }
-#endif /* USE_SSL */
-
-#ifndef WIN32
-       fcntlarg = fcntl(conn->sock, F_GETFL, 0);
-       if (fcntlarg == -1)
-               return (-1);
-
-       if ((arg == TRUE && 
-               fcntl(conn->sock, F_SETFL, fcntlarg | O_NONBLOCK) == -1) ||
-               (arg == FALSE &&
-               fcntl(conn->sock, F_SETFL, fcntlarg & ~O_NONBLOCK) == -1)) 
-#else
-       fcntlarg = arg;
-       if (ioctlsocket(conn->sock, FIONBIO, &fcntlarg) != 0)
-#endif
-       {
-               printfPQExpBuffer(&conn->errorMessage,
-                       "PQsetblocking() -- unable to set nonblocking status to %s\n",
-                       arg == TRUE ? "TRUE" : "FALSE");
+       if (pqFlush(conn))
                return (-1);
-       }
 
        conn->nonblocking = arg;
 
-       /* if we are going from non-blocking to blocking flush here */
-       if (pqIsnonblocking(conn) && pqFlush(conn))
-               return (-1);
-
        return (0);
 }