1. 07 Jun, 2005 4 commits
    • Neil Conway's avatar
      Add a function lastval(), which returns the value returned by the · 657c098e
      Neil Conway authored
      last nextval() or setval() performed by the current session. Update the
      docs, add regression tests, and bump the catalog version. Patch from
      Dennis Björklund, various improvements by Neil Conway.
      657c098e
    • Neil Conway's avatar
      Add support for an optional INTO clause to PL/PgSQL's EXECUTE command. · c59887f9
      Neil Conway authored
      This allows the result of executing a SELECT to be assigned to a row
      variable, record variable, or list of scalars. Docs and regression tests
      updated. Per Pavel Stehule, improvements and cleanup by Neil Conway.
      c59887f9
    • Bruce Momjian's avatar
      Update text for RESET CONNECTION: · 0f011f6d
      Bruce Momjian authored
      <   all temporary tables, removal of any NOTIFYs, cursors, prepared
      <   queries(?), currval()s, etc.  This could be used for connection pooling.
      <   We could also change RESET ALL to have this functionality.
      >   temporary tables, removing any NOTIFYs, cursors, open transactions,
      >   prepared queries, currval()s, etc.  This could be used  for connection
      >   pooling.  We could also change RESET ALL to have this functionality.
      >   The difficult of this features is allowing RESET ALL to not affect
      >   changes made by the interface driver for its internal use.  One idea is
      >   for this to be a protocol-only feature.  Another approach is to notify
      >   the protocol when a RESET CONNECTION command is used.
      0f011f6d
    • Bruce Momjian's avatar
      Ipcrm -> ipcclean in error message: · 1b000116
      Bruce Momjian authored
      ```------------------------------------------------------------------------
      While playing around, I got the following error message:
      
      --
      FATAL:  pre-existing shared memory block (key 5432001, ID 90898435) is
      still in use
      HINT:  If you're sure there are no old server processes still running,
      remove the shared memory block with the command "ipcrm", or just delete
      the file "/home/hlinnaka/pgsql/data/postmaster.pid".
      ```
      
      Thats normal because I used "kill -9 postmaster" to shut down.
      
      The hint advises me to use "ipcrm", but there's the "ipcclean" script in
      bin for just this purpose. The hint should probably advise to use
      ipcclean.
      
      The attached patch replaces all occurances of "ipcrm" with "ipcclean" in
      src/backend/utils/init/miscinit.c and all the translations in
      src/backend/po.
      
      While reviewing the patch, I noticed a likely typo in hr.po. While I
      don't
      speak Croatian, the translation seems to advise to use the "icpm(1)"
      command. I changed that to "ipcclean" too.
      
      Heikki Linnakangas
      1b000116
  2. 06 Jun, 2005 7 commits
  3. 05 Jun, 2005 11 commits
  4. 04 Jun, 2005 17 commits
    • Bruce Momjian's avatar
      Add pg_upgrade TODO.detail. · f54f142a
      Bruce Momjian authored
      f54f142a
    • Bruce Momjian's avatar
      Add TODO.detail: · 581a8c9f
      Bruce Momjian authored
      > * Allow major upgrades without dump/reload, perhaps using pg_upgrade
      >   [pg_upgrade]
      581a8c9f
    • Bruce Momjian's avatar
      d95fad64
    • Bruce Momjian's avatar
      Add pg_dump to TODO.detail. · 249880ff
      Bruce Momjian authored
      249880ff
    • Bruce Momjian's avatar
      Back out patch: · 24af7d4b
      Bruce Momjian authored
      ---------------------------------------------------------------------------
      
      Tom Lane <tgl@sss.pgh.pa.us> writes:
      > a_ogawa <a_ogawa@hi-ho.ne.jp> writes:
      > > It is a reasonable idea. However, the majority part of MemSet was not
      > > able to be avoided by this idea. Because the per-tuple contexts are used
      > > at the early stage of executor.
      >
      > Drat.  Well, what about changing that?  We could introduce additional
      > contexts or change the startup behavior so that the ones that are
      > frequently reset don't have any data in them unless you are working
      > with pass-by-ref values inside the inner loop.
      
      That might be possible. However, I think that we should change only
      aset.c about this article.
      I thought further: We can check whether context was used from the last
      reset even when blocks list is not empty. Please see attached patch.
      24af7d4b
    • Bruce Momjian's avatar
      Add comment for multi-byte computation. · 954108f9
      Bruce Momjian authored
      954108f9
    • Bruce Momjian's avatar
      · 72c53ac3
      Bruce Momjian authored
      Allow kerberos name and username case sensitivity to be specified from
      postgresql.conf.
      
      ---------------------------------------------------------------------------
      
      
      Here's an updated version of the patch, with the following changes:
      
      1) No longer uses "service name" as "application version". It's instead
      hardcoded as "postgres". It could be argued that this part should be
      backpatched to 8.0, but it doesn't make a big difference until you can
      start changing it with GUC / connection parameters. This change only
      affects kerberos 5, not 4.
      
      2) Now downcases kerberos usernames when the client is running on win32.
      
      3) Adds guc option for "krb_caseins_users" to make the server ignore
      case mismatch which is required by some KDCs such as Active Directory.
      Off by default, per discussion with Tom. This change only affects
      kerberos 5, not 4.
      
      4) Updated so it doesn't conflict with the rendevouz/bonjour patch
      already in ;-)
      
      Magnus Hagander
      72c53ac3
    • Bruce Momjian's avatar
      At 2005-05-21 20:18:50 +0530, ams@oryx.com wrote: · d995014f
      Bruce Momjian authored
      >
      > > The second issue is where plperl returns a large result set.
      
      I have attached the following seven patches to address this problem:
      
      1. Trivial. Replaces some errant spaces with tabs.
      
      2. Trivial. Fixes the spelling of Jan's name, and gets rid of many
         inane, useless, annoying, and often misleading comments. Here's
         a sample: "plperl_init_all() - Initialize all".
      
         (I have tried to add some useful comments here and there, and will
         continue to do so now and again.)
      
      3. Trivial. Splits up some long lines.
      
      4. Converts SRFs in PL/Perl to use a Tuplestore and SFRM_Materialize
         to return the result set, based on the PL/PgSQL model.
      
         There are two major consequences: result sets will spill to disk when
         they can no longer fit in work_mem; and "select foo_srf()" no longer
         works. (I didn't lose sleep over the latter, since that form is not
         valid in PL/PgSQL, and it's not documented in PL/Perl.)
      
      5. Trivial, but important. Fixes use of "undef" instead of undef. This
         would cause empty functions to fail in bizarre ways. I suspect that
         there's still another (old) bug here. I'll investigate further.
      
      6. Moves the majority of (4) out into a new plperl_return_next()
         function, to make it possible to expose the functionality to
         Perl; cleans up some of the code besides.
      
      7. Add an spi_return_next function for use in Perl code.
      
      If you want to apply the patches and try them out, 8-composite.diff is
      what you should use. (Note: my patches depend upon Andrew's use-strict
      and %_SHARED patches being applied.)
      
      Here's something to try:
      
          create or replace function foo() returns setof record as $$
          $i = 0;
          for ("World", "PostgreSQL", "PL/Perl") {
              spi_return_next({f1=>++$i, f2=>'Hello', f3=>$_});
          }
          return;
          $$ language plperl;
          select * from foo() as (f1 integer, f2 text, f3 text);
      
      (Many thanks to Andrews Dunstan and Supernews for their help.)
      
      Abhijit Menon-Sen
      d995014f
    • Bruce Momjian's avatar
      Tom Lane <tgl@sss.pgh.pa.us> writes: · 3cf1fd32
      Bruce Momjian authored
      > a_ogawa <a_ogawa@hi-ho.ne.jp> writes:
      > > It is a reasonable idea. However, the majority part of MemSet was not
      > > able to be avoided by this idea. Because the per-tuple contexts are used
      > > at the early stage of executor.
      >
      > Drat.  Well, what about changing that?  We could introduce additional
      > contexts or change the startup behavior so that the ones that are
      > frequently reset don't have any data in them unless you are working
      > with pass-by-ref values inside the inner loop.
      
      That might be possible. However, I think that we should change only
      aset.c about this article.
      I thought further: We can check whether context was used from the last
      reset even when blocks list is not empty. Please see attached patch.
      
      The effect of the patch that I measured is as follows:
      
      o Execution time that executed the SQL ten times.
      (1)Linux(CPU: Pentium III, Compiler option: -O2)
       - original: 24.960s
       - patched : 23.114s
      
      (2)Linux(CPU: Pentium 4, Compiler option: -O2)
       - original: 8.730s
       - patched : 7.962s
      
      (3)Solaris(CPU: Ultra SPARC III, Compiler option: -O2)
       - original: 37.0s
       - patched : 33.7s
      
      Atsushi Ogawa (a_ogawa)
      3cf1fd32
    • Tom Lane's avatar
      Change expandRTE() and ResolveNew() back to taking just the single · e18e8f87
      Tom Lane authored
      RTE of interest, rather than the whole rangetable list.  This makes
      the API more understandable and avoids duplicate RTE lookups.  This
      patch reverts no-longer-needed portions of my patch of 2004-08-19.
      e18e8f87
    • Bruce Momjian's avatar
      Back out make_mkid change. · fb91a83e
      Bruce Momjian authored
      fb91a83e
    • Bruce Momjian's avatar
    • Bruce Momjian's avatar
      Add: · 3360bc13
      Bruce Momjian authored
      > * Allow pg_ctl to work properly with configuration files located outside
      >   the PGDATA directory
      >
      >   pg_ctl can not read the pid file because it isn't located in the
      >   config directory but in the PGDATA directory.  The solution is to
      >   allow pg_ctl to read and understand postgresql.conf to find the
      >   data_directory value.
      >
      3360bc13
    • Bruce Momjian's avatar
      Add description: · 487990e1
      Bruce Momjian authored
      >
      >   O_DIRECT doesn't have the same media write guarantees as fsync, so it
      >   is in addition to the fsync method, not in place of it.
      >
      487990e1
    • Bruce Momjian's avatar
      Fix NUMERIC modulus to properly truncate division in computation. · 1bc92352
      Bruce Momjian authored
      Division rounding was causing incorrect results.  Test case:
      
      	test=> SELECT 12345678901234567890 % 123;
      	 ?column?
      	----------
      	       78
      	(1 row)
      
      Was returning -45.
      1bc92352
    • Bruce Momjian's avatar
      Update Chinese FAQ to fix XHTML format. · a7660645
      Bruce Momjian authored
      Weiping (Laser)
      a7660645
    • Neil Conway's avatar
      Remove unused 'printCost' field from ExplainState, and simplify the code · 5788cca5
      Neil Conway authored
      accordingly (this field was always initialized to true). Patch from
      Alvaro Herrera.
      5788cca5
  5. 03 Jun, 2005 1 commit
    • Tom Lane's avatar
      Revise handling of dropped columns in JOIN alias lists to avoid a · ba420024
      Tom Lane authored
      performance problem pointed out by phil@vodafone: to wit, we were
      spending O(N^2) time to check dropped-ness in an N-deep join tree,
      even in the case where the tree was freshly constructed and couldn't
      possibly mention any dropped columns.  Instead of recursing in
      get_rte_attribute_is_dropped(), change the data structure definition:
      the joinaliasvars list of a JOIN RTE must have a NULL Const instead
      of a Var at any position that references a now-dropped column.  This
      costs nothing during normal parse-rewrite-plan path, and instead we
      have a linear-time update to make when loading a stored rule that
      might contain now-dropped columns.  While at it, move the responsibility
      for acquring locks on relations referenced by rules into this separate
      function (which I therefore chose to call AcquireRewriteLocks).
      This saves effort --- namely, duplicated lock grabs in parser and rewriter
      --- in the normal path at a cost of one extra non-locked heap_open()
      in the stored-rule path; seems a good tradeoff.  A fringe benefit is
      that it is now *much* clearer that we acquire lock on relations referenced
      in rules before we make any rewriter decisions based on their properties.
      (I don't know of any bug of that ilk, but it wasn't exactly clear before.)
      ba420024