/src/python/WMComponent/DBS3Buffer/Oracle/Create.py

https://github.com/PerilousApricot/WMCore
Python | 357 lines | 338 code | 5 blank | 14 comment | 11 complexity | f1b2b1593bfa8059cf19e8e54739c556 MD5 | raw file
  1. """
  2. _Create_DBSBuffer_
  3. Implementation of Create_DBSBuffer for Oracle.
  4. """
  5. import threading
  6. from WMCore.Database.DBCreator import DBCreator
  7. class Create(DBCreator):
  8. def __init__(self, logger = None, dbi = None, params = None):
  9. """
  10. _init_
  11. Call the base class's constructor and create all necessary tables,
  12. constraints and inserts.
  13. """
  14. myThread = threading.currentThread()
  15. DBCreator.__init__(self, myThread.logger, myThread.dbi)
  16. tablespaceTable = ""
  17. tablespaceIndex = ""
  18. if params:
  19. if params.has_key("tablespace_table"):
  20. tablespaceTable = "TABLESPACE %s" % params["tablespace_table"]
  21. if params.has_key("tablespace_index"):
  22. tablespaceIndex = "USING INDEX TABLESPACE %s" % params["tablespace_index"]
  23. self.create["01dbsbuffer_dataset"] = \
  24. """CREATE TABLE dbsbuffer_dataset
  25. (
  26. id NUMBER(11) NOT NULL ENABLE,
  27. path VARCHAR2(500) NOT NULL ENABLE,
  28. processing_ver VARCHAR2(255),
  29. acquisition_era VARCHAR2(255),
  30. valid_status VARCHAR2(20),
  31. global_tag VARCHAR2(255),
  32. parent VARCHAR2(500),
  33. custodial_site VARCHAR2(255),
  34. subscribed INT DEFAULT 0
  35. )"""
  36. self.create["01dbsbuffer_dataset_seq"] = \
  37. """CREATE SEQUENCE dbsbuffer_dataset_seq
  38. start with 1
  39. increment by 1
  40. nomaxvalue"""
  41. self.create["01dbsbuffer_dataset_trg"] = \
  42. """CREATE TRIGGER dbsbuffer_dataset_trg
  43. BEFORE INSERT ON dbsbuffer_dataset
  44. FOR EACH ROW
  45. BEGIN
  46. SELECT dbsbuffer_dataset_seq.nextval INTO :NEW.ID FROM dual;
  47. END;"""
  48. self.create["02dbsbuffer_algo"] = \
  49. """CREATE TABLE dbsbuffer_algo
  50. (
  51. id NUMBER(11) NOT NULL ENABLE,
  52. app_name varchar2(100),
  53. app_ver varchar2(100),
  54. app_fam varchar2(100),
  55. pset_hash varchar2(700),
  56. config_content CLOB,
  57. in_dbs NUMBER(11)
  58. )%s""" % tablespaceTable
  59. self.create["02dbsbuffer_algo_seq"] = \
  60. """CREATE SEQUENCE dbsbuffer_algo_seq
  61. start with 1
  62. increment by 1
  63. nomaxvalue"""
  64. self.create["02dbsbuffer_algo_trg"] = \
  65. """CREATE TRIGGER dbsbuffer_algo_trg
  66. BEFORE INSERT ON dbsbuffer_algo
  67. FOR EACH ROW
  68. BEGIN
  69. SELECT dbsbuffer_algo_seq.nextval INTO :new.ID FROM dual;
  70. END; """
  71. self.create["03dbsbuffer_algo_dataset_assoc"] = \
  72. """CREATE TABLE dbsbuffer_algo_dataset_assoc
  73. (
  74. id INTEGER NOT NULL,
  75. algo_id INTEGER NOT NULL,
  76. dataset_id INTEGER NOT NULL,
  77. in_dbs INTEGER DEFAULT 0
  78. )%s""" % tablespaceTable
  79. self.create["03dbsbuffer_algo_dataset_assoc_seq"] = \
  80. """CREATE SEQUENCE dbsbuffer_algdset_assoc_seq
  81. start with 1
  82. increment by 1
  83. nomaxvalue"""
  84. self.create["03dbsbuffer_algo_dataset_assoc_trg"] = \
  85. """CREATE TRIGGER dbsbuffer_algdset_assoc_trg
  86. BEFORE INSERT ON dbsbuffer_algo_dataset_assoc
  87. FOR EACH ROW
  88. BEGIN
  89. SELECT dbsbuffer_algdset_assoc_seq.nextval INTO :new.id FROM dual;
  90. END;"""
  91. self.create["04dbsbuffer_file"] = \
  92. """CREATE TABLE dbsbuffer_file
  93. (
  94. id NUMBER(11) NOT NULL ENABLE,
  95. lfn VARCHAR2(500) NOT NULL ENABLE,
  96. filesize NUMBER(11),
  97. events INTEGER,
  98. cksum NUMBER(11),
  99. dataset_algo NUMBER(11) NOT NULL ENABLE,
  100. status VARCHAR2(20),
  101. in_phedex INTEGER DEFAULT 0,
  102. block_id NUMBER(11),
  103. workflow INTEGER,
  104. LastModificationDate NUMBER(11)
  105. )%s""" % tablespaceTable
  106. self.create["04dbsbuffer_file_seq"] = \
  107. """CREATE SEQUENCE dbsbuffer_file_seq
  108. start with 1
  109. increment by 1
  110. nomaxvalue"""
  111. self.create["04dbsbuffer_file_trg"] = \
  112. """CREATE TRIGGER dbsbuffer_file_trg
  113. BEFORE INSERT ON dbsbuffer_file
  114. FOR EACH ROW
  115. BEGIN
  116. SELECT dbsbuffer_file_seq.nextval INTO :new.id FROM dual;
  117. END;"""
  118. self.create["05dbsbuffer_file_parent"] = \
  119. """CREATE TABLE dbsbuffer_file_parent
  120. (
  121. child NUMBER(11) NOT NULL,
  122. parent NUMBER(11) NOT NULL
  123. )%s""" % tablespaceTable
  124. self.create["06dbsbuffer_file_runlumi_map"] = \
  125. """CREATE TABLE dbsbuffer_file_runlumi_map
  126. (
  127. filename INTEGER NOT NULL,
  128. run INTEGER NOT NULL ENABLE,
  129. lumi INTEGER NOT NULL ENABLE
  130. )%s""" % tablespaceTable
  131. self.create["07dbsbuffer_location"] = \
  132. """CREATE TABLE dbsbuffer_location
  133. (
  134. id INTEGER NOT NULL ENABLE,
  135. se_name VARCHAR2(255) NOT NULL ENABLE
  136. )%s""" % tablespaceTable
  137. self.create["07dbsbuffer_location_seq"] = \
  138. """CREATE SEQUENCE dbsbuffer_location_seq
  139. start with 1
  140. increment by 1
  141. nomaxvalue"""
  142. self.create["07dbsbuffer_location_trg"] = \
  143. """CREATE TRIGGER dbsbuffer_location_trg
  144. BEFORE INSERT ON dbsbuffer_location
  145. FOR EACH ROW
  146. BEGIN
  147. SELECT dbsbuffer_location_seq.nextval INTO :new.id FROM dual;
  148. END;"""
  149. self.create["08dbsbuffer_file_location"] = \
  150. """CREATE TABLE dbsbuffer_file_location
  151. (
  152. filename INTEGER NOT NULL,
  153. location INTEGER NOT NULL
  154. )%s""" % tablespaceTable
  155. self.create["10dbsbuffer_block"] = \
  156. """CREATE TABLE dbsbuffer_block (
  157. id INTEGER,
  158. blockname VARCHAR(250) NOT NULL,
  159. location INTEGER NOT NULL,
  160. create_time INTEGER,
  161. status VARCHAR(20),
  162. status3 VARCHAR(20) DEFAULT 'Pending') %s""" % tablespaceTable
  163. self.create["10dbsbuffer_block_seq"] = \
  164. """CREATE SEQUENCE dbsbuffer_block_seq
  165. start with 1
  166. increment by 1
  167. nomaxvalue"""
  168. self.create["10dbsbuffer_block_trg"] = \
  169. """CREATE TRIGGER dbsbuffer_block_trg
  170. BEFORE INSERT ON dbsbuffer_block
  171. FOR EACH ROW
  172. BEGIN
  173. SELECT dbsbuffer_block_seq.nextval INTO :new.id FROM dual;
  174. END;"""
  175. self.create["11dbsbuffer_checksum_type"] = \
  176. """CREATE TABLE dbsbuffer_checksum_type (
  177. id INTEGER,
  178. type VARCHAR(255)
  179. ) %s""" % tablespaceTable
  180. self.create["10dbsbuffer_checksum_type_seq"] = \
  181. """CREATE SEQUENCE dbsbuffer_checksum_type_seq
  182. start with 1
  183. increment by 1
  184. nomaxvalue"""
  185. self.indexes["01_pk_dbsbuffer_checksum_type"] = \
  186. """ALTER TABLE dbsbuffer_checksum_type ADD
  187. (CONSTRAINT dbsbuffer_checksum_type_pk PRIMARY KEY (id) %s)""" % tablespaceIndex
  188. self.create["12dbsbuffer_file_checksums"] = \
  189. """CREATE TABLE dbsbuffer_file_checksums (
  190. fileid INTEGER,
  191. typeid INTEGER,
  192. cksum VARCHAR2(100)
  193. ) %s""" % tablespaceTable
  194. self.create["13dbsbuffer_workflow"] = \
  195. """CREATE TABLE dbsbuffer_workflow (
  196. id INTEGER,
  197. name VARCHAR2(255),
  198. task VARCHAR2(255),
  199. spec VARCHAR2(255)) %s """ % tablespaceTable
  200. self.create["10dbsbuffer_workflow_seq"] = \
  201. """CREATE SEQUENCE dbsbuffer_workflow_seq
  202. start with 1
  203. increment by 1
  204. nomaxvalue"""
  205. self.indexes["02_uk_dbsbuffer_file_checksums"] = \
  206. """ALTER TABLE dbsbuffer_file_checksums ADD
  207. (CONSTRAINT dbsbuffer_file_checksums_uk UNIQUE (fileid, typeid) %s)""" % tablespaceIndex
  208. self.constraints["02_fk_dbsbuffer_file_checksums"] = \
  209. """ALTER TABLE dbsbuffer_file_checksums ADD
  210. (CONSTRAINT fk_dbsfilechecksums_cktype FOREIGN KEY (typeid)
  211. REFERENCES dbsbuffer_checksum_type(id) ON DELETE CASCADE)"""
  212. self.constraints["03_fk_dbsbuffer_file_checksums"] = \
  213. """ALTER TABLE dbsbuffer_file_checksums ADD
  214. (CONSTRAINT fk_dbsfilechecksums_file FOREIGN KEY (fileid)
  215. REFERENCES dbsbuffer_file(id) ON DELETE CASCADE)"""
  216. self.indexes["01_pk_dbsbuffer_dataset"] = \
  217. """ALTER TABLE dbsbuffer_dataset ADD
  218. (CONSTRAINT dbsbuffer_dataset_pk PRIMARY KEY (id) %s)""" % tablespaceIndex
  219. self.indexes["02_pk_dbsbuffer_dataset"] = \
  220. """ALTER TABLE dbsbuffer_dataset ADD
  221. (CONSTRAINT dbsbuffer_dataset_unique UNIQUE (Path) %s)""" % tablespaceIndex
  222. self.indexes["01_pk_dbsbuffer_algo"] = \
  223. """ALTER TABLE dbsbuffer_algo ADD
  224. (CONSTRAINT dbsbuffer_algo_pk PRIMARY KEY (id) %s)""" % tablespaceIndex
  225. self.indexes["02_pk_dbsbuffer_algo"] = \
  226. """ALTER TABLE dbsbuffer_algo ADD
  227. (CONSTRAINT dbsbuffer_algo_unique UNIQUE (app_name, app_ver,
  228. app_fam, pset_hash) %s)""" % tablespaceIndex
  229. self.indexes["01_pk_dbsbuffer_file"] = \
  230. """ALTER TABLE dbsbuffer_file ADD
  231. (CONSTRAINT dbsbuffer_file_pk PRIMARY KEY (id) %s)""" % tablespaceIndex
  232. self.indexes["01_pk_dbsbuffer_file_parent"] = \
  233. """ALTER TABLE dbsbuffer_file_parent ADD
  234. (CONSTRAINT dbsbuffer_file_parent_pk PRIMARY KEY (child, parent) %s)""" % tablespaceIndex
  235. self.constraints["01_fk_dbsbuffer_file_parent"] = \
  236. """ALTER TABLE dbsbuffer_file_parent ADD
  237. (CONSTRAINT dbsbuffer_file_parent_child FOREIGN KEY (child) REFERENCES dbsbuffer_file(id)
  238. ON DELETE CASCADE)"""
  239. self.constraints["02_fk_dbsbuffer_file_parent"] = \
  240. """ALTER TABLE dbsbuffer_file_parent ADD
  241. (CONSTRAINT dbsbuffer_file_parent_parent FOREIGN KEY (parent) REFERENCES dbsbuffer_file(id)
  242. ON DELETE CASCADE)"""
  243. self.indexes["01_pk_dbsbuffer_location"] = \
  244. """ALTER TABLE dbsbuffer_location ADD
  245. (CONSTRAINT pk_dbsbuffer_location_pk PRIMARY KEY (id) %s)""" % tablespaceIndex
  246. self.indexes["02_pk_dbsbuffer_location"] = \
  247. """ALTER TABLE dbsbuffer_location ADD
  248. (CONSTRAINT pk_dbsbuffer_location_unique UNIQUE (se_name) %s)""" % tablespaceIndex
  249. self.indexes["01_pk_dbsbuffer_block"] = \
  250. """ALTER TABLE dbsbuffer_block ADD
  251. (CONSTRAINT dbsbuffer_block_pk PRIMARY KEY (id) %s)""" % tablespaceIndex
  252. self.indexes["02_pk_dbsbuffer_block"] = \
  253. """ALTER TABLE dbsbuffer_block ADD
  254. (CONSTRAINT dbsbuffer_block_unique UNIQUE (blockname, location) %s)""" % tablespaceIndex
  255. self.constraints["01_fk_dbsbuffer_block"] = \
  256. """ALTER TABLE dbsbuffer_block ADD
  257. (CONSTRAINT dbsbuffer_block_location FOREIGN KEY (location) REFERENCES dbsbuffer_location(id)
  258. ON DELETE CASCADE)"""
  259. self.indexes["01_pk_dbsbuffer_algodset_assoc"] = \
  260. """ALTER TABLE dbsbuffer_algo_dataset_assoc ADD
  261. (CONSTRAINT dbsbuffer_algodset_assoc_pk PRIMARY KEY (id) %s)""" % tablespaceIndex
  262. self.constraints["01_fk_dbsbuffer_algodset_assoc"] = \
  263. """ALTER TABLE dbsbuffer_algo_dataset_assoc ADD
  264. (CONSTRAINT dbsbuffer_algodset_assoc_ds FOREIGN KEY (dataset_id) REFERENCES dbsbuffer_dataset(id)
  265. ON DELETE CASCADE)"""
  266. self.constraints["02_fk_dbsbuffer_algodset_assoc"] = \
  267. """ALTER TABLE dbsbuffer_algo_dataset_assoc ADD
  268. (CONSTRAINT dbsbuffer_algodset_assoc_al FOREIGN KEY (algo_id) REFERENCES dbsbuffer_algo(id)
  269. ON DELETE CASCADE)"""
  270. self.constraints["01_fk_dbsbuffer_file_runlumi"] = \
  271. """ALTER TABLE dbsbuffer_file_runlumi_map ADD
  272. (CONSTRAINT dbsbuffer_file_runlumi_pk FOREIGN KEY (filename) REFERENCES dbsbuffer_file(id)
  273. ON DELETE CASCADE)"""
  274. self.constraints["01_fk_dbsbuffer_file_location"] = \
  275. """ALTER TABLE dbsbuffer_file_location ADD
  276. (CONSTRAINT dbsbuffer_file_location_loc FOREIGN KEY (location) REFERENCES dbsbuffer_location(id)
  277. ON DELETE CASCADE)"""
  278. self.constraints["02_fk_dbsbuffer_file_location"] = \
  279. """ALTER TABLE dbsbuffer_file_location ADD
  280. (CONSTRAINT dbsbuffer_file_location_file FOREIGN KEY (filename) REFERENCES dbsbuffer_file(id)
  281. ON DELETE CASCADE)"""
  282. self.indexes["01_pk_dbsbuffer_workflow"] = \
  283. """ALTER TABLE dbsbuffer_workflow ADD
  284. (CONSTRAINT dbsbuffer_workflow_pk PRIMARY KEY (id) %s)""" % tablespaceIndex
  285. self.indexes["02_uq_dbsbuffer_workflow"] = \
  286. """ALTER TABLE dbsbuffer_workflow ADD
  287. (CONSTRAINT dbsbuffer_workflow_uq UNIQUE (name, task) %s)""" % tablespaceIndex
  288. #self.constraints["01_fk_dbsbuffer_file"] = \
  289. # """ALTER TABLE dbsbuffer_file ADD
  290. # (CONSTRAINT dbsbuffer_file FOREIGN KEY (workflow) REFERENCES dbsbuffer_workflow(id)
  291. # ON DELETE CASCADE)"""
  292. checksumTypes = ['cksum', 'adler32', 'md5']
  293. for i in checksumTypes:
  294. checksumTypeQuery = """INSERT INTO dbsbuffer_checksum_type (id, type) VALUES (dbsbuffer_checksum_type_seq.nextval, '%s')
  295. """ % (i)
  296. self.inserts["wmbs_checksum_type_%s" % (i)] = checksumTypeQuery