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