Skip to content
Snippets Groups Projects
  1. Oct 08, 2006
  2. Oct 07, 2006
  3. Oct 04, 2006
  4. Sep 13, 2006
  5. Sep 08, 2006
    • Tom Lane's avatar
      Tweak the behavior of log_duration as proposed by Guillaume Smet: rather · b59d31c2
      Tom Lane authored
      than being equivalent to setting log_min_duration_statement to zero, this
      option now forces logging of all query durations, but doesn't force logging
      of query text.  Also, add duration logging coverage for fastpath function
      calls.
      b59d31c2
    • Tom Lane's avatar
      Clean up logging for extended-query-protocol operations, as per my recent · 893632be
      Tom Lane authored
      proposal.  Parameter logging works even for binary-format parameters, and
      logging overhead is avoided when disabled.
      
      log_statement = all output for the src/test/examples/testlibpq3.c example
      now looks like
      
      LOG:  statement: execute <unnamed>: SELECT * FROM test1 WHERE t = $1
      DETAIL:  parameters: $1 = 'joe''s place'
      LOG:  statement: execute <unnamed>: SELECT * FROM test1 WHERE i = $1::int4
      DETAIL:  parameters: $1 = '2'
      
      and log_min_duration_statement = 0 results in
      
      LOG:  duration: 2.431 ms  parse <unnamed>: SELECT * FROM test1 WHERE t = $1
      LOG:  duration: 2.335 ms  bind <unnamed> to <unnamed>: SELECT * FROM test1 WHERE t = $1
      DETAIL:  parameters: $1 = 'joe''s place'
      LOG:  duration: 0.394 ms  execute <unnamed>: SELECT * FROM test1 WHERE t = $1
      DETAIL:  parameters: $1 = 'joe''s place'
      LOG:  duration: 1.251 ms  parse <unnamed>: SELECT * FROM test1 WHERE i = $1::int4
      LOG:  duration: 0.566 ms  bind <unnamed> to <unnamed>: SELECT * FROM test1 WHERE i = $1::int4
      DETAIL:  parameters: $1 = '2'
      LOG:  duration: 0.173 ms  execute <unnamed>: SELECT * FROM test1 WHERE i = $1::int4
      DETAIL:  parameters: $1 = '2'
      
      (This example demonstrates the folly of ignoring parse/bind steps for duration
      logging purposes, BTW.)
      
      Along the way, create a less ad-hoc mechanism for determining which commands
      are logged by log_statement = mod and log_statement = ddl.  The former coding
      was actually missing quite a few things that look like ddl to me, and it
      did not handle EXECUTE or extended query protocol correctly at all.
      
      This commit does not do anything about the question of whether log_duration
      should be removed or made less redundant with log_min_duration_statement.
      893632be
  6. Sep 06, 2006
    • Tom Lane's avatar
      Change processing of extended-Query mode so that an unnamed statement · 5983a1aa
      Tom Lane authored
      that has parameters is always planned afresh for each Bind command,
      treating the parameter values as constants in the planner.  This removes
      the performance penalty formerly often paid for using out-of-line
      parameters --- with this definition, the planner can do constant folding,
      LIKE optimization, etc.  After a suggestion by Andrew@supernews.
      5983a1aa
  7. Sep 03, 2006
  8. Sep 02, 2006
  9. Aug 30, 2006
  10. Aug 29, 2006
  11. Aug 15, 2006
    • Tom Lane's avatar
      Add server support for "plugin" libraries that can be used for add-on tasks · abc3120e
      Tom Lane authored
      such as debugging and performance measurement.  This consists of two features:
      a table of "rendezvous variables" that allows separately-loaded shared
      libraries to communicate, and a new GUC setting "local_preload_libraries"
      that allows libraries to be loaded into specific sessions without explicit
      cooperation from the client application.  To make local_preload_libraries
      as flexible as possible, we do not restrict its use to superusers; instead,
      it is restricted to load only libraries stored in $libdir/plugins/.  The
      existing LOAD command has also been modified to allow non-superusers to
      LOAD libraries stored in this directory.
      
      This patch also renames the existing GUC variable preload_libraries to
      shared_preload_libraries (after a suggestion by Simon Riggs) and does some
      code refactoring in dfmgr.c to improve clarity.
      
      Korry Douglas, with a little help from Tom Lane.
      abc3120e
  12. Aug 14, 2006
  13. Aug 10, 2006
  14. Aug 08, 2006
    • Bruce Momjian's avatar
      For protocol-level prepare/bind/execute: · 3716f90c
      Bruce Momjian authored
      	o  print user name for all
      	o  print portal name if defined for all
      	o  print query for all
      	o  reduce log_statement header to single keyword
      	o  print bind parameters as DETAIL if text mode
      3716f90c
  15. Aug 06, 2006
  16. Aug 04, 2006
  17. Jul 29, 2006
    • Tom Lane's avatar
      Adjust initialization sequence for timezone_abbreviations so that · 033a477e
      Tom Lane authored
      it's handled just about like timezone; in particular, don't try
      to read anything during InitializeGUCOptions.  Should solve current
      startup failure on Windows, and avoid wasted cycles if a nondefault
      setting is specified in postgresql.conf too.  Possibly we need to
      think about a more general solution for handling 'expensive to set'
      GUC options.
      033a477e
  18. Jul 14, 2006
  19. Jul 13, 2006
  20. Jun 28, 2006
  21. Jun 21, 2006
    • Tom Lane's avatar
      Remove redundant gettimeofday() calls to the extent practical without · 27c3e3de
      Tom Lane authored
      changing semantics too much.  statement_timestamp is now set immediately
      upon receipt of a client command message, and the various places that used
      to do their own gettimeofday() calls to mark command startup are referenced
      to that instead.  I have also made stats_command_string use that same
      value for pg_stat_activity.query_start for both the command itself and
      its eventual replacement by <IDLE> or <idle in transaction>.  There was
      some debate about that, but no argument that seemed convincing enough to
      justify an extra gettimeofday() call.
      27c3e3de
  22. Jun 18, 2006
  23. Jun 11, 2006
    • Tom Lane's avatar
      Fix Assert failure when a fastpath function call is attempted inside an · bf64a379
      Tom Lane authored
      already-aborted transaction block.  GetSnapshotData throws an Assert if
      not in a valid transaction; hence we mustn't attempt to set a snapshot
      for the function until after checking for aborted transaction.  This is
      harmless AFAICT if Asserts aren't enabled (GetSnapshotData will compute
      a bogus snapshot, but it doesn't matter since HandleFunctionRequest will
      throw an error shortly anywy).  Hence, not a major bug.
      
      Along the way, add some ability to log fastpath calls when statement
      logging is turned on.  This could probably stand to be improved further,
      but not logging anything is clearly undesirable.
      
      Backpatched as far as 8.0; bug doesn't exist before that.
      bf64a379
  24. Apr 25, 2006
  25. Apr 22, 2006
  26. Apr 18, 2006
    • Bruce Momjian's avatar
      Document that errors are not output by log_statement (was they were in · 5bd59b9c
      Bruce Momjian authored
      8.0), and add as suggestion to use log_min_error_statement for this
      purpose.  I also fixed the code so the first EXECUTE has it's prepare,
      rather than the last which is what was in the current code.  Also remove
      "protocol" prefix for SQL EXECUTE output because it is not accurate.
      
      Backpatch to 8.1.X.
      5bd59b9c
  27. Apr 04, 2006
    • Tom Lane's avatar
      Modify all callers of datatype input and receive functions so that if these · 147d4bf3
      Tom Lane authored
      functions are not strict, they will be called (passing a NULL first parameter)
      during any attempt to input a NULL value of their datatype.  Currently, all
      our input functions are strict and so this commit does not change any
      behavior.  However, this will make it possible to build domain input functions
      that centralize checking of domain constraints, thereby closing numerous holes
      in our domain support, as per previous discussion.
      
      While at it, I took the opportunity to introduce convenience functions
      InputFunctionCall, OutputFunctionCall, etc to use in code that calls I/O
      functions.  This eliminates a lot of grotty-looking casts, but the main
      motivation is to make it easier to grep for these places if we ever need
      to touch them again.
      147d4bf3
  28. Mar 14, 2006
    • Tom Lane's avatar
      Improve parser so that we can show an error cursor position for errors · 20ab467d
      Tom Lane authored
      during parse analysis, not only errors detected in the flex/bison stages.
      This is per my earlier proposal.  This commit includes all the basic
      infrastructure, but locations are only tracked and reported for errors
      involving column references, function calls, and operators.  More could
      be done later but this seems like a good set to start with.  I've also
      moved the ReportSyntaxErrorPosition logic out of psql and into libpq,
      which should make it available to more people --- even within psql this
      is an improvement because warnings weren't handled by ReportSyntaxErrorPosition.
      20ab467d
  29. Mar 05, 2006
  30. Feb 17, 2006
  31. Jan 18, 2006
    • Neil Conway's avatar
      Add a new system view, pg_cursors, that displays the currently available · 33e06ebc
      Neil Conway authored
      cursors. Patch from Joachim Wieland, review and ediorialization by Neil
      Conway. The view lists cursors defined by DECLARE CURSOR, using SPI, or
      via the Bind message of the frontend/backend protocol. This means the
      view does not list the unnamed portal or the portal created to implement
      EXECUTE. Because we do list SPI portals, there might be more rows in
      this view than you might expect if you are using SPI implicitly (e.g.
      via a procedural language).
      
      Per recent discussion on -hackers, the query string included in the
      view for cursors defined by DECLARE CURSOR is based on
      debug_query_string. That means it is not accurate if multiple queries
      separated by semicolons are submitted as one query string. However,
      there doesn't seem a trivial fix for that: debug_query_string
      is better than nothing. I also changed SPI_cursor_open() to include
      the source text for the portal it creates: AFAICS there is no reason
      not to do this.
      
      Update the documentation and regression tests, bump the catversion.
      33e06ebc
  32. Jan 08, 2006
    • Neil Conway's avatar
      Add a new system view, pg_prepared_statements, that can be used to · 44b928e8
      Neil Conway authored
      access information about the prepared statements that are available
      in the current session. Original patch from Joachim Wieland, various
      improvements by Neil Conway.
      
      The "statement" column of the view contains the literal query string
      sent by the client, without any rewriting or pretty printing. This
      means that prepared statements created via SQL will be prefixed with
      "PREPARE ... AS ", whereas those prepared via the FE/BE protocol will
      not. That is unfortunate, but discussion on -patches did not yield an
      efficient way to improve this, and there is some merit in returning
      exactly what the client sent to the backend.
      
      Catalog version bumped, regression tests updated.
      44b928e8
  33. Jan 05, 2006
Loading