1. 06 Aug, 2021 1 commit
  2. 21 Apr, 2021 1 commit
  3. 10 Mar, 2021 1 commit
    • Tom Lane's avatar
      Doc: get rid of <foreignphrase> tags. · b1243634
      Tom Lane authored
      We italicized some, but not all, instances of "per se", "pro forma", and
      "ad hoc". These phrases are widespread in formal registers of English,
      so it"s debatable whether they even qualify as foreign. We could instead
      try to be more consistent in the use of <foreignphrase>, but that"s
      difficult to enforce, so let"s just remove the tags for those words.
      
      The one case that seems to deserve the tag is "voilà". Instead of keeping
      just one instance of the tag, change that to a more standard phrase.
      
      John Naylor
      
      Discussion: https://postgr.es/m/CAFBsxsHtWs_NsccAVgQ=tTUKkXHpHdkjZXtp_Cd9dGWyBDxfbQ@mail.gmail.com
      b1243634
  4. 06 Mar, 2021 1 commit
  5. 24 Feb, 2021 1 commit
  6. 19 Oct, 2020 1 commit
    • Heikki Linnakangas's avatar
      Misc documentation fixes. · c5f42daa
      Heikki Linnakangas authored
      - Misc grammar and punctuation fixes.
      
      - Stylistic cleanup: use spaces between function arguments and JSON fields
        in examples. For example "foo(a,b)" -> "foo(a, b)". Add semicolon after
        last END in a few PL/pgSQL examples that were missing them.
      
      - Make sentence that talked about "..." and ".." operators more clear,
        by avoiding to end the sentence with "..". That makes it look the same
        as "..."
      
      - Fix syntax description for HAVING: HAVING conditions cannot be repeated
      
      Patch by Justin Pryzby, per Yaroslav Schekin's report. Backpatch to all
      supported versions, to the extent that the patch applies easily.
      
      Discussion: https://www.postgresql.org/message-id/20201005191922.GE17626%40telsasoft.com
      c5f42daa
  7. 09 Jan, 2020 1 commit
  8. 11 Nov, 2019 1 commit
    • Tom Lane's avatar
      Doc: fix ancient mistake, or at least obsolete info, in rules example. · b6423e92
      Tom Lane authored
      The example of expansion of multiple views claimed that the resulting
      subquery nest would not get fully flattened because of an aggregate
      function.  There's no aggregate in the example, though, only a user
      defined function confusingly named MIN().  In a modern server, the
      reason for the non-flattening is that MIN() is volatile, but I'm
      unsure whether that was true back when this text was written.
      
      Let's reduce the confusion level by using LEAST() instead (which
      we didn't have at the time this example was created).  And then
      we can just say that the planner will flatten the sub-queries, so
      the rewrite system doesn't have to.
      
      Noted by Paul Jungwirth.  This text is old enough to vote, so
      back-patch to all supported branches.
      
      Discussion: https://postgr.es/m/CA+renyXZFnmp9PcvX1EVR2dR=XG5e6E-AELr8AHCNZ8RYrpnPw@mail.gmail.com
      b6423e92
  9. 17 Feb, 2019 1 commit
  10. 27 Nov, 2017 1 commit
    • Tom Lane's avatar
      Fix creation of resjunk tlist entries for inherited mixed UPDATE/DELETE. · 9a785ad5
      Tom Lane authored
      rewriteTargetListUD's processing is dependent on the relkind of the query's
      target table.  That was fine at the time it was made to act that way, even
      for queries on inheritance trees, because all tables in an inheritance tree
      would necessarily be plain tables.  However, the 9.5 feature addition
      allowing some members of an inheritance tree to be foreign tables broke the
      assumption that rewriteTargetListUD's output tlist could be applied to all
      child tables with nothing more than column-number mapping.  This led to
      visible failures if foreign child tables had row-level triggers, and would
      also break in cases where child tables belonged to FDWs that used methods
      other than CTID for row identification.
      
      To fix, delay running rewriteTargetListUD until after the planner has
      expanded inheritance, so that it is applied separately to the (already
      mapped) tlist for each child table.  We can conveniently call it from
      preprocess_targetlist.  Refactor associated code slightly to avoid the
      need to heap_open the target relation multiple times during
      preprocess_targetlist.  (The APIs remain a bit ugly, particularly around
      the point of which steps scribble on parse->targetList and which don't.
      But avoiding such scribbling would require a change in FDW callback APIs,
      which is more pain than it's worth.)
      
      Also fix ExecModifyTable to ensure that "tupleid" is reset to NULL when
      we transition from rows providing a CTID to rows that don't.  (That's
      really an independent bug, but it manifests in much the same cases.)
      
      Add a regression test checking one manifestation of this problem, which
      was that row-level triggers on a foreign child table did not work right.
      
      Back-patch to 9.5 where the problem was introduced.
      
      Etsuro Fujita, reviewed by Ildus Kurbangaliev and Ashutosh Bapat
      
      Discussion: https://postgr.es/m/20170514150525.0346ba72@postgrespro.ru
      9a785ad5
  11. 23 Nov, 2017 1 commit
    • Peter Eisentraut's avatar
      Convert documentation to DocBook XML · 3c49c6fa
      Peter Eisentraut authored
      Since some preparation work had already been done, the only source
      changes left were changing empty-element tags like <xref linkend="foo">
      to <xref linkend="foo"/>, and changing the DOCTYPE.
      
      The source files are still named *.sgml, but they are actually XML files
      now.  Renaming could be considered later.
      
      In the build system, the intermediate step to convert from SGML to XML
      is removed.  Everything is build straight from the source files again.
      The OpenSP (or the old SP) package is no longer needed.
      
      The documentation toolchain instructions are updated and are much
      simpler now.
      
      Peter Eisentraut, Alexander Lakhin, Jürgen Purtz
      3c49c6fa
  12. 20 Oct, 2017 1 commit
    • Peter Eisentraut's avatar
      Convert SGML IDs to lower case · 1ff01b39
      Peter Eisentraut authored
      IDs in SGML are case insensitive, and we have accumulated a mix of upper
      and lower case IDs, including different variants of the same ID.  In
      XML, these will be case sensitive, so we need to fix up those
      differences.  Going to all lower case seems most straightforward, and
      the current build process already makes all anchors and lower case
      anyway during the SGML->XML conversion, so this doesn't create any
      difference in the output right now.  A future XML-only build process
      would, however, maintain any mixed case ID spellings in the output, so
      that is another reason to clean this up beforehand.
      
      Author: Alexander Lakhin <exclusion@gmail.com>
      1ff01b39
  13. 17 Oct, 2017 1 commit
    • Peter Eisentraut's avatar
      Don't use SGML empty tags · c29c5789
      Peter Eisentraut authored
      For DocBook XML compatibility, don't use SGML empty tags (</>) anymore,
      replace by the full tag name.  Add a warning option to catch future
      occurrences.
      
      Alexander Lakhin, Jürgen Purtz
      c29c5789
  14. 28 Sep, 2017 1 commit
    • Peter Eisentraut's avatar
      Remove SGML marked sections · 22d97646
      Peter Eisentraut authored
      For XML compatibility, replace marked sections <![IGNORE[ ]]> with
      comments <!-- -->.  In some cases it seemed better to remove the ignored
      text altogether, and in one case the text should not have been ignored.
      22d97646
  15. 06 Sep, 2017 1 commit
    • Peter Eisentraut's avatar
      Escape < and & in SGML · 1c53f612
      Peter Eisentraut authored
      This is not required in SGML, but will be in XML, so this is a step to
      prepare for the conversion to XML.  (It is still not required to escape
      >, but we did it here in some cases for symmetry.)
      
      Add a command-line option to osx/onsgmls calls to warn about unescaped
      occurrences in the future.
      
      Author: Alexander Law <exclusion@gmail.com>
      Author: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
      1c53f612
  16. 21 Apr, 2017 1 commit
    • Peter Eisentraut's avatar
      doc: Update link · f58b6643
      Peter Eisentraut authored
      The reference "That is the topic of the next section." has been
      incorrect since the materialized views documentation got inserted
      between the section "rules-views" and "rules-update".
      
      Author: Zertrin <postgres_wiki@zertrin.org>
      f58b6643
  17. 22 Sep, 2015 1 commit
  18. 09 Aug, 2015 1 commit
  19. 06 Aug, 2015 1 commit
  20. 27 Apr, 2015 1 commit
    • Stephen Frost's avatar
      Improve qual pushdown for RLS and SB views · dcbf5948
      Stephen Frost authored
      The original security barrier view implementation, on which RLS is
      built, prevented all non-leakproof functions from being pushed down to
      below the view, even when the function was not receiving any data from
      the view.  This optimization improves on that situation by, instead of
      checking strictly for non-leakproof functions, it checks for Vars being
      passed to non-leakproof functions and allows functions which do not
      accept arguments or whose arguments are not from the current query level
      (eg: constants can be particularly useful) to be pushed down.
      
      As discussed, this does mean that a function which is pushed down might
      gain some idea that there are rows meeting a certain criteria based on
      the number of times the function is called, but this isn't a
      particularly new issue and the documentation in rules.sgml already
      addressed similar covert-channel risks.  That documentation is updated
      to reflect that non-leakproof functions may be pushed down now, if
      they meet the above-described criteria.
      
      Author: Dean Rasheed, with a bit of rework to make things clearer,
      along with comment and documentation updates from me.
      dcbf5948
  21. 27 Nov, 2014 1 commit
    • Stephen Frost's avatar
      Rename pg_rowsecurity -> pg_policy and other fixes · 143b39c1
      Stephen Frost authored
      As pointed out by Robert, we should really have named pg_rowsecurity
      pg_policy, as the objects stored in that catalog are policies.  This
      patch fixes that and updates the column names to start with 'pol' to
      match the new catalog name.
      
      The security consideration for COPY with row level security, also
      pointed out by Robert, has also been addressed by remembering and
      re-checking the OID of the relation initially referenced during COPY
      processing, to make sure it hasn't changed under us by the time we
      finish planning out the query which has been built.
      
      Robert and Alvaro also commented on missing OCLASS and OBJECT entries
      for POLICY (formerly ROWSECURITY or POLICY, depending) in various
      places.  This patch fixes that too, which also happens to add the
      ability to COMMENT on policies.
      
      In passing, attempt to improve the consistency of messages, comments,
      and documentation as well.  This removes various incarnations of
      'row-security', 'row-level security', 'Row-security', etc, in favor
      of 'policy', 'row level security' or 'row_security' as appropriate.
      
      Happy Thanksgiving!
      143b39c1
  22. 18 Jun, 2014 1 commit
    • Tom Lane's avatar
      Implement UPDATE tab SET (col1,col2,...) = (SELECT ...), ... · 8f889b10
      Tom Lane authored
      This SQL-standard feature allows a sub-SELECT yielding multiple columns
      (but only one row) to be used to compute the new values of several columns
      to be updated.  While the same results can be had with an independent
      sub-SELECT per column, such a workaround can require a great deal of
      duplicated computation.
      
      The standard actually says that the source for a multi-column assignment
      could be any row-valued expression.  The implementation used here is
      tightly tied to our existing sub-SELECT support and can't handle other
      cases; the Bison grammar would have some issues with them too.  However,
      I don't feel too bad about this since other cases can be converted into
      sub-SELECTs.  For instance, "SET (a,b,c) = row_valued_function(x)" could
      be written "SET (a,b,c) = (SELECT * FROM row_valued_function(x))".
      8f889b10
  23. 07 May, 2014 1 commit
    • Peter Eisentraut's avatar
      doc: Fix DocBook XML validity · 3a9d430a
      Peter Eisentraut authored
      The main problem is that DocBook SGML allows indexterm elements just
      about everywhere, but DocBook XML is stricter.  For example, this common
      pattern
      
          <varlistentry>
           <indexterm>...</indexterm>
           <term>...</term>
           ...
          </varlistentry>
      
      needs to be changed to something like
      
          <varlistentry>
           <term>...<indexterm>...</indexterm></term>
           ...
          </varlistentry>
      
      See also bb4eefe7.
      
      There is currently nothing in the build system that enforces that things
      stay valid, because that requires additional tools and will receive
      separate consideration.
      3a9d430a
  24. 17 Apr, 2014 1 commit
    • Tom Lane's avatar
      Rename EXPLAIN ANALYZE's "total runtime" output to "execution time". · 5f86cbd7
      Tom Lane authored
      Now that EXPLAIN also outputs a "planning time" measurement, the use of
      "total" here seems rather confusing: it sounds like it might include the
      planning time which of course it doesn't.  Majority opinion was that
      "execution time" is a better label, so we'll call it that.
      
      This should be noted as a backwards incompatibility for tools that examine
      EXPLAIN ANALYZE output.
      
      In passing, I failed to resist the temptation to do a little editing on the
      materialized-view example affected by this change.
      5f86cbd7
  25. 24 Feb, 2014 1 commit
  26. 21 Mar, 2013 1 commit
  27. 04 Mar, 2013 1 commit
    • Kevin Grittner's avatar
      Add a materialized view relations. · 3bf3ab8c
      Kevin Grittner authored
      A materialized view has a rule just like a view and a heap and
      other physical properties like a table.  The rule is only used to
      populate the table, references in queries refer to the
      materialized data.
      
      This is a minimal implementation, but should still be useful in
      many cases.  Currently data is only populated "on demand" by the
      CREATE MATERIALIZED VIEW and REFRESH MATERIALIZED VIEW statements.
      It is expected that future releases will add incremental updates
      with various timings, and that a more refined concept of defining
      what is "fresh" data will be developed.  At some point it may even
      be possible to have queries use a materialized in place of
      references to underlying tables, but that requires the other
      above-mentioned features to be working first.
      
      Much of the documentation work by Robert Haas.
      Review by Noah Misch, Thom Brown, Robert Haas, Marko Tiikkaja
      Security review by KaiGai Kohei, with a decision on how best to
      implement sepgsql still pending.
      3bf3ab8c
  28. 08 Dec, 2012 1 commit
    • Tom Lane's avatar
      Support automatically-updatable views. · a99c42f2
      Tom Lane authored
      This patch makes "simple" views automatically updatable, without the need
      to create either INSTEAD OF triggers or INSTEAD rules.  "Simple" views
      are those classified as updatable according to SQL-92 rules.  The rewriter
      transforms INSERT/UPDATE/DELETE commands on such views directly into an
      equivalent command on the underlying table, which will generally have
      noticeably better performance than is possible with either triggers or
      user-written rules.  A view that has INSTEAD OF triggers or INSTEAD rules
      continues to operate the same as before.
      
      For the moment, security_barrier views are not considered simple.
      Also, we do not support WITH CHECK OPTION.  These features may be
      added in future.
      
      Dean Rasheed, reviewed by Amit Kapila
      a99c42f2
  29. 07 Jun, 2012 1 commit
  30. 14 Feb, 2012 1 commit
    • Robert Haas's avatar
      Allow LEAKPROOF functions for better performance of security views. · cd30728f
      Robert Haas authored
      We don't normally allow quals to be pushed down into a view created
      with the security_barrier option, but functions without side effects
      are an exception: they're OK.  This allows much better performance in
      common cases, such as when using an equality operator (that might
      even be indexable).
      
      There is an outstanding issue here with the CREATE FUNCTION / ALTER
      FUNCTION syntax: there's no way to use ALTER FUNCTION to unset the
      leakproof flag.  But I'm committing this as-is so that it doesn't
      have to be rebased again; we can fix up the grammar in a future
      commit.
      
      KaiGai Kohei, with some wordsmithing by me.
      cd30728f
  31. 22 Dec, 2011 2 commits
    • Robert Haas's avatar
      Typo fixes. · 0510b62d
      Robert Haas authored
      All noted by Jaime Casanova.
      0510b62d
    • Robert Haas's avatar
      Add a security_barrier option for views. · 0e4611c0
      Robert Haas authored
      When a view is marked as a security barrier, it will not be pulled up
      into the containing query, and no quals will be pushed down into it,
      so that no function or operator chosen by the user can be applied to
      rows not exposed by the view.  Views not configured with this
      option cannot provide robust row-level security, but will perform far
      better.
      
      Patch by KaiGai Kohei; original problem report by Heikki Linnakangas
      (in October 2009!).  Review (in earlier versions) by Noah Misch and
      others.  Design advice by Tom Lane and myself.  Further review and
      cleanup by me.
      0e4611c0
  32. 29 Jan, 2011 1 commit
  33. 10 Oct, 2010 1 commit
    • Tom Lane's avatar
      Support triggers on views. · 2ec993a7
      Tom Lane authored
      This patch adds the SQL-standard concept of an INSTEAD OF trigger, which
      is fired instead of performing a physical insert/update/delete.  The
      trigger function is passed the entire old and/or new rows of the view,
      and must figure out what to do to the underlying tables to implement
      the update.  So this feature can be used to implement updatable views
      using trigger programming style rather than rule hacking.
      
      In passing, this patch corrects the names of some columns in the
      information_schema.triggers view.  It seems the SQL committee renamed
      them somewhere between SQL:99 and SQL:2003.
      
      Dean Rasheed, reviewed by Bernd Helmle; some additional hacking by me.
      2ec993a7
  34. 08 Oct, 2010 1 commit
  35. 20 Sep, 2010 1 commit
  36. 13 May, 2010 1 commit
  37. 24 Feb, 2010 2 commits
  38. 05 Nov, 2009 1 commit