a.go 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819
  1. /*
  2. * Copyright (c) 2000-2018, 达梦数据库有限公司.
  3. * All rights reserved.
  4. */
  5. package dm
  6. import (
  7. "bytes"
  8. "crypto/tls"
  9. "fmt"
  10. "net"
  11. "strconv"
  12. "time"
  13. "unicode/utf8"
  14. "gitee.com/chunanyong/dm/security"
  15. )
  16. const (
  17. Dm_build_695 = 8192
  18. Dm_build_696 = 2 * time.Second
  19. )
  20. type dm_build_697 struct {
  21. dm_build_698 *net.TCPConn
  22. dm_build_699 *tls.Conn
  23. dm_build_700 *Dm_build_361
  24. dm_build_701 *DmConnection
  25. dm_build_702 security.Cipher
  26. dm_build_703 bool
  27. dm_build_704 bool
  28. dm_build_705 *security.DhKey
  29. dm_build_706 bool
  30. dm_build_707 string
  31. dm_build_708 bool
  32. }
  33. func dm_build_709(dm_build_710 *DmConnection) (*dm_build_697, error) {
  34. dm_build_711, dm_build_712 := dm_build_714(dm_build_710.dmConnector.host+":"+strconv.Itoa(int(dm_build_710.dmConnector.port)), time.Duration(dm_build_710.dmConnector.socketTimeout)*time.Second)
  35. if dm_build_712 != nil {
  36. return nil, dm_build_712
  37. }
  38. dm_build_713 := dm_build_697{}
  39. dm_build_713.dm_build_698 = dm_build_711
  40. dm_build_713.dm_build_700 = Dm_build_364(Dm_build_976)
  41. dm_build_713.dm_build_701 = dm_build_710
  42. dm_build_713.dm_build_703 = false
  43. dm_build_713.dm_build_704 = false
  44. dm_build_713.dm_build_706 = false
  45. dm_build_713.dm_build_707 = ""
  46. dm_build_713.dm_build_708 = false
  47. dm_build_710.Access = &dm_build_713
  48. return &dm_build_713, nil
  49. }
  50. func dm_build_714(dm_build_715 string, dm_build_716 time.Duration) (*net.TCPConn, error) {
  51. dm_build_717, dm_build_718 := net.DialTimeout("tcp", dm_build_715, dm_build_716)
  52. if dm_build_718 != nil {
  53. return nil, ECGO_COMMUNITION_ERROR.addDetail("\tdial address: " + dm_build_715).throw()
  54. }
  55. if tcpConn, ok := dm_build_717.(*net.TCPConn); ok {
  56. tcpConn.SetKeepAlive(true)
  57. tcpConn.SetKeepAlivePeriod(Dm_build_696)
  58. tcpConn.SetNoDelay(true)
  59. return tcpConn, nil
  60. }
  61. return nil, nil
  62. }
  63. func (dm_build_720 *dm_build_697) dm_build_719(dm_build_721 dm_build_1097) bool {
  64. var dm_build_722 = dm_build_720.dm_build_701.dmConnector.compress
  65. if dm_build_721.dm_build_1112() == Dm_build_1004 || dm_build_722 == Dm_build_1053 {
  66. return false
  67. }
  68. if dm_build_722 == Dm_build_1051 {
  69. return true
  70. } else if dm_build_722 == Dm_build_1052 {
  71. return !dm_build_720.dm_build_701.Local && dm_build_721.dm_build_1110() > Dm_build_1050
  72. }
  73. return false
  74. }
  75. func (dm_build_724 *dm_build_697) dm_build_723(dm_build_725 dm_build_1097) bool {
  76. var dm_build_726 = dm_build_724.dm_build_701.dmConnector.compress
  77. if dm_build_725.dm_build_1112() == Dm_build_1004 || dm_build_726 == Dm_build_1053 {
  78. return false
  79. }
  80. if dm_build_726 == Dm_build_1051 {
  81. return true
  82. } else if dm_build_726 == Dm_build_1052 {
  83. return dm_build_724.dm_build_700.Dm_build_628(Dm_build_1012) == 1
  84. }
  85. return false
  86. }
  87. func (dm_build_728 *dm_build_697) dm_build_727(dm_build_729 dm_build_1097) (err error) {
  88. defer func() {
  89. if p := recover(); p != nil {
  90. if _, ok := p.(string); ok {
  91. err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw()
  92. } else {
  93. err = fmt.Errorf("internal error: %v", p)
  94. }
  95. }
  96. }()
  97. dm_build_731 := dm_build_729.dm_build_1110()
  98. if dm_build_731 > 0 {
  99. if dm_build_728.dm_build_719(dm_build_729) {
  100. var retBytes, err = Compress(dm_build_728.dm_build_700, Dm_build_1005, int(dm_build_731), int(dm_build_728.dm_build_701.dmConnector.compressID))
  101. if err != nil {
  102. return err
  103. }
  104. dm_build_728.dm_build_700.Dm_build_375(Dm_build_1005)
  105. dm_build_728.dm_build_700.Dm_build_416(dm_build_731)
  106. dm_build_728.dm_build_700.Dm_build_444(retBytes)
  107. dm_build_729.dm_build_1111(int32(len(retBytes)) + ULINT_SIZE)
  108. dm_build_728.dm_build_700.Dm_build_548(Dm_build_1012, 1)
  109. }
  110. if dm_build_728.dm_build_704 {
  111. dm_build_731 = dm_build_729.dm_build_1110()
  112. var retBytes = dm_build_728.dm_build_702.Encrypt(dm_build_728.dm_build_700.Dm_build_655(Dm_build_1005, int(dm_build_731)), true)
  113. dm_build_728.dm_build_700.Dm_build_375(Dm_build_1005)
  114. dm_build_728.dm_build_700.Dm_build_444(retBytes)
  115. dm_build_729.dm_build_1111(int32(len(retBytes)))
  116. }
  117. }
  118. if dm_build_728.dm_build_700.Dm_build_373() > Dm_build_977 {
  119. return ECGO_MSG_TOO_LONG.throw()
  120. }
  121. dm_build_729.dm_build_1106()
  122. if dm_build_728.dm_build_959(dm_build_729) {
  123. if dm_build_728.dm_build_699 != nil {
  124. dm_build_728.dm_build_700.Dm_build_378(0)
  125. if _, err := dm_build_728.dm_build_700.Dm_build_397(dm_build_728.dm_build_699); err != nil {
  126. return err
  127. }
  128. }
  129. } else {
  130. dm_build_728.dm_build_700.Dm_build_378(0)
  131. if _, err := dm_build_728.dm_build_700.Dm_build_397(dm_build_728.dm_build_698); err != nil {
  132. return err
  133. }
  134. }
  135. return nil
  136. }
  137. func (dm_build_733 *dm_build_697) dm_build_732(dm_build_734 dm_build_1097) (err error) {
  138. defer func() {
  139. if p := recover(); p != nil {
  140. if _, ok := p.(string); ok {
  141. err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw()
  142. } else {
  143. err = fmt.Errorf("internal error: %v", p)
  144. }
  145. }
  146. }()
  147. dm_build_736 := int32(0)
  148. if dm_build_733.dm_build_959(dm_build_734) {
  149. if dm_build_733.dm_build_699 != nil {
  150. dm_build_733.dm_build_700.Dm_build_375(0)
  151. if _, err := dm_build_733.dm_build_700.Dm_build_391(dm_build_733.dm_build_699, Dm_build_1005); err != nil {
  152. return err
  153. }
  154. dm_build_736 = dm_build_734.dm_build_1110()
  155. if dm_build_736 > 0 {
  156. if _, err := dm_build_733.dm_build_700.Dm_build_391(dm_build_733.dm_build_699, int(dm_build_736)); err != nil {
  157. return err
  158. }
  159. }
  160. }
  161. } else {
  162. dm_build_733.dm_build_700.Dm_build_375(0)
  163. if _, err := dm_build_733.dm_build_700.Dm_build_391(dm_build_733.dm_build_698, Dm_build_1005); err != nil {
  164. return err
  165. }
  166. dm_build_736 = dm_build_734.dm_build_1110()
  167. if dm_build_736 > 0 {
  168. if _, err := dm_build_733.dm_build_700.Dm_build_391(dm_build_733.dm_build_698, int(dm_build_736)); err != nil {
  169. return err
  170. }
  171. }
  172. }
  173. dm_build_734.dm_build_1107()
  174. dm_build_736 = dm_build_734.dm_build_1110()
  175. if dm_build_736 <= 0 {
  176. return nil
  177. }
  178. if dm_build_733.dm_build_704 {
  179. ebytes := dm_build_733.dm_build_700.Dm_build_655(Dm_build_1005, int(dm_build_736))
  180. bytes, err := dm_build_733.dm_build_702.Decrypt(ebytes, true)
  181. if err != nil {
  182. return err
  183. }
  184. dm_build_733.dm_build_700.Dm_build_375(Dm_build_1005)
  185. dm_build_733.dm_build_700.Dm_build_444(bytes)
  186. dm_build_734.dm_build_1111(int32(len(bytes)))
  187. }
  188. if dm_build_733.dm_build_723(dm_build_734) {
  189. dm_build_736 = dm_build_734.dm_build_1110()
  190. cbytes := dm_build_733.dm_build_700.Dm_build_655(Dm_build_1005+ULINT_SIZE, int(dm_build_736-ULINT_SIZE))
  191. bytes, err := UnCompress(cbytes, int(dm_build_733.dm_build_701.dmConnector.compressID))
  192. if err != nil {
  193. return err
  194. }
  195. dm_build_733.dm_build_700.Dm_build_375(Dm_build_1005)
  196. dm_build_733.dm_build_700.Dm_build_444(bytes)
  197. dm_build_734.dm_build_1111(int32(len(bytes)))
  198. }
  199. return nil
  200. }
  201. func (dm_build_738 *dm_build_697) dm_build_737(dm_build_739 dm_build_1097) (dm_build_740 interface{}, dm_build_741 error) {
  202. dm_build_741 = dm_build_739.dm_build_1101(dm_build_739)
  203. if dm_build_741 != nil {
  204. return nil, dm_build_741
  205. }
  206. dm_build_741 = dm_build_738.dm_build_727(dm_build_739)
  207. if dm_build_741 != nil {
  208. return nil, dm_build_741
  209. }
  210. dm_build_741 = dm_build_738.dm_build_732(dm_build_739)
  211. if dm_build_741 != nil {
  212. return nil, dm_build_741
  213. }
  214. return dm_build_739.dm_build_1105(dm_build_739)
  215. }
  216. func (dm_build_743 *dm_build_697) dm_build_742() (*dm_build_1551, error) {
  217. Dm_build_744 := dm_build_1557(dm_build_743)
  218. _, dm_build_745 := dm_build_743.dm_build_737(Dm_build_744)
  219. if dm_build_745 != nil {
  220. return nil, dm_build_745
  221. }
  222. return Dm_build_744, nil
  223. }
  224. func (dm_build_747 *dm_build_697) dm_build_746() error {
  225. dm_build_748 := dm_build_1418(dm_build_747)
  226. _, dm_build_749 := dm_build_747.dm_build_737(dm_build_748)
  227. if dm_build_749 != nil {
  228. return dm_build_749
  229. }
  230. return nil
  231. }
  232. func (dm_build_751 *dm_build_697) dm_build_750() error {
  233. var dm_build_752 *dm_build_1551
  234. var err error
  235. if dm_build_752, err = dm_build_751.dm_build_742(); err != nil {
  236. return err
  237. }
  238. if dm_build_751.dm_build_701.sslEncrypt == 2 {
  239. if err = dm_build_751.dm_build_955(false); err != nil {
  240. return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw()
  241. }
  242. } else if dm_build_751.dm_build_701.sslEncrypt == 1 {
  243. if err = dm_build_751.dm_build_955(true); err != nil {
  244. return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw()
  245. }
  246. }
  247. if dm_build_751.dm_build_704 || dm_build_751.dm_build_703 {
  248. k, err := dm_build_751.dm_build_945()
  249. if err != nil {
  250. return err
  251. }
  252. sessionKey := security.ComputeSessionKey(k, dm_build_752.Dm_build_1555)
  253. encryptType := dm_build_752.dm_build_1553
  254. hashType := int(dm_build_752.Dm_build_1554)
  255. if encryptType == -1 {
  256. encryptType = security.DES_CFB
  257. }
  258. if hashType == -1 {
  259. hashType = security.MD5
  260. }
  261. err = dm_build_751.dm_build_948(encryptType, sessionKey, dm_build_751.dm_build_701.dmConnector.cipherPath, hashType)
  262. if err != nil {
  263. return err
  264. }
  265. }
  266. if err := dm_build_751.dm_build_746(); err != nil {
  267. return err
  268. }
  269. return nil
  270. }
  271. func (dm_build_755 *dm_build_697) Dm_build_754(dm_build_756 *DmStatement) error {
  272. dm_build_757 := dm_build_1580(dm_build_755, dm_build_756)
  273. _, dm_build_758 := dm_build_755.dm_build_737(dm_build_757)
  274. if dm_build_758 != nil {
  275. return dm_build_758
  276. }
  277. return nil
  278. }
  279. func (dm_build_760 *dm_build_697) Dm_build_759(dm_build_761 int32) error {
  280. dm_build_762 := dm_build_1590(dm_build_760, dm_build_761)
  281. _, dm_build_763 := dm_build_760.dm_build_737(dm_build_762)
  282. if dm_build_763 != nil {
  283. return dm_build_763
  284. }
  285. return nil
  286. }
  287. func (dm_build_765 *dm_build_697) Dm_build_764(dm_build_766 *DmStatement, dm_build_767 bool, dm_build_768 int16) (*execRetInfo, error) {
  288. dm_build_769 := dm_build_1457(dm_build_765, dm_build_766, dm_build_767, dm_build_768)
  289. dm_build_770, dm_build_771 := dm_build_765.dm_build_737(dm_build_769)
  290. if dm_build_771 != nil {
  291. return nil, dm_build_771
  292. }
  293. return dm_build_770.(*execRetInfo), nil
  294. }
  295. func (dm_build_773 *dm_build_697) Dm_build_772(dm_build_774 *DmStatement, dm_build_775 int16) (*execRetInfo, error) {
  296. return dm_build_773.Dm_build_764(dm_build_774, false, Dm_build_1057)
  297. }
  298. func (dm_build_777 *dm_build_697) Dm_build_776(dm_build_778 *DmStatement, dm_build_779 []OptParameter) (*execRetInfo, error) {
  299. dm_build_780, dm_build_781 := dm_build_777.dm_build_737(dm_build_1200(dm_build_777, dm_build_778, dm_build_779))
  300. if dm_build_781 != nil {
  301. return nil, dm_build_781
  302. }
  303. return dm_build_780.(*execRetInfo), nil
  304. }
  305. func (dm_build_783 *dm_build_697) Dm_build_782(dm_build_784 *DmStatement, dm_build_785 int16) (*execRetInfo, error) {
  306. return dm_build_783.Dm_build_764(dm_build_784, true, dm_build_785)
  307. }
  308. func (dm_build_787 *dm_build_697) Dm_build_786(dm_build_788 *DmStatement, dm_build_789 [][]interface{}) (*execRetInfo, error) {
  309. dm_build_790 := dm_build_1232(dm_build_787, dm_build_788, dm_build_789)
  310. dm_build_791, dm_build_792 := dm_build_787.dm_build_737(dm_build_790)
  311. if dm_build_792 != nil {
  312. return nil, dm_build_792
  313. }
  314. return dm_build_791.(*execRetInfo), nil
  315. }
  316. func (dm_build_794 *dm_build_697) Dm_build_793(dm_build_795 *DmStatement, dm_build_796 [][]interface{}, dm_build_797 bool) (*execRetInfo, error) {
  317. var dm_build_798, dm_build_799 = 0, 0
  318. var dm_build_800 = len(dm_build_796)
  319. var dm_build_801 [][]interface{}
  320. var dm_build_802 = NewExceInfo()
  321. dm_build_802.updateCounts = make([]int64, dm_build_800)
  322. var dm_build_803 = false
  323. for dm_build_798 < dm_build_800 {
  324. for dm_build_799 = dm_build_798; dm_build_799 < dm_build_800; dm_build_799++ {
  325. paramData := dm_build_796[dm_build_799]
  326. bindData := make([]interface{}, dm_build_795.paramCount)
  327. dm_build_803 = false
  328. for icol := 0; icol < int(dm_build_795.paramCount); icol++ {
  329. if dm_build_795.bindParams[icol].ioType == IO_TYPE_OUT {
  330. continue
  331. }
  332. if dm_build_794.dm_build_928(bindData, paramData, icol) {
  333. dm_build_803 = true
  334. break
  335. }
  336. }
  337. if dm_build_803 {
  338. break
  339. }
  340. dm_build_801 = append(dm_build_801, bindData)
  341. }
  342. if dm_build_799 != dm_build_798 {
  343. tmpExecInfo, err := dm_build_794.Dm_build_786(dm_build_795, dm_build_801)
  344. if err != nil {
  345. return nil, err
  346. }
  347. dm_build_801 = dm_build_801[0:0]
  348. dm_build_802.union(tmpExecInfo, dm_build_798, dm_build_799-dm_build_798)
  349. }
  350. if dm_build_799 < dm_build_800 {
  351. tmpExecInfo, err := dm_build_794.Dm_build_804(dm_build_795, dm_build_796[dm_build_799], dm_build_797)
  352. if err != nil {
  353. return nil, err
  354. }
  355. dm_build_797 = true
  356. dm_build_802.union(tmpExecInfo, dm_build_799, 1)
  357. }
  358. dm_build_798 = dm_build_799 + 1
  359. }
  360. for _, i := range dm_build_802.updateCounts {
  361. if i > 0 {
  362. dm_build_802.updateCount += i
  363. }
  364. }
  365. return dm_build_802, nil
  366. }
  367. func (dm_build_805 *dm_build_697) Dm_build_804(dm_build_806 *DmStatement, dm_build_807 []interface{}, dm_build_808 bool) (*execRetInfo, error) {
  368. var dm_build_809 = make([]interface{}, dm_build_806.paramCount)
  369. for icol := 0; icol < int(dm_build_806.paramCount); icol++ {
  370. if dm_build_806.bindParams[icol].ioType == IO_TYPE_OUT {
  371. continue
  372. }
  373. if dm_build_805.dm_build_928(dm_build_809, dm_build_807, icol) {
  374. if !dm_build_808 {
  375. preExecute := dm_build_1446(dm_build_805, dm_build_806, dm_build_806.bindParams)
  376. dm_build_805.dm_build_737(preExecute)
  377. dm_build_808 = true
  378. }
  379. dm_build_805.dm_build_934(dm_build_806, dm_build_806.bindParams[icol], icol, dm_build_807[icol].(iOffRowBinder))
  380. dm_build_809[icol] = ParamDataEnum_OFF_ROW
  381. }
  382. }
  383. var dm_build_810 = make([][]interface{}, 1, 1)
  384. dm_build_810[0] = dm_build_809
  385. dm_build_811 := dm_build_1232(dm_build_805, dm_build_806, dm_build_810)
  386. dm_build_812, dm_build_813 := dm_build_805.dm_build_737(dm_build_811)
  387. if dm_build_813 != nil {
  388. return nil, dm_build_813
  389. }
  390. return dm_build_812.(*execRetInfo), nil
  391. }
  392. func (dm_build_815 *dm_build_697) Dm_build_814(dm_build_816 *DmStatement, dm_build_817 int16) (*execRetInfo, error) {
  393. dm_build_818 := dm_build_1433(dm_build_815, dm_build_816, dm_build_817)
  394. dm_build_819, dm_build_820 := dm_build_815.dm_build_737(dm_build_818)
  395. if dm_build_820 != nil {
  396. return nil, dm_build_820
  397. }
  398. return dm_build_819.(*execRetInfo), nil
  399. }
  400. func (dm_build_822 *dm_build_697) Dm_build_821(dm_build_823 *innerRows, dm_build_824 int64) (*execRetInfo, error) {
  401. dm_build_825 := dm_build_1338(dm_build_822, dm_build_823, dm_build_824, INT64_MAX)
  402. dm_build_826, dm_build_827 := dm_build_822.dm_build_737(dm_build_825)
  403. if dm_build_827 != nil {
  404. return nil, dm_build_827
  405. }
  406. return dm_build_826.(*execRetInfo), nil
  407. }
  408. func (dm_build_829 *dm_build_697) Commit() error {
  409. dm_build_830 := dm_build_1185(dm_build_829)
  410. _, dm_build_831 := dm_build_829.dm_build_737(dm_build_830)
  411. if dm_build_831 != nil {
  412. return dm_build_831
  413. }
  414. return nil
  415. }
  416. func (dm_build_833 *dm_build_697) Rollback() error {
  417. dm_build_834 := dm_build_1495(dm_build_833)
  418. _, dm_build_835 := dm_build_833.dm_build_737(dm_build_834)
  419. if dm_build_835 != nil {
  420. return dm_build_835
  421. }
  422. return nil
  423. }
  424. func (dm_build_837 *dm_build_697) Dm_build_836(dm_build_838 *DmConnection) error {
  425. dm_build_839 := dm_build_1500(dm_build_837, dm_build_838.IsoLevel)
  426. _, dm_build_840 := dm_build_837.dm_build_737(dm_build_839)
  427. if dm_build_840 != nil {
  428. return dm_build_840
  429. }
  430. return nil
  431. }
  432. func (dm_build_842 *dm_build_697) Dm_build_841(dm_build_843 *DmStatement, dm_build_844 string) error {
  433. dm_build_845 := dm_build_1190(dm_build_842, dm_build_843, dm_build_844)
  434. _, dm_build_846 := dm_build_842.dm_build_737(dm_build_845)
  435. if dm_build_846 != nil {
  436. return dm_build_846
  437. }
  438. return nil
  439. }
  440. func (dm_build_848 *dm_build_697) Dm_build_847(dm_build_849 []uint32) ([]int64, error) {
  441. dm_build_850 := dm_build_1598(dm_build_848, dm_build_849)
  442. dm_build_851, dm_build_852 := dm_build_848.dm_build_737(dm_build_850)
  443. if dm_build_852 != nil {
  444. return nil, dm_build_852
  445. }
  446. return dm_build_851.([]int64), nil
  447. }
  448. func (dm_build_854 *dm_build_697) Close() error {
  449. if dm_build_854.dm_build_708 {
  450. return nil
  451. }
  452. dm_build_855 := dm_build_854.dm_build_698.Close()
  453. if dm_build_855 != nil {
  454. return dm_build_855
  455. }
  456. dm_build_854.dm_build_701 = nil
  457. dm_build_854.dm_build_708 = true
  458. return nil
  459. }
  460. func (dm_build_857 *dm_build_697) dm_build_856(dm_build_858 *lob) (int64, error) {
  461. dm_build_859 := dm_build_1369(dm_build_857, dm_build_858)
  462. dm_build_860, dm_build_861 := dm_build_857.dm_build_737(dm_build_859)
  463. if dm_build_861 != nil {
  464. return 0, dm_build_861
  465. }
  466. return dm_build_860.(int64), nil
  467. }
  468. func (dm_build_863 *dm_build_697) dm_build_862(dm_build_864 *lob, dm_build_865 int32, dm_build_866 int32) ([]byte, error) {
  469. dm_build_867 := dm_build_1356(dm_build_863, dm_build_864, int(dm_build_865), int(dm_build_866))
  470. dm_build_868, dm_build_869 := dm_build_863.dm_build_737(dm_build_867)
  471. if dm_build_869 != nil {
  472. return nil, dm_build_869
  473. }
  474. return dm_build_868.([]byte), nil
  475. }
  476. func (dm_build_871 *dm_build_697) dm_build_870(dm_build_872 *DmBlob, dm_build_873 int32, dm_build_874 int32) ([]byte, error) {
  477. var dm_build_875 = make([]byte, dm_build_874)
  478. var dm_build_876 int32 = 0
  479. var dm_build_877 int32 = 0
  480. var dm_build_878 []byte
  481. var dm_build_879 error
  482. for dm_build_876 < dm_build_874 {
  483. dm_build_877 = dm_build_874 - dm_build_876
  484. if dm_build_877 > Dm_build_1090 {
  485. dm_build_877 = Dm_build_1090
  486. }
  487. dm_build_878, dm_build_879 = dm_build_871.dm_build_862(&dm_build_872.lob, dm_build_873, dm_build_877)
  488. if dm_build_879 != nil {
  489. return nil, dm_build_879
  490. }
  491. if dm_build_878 == nil || len(dm_build_878) == 0 {
  492. break
  493. }
  494. Dm_build_1.Dm_build_57(dm_build_875, int(dm_build_876), dm_build_878, 0, len(dm_build_878))
  495. dm_build_876 += int32(len(dm_build_878))
  496. dm_build_873 += int32(len(dm_build_878))
  497. if dm_build_872.readOver {
  498. break
  499. }
  500. }
  501. return dm_build_875, nil
  502. }
  503. func (dm_build_881 *dm_build_697) dm_build_880(dm_build_882 *DmClob, dm_build_883 int32, dm_build_884 int32) (string, error) {
  504. var dm_build_885 bytes.Buffer
  505. var dm_build_886 int32 = 0
  506. var dm_build_887 int32 = 0
  507. var dm_build_888 []byte
  508. var dm_build_889 string
  509. var dm_build_890 error
  510. for dm_build_886 < dm_build_884 {
  511. dm_build_887 = dm_build_884 - dm_build_886
  512. if dm_build_887 > Dm_build_1090/2 {
  513. dm_build_887 = Dm_build_1090 / 2
  514. }
  515. dm_build_888, dm_build_890 = dm_build_881.dm_build_862(&dm_build_882.lob, dm_build_883, dm_build_887)
  516. if dm_build_890 != nil {
  517. return "", dm_build_890
  518. }
  519. if dm_build_888 == nil || len(dm_build_888) == 0 {
  520. break
  521. }
  522. dm_build_889 = Dm_build_1.Dm_build_158(dm_build_888, 0, len(dm_build_888), dm_build_882.serverEncoding, dm_build_881.dm_build_701)
  523. dm_build_885.WriteString(dm_build_889)
  524. strLen := utf8.RuneCountInString(dm_build_889)
  525. dm_build_886 += int32(strLen)
  526. dm_build_883 += int32(strLen)
  527. if dm_build_882.readOver {
  528. break
  529. }
  530. }
  531. return dm_build_885.String(), nil
  532. }
  533. func (dm_build_892 *dm_build_697) dm_build_891(dm_build_893 *DmClob, dm_build_894 int, dm_build_895 string, dm_build_896 string) (int, error) {
  534. var dm_build_897 = Dm_build_1.Dm_build_217(dm_build_895, dm_build_896, dm_build_892.dm_build_701)
  535. var dm_build_898 = 0
  536. var dm_build_899 = len(dm_build_897)
  537. var dm_build_900 = 0
  538. var dm_build_901 = 0
  539. var dm_build_902 = 0
  540. var dm_build_903 = dm_build_899/Dm_build_1089 + 1
  541. var dm_build_904 byte = 0
  542. var dm_build_905 byte = 0x01
  543. var dm_build_906 byte = 0x02
  544. for i := 0; i < dm_build_903; i++ {
  545. dm_build_904 = 0
  546. if i == 0 {
  547. dm_build_904 |= dm_build_905
  548. }
  549. if i == dm_build_903-1 {
  550. dm_build_904 |= dm_build_906
  551. }
  552. dm_build_902 = dm_build_899 - dm_build_901
  553. if dm_build_902 > Dm_build_1089 {
  554. dm_build_902 = Dm_build_1089
  555. }
  556. setLobData := dm_build_1514(dm_build_892, &dm_build_893.lob, dm_build_904, dm_build_894, dm_build_897, dm_build_898, dm_build_902)
  557. ret, err := dm_build_892.dm_build_737(setLobData)
  558. if err != nil {
  559. return 0, err
  560. }
  561. tmp := ret.(int32)
  562. if err != nil {
  563. return -1, err
  564. }
  565. if tmp <= 0 {
  566. return dm_build_900, nil
  567. } else {
  568. dm_build_894 += int(tmp)
  569. dm_build_900 += int(tmp)
  570. dm_build_901 += dm_build_902
  571. dm_build_898 += dm_build_902
  572. }
  573. }
  574. return dm_build_900, nil
  575. }
  576. func (dm_build_908 *dm_build_697) dm_build_907(dm_build_909 *DmBlob, dm_build_910 int, dm_build_911 []byte) (int, error) {
  577. var dm_build_912 = 0
  578. var dm_build_913 = len(dm_build_911)
  579. var dm_build_914 = 0
  580. var dm_build_915 = 0
  581. var dm_build_916 = 0
  582. var dm_build_917 = dm_build_913/Dm_build_1089 + 1
  583. var dm_build_918 byte = 0
  584. var dm_build_919 byte = 0x01
  585. var dm_build_920 byte = 0x02
  586. for i := 0; i < dm_build_917; i++ {
  587. dm_build_918 = 0
  588. if i == 0 {
  589. dm_build_918 |= dm_build_919
  590. }
  591. if i == dm_build_917-1 {
  592. dm_build_918 |= dm_build_920
  593. }
  594. dm_build_916 = dm_build_913 - dm_build_915
  595. if dm_build_916 > Dm_build_1089 {
  596. dm_build_916 = Dm_build_1089
  597. }
  598. setLobData := dm_build_1514(dm_build_908, &dm_build_909.lob, dm_build_918, dm_build_910, dm_build_911, dm_build_912, dm_build_916)
  599. ret, err := dm_build_908.dm_build_737(setLobData)
  600. if err != nil {
  601. return 0, err
  602. }
  603. tmp := ret.(int32)
  604. if tmp <= 0 {
  605. return dm_build_914, nil
  606. } else {
  607. dm_build_910 += int(tmp)
  608. dm_build_914 += int(tmp)
  609. dm_build_915 += dm_build_916
  610. dm_build_912 += dm_build_916
  611. }
  612. }
  613. return dm_build_914, nil
  614. }
  615. func (dm_build_922 *dm_build_697) dm_build_921(dm_build_923 *lob, dm_build_924 int) (int64, error) {
  616. dm_build_925 := dm_build_1380(dm_build_922, dm_build_923, dm_build_924)
  617. dm_build_926, dm_build_927 := dm_build_922.dm_build_737(dm_build_925)
  618. if dm_build_927 != nil {
  619. return dm_build_923.length, dm_build_927
  620. }
  621. return dm_build_926.(int64), nil
  622. }
  623. func (dm_build_929 *dm_build_697) dm_build_928(dm_build_930 []interface{}, dm_build_931 []interface{}, dm_build_932 int) bool {
  624. var dm_build_933 = false
  625. dm_build_930[dm_build_932] = dm_build_931[dm_build_932]
  626. if binder, ok := dm_build_931[dm_build_932].(iOffRowBinder); ok {
  627. dm_build_933 = true
  628. dm_build_930[dm_build_932] = make([]byte, 0)
  629. var lob lob
  630. if l, ok := binder.getObj().(DmBlob); ok {
  631. lob = l.lob
  632. } else if l, ok := binder.getObj().(DmClob); ok {
  633. lob = l.lob
  634. }
  635. if &lob != nil && lob.canOptimized(dm_build_929.dm_build_701) {
  636. dm_build_930[dm_build_932] = &lobCtl{lob.buildCtlData()}
  637. dm_build_933 = false
  638. }
  639. } else {
  640. dm_build_930[dm_build_932] = dm_build_931[dm_build_932]
  641. }
  642. return dm_build_933
  643. }
  644. func (dm_build_935 *dm_build_697) dm_build_934(dm_build_936 *DmStatement, dm_build_937 parameter, dm_build_938 int, dm_build_939 iOffRowBinder) error {
  645. var dm_build_940 = Dm_build_287()
  646. dm_build_939.read(dm_build_940)
  647. var dm_build_941 = 0
  648. for !dm_build_939.isReadOver() || dm_build_940.Dm_build_288() > 0 {
  649. if !dm_build_939.isReadOver() && dm_build_940.Dm_build_288() < Dm_build_1089 {
  650. dm_build_939.read(dm_build_940)
  651. }
  652. if dm_build_940.Dm_build_288() > Dm_build_1089 {
  653. dm_build_941 = Dm_build_1089
  654. } else {
  655. dm_build_941 = dm_build_940.Dm_build_288()
  656. }
  657. putData := dm_build_1485(dm_build_935, dm_build_936, int16(dm_build_938), dm_build_940, int32(dm_build_941))
  658. _, err := dm_build_935.dm_build_737(putData)
  659. if err != nil {
  660. return err
  661. }
  662. }
  663. return nil
  664. }
  665. func (dm_build_943 *dm_build_697) dm_build_942() ([]byte, error) {
  666. var dm_build_944 error
  667. if dm_build_943.dm_build_705 == nil {
  668. if dm_build_943.dm_build_705, dm_build_944 = security.NewClientKeyPair(); dm_build_944 != nil {
  669. return nil, dm_build_944
  670. }
  671. }
  672. return security.Bn2Bytes(dm_build_943.dm_build_705.GetY(), security.DH_KEY_LENGTH), nil
  673. }
  674. func (dm_build_946 *dm_build_697) dm_build_945() (*security.DhKey, error) {
  675. var dm_build_947 error
  676. if dm_build_946.dm_build_705 == nil {
  677. if dm_build_946.dm_build_705, dm_build_947 = security.NewClientKeyPair(); dm_build_947 != nil {
  678. return nil, dm_build_947
  679. }
  680. }
  681. return dm_build_946.dm_build_705, nil
  682. }
  683. func (dm_build_949 *dm_build_697) dm_build_948(dm_build_950 int, dm_build_951 []byte, dm_build_952 string, dm_build_953 int) (dm_build_954 error) {
  684. if dm_build_950 > 0 && dm_build_950 < security.MIN_EXTERNAL_CIPHER_ID && dm_build_951 != nil {
  685. dm_build_949.dm_build_702, dm_build_954 = security.NewSymmCipher(dm_build_950, dm_build_951)
  686. } else if dm_build_950 >= security.MIN_EXTERNAL_CIPHER_ID {
  687. if dm_build_949.dm_build_702, dm_build_954 = security.NewThirdPartCipher(dm_build_950, dm_build_951, dm_build_952, dm_build_953); dm_build_954 != nil {
  688. dm_build_954 = THIRD_PART_CIPHER_INIT_FAILED.addDetailln(dm_build_954.Error()).throw()
  689. }
  690. }
  691. return
  692. }
  693. func (dm_build_956 *dm_build_697) dm_build_955(dm_build_957 bool) (dm_build_958 error) {
  694. if dm_build_956.dm_build_699, dm_build_958 = security.NewTLSFromTCP(dm_build_956.dm_build_698, dm_build_956.dm_build_701.dmConnector.sslCertPath, dm_build_956.dm_build_701.dmConnector.sslKeyPath, dm_build_956.dm_build_701.dmConnector.user); dm_build_958 != nil {
  695. return
  696. }
  697. if !dm_build_957 {
  698. dm_build_956.dm_build_699 = nil
  699. }
  700. return
  701. }
  702. func (dm_build_960 *dm_build_697) dm_build_959(dm_build_961 dm_build_1097) bool {
  703. return dm_build_961.dm_build_1112() != Dm_build_1004 && dm_build_960.dm_build_701.sslEncrypt == 1
  704. }