/*****************************************************************/
/*  Meta-table definitions for TimeDB                            */
/*  November 2, 1995                                             */
/*****************************************************************/

/* Views */
CREATE TABLE views(
  name VARCHAR(32) NOT NULL,
  cols VARCHAR(240) NOT NULL,
  calcs LONG NOT NULL);

/* Referential Integrity */
CREATE TABLE refint(
  origin VARCHAR(32) NOT NULL,
  col VARCHAR(32) NOT NULL,
  reftable VARCHAR(32) NOT NULL,
  refcol VARCHAR(32) NOT NULL,
  timetype VARCHAR(32) NOT NULL);

/* Primary Keys */
CREATE TABLE keys(
  tablename VARCHAR(32) NOT NULL,
  attribute VARCHAR(32) NOT NULL);

/* Table / Column Constraints */
CREATE TABLE table_column_constraints(
  table_name VARCHAR(32) NOT NULL,
  query LONG NOT NULL);

/* Assertions */
CREATE TABLE assertions(
  name VARCHAR(32) NOT NULL,
  type VARCHAR(10) NOT NULL,
  query LONG NOT NULL);

/* Table-Types; must also contain data of meta-tables */
CREATE TABLE table_types(
  table_name VARCHAR(30) NOT NULL,
  table_type VARCHAR(16));

/* Schemata; must also contain data of meta-tables  */
CREATE TABLE table_view_schemes(
  table_name VARCHAR(30) NOT NULL, 
  column_name VARCHAR(30) NOT NULL,
  data_type VARCHAR(9),
  nullable VARCHAR(12),
  column_length NUMBER,
  column_id NUMBER NOT NULL);


/* Adding data about meta-tables to table_types */
/* -------------------------------------------- */

/* SQL meta tables: */
insert into table_types values ('dual','snapshot');
insert into table_types values ('dictionary','snapshot');
insert into table_types values ('dict','snapshot');
insert into table_types values ('dict_columns','snapshot');
insert into table_types values ('user_catalog','snapshot');
insert into table_types values ('cat','snapshot');
insert into table_types values ('user_tables','snapshot');
insert into table_types values ('tabs','snapshot');
insert into table_types values ('user_views','snapshot');
insert into table_types values ('user_tab_columns','snapshot');
insert into table_types values ('cols','snapshot');
insert into table_types values ('user_sequences','snapshot');

/* TimeDB meta-tables: */
insert into table_types values ('views', 'snapshot');
insert into table_types values ('refint', 'snapshot');
insert into table_types values ('keys', 'snapshot');
insert into table_types values ('table_column_constraints', 'snapshot');
insert into table_types values ('assertions', 'snapshot');
insert into table_types values ('table_types', 'snapshot');
insert into table_types values ('table_view_schemes', 'snapshot');


/* Adding data about meta-tables to table_view_schemes */
/* --------------------------------------------------- */

/* SQL meta tables: */
insert into table_view_schemes values('dual','dummy','char','null',30,1);

insert into table_view_schemes values('dictionary','table_name','char','null',30,1);
insert into table_view_schemes values('dictionary','comments','char','null',30,2);

insert into table_view_schemes values('dict','table_name','char','null',30,1);
insert into table_view_schemes values('dict','comments','char','null',30,2);

insert into table_view_schemes values('dict_columns','table_name','char','null',30,1);
insert into table_view_schemes values('dict_columns','column_name','char','null',30,2);
insert into table_view_schemes values('dict_columns','comments','char','null',30,3);

insert into table_view_schemes values('user_catalog','table_name','char','not_null',30,1);
insert into table_view_schemes values('user_catalog','table_type','char','null',30,2);

insert into table_view_schemes values('cat','table_name','char','not_null',30,1);
insert into table_view_schemes values('cat','table_type','char','null',30,2);

insert into table_view_schemes values('user_tables','table_name','char','not_null',30,1);

insert into table_view_schemes values('tabs','table_name','char','not_null',30,1);

insert into table_view_schemes values('user_views','view_name','char','not_null',30,1);
insert into table_view_schemes values('user_views','text','char','null',30,2);

insert into table_view_schemes values('user_tab_columns','table_name','char','not_null',30,1);
insert into table_view_schemes values('user_tab_columns','column_name','char','not_null',30,2);
insert into table_view_schemes values('user_tab_columns','data_type','char','null',30,3);
insert into table_view_schemes values('user_tab_columns','nullable','char','null',30,4);
insert into table_view_schemes values('user_tab_columns','column_id','num','null',30,5);

insert into table_view_schemes values('cols','table_name','char','not_null',30,1);
insert into table_view_schemes values('cols','column_name','char','not_null',30,2);
insert into table_view_schemes values('cols','data_type','char','null',30,3);
insert into table_view_schemes values('cols','nullable','char','null',30,4);
insert into table_view_schemes values('cols','column_id','num','not_null',30,5);

insert into table_view_schemes values('user_sequences','sequence_name','char','not_null',30,1);


/* TimeDB meta-tables: */
insert into table_view_schemes values('views','name','char','not_null',32,1);
insert into table_view_schemes values('views','cols','char','not_null',240,2);
insert into table_view_schemes values('views','calcs','long','not_null',-1,3);

insert into table_view_schemes values('refint','origin','char','not_null',32,1);
insert into table_view_schemes values('refint','col','char','not_null',32,2);
insert into table_view_schemes values('refint','reftable','char','not_null',32,3);
insert into table_view_schemes values('refint','refcol','char','not_null',32,4);
insert into table_view_schemes values('refint','timetype','char','not_null',32,5);

insert into table_view_schemes values('keys','tablename','char','not_null',32,1);
insert into table_view_schemes values('keys','attribute','char','not_null',32,2);

insert into table_view_schemes values('table_column_constraints','table_name','char','not_null',32,1);
insert into table_view_schemes values('table_column_constraints','query','long','not_null',-1,2);

insert into table_view_schemes values('assertions','name','char','not_null',32,1);
insert into table_view_schemes values('assertions','type','char','not_null',10,2);
insert into table_view_schemes values('assertions','query','long','not_null',-1,3);

insert into table_view_schemes values('table_types','table_name','char','not_null',30,1);
insert into table_view_schemes values('table_types','table_type','char','not_null',16,2);

insert into table_view_schemes values('table_view_schemes','table_name','char','not_null',30,1);
insert into table_view_schemes values('table_view_schemes','column_name','char','not_null',30,2);
insert into table_view_schemes values('table_view_schemes','data_type','char','null',9,3);
insert into table_view_schemes values('table_view_schemes','nullable','char','null',12,4);
insert into table_view_schemes values('table_view_schemes','column_length','num','null',32,5);
insert into table_view_schemes values('table_view_schemes','column_id','num','not_null',32,6);

