DBModel.sql 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. create or replace function update_db_model() returns void as
  2. $$
  3. begin
  4. ------------------------------------------------------------------------------------------------
  5. --
  6. if not exists(select * from information_schema.tables
  7. where
  8. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  9. and table_name = 'carrier_data') then
  10. CREATE TABLE "carrier_data"
  11. (
  12. "guid" text NOT NULL,
  13. "load_time" timestamp without time zone,
  14. "unload_time" timestamp without time zone,
  15. "rfid" text,
  16. "lot_id" text,
  17. "product_category" text,
  18. "station" text,
  19. CONSTRAINT "carrier_data_pkey" PRIMARY KEY ("guid" )
  20. )
  21. WITH (
  22. OIDS=FALSE
  23. );
  24. ALTER TABLE "carrier_data"
  25. OWNER TO postgres;
  26. GRANT SELECT ON TABLE "carrier_data" TO postgres;
  27. end if;
  28. ------------------------------------------------------------------------------------------------
  29. --
  30. if not exists(select * from information_schema.tables
  31. where
  32. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  33. and table_name = 'wafer_data') then
  34. CREATE TABLE "wafer_data"
  35. (
  36. "guid" text NOT NULL,
  37. "create_time" timestamp without time zone,
  38. "delete_time" timestamp without time zone,
  39. "carrier_data_guid" text,
  40. "create_station" text,
  41. "create_slot" text,
  42. "process_data_guid" text,
  43. "wafer_id" text,
  44. "lasermarker1" text,
  45. "lasermarker2" text,
  46. "lasermarker3" text,
  47. "t7code1" text,
  48. "t7code2" text,
  49. "t7code3" text,
  50. "pj_data_guid" text,
  51. "lot_data_guid" text,
  52. CONSTRAINT "wafer_data_pkey" PRIMARY KEY ("guid" )
  53. )
  54. WITH (
  55. OIDS=FALSE
  56. );
  57. ALTER TABLE "wafer_data"
  58. OWNER TO postgres;
  59. GRANT SELECT ON TABLE "wafer_data" TO postgres;
  60. end if;
  61. ------------------------------------------------------------------------------------------------
  62. --
  63. if not exists(select * from information_schema.tables
  64. where
  65. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  66. and table_name = 'event_data') then
  67. CREATE TABLE "event_data"
  68. (
  69. "gid" serial NOT NULL,
  70. "event_id" integer,
  71. "event_enum" text,
  72. "type" text,
  73. "source" text,
  74. "description" text,
  75. "level" text,
  76. "occur_time" timestamp without time zone,
  77. CONSTRAINT "event_data_pkey" PRIMARY KEY ("gid" )
  78. )
  79. WITH (
  80. OIDS=FALSE
  81. );
  82. --ALTER TABLE "EventManager"
  83. --OWNER TO postgres;
  84. GRANT ALL ON TABLE "event_data" TO postgres;
  85. GRANT SELECT ON TABLE "event_data" TO postgres;
  86. CREATE INDEX "event_data_occur_time_event_id_idx"
  87. ON "event_data"
  88. USING btree
  89. ("occur_time" , "event_id" );
  90. end if;
  91. ------------------------------------------------------------------------------------------------
  92. --
  93. if not exists(select * from information_schema.tables
  94. where
  95. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  96. and table_name = 'wafer_move_history') then
  97. CREATE TABLE "wafer_move_history"
  98. (
  99. "gid" serial NOT NULL,
  100. "wafer_data_guid" text,
  101. "arrive_time" timestamp without time zone,
  102. "station" text,
  103. "slot" text,
  104. "status" text,
  105. CONSTRAINT "wafer_move_history_pkey" PRIMARY KEY ("gid" )
  106. )
  107. WITH (
  108. OIDS=FALSE
  109. );
  110. ALTER TABLE "wafer_move_history"
  111. OWNER TO postgres;
  112. GRANT SELECT ON TABLE "wafer_move_history" TO postgres;
  113. end if;
  114. ------------------------------------------------------------------------------------------------
  115. --
  116. if not exists(select * from information_schema.tables
  117. where
  118. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  119. and table_name = 'process_data') then
  120. CREATE TABLE "process_data"
  121. (
  122. "guid" text NOT NULL,
  123. "process_begin_time" timestamp without time zone,
  124. "process_end_time" timestamp without time zone,
  125. "recipe_name" text,
  126. "process_status" text,
  127. "wafer_data_guid" text,
  128. "process_in" text,
  129. CONSTRAINT "process_data_pkey" PRIMARY KEY ("guid" )
  130. )
  131. WITH (
  132. OIDS=FALSE
  133. );
  134. ALTER TABLE "process_data"
  135. OWNER TO postgres;
  136. GRANT SELECT ON TABLE "process_data" TO postgres;
  137. end if;
  138. ------------------------------------------------------------------------------------------------
  139. --
  140. if not exists(select * from information_schema.tables
  141. where
  142. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  143. and table_name = 'stats_data') then
  144. CREATE TABLE "stats_data"
  145. (
  146. "name" text,
  147. "value" integer,
  148. "total" integer,
  149. "description" text,
  150. "last_update_time" timestamp without time zone,
  151. "last_reset_time" timestamp without time zone,
  152. "last_total_reset_time" timestamp without time zone,
  153. "is_visible" boolean,
  154. "enable_alarm" boolean,
  155. "alarm_value" integer,
  156. CONSTRAINT "stats_data_pkey" PRIMARY KEY ("name" )
  157. )
  158. WITH (
  159. OIDS=FALSE
  160. );
  161. ALTER TABLE "stats_data"
  162. OWNER TO postgres;
  163. GRANT SELECT ON TABLE "stats_data" TO postgres;
  164. end if;
  165. ------------------------------------------------------------------------------------------------
  166. --
  167. if not exists(select * from information_schema.tables
  168. where
  169. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  170. and table_name = 'leak_check_data') then
  171. CREATE TABLE "leak_check_data"
  172. (
  173. "guid" text NOT NULL,
  174. "operate_time" timestamp without time zone,
  175. "status" text,
  176. "leak_rate" real,
  177. "start_pressure" real,
  178. "stop_pressure" real,
  179. "mode" text,
  180. "leak_check_time" integer,
  181. CONSTRAINT "leak_check_data_pkey" PRIMARY KEY ("guid" )
  182. )
  183. WITH (
  184. OIDS=FALSE
  185. );
  186. ALTER TABLE "leak_check_data"
  187. OWNER TO postgres;
  188. GRANT ALL ON TABLE "leak_check_data" TO postgres;
  189. GRANT SELECT ON TABLE "leak_check_data" TO postgres;
  190. end if;
  191. ------------------------------------------------------------------------------------------------
  192. --
  193. if not exists(select * from information_schema.tables
  194. where
  195. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  196. and table_name = 'cj_data') then
  197. CREATE TABLE cj_data
  198. (
  199. "guid" text NOT NULL,
  200. "start_time" timestamp without time zone,
  201. "end_time" timestamp without time zone,
  202. "carrier_data_guid" text,
  203. "name" text,
  204. "input_port" text,
  205. "output_port" text,
  206. CONSTRAINT "cj_data_pkey" PRIMARY KEY ("guid" )
  207. )
  208. WITH (
  209. OIDS=FALSE
  210. );
  211. ALTER TABLE "cj_data"
  212. OWNER TO postgres;
  213. GRANT SELECT ON TABLE "cj_data" TO postgres;
  214. end if;
  215. ------------------------------------------------------------------------------------------------
  216. --
  217. if not exists(select * from information_schema.tables
  218. where
  219. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  220. and table_name = 'mfc_verification_data') then
  221. CREATE TABLE mfc_verification_data
  222. (
  223. "module" text,
  224. "name" text,
  225. "operate_time" timestamp without time zone,
  226. "percent10_setpoint" real,
  227. "percent10_calculate" real,
  228. "percent20_setpoint" real,
  229. "percent20_calculate" real,
  230. "percent30_setpoint" real,
  231. "percent30_calculate" real,
  232. "percent40_setpoint" real,
  233. "percent40_calculate" real,
  234. "percent50_setpoint" real,
  235. "percent50_calculate" real,
  236. "percent60_setpoint" real,
  237. "percent60_calculate" real,
  238. "percent70_setpoint" real,
  239. "percent70_calculate" real,
  240. "percent80_setpoint" real,
  241. "percent80_calculate" real,
  242. "percent90_setpoint" real,
  243. "percent90_calculate" real,
  244. "percent100_setpoint" real,
  245. "percent100_calculate" real,
  246. "setpoint" real,
  247. "calculate" real,
  248. CONSTRAINT "mfc_verification_data_pkey" PRIMARY KEY ("operate_time" )
  249. )
  250. WITH (
  251. OIDS=FALSE
  252. );
  253. ALTER TABLE "mfc_verification_data"
  254. OWNER TO postgres;
  255. GRANT SELECT ON TABLE "mfc_verification_data" TO postgres;
  256. end if;
  257. ------------------------------------------------------------------------------------------------
  258. --
  259. if not exists(select * from information_schema.tables
  260. where
  261. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  262. and table_name = 'mfc_verification_data_onepoint') then
  263. CREATE TABLE mfc_verification_data_onepoint
  264. (
  265. "module" text,
  266. "name" text,
  267. "operate_time" timestamp without time zone,
  268. "setpoint" real,
  269. "calculate" real,
  270. CONSTRAINT "mfc_verification_data_onepoint_pkey" PRIMARY KEY ("operate_time" )
  271. )
  272. WITH (
  273. OIDS=FALSE
  274. );
  275. ALTER TABLE "mfc_verification_data_onepoint"
  276. OWNER TO postgres;
  277. GRANT SELECT ON TABLE "mfc_verification_data_onepoint" TO postgres;
  278. end if;
  279. ------------------------------------------------------------------------------------------------
  280. --
  281. if not exists(select * from information_schema.tables
  282. where
  283. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  284. and table_name = 'mfc_verification_data_tenpoints') then
  285. CREATE TABLE mfc_verification_data_tenpoints
  286. (
  287. "module" text,
  288. "name" text,
  289. "operate_time" timestamp without time zone,
  290. "percent10_setpoint" real,
  291. "percent10_calculate" real,
  292. "percent20_setpoint" real,
  293. "percent20_calculate" real,
  294. "percent30_setpoint" real,
  295. "percent30_calculate" real,
  296. "percent40_setpoint" real,
  297. "percent40_calculate" real,
  298. "percent50_setpoint" real,
  299. "percent50_calculate" real,
  300. "percent60_setpoint" real,
  301. "percent60_calculate" real,
  302. "percent70_setpoint" real,
  303. "percent70_calculate" real,
  304. "percent80_setpoint" real,
  305. "percent80_calculate" real,
  306. "percent90_setpoint" real,
  307. "percent90_calculate" real,
  308. "percent100_setpoint" real,
  309. "percent100_calculate" real,
  310. CONSTRAINT "mfc_verification_data_tenpoints_pkey" PRIMARY KEY ("operate_time" )
  311. )
  312. WITH (
  313. OIDS=FALSE
  314. );
  315. ALTER TABLE "mfc_verification_data_tenpoints"
  316. OWNER TO postgres;
  317. GRANT SELECT ON TABLE "mfc_verification_data_tenpoints" TO postgres;
  318. end if;
  319. ------------------------------------------------------------------------------------------------
  320. --
  321. if not exists(select * from information_schema.tables
  322. where
  323. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  324. and table_name = 'pj_data') then
  325. CREATE TABLE pj_data
  326. (
  327. "guid" text NOT NULL,
  328. "start_time" timestamp without time zone,
  329. "end_time" timestamp without time zone,
  330. "carrier_data_guid" text,
  331. "cj_data_guid" text,
  332. "name" text,
  333. "input_port" text,
  334. "output_port" text,
  335. "total_wafer_count" integer,
  336. "abort_wafer_count" integer,
  337. "unprocessed_wafer_count" integer,
  338. CONSTRAINT "pj_data_pkey" PRIMARY KEY ("guid" )
  339. )
  340. WITH (
  341. OIDS=FALSE
  342. );
  343. ALTER TABLE "pj_data"
  344. OWNER TO postgres;
  345. GRANT SELECT ON TABLE "pj_data" TO postgres;
  346. end if;
  347. ------------------------------------------------------------------------------------------------
  348. --
  349. if not exists(select * from information_schema.tables
  350. where
  351. table_catalog = CURRENT_CATALOG and table_schema = CURRENT_SCHEMA
  352. and table_name = 'stats_data_rf_pump') then
  353. CREATE TABLE "stats_data_rf_pump"
  354. (
  355. "name" text,
  356. "description" text,
  357. "last_pm_time" timestamp without time zone,
  358. "from_last_pm" real,
  359. "total" real,
  360. "pm_interval" real,
  361. "enable_alarm" boolean,
  362. CONSTRAINT "stats_data_rf_pump_pkey" PRIMARY KEY ("name" )
  363. )
  364. WITH (
  365. OIDS=FALSE
  366. );
  367. ALTER TABLE "stats_data_rf_pump"
  368. OWNER TO postgres;
  369. GRANT SELECT ON TABLE "stats_data_rf_pump" TO postgres;
  370. end if;
  371. ------------------------------------------------------------------------------------------------
  372. --
  373. end;
  374. $$
  375. language 'plpgsql';
  376. select update_db_model();
  377. CREATE OR REPLACE FUNCTION batch_delete_tables(text)
  378. RETURNS int AS
  379. $$
  380. DECLARE
  381. r RECORD;
  382. count int;
  383. BEGIN
  384. count := 0;
  385. FOR r IN SELECT tablename FROM pg_tables where tablename like $1 || '%' LOOP
  386. RAISE NOTICE 'tablename: %', r.tablename;
  387. EXECUTE 'DROP TABLE "' || r.tablename || '" CASCADE';
  388. count := count + 1;
  389. END LOOP;
  390. RETURN count;
  391. END;
  392. $$
  393. LANGUAGE 'plpgsql' VOLATILE;