summaryrefslogtreecommitdiff
path: root/sql/legacy/Pg-upgrade-2.6.18-2.6.19.sql
blob: a5628186783d6439fe4cba70a4e6fdc210ada617 (plain)
  1. BEGIN;
  2. ALTER TABLE ap ADD PRIMARY KEY (id);
  3. ALTER TABLE ar ADD PRIMARY KEY (id);
  4. ALTER TABLE assembly ADD PRIMARY KEY (id, parts_id);
  5. ALTER TABLE business ADD PRIMARY KEY (id);
  6. ALTER TABLE customer ADD PRIMARY KEY (id);
  7. ALTER TABLE customertax ADD PRIMARY KEY (customer_id, chart_id);
  8. ALTER TABLE defaults ADD PRIMARY KEY (version);
  9. ALTER TABLE department ADD PRIMARY KEY (id);
  10. ALTER TABLE dpt_trans ADD PRIMARY KEY (trans_id);
  11. ALTER TABLE employee ADD PRIMARY KEY (id);
  12. ALTER TABLE exchangerate ADD PRIMARY KEY (curr, transdate);
  13. ALTER TABLE gifi ADD PRIMARY KEY (accno);
  14. ALTER TABLE gl ADD PRIMARY KEY (id);
  15. ALTER TABLE invoice ADD PRIMARY KEY (id);
  16. ALTER TABLE jcitems ADD PRIMARY KEY (id);
  17. ALTER TABLE language ADD PRIMARY KEY (code);
  18. ALTER TABLE makemodel ADD PRIMARY KEY (parts_id);
  19. ALTER TABLE oe ADD PRIMARY KEY (id);
  20. ALTER TABLE orderitems ADD PRIMARY KEY (id);
  21. ALTER TABLE parts ADD PRIMARY KEY (id);
  22. ALTER TABLE partsgroup ADD PRIMARY KEY (id);
  23. ALTER TABLE partstax ADD PRIMARY KEY (parts_id, chart_id);
  24. ALTER TABLE partstax ADD FOREIGN KEY (chart_id) REFERENCES chart (id);
  25. ALTER TABLE partstax ADD FOREIGN KEY (parts_id) REFERENCES parts (id);
  26. ALTER TABLE pricegroup ADD PRIMARY KEY (id);
  27. ALTER TABLE project ADD PRIMARY KEY (id);
  28. ALTER TABLE recurringemail ADD PRIMARY KEY (id);
  29. ALTER TABLE recurring ADD PRIMARY KEY (id);
  30. ALTER TABLE recurringprint ADD PRIMARY KEY (id);
  31. ALTER TABLE sic ADD PRIMARY KEY (code);
  32. ALTER TABLE status ADD PRIMARY KEY (trans_id);
  33. ALTER TABLE tax ADD PRIMARY KEY (chart_id);
  34. ALTER TABLE tax ADD FOREIGN KEY (chart_id) REFERENCES chart (id);
  35. ALTER TABLE translation ADD PRIMARY KEY (trans_id, language_code);
  36. ALTER TABLE vendor ADD PRIMARY KEY (id);
  37. ALTER TABLE vendortax ADD PRIMARY KEY (vendor_id, chart_id);
  38. ALTER TABLE warehouse ADD PRIMARY KEY (id);
  39. ALTER TABLE yearend ADD PRIMARY KEY (trans_id);
  40. LOCK inventory in EXCLUSIVE mode;
  41. ALTER TABLE inventory ADD COLUMN entry_id bigint;
  42. CREATE SEQUENCE inventory_entry_id_seq;
  43. ALTER TABLE inventory ALTER COLUMN entry_id
  44. SET DEFAULT nextval('inventory_entry_id_seq');
  45. UPDATE inventory SET entry_id = nextval('inventory_entry_id_seq');
  46. ALTER TABLE inventory ADD PRIMARY key (entry_id);
  47. LOCK partscustomer IN EXCLUSIVE MODE;
  48. ALTER TABLE partscustomer ADD COLUMN entry_id int;
  49. CREATE SEQUENCE partscustomer_entry_id_seq;
  50. ALTER TABLE partscustomer ALTER COLUMN entry_id
  51. SET DEFAULT nextval('partscustomer_entry_id_seq');
  52. UPDATE partscustomer SET entry_id = nextval('partscustomer_entry_id_seq');
  53. ALTER TABLE partscustomer ADD PRIMARY KEY (entry_id);
  54. LOCK partsvendor IN EXCLUSIVE MODE;
  55. ALTER TABLE partsvendor ADD COLUMN entry_id int;
  56. CREATE SEQUENCE partsvendor_entry_id_seq;
  57. ALTER TABLE partsvendor ALTER COLUMN entry_id
  58. SET DEFAULT nextval('partsvendor_entry_id_seq');
  59. UPDATE partsvendor SET entry_id = nextval('partsvendor_entry_id_seq');
  60. ALTER TABLE partsvendor ADD PRIMARY KEY (entry_id);
  61. LOCK audittrail IN EXCLUSIVE MODE;
  62. ALTER TABLE audittrail ADD COLUMN entry_id int;
  63. CREATE SEQUENCE audittrail_entry_id_seq ;
  64. ALTER TABLE audittrail ALTER COLUMN entry_id
  65. SET DEFAULT nextval('audittrail_entry_id_seq');
  66. UPDATE audittrail SET entry_id = nextval('audittrail_entry_id_seq');
  67. ALTER TABLE audittrail ADD PRIMARY KEY (entry_id);
  68. LOCK shipto IN EXCLUSIVE MODE;
  69. ALTER TABLE shipto ADD COLUMN entry_id int;
  70. CREATE SEQUENCE shipto_entry_id_seq ;
  71. ALTER TABLE shipto ALTER COLUMN entry_id
  72. SET DEFAULT nextval('shipto_entry_id_seq');
  73. UPDATE shipto SET entry_id = nextval('shipto_entry_id_seq');
  74. ALTER TABLE shipto ADD PRIMARY KEY (entry_id);
  75. CREATE TABLE taxmodule (
  76. taxmodule_id serial PRIMARY KEY,
  77. taxmodulename text NOT NULL
  78. );
  79. INSERT INTO taxmodule (
  80. taxmodule_id, taxmodulename
  81. ) VALUES (
  82. 1, 'Simple'
  83. );
  84. CREATE TABLE taxcategory (
  85. taxcategory_id serial PRIMARY KEY,
  86. taxcategoryname text NOT NULL,
  87. taxmodule_id int NOT NULL REFERENCES taxmodule (taxmodule_id)
  88. );
  89. ALTER TABLE partstax ADD COLUMN taxcategory_id int REFERENCES taxcategory (taxcategory_id);
  90. LOCK tax IN EXCLUSIVE MODE;
  91. ALTER TABLE tax ADD COLUMN pass int DEFAULT 0;
  92. UPDATE tax SET pass = 0;
  93. ALTER TABLE tax ALTER COLUMN pass SET NOT NULL;
  94. ALTER TABLE tax ADD COLUMN taxmodule_id int REFERENCES taxmodule DEFAULT 1;
  95. UPDATE tax SET taxmodule_id = 1;
  96. ALTER TABLE tax ALTER COLUMN taxmodule_id SET NOT NULL;
  97. -- Fixed session table and add users table --
  98. CREATE TABLE users (id serial UNIQUE, username varchar(30) PRIMARY KEY);
  99. COMMENT ON TABLE users 'username is the primary key because we don\'t want duplicate users';
  100. CREATE TABLE users_conf(id integer primary key references users(id) deferrable initially deferred,
  101. acs text,
  102. address text,
  103. businessnumber text,
  104. company text,
  105. countrycode text,
  106. currency text,
  107. dateformat text,
  108. dbconnect text,
  109. dbdriver text default 'Pg',
  110. dbhost text default 'localhost',
  111. dbname text,
  112. dboptions text,
  113. dbpasswd text,
  114. dbport text,
  115. dbuser text,
  116. email text,
  117. fax text,
  118. menuwidth text,
  119. name text,
  120. numberformat text,
  121. password varchar(32) check(length(password) = 32),
  122. print text,
  123. printer text,
  124. role text,
  125. sid text,
  126. signature text,
  127. stylesheet text,
  128. tel text,
  129. templates text,
  130. timeout numeric,
  131. vclimit numeric);
  132. COMMENT ON TABLE users_conf IS 'This is a completely dumb table that is a place holder to get usersconf into the database. Next major release will have a much more sane implementation';
  133. COMMENT ON COLUMN users_conf.id IS 'Yes primary key with a FOREIGN KEY to users(id) is correct';
  134. COMMENT ON COLUMN users_conf.password IS 'This means we have to get rid of the current password stuff and move to presumably md5()';
  135. LOCK session in EXCLUSIVE MODE;
  136. ALTER TABLE session ADD CONSTRAINT session_token_check check (length(token::text) = 32);
  137. ALTER TABLE session ADD column user_id integer not null references users(id);
  138. -- comment this out when user db is working:
  139. ALTER TABLE session ALTER COLUMN user_id DROP NOT NULL;
  140. -- Admin user --
  141. BEGIN;
  142. INSERT INTO users(username) VALUES ('admin');
  143. INSERT INTO users_conf(id,password) VALUES (currval('users_id_seq'),NULL);
  144. -- Functions
  145. CREATE FUNCTION create_user(text) RETURNS int4 AS $$
  146. INSERT INTO users(username) VALUES ('$1');
  147. SELECT currval('user_id_seq');
  148. $$ LANGUAGE 'SQL';
  149. COMMENT ON FUNCTION create_user(text) IS $$ Function to create user Returns users.id if successful, else it is an error. $$;
  150. CREATE FUNCTION update_user(int4,text) RETURNS int4 AS $$
  151. UPDATE users SET username = '$2' WHERE id = $1;
  152. SELECT 1;
  153. $$ LANGUAGE 'SQL';
  154. COMMENT ON FUNCTION update_user(int4,text) IS $$ Takes int4 which is users.id and text which is username. Will update username based on id. Username is unique $$;
  155. ALTER TABLE defaults RENAME TO old_defaults;
  156. CREATE TABLE defaults (
  157. setting_key TEXT PRIMARY KEY,
  158. value TEXT
  159. );
  160. COMMENT ON TABLE defaults IS $$This table replaces the old one column per value system with a simple key => value table$$;
  161. INSERT INTO defaults (setting_key, value)
  162. SELECT 'inventory_accno_id', inventory_accno_id FROM old_defaults
  163. UNION
  164. SELECT 'income_accno_id', income_accno_id FROM old_defaults
  165. UNION
  166. SELECT 'expense_accno_id', expense_accno_id FROM old_defaults
  167. UNION
  168. SELECT 'fxloss_accno_id', fxloss_accno_id FROM old_defaults
  169. UNION
  170. SELECT 'fxgain_accno_id', fxgain_accno_id FROM old_defaults
  171. UNION
  172. SELECT 'sinumber', sinumber FROM old_defaults
  173. UNION
  174. SELECT 'sonumber', sonumber FROM old_defaults
  175. UNION
  176. SELECT 'yearend', yearend FROM old_defaults
  177. UNION
  178. SELECT 'weightunit', weightunit FROM old_defaults
  179. UNION
  180. SELECT 'businessnumber', businessnumber FROM old_defaults
  181. UNION
  182. SELECT 'version', '1.2.0'
  183. UNION
  184. SELECT 'curr', curr FROM old_defaults
  185. UNION
  186. SELECT 'closedto', closedto FROM old_defaults
  187. UNION
  188. SELECT 'revtrans', revtrans FROM old_defaults
  189. UNION
  190. SELECT 'ponumber', ponumber FROM old_defaults
  191. UNION
  192. SELECT 'sqnumber', sqnumber FROM old_defaults
  193. UNION
  194. SELECT 'rfqnumber', rfqnumber FROM old_defaults
  195. UNION
  196. SELECT 'audittrail', audittrail FROM old_defaults
  197. UNION
  198. SELECT 'vinumber', vinumber FROM old_defaults
  199. UNION
  200. SELECT 'employeenumber', employeenumber FROM old_defaults
  201. UNION
  202. SELECT 'partnumber', partnumber FROM old_defaults
  203. UNION
  204. SELECT 'customernumber', customernumber FROM old_defaults
  205. UNION
  206. SELECT 'vendornumber', vendornumber FROM old_defaults
  207. UNION
  208. SELECT 'glnumber', glnumber FROM old_defaults
  209. UNION
  210. SELECT 'projectnumber', projectnumber FROM old_defaults
  211. UNION
  212. SELECT 'appname', 'LedgerSMB';
  213. DROP TABLE old_defaults;
  214. CREATE OR REPLACE FUNCTION add_custom_field (VARCHAR, VARCHAR, VARCHAR)
  215. RETURNS BOOL AS
  216. 'BEGIN
  217. EXECUTE ''SELECT TABLE_ID FROM custom_table_catalog
  218. WHERE extends = '''''' || table_name || '''''' '';
  219. IF NOT FOUND THEN
  220. BEGIN
  221. INSERT INTO custom_table_catalog (extends)
  222. VALUES (table_name);
  223. EXECUTE ''CREATE TABLE custom_''||table_name ||
  224. '' (row_id INT PRIMARY KEY)'';
  225. EXCEPTION WHEN duplicate_table THEN
  226. -- do nothing
  227. END;
  228. END IF;
  229. EXECUTE ''INSERT INTO custom_field_catalog (field_name, table_id)
  230. VALUES ( '''''' || new_field_name ||'''''', (SELECT table_id FROM custom_table_catalog
  231. WHERE extends = ''''''|| table_name || ''''''))'';
  232. EXECUTE ''ALTER TABLE custom_''||table_name || '' ADD COLUMN ''
  233. || new_field_name || '' '' || field_datatype;
  234. RETURN TRUE;
  235. ' LANGUAGE PLPGSQL;
  236. END;
  237. COMMIT;