1. 10 Jun, 2016 1 commit
    • Tom Lane's avatar
      Improve the situation for parallel query versus temp relations. · cae1c788
      Tom Lane authored
      Transmit the leader's temp-namespace state to workers.  This is important
      because without it, the workers do not really have the same search path
      as the leader.  For example, there is no good reason (and no extant code
      either) to prevent a worker from executing a temp function that the
      leader created previously; but as things stood it would fail to find the
      temp function, and then either fail or execute the wrong function entirely.
      
      We still prohibit a worker from creating a temp namespace on its own.
      In effect, a worker can only see the session's temp namespace if the leader
      had created it before starting the worker, which seems like the right
      semantics.
      
      Also, transmit the leader's BackendId to workers, and arrange for workers
      to use that when determining the physical file path of a temp relation
      belonging to their session.  While the original intent was to prevent such
      accesses entirely, there were a number of holes in that, notably in places
      like dbsize.c which assume they can safely access temp rels of other
      sessions anyway.  We might as well get this right, as a small down payment
      on someday allowing workers to access the leader's temp tables.  (With
      this change, directly using "MyBackendId" as a relation or buffer backend
      ID is deprecated; you should use BackendIdForTempRelations() instead.
      I left a couple of such uses alone though, as they're not going to be
      reachable in parallel workers until we do something about localbuf.c.)
      
      Move the thou-shalt-not-access-thy-leader's-temp-tables prohibition down
      into localbuf.c, which is where it actually matters, instead of having it
      in relation_open().  This amounts to recognizing that access to temp
      tables' catalog entries is perfectly safe in a worker, it's only the data
      in local buffers that is problematic.
      
      Having done all that, we can get rid of the test in has_parallel_hazard()
      that says that use of a temp table's rowtype is unsafe in parallel workers.
      That test was unduly expensive, and if we really did need such a
      prohibition, that was not even close to being a bulletproof guard for it.
      (For example, any user-defined function executed in a parallel worker
      might have attempted such access.)
      cae1c788
  2. 09 Jun, 2016 15 commits
    • Robert Haas's avatar
      Repair a bit of pgindent damage. · 2410a254
      Robert Haas authored
      Inserting line-breaks into the middle of a URL is, to put it mildly, not
      very helpful, so persuade pgindent to leave it alone.
      2410a254
    • Robert Haas's avatar
      pgindent run for 9.6 · 4bc424b9
      Robert Haas authored
      4bc424b9
    • Robert Haas's avatar
      Update pgrowlocks extension for parallel query. · 9164deea
      Robert Haas authored
      The pgrowlocks function provided by this extension is PARALLEL SAFE.
      
      Andreas Karlsson
      9164deea
    • Robert Haas's avatar
      Update pg_prewarm extension for parallel query. · 6b3586ca
      Robert Haas authored
      The pg_prewarm function provided by this extension is PARALLEL SAFE.
      
      Andreas Karlsson
      6b3586ca
    • Robert Haas's avatar
      Update pg_freespacemap extension for parallel query. · 42d4257a
      Robert Haas authored
      All functions provided by this extension are PARALLEL SAFE.
      
      Andreas Karlsson
      42d4257a
    • Robert Haas's avatar
      Update pgcrypto extension for parallel query. · 0dbf3ce0
      Robert Haas authored
      All functions provided by this extension are PARALLEL SAFE.
      
      Andreas Karlsson
      0dbf3ce0
    • Robert Haas's avatar
      Update pg_buffercache extension for parallel query. · 06d7fd6e
      Robert Haas authored
      The pg_buffercache_pages function provided by this extension is
      PARALLEL SAFE.
      
      Andreas Karlsson
      06d7fd6e
    • Robert Haas's avatar
      Update pageinspect extension for parallel query. · e3b607cd
      Robert Haas authored
      All functions provided by this extension are PARALLEL SAFE.
      
      Andreas Karlsson
      e3b607cd
    • Tom Lane's avatar
      Handle contrib's GIN/GIST support function signature changes honestly. · 749a787c
      Tom Lane authored
      In commits 9ff60273 and dbe23289 I (tgl) fixed the
      signatures of a bunch of contrib's GIN and GIST support functions so that
      they would pass validation by the recently-added amvalidate functions.
      The backend does not actually consult or check those signatures otherwise,
      so I figured this was basically cosmetic and did not require an extension
      version bump.  However, Alexander Korotkov pointed out that that would
      leave us in a pretty messy situation if we ever wanted to redefine those
      functions later, because there wouldn't be a unique way to name them.
      Since we're going to be bumping these extensions' versions anyway for
      parallel-query cleanups, let's take care of this now.
      
      Andreas Karlsson, adjusted for more search-path-safety by me
      749a787c
    • Robert Haas's avatar
      Don't generate parallel paths for rels with parallel-restricted outputs. · b12fd41c
      Robert Haas authored
      Such paths are unsafe.  To make it cheaper to detect when this case
      applies, track whether a relation's default PathTarget contains any
      non-Vars.  In most cases, the answer will be no, which enables us to
      determine cheaply that the target list for a proposed path is
      parallel-safe.  However, subquery pull-up can create cases that
      require us to inspect the target list more carefully.
      
      Amit Kapila, reviewed by me.
      b12fd41c
    • Robert Haas's avatar
      Yet again update typedefs.list file in preparation for pgindent run · e7bcd983
      Robert Haas authored
      Because the run was delayed, the file had a chance to get out of date.
      e7bcd983
    • Tom Lane's avatar
      Clarify documentation of ceil/ceiling/floor functions. · 7feb60c1
      Tom Lane authored
      Document these as "nearest integer >= argument" and "nearest integer <=
      argument", which will hopefully be less confusing than the old formulation.
      New wording is from Matlab via Dean Rasheed.
      
      I changed the pg_description entries as well as the SGML docs.  In the
      back branches, this will only affect installations initdb'd in the future,
      but it should be harmless otherwise.
      
      Discussion: <CAEZATCW3yzJo-NMSiQs5jXNFbTsCEftZS-Og8=FvFdiU+kYuSA@mail.gmail.com>
      7feb60c1
    • Tom Lane's avatar
      Mop-up for parallel degree-ectomy. · e4158319
      Tom Lane authored
      Fix a couple of overlooked uses of "degree" terminology.  Make the parallel
      worker count selection logic in create_plain_partial_paths more robust (in
      particular, it failed with max_parallel_workers_per_gather set to zero).
      e4158319
    • Robert Haas's avatar
      Eliminate "parallel degree" terminology. · c9ce4a1c
      Robert Haas authored
      This terminology provoked widespread complaints.  So, instead, rename
      the GUC max_parallel_degree to max_parallel_workers_per_gather
      (leaving room for a possible future GUC max_parallel_workers that acts
      as a system-wide limit), and rename the parallel_degree reloption to
      parallel_workers.  Rename structure members to match.
      
      These changes create a dump/restore hazard for users of PostgreSQL
      9.6beta1 who have set the reloption (or applied the GUC using ALTER
      USER or ALTER DATABASE).
      c9ce4a1c
    • Tom Lane's avatar
      Polish the documentation concerning phrase text search. · 6581e930
      Tom Lane authored
      Fix grammar, improve examples, etc.
      
      I did not attempt to document the current behavior concerning distance-zero
      matches, because I think that's broken and needs to change, so I'm not
      going to use up brain cells figuring out how to explain how it works now.
      One way or the other, there's still more to write here.
      6581e930
  3. 08 Jun, 2016 2 commits
  4. 07 Jun, 2016 22 commits