Init.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. package unittest
  2. import (
  3. "database/sql"
  4. "fmt"
  5. _ "xugugodriver/xugu"
  6. )
  7. var table_name = []string{
  8. "GO_UNIT_INT",
  9. "GO_UNIT_FLOAT",
  10. "GO_UNIT_CHAR",
  11. "GO_UNIT_DATE",
  12. "GO_UNIT_INTERVAL1",
  13. "GO_UNIT_INTERVAL2",
  14. "GO_UNIT_BLOB",
  15. "GO_UNIT_CLOB",
  16. "GO_UNIT_BOOLEAN",
  17. "GO_UNIT_BINARY",
  18. "GO_UNIT_GUID",
  19. "GO_UNIT_JSON",
  20. "GO_UNIT_XML",
  21. "GO_UNIT_TRANSATION",
  22. "GO_UNIT_INT_DEAL",
  23. "GO_UNIT_FLOAT_DEAL",
  24. "GO_UNIT_CHAR_DEAL",
  25. "GO_UNIT_DATE_DEAL",
  26. "GO_UNIT_INTERVAL1_DEAL",
  27. "GO_UNIT_INTERVAL2_DEAL",
  28. "GO_UNIT_BLOB_DEAL",
  29. "GO_UNIT_CLOB_DEAL",
  30. "GO_UNIT_BOOLEAN_DEAL",
  31. "GO_UNIT_BINARY_DEAL",
  32. "GO_UNIT_GUID_DEAL",
  33. "GO_UNIT_JSON_DEAL",
  34. "GO_UNIT_XML_DEAL",
  35. }
  36. var create_table = []string{
  37. "create table GO_UNIT_INT(ID INT PRIMARY KEY, TINY TINYINT, SMALL SMALLINT, INTE INTEGER, BIG BIGINT);",
  38. "create table GO_UNIT_FLOAT(ID INT PRIMARY KEY, F1 FLOAT, D1 DOUBLE, NUM NUMERIC(12,6));",
  39. "create table GO_UNIT_CHAR(ID INT PRIMARY KEY, CH CHAR,CHN CHAR(30), VAR VARCHAR);",
  40. "create table GO_UNIT_DATE(ID INT PRIMARY KEY, DT DATE, TM TIME, TMZ TIME WITH TIME ZONE,DTTM DATETIME , DTTMZ DATETIME WITH TIME ZONE, TS TIMESTAMP, TSZ TIMESTAMP WITH TIME ZONE);",
  41. "create table GO_UNIT_INTERVAL1(ID INT PRIMARY KEY, IY INTERVAL YEAR, IM INTERVAL MONTH, ITD INTERVAL DAY,IH INTERVAL HOUR,IMIN INTERVAL MINUTE,ITS INTERVAL SECOND);",
  42. "create table GO_UNIT_INTERVAL2(ID INT PRIMARY KEY, IY2M INTERVAL YEAR TO MONTH, ID2H INTERVAL DAY TO HOUR,ID2M INTERVAL DAY TO MINUTE,ID2S INTERVAL DAY TO SECOND, IH2M INTERVAL HOUR TO MINUTE,IH2S INTERVAL HOUR TO SECOND,IM2S INTERVAL MINUTE TO SECOND);",
  43. "create table GO_UNIT_BLOB(ID INT PRIMARY KEY, B1 BLOB)",
  44. "create table GO_UNIT_CLOB(ID INT PRIMARY KEY, C1 CLOB)",
  45. "create table GO_UNIT_BOOLEAN(ID INT PRIMARY KEY, B1 BOOLEAN);",
  46. "create table GO_UNIT_BINARY(ID INT PRIMARY KEY, B1 BIT, B2 VARBIT, B3 BINARY);",
  47. "create table GO_UNIT_GUID(ID INT PRIMARY KEY, G1 GUID);",
  48. "create table GO_UNIT_JSON(ID INT PRIMARY KEY, J1 JSON)",
  49. "create table GO_UNIT_XML(ID INT PRIMARY KEY, X1 XML)",
  50. "create table GO_UNIT_TRANSATION(ID INT PRIMARY KEY, I1 INT)",
  51. "create table GO_UNIT_INT_DEAL(ID INT PRIMARY KEY, TINY TINYINT, SMALL SMALLINT, INTE INTEGER, BIG BIGINT);",
  52. "create table GO_UNIT_FLOAT_DEAL(ID INT PRIMARY KEY, F1 FLOAT, D1 DOUBLE, NUM NUMERIC(12,6));",
  53. "create table GO_UNIT_CHAR_DEAL(ID INT PRIMARY KEY, CH CHAR,CHN CHAR(30), VAR VARCHAR);",
  54. "create table GO_UNIT_DATE_DEAL(ID INT PRIMARY KEY, DT DATE, TM TIME, TMZ TIME WITH TIME ZONE,DTTM DATETIME , DTTMZ DATETIME WITH TIME ZONE, TS TIMESTAMP, TSZ TIMESTAMP WITH TIME ZONE);",
  55. "create table GO_UNIT_INTERVAL1_DEAL(ID INT PRIMARY KEY, IY INTERVAL YEAR, IM INTERVAL MONTH, ITD INTERVAL DAY,IH INTERVAL HOUR,IMIN INTERVAL MINUTE,ITS INTERVAL SECOND);",
  56. "create table GO_UNIT_INTERVAL2_DEAL(ID INT PRIMARY KEY, IY2M INTERVAL YEAR TO MONTH, ID2H INTERVAL DAY TO HOUR,ID2M INTERVAL DAY TO MINUTE,ID2S INTERVAL DAY TO SECOND, IH2M INTERVAL HOUR TO MINUTE,IH2S INTERVAL HOUR TO SECOND,IM2S INTERVAL MINUTE TO SECOND);",
  57. "create table GO_UNIT_BLOB_DEAL(ID INT PRIMARY KEY, B1 BLOB)",
  58. "create table GO_UNIT_CLOB_DEAL(ID INT PRIMARY KEY, C1 CLOB)",
  59. "create table GO_UNIT_BOOLEAN_DEAL(ID INT PRIMARY KEY, B1 BOOLEAN);",
  60. "create table GO_UNIT_BINARY_DEAL(ID INT PRIMARY KEY, B1 BIT, B2 VARBIT, B3 BINARY);",
  61. "create table GO_UNIT_GUID_DEAL(ID INT PRIMARY KEY, G1 GUID);",
  62. "create table GO_UNIT_JSON_DEAL(ID INT PRIMARY KEY, J1 JSON)",
  63. "create table GO_UNIT_XML_DEAL(ID INT PRIMARY KEY, X1 XML)",
  64. }
  65. var insert_table = []string{
  66. // GO_UNIT_INT
  67. "INSERT INTO GO_UNIT_INT VALUES(1,NULL,NULL,NULL,NULL);",
  68. "INSERT INTO GO_UNIT_INT VALUES(2,0,0,0,0);",
  69. "INSERT INTO GO_UNIT_INT VALUES(3,1,1,1,1);",
  70. "INSERT INTO GO_UNIT_INT VALUES(4,-1,-1,-1,-1);",
  71. "INSERT INTO GO_UNIT_INT VALUES(5,127,32767,2147483647,9223372036854775807);",
  72. "INSERT INTO GO_UNIT_INT VALUES(6,-128,-32768,-2147483648,-9223372036854775808);",
  73. // GO_UNIT_FLOAT
  74. "INSERT INTO GO_UNIT_FLOAT VALUES(1,NULL,NULL,NULL);",
  75. "INSERT INTO GO_UNIT_FLOAT VALUES(2,0,0,0);",
  76. "INSERT INTO GO_UNIT_FLOAT VALUES(3,1,1,1);",
  77. "INSERT INTO GO_UNIT_FLOAT VALUES(4,999999,999999999999999,999999);",
  78. "INSERT INTO GO_UNIT_FLOAT VALUES(5,0.0000000001,0.0000000001,0.000001);",
  79. "INSERT INTO GO_UNIT_FLOAT VALUES(6,0.99999,0.9999999999,0.999999);",
  80. "INSERT INTO GO_UNIT_FLOAT VALUES(7,-1,-1,-1);",
  81. "INSERT INTO GO_UNIT_FLOAT VALUES(8,-999999,-999999999999999,-999999);",
  82. "INSERT INTO GO_UNIT_FLOAT VALUES(9,-0.0000000001,-0.0000000001,-0.000001);",
  83. "INSERT INTO GO_UNIT_FLOAT VALUES(10,-0.99999,-0.9999999999,-0.999999);",
  84. // GO_UNIT_CHAR
  85. "INSERT INTO GO_UNIT_CHAR VALUES(1,NULL,NULL,NULL);",
  86. "INSERT INTO GO_UNIT_CHAR VALUES(2,'','','');",
  87. "INSERT INTO GO_UNIT_CHAR VALUES(3,' ',' ',' ');",
  88. "INSERT INTO GO_UNIT_CHAR VALUES(4,'A','ABC','ABC');",
  89. "INSERT INTO GO_UNIT_CHAR VALUES(5,'\"','\"!@#$%^&*()_+~','\"!@#$%^&*()_+~');",
  90. "INSERT INTO GO_UNIT_CHAR VALUES(6,'中','中文','中文数据');",
  91. "INSERT INTO GO_UNIT_CHAR VALUES(7,'1',REPEAT('0123456789',3),REPEAT('0123456789',500));",
  92. "INSERT INTO GO_UNIT_CHAR VALUES(8,'一',REPEAT('零一二三四五六七八九',3),REPEAT('零一二三四五六七八九',500));",
  93. // GO_UNIT_DATE
  94. "INSERT INTO GO_UNIT_DATE VALUES(1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);",
  95. "INSERT INTO GO_UNIT_DATE values(2,'0001-01-01','00:00:00','00:00:00 +0','0001-01-01 00:00:00','0001-01-01 00:00:00 +0','0001-01-01 00:00:00','0001-01-01 00:00:00 +0');",
  96. "INSERT INTO GO_UNIT_DATE values(3,'9999-12-31','23:59:59.999','23:59:59.999 +12','9999-12-31 23:59:59.999','9999-12-31 23:59:59.999 +12','9999-12-31 23:59:59.999','9999-12-31 23:59:59.999 +12');",
  97. // GO_UNIT_INTERVAL1
  98. "INSERT INTO GO_UNIT_INTERVAL1 VALUES(1,NULL,NULL,NULL,NULL,NULL,NULL);",
  99. "INSERT INTO GO_UNIT_INTERVAL1 VALUES(2,0,0,0,0,0,0);",
  100. "INSERT INTO GO_UNIT_INTERVAL1 VALUES(3,9999,99999,999999,9999999,99999999,999999999);",
  101. "INSERT INTO GO_UNIT_INTERVAL1 VALUES(4,-9999,-99999,-999999,-9999999,-99999999,-999999999);",
  102. // GO_UNIT_INTERVAL2
  103. "INSERT INTO GO_UNIT_INTERVAL2 VALUES(1,NULL,NULL,NULL,NULL,NULL,NULL,NULL);",
  104. "INSERT INTO GO_UNIT_INTERVAL2 VALUES(2,'0-0','0 0','0 0:0','0 0:0:0','0:0','0:0:0','0:0');",
  105. "INSERT INTO GO_UNIT_INTERVAL2 VALUES(3,'9999-11','99999 23','99999 23:59','99999 23:59:59.999','999999:59','9999999:59:59.999','9999999:59.999');",
  106. "INSERT INTO GO_UNIT_INTERVAL2 VALUES(4,'-9999-11','-99999 23','-99999 23:59','-99999 23:59:59.999','-999999:59','-9999999:59:59.999','-9999999:59.999');",
  107. // GO_UNIT_BLOB
  108. "INSERT INTO GO_UNIT_BLOB VALUES(1,NULL);",
  109. "INSERT INTO GO_UNIT_BLOB VALUES(2,'');",
  110. "INSERT INTO GO_UNIT_BLOB VALUES(3,'123456789');",
  111. "INSERT INTO GO_UNIT_BLOB VALUES(4,'ABCDEFABCDEF');",
  112. // 插入500MB 是否要每次都进行插入呢。影响效率
  113. "INSERT INTO GO_UNIT_BLOB VALUES(5,REPEAT('0123456789ABCDEF',33554420));",
  114. // GO_UNIT_CLOB
  115. "INSERT INTO GO_UNIT_CLOB VALUES(1,NULL);",
  116. "INSERT INTO GO_UNIT_CLOB VALUES(2,'');",
  117. "INSERT INTO GO_UNIT_CLOB VALUES(3,'123456789');",
  118. "INSERT INTO GO_UNIT_CLOB VALUES(4,'ABCDEFGHIJKLMNOPQRSTUVWXYZ');",
  119. "INSERT INTO GO_UNIT_CLOB VALUES(5,'!@#$%^&*()_+-={}[]''\"');",
  120. "INSERT INTO GO_UNIT_CLOB VALUES(6,'中文数据测试一二三四五六七八九十');",
  121. "INSERT INTO GO_UNIT_CLOB VALUES(7,REPEAT('1234567890中文数据测试一二三四五六七八九十',8388605));",
  122. // GO_UNIT_BOOLEAN
  123. "INSERT INTO GO_UNIT_BOOLEAN VALUES(1,NULL);",
  124. "INSERT INTO GO_UNIT_BOOLEAN VALUES(2,'');",
  125. "INSERT INTO GO_UNIT_BOOLEAN VALUES(3,TRUE);",
  126. "INSERT INTO GO_UNIT_BOOLEAN VALUES(4,FALSE);",
  127. // 此处还有一个UNKNOW 的插入,暂时未找到语法,用 "SELECT 1 = nulL FROM dual;" 代替。
  128. // GO_UNIT_BINARY
  129. "INSERT INTO GO_UNIT_BINARY VALUES(1,NULL,NULL,NULL);",
  130. "INSERT INTO GO_UNIT_BINARY VALUES(2,'','','');",
  131. "INSERT INTO GO_UNIT_BINARY VALUES(3,'0','0','0');",
  132. "INSERT INTO GO_UNIT_BINARY VALUES(4,'1','0011011','000001010011100101110111');",
  133. // GO_UNIT_GUID
  134. "INSERT INTO GO_UNIT_GUID VALUES(1,NULL);",
  135. "INSERT INTO GO_UNIT_GUID VALUES(2,'0941BCBD12CF4DF18EB27AEF709B3624');",
  136. // GO_UNIT_JSON
  137. "INSERT INTO GO_UNIT_JSON VALUES(1,NULL);",
  138. "INSERT INTO GO_UNIT_JSON VALUES(2,'null');",
  139. "INSERT INTO GO_UNIT_JSON VALUES(3,'true');",
  140. "INSERT INTO GO_UNIT_JSON VALUES(4,'false');",
  141. "INSERT INTO GO_UNIT_JSON VALUES(5,'1');",
  142. "INSERT INTO GO_UNIT_JSON VALUES(6,'-1');",
  143. "INSERT INTO GO_UNIT_JSON VALUES(7,'0.01');",
  144. "INSERT INTO GO_UNIT_JSON VALUES(8,'\"中文数据测试\"');",
  145. "INSERT INTO GO_UNIT_JSON VALUES(9,'[\"abc\", true, false, 1, 1.1, null]');",
  146. "INSERT INTO GO_UNIT_JSON VALUES(10,'{\"key1\": \"value\", \"key2\": true, \"key3\": false, \"key4\": 1, \"key5\": 1.1, \"key6\": null}');",
  147. // GO_UNIT_XML
  148. "INSERT INTO GO_UNIT_XML VALUES(1,NULL);",
  149. "INSERT INTO GO_UNIT_XML VALUES(2,'<string>abc</string>');",
  150. "INSERT INTO GO_UNIT_XML VALUES(3,'<string>中文数据测试</string>');",
  151. "INSERT INTO GO_UNIT_XML VALUES(4,'<int>11</int>');",
  152. "INSERT INTO GO_UNIT_XML VALUES(5,'<double>11.1</double>');",
  153. "INSERT INTO GO_UNIT_XML VALUES(6,'<bool>true</bool>');",
  154. "INSERT INTO GO_UNIT_XML VALUES(7,'<bool>false</bool>');",
  155. }
  156. var db *sql.DB
  157. var ip = "192.168.2.216"
  158. var port = "5138"
  159. var database = "SYSTEM"
  160. var user = "SYSDBA"
  161. var pwd = "SYSDBA"
  162. var char_set = "UTF8"
  163. var Dsn = fmt.Sprintf("IP=%s;Port=%s;DB=%s;User=%s;PWD=%s;CHAR_SET=%s;",
  164. ip, port, database, user, pwd, char_set)
  165. // 是否需要初始化数据库环境
  166. var need_inti = false
  167. func init() {
  168. var err error
  169. db, err = sql.Open("xugusql", Dsn)
  170. if err != nil {
  171. fmt.Printf("[ERROR] %s\n", err.Error())
  172. }
  173. if need_inti {
  174. // 删除表
  175. for _, value := range table_name {
  176. var table_alive = fmt.Sprintf("select count(*) from all_tables where table_name = '%s'", value)
  177. var row = db.QueryRow(table_alive)
  178. var table_count int32
  179. row.Scan(&table_count)
  180. if table_count > 0 { // 暂时设置成1 不需要反复插入
  181. var drop_sql = fmt.Sprintf("drop table %s", value)
  182. db.Exec(drop_sql)
  183. }
  184. }
  185. // 重新创建表
  186. for _, value := range create_table {
  187. db.Exec(value)
  188. }
  189. for _, insertsql := range insert_table {
  190. db.Exec(insertsql)
  191. }
  192. }
  193. }