/**************************************************************************************/
/* File:        demo16                                                                */
/* Project:     ATSQL2 : Schema Versioning                                            */
/* Author:      Andreas Steiner                                                       */
/* Date:        18.03.1996                                                            */
/* Results:                                                                           */
/**************************************************************************************/

SET CALENDRIC SYSTEM SQL3;


SET CLOCK TO TIMESTAMP '1995-01-01';

CREATE TABLE employee(ename  VARCHAR(12), 
                      eno    INTEGER PRIMARY KEY,
                      street VARCHAR(22), 
                      city   VARCHAR(10), birthday DATE);

INSERT INTO employee 
    VALUES ('Lilian', 3463, '46 Speedway', 'Tucson', DATE '1961-03-21');


SELECT * FROM employee;

/*
  ename  eno      street   city     birthday
 ------ ---- ----------- ------ ------------
 Lilian 3463 46 Speedway Tucson |1961-03-21|
*/

COMMIT;



/***********************/
/* Schema versioning : */
/***********************/

/* 1. ADD to Transaction Time Table */
/* ================================ */


SET CLOCK TO TIMESTAMP '1995-02-01';

ALTER TABLE employee ADD TRANSACTION;

TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION  ename  eno      street   city     birthday
 -------------------- ------ ---- ----------- ------ ------------
 [1995-02-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|
*/



SET CLOCK TO TIMESTAMP '1995-03-01';

ALTER TABLE employee ADD country char(20);

TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION  ename  eno      street   city     birthday country
 -------------------- ------ ---- ----------- ------ ------------ -------
 [1995-03-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|        
*/



SET CLOCK TO TIMESTAMP '1995-04-01';

ALTER TABLE employee ADD employment PERIOD;

TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION  ename  eno      street   city     birthday country           employment
 -------------------- ------ ---- ----------- ------ ------------ ------- --------------------
 [1995-04-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|         [1995-04-01-forever)
*/



/* 2. DROP from Transaction Time Table */
/* =================================== */


SET CLOCK TO TIMESTAMP '1995-05-01';

ALTER TABLE employee DROP employment;

TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION  ename  eno      street   city     birthday country
 -------------------- ------ ---- ----------- ------ ------------ -------
 [1995-05-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|        
*/

COMMIT;


SET CLOCK TO TIMESTAMP '1995-06-01';

ALTER TABLE employee DROP country;

TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION  ename  eno      street   city     birthday
 -------------------- ------ ---- ----------- ------ ------------
 [1995-06-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|
*/



/* 3. ADD to Valid Time Table */
/* ========================== */


SET CLOCK TO TIMESTAMP '1995-07-01';

ALTER TABLE employee ADD VALID;

VALID AND TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION                VALID  ename  eno      street   city     birthday
 -------------------- -------------------- ------ ---- ----------- ------ ------------
 [1995-07-01-forever) [1995-07-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|
*/



SET CLOCK TO TIMESTAMP '1995-08-01';

ALTER TABLE employee ADD country char(20);

VALID AND TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION                VALID  ename  eno      street   city     birthday country
 -------------------- -------------------- ------ ---- ----------- ------ ------------ -------
 [1995-08-01-forever) [1995-07-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|        
*/



SET CLOCK TO TIMESTAMP '1995-09-01';

ALTER TABLE employee ADD employment PERIOD;

VALID AND TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION                VALID  ename  eno      street   city     birthday country           employment
 -------------------- -------------------- ------ ---- ----------- ------ ------------ ------- --------------------
 [1995-09-01-forever) [1995-07-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|         [1995-09-01-forever)
*/



/* 3. DROP from Valid Time Table */
/* ============================= */


SET CLOCK TO TIMESTAMP '1995-10-01';

ALTER TABLE employee DROP employment;

VALID AND TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION                VALID  ename  eno      street   city     birthday country
 -------------------- -------------------- ------ ---- ----------- ------ ------------ -------
 [1995-10-01-forever) [1995-07-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|        
*/

COMMIT;


SET CLOCK TO TIMESTAMP '1995-11-01';

ALTER TABLE employee DROP country;

VALID AND TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION                VALID  ename  eno      street   city     birthday
 -------------------- -------------------- ------ ---- ----------- ------ ------------
 [1995-11-01-forever) [1995-07-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|
*/

COMMIT;



SET CLOCK TO TIMESTAMP '1995-12-01';

ALTER TABLE employee DROP VALID;

TRANSACTION SELECT * FROM employee;

/*
          TRANSACTION  ename  eno      street   city     birthday
 -------------------- ------ ---- ----------- ------ ------------
 [1995-12-01-forever) Lilian 3463 46 Speedway Tucson |1961-03-21|
*/

COMMIT;
