You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

166 lines
4.8 KiB

  1. ##################################################
  2. # Author: Jeb
  3. # Date: 2007/05
  4. # Purpose: To create a tpcb database using Disk Data,
  5. # tables and stored procedures to load the database
  6. # and run transactions against the DB
  7. ##################################################
  8. --disable_warnings
  9. DROP DATABASE IF EXISTS tpcb;
  10. --enable_warnings
  11. CREATE DATABASE tpcb;
  12. --echo
  13. eval CREATE TABLE tpcb.account
  14. (id INT, bid INT, balance DECIMAL(10,2),
  15. filler CHAR(255), PRIMARY KEY(id))
  16. TABLESPACE $table_space STORAGE DISK
  17. ENGINE=$engine_type;
  18. --echo
  19. eval CREATE TABLE tpcb.branch
  20. (bid INT, balance DECIMAL(10,2), filler VARCHAR(255),
  21. PRIMARY KEY(bid))TABLESPACE $table_space STORAGE DISK
  22. ENGINE=$engine_type;
  23. --echo
  24. eval CREATE TABLE tpcb.teller
  25. (tid INT, balance DECIMAL(10,2), filler VARCHAR(255),
  26. PRIMARY KEY(tid)) TABLESPACE $table_space STORAGE DISK
  27. ENGINE=$engine_type;
  28. --echo
  29. eval CREATE TABLE tpcb.history
  30. (id MEDIUMINT NOT NULL AUTO_INCREMENT,aid INT,
  31. tid INT, bid INT, amount DECIMAL(10,2),
  32. tdate DATETIME, teller CHAR(20), uuidf LONGBLOB,
  33. filler CHAR(80),PRIMARY KEY (id))
  34. TABLESPACE $table_space STORAGE DISK
  35. ENGINE=$engine_type;
  36. --echo
  37. --echo --- Create stored procedures & functions ---
  38. --echo
  39. --disable_query_log
  40. delimiter |;
  41. CREATE PROCEDURE tpcb.load()
  42. BEGIN
  43. DECLARE acct INT DEFAULT 100;
  44. DECLARE brch INT DEFAULT 10;
  45. DECLARE tell INT DEFAULT 100;
  46. DECLARE tmp INT DEFAULT 10;
  47. WHILE brch > 0 DO
  48. SET tmp = 100;
  49. WHILE tmp > 0 DO
  50. INSERT INTO tpcb.account VALUES (acct, brch, 0.0, "FRESH ACCOUNT");
  51. SET acct = acct - 1;
  52. SET tmp = tmp -1;
  53. END WHILE;
  54. INSERT INTO tpcb.branch VALUES (brch, 0.0, "FRESH BRANCH");
  55. SET brch = brch - 1;
  56. END WHILE;
  57. WHILE tell > 0 DO
  58. INSERT INTO tpcb.teller VALUES (tell, 0.0, "FRESH TELLER");
  59. SET tell = tell - 1;
  60. END WHILE;
  61. END|
  62. CREATE FUNCTION tpcb.account_id () RETURNS INT
  63. BEGIN
  64. DECLARE num INT;
  65. DECLARE ran INT;
  66. SELECT RAND() * 10 INTO ran;
  67. IF (ran < 5)
  68. THEN
  69. SELECT RAND() * 10 INTO num;
  70. ELSE
  71. SELECT RAND() * 100 INTO num;
  72. END IF;
  73. IF (num < 1)
  74. THEN
  75. RETURN 1;
  76. END IF;
  77. RETURN num;
  78. END|
  79. CREATE FUNCTION tpcb.teller_id () RETURNS INT
  80. BEGIN
  81. DECLARE num INT;
  82. DECLARE ran INT;
  83. SELECT RAND() * 10 INTO ran;
  84. IF (ran < 5)
  85. THEN
  86. SELECT RAND() * 10 INTO num;
  87. ELSE
  88. SELECT RAND() * 100 INTO num;
  89. END IF;
  90. IF (num < 1)
  91. THEN
  92. RETURN 1;
  93. END IF;
  94. RETURN num;
  95. END|
  96. CREATE PROCEDURE tpcb.trans(in format varchar(3))
  97. BEGIN
  98. DECLARE acct INT DEFAULT 0;
  99. DECLARE brch INT DEFAULT 0;
  100. DECLARE tell INT DEFAULT 0;
  101. DECLARE bal DECIMAL(10,2) DEFAULT 0.0;
  102. DECLARE amount DECIMAL(10,2) DEFAULT 1.00;
  103. DECLARE test INT DEFAULT 0;
  104. DECLARE bbal DECIMAL(10,2) DEFAULT 0.0;
  105. DECLARE tbal DECIMAL(10,2) DEFAULT 0.0;
  106. DECLARE local_uuid VARCHAR(255);
  107. DECLARE local_user VARCHAR(255);
  108. DECLARE local_time TIMESTAMP;
  109. SELECT RAND() * 10 INTO test;
  110. SELECT tpcb.account_id() INTO acct;
  111. SELECT tpcb.teller_id() INTO tell;
  112. SELECT account.balance INTO bal FROM tpcb.account WHERE id = acct;
  113. SELECT account.bid INTO brch FROM tpcb.account WHERE id = acct;
  114. SELECT teller.balance INTO tbal FROM tpcb.teller WHERE tid = tell;
  115. SELECT branch.balance INTO bbal FROM tpcb.branch WHERE bid = brch;
  116. IF (test < 5)
  117. THEN
  118. SET bal = bal + amount;
  119. SET bbal = bbal + amount;
  120. SET tbal = tbal + amount;
  121. UPDATE tpcb.account SET balance = bal, filler = 'account updated'
  122. WHERE id = acct;
  123. UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated'
  124. WHERE bid = brch;
  125. UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated'
  126. WHERE tid = tell;
  127. ELSE
  128. SET bal = bal - amount;
  129. SET bbal = bbal - amount;
  130. SET tbal = tbal - amount;
  131. UPDATE tpcb.account SET balance = bal, filler = 'account updated'
  132. WHERE id = acct;
  133. UPDATE tpcb.branch SET balance = bbal, filler = 'branch updated'
  134. WHERE bid = brch;
  135. UPDATE tpcb.teller SET balance = tbal, filler = 'teller updated'
  136. WHERE tid = tell;
  137. END IF;
  138. IF (format = 'SBR')
  139. THEN
  140. SET local_uuid=UUID();
  141. SET local_user=USER();
  142. SET local_time= NOW();
  143. INSERT INTO tpcb.history VALUES(NULL,acct,tell,brch,amount, local_time,local_user,
  144. local_uuid,'completed trans');
  145. ELSE
  146. INSERT INTO tpcb.history VALUES(NULL,acct,tell,brch,amount, NOW(), USER(),
  147. UUID(),'completed trans');
  148. END IF;
  149. END|
  150. delimiter ;|
  151. --enable_query_log
  152. --echo
  153. --echo *** Stored Procedures Created ***
  154. --echo