1. 05 Sep, 2017 1 commit
  2. 21 Jun, 2017 2 commits
    • Tom Lane's avatar
      Phase 3 of pgindent updates. · 382ceffd
      Tom Lane authored
      Don't move parenthesized lines to the left, even if that means they
      flow past the right margin.
      
      By default, BSD indent lines up statement continuation lines that are
      within parentheses so that they start just to the right of the preceding
      left parenthesis.  However, traditionally, if that resulted in the
      continuation line extending to the right of the desired right margin,
      then indent would push it left just far enough to not overrun the margin,
      if it could do so without making the continuation line start to the left of
      the current statement indent.  That makes for a weird mix of indentations
      unless one has been completely rigid about never violating the 80-column
      limit.
      
      This behavior has been pretty universally panned by Postgres developers.
      Hence, disable it with indent's new -lpl switch, so that parenthesized
      lines are always lined up with the preceding left paren.
      
      This patch is much less interesting than the first round of indent
      changes, but also bulkier, so I thought it best to separate the effects.
      
      Discussion: https://postgr.es/m/E1dAmxK-0006EE-1r@gemulon.postgresql.org
      Discussion: https://postgr.es/m/30527.1495162840@sss.pgh.pa.us
      382ceffd
    • Tom Lane's avatar
      Phase 2 of pgindent updates. · c7b8998e
      Tom Lane authored
      Change pg_bsd_indent to follow upstream rules for placement of comments
      to the right of code, and remove pgindent hack that caused comments
      following #endif to not obey the general rule.
      
      Commit e3860ffa wasn't actually using
      the published version of pg_bsd_indent, but a hacked-up version that
      tried to minimize the amount of movement of comments to the right of
      code.  The situation of interest is where such a comment has to be
      moved to the right of its default placement at column 33 because there's
      code there.  BSD indent has always moved right in units of tab stops
      in such cases --- but in the previous incarnation, indent was working
      in 8-space tab stops, while now it knows we use 4-space tabs.  So the
      net result is that in about half the cases, such comments are placed
      one tab stop left of before.  This is better all around: it leaves
      more room on the line for comment text, and it means that in such
      cases the comment uniformly starts at the next 4-space tab stop after
      the code, rather than sometimes one and sometimes two tabs after.
      
      Also, ensure that comments following #endif are indented the same
      as comments following other preprocessor commands such as #else.
      That inconsistency turns out to have been self-inflicted damage
      from a poorly-thought-through post-indent "fixup" in pgindent.
      
      This patch is much less interesting than the first round of indent
      changes, but also bulkier, so I thought it best to separate the effects.
      
      Discussion: https://postgr.es/m/E1dAmxK-0006EE-1r@gemulon.postgresql.org
      Discussion: https://postgr.es/m/30527.1495162840@sss.pgh.pa.us
      c7b8998e
  3. 06 Feb, 2017 1 commit
  4. 08 Nov, 2016 1 commit
    • Tom Lane's avatar
      Make SPI_fnumber() reject dropped columns. · 6d30fb1f
      Tom Lane authored
      There's basically no scenario where it's sensible for this to match
      dropped columns, so put a test for dropped-ness into SPI_fnumber()
      itself, and excise the test from the small number of callers that
      were paying attention to the case.  (Most weren't :-(.)
      
      In passing, normalize tests at call sites: always reject attnum <= 0
      if we're disallowing system columns.  Previously there was a mixture
      of "< 0" and "<= 0" tests.  This makes no practical difference since
      SPI_fnumber() never returns 0, but I'm feeling pedantic today.
      
      Also, in the places that are actually live user-facing code and not
      legacy cruft, distinguish "column not found" from "can't handle
      system column".
      
      Per discussion with Jim Nasby; thi supersedes his original patch
      that just changed the behavior at one call site.
      
      Discussion: <b2de8258-c4c0-1cb8-7b97-e8538e5c975c@BlueTreble.com>
      6d30fb1f
  5. 12 Mar, 2016 1 commit
    • Tom Lane's avatar
      Widen query numbers-of-tuples-processed counters to uint64. · 23a27b03
      Tom Lane authored
      This patch widens SPI_processed, EState's es_processed field, PortalData's
      portalPos field, FuncCallContext's call_cntr and max_calls fields,
      ExecutorRun's count argument, PortalRunFetch's result, and the max number
      of rows in a SPITupleTable to uint64, and deals with (I hope) all the
      ensuing fallout.  Some of these values were declared uint32 before, and
      others "long".
      
      I also removed PortalData's posOverflow field, since that logic seems
      pretty useless given that portalPos is now always 64 bits.
      
      The user-visible results are that command tags for SELECT etc will
      correctly report tuple counts larger than 4G, as will plpgsql's GET
      GET DIAGNOSTICS ... ROW_COUNT command.  Queries processing more tuples
      than that are still not exactly the norm, but they're becoming more
      common.
      
      Most values associated with FETCH/MOVE distances, such as PortalRun's count
      argument and the count argument of most SPI functions that have one, remain
      declared as "long".  It's not clear whether it would be worth promoting
      those to int64; but it would definitely be a large dollop of additional
      API churn on top of this, and it would only help 32-bit platforms which
      seem relatively less likely to see any benefit.
      
      Andreas Scherbaum, reviewed by Christian Ullrich, additional hacking by me
      23a27b03
  6. 18 Apr, 2014 1 commit
    • Peter Eisentraut's avatar
      Create function prototype as part of PG_FUNCTION_INFO_V1 macro · e7128e8d
      Peter Eisentraut authored
      Because of gcc -Wmissing-prototypes, all functions in dynamically
      loadable modules must have a separate prototype declaration.  This is
      meant to detect global functions that are not declared in header files,
      but in cases where the function is called via dfmgr, this is redundant.
      Besides filling up space with boilerplate, this is a frequent source of
      compiler warnings in extension modules.
      
      We can fix that by creating the function prototype as part of the
      PG_FUNCTION_INFO_V1 macro, which such modules have to use anyway.  That
      makes the code of modules cleaner, because there is one less place where
      the entry points have to be listed, and creates an additional check that
      functions have the right prototype.
      
      Remove now redundant prototypes from contrib and other modules.
      e7128e8d
  7. 13 Oct, 2013 1 commit
  8. 10 Jun, 2012 1 commit
  9. 16 Sep, 2011 1 commit
    • Tom Lane's avatar
      Redesign the plancache mechanism for more flexibility and efficiency. · e6faf910
      Tom Lane authored
      Rewrite plancache.c so that a "cached plan" (which is rather a misnomer
      at this point) can support generation of custom, parameter-value-dependent
      plans, and can make an intelligent choice between using custom plans and
      the traditional generic-plan approach.  The specific choice algorithm
      implemented here can probably be improved in future, but this commit is
      all about getting the mechanism in place, not the policy.
      
      In addition, restructure the API to greatly reduce the amount of extraneous
      data copying needed.  The main compromise needed to make that possible was
      to split the initial creation of a CachedPlanSource into two steps.  It's
      worth noting in particular that SPI_saveplan is now deprecated in favor of
      SPI_keepplan, which accomplishes the same end result with zero data
      copying, and no need to then spend even more cycles throwing away the
      original SPIPlan.  The risk of long-term memory leaks while manipulating
      SPIPlans has also been greatly reduced.  Most of this improvement is based
      on use of the recently-added MemoryContextSetParent primitive.
      e6faf910
  10. 04 Jul, 2011 1 commit
  11. 08 Oct, 2010 1 commit
    • Tom Lane's avatar
      Fix sloppy usage of TRIGGER_FIRED_BEFORE/TRIGGER_FIRED_AFTER. · caaf2e84
      Tom Lane authored
      Various places were testing TRIGGER_FIRED_BEFORE() where what they really
      meant was !TRIGGER_FIRED_AFTER(), or vice versa.  This needs to be cleaned
      up because there are about to be more than two possible states.
      
      We might want to note this in the 9.1 release notes as something for
      trigger authors to double-check.
      
      For consistency's sake I also changed some places that assumed that
      TRIGGER_FIRED_FOR_ROW and TRIGGER_FIRED_FOR_STATEMENT are necessarily
      mutually exclusive; that's not in immediate danger of breaking, but
      it's still sloppier than it should be.
      
      Extracted from Dean Rasheed's patch for triggers on views.  I'm committing
      this separately since it's an identifiable separate issue, and is the
      only reason for the patch to touch most of these particular files.
      caaf2e84
  12. 20 Sep, 2010 1 commit
  13. 11 Jun, 2009 1 commit
  14. 07 Jan, 2009 1 commit
    • Tom Lane's avatar
      Fix executor/spi.h to follow our usual conventions for include files, ie, · 1cfd9e88
      Tom Lane authored
      not include postgres.h nor anything else it doesn't directly need.  Add
      #includes to calling files as needed to compensate.  Per my proposal of
      yesterday.
      
      This should be noted as a source code change in the 8.4 release notes,
      since it's likely to require changes in add-on modules.
      1cfd9e88
  15. 17 May, 2008 1 commit
    • Andrew Dunstan's avatar
      Add $PostgreSQL$ markers to a lot of files that were missing them. · 53972b46
      Andrew Dunstan authored
      This particular batch was just for *.c and *.h file.
      
      The changes were made with the following 2 commands:
      
      find . \( \( -name 'libstemmer' -o -name 'expected' -o -name 'ppport.h' \) -prune \) -o  \( -name '*.[ch]'  \) \( -exec grep -q '\$PostgreSQL' {} \; -o -print \) | while read file ; do head -n 1 < $file | grep -q '^/\*' && echo $file; done | xargs -l sed -i -e '1s/^\// /' -e '1i/*\n * $PostgreSQL:$ \n *'
      
      find . \( \( -name 'libstemmer' -o -name 'expected' -o -name 'ppport.h' \) -prune \) -o  \( -name '*.[ch]'  \) \( -exec grep -q '\$PostgreSQL' {} \; -o -print \) | xargs -l sed -i -e '1i/*\n * $PostgreSQL:$ \n */'
      53972b46
  16. 15 Mar, 2007 1 commit
    • Tom Lane's avatar
      Make use of plancache module for SPI plans. In particular, since plpgsql · 95f6d2d2
      Tom Lane authored
      uses SPI plans, this finally fixes the ancient gotcha that you can't
      drop and recreate a temp table used by a plpgsql function.
      
      Along the way, clean up SPI's API a little bit by declaring SPI plan
      pointers as "SPIPlanPtr" instead of "void *".  This is cosmetic but
      helps to forestall simple programming mistakes.  (I have changed some
      but not all of the callers to match; there are still some "void *"'s
      in contrib and the PL's.  This is intentional so that we can see if
      anyone's compiler complains about it.)
      95f6d2d2
  17. 01 Feb, 2007 1 commit
    • Bruce Momjian's avatar
      Wording cleanup for error messages. Also change can't -> cannot. · 8b4ff8b6
      Bruce Momjian authored
      Standard English uses "may", "can", and "might" in different ways:
      
              may - permission, "You may borrow my rake."
      
              can - ability, "I can lift that log."
      
              might - possibility, "It might rain today."
      
      Unfortunately, in conversational English, their use is often mixed, as
      in, "You may use this variable to do X", when in fact, "can" is a better
      choice.  Similarly, "It may crash" is better stated, "It might crash".
      8b4ff8b6
  18. 11 Jul, 2006 1 commit
  19. 30 May, 2006 1 commit
  20. 15 Oct, 2005 1 commit
  21. 07 Oct, 2004 1 commit
  22. 04 Aug, 2003 1 commit
  23. 24 Jul, 2003 1 commit
  24. 27 May, 2003 1 commit
  25. 03 Oct, 2002 1 commit
  26. 04 Sep, 2002 1 commit
  27. 02 Sep, 2002 1 commit
    • Bruce Momjian's avatar
      I checked all the previous string handling errors and most of them were · a12b4e27
      Bruce Momjian authored
      already fixed by You. However there were a few left and attached patch
      should fix the rest of them.
      
      I used StringInfo only in 2 places and both of them are inside debug
      ifdefs. Only performance penalty will come from using strlen() like all
      the other code does.
      
      I also modified some of the already patched parts by changing
      snprintf(buf, 2 * BUFSIZE, ... style lines to
      snprintf(buf, sizeof(buf), ... where buf is an array.
      
      Jukka Holappa
      a12b4e27
  28. 15 Aug, 2002 1 commit
    • Bruce Momjian's avatar
      The attached patch changes most of the usages of sprintf() to · 66eb8df6
      Bruce Momjian authored
      snprintf() in contrib/. I didn't touch the places where pointer
      arithmatic was being used, or other areas where the fix wasn't
      trivial. I would think that few, if any, of the usages of sprintf()
      were actually exploitable, but it's probably better to be paranoid...
      
      Neil Conway
      66eb8df6
  29. 03 May, 2002 1 commit
  30. 06 Mar, 2002 1 commit
    • Bruce Momjian's avatar
      Change made to elog: · 92288a1c
      Bruce Momjian authored
      o  Change all current CVS messages of NOTICE to WARNING.  We were going
      to do this just before 7.3 beta but it has to be done now, as you will
      see below.
      
      o Change current INFO messages that should be controlled by
      client_min_messages to NOTICE.
      
      o Force remaining INFO messages, like from EXPLAIN, VACUUM VERBOSE, etc.
      to always go to the client.
      
      o Remove INFO from the client_min_messages options and add NOTICE.
      
      Seems we do need three non-ERROR elog levels to handle the various
      behaviors we need for these messages.
      
      Regression passed.
      92288a1c
  31. 05 Nov, 2001 1 commit
  32. 28 Oct, 2001 1 commit
  33. 25 Oct, 2001 1 commit
  34. 23 Mar, 2001 1 commit
  35. 03 Dec, 2000 1 commit
  36. 20 Nov, 2000 1 commit
    • Tom Lane's avatar
      Revise handling of oldstyle/newstyle functions per recent discussions · 5bb2300b
      Tom Lane authored
      in pghackers list.  Support for oldstyle internal functions is gone
      (no longer needed, since conversion is complete) and pg_language entry
      'internal' now implies newstyle call convention.  pg_language entry
      'newC' is gone; both old and newstyle dynamically loaded C functions
      are now called language 'C'.  A newstyle function must be identified
      by an associated info routine.  See src/backend/utils/fmgr/README.
      5bb2300b
  37. 29 May, 2000 1 commit
  38. 25 May, 1999 1 commit
  39. 12 May, 1999 1 commit
    • Bruce Momjian's avatar
      I am sorry, I misinterpreted the still failing trigger regression test. · 1a87c14c
      Bruce Momjian authored
      The
      offending code
      has been removed, the action is now always dependent :-)
      
      I suggest the following patch, to finally make trigger regression happy
      again:
      
       <<refint1.patch>>
      After that you can remove the following from TODO:
      Remove ERROR:  check_primary_key: even number of arguments should be
      specified
      Trigger regression test fails
      
      Andreas
      1a87c14c