Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Jul 06, 2013

  1. Philippe Beaudoin

    Adjust emaj_hist function and event columns content for consistency.

    Revert the change of the MARK_DELETED event into DELETE_MARK. Change the CLEANUP_ROLLBACK_STATE hist_function into CLEANUP_RLBK_STATE. And replace the (DBLINK, OPEN CNX) and (DBLINK, CLOSE CNX) hist_function + hist_event into simple DBLINK_OPEN_CNX and DBLINK_OPEN_CNX hist_function records.
    authored July 06, 2013

Jun 19, 2013

  1. Philippe Beaudoin

    Add the emaj 1.0.2 to 1.1.0 migration script, with its regression tests.

    Also move the dblink extension detection at the end of the installation procedure.
    authored June 19, 2013

May 26, 2013

  1. Philippe Beaudoin

    Include postgres 9.3 into the list of tested versions.

    authored May 26, 2013

May 25, 2013

  1. Philippe Beaudoin

    for security reason, revoke the access to the emaj_param table to ema…

    …j_viewer role. Instead, create a new emaj_visible_param view that provides the same visibility, except for the value of the new 'dblink_user_password' parameter that is masked and grant select to emaj_adm and emaj_viewer roles.
    authored May 25, 2013
  2. Philippe Beaudoin

    Transform all rollback identifiers into integer rather than bigint. A…

    …ll other E-Maj ids are of type bigint, but it seems to be largely overstated for this case.
    authored May 25, 2013
  3. Philippe Beaudoin

    Process some code cleaning.

    Suppress trailing spaces, add or adjust some comments, align type clauses in DECLARE sections, replace remaining ':=' by '=' operators.
    authored May 25, 2013

May 23, 2013

  1. Philippe Beaudoin

    The primary index of each log table is declared as CLUSTER to help th…

    …e log tables reorganization.
    authored May 23, 2013
  2. Philippe Beaudoin

    Modify _rlbk_async() function to return the total number of processed…

    … tables and sequences, like other main rollback functions.
    authored May 23, 2013

Apr 09, 2013

  1. Philippe Beaudoin

    Change the definition of the index on log tables by removing the DESC…

    … clause for the emaj_tuple column. With the new rollback coding, this specific ordering is now useless.
    authored April 09, 2013
  2. Philippe Beaudoin

    Remove from the create_group, drop_group and verify_group processings…

    … the per table rollback functions that are now useless. Improve the CHANGES file to report the optimizations done in the rollback processing.
    authored April 09, 2013
  3. Philippe Beaudoin

    Finaly simplify the rollback duration estimation model for DELETE_LOG…

    … steps by keeping estimated quantities in emaj_rlbk_stat, instead of real quantities. This is also more coherent with what is done for other steps and do not lead to really less accurate estimates.
    authored April 09, 2013

Apr 05, 2013

  1. Philippe Beaudoin

    In rollback operations, use TEMP table when the number of rollback se…

    …ssions = 1. Otherwise, use UNLOGGED table with pg9.1+ or standart table with pg 9.0-.
    authored April 05, 2013
  2. Philippe Beaudoin

    In the parallel rollback client (emajParallelRollback.php), avoid a 2…

    … phase commit when only a single session is used.
    
    This allows to use TEMP tables in the rollback processing when the number of requested session equals 1. Also call the
    _rlbk_init() function after the transactions have been started.
    authored April 05, 2013

Mar 27, 2013

  1. Philippe Beaudoin

    Improve the rollback operations. Set the fixed_dblink_cost default va…

    …lue to 4 ms. Adjust the way steps duration are recorded. Remove the 'LOCK_TABLE' event from the emaj_rlbk_plan table at the end of the rollback operation (they are not useful any more). For each rollback operation, add a pseudo 'CTRL+DBLINK' or 'CTRL-DBLINK' step to estimate and record the time needed to chain the steps execution, with ou without using dblink connections. Use them in all time estimations. And some minor coding improvements.
    authored March 27, 2013

