Change log:
-----------

Version 1.2.2 (2005-02-06):

    - Bug solved: Application error when trying to scroll the text
      widget of the SELECT statement in the open form window.

Version 1.2.1 (2005-01-22):

    - Corrections in help text.

    - Modification in database conversion from 1.2.0 to 1.2.1 such
      that it does not use the keyword "DEFAULT" as value for INSERT
      ... INTO. This to be compatible with older versions of
      PostgreSQL.

    - On Windows platforms the ~/.pgpass file is moved and renamed to

      %APPDATA%\postgresql\pgpass.conf

      where APPDATA is the environment variable which points to the
      user's application data. Usually that is

      C:\Documents and Settings\<username>\Application Data

    - Similarly on Windows platforms, the ~/.pfmrc file is moved and
      renamed to:

      %APPDATA%\pfm\pfm.conf


Version 1.2.0 (2005-01-10):

    - Previous versions of pfm relied upon the 'oid' for updating
      records. However, according to the PostgreSQL documentation the
      uniqueness of the 'oid' is not guaranteed, even not within a
      table. To solve this problem, a new attribute 'pkey' is
      introduced in pfm_form. This attribute should be filled with the
      space separated list of primary key attributes of the form's
      main table. If that table does not have a primary key, then the
      table cannot be modified.

      For databases already managed with a previous version of pfm,
      the database conversion script fills 'pkey' with 'oid'. This
      means that pfm continues to work with the oid if you do not
      change it manually. You can continue to use the oid as pkey, but
      then it is recommended to add a UNIQUE constraint on the oid.

    - In the previous versions of pfm you could assign the default
      value to an attribute when adding a record by typing an '=' sign
      for the attribute value. This feature has been replaced by
      another, more advanced feature. You can now define a default
      value for an attribute in pfm_attribute. If that value begins
      with an '=' sign, it must be an SQL SELECT statement that
      returns exactly one value. This replacement was done, because
      the old one did not work properly with attributes that were
      mentioned in the 'pkey' list.

      Note: The automatic conversion script does not automatically
            fill the 'default' attribute of pfm_attribute. You may
            need to fill out this attribute manually after the
            conversion script has run.

    - Enhancement of the report generator. It is now possible to print
      summaries at the end of the report or report sections. These
      summaries are calculated by means of aggregate operators COUNT,
      SUM, AVG, STDDEV, MIN, or MAX applied on the fields of the
      report.

    - The "Import SQL" feature can now also use the psql '\i'
      command. This was necessary because the SQL script for
      converting to the new format of the pfm_* tables turned out to
      be too long to run from the SQL text window.

    - There are a few new options:

          o 'tempdir' defines a directory where pfm can write
             temporary files. The default value is '\tmp'.

          o 'psql' defines where pfm can find the 'psql' executable.

          o 'fontmonospace' defines the monospace font famlily and size

          o 'fontproportional' defines the proportional font family
             and size.

    - There is a context menu which pops up when the right mouse
      button is clicked. It has the classic 'Copy', 'Cut' and 'Paste'
      menu items and can be used to move/copy text to/from the
      clipboard.

    - pfm now fully supports the ./pgpass file, including the '\:' and
      the '\\' escapes.

    - the buttons on the left of the form, labeled with the attribute
      names, can be used to search the internal buffer for records
      with a particular value for the corresponding attribute;

      Note: Only the internal buffer is searched. If the record you
            are looking for exists in the database but is not loaded
            in the internal buffer, it cannot be found in this way.



Version 1.1.1 (2004-11-24):

    - Wrong status of "After Last" after adding a record

      After adding a record the status of the dummy record after the
      last one is put to "After last". However, all the cases in which
      pfm checks for the status of a record, it only checks for "After
      Last". The result is that the "Update" button is not disabled
      when the dummy "After Last" record is displayed. If that button
      is pressed, a run-time error occurs.

      Solution:

          The spelling of the statuses has been reviewed. They are now
          all with only the first word capitalised. They are :

          Not modified
          Updated
          Added
          Not added
          Deleted
          After last
          Adding
          Updating

          The last 2 ones have been added to remind the user what he
          is doing after having pressed [Add] or [Updated]
          respectively.

    - Links are still enabled when in Updating or Adding mode:

      When updating or adding a record, the link buttons are still
      enabled. Although nothing wrong seems to result from it, it
      would be cleaner if they were disbaled.

    - Problem with pfm.kit when glibc has version 2.2.5:

      The pfm.kit included in pfm 1.1.0. does not work with glibc
      2.2.5. It requires glibc 2.3.

      Solution:

      pfm has been reworked such that it does not require Iwidgets
      anymore.

      pfm used Iwidgets mainly for getting scrollable text and listbox
      widgets. These can be made, with a little extra effort, in pure
      Tcl/Tk. A workaround has been implemented for simulating a
      scrollable frame which is absent in pure Tcl/Tk. The on-line
      help which used the scrolledhtml widget has been replaced with a
      call to an external html-browser. There is a new option, which
      allows the user to choose the external browser.

      The advantage is that pfm.kit no longer contains binary files,
      which enhances its portatbility.


