1. 27 5月, 2004 17 次提交
  2. 26 5月, 2004 12 次提交
    • B
      The added aggregates are: · 8096fe45
      Bruce Momjian 提交于
      (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
    • B
      The patch adresses the TODO list item "Allow external interfaces to · 3dc37cd8
      Bruce Momjian 提交于
      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
    • B
      This patch implement the TODO [ALTER DATABASE foo OWNER TO bar]. · cfbfdc55
      Bruce Momjian 提交于
      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
    • N
      Reimplement the linked list data structure used throughout the backend. · d0b4399d
      Neil Conway 提交于
      In the past, we used a 'Lispy' linked list implementation: a "list" was
      merely a pointer to the head node of the list. The problem with that
      design is that it makes lappend() and length() linear time. This patch
      fixes that problem (and others) by maintaining a count of the list
      length and a pointer to the tail node along with each head node pointer.
      A "list" is now a pointer to a structure containing some meta-data
      about the list; the head and tail pointers in that structure refer
      to ListCell structures that maintain the actual linked list of nodes.
      
      The function names of the list API have also been changed to, I hope,
      be more logically consistent. By default, the old function names are
      still available; they will be disabled-by-default once the rest of
      the tree has been updated to use the new API names.
      d0b4399d
    • J
      Please apply this minor patch to the cvs HEAD of dbmirror · 18d0d105
      Jan Wieck 提交于
      It fixes a typo in a define
      
      Thanks
      
      
      -- Steven Singer
      18d0d105
    • B
      Add FRONTEND to ecpglib. · f240d372
      Bruce Momjian 提交于
      f240d372
    • B
      Allow relative paths as long as the hardcoded path matches the bin path · 2a70ec1b
      Bruce Momjian 提交于
      up to the last bin directory name.
      2a70ec1b
    • T
      Tweaks per discussion with Magnus: suppress chatter on unpatched MinGW · bfb77c15
      Tom Lane 提交于
      systems, add verbose logging (at DEBUG4) to help identify why a given
      time zone is not matched.
      bfb77c15
    • T
      Fix erroneous error message printout when a configuration file contains · 957b90ed
      Tom Lane 提交于
      an overlength token.  Printout was always garbage and could dump core
      entirely :-(.  Per report from Martin Pitt.
      957b90ed
    • B
    • T
      Add code to identify_system_timezone() to try all zones in the zic · 76c50c08
      Tom Lane 提交于
      database, not just ones that we cons up POSIX names for.  This looks
      grim but it seems to take less than a second even on a relatively slow
      machine, and since it only happens once during postmaster startup, that
      seems acceptable.
      76c50c08
    • B
      17ff1814
  3. 25 5月, 2004 4 次提交
  4. 24 5月, 2004 7 次提交