/**************************************************************************************/
/* File:        demo13                                                                */
/* Project:     ATSQL2 : Test-examples Flags, Referential Integrity, Union etc.       */
/* Author:      Andreas Steiner                                                       */
/* Date:        07-09-1995                                                            */
/* Results:                                                                           */
/**************************************************************************************/

SET CLOCK TO TIMESTAMP '1995/9/7';

CREATE TABLE p(i integer, s CHAR(10));

INSERT INTO p VALUES(1111, 'andreas');
INSERT INTO p VALUES(2222, 'maya');

NONSEQUENCED VALID period '1990-1992/12/12' + interval '3' year
SELECT * FROM p;

NONSEQUENCED VALID interval '3' year + period '1990-1992/12/12' + interval '3' year
SELECT * FROM p;

NONSEQUENCED VALID interval '3' year+ period '1990-1992/12/12' + interval '3' year
SELECT * FROM p;

NONSEQUENCED VALID period(timestamp '1991/2', timestamp '1993/4') + interval '3' year
SELECT * FROM p;

ALTER TABLE p ADD VALID;

VALID 
SELECT * FROM p;

NONSEQUENCED VALID period '1995/12-forever'
DELETE FROM p;

VALID 
SELECT * FROM p;

COMMIT;


NONSEQUENCED VALID valid(p) + interval '3' year
SELECT * FROM p;

NONSEQUENCED VALID begin(valid(p)) + interval '3' year
SELECT * FROM p;

NONSEQUENCED VALID begin(valid(q)) + interval '3' year
SELECT * FROM p;


NONSEQUENCED VALID timestamp '1991' + interval '2' month
SELECT * FROM p;

NONSEQUENCED VALID timestamp '1991' + interval '2' month - interval '2' day
SELECT * FROM p;


DROP TABLE p;


CREATE TABLE p(i INTEGER) AS VALID;
CREATE TABLE q(n INTEGER, s CHAR(10)) AS VALID AND TRANSACTION;

SET CLOCK TO TIMESTAMP '1995/8';

NONSEQUENCED VALID period '1995/8-forever'
INSERT INTO p VALUES (8888);
NONSEQUENCED VALID period '1995/9-forever'
INSERT INTO p VALUES (9999);
NONSEQUENCED VALID period '1995/7-forever'
INSERT INTO p VALUES (9999);

SET CLOCK TO TIMESTAMP '1995/9';

NONSEQUENCED VALID period '1995/9-forever'
INSERT INTO q VALUES (9999, 'andreas');
NONSEQUENCED VALID period '1995/10-forever'
INSERT INTO q VALUES (1111, 'maya');


VALID AND TRANSACTION SELECT * FROM p, q;

VALID SELECT * FROM p, (VALID SELECT * FROM q) a1;


  (VALID SELECT i FROM p)
UNION
  (NONSEQUENCED VALID period '1990-1991' SELECT n FROM q);
 
  (VALID SELECT i FROM p) (PERIOD)
UNION
  (NONSEQUENCED VALID period '1990-1991' SELECT n FROM q) (PERIOD);

((VALID SELECT i FROM p)
 UNION
 (NONSEQUENCED VALID period '1990-1991' SELECT n FROM q)
) (PERIOD);

VALID 
    SELECT i FROM p
  UNION
    SELECT n FROM q;


(VALID 
    SELECT i FROM p
  UNION
    SELECT n FROM q
) (PERIOD);

DROP TABLE p;
DROP TABLE q;


CREATE TABLE p(s CHAR(20)) AS VALID;
CREATE TABLE q(n INTEGER, s CHAR(10) VALID REFERENCES p(s)) AS VALID AND TRANSACTION;

INSERT INTO p VALUES('andreas');

COMMIT;

INSERT INTO q VALUES(1, 'andreas');

COMMIT;

INSERT INTO q VALUES(2, 'maya');

COMMIT;

DROP TABLE q;
DROP TABLE p;


CREATE TABLE p(e DATE) AS VALID;
CREATE TABLE q(n INTEGER, e DATE VALID REFERENCES p(e)) AS VALID AND TRANSACTION;

INSERT INTO p VALUES(timestamp '1990');

INSERT INTO q VALUES(1, timestamp '1990');

COMMIT;

INSERT INTO p VALUES(timestamp '1991');

COMMIT;

INSERT INTO q VALUES(2, timestamp '1989');

COMMIT;

DROP TABLE q;
DROP TABLE p;


CREATE TABLE p(i PERIOD) AS VALID;
CREATE TABLE q(n INTEGER, i PERIOD REFERENCES p(i));

DROP TABLE p;


create table person(name varchar(32), ort varchar(32), land varchar(32)) as valid;

nonsequenced valid period '1969/2-1994/12'
insert into person values ('Maya', 'Wollerau', 'Switzerland');
nonsequenced valid period '1994/12-forever'
insert into person values ('Maya', 'Rapperswil', 'Switzerland');
nonsequenced valid period '1992/3-forever'
insert into person values ('Andreas', 'Rapperswil', 'Switzerland');


nonsequenced valid intersect(valid(p), '1980-1990')
(select name, ort from person as p) (period);

drop table person;