Version 1.1.0 (2004-11-11):

    - Option "usePGPASSWORD" has been added. It determines whether pfm
      uses the environment variable PGPASSWORD to store the password
      entered by the user during the short time between clicking 'OK'
      on the 'Open database' window and the actual opening of the
      database. If this option is 'no', the user is not prompted for a
      password when opening a database, but then a properly configured
      ~/.pgpass file is required.

      Notes:

          o This option was added because, according to the postgreSQL
            documentation, the use of the PGPASSWORD environment
            variable is deprecated for security reasons.

          o The default value for this options is still 'yes', for
            backwards compatibilty and for getting started more
            easily. Consider changing this option to 'no'.

          o For connecting to postgreSQL via the Tcl interfaces Pgtcl
            or pgin.tcl, pfm reads the .pgpass file and supplies the
            password to postgreSQL via the "password" connection
            parameter. This was necessary because pgin.tcl ignores the
            pgpass file.

          o pfm supports the "\:" escape sequence in ~/.pgpass, but
            not the "\\" escape sequence. 

    - The connection parameter and option "hostaddr" have been dropped
      because psql does not have a matching "--hostaddr" option, which
      led to a behaviour that was difficult to understand and which
      was unnecessary complicated.

    - Behaviour of 'Run SQL' command history was improved again. In
      particular, the input screen is cleared automatically after
      pressing 'Run'. This saves the user pressing 'Clear' after every
      'Run'. In the case that he wants to see and reuse the command,
      he can do so by pressing 'Back'.

    - It has been reported (see bug 935) that pfm does not work with
      older versions of postgreSQL. The problem is probably only
      install_pfm.sql, which has been generated by pg_dump of 7.3.2.,
      but which is not understood by older versions of postgreSQL.
      install_pfm has been modified such that it probably also works
      with version 7.2.1. of postgreSQL.

      Note: I cannot test this myself, because I don't have access to
            a version 7.2.1. I would be quite happy to receive
            feedback on this.

      The views pfm_table, pfm_table_def and pfm_table_report have
      been dropped.

    - The help file has been improved on serveral points.

    - The report definition has changed significantly. The attributes
      'table_or_view', 'sqlwhere', and 'orderby' of pfm_report have
      been combined into one attribute 'sqlselect' which may contain
      parameters that are entered by the user at run-time. This
      enhances the user's possibilty to introduce run-time parameters
      for the report, and there is no need anymore to create a view
      for designing a report.

    - The menu-item "Tools -> Install pfm-* tables" has been
      dropped. Instead, the user is prompted to install the pfm_*
      tables when opening a database that does not contain them yet.

    - When opening a database containing the pfm_tables generated by
      an older version of pfm, the user is prompted to convert them to
      the new format.

    - An addressbook sample database has been added. The sample
      database of version 1.0.4. has been renamed to customerdb.
     
    - The groupby_having attribute of pfm_form has been renamed to
      groupby. The reason is that no HAVING CLAUSE should be specified
      in the definition of the form. The WHERE clause specified by the
      user when opening the form is automatically converted to a
      HAVING clause if there is a GROUP BY clause in the form
      definition.

    - pgintcl versions 2.1.0 and 1.5.0 have been included in the
      distribution.

    - Tclkit for linux on PC is included in the distribution.

    - A GUI install script is included in the distribution (only for
      Linux on PC).

    - Bug 1048 Encoding problems:

      When pfm uses pgintcl to communicate with postgreSQL, the
      special characters like , , etc., typed on the Run SQL input
      screen are not correctly entered in the database.

      This is the situation in version 1.0.4:

          If Pgtcl is loaded, it sets the environment variable
          PGCLIENTENCODING to "UNICODE". When pfm subsequently calls
          'psql' for the 'Run SQL' feature of pfm, 'psql' also assumes
          client_encoding "UNICODE". Therefore, pfm sends data with
          encoding UTF-8 to 'psql'.

          If pgintcl is loaded, the environment variable
          PGCLIENTENCODING is not set.  When pfm subsequently calls
          'psql' for the 'Run SQL' feature of pfm, 'psql' assumes the
          same encoding as the database, e.g. LATIN1, but since pfm
          still sends the data with encoding UTF-8, there is an
          encoding mismatch between pfm and psql.

      Solution in version 1.1.0:

          After loading pgintcl, pfm also sets the environment
          variable PGCLIENTENCODING to "UNICODE".


Version 1.0.4. (2004-02-19):

    - Bugs solved:

          o 690: pfm hangs when psql exits

          o 691: The' Run SQL' command history behaves strangely
                 sometimes

          o 692: Printing fails if title contains several words

    - Feature request implemented:

          o 693: Character encoding for sending text to print command


Version 1.0.3. (2004-02-16):

    - Bug 686 solved: Connecting to psql fails in some cases:

      Database name, host or hostaddr, port, user and password
      specified by the user at database open are reused for invoking
      psql.

    - psql is invoked in a different way now: it is invoked when a
      database is opened and it is closed when the database is
      closed. The result is that the state of psql is no longer
      cleared after each command sent to psql.

    - The 'dblist' option is no longer read from the pg_database table
      when the options are reset to their default values. The default
      is now a list containing only the database with the same name as
      the user's logon name.

    - When opening a database, the user can either type the database
      name directly or select it from the 'dblist' option. When the
      database is successfully opened, the name is added to the
      'dblist' option if it was not already in it. The name of the
      last opened database becomes the default database for the next
      'open database'.
      

Version 1.0.2. (2004-02-12)

    - Bug 679 solved: Transaction kept open for too long.

    - Bug 680 solved: Updating a record already deleted by another
      user.

    - Contact information in copy right notices changed.

Version 1.0.1. (2004-02-06)

    - E-mail address in copy right notices changed back to personal
      E-mail because pfm-comments mailing list was out of order.

Version 1.0.0. (2004-02-05)

    - First published version
