github.com/xiyichan/dm8@v0.0.0-20211213021639-be727be3e136/a.go (about) 1 /* 2 * Copyright (c) 2000-2018, 达梦数据库有限公司. 3 * All rights reserved. 4 */ 5 package dm 6 7 import ( 8 "crypto/tls" 9 "github.com/xiyichan/dm8/security" 10 "net" 11 "strconv" 12 "time" 13 ) 14 15 const ( 16 Dm_build_1283 = 8192 17 Dm_build_1284 = 2 * time.Second 18 ) 19 20 type dm_build_1285 struct { 21 dm_build_1286 *net.TCPConn 22 dm_build_1287 *tls.Conn 23 dm_build_1288 *Dm_build_953 24 dm_build_1289 *DmConnection 25 dm_build_1290 security.Cipher 26 dm_build_1291 bool 27 dm_build_1292 bool 28 dm_build_1293 *security.DhKey 29 dm_build_1294 string 30 dm_build_1295 bool 31 } 32 33 func dm_build_1296(dm_build_1297 *DmConnection) (*dm_build_1285, error) { 34 dm_build_1298, dm_build_1299 := dm_build_1301(dm_build_1297.dmConnector.host+":"+strconv.Itoa(dm_build_1297.dmConnector.port), time.Duration(dm_build_1297.dmConnector.socketTimeout)*time.Second) 35 if dm_build_1299 != nil { 36 return nil, dm_build_1299 37 } 38 39 dm_build_1300 := dm_build_1285{} 40 dm_build_1300.dm_build_1286 = dm_build_1298 41 dm_build_1300.dm_build_1288 = Dm_build_956(Dm_build_6) 42 dm_build_1300.dm_build_1289 = dm_build_1297 43 dm_build_1300.dm_build_1291 = false 44 dm_build_1300.dm_build_1292 = false 45 dm_build_1300.dm_build_1294 = "" 46 dm_build_1300.dm_build_1295 = false 47 dm_build_1297.Access = &dm_build_1300 48 49 return &dm_build_1300, nil 50 } 51 52 func dm_build_1301(dm_build_1302 string, dm_build_1303 time.Duration) (*net.TCPConn, error) { 53 dm_build_1304, dm_build_1305 := net.DialTimeout("tcp", dm_build_1302, dm_build_1303) 54 if dm_build_1305 != nil { 55 return nil, ECGO_COMMUNITION_ERROR.addDetail("\tdial address: " + dm_build_1302).throw() 56 } 57 58 if tcpConn, ok := dm_build_1304.(*net.TCPConn); ok { 59 60 tcpConn.SetKeepAlive(true) 61 tcpConn.SetKeepAlivePeriod(Dm_build_1284) 62 tcpConn.SetNoDelay(true) 63 64 return tcpConn, nil 65 } 66 67 return nil, nil 68 } 69 70 func (dm_build_1307 *dm_build_1285) dm_build_1306(dm_build_1308 dm_build_123) bool { 71 var dm_build_1309 = dm_build_1307.dm_build_1289.dmConnector.compress 72 if dm_build_1308.dm_build_137() == Dm_build_33 || dm_build_1309 == Dm_build_81 { 73 return false 74 } 75 76 if dm_build_1309 == Dm_build_79 { 77 return true 78 } else if dm_build_1309 == Dm_build_80 { 79 return !dm_build_1307.dm_build_1289.Local && dm_build_1308.dm_build_135() > Dm_build_78 80 } 81 82 return false 83 } 84 85 func (dm_build_1311 *dm_build_1285) dm_build_1310(dm_build_1312 dm_build_123) bool { 86 var dm_build_1313 = dm_build_1311.dm_build_1289.dmConnector.compress 87 if dm_build_1312.dm_build_137() == Dm_build_33 || dm_build_1313 == Dm_build_81 { 88 return false 89 } 90 91 if dm_build_1313 == Dm_build_79 { 92 return true 93 } else if dm_build_1313 == Dm_build_80 { 94 return dm_build_1311.dm_build_1288.Dm_build_1216(Dm_build_41) == 1 95 } 96 97 return false 98 } 99 100 func (dm_build_1315 *dm_build_1285) dm_build_1314(dm_build_1316 dm_build_123) (err error) { 101 defer func() { 102 if p := recover(); p != nil { 103 if _, ok := p.(string); ok { 104 err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw() 105 } else { 106 panic(p) 107 } 108 } 109 }() 110 111 dm_build_1318 := dm_build_1316.dm_build_135() 112 113 if dm_build_1318 > 0 { 114 115 if dm_build_1315.dm_build_1306(dm_build_1316) { 116 var retBytes, err = Compress(dm_build_1315.dm_build_1288, Dm_build_34, int(dm_build_1318), int(dm_build_1315.dm_build_1289.dmConnector.compressID)) 117 if err != nil { 118 return err 119 } 120 121 dm_build_1315.dm_build_1288.Dm_build_967(Dm_build_34) 122 123 dm_build_1315.dm_build_1288.Dm_build_1004(dm_build_1318) 124 125 dm_build_1315.dm_build_1288.Dm_build_1032(retBytes) 126 127 dm_build_1316.dm_build_136(int32(len(retBytes)) + ULINT_SIZE) 128 129 dm_build_1315.dm_build_1288.Dm_build_1136(Dm_build_41, 1) 130 } 131 132 if dm_build_1315.dm_build_1292 { 133 dm_build_1318 = dm_build_1316.dm_build_135() 134 var retBytes = dm_build_1315.dm_build_1290.Encrypt(dm_build_1315.dm_build_1288.Dm_build_1243(Dm_build_34, int(dm_build_1318)), true) 135 136 dm_build_1315.dm_build_1288.Dm_build_967(Dm_build_34) 137 138 dm_build_1315.dm_build_1288.Dm_build_1032(retBytes) 139 140 dm_build_1316.dm_build_136(int32(len(retBytes))) 141 } 142 } 143 144 dm_build_1316.dm_build_132() 145 if dm_build_1315.dm_build_1546(dm_build_1316) { 146 if dm_build_1315.dm_build_1287 != nil { 147 dm_build_1315.dm_build_1288.Dm_build_970(0) 148 dm_build_1315.dm_build_1288.Dm_build_989(dm_build_1315.dm_build_1287) 149 } 150 } else { 151 dm_build_1315.dm_build_1288.Dm_build_970(0) 152 dm_build_1315.dm_build_1288.Dm_build_989(dm_build_1315.dm_build_1286) 153 } 154 return nil 155 } 156 157 func (dm_build_1320 *dm_build_1285) dm_build_1319(dm_build_1321 dm_build_123) (err error) { 158 defer func() { 159 if p := recover(); p != nil { 160 if _, ok := p.(string); ok { 161 err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw() 162 } else { 163 panic(p) 164 } 165 } 166 }() 167 168 dm_build_1323 := int32(0) 169 if dm_build_1320.dm_build_1546(dm_build_1321) { 170 if dm_build_1320.dm_build_1287 != nil { 171 dm_build_1320.dm_build_1288.Dm_build_967(0) 172 dm_build_1320.dm_build_1288.Dm_build_983(dm_build_1320.dm_build_1287, Dm_build_34) 173 dm_build_1323 = dm_build_1321.dm_build_135() 174 if dm_build_1323 > 0 { 175 dm_build_1320.dm_build_1288.Dm_build_983(dm_build_1320.dm_build_1287, int(dm_build_1323)) 176 } 177 } 178 } else { 179 180 dm_build_1320.dm_build_1288.Dm_build_967(0) 181 dm_build_1320.dm_build_1288.Dm_build_983(dm_build_1320.dm_build_1286, Dm_build_34) 182 dm_build_1323 = dm_build_1321.dm_build_135() 183 184 if dm_build_1323 > 0 { 185 dm_build_1320.dm_build_1288.Dm_build_983(dm_build_1320.dm_build_1286, int(dm_build_1323)) 186 } 187 } 188 189 dm_build_1321.dm_build_133() 190 191 if dm_build_1323 <= 0 { 192 return nil 193 } 194 195 if dm_build_1320.dm_build_1292 { 196 dm_build_1323 = dm_build_1321.dm_build_135() 197 ebytes := dm_build_1320.dm_build_1288.Dm_build_1243(Dm_build_34, int(dm_build_1323)) 198 bytes, err := dm_build_1320.dm_build_1290.Decrypt(ebytes, true) 199 if err != nil { 200 return err 201 } 202 dm_build_1320.dm_build_1288.Dm_build_967(Dm_build_34) 203 dm_build_1320.dm_build_1288.Dm_build_1032(bytes) 204 dm_build_1321.dm_build_136(int32(len(bytes))) 205 } 206 207 if dm_build_1320.dm_build_1310(dm_build_1321) { 208 209 dm_build_1323 = dm_build_1321.dm_build_135() 210 cbytes := dm_build_1320.dm_build_1288.Dm_build_1243(Dm_build_34+ULINT_SIZE, int(dm_build_1323-ULINT_SIZE)) 211 bytes, err := UnCompress(cbytes, int(dm_build_1320.dm_build_1289.dmConnector.compressID)) 212 if err != nil { 213 return err 214 } 215 dm_build_1320.dm_build_1288.Dm_build_967(Dm_build_34) 216 dm_build_1320.dm_build_1288.Dm_build_1032(bytes) 217 dm_build_1321.dm_build_136(int32(len(bytes))) 218 } 219 return nil 220 } 221 222 func (dm_build_1325 *dm_build_1285) dm_build_1324(dm_build_1326 dm_build_123) (dm_build_1327 interface{}, dm_build_1328 error) { 223 dm_build_1328 = dm_build_1326.dm_build_127(dm_build_1326) 224 if dm_build_1328 != nil { 225 return nil, dm_build_1328 226 } 227 228 dm_build_1328 = dm_build_1325.dm_build_1314(dm_build_1326) 229 if dm_build_1328 != nil { 230 return nil, dm_build_1328 231 } 232 233 dm_build_1328 = dm_build_1325.dm_build_1319(dm_build_1326) 234 if dm_build_1328 != nil { 235 return nil, dm_build_1328 236 } 237 238 return dm_build_1326.dm_build_131(dm_build_1326) 239 } 240 241 func (dm_build_1330 *dm_build_1285) dm_build_1329() (*dm_build_541, error) { 242 243 Dm_build_1331 := dm_build_547(dm_build_1330) 244 _, dm_build_1332 := dm_build_1330.dm_build_1324(Dm_build_1331) 245 if dm_build_1332 != nil { 246 return nil, dm_build_1332 247 } 248 249 return Dm_build_1331, nil 250 } 251 252 func (dm_build_1334 *dm_build_1285) dm_build_1333() error { 253 254 dm_build_1335 := dm_build_418(dm_build_1334) 255 _, dm_build_1336 := dm_build_1334.dm_build_1324(dm_build_1335) 256 if dm_build_1336 != nil { 257 return dm_build_1336 258 } 259 260 return nil 261 } 262 263 func (dm_build_1338 *dm_build_1285) dm_build_1337() error { 264 265 var dm_build_1339 *dm_build_541 266 var err error 267 if dm_build_1339, err = dm_build_1338.dm_build_1329(); err != nil { 268 return err 269 } 270 271 if dm_build_1338.dm_build_1289.sslEncrypt == 2 { 272 if err = dm_build_1338.dm_build_1542(false); err != nil { 273 return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw() 274 } 275 } else if dm_build_1338.dm_build_1289.sslEncrypt == 1 { 276 if err = dm_build_1338.dm_build_1542(true); err != nil { 277 return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw() 278 } 279 } 280 281 if dm_build_1338.dm_build_1292 || dm_build_1338.dm_build_1291 { 282 k, err := dm_build_1338.dm_build_1532() 283 if err != nil { 284 return err 285 } 286 sessionKey := security.ComputeSessionKey(k, dm_build_1339.Dm_build_545) 287 encryptType := dm_build_1339.dm_build_543 288 hashType := int(dm_build_1339.Dm_build_544) 289 if encryptType == -1 { 290 encryptType = security.DES_CFB 291 } 292 if hashType == -1 { 293 hashType = security.MD5 294 } 295 err = dm_build_1338.dm_build_1535(encryptType, sessionKey, dm_build_1338.dm_build_1289.dmConnector.cipherPath, hashType) 296 if err != nil { 297 return err 298 } 299 } 300 301 if err := dm_build_1338.dm_build_1333(); err != nil { 302 return err 303 } 304 return nil 305 } 306 307 func (dm_build_1342 *dm_build_1285) Dm_build_1341(dm_build_1343 *DmStatement) error { 308 dm_build_1344 := dm_build_570(dm_build_1342, dm_build_1343) 309 _, dm_build_1345 := dm_build_1342.dm_build_1324(dm_build_1344) 310 if dm_build_1345 != nil { 311 return dm_build_1345 312 } 313 314 return nil 315 } 316 317 func (dm_build_1347 *dm_build_1285) Dm_build_1346(dm_build_1348 int32) error { 318 dm_build_1349 := dm_build_580(dm_build_1347, dm_build_1348) 319 _, dm_build_1350 := dm_build_1347.dm_build_1324(dm_build_1349) 320 if dm_build_1350 != nil { 321 return dm_build_1350 322 } 323 324 return nil 325 } 326 327 func (dm_build_1352 *dm_build_1285) Dm_build_1351(dm_build_1353 *DmStatement, dm_build_1354 bool, dm_build_1355 int16) (*execInfo, error) { 328 dm_build_1356 := dm_build_454(dm_build_1352, dm_build_1353, dm_build_1354, dm_build_1355) 329 dm_build_1357, dm_build_1358 := dm_build_1352.dm_build_1324(dm_build_1356) 330 if dm_build_1358 != nil { 331 return nil, dm_build_1358 332 } 333 return dm_build_1357.(*execInfo), nil 334 } 335 336 func (dm_build_1360 *dm_build_1285) Dm_build_1359(dm_build_1361 *DmStatement, dm_build_1362 int16) (*execInfo, error) { 337 return dm_build_1360.Dm_build_1351(dm_build_1361, false, Dm_build_85) 338 } 339 340 func (dm_build_1364 *dm_build_1285) Dm_build_1363(dm_build_1365 *DmStatement, dm_build_1366 []OptParameter) (*execInfo, error) { 341 dm_build_1367, dm_build_1368 := dm_build_1364.dm_build_1324(dm_build_216(dm_build_1364, dm_build_1365, dm_build_1366)) 342 if dm_build_1368 != nil { 343 return nil, dm_build_1368 344 } 345 346 return dm_build_1367.(*execInfo), nil 347 } 348 349 func (dm_build_1370 *dm_build_1285) Dm_build_1369(dm_build_1371 *DmStatement, dm_build_1372 int16) (*execInfo, error) { 350 return dm_build_1370.Dm_build_1351(dm_build_1371, true, dm_build_1372) 351 } 352 353 func (dm_build_1374 *dm_build_1285) Dm_build_1373(dm_build_1375 *DmStatement, dm_build_1376 [][]interface{}) (*execInfo, error) { 354 dm_build_1377 := dm_build_239(dm_build_1374, dm_build_1375, dm_build_1376) 355 dm_build_1378, dm_build_1379 := dm_build_1374.dm_build_1324(dm_build_1377) 356 if dm_build_1379 != nil { 357 return nil, dm_build_1379 358 } 359 return dm_build_1378.(*execInfo), nil 360 } 361 362 func (dm_build_1381 *dm_build_1285) Dm_build_1380(dm_build_1382 *DmStatement, dm_build_1383 [][]interface{}) (*execInfo, error) { 363 var dm_build_1384, dm_build_1385 = 0, 0 364 var dm_build_1386 = len(dm_build_1383) 365 var dm_build_1387 [][]interface{} 366 var dm_build_1388 = NewExceInfo() 367 dm_build_1388.updateCounts = make([]int64, dm_build_1386) 368 var dm_build_1389 = false 369 var dm_build_1390 = false 370 for dm_build_1384 < dm_build_1386 { 371 for dm_build_1385 = dm_build_1384; dm_build_1385 < dm_build_1386; dm_build_1385++ { 372 paramData := dm_build_1383[dm_build_1385] 373 bindData := make([]interface{}, dm_build_1382.paramCount) 374 dm_build_1389 = false 375 for icol := 0; icol < int(dm_build_1382.paramCount); icol++ { 376 if dm_build_1382.params[icol].ioType == IO_TYPE_OUT { 377 continue 378 } 379 if dm_build_1381.dm_build_1515(bindData, paramData, icol) { 380 dm_build_1389 = true 381 break 382 } 383 } 384 385 if dm_build_1389 { 386 break 387 } 388 dm_build_1387 = append(dm_build_1387, bindData) 389 } 390 391 if dm_build_1385 != dm_build_1384 { 392 tmpExecInfo, err := dm_build_1381.Dm_build_1373(dm_build_1382, dm_build_1387) 393 if err != nil { 394 return nil, err 395 } 396 dm_build_1387 = dm_build_1387[0:0] 397 if dm_build_1385-dm_build_1384 == 1 { 398 dm_build_1388.updateCounts[dm_build_1384] = tmpExecInfo.updateCount 399 } else if tmpExecInfo.updateCounts != nil { 400 copy(dm_build_1388.updateCounts[dm_build_1384:dm_build_1385], tmpExecInfo.updateCounts[0:dm_build_1385-dm_build_1384]) 401 } 402 } 403 404 if dm_build_1385 < dm_build_1386 { 405 tmpExecInfo, err := dm_build_1381.Dm_build_1391(dm_build_1382, dm_build_1383[dm_build_1385], dm_build_1390) 406 if err != nil { 407 return nil, err 408 } 409 410 dm_build_1390 = true 411 dm_build_1388.updateCounts[dm_build_1385] = tmpExecInfo.updateCount 412 } 413 414 dm_build_1384 = dm_build_1385 + 1 415 } 416 for _, i := range dm_build_1388.updateCounts { 417 dm_build_1388.updateCount += i 418 } 419 return dm_build_1388, nil 420 } 421 422 func (dm_build_1392 *dm_build_1285) Dm_build_1391(dm_build_1393 *DmStatement, dm_build_1394 []interface{}, dm_build_1395 bool) (*execInfo, error) { 423 424 var dm_build_1396 = make([]interface{}, dm_build_1393.paramCount) 425 for icol := 0; icol < int(dm_build_1393.paramCount); icol++ { 426 if dm_build_1393.params[icol].ioType == IO_TYPE_OUT { 427 continue 428 } 429 if dm_build_1392.dm_build_1515(dm_build_1396, dm_build_1394, icol) { 430 431 if !dm_build_1395 { 432 preExecute := dm_build_444(dm_build_1392, dm_build_1393, dm_build_1393.params) 433 dm_build_1392.dm_build_1324(preExecute) 434 dm_build_1395 = true 435 } 436 437 dm_build_1392.dm_build_1521(dm_build_1393, dm_build_1393.params[icol], icol, dm_build_1394[icol].(iOffRowBinder)) 438 dm_build_1396[icol] = ParamDataEnum_OFF_ROW 439 } 440 } 441 442 var dm_build_1397 = make([][]interface{}, 1, 1) 443 dm_build_1397[0] = dm_build_1396 444 445 dm_build_1398 := dm_build_239(dm_build_1392, dm_build_1393, dm_build_1397) 446 dm_build_1399, dm_build_1400 := dm_build_1392.dm_build_1324(dm_build_1398) 447 if dm_build_1400 != nil { 448 return nil, dm_build_1400 449 } 450 return dm_build_1399.(*execInfo), nil 451 } 452 453 func (dm_build_1402 *dm_build_1285) Dm_build_1401(dm_build_1403 *DmStatement, dm_build_1404 int16) (*execInfo, error) { 454 dm_build_1405 := dm_build_432(dm_build_1402, dm_build_1403, dm_build_1404) 455 456 dm_build_1406, dm_build_1407 := dm_build_1402.dm_build_1324(dm_build_1405) 457 if dm_build_1407 != nil { 458 return nil, dm_build_1407 459 } 460 return dm_build_1406.(*execInfo), nil 461 } 462 463 func (dm_build_1409 *dm_build_1285) Dm_build_1408(dm_build_1410 *innerRows, dm_build_1411 int64) (*execInfo, error) { 464 dm_build_1412 := dm_build_339(dm_build_1409, dm_build_1410, dm_build_1411, INT64_MAX) 465 dm_build_1413, dm_build_1414 := dm_build_1409.dm_build_1324(dm_build_1412) 466 if dm_build_1414 != nil { 467 return nil, dm_build_1414 468 } 469 return dm_build_1413.(*execInfo), nil 470 } 471 472 func (dm_build_1416 *dm_build_1285) Commit() error { 473 dm_build_1417 := dm_build_202(dm_build_1416) 474 _, dm_build_1418 := dm_build_1416.dm_build_1324(dm_build_1417) 475 if dm_build_1418 != nil { 476 return dm_build_1418 477 } 478 479 return nil 480 } 481 482 func (dm_build_1420 *dm_build_1285) Rollback() error { 483 dm_build_1421 := dm_build_492(dm_build_1420) 484 _, dm_build_1422 := dm_build_1420.dm_build_1324(dm_build_1421) 485 if dm_build_1422 != nil { 486 return dm_build_1422 487 } 488 489 return nil 490 } 491 492 func (dm_build_1424 *dm_build_1285) Dm_build_1423(dm_build_1425 *DmConnection) error { 493 dm_build_1426 := dm_build_497(dm_build_1424, dm_build_1425.IsoLevel) 494 _, dm_build_1427 := dm_build_1424.dm_build_1324(dm_build_1426) 495 if dm_build_1427 != nil { 496 return dm_build_1427 497 } 498 499 return nil 500 } 501 502 func (dm_build_1429 *dm_build_1285) Dm_build_1428(dm_build_1430 *DmStatement, dm_build_1431 string) error { 503 dm_build_1432 := dm_build_207(dm_build_1429, dm_build_1430, dm_build_1431) 504 _, dm_build_1433 := dm_build_1429.dm_build_1324(dm_build_1432) 505 if dm_build_1433 != nil { 506 return dm_build_1433 507 } 508 509 return nil 510 } 511 512 func (dm_build_1435 *dm_build_1285) Dm_build_1434(dm_build_1436 []uint32) ([]int64, error) { 513 dm_build_1437 := dm_build_588(dm_build_1435, dm_build_1436) 514 dm_build_1438, dm_build_1439 := dm_build_1435.dm_build_1324(dm_build_1437) 515 if dm_build_1439 != nil { 516 return nil, dm_build_1439 517 } 518 return dm_build_1438.([]int64), nil 519 } 520 521 func (dm_build_1441 *dm_build_1285) Close() error { 522 if dm_build_1441.dm_build_1295 { 523 return nil 524 } 525 526 dm_build_1442 := dm_build_1441.dm_build_1286.Close() 527 if dm_build_1442 != nil { 528 return dm_build_1442 529 } 530 531 dm_build_1441.dm_build_1289 = nil 532 dm_build_1441.dm_build_1295 = true 533 return nil 534 } 535 536 func (dm_build_1444 *dm_build_1285) dm_build_1443(dm_build_1445 *lob) (int64, error) { 537 dm_build_1446 := dm_build_370(dm_build_1444, dm_build_1445) 538 dm_build_1447, dm_build_1448 := dm_build_1444.dm_build_1324(dm_build_1446) 539 if dm_build_1448 != nil { 540 return 0, dm_build_1448 541 } 542 return dm_build_1447.(int64), nil 543 } 544 545 func (dm_build_1450 *dm_build_1285) dm_build_1449(dm_build_1451 *lob, dm_build_1452 int32, dm_build_1453 int32) ([]byte, error) { 546 dm_build_1454 := dm_build_357(dm_build_1450, dm_build_1451, int(dm_build_1452), int(dm_build_1453)) 547 dm_build_1455, dm_build_1456 := dm_build_1450.dm_build_1324(dm_build_1454) 548 if dm_build_1456 != nil { 549 return nil, dm_build_1456 550 } 551 return dm_build_1455.([]byte), nil 552 } 553 554 func (dm_build_1458 *dm_build_1285) dm_build_1457(dm_build_1459 *DmBlob, dm_build_1460 int32, dm_build_1461 int32) ([]byte, error) { 555 var dm_build_1462 = make([]byte, dm_build_1461) 556 var dm_build_1463 int32 = 0 557 var dm_build_1464 int32 = 0 558 var dm_build_1465 []byte 559 var dm_build_1466 error 560 for dm_build_1463 < dm_build_1461 { 561 dm_build_1464 = dm_build_1461 - dm_build_1463 562 if dm_build_1464 > Dm_build_118 { 563 dm_build_1464 = Dm_build_118 564 } 565 dm_build_1465, dm_build_1466 = dm_build_1458.dm_build_1449(&dm_build_1459.lob, dm_build_1460, dm_build_1461) 566 if dm_build_1466 != nil { 567 return nil, dm_build_1466 568 } 569 if dm_build_1465 == nil || len(dm_build_1465) == 0 { 570 break 571 } 572 Dm_build_599.Dm_build_655(dm_build_1462, int(dm_build_1463), dm_build_1465, 0, len(dm_build_1465)) 573 dm_build_1463 += int32(len(dm_build_1465)) 574 dm_build_1460 += int32(len(dm_build_1465)) 575 if dm_build_1459.readOver { 576 break 577 } 578 } 579 return dm_build_1462, nil 580 } 581 582 func (dm_build_1468 *dm_build_1285) dm_build_1467(dm_build_1469 *DmClob, dm_build_1470 int32, dm_build_1471 int32) (string, error) { 583 var dm_build_1472 = "" 584 var dm_build_1473 int32 = 0 585 var dm_build_1474 int32 = 0 586 var dm_build_1475 []byte 587 var dm_build_1476 string 588 var dm_build_1477 error 589 for dm_build_1473 < dm_build_1471 { 590 dm_build_1474 = dm_build_1471 - dm_build_1473 591 if dm_build_1474 > Dm_build_118/2 { 592 dm_build_1474 = Dm_build_118 / 2 593 } 594 dm_build_1475, dm_build_1477 = dm_build_1468.dm_build_1449(&dm_build_1469.lob, dm_build_1470, dm_build_1471) 595 if dm_build_1477 != nil { 596 return "", dm_build_1477 597 } 598 if dm_build_1475 == nil || len(dm_build_1475) == 0 { 599 break 600 } 601 dm_build_1476 = Dm_build_599.Dm_build_753(dm_build_1475, 0, len(dm_build_1475), dm_build_1469.serverEncoding, dm_build_1468.dm_build_1289) 602 dm_build_1472 += dm_build_1476 603 dm_build_1473 += int32(len(dm_build_1476)) 604 dm_build_1470 += int32(len(dm_build_1475)) 605 if dm_build_1469.readOver { 606 break 607 } 608 } 609 return dm_build_1472, nil 610 } 611 612 func (dm_build_1479 *dm_build_1285) dm_build_1478(dm_build_1480 *DmClob, dm_build_1481 int, dm_build_1482 string, dm_build_1483 string) (int, error) { 613 var dm_build_1484 = Dm_build_599.Dm_build_809(dm_build_1482, dm_build_1483, dm_build_1479.dm_build_1289) 614 var dm_build_1485 = 0 615 var dm_build_1486 = len(dm_build_1484) 616 var dm_build_1487 = 0 617 var dm_build_1488 = 0 618 var dm_build_1489 = 0 619 var dm_build_1490 = dm_build_1486/Dm_build_117 + 1 620 var dm_build_1491 byte = 0 621 var dm_build_1492 byte = 0x01 622 var dm_build_1493 byte = 0x02 623 for i := 0; i < dm_build_1490; i++ { 624 dm_build_1491 = 0 625 if i == 0 { 626 dm_build_1491 |= dm_build_1492 627 } 628 if i == dm_build_1490-1 { 629 dm_build_1491 |= dm_build_1493 630 } 631 dm_build_1489 = dm_build_1486 - dm_build_1488 632 if dm_build_1489 > Dm_build_117 { 633 dm_build_1489 = Dm_build_117 634 } 635 636 setLobData := dm_build_511(dm_build_1479, &dm_build_1480.lob, dm_build_1491, dm_build_1481, dm_build_1484, dm_build_1485, dm_build_1489) 637 ret, err := dm_build_1479.dm_build_1324(setLobData) 638 if err != nil { 639 return 0, err 640 } 641 tmp := ret.(int32) 642 if err != nil { 643 return -1, err 644 } 645 if tmp <= 0 { 646 return dm_build_1487, nil 647 } else { 648 dm_build_1481 += int(tmp) 649 dm_build_1487 += int(tmp) 650 dm_build_1488 += dm_build_1489 651 dm_build_1485 += dm_build_1489 652 } 653 } 654 return dm_build_1487, nil 655 } 656 657 func (dm_build_1495 *dm_build_1285) dm_build_1494(dm_build_1496 *DmBlob, dm_build_1497 int, dm_build_1498 []byte) (int, error) { 658 var dm_build_1499 = 0 659 var dm_build_1500 = len(dm_build_1498) 660 var dm_build_1501 = 0 661 var dm_build_1502 = 0 662 var dm_build_1503 = 0 663 var dm_build_1504 = dm_build_1500/Dm_build_117 + 1 664 var dm_build_1505 byte = 0 665 var dm_build_1506 byte = 0x01 666 var dm_build_1507 byte = 0x02 667 for i := 0; i < dm_build_1504; i++ { 668 dm_build_1505 = 0 669 if i == 0 { 670 dm_build_1505 |= dm_build_1506 671 } 672 if i == dm_build_1504-1 { 673 dm_build_1505 |= dm_build_1507 674 } 675 dm_build_1503 = dm_build_1500 - dm_build_1502 676 if dm_build_1503 > Dm_build_117 { 677 dm_build_1503 = Dm_build_117 678 } 679 680 setLobData := dm_build_511(dm_build_1495, &dm_build_1496.lob, dm_build_1505, dm_build_1497, dm_build_1498, dm_build_1499, dm_build_1503) 681 ret, err := dm_build_1495.dm_build_1324(setLobData) 682 if err != nil { 683 return 0, err 684 } 685 tmp := ret.(int32) 686 if tmp <= 0 { 687 return dm_build_1501, nil 688 } else { 689 dm_build_1497 += int(tmp) 690 dm_build_1501 += int(tmp) 691 dm_build_1502 += dm_build_1503 692 dm_build_1499 += dm_build_1503 693 } 694 } 695 return dm_build_1501, nil 696 } 697 698 func (dm_build_1509 *dm_build_1285) dm_build_1508(dm_build_1510 *lob, dm_build_1511 int) (int64, error) { 699 dm_build_1512 := dm_build_381(dm_build_1509, dm_build_1510, dm_build_1511) 700 dm_build_1513, dm_build_1514 := dm_build_1509.dm_build_1324(dm_build_1512) 701 if dm_build_1514 != nil { 702 return dm_build_1510.length, dm_build_1514 703 } 704 return dm_build_1513.(int64), nil 705 } 706 707 func (dm_build_1516 *dm_build_1285) dm_build_1515(dm_build_1517 []interface{}, dm_build_1518 []interface{}, dm_build_1519 int) bool { 708 var dm_build_1520 = false 709 if dm_build_1519 >= len(dm_build_1518) || dm_build_1518[dm_build_1519] == nil { 710 dm_build_1517[dm_build_1519] = ParamDataEnum_Null 711 } else if binder, ok := dm_build_1518[dm_build_1519].(iOffRowBinder); ok { 712 dm_build_1520 = true 713 dm_build_1517[dm_build_1519] = ParamDataEnum_OFF_ROW 714 var lob lob 715 if l, ok := binder.getObj().(DmBlob); ok { 716 lob = l.lob 717 } else if l, ok := binder.getObj().(DmClob); ok { 718 lob = l.lob 719 } 720 if &lob != nil && lob.canOptimized(dm_build_1516.dm_build_1289) { 721 dm_build_1517[dm_build_1519] = &lobCtl{lob.buildCtlData()} 722 dm_build_1520 = false 723 } 724 } else { 725 dm_build_1517[dm_build_1519] = dm_build_1518[dm_build_1519] 726 } 727 return dm_build_1520 728 } 729 730 func (dm_build_1522 *dm_build_1285) dm_build_1521(dm_build_1523 *DmStatement, dm_build_1524 parameter, dm_build_1525 int, dm_build_1526 iOffRowBinder) error { 731 var dm_build_1527 = Dm_build_879() 732 dm_build_1526.read(dm_build_1527) 733 var dm_build_1528 = 0 734 for !dm_build_1526.isReadOver() || dm_build_1527.Dm_build_880() > 0 { 735 if !dm_build_1526.isReadOver() && dm_build_1527.Dm_build_880() < Dm_build_117 { 736 dm_build_1526.read(dm_build_1527) 737 } 738 if dm_build_1527.Dm_build_880() > Dm_build_117 { 739 dm_build_1528 = Dm_build_117 740 } else { 741 dm_build_1528 = dm_build_1527.Dm_build_880() 742 } 743 744 putData := dm_build_482(dm_build_1522, dm_build_1523, int16(dm_build_1525), dm_build_1527, int32(dm_build_1528)) 745 _, err := dm_build_1522.dm_build_1324(putData) 746 if err != nil { 747 return err 748 } 749 } 750 return nil 751 } 752 753 func (dm_build_1530 *dm_build_1285) dm_build_1529() ([]byte, error) { 754 var dm_build_1531 error 755 if dm_build_1530.dm_build_1293 == nil { 756 if dm_build_1530.dm_build_1293, dm_build_1531 = security.NewClientKeyPair(); dm_build_1531 != nil { 757 return nil, dm_build_1531 758 } 759 } 760 return security.Bn2Bytes(dm_build_1530.dm_build_1293.GetY(), security.DH_KEY_LENGTH), nil 761 } 762 763 func (dm_build_1533 *dm_build_1285) dm_build_1532() (*security.DhKey, error) { 764 var dm_build_1534 error 765 if dm_build_1533.dm_build_1293 == nil { 766 if dm_build_1533.dm_build_1293, dm_build_1534 = security.NewClientKeyPair(); dm_build_1534 != nil { 767 return nil, dm_build_1534 768 } 769 } 770 return dm_build_1533.dm_build_1293, nil 771 } 772 773 func (dm_build_1536 *dm_build_1285) dm_build_1535(dm_build_1537 int, dm_build_1538 []byte, dm_build_1539 string, dm_build_1540 int) (dm_build_1541 error) { 774 if dm_build_1537 > 0 && dm_build_1537 < security.MIN_EXTERNAL_CIPHER_ID && dm_build_1538 != nil { 775 dm_build_1536.dm_build_1290, dm_build_1541 = security.NewSymmCipher(dm_build_1537, dm_build_1538) 776 } else if dm_build_1537 >= security.MIN_EXTERNAL_CIPHER_ID { 777 if dm_build_1536.dm_build_1290, dm_build_1541 = security.NewThirdPartCipher(dm_build_1537, dm_build_1538, dm_build_1539, dm_build_1540); dm_build_1541 != nil { 778 dm_build_1541 = THIRD_PART_CIPHER_INIT_FAILED.addDetailln(dm_build_1541.Error()).throw() 779 } 780 } 781 return 782 } 783 784 func (dm_build_1543 *dm_build_1285) dm_build_1542(dm_build_1544 bool) (dm_build_1545 error) { 785 if dm_build_1543.dm_build_1287, dm_build_1545 = security.NewTLSFromTCP(dm_build_1543.dm_build_1286, dm_build_1543.dm_build_1289.dmConnector.sslCertPath, dm_build_1543.dm_build_1289.dmConnector.sslKeyPath, dm_build_1543.dm_build_1289.dmConnector.user); dm_build_1545 != nil { 786 return 787 } 788 if !dm_build_1544 { 789 dm_build_1543.dm_build_1287 = nil 790 } 791 return 792 } 793 794 func (dm_build_1547 *dm_build_1285) dm_build_1546(dm_build_1548 dm_build_123) bool { 795 return dm_build_1548.dm_build_137() != Dm_build_33 && dm_build_1547.dm_build_1289.sslEncrypt == 1 796 }