Skip to content
Snippets Groups Projects
  1. Jun 13, 2004
  2. Jun 12, 2004
  3. Jun 11, 2004
    • Tom Lane's avatar
      When using extended-query protocol, postpone planning of unnamed statements · 7643bed5
      Tom Lane authored
      until Bind is received, so that actual parameter values are visible to the
      planner.  Make use of the parameter values for estimation purposes (but
      don't fold them into the actual plan).  This buys back most of the
      potential loss of plan quality that ensues from using out-of-line
      parameters instead of putting literal values right into the query text.
      
      This patch creates a notion of constant-folding expressions 'for
      estimation purposes only', in which case we can be more aggressive than
      the normal eval_const_expressions() logic can be.  Right now the only
      difference in behavior is inserting bound values for Params, but it will
      be interesting to look at other possibilities.  One that we've seen
      come up repeatedly is reducing now() and related functions to current
      values, so that queries like ... WHERE timestampcol > now() - '1 day'
      have some chance of being planned effectively.
      
      Oliver Jowett, with some kibitzing from Tom Lane.
      7643bed5
    • Bruce Momjian's avatar
      Attached is a patch that takes care of the PATHSEP issue. I made a more · 6cc4175b
      Bruce Momjian authored
      extensive change then what was suggested. I found the file path.c that
      contained a lot of "Unix/Windows" agnostic functions so I added a function
      there instead and removed the PATHSEP declaration in exec.c altogether. All
      to keep things from scattering all over the code.
      
      I also took the liberty of changing the name of the functions
      "first_path_sep" and "last_path_sep". Where I come from (and I'm apparently
      not alone given the former macro name PATHSEP), they should be called
      "first_dir_sep" and "last_dir_sep". The new function I introduced, that
      actually finds path separators, is now the "first_path_sep". The patch
      contains changes on all affected places of course.
      
      I also changed the documentation on dynamic_library_path to reflect the
      chagnes.
      
      Thomas Hallgren
      6cc4175b
  4. Jun 10, 2004
    • Bruce Momjian's avatar
      Done: · 387b38be
      Bruce Momjian authored
      > * -Print table names with constraint names in error messages, or make constraint
      387b38be
    • Bruce Momjian's avatar
      Reword: · 93db6f6a
      Bruce Momjian authored
      < * Allow hash buckets to fill disk pages, rather than being sparse
      > * Pack hash index buckets onto disk pages more efficiently
      93db6f6a
    • Bruce Momjian's avatar
      Add: · 13c30084
      Bruce Momjian authored
      > * Allow pg_dump to use multiple -t and -n switches
      13c30084
    • Bruce Momjian's avatar
      Modify: · 741681b7
      Bruce Momjian authored
      < * Order heap pointers on hash index pages by hash value and ctid
      > * Allow hash buckets to fill disk pages, rather than being sparse
      741681b7
    • Bruce Momjian's avatar
      Add Brazilian version of FAQ. · c7099997
      Bruce Momjian authored
      Euler Taveira de Oliveira
      c7099997
    • Bruce Momjian's avatar
      Add: · babd02af
      Bruce Momjian authored
      > * Order heap pointers on hash index pages by hash value and ctid
      babd02af
  5. Jun 09, 2004
    • Tom Lane's avatar
      Support assignment to subfields of composite columns in UPDATE and INSERT. · 7e64dbc6
      Tom Lane authored
      As a side effect, cause subscripts in INSERT targetlists to do something
      more or less sensible; previously we evaluated such subscripts and then
      effectively ignored them.  Another side effect is that UPDATE-ing an
      element or slice of an array value that is NULL now produces a non-null
      result, namely an array containing just the assigned-to positions.
      7e64dbc6
    • Bruce Momjian's avatar
      Add: · 69616f96
      Bruce Momjian authored
      > * Add ON COMMIT capability to CREATE TABLE AS SELECT
      69616f96
  6. Jun 08, 2004
  7. Jun 07, 2004
  8. Jun 06, 2004
    • Tom Lane's avatar
      Infrastructure for I/O of composite types: arrange for the I/O routines · c541bb86
      Tom Lane authored
      of a composite type to get that type's OID as their second parameter,
      in place of typelem which is useless.  The actual changes are mostly
      centralized in getTypeInputInfo and siblings, but I had to fix a few
      places that were fetching pg_type.typelem for themselves instead of
      using the lsyscache.c routines.  Also, I renamed all the related variables
      from 'typelem' to 'typioparam' to discourage people from assuming that
      they necessarily contain array element types.
      c541bb86
  9. Jun 04, 2004
  10. Jun 03, 2004
    • Bruce Momjian's avatar
      Add PGETC (for pg_service.conf) and PGLOCALE (for locale dir) · 68708433
      Bruce Momjian authored
      environment variable processing to libpq.
      
      The patch also adds code to our client apps so we set the environment
      variable directly based on our binary location, unless it is already
      set. This will allow our applications to emit proper locale messages
      that are generated in libpq.
      68708433
  11. Jun 02, 2004
    • Bruce Momjian's avatar
      Small patch that adds some documentation for the area() function. · 70f5a87e
      Bruce Momjian authored
      Specifically, point out that intersecting points in a path will yield
      (most likely), unexpected results.  Visually these are identical paths,
      but mathematically they're not the same.  Ex:
      
        area |                                           plan
      ------
      +-----------------------------------------------------------------------
      -------------------
          -0 | ((0,0),(0,1),(2,1),(2,2),(1,2),(1,0),(0,0))
           2 | ((0,0),(0,1),(1,1),(1,2),(2,2),(2,1),(1,1),(1,0),(0,0))
      
      The current algorithm for area(PATH) is very quick, but only handles
      non-intersecting paths.  I'm going to work on two other functions for
      the PATH data type that determines if a PATH is intersecting or not,
      and a function that returns the area() for an intersecting PATH.  The
      intersecting area() function will be considerably slower (I think it's
      going to be O(n!) or worse instead of the current O(n), but that comes
      with the territory).
      
      Sean Chittenden
      70f5a87e
    • Bruce Momjian's avatar
      Improve without cluster wording. · 36ae5efa
      Bruce Momjian authored
      36ae5efa
    • Bruce Momjian's avatar
      OK, here's the final version of ALTER TABLE ... SET WITHOUT CLUSTER. · 1cdc5872
      Bruce Momjian authored
      Has docs + regression test.
      
      Christopher Kings-Lynne
      1cdc5872
  12. Jun 01, 2004
    • Tom Lane's avatar
      Align GRANT/REVOKE behavior more closely with the SQL spec, per discussion · 4b2dafcc
      Tom Lane authored
      of bug report #1150.  Also, arrange that the object owner's irrevocable
      grant-option permissions are handled implicitly by the system rather than
      being listed in the ACL as self-granted rights (which was wrong anyway).
      I did not take the further step of showing these permissions in an
      explicit 'granted by _SYSTEM' ACL entry, as that seemed more likely to
      bollix up existing clients than to do anything really useful.  It's still
      a possible future direction, though.
      4b2dafcc
  13. May 31, 2004
  14. May 27, 2004
  15. May 26, 2004
    • Bruce Momjian's avatar
      AIX doc addition: · ffef9b8c
      Bruce Momjian authored
      > FWIW, the section on configuring kernel resources under various
      > Unixen[1] doesn't have any documentation for AIX. If someone out there
      > knows which knobs need to be tweaked, would they mind sending in a doc
      > patch? (Or just specifying what needs to be done, and I'll add the
      > SGML.)
      
      After verifying that nobody wound up messing with the kernel
      parameters, here's a docs patch...
      
       Chris Browne
      ffef9b8c
    • Bruce Momjian's avatar
      *) inet_(client|server)_(addr|port)() and necessary documentation for · 97d625dd
      Bruce Momjian authored
      the four functions.
      
      
      > Also, please justify the temp-related changes.  I was not aware that we
      > had any breakage there.
      
      patch-tmp-schema.txt contains the following bits:
      
      *) Changes pg_namespace_aclmask() so that the superuser is always able
      to create objects in the temp namespace.
      *) Changes pg_namespace_aclmask() so that if this is a temp namespace,
      objects are only allowed to be created in the temp namespace if the
      user has TEMP privs on the database.  This encompasses all object
      creation, not just TEMP tables.
      *) InitTempTableNamespace() checks to see if the current user, not the
      session user, has access to create a temp namespace.
      
      The first two changes are necessary to support the third change.  Now
      it's possible to revoke all temp table privs from non-super users and
      limiting all creation of temp tables/schemas via a function that's
      executed with elevated privs (security definer).  Before this change,
      it was not possible to have a setuid function to create a temp
      table/schema if the session user had no TEMP privs.
      
      patch-area-path.txt contains:
      
      *) Can now determine the area of a closed path.
      
      
      patch-dfmgr.txt contains:
      
      *) Small tweak to add the library path that's being expanded.
      
      I was using $lib/foo.so and couldn't easily figure out what the error
      message, "invalid macro name in dynamic library path" meant without
      looking through the source code.  With the path in there, at least I
      know where to start looking in my config file.
      
      Sean Chittenden
      97d625dd
    • Bruce Momjian's avatar
      The added aggregates are: · 8096fe45
      Bruce Momjian authored
      (1) boolean-and and boolean-or aggregates named bool_and and bool_or.
          they (SHOULD;-) correspond to standard sql every and some/any aggregates.
          they do not have the right name as there is a problem with
          the standard and the parser for some/any. Tom also think that
          the standard name is misleading because NULL are ignored.
          Also add 'every' aggregate.
      
      (2) bitwise integer aggregates named bit_and and bit_or for
          int2, int4, int8 and bit types. They are not standard, but I find
          them useful. I needed them once.
      
      
      The patches adds:
      
      - 2 new very short strict functions for boolean aggregates in
        src/backed/utils/adt/bool.c,
        src/include/utils/builtins.h and src/include/catalog/pg_proc.h
      
      - the new aggregates declared in src/include/catalog/pg_proc.h and
        src/include/catalog/pg_aggregate.h
      
      - some documentation and validation about these new aggregates.
      
      Fabien COELHO
      8096fe45
    • Bruce Momjian's avatar
      The patch adresses the TODO list item "Allow external interfaces to · 3dc37cd8
      Bruce Momjian authored
      extend the GUC variable set".
      
      Plugin modules like the pl<lang> modules needs a way to declare
      configuration parameters. The postmaster has no knowledge of such
      modules when it reads the postgresql.conf file. Rather than allowing
      totally unknown configuration parameters, the concept of a variable
      "class" is introduced. Variables that belongs to a declared classes will
      create a placeholder value of string type and will not generate an
      error. When a module is loaded, it will declare variables for such a
      class and make those variables "consume" any placeholders that has been
      defined. Finally, the module will generate warnings for unrecognized
      placeholders defined for its class.
      
      More detail:
      The design is outlined after the suggestions made by Tom Lane and Joe
      Conway in this thread:
      
      http://archives.postgresql.org/pgsql-hackers/2004-02/msg00229.php
      
      A new string variable 'custom_variable_classes' is introduced. This
      variable is a comma separated string of identifiers. Each identifier
      denots a 'class' that will allow its members to be added without error.
      This variable must be defined in postmaster.conf.
      
      The lexer (guc_file.l) is changed so that it can accept a qualified name
      in the form <ID>.<ID> as the name of a variable. I also changed so that
      the 'custom_variable_classes', if found, is added first of all variables
      in order to remove the order of declaration issue.
      
      The guc_variables table is made more dynamic. It is originally created
      with 20% slack and can grow dynamically. A capacity is introduced to
      avoid resizing every time a new variable is added. guc_variables and
      num_guc_variables becomes static (hidden).
      
      The GucInfoMain now uses the new function get_guc_variables() and
      GetNumConfigOptions  instead or using the guc_variables directly.
      
      The find_option() function, when passed a missing name, will check if
      the name is qualified. If the name is qualified and if the qualifier
      denotes a class included in the 'custom_variable_classes', a placeholder
      variable will be created. Such a placeholder will not participate in a
      list operation but will otherwise function as a normal string variable.
      
      Define<type>GucVariable() functions will be added, one for each variable
      type. They are inteded to be used by add-on modules like the pl<lang>
      mappings. Example:
      
      extern void DefineCustomBoolVariable(
               const char* name,
               const char* short_desc,
               const char* long_desc,
               bool* valueAddr,
               GucContext context,
               GucBoolAssignHook assign_hook,
               GucShowHook show_hook);
      
      (I created typedefs for the assign-hook and show-hook functions). A call
      to these functions will define a new GUC-variable. If a placeholder
      exists it will be replaced but it's value will be used in place of the
      default value. The valueAddr is assumed ot point at a default value when
      the define function is called. The only constraint that is imposed on a
      Custom variable is that its name is qualified.
      
      Finally, a function:
      
      void EmittWarningsOnPlacholders(const char* className)
      
      was added. This function should be called when a module has completed
      its variable definitions. At that time, no placeholders should remain
      for the class that the module uses. If they do, elog(INFO, ...) messages
      will be issued to inform the user that unrecognized variables are
      present.
      
      Thomas Hallgren
      3dc37cd8
    • Bruce Momjian's avatar
      This patch implement the TODO [ALTER DATABASE foo OWNER TO bar]. · cfbfdc55
      Bruce Momjian authored
      It was necessary to touch in grammar and create a new node to make home
      to the new syntax. The command is also supported in E
      CPG. Doc updates are attached too. Only superusers can change the owner
      of the database. New owners don't need any aditional
      privileges.
      
      Euler Taveira de Oliveira
      cfbfdc55
Loading