a.go 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. /*
  2. * Copyright (c) 2000-2018, 达梦数据库有限公司.
  3. * All rights reserved.
  4. */
  5. package dm
  6. import (
  7. "bytes"
  8. "context"
  9. "crypto/tls"
  10. "fmt"
  11. "net"
  12. "strconv"
  13. "time"
  14. "unicode/utf8"
  15. "gitee.com/chunanyong/dm/security"
  16. )
  17. const (
  18. Dm_build_1343 = 8192
  19. Dm_build_1344 = 2 * time.Second
  20. )
  21. type dm_build_1345 struct {
  22. dm_build_1346 net.Conn
  23. dm_build_1347 *tls.Conn
  24. dm_build_1348 *Dm_build_1009
  25. dm_build_1349 *DmConnection
  26. dm_build_1350 security.Cipher
  27. dm_build_1351 bool
  28. dm_build_1352 bool
  29. dm_build_1353 *security.DhKey
  30. dm_build_1354 bool
  31. dm_build_1355 string
  32. dm_build_1356 bool
  33. }
  34. func dm_build_1357(dm_build_1358 context.Context, dm_build_1359 *DmConnection) (*dm_build_1345, error) {
  35. var dm_build_1360 net.Conn
  36. var dm_build_1361 error
  37. dialsLock.RLock()
  38. dm_build_1362, dm_build_1363 := dials[dm_build_1359.dmConnector.dialName]
  39. dialsLock.RUnlock()
  40. if dm_build_1363 {
  41. dm_build_1360, dm_build_1361 = dm_build_1362(dm_build_1358, dm_build_1359.dmConnector.host+":"+strconv.Itoa(int(dm_build_1359.dmConnector.port)))
  42. } else {
  43. dm_build_1360, dm_build_1361 = dm_build_1365(dm_build_1359.dmConnector.host+":"+strconv.Itoa(int(dm_build_1359.dmConnector.port)), time.Duration(dm_build_1359.dmConnector.socketTimeout)*time.Second)
  44. }
  45. if dm_build_1361 != nil {
  46. return nil, dm_build_1361
  47. }
  48. dm_build_1364 := dm_build_1345{}
  49. dm_build_1364.dm_build_1346 = dm_build_1360
  50. dm_build_1364.dm_build_1348 = Dm_build_1012(Dm_build_14)
  51. dm_build_1364.dm_build_1349 = dm_build_1359
  52. dm_build_1364.dm_build_1351 = false
  53. dm_build_1364.dm_build_1352 = false
  54. dm_build_1364.dm_build_1354 = false
  55. dm_build_1364.dm_build_1355 = ""
  56. dm_build_1364.dm_build_1356 = false
  57. dm_build_1359.Access = &dm_build_1364
  58. return &dm_build_1364, nil
  59. }
  60. func dm_build_1365(dm_build_1366 string, dm_build_1367 time.Duration) (net.Conn, error) {
  61. dm_build_1368, dm_build_1369 := net.DialTimeout("tcp", dm_build_1366, dm_build_1367)
  62. if dm_build_1369 != nil {
  63. return &net.TCPConn{}, ECGO_COMMUNITION_ERROR.addDetail("\tdial address: " + dm_build_1366).throw()
  64. }
  65. if tcpConn, ok := dm_build_1368.(*net.TCPConn); ok {
  66. tcpConn.SetKeepAlive(true)
  67. tcpConn.SetKeepAlivePeriod(Dm_build_1344)
  68. tcpConn.SetNoDelay(true)
  69. }
  70. return dm_build_1368, nil
  71. }
  72. func (dm_build_1371 *dm_build_1345) dm_build_1370(dm_build_1372 dm_build_135) bool {
  73. var dm_build_1373 = dm_build_1371.dm_build_1349.dmConnector.compress
  74. if dm_build_1372.dm_build_150() == Dm_build_42 || dm_build_1373 == Dm_build_91 {
  75. return false
  76. }
  77. if dm_build_1373 == Dm_build_89 {
  78. return true
  79. } else if dm_build_1373 == Dm_build_90 {
  80. return !dm_build_1371.dm_build_1349.Local && dm_build_1372.dm_build_148() > Dm_build_88
  81. }
  82. return false
  83. }
  84. func (dm_build_1375 *dm_build_1345) dm_build_1374(dm_build_1376 dm_build_135) bool {
  85. var dm_build_1377 = dm_build_1375.dm_build_1349.dmConnector.compress
  86. if dm_build_1376.dm_build_150() == Dm_build_42 || dm_build_1377 == Dm_build_91 {
  87. return false
  88. }
  89. if dm_build_1377 == Dm_build_89 {
  90. return true
  91. } else if dm_build_1377 == Dm_build_90 {
  92. return dm_build_1375.dm_build_1348.Dm_build_1276(Dm_build_50) == 1
  93. }
  94. return false
  95. }
  96. func (dm_build_1379 *dm_build_1345) dm_build_1378(dm_build_1380 dm_build_135) (err error) {
  97. defer func() {
  98. if p := recover(); p != nil {
  99. if _, ok := p.(string); ok {
  100. err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw()
  101. } else {
  102. err = fmt.Errorf("internal error: %v", p)
  103. }
  104. }
  105. }()
  106. dm_build_1382 := dm_build_1380.dm_build_148()
  107. if dm_build_1382 > 0 {
  108. if dm_build_1379.dm_build_1370(dm_build_1380) {
  109. var retBytes, err = Compress(dm_build_1379.dm_build_1348, Dm_build_43, int(dm_build_1382), int(dm_build_1379.dm_build_1349.dmConnector.compressID))
  110. if err != nil {
  111. return err
  112. }
  113. dm_build_1379.dm_build_1348.Dm_build_1023(Dm_build_43)
  114. dm_build_1379.dm_build_1348.Dm_build_1064(dm_build_1382)
  115. dm_build_1379.dm_build_1348.Dm_build_1092(retBytes)
  116. dm_build_1380.dm_build_149(int32(len(retBytes)) + ULINT_SIZE)
  117. dm_build_1379.dm_build_1348.Dm_build_1196(Dm_build_50, 1)
  118. }
  119. if dm_build_1379.dm_build_1352 {
  120. dm_build_1382 = dm_build_1380.dm_build_148()
  121. var retBytes = dm_build_1379.dm_build_1350.Encrypt(dm_build_1379.dm_build_1348.Dm_build_1303(Dm_build_43, int(dm_build_1382)), true)
  122. dm_build_1379.dm_build_1348.Dm_build_1023(Dm_build_43)
  123. dm_build_1379.dm_build_1348.Dm_build_1092(retBytes)
  124. dm_build_1380.dm_build_149(int32(len(retBytes)))
  125. }
  126. }
  127. if dm_build_1379.dm_build_1348.Dm_build_1021() > Dm_build_15 {
  128. return ECGO_MSG_TOO_LONG.throw()
  129. }
  130. dm_build_1380.dm_build_144()
  131. if dm_build_1379.dm_build_1613(dm_build_1380) {
  132. if dm_build_1379.dm_build_1347 != nil {
  133. dm_build_1379.dm_build_1348.Dm_build_1026(0)
  134. if _, err := dm_build_1379.dm_build_1348.Dm_build_1045(dm_build_1379.dm_build_1347); err != nil {
  135. return err
  136. }
  137. }
  138. } else {
  139. dm_build_1379.dm_build_1348.Dm_build_1026(0)
  140. if _, err := dm_build_1379.dm_build_1348.Dm_build_1045(dm_build_1379.dm_build_1346); err != nil {
  141. return err
  142. }
  143. }
  144. return nil
  145. }
  146. func (dm_build_1384 *dm_build_1345) dm_build_1383(dm_build_1385 dm_build_135) (err error) {
  147. defer func() {
  148. if p := recover(); p != nil {
  149. if _, ok := p.(string); ok {
  150. err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw()
  151. } else {
  152. err = fmt.Errorf("internal error: %v", p)
  153. }
  154. }
  155. }()
  156. dm_build_1387 := int32(0)
  157. if dm_build_1384.dm_build_1613(dm_build_1385) {
  158. if dm_build_1384.dm_build_1347 != nil {
  159. dm_build_1384.dm_build_1348.Dm_build_1023(0)
  160. if _, err := dm_build_1384.dm_build_1348.Dm_build_1039(dm_build_1384.dm_build_1347, Dm_build_43); err != nil {
  161. return err
  162. }
  163. dm_build_1387 = dm_build_1385.dm_build_148()
  164. if dm_build_1387 > 0 {
  165. if _, err := dm_build_1384.dm_build_1348.Dm_build_1039(dm_build_1384.dm_build_1347, int(dm_build_1387)); err != nil {
  166. return err
  167. }
  168. }
  169. }
  170. } else {
  171. dm_build_1384.dm_build_1348.Dm_build_1023(0)
  172. if _, err := dm_build_1384.dm_build_1348.Dm_build_1039(dm_build_1384.dm_build_1346, Dm_build_43); err != nil {
  173. return err
  174. }
  175. dm_build_1387 = dm_build_1385.dm_build_148()
  176. if dm_build_1387 > 0 {
  177. if _, err := dm_build_1384.dm_build_1348.Dm_build_1039(dm_build_1384.dm_build_1346, int(dm_build_1387)); err != nil {
  178. return err
  179. }
  180. }
  181. }
  182. dm_build_1385.dm_build_145()
  183. dm_build_1387 = dm_build_1385.dm_build_148()
  184. if dm_build_1387 <= 0 {
  185. return nil
  186. }
  187. if dm_build_1384.dm_build_1352 {
  188. ebytes := dm_build_1384.dm_build_1348.Dm_build_1303(Dm_build_43, int(dm_build_1387))
  189. bytes, err := dm_build_1384.dm_build_1350.Decrypt(ebytes, true)
  190. if err != nil {
  191. return err
  192. }
  193. dm_build_1384.dm_build_1348.Dm_build_1023(Dm_build_43)
  194. dm_build_1384.dm_build_1348.Dm_build_1092(bytes)
  195. dm_build_1385.dm_build_149(int32(len(bytes)))
  196. }
  197. if dm_build_1384.dm_build_1374(dm_build_1385) {
  198. dm_build_1387 = dm_build_1385.dm_build_148()
  199. cbytes := dm_build_1384.dm_build_1348.Dm_build_1303(Dm_build_43+ULINT_SIZE, int(dm_build_1387-ULINT_SIZE))
  200. bytes, err := UnCompress(cbytes, int(dm_build_1384.dm_build_1349.dmConnector.compressID))
  201. if err != nil {
  202. return err
  203. }
  204. dm_build_1384.dm_build_1348.Dm_build_1023(Dm_build_43)
  205. dm_build_1384.dm_build_1348.Dm_build_1092(bytes)
  206. dm_build_1385.dm_build_149(int32(len(bytes)))
  207. }
  208. return nil
  209. }
  210. func (dm_build_1389 *dm_build_1345) dm_build_1388(dm_build_1390 dm_build_135) (dm_build_1391 interface{}, dm_build_1392 error) {
  211. if dm_build_1389.dm_build_1356 {
  212. return nil, ECGO_CONNECTION_CLOSED.throw()
  213. }
  214. dm_build_1393 := dm_build_1389.dm_build_1349
  215. dm_build_1393.mu.Lock()
  216. defer dm_build_1393.mu.Unlock()
  217. dm_build_1392 = dm_build_1390.dm_build_139(dm_build_1390)
  218. if dm_build_1392 != nil {
  219. return nil, dm_build_1392
  220. }
  221. dm_build_1392 = dm_build_1389.dm_build_1378(dm_build_1390)
  222. if dm_build_1392 != nil {
  223. return nil, dm_build_1392
  224. }
  225. dm_build_1392 = dm_build_1389.dm_build_1383(dm_build_1390)
  226. if dm_build_1392 != nil {
  227. return nil, dm_build_1392
  228. }
  229. return dm_build_1390.dm_build_143(dm_build_1390)
  230. }
  231. func (dm_build_1395 *dm_build_1345) dm_build_1394() (*dm_build_592, error) {
  232. Dm_build_1396 := dm_build_598(dm_build_1395)
  233. _, dm_build_1397 := dm_build_1395.dm_build_1388(Dm_build_1396)
  234. if dm_build_1397 != nil {
  235. return nil, dm_build_1397
  236. }
  237. return Dm_build_1396, nil
  238. }
  239. func (dm_build_1399 *dm_build_1345) dm_build_1398() error {
  240. dm_build_1400 := dm_build_459(dm_build_1399)
  241. _, dm_build_1401 := dm_build_1399.dm_build_1388(dm_build_1400)
  242. if dm_build_1401 != nil {
  243. return dm_build_1401
  244. }
  245. return nil
  246. }
  247. func (dm_build_1403 *dm_build_1345) dm_build_1402() error {
  248. var dm_build_1404 *dm_build_592
  249. var err error
  250. if dm_build_1404, err = dm_build_1403.dm_build_1394(); err != nil {
  251. return err
  252. }
  253. if dm_build_1403.dm_build_1349.sslEncrypt == 2 {
  254. if err = dm_build_1403.dm_build_1609(false); err != nil {
  255. return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw()
  256. }
  257. } else if dm_build_1403.dm_build_1349.sslEncrypt == 1 {
  258. if err = dm_build_1403.dm_build_1609(true); err != nil {
  259. return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw()
  260. }
  261. }
  262. if dm_build_1403.dm_build_1352 || dm_build_1403.dm_build_1351 {
  263. k, err := dm_build_1403.dm_build_1599()
  264. if err != nil {
  265. return err
  266. }
  267. sessionKey := security.ComputeSessionKey(k, dm_build_1404.Dm_build_596)
  268. encryptType := dm_build_1404.dm_build_594
  269. hashType := int(dm_build_1404.Dm_build_595)
  270. if encryptType == -1 {
  271. encryptType = security.DES_CFB
  272. }
  273. if hashType == -1 {
  274. hashType = security.MD5
  275. }
  276. err = dm_build_1403.dm_build_1602(encryptType, sessionKey, dm_build_1403.dm_build_1349.dmConnector.cipherPath, hashType)
  277. if err != nil {
  278. return err
  279. }
  280. }
  281. if err := dm_build_1403.dm_build_1398(); err != nil {
  282. return err
  283. }
  284. return nil
  285. }
  286. func (dm_build_1407 *dm_build_1345) Dm_build_1406(dm_build_1408 *DmStatement) error {
  287. dm_build_1409 := dm_build_621(dm_build_1407, dm_build_1408)
  288. _, dm_build_1410 := dm_build_1407.dm_build_1388(dm_build_1409)
  289. if dm_build_1410 != nil {
  290. return dm_build_1410
  291. }
  292. return nil
  293. }
  294. func (dm_build_1412 *dm_build_1345) Dm_build_1411(dm_build_1413 int32) error {
  295. dm_build_1414 := dm_build_631(dm_build_1412, dm_build_1413)
  296. _, dm_build_1415 := dm_build_1412.dm_build_1388(dm_build_1414)
  297. if dm_build_1415 != nil {
  298. return dm_build_1415
  299. }
  300. return nil
  301. }
  302. func (dm_build_1417 *dm_build_1345) Dm_build_1416(dm_build_1418 *DmStatement, dm_build_1419 bool, dm_build_1420 int16) (*execRetInfo, error) {
  303. dm_build_1421 := dm_build_498(dm_build_1417, dm_build_1418, dm_build_1419, dm_build_1420)
  304. dm_build_1422, dm_build_1423 := dm_build_1417.dm_build_1388(dm_build_1421)
  305. if dm_build_1423 != nil {
  306. return nil, dm_build_1423
  307. }
  308. return dm_build_1422.(*execRetInfo), nil
  309. }
  310. func (dm_build_1425 *dm_build_1345) Dm_build_1424(dm_build_1426 *DmStatement, dm_build_1427 int16) (*execRetInfo, error) {
  311. return dm_build_1425.Dm_build_1416(dm_build_1426, false, Dm_build_95)
  312. }
  313. func (dm_build_1429 *dm_build_1345) Dm_build_1428(dm_build_1430 *DmStatement, dm_build_1431 []OptParameter) (*execRetInfo, error) {
  314. dm_build_1432, dm_build_1433 := dm_build_1429.dm_build_1388(dm_build_238(dm_build_1429, dm_build_1430, dm_build_1431))
  315. if dm_build_1433 != nil {
  316. return nil, dm_build_1433
  317. }
  318. return dm_build_1432.(*execRetInfo), nil
  319. }
  320. func (dm_build_1435 *dm_build_1345) Dm_build_1434(dm_build_1436 *DmStatement, dm_build_1437 int16) (*execRetInfo, error) {
  321. return dm_build_1435.Dm_build_1416(dm_build_1436, true, dm_build_1437)
  322. }
  323. func (dm_build_1439 *dm_build_1345) Dm_build_1438(dm_build_1440 *DmStatement, dm_build_1441 [][]interface{}) (*execRetInfo, error) {
  324. dm_build_1442 := dm_build_270(dm_build_1439, dm_build_1440, dm_build_1441)
  325. dm_build_1443, dm_build_1444 := dm_build_1439.dm_build_1388(dm_build_1442)
  326. if dm_build_1444 != nil {
  327. return nil, dm_build_1444
  328. }
  329. return dm_build_1443.(*execRetInfo), nil
  330. }
  331. func (dm_build_1446 *dm_build_1345) Dm_build_1445(dm_build_1447 *DmStatement, dm_build_1448 [][]interface{}, dm_build_1449 bool) (*execRetInfo, error) {
  332. var dm_build_1450, dm_build_1451 = 0, 0
  333. var dm_build_1452 = len(dm_build_1448)
  334. var dm_build_1453 [][]interface{}
  335. var dm_build_1454 = NewExceInfo()
  336. dm_build_1454.updateCounts = make([]int64, dm_build_1452)
  337. var dm_build_1455 = false
  338. for dm_build_1450 < dm_build_1452 {
  339. for dm_build_1451 = dm_build_1450; dm_build_1451 < dm_build_1452; dm_build_1451++ {
  340. paramData := dm_build_1448[dm_build_1451]
  341. bindData := make([]interface{}, dm_build_1447.paramCount)
  342. dm_build_1455 = false
  343. for icol := 0; icol < int(dm_build_1447.paramCount); icol++ {
  344. if dm_build_1447.bindParams[icol].ioType == IO_TYPE_OUT {
  345. continue
  346. }
  347. if dm_build_1446.dm_build_1582(bindData, paramData, icol) {
  348. dm_build_1455 = true
  349. break
  350. }
  351. }
  352. if dm_build_1455 {
  353. break
  354. }
  355. dm_build_1453 = append(dm_build_1453, bindData)
  356. }
  357. if dm_build_1451 != dm_build_1450 {
  358. tmpExecInfo, err := dm_build_1446.Dm_build_1438(dm_build_1447, dm_build_1453)
  359. if err != nil {
  360. return nil, err
  361. }
  362. dm_build_1453 = dm_build_1453[0:0]
  363. dm_build_1454.union(tmpExecInfo, dm_build_1450, dm_build_1451-dm_build_1450)
  364. }
  365. if dm_build_1451 < dm_build_1452 {
  366. tmpExecInfo, err := dm_build_1446.Dm_build_1456(dm_build_1447, dm_build_1448[dm_build_1451], dm_build_1449)
  367. if err != nil {
  368. return nil, err
  369. }
  370. dm_build_1449 = true
  371. dm_build_1454.union(tmpExecInfo, dm_build_1451, 1)
  372. }
  373. dm_build_1450 = dm_build_1451 + 1
  374. }
  375. for _, i := range dm_build_1454.updateCounts {
  376. if i > 0 {
  377. dm_build_1454.updateCount += i
  378. }
  379. }
  380. return dm_build_1454, nil
  381. }
  382. func (dm_build_1457 *dm_build_1345) Dm_build_1456(dm_build_1458 *DmStatement, dm_build_1459 []interface{}, dm_build_1460 bool) (*execRetInfo, error) {
  383. var dm_build_1461 = make([]interface{}, dm_build_1458.paramCount)
  384. for icol := 0; icol < int(dm_build_1458.paramCount); icol++ {
  385. if dm_build_1458.bindParams[icol].ioType == IO_TYPE_OUT {
  386. continue
  387. }
  388. if dm_build_1457.dm_build_1582(dm_build_1461, dm_build_1459, icol) {
  389. if !dm_build_1460 {
  390. preExecute := dm_build_487(dm_build_1457, dm_build_1458, dm_build_1458.bindParams)
  391. dm_build_1457.dm_build_1388(preExecute)
  392. dm_build_1460 = true
  393. }
  394. dm_build_1457.dm_build_1588(dm_build_1458, dm_build_1458.bindParams[icol], icol, dm_build_1459[icol].(iOffRowBinder))
  395. dm_build_1461[icol] = ParamDataEnum_OFF_ROW
  396. }
  397. }
  398. var dm_build_1462 = make([][]interface{}, 1, 1)
  399. dm_build_1462[0] = dm_build_1461
  400. dm_build_1463 := dm_build_270(dm_build_1457, dm_build_1458, dm_build_1462)
  401. dm_build_1464, dm_build_1465 := dm_build_1457.dm_build_1388(dm_build_1463)
  402. if dm_build_1465 != nil {
  403. return nil, dm_build_1465
  404. }
  405. return dm_build_1464.(*execRetInfo), nil
  406. }
  407. func (dm_build_1467 *dm_build_1345) Dm_build_1466(dm_build_1468 *DmStatement, dm_build_1469 int16) (*execRetInfo, error) {
  408. dm_build_1470 := dm_build_474(dm_build_1467, dm_build_1468, dm_build_1469)
  409. dm_build_1471, dm_build_1472 := dm_build_1467.dm_build_1388(dm_build_1470)
  410. if dm_build_1472 != nil {
  411. return nil, dm_build_1472
  412. }
  413. return dm_build_1471.(*execRetInfo), nil
  414. }
  415. func (dm_build_1474 *dm_build_1345) Dm_build_1473(dm_build_1475 *innerRows, dm_build_1476 int64) (*execRetInfo, error) {
  416. dm_build_1477 := dm_build_377(dm_build_1474, dm_build_1475, dm_build_1476, INT64_MAX)
  417. dm_build_1478, dm_build_1479 := dm_build_1474.dm_build_1388(dm_build_1477)
  418. if dm_build_1479 != nil {
  419. return nil, dm_build_1479
  420. }
  421. return dm_build_1478.(*execRetInfo), nil
  422. }
  423. func (dm_build_1481 *dm_build_1345) Commit() error {
  424. dm_build_1482 := dm_build_223(dm_build_1481)
  425. _, dm_build_1483 := dm_build_1481.dm_build_1388(dm_build_1482)
  426. if dm_build_1483 != nil {
  427. return dm_build_1483
  428. }
  429. return nil
  430. }
  431. func (dm_build_1485 *dm_build_1345) Rollback() error {
  432. dm_build_1486 := dm_build_536(dm_build_1485)
  433. _, dm_build_1487 := dm_build_1485.dm_build_1388(dm_build_1486)
  434. if dm_build_1487 != nil {
  435. return dm_build_1487
  436. }
  437. return nil
  438. }
  439. func (dm_build_1489 *dm_build_1345) Dm_build_1488(dm_build_1490 *DmConnection) error {
  440. dm_build_1491 := dm_build_541(dm_build_1489, dm_build_1490.IsoLevel)
  441. _, dm_build_1492 := dm_build_1489.dm_build_1388(dm_build_1491)
  442. if dm_build_1492 != nil {
  443. return dm_build_1492
  444. }
  445. return nil
  446. }
  447. func (dm_build_1494 *dm_build_1345) Dm_build_1493(dm_build_1495 *DmStatement, dm_build_1496 string) error {
  448. dm_build_1497 := dm_build_228(dm_build_1494, dm_build_1495, dm_build_1496)
  449. _, dm_build_1498 := dm_build_1494.dm_build_1388(dm_build_1497)
  450. if dm_build_1498 != nil {
  451. return dm_build_1498
  452. }
  453. return nil
  454. }
  455. func (dm_build_1500 *dm_build_1345) Dm_build_1499(dm_build_1501 []uint32) ([]int64, error) {
  456. dm_build_1502 := dm_build_639(dm_build_1500, dm_build_1501)
  457. dm_build_1503, dm_build_1504 := dm_build_1500.dm_build_1388(dm_build_1502)
  458. if dm_build_1504 != nil {
  459. return nil, dm_build_1504
  460. }
  461. return dm_build_1503.([]int64), nil
  462. }
  463. func (dm_build_1506 *dm_build_1345) Close() error {
  464. if dm_build_1506.dm_build_1356 {
  465. return nil
  466. }
  467. dm_build_1507 := dm_build_1506.dm_build_1346.Close()
  468. if dm_build_1507 != nil {
  469. return dm_build_1507
  470. }
  471. dm_build_1506.dm_build_1349 = nil
  472. dm_build_1506.dm_build_1356 = true
  473. return nil
  474. }
  475. func (dm_build_1509 *dm_build_1345) dm_build_1508(dm_build_1510 *lob) (int64, error) {
  476. dm_build_1511 := dm_build_410(dm_build_1509, dm_build_1510)
  477. dm_build_1512, dm_build_1513 := dm_build_1509.dm_build_1388(dm_build_1511)
  478. if dm_build_1513 != nil {
  479. return 0, dm_build_1513
  480. }
  481. return dm_build_1512.(int64), nil
  482. }
  483. func (dm_build_1515 *dm_build_1345) dm_build_1514(dm_build_1516 *lob, dm_build_1517 int32, dm_build_1518 int32) (*lobRetInfo, error) {
  484. dm_build_1519 := dm_build_395(dm_build_1515, dm_build_1516, int(dm_build_1517), int(dm_build_1518))
  485. dm_build_1520, dm_build_1521 := dm_build_1515.dm_build_1388(dm_build_1519)
  486. if dm_build_1521 != nil {
  487. return nil, dm_build_1521
  488. }
  489. return dm_build_1520.(*lobRetInfo), nil
  490. }
  491. func (dm_build_1523 *dm_build_1345) dm_build_1522(dm_build_1524 *DmBlob, dm_build_1525 int32, dm_build_1526 int32) ([]byte, error) {
  492. var dm_build_1527 = make([]byte, dm_build_1526)
  493. var dm_build_1528 int32 = 0
  494. var dm_build_1529 int32 = 0
  495. var dm_build_1530 *lobRetInfo
  496. var dm_build_1531 []byte
  497. var dm_build_1532 error
  498. for dm_build_1528 < dm_build_1526 {
  499. dm_build_1529 = dm_build_1526 - dm_build_1528
  500. if dm_build_1529 > Dm_build_128 {
  501. dm_build_1529 = Dm_build_128
  502. }
  503. dm_build_1530, dm_build_1532 = dm_build_1523.dm_build_1514(&dm_build_1524.lob, dm_build_1525+dm_build_1528, dm_build_1529)
  504. if dm_build_1532 != nil {
  505. return nil, dm_build_1532
  506. }
  507. dm_build_1531 = dm_build_1530.data
  508. if dm_build_1531 == nil || len(dm_build_1531) == 0 {
  509. break
  510. }
  511. Dm_build_650.Dm_build_706(dm_build_1527, int(dm_build_1528), dm_build_1531, 0, len(dm_build_1531))
  512. dm_build_1528 += int32(len(dm_build_1531))
  513. if dm_build_1524.readOver {
  514. break
  515. }
  516. }
  517. return dm_build_1527, nil
  518. }
  519. func (dm_build_1534 *dm_build_1345) dm_build_1533(dm_build_1535 *DmClob, dm_build_1536 int32, dm_build_1537 int32) (string, error) {
  520. var dm_build_1538 bytes.Buffer
  521. var dm_build_1539 int32 = 0
  522. var dm_build_1540 int32 = 0
  523. var dm_build_1541 *lobRetInfo
  524. var dm_build_1542 []byte
  525. var dm_build_1543 string
  526. var dm_build_1544 error
  527. for dm_build_1539 < dm_build_1537 {
  528. dm_build_1540 = dm_build_1537 - dm_build_1539
  529. if dm_build_1540 > Dm_build_128/2 {
  530. dm_build_1540 = Dm_build_128 / 2
  531. }
  532. dm_build_1541, dm_build_1544 = dm_build_1534.dm_build_1514(&dm_build_1535.lob, dm_build_1536+dm_build_1539, dm_build_1540)
  533. if dm_build_1544 != nil {
  534. return "", dm_build_1544
  535. }
  536. dm_build_1542 = dm_build_1541.data
  537. if dm_build_1542 == nil || len(dm_build_1542) == 0 {
  538. break
  539. }
  540. dm_build_1543 = Dm_build_650.Dm_build_807(dm_build_1542, 0, len(dm_build_1542), dm_build_1535.serverEncoding, dm_build_1534.dm_build_1349)
  541. dm_build_1538.WriteString(dm_build_1543)
  542. var strLen = dm_build_1541.charLen
  543. if strLen == -1 {
  544. strLen = int64(utf8.RuneCountInString(dm_build_1543))
  545. }
  546. dm_build_1539 += int32(strLen)
  547. if dm_build_1535.readOver {
  548. break
  549. }
  550. }
  551. return dm_build_1538.String(), nil
  552. }
  553. func (dm_build_1546 *dm_build_1345) dm_build_1545(dm_build_1547 *DmClob, dm_build_1548 int, dm_build_1549 string, dm_build_1550 string) (int, error) {
  554. var dm_build_1551 = Dm_build_650.Dm_build_866(dm_build_1549, dm_build_1550, dm_build_1546.dm_build_1349)
  555. var dm_build_1552 = 0
  556. var dm_build_1553 = len(dm_build_1551)
  557. var dm_build_1554 = 0
  558. var dm_build_1555 = 0
  559. var dm_build_1556 = 0
  560. var dm_build_1557 = dm_build_1553/Dm_build_127 + 1
  561. var dm_build_1558 byte = 0
  562. var dm_build_1559 byte = 0x01
  563. var dm_build_1560 byte = 0x02
  564. for i := 0; i < dm_build_1557; i++ {
  565. dm_build_1558 = 0
  566. if i == 0 {
  567. dm_build_1558 |= dm_build_1559
  568. }
  569. if i == dm_build_1557-1 {
  570. dm_build_1558 |= dm_build_1560
  571. }
  572. dm_build_1556 = dm_build_1553 - dm_build_1555
  573. if dm_build_1556 > Dm_build_127 {
  574. dm_build_1556 = Dm_build_127
  575. }
  576. setLobData := dm_build_555(dm_build_1546, &dm_build_1547.lob, dm_build_1558, dm_build_1548, dm_build_1551, dm_build_1552, dm_build_1556)
  577. ret, err := dm_build_1546.dm_build_1388(setLobData)
  578. if err != nil {
  579. return 0, err
  580. }
  581. tmp := ret.(int32)
  582. if err != nil {
  583. return -1, err
  584. }
  585. if tmp <= 0 {
  586. return dm_build_1554, nil
  587. } else {
  588. dm_build_1548 += int(tmp)
  589. dm_build_1554 += int(tmp)
  590. dm_build_1555 += dm_build_1556
  591. dm_build_1552 += dm_build_1556
  592. }
  593. }
  594. return dm_build_1554, nil
  595. }
  596. func (dm_build_1562 *dm_build_1345) dm_build_1561(dm_build_1563 *DmBlob, dm_build_1564 int, dm_build_1565 []byte) (int, error) {
  597. var dm_build_1566 = 0
  598. var dm_build_1567 = len(dm_build_1565)
  599. var dm_build_1568 = 0
  600. var dm_build_1569 = 0
  601. var dm_build_1570 = 0
  602. var dm_build_1571 = dm_build_1567/Dm_build_127 + 1
  603. var dm_build_1572 byte = 0
  604. var dm_build_1573 byte = 0x01
  605. var dm_build_1574 byte = 0x02
  606. for i := 0; i < dm_build_1571; i++ {
  607. dm_build_1572 = 0
  608. if i == 0 {
  609. dm_build_1572 |= dm_build_1573
  610. }
  611. if i == dm_build_1571-1 {
  612. dm_build_1572 |= dm_build_1574
  613. }
  614. dm_build_1570 = dm_build_1567 - dm_build_1569
  615. if dm_build_1570 > Dm_build_127 {
  616. dm_build_1570 = Dm_build_127
  617. }
  618. setLobData := dm_build_555(dm_build_1562, &dm_build_1563.lob, dm_build_1572, dm_build_1564, dm_build_1565, dm_build_1566, dm_build_1570)
  619. ret, err := dm_build_1562.dm_build_1388(setLobData)
  620. if err != nil {
  621. return 0, err
  622. }
  623. tmp := ret.(int32)
  624. if tmp <= 0 {
  625. return dm_build_1568, nil
  626. } else {
  627. dm_build_1564 += int(tmp)
  628. dm_build_1568 += int(tmp)
  629. dm_build_1569 += dm_build_1570
  630. dm_build_1566 += dm_build_1570
  631. }
  632. }
  633. return dm_build_1568, nil
  634. }
  635. func (dm_build_1576 *dm_build_1345) dm_build_1575(dm_build_1577 *lob, dm_build_1578 int) (int64, error) {
  636. dm_build_1579 := dm_build_421(dm_build_1576, dm_build_1577, dm_build_1578)
  637. dm_build_1580, dm_build_1581 := dm_build_1576.dm_build_1388(dm_build_1579)
  638. if dm_build_1581 != nil {
  639. return dm_build_1577.length, dm_build_1581
  640. }
  641. return dm_build_1580.(int64), nil
  642. }
  643. func (dm_build_1583 *dm_build_1345) dm_build_1582(dm_build_1584 []interface{}, dm_build_1585 []interface{}, dm_build_1586 int) bool {
  644. var dm_build_1587 = false
  645. dm_build_1584[dm_build_1586] = dm_build_1585[dm_build_1586]
  646. if binder, ok := dm_build_1585[dm_build_1586].(iOffRowBinder); ok {
  647. dm_build_1587 = true
  648. dm_build_1584[dm_build_1586] = make([]byte, 0)
  649. var lob lob
  650. if l, ok := binder.getObj().(DmBlob); ok {
  651. lob = l.lob
  652. } else if l, ok := binder.getObj().(DmClob); ok {
  653. lob = l.lob
  654. }
  655. if &lob != nil && lob.canOptimized(dm_build_1583.dm_build_1349) {
  656. dm_build_1584[dm_build_1586] = &lobCtl{lob.buildCtlData()}
  657. dm_build_1587 = false
  658. }
  659. } else {
  660. dm_build_1584[dm_build_1586] = dm_build_1585[dm_build_1586]
  661. }
  662. return dm_build_1587
  663. }
  664. func (dm_build_1589 *dm_build_1345) dm_build_1588(dm_build_1590 *DmStatement, dm_build_1591 parameter, dm_build_1592 int, dm_build_1593 iOffRowBinder) error {
  665. var dm_build_1594 = Dm_build_935()
  666. dm_build_1593.read(dm_build_1594)
  667. var dm_build_1595 = 0
  668. for !dm_build_1593.isReadOver() || dm_build_1594.Dm_build_936() > 0 {
  669. if !dm_build_1593.isReadOver() && dm_build_1594.Dm_build_936() < Dm_build_127 {
  670. dm_build_1593.read(dm_build_1594)
  671. }
  672. if dm_build_1594.Dm_build_936() > Dm_build_127 {
  673. dm_build_1595 = Dm_build_127
  674. } else {
  675. dm_build_1595 = dm_build_1594.Dm_build_936()
  676. }
  677. putData := dm_build_526(dm_build_1589, dm_build_1590, int16(dm_build_1592), dm_build_1594, int32(dm_build_1595))
  678. _, err := dm_build_1589.dm_build_1388(putData)
  679. if err != nil {
  680. return err
  681. }
  682. }
  683. return nil
  684. }
  685. func (dm_build_1597 *dm_build_1345) dm_build_1596() ([]byte, error) {
  686. var dm_build_1598 error
  687. if dm_build_1597.dm_build_1353 == nil {
  688. if dm_build_1597.dm_build_1353, dm_build_1598 = security.NewClientKeyPair(); dm_build_1598 != nil {
  689. return nil, dm_build_1598
  690. }
  691. }
  692. return security.Bn2Bytes(dm_build_1597.dm_build_1353.GetY(), security.DH_KEY_LENGTH), nil
  693. }
  694. func (dm_build_1600 *dm_build_1345) dm_build_1599() (*security.DhKey, error) {
  695. var dm_build_1601 error
  696. if dm_build_1600.dm_build_1353 == nil {
  697. if dm_build_1600.dm_build_1353, dm_build_1601 = security.NewClientKeyPair(); dm_build_1601 != nil {
  698. return nil, dm_build_1601
  699. }
  700. }
  701. return dm_build_1600.dm_build_1353, nil
  702. }
  703. func (dm_build_1603 *dm_build_1345) dm_build_1602(dm_build_1604 int, dm_build_1605 []byte, dm_build_1606 string, dm_build_1607 int) (dm_build_1608 error) {
  704. if dm_build_1604 > 0 && dm_build_1604 < security.MIN_EXTERNAL_CIPHER_ID && dm_build_1605 != nil {
  705. dm_build_1603.dm_build_1350, dm_build_1608 = security.NewSymmCipher(dm_build_1604, dm_build_1605)
  706. } else if dm_build_1604 >= security.MIN_EXTERNAL_CIPHER_ID {
  707. if dm_build_1603.dm_build_1350, dm_build_1608 = security.NewThirdPartCipher(dm_build_1604, dm_build_1605, dm_build_1606, dm_build_1607); dm_build_1608 != nil {
  708. dm_build_1608 = THIRD_PART_CIPHER_INIT_FAILED.addDetailln(dm_build_1608.Error()).throw()
  709. }
  710. }
  711. return
  712. }
  713. func (dm_build_1610 *dm_build_1345) dm_build_1609(dm_build_1611 bool) (dm_build_1612 error) {
  714. if dm_build_1610.dm_build_1347, dm_build_1612 = security.NewTLSFromTCP(dm_build_1610.dm_build_1346, dm_build_1610.dm_build_1349.dmConnector.sslCertPath, dm_build_1610.dm_build_1349.dmConnector.sslKeyPath, dm_build_1610.dm_build_1349.dmConnector.user); dm_build_1612 != nil {
  715. return
  716. }
  717. if !dm_build_1611 {
  718. dm_build_1610.dm_build_1347 = nil
  719. }
  720. return
  721. }
  722. func (dm_build_1614 *dm_build_1345) dm_build_1613(dm_build_1615 dm_build_135) bool {
  723. return dm_build_1615.dm_build_150() != Dm_build_42 && dm_build_1614.dm_build_1349.sslEncrypt == 1
  724. }