sch_iwa.sql 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. {**************************************************************************}
  2. {* *}
  3. {* Licensed Materials - Property of IBM and/or HCL *}
  4. {* *}
  5. {* IBM Informix Dynamic Server *}
  6. {* (c) Copyright IBM Corporation 2001, 2016. All rights reserved. *}
  7. {* (c) Copyright HCL Technologies Ltd. 2017. All Rights Reserved. *}
  8. {* *}
  9. {**************************************************************************}
  10. DATABASE sysadmin;
  11. {****************************************************}
  12. {*** ***}
  13. {*** create IWA tables ***}
  14. {*** ***}
  15. {****************************************************}
  16. -- table that keeps meta data on data marts for this IDS instance
  17. create table "informix".iwa_datamarts (
  18. -- identifiers:
  19. m_mart_id serial, -- mart identifier key
  20. m_name varchar(128), -- mart name
  21. m_accel_name varchar(128), -- accelerator name
  22. m_dbname varchar(128), -- database name
  23. m_owner varchar(32) default user, -- creator of the mart
  24. m_created datetime year to second default current year to second,
  25. -- date/time mart was created
  26. -- refresh operating values:
  27. m_lockmode integer default -1, -- loadMart locking mode
  28. m_flags integer default 0, -- for future use
  29. -- refresh statistic values:
  30. m_nrefreshes integer default 0, -- number of refreshes done
  31. m_avg_refresh_runtime integer default 0,
  32. m_last_refresh_runtime integer default 0,
  33. -- trickle feed statistic values:
  34. m_trickle_secs integer default 0,
  35. m_trickle_rows bigint default 0,
  36. unique (m_name, m_accel_name) -- mart name is unique per accelerator
  37. ) lock mode row;
  38. alter table "informix".iwa_datamarts add constraint
  39. primary key (m_mart_id) constraint iwa_datamarts_pk1;
  40. -- table that keeps track of tables in the different data marts
  41. create table "informix".iwa_marttables (
  42. -- identifiers:
  43. mt_tab_id serial, -- table identifier key
  44. mt_mart_id integer, -- -> iwa_datamarts.m_mart_id
  45. mt_tabid integer, -- from systables.tabid
  46. mt_dwaversion integer default 0, -- from systables.dwa_version
  47. mt_servername varchar(128) default NULL, -- (remote) server
  48. mt_dbname varchar(128) default NULL, -- (remote) database
  49. mt_tabname varchar(128) default NULL, -- from systables.tabname
  50. mt_owner varchar(32) default NULL, -- from systables.owner
  51. -- refresh operating values:
  52. mt_partnum integer, -- boolean: fragmented ? 0 : >0
  53. mt_isfact integer default 0 -- boolean
  54. ) lock mode row;
  55. alter table "informix".iwa_marttables add constraint
  56. primary key (mt_tab_id) constraint iwa_marttables_pk1;
  57. alter table "informix".iwa_marttables add constraint
  58. (foreign key (mt_mart_id) references "informix".iwa_datamarts (m_mart_id)
  59. on delete cascade constraint iwa_marttables_fk1);
  60. -- table that keeps track of table fragments and their change values:
  61. create table "informix".iwa_martpartitions (
  62. -- partition identifiers:
  63. mp_part_id serial unique, -- partition identifier
  64. mp_mart_id integer, -- -> iwa_datamarts.m_mart_id
  65. mp_tab_id integer, -- -> iwa_marttables.mt_tab_id
  66. mp_tabid integer, -- from systables.tabid
  67. mp_partnum integer, -- from sysfragments.partn
  68. mp_dwaversion integer default 0, -- from sysfragments.dwa_version
  69. -- values at last refresh time (from sysmaster:sysptnhdr):
  70. mp_last_created integer default -1,
  71. mp_last_nrows bigint default -1,
  72. mp_last_ninserts bigint default -1,
  73. mp_last_nupdates bigint default -1,
  74. mp_last_ndeletes bigint default -1,
  75. -- values at current refresh time (from sysmaster:sysptnhdr):
  76. mp_cur_created integer default -1,
  77. mp_cur_nrows bigint default -1,
  78. mp_cur_ninserts bigint default -1,
  79. mp_cur_nupdates bigint default -1,
  80. mp_cur_ndeletes bigint default -1
  81. ) lock mode row;
  82. alter table "informix".iwa_martpartitions add constraint
  83. (foreign key (mp_tab_id) references "informix".iwa_marttables (mt_tab_id)
  84. on delete cascade constraint iwa_martpartitions_fk1);
  85. alter table "informix".iwa_martpartitions add constraint
  86. (foreign key (mp_mart_id) references "informix".iwa_datamarts (m_mart_id)
  87. on delete cascade constraint iwa_martpartitions_fk2);
  88. -- table that keeps track of table columns in a data mart:
  89. create table "informix".iwa_martcolumns (
  90. -- column identifiers:
  91. mc_col_id serial, -- column identifier
  92. mc_mart_id integer, -- -> iwa_datamarts.m_mart_id
  93. mc_tab_id integer, -- -> iwa_marttables.mt_tab_id
  94. mc_colno integer, -- from syscolumns.colno
  95. mc_colname varchar(128) default NULL -- from syscolumns.colname
  96. ) lock mode row;
  97. alter table "informix".iwa_martcolumns add constraint
  98. primary key (mc_col_id) constraint iwa_martcolumns_pk1;
  99. alter table "informix".iwa_martcolumns add constraint
  100. (foreign key (mc_tab_id) references "informix".iwa_marttables (mt_tab_id)
  101. on delete cascade constraint iwa_martcolumns_fk1);
  102. alter table "informix".iwa_martcolumns add constraint
  103. (foreign key (mc_mart_id) references "informix".iwa_datamarts (m_mart_id)
  104. on delete cascade constraint iwa_martcolumns_fk2);
  105. create table 'informix'.iwa_dmd_marts (
  106. dmdm_id serial,
  107. dmdm_name varchar(128),
  108. dmdm_dbname varchar(128),
  109. primary key (dmdm_id) constraint iwa_dmd_marts_pk,
  110. unique (dmdm_name, dmdm_dbname) constraint iwa_dmd_marts_un1
  111. ) lock mode row;
  112. create table 'informix'.iwa_dmd_tables (
  113. dmdt_id serial,
  114. dmdt_mid integer,
  115. dmdt_owner varchar(32),
  116. dmdt_tabname varchar(128),
  117. dmdt_isfact integer,
  118. primary key (dmdt_id) constraint iwa_dmd_tables_pk,
  119. unique (dmdt_owner, dmdt_tabname, dmdt_mid) constraint iwa_dmd_tables_un1,
  120. foreign key (dmdt_mid) references 'informix'.iwa_dmd_marts (dmdm_id)
  121. on delete cascade constraint iwa_dmd_tables_fk1
  122. ) lock mode row;
  123. create table 'informix'.iwa_dmd_columns (
  124. dmdc_id serial,
  125. dmdc_tid integer,
  126. dmdc_colname varchar(128),
  127. primary key (dmdc_id) constraint iwa_dmd_columns_pk,
  128. foreign key (dmdc_tid) references 'informix'.iwa_dmd_tables (dmdt_id)
  129. on delete cascade constraint iwa_dmd_columns_fk1
  130. ) lock mode row;
  131. create table 'informix'.iwa_dmd_refs (
  132. dmdr_id serial,
  133. dmdr_mid integer,
  134. dmdr_sig varchar(255),
  135. dmdr_ctid integer,
  136. dmdr_ptid integer,
  137. dmdr_uniq char(1),
  138. dmdr_type char(1),
  139. primary key (dmdr_id) constraint iwa_dmd_refs_pk1,
  140. foreign key (dmdr_mid) references 'informix'.iwa_dmd_marts (dmdm_id)
  141. on delete cascade constraint iwa_dmd_refs_fk1,
  142. foreign key (dmdr_ctid) references 'informix'.iwa_dmd_tables (dmdt_id)
  143. constraint iwa_dmd_refs_fk2,
  144. foreign key (dmdr_ptid) references 'informix'.iwa_dmd_tables (dmdt_id)
  145. constraint iwa_dmd_refs_fk3,
  146. check (dmdr_uniq in ('y', 'n')) constraint iwa_dmd_refs_chk1,
  147. check (dmdr_type in ('i', 'l')) constraint iwa_dmd_refs_chk2
  148. ) lock mode row;
  149. create table 'informix'.iwa_dmd_refcols (
  150. dmdrc_id serial,
  151. dmdrc_rid integer,
  152. dmdrc_ccid integer,
  153. dmdrc_pcid integer,
  154. primary key (dmdrc_id) constraint iwa_dmd_refcols_pk1,
  155. foreign key (dmdrc_rid) references 'informix'.iwa_dmd_refs (dmdr_id)
  156. on delete cascade constraint iwa_dmd_refcols_fk1,
  157. foreign key (dmdrc_ccid) references 'informix'.iwa_dmd_columns (dmdc_id)
  158. constraint iwa_dmd_refcols_fk2,
  159. foreign key (dmdrc_pcid) references 'informix'.iwa_dmd_columns (dmdc_id)
  160. constraint iwa_dmd_refcols_fk3
  161. ) lock mode row;
  162. -- time series virtual table partitioning calendar
  163. create table 'informix'.iwa_tsvt_partcal (
  164. tab_id integer, -- -> iwa_marttables.mt_tab_id
  165. calname varchar(255) not null, -- calendar name
  166. parted integer not null -- table is partitioned
  167. ) lock mode row;
  168. alter table 'informix'.iwa_tsvt_partcal add constraint
  169. (foreign key (tab_id) references 'informix'.iwa_marttables(mt_tab_id)
  170. on delete cascade constraint iwa_tsvt_partcal_fk1);
  171. -- time series virtual table windows
  172. create table 'informix'.iwa_tsvt_windows (
  173. tab_id integer, -- -> iwa_marttables.mt_tab_id
  174. begin integer not null, -- begin interval
  175. end integer not null, -- end interval
  176. check (begin < end)
  177. ) lock mode row;
  178. alter table 'informix'.iwa_tsvt_windows add constraint
  179. (foreign key (tab_id) references 'informix'.iwa_marttables(mt_tab_id)
  180. on delete cascade constraint iwa_tsvt_windows_fk1);
  181. GRANT SELECT ON 'informix'.iwa_datamarts TO "db_monitor" as informix;
  182. GRANT SELECT ON 'informix'.iwa_marttables TO "db_monitor" as informix;
  183. GRANT SELECT ON 'informix'.iwa_martpartitions TO "db_monitor" as informix;
  184. GRANT SELECT ON 'informix'.iwa_martcolumns TO "db_monitor" as informix;
  185. GRANT SELECT ON 'informix'.iwa_dmd_marts TO "db_monitor" as informix;
  186. GRANT SELECT ON 'informix'.iwa_dmd_tables TO "db_monitor" as informix;
  187. GRANT SELECT ON 'informix'.iwa_dmd_columns TO "db_monitor" as informix;
  188. GRANT SELECT ON 'informix'.iwa_dmd_refs TO "db_monitor" as informix;
  189. GRANT SELECT ON 'informix'.iwa_dmd_refcols TO "db_monitor" as informix;
  190. GRANT SELECT ON 'informix'.iwa_tsvt_partcal TO "db_monitor" as informix;
  191. GRANT SELECT ON 'informix'.iwa_tsvt_windows TO "db_monitor" as informix;
  192. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_datamarts TO "db_admin" as informix;
  193. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_marttables TO "db_admin" as informix;
  194. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_martpartitions TO "db_admin" as informix;
  195. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_martcolumns TO "db_admin" as informix;
  196. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_dmd_marts TO "db_admin" as informix;
  197. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_dmd_tables TO "db_admin" as informix;
  198. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_dmd_columns TO "db_admin" as informix;
  199. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_dmd_refs TO "db_admin" as informix;
  200. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_dmd_refcols TO "db_admin" as informix;
  201. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_tsvt_partcal TO "db_admin" as informix;
  202. GRANT UPDATE, DELETE, INSERT ON 'informix'.iwa_tsvt_windows TO "db_admin" as informix;
  203. INSERT INTO ph_version(object,type,value) VALUES ('IWA','version',2);
  204. CLOSE DATABASE;