Remove Ops parameter from STATRELID cache lookup, for Tom Lane and
authorBruce Momjian
Mon, 24 Jan 2000 02:12:58 +0000 (02:12 +0000)
committerBruce Momjian
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
        
     !~* 
    Does not match (regex), case insensitive
-   'thomas' !~ '.*vadim.*'
+   'thomas' !~* '.*vadim.*'
        
       
      
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 .
     * ---------- */
 #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);
 }