Mar 23, 2013

  1. Philippe Beaudoin

    Improve the emajRollbackMonitor.php client. It now displays also the …

    …most recently completed operations. And a bug has been fixed.
    authored March 23, 2013
  2. Philippe Beaudoin

    Improve the transactional aspects of the rollback operations.

    Reject the dblink connection if the transaction is not in READ COMMITTED isolation level.
    For parallel rollbacks (number of sessions > 1), check that the dblink connection is possible (otherwise, it generates endless locks between sessions).
    Being in READ COMMITTED isolation level, optimize the accesses to rollback tables by avoiding to use dblink for SELECT only statements.
    Rename into 'rlbk#' the dblink connection name suffix used for rollback operations.
    authored March 23, 2013

Mar 22, 2013

  1. Philippe Beaudoin

    In the installation procedure, set the dblink installation as only op…

    …tional. If dblink is not already installed at E-Maj installation time, issue a warning message to advise to also install dblink.
    authored March 22, 2013

Mar 21, 2013

  1. Philippe Beaudoin

    Include tests of clients (emajParallelRollback.php and emajRollbackMo…

    …nitor.php) into a new client.sql script added to the non regression tests scenarios. Also remove some old references to pg 8.2 test environment.
    authored March 21, 2013

Mar 20, 2013

  1. Philippe Beaudoin

    Adjust the rollback duration estimate model.

    Adjust some costs. Rename the 'fixed_table_with_rollback_duration' parameter into 'fixed_step_rollback_duration' to better reflect its meaning. Create and use a new 'fixed_dblink_rollback_duration' parameter to systematicaly take into account the dblink overhead.
    In passing, optimize the duration estimate processing by directly inserting the duration estimate at insert time for steps easy to evaluate.
    authored March 20, 2013
  2. Philippe Beaudoin

    Fix a bug in the _estimate_rollback_groups() function. It returned NU…

    …LL when there was no update to rollback.
    authored March 20, 2013

Mar 19, 2013

  1. Philippe Beaudoin

    Improve the checks on groups content performed at emaj_create_group()…

    … and emaj_alter_group() time.
    
    Replace the _check_class() function by a new _check_group_content() function. This function performs similar checks but in a more efficient set oriented manner. It also checks that no application table belongs to an E-Maj secondary schema. When a check fails, it now returns the list of faulting tables and not only the first detected.
    authored March 19, 2013

Mar 18, 2013

  1. Philippe Beaudoin

    In _rlbk_start_mark() and _rlbk_end() functions, improve the way the …

    …mark names are built, by simply using the rollback start time already stored into the emaj_rlbk table.
    authored March 18, 2013
  2. Philippe Beaudoin

    Create a new technical function named _rlbk_async and dedicated to th…

    …e phpPgAdmin plugin. It calls the main internal rollback functions after initialisation. Called asynchronously, it allows the ppa plugin to switch on the rollback monitoring just after the rollback submission.
    authored March 18, 2013
  3. Philippe Beaudoin

    Add a rlbk_msg column into the emaj_rlbk table to store a final messa…

    …ge for the rollback operation (either OK or KO).
    
    Store a completion message (similar to the message inserted into the emaj_hist table) when the operation goes well.
    And trap the errors in all main rollback functions to populate this new column if a problem occurs.
    (Some additional trapping to add when pg 8.3 will not be supported any more)
    authored March 18, 2013

Mar 10, 2013

  1. Philippe Beaudoin

    In rollback operation, the hist_event value 'MARK DELETED' is replace…

    …d by 'DELETE MARK'.
    authored March 10, 2013
  2. Philippe Beaudoin

    In _create_tbl(), verify that the table is neither a temporary table …

    …nor an unlogged table.
    authored March 10, 2013
  3. Philippe Beaudoin

    Report the changes coming from the newly created 1.0.2 version.

    authored March 10, 2013

Mar 01, 2013

  1. Philippe Beaudoin

    Add a new emaj_rollback_activity() function that provides information…

    … about in progress rollback operations.
    
    It returns a set of rows of type emaj_rollback_activity_type. They contain a description of each running rollback operation, as well as a remaining duration estimate and a percentage of work already done.
    emaj_adm and emaj_viewer roles can call it.
    authored March 01, 2013

Feb 28, 2013

  1. Philippe Beaudoin

    The emaj_estimate_rollback_duration() function is replaced by two new…

    … functions, namely emaj_estimate_rollback_group() and emaj_estimate_rollback_groups(), the later estimating the duration of a multi-groups rollback.
    
    They share some pieces of code with the rollback functions.
    A third parameter specifies whether the rollback is logged or not.
    authored February 28, 2013

Feb 26, 2013

  1. Philippe Beaudoin

    Move the checks of the emaj_rollback_groups() supplied parameters int…

    …o a new _rlbk_check() function so that these checks can be shared with the future emaj_estimate_rollback_groups() functions.
    authored February 26, 2013
  2. Philippe Beaudoin

    Improve the rollback processing again to prepare the code share with …

    …the future _estimate_rollback_groups() function.
    
    Mainly remove the NOT NULL attribute to some emaj_rlbk tables.
    authored February 26, 2013

Feb 25, 2013

  1. Philippe Beaudoin

    improve the rollback processing, by directly calling the _log_stat_tb…

    …l() function instead of emaj_log_stat_group() to get and check the estimated number of updates to rollback for each table.
    authored February 25, 2013
  2. Philippe Beaudoin

    Rework the purge_hist() function.

    Add the purge of all rollback tables (except emaj_rlbk_stat), set the default value for the 'history retention' parameter to 1 year instead of 1 month, and record the purge into the emaj_hist table if rows have really been deleted.
    authored February 25, 2013

Feb 24, 2013

  1. Philippe Beaudoin

    Redesign the rollback processing to be able to monitor the rollback o…

    …perations progress.
    
    3 tables have been created: emaj_rlbk, emaj_rlbk_session and emaj_rlbk_plan to register rollbacks and their execution plan.
    During the rollback operation, these 3 tables are updated, if possible, by autonomous transactions, using dblink.
    To use dblink, the dblink contrib or extension must have been installed and a 'dblink_user_password' parameter must have been set into the emaj_param table.
    For security reason, emaj_viewer roles are not allowed to look at emaj_param.
    The emaj_fkey table has been suppressed.
    All internal functions have been renamed. The parallel rollback client has been updated accordingly.
    The tables are now affected to sessions taking into account the duration estimates of all steps, including those that manage foreign keys.
    The real durations of some short steps like log triggers disabling and enabling are now recorded into the rlbk_stat table.
    Foreign keys processing are now processed as close to the table rollback as possible to take benefit from tables content currently in shared buffers or OS cache.
    A new emaj_cleanup_rollback_state() function set the final COMMITTED or ABORTED state of rollback operations. This function is regularly called by other emaj function, but the emaj administrator may also use it.
    This commit also fix a rare case that may arise when a rollback is asked while tables are continuously updated. At the beginning of a rollback operation, if a table known as 'not needing rollback' at initialisation time is updated before the locking step, this table will not be rolled back, generating a loss of consistency between tables of the group. A check is now added, so that the rollback safely fails if this happens.
    There is some more work to do around this major change. But we now have a stable point with this commit.
    authored February 24, 2013

Jan 05, 2013

  1. Philippe Beaudoin

    In the emaj_group table, replace the group_state column by a boolean …

    …column named group_is_logging.
    
    This lowers the risk of inserting bad values for this data, and using an enum column type with only 2 values is not worth the trouble.
    authored January 05, 2013
Something went wrong with that request. Please try again.