github.com/wanlay/gorm-dm8@v1.0.5/dmr/a.go (about) 1 /* 2 * Copyright (c) 2000-2018, 达梦数据库有限公司. 3 * All rights reserved. 4 */ 5 package dmr 6 7 import ( 8 "bytes" 9 "crypto/tls" 10 "net" 11 "strconv" 12 "time" 13 14 "github.com/wanlay/gorm-dm8/dmr/security" 15 ) 16 17 const ( 18 Dm_build_330 = 8192 19 Dm_build_331 = 2 * time.Second 20 ) 21 22 type dm_build_332 struct { 23 dm_build_333 *net.TCPConn 24 dm_build_334 *tls.Conn 25 dm_build_335 *Dm_build_0 26 dm_build_336 *DmConnection 27 dm_build_337 security.Cipher 28 dm_build_338 bool 29 dm_build_339 bool 30 dm_build_340 *security.DhKey 31 32 dm_build_341 bool 33 dm_build_342 string 34 dm_build_343 bool 35 } 36 37 func dm_build_344(dm_build_345 *DmConnection) (*dm_build_332, error) { 38 dm_build_346, dm_build_347 := dm_build_349(dm_build_345.dmConnector.host+":"+strconv.Itoa(int(dm_build_345.dmConnector.port)), time.Duration(dm_build_345.dmConnector.socketTimeout)*time.Second) 39 if dm_build_347 != nil { 40 return nil, dm_build_347 41 } 42 43 dm_build_348 := dm_build_332{} 44 dm_build_348.dm_build_333 = dm_build_346 45 dm_build_348.dm_build_335 = Dm_build_3(Dm_build_604) 46 dm_build_348.dm_build_336 = dm_build_345 47 dm_build_348.dm_build_338 = false 48 dm_build_348.dm_build_339 = false 49 dm_build_348.dm_build_341 = false 50 dm_build_348.dm_build_342 = "" 51 dm_build_348.dm_build_343 = false 52 dm_build_345.Access = &dm_build_348 53 54 return &dm_build_348, nil 55 } 56 57 func dm_build_349(dm_build_350 string, dm_build_351 time.Duration) (*net.TCPConn, error) { 58 dm_build_352, dm_build_353 := net.DialTimeout("tcp", dm_build_350, dm_build_351) 59 if dm_build_353 != nil { 60 return nil, ECGO_COMMUNITION_ERROR.addDetail("\tdial address: " + dm_build_350).throw() 61 } 62 63 if tcpConn, ok := dm_build_352.(*net.TCPConn); ok { 64 65 tcpConn.SetKeepAlive(true) 66 tcpConn.SetKeepAlivePeriod(Dm_build_331) 67 tcpConn.SetNoDelay(true) 68 69 return tcpConn, nil 70 } 71 72 return nil, nil 73 } 74 75 func (dm_build_355 *dm_build_332) dm_build_354(dm_build_356 dm_build_725) bool { 76 var dm_build_357 = dm_build_355.dm_build_336.dmConnector.compress 77 if dm_build_356.dm_build_740() == Dm_build_632 || dm_build_357 == Dm_build_681 { 78 return false 79 } 80 81 if dm_build_357 == Dm_build_679 { 82 return true 83 } else if dm_build_357 == Dm_build_680 { 84 return !dm_build_355.dm_build_336.Local && dm_build_356.dm_build_738() > Dm_build_678 85 } 86 87 return false 88 } 89 90 func (dm_build_359 *dm_build_332) dm_build_358(dm_build_360 dm_build_725) bool { 91 var dm_build_361 = dm_build_359.dm_build_336.dmConnector.compress 92 if dm_build_360.dm_build_740() == Dm_build_632 || dm_build_361 == Dm_build_681 { 93 return false 94 } 95 96 if dm_build_361 == Dm_build_679 { 97 return true 98 } else if dm_build_361 == Dm_build_680 { 99 return dm_build_359.dm_build_335.Dm_build_263(Dm_build_640) == 1 100 } 101 102 return false 103 } 104 105 func (dm_build_363 *dm_build_332) dm_build_362(dm_build_364 dm_build_725) (err error) { 106 defer func() { 107 if p := recover(); p != nil { 108 if _, ok := p.(string); ok { 109 err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw() 110 } else { 111 panic(p) 112 } 113 } 114 }() 115 116 dm_build_366 := dm_build_364.dm_build_738() 117 118 if dm_build_366 > 0 { 119 120 if dm_build_363.dm_build_354(dm_build_364) { 121 var retBytes, err = Compress(dm_build_363.dm_build_335, Dm_build_633, int(dm_build_366), int(dm_build_363.dm_build_336.dmConnector.compressID)) 122 if err != nil { 123 return err 124 } 125 126 dm_build_363.dm_build_335.Dm_build_14(Dm_build_633) 127 128 dm_build_363.dm_build_335.Dm_build_51(dm_build_366) 129 130 dm_build_363.dm_build_335.Dm_build_79(retBytes) 131 132 dm_build_364.dm_build_739(int32(len(retBytes)) + ULINT_SIZE) 133 134 dm_build_363.dm_build_335.Dm_build_183(Dm_build_640, 1) 135 } 136 137 if dm_build_363.dm_build_339 { 138 dm_build_366 = dm_build_364.dm_build_738() 139 var retBytes = dm_build_363.dm_build_337.Encrypt(dm_build_363.dm_build_335.Dm_build_290(Dm_build_633, int(dm_build_366)), true) 140 141 dm_build_363.dm_build_335.Dm_build_14(Dm_build_633) 142 143 dm_build_363.dm_build_335.Dm_build_79(retBytes) 144 145 dm_build_364.dm_build_739(int32(len(retBytes))) 146 } 147 } 148 149 if dm_build_363.dm_build_335.Dm_build_12() > Dm_build_605 { 150 return ECGO_MSG_TOO_LONG.throw() 151 } 152 153 dm_build_364.dm_build_734() 154 if dm_build_363.dm_build_594(dm_build_364) { 155 if dm_build_363.dm_build_334 != nil { 156 dm_build_363.dm_build_335.Dm_build_17(0) 157 dm_build_363.dm_build_335.Dm_build_36(dm_build_363.dm_build_334) 158 } 159 } else { 160 dm_build_363.dm_build_335.Dm_build_17(0) 161 dm_build_363.dm_build_335.Dm_build_36(dm_build_363.dm_build_333) 162 } 163 return nil 164 } 165 166 func (dm_build_368 *dm_build_332) dm_build_367(dm_build_369 dm_build_725) (err error) { 167 defer func() { 168 if p := recover(); p != nil { 169 if _, ok := p.(string); ok { 170 err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw() 171 } else { 172 panic(p) 173 } 174 } 175 }() 176 177 dm_build_371 := int32(0) 178 if dm_build_368.dm_build_594(dm_build_369) { 179 if dm_build_368.dm_build_334 != nil { 180 dm_build_368.dm_build_335.Dm_build_14(0) 181 dm_build_368.dm_build_335.Dm_build_30(dm_build_368.dm_build_334, Dm_build_633) 182 dm_build_371 = dm_build_369.dm_build_738() 183 if dm_build_371 > 0 { 184 dm_build_368.dm_build_335.Dm_build_30(dm_build_368.dm_build_334, int(dm_build_371)) 185 } 186 } 187 } else { 188 189 dm_build_368.dm_build_335.Dm_build_14(0) 190 dm_build_368.dm_build_335.Dm_build_30(dm_build_368.dm_build_333, Dm_build_633) 191 dm_build_371 = dm_build_369.dm_build_738() 192 193 if dm_build_371 > 0 { 194 dm_build_368.dm_build_335.Dm_build_30(dm_build_368.dm_build_333, int(dm_build_371)) 195 } 196 } 197 198 dm_build_369.dm_build_735() 199 200 dm_build_371 = dm_build_369.dm_build_738() 201 if dm_build_371 <= 0 { 202 return nil 203 } 204 205 if dm_build_368.dm_build_339 { 206 ebytes := dm_build_368.dm_build_335.Dm_build_290(Dm_build_633, int(dm_build_371)) 207 bytes, err := dm_build_368.dm_build_337.Decrypt(ebytes, true) 208 if err != nil { 209 return err 210 } 211 dm_build_368.dm_build_335.Dm_build_14(Dm_build_633) 212 dm_build_368.dm_build_335.Dm_build_79(bytes) 213 dm_build_369.dm_build_739(int32(len(bytes))) 214 } 215 216 if dm_build_368.dm_build_358(dm_build_369) { 217 218 dm_build_371 = dm_build_369.dm_build_738() 219 cbytes := dm_build_368.dm_build_335.Dm_build_290(Dm_build_633+ULINT_SIZE, int(dm_build_371-ULINT_SIZE)) 220 bytes, err := UnCompress(cbytes, int(dm_build_368.dm_build_336.dmConnector.compressID)) 221 if err != nil { 222 return err 223 } 224 dm_build_368.dm_build_335.Dm_build_14(Dm_build_633) 225 dm_build_368.dm_build_335.Dm_build_79(bytes) 226 dm_build_369.dm_build_739(int32(len(bytes))) 227 } 228 return nil 229 } 230 231 func (dm_build_373 *dm_build_332) dm_build_372(dm_build_374 dm_build_725) (dm_build_375 interface{}, dm_build_376 error) { 232 dm_build_376 = dm_build_374.dm_build_729(dm_build_374) 233 if dm_build_376 != nil { 234 return nil, dm_build_376 235 } 236 237 dm_build_376 = dm_build_373.dm_build_362(dm_build_374) 238 if dm_build_376 != nil { 239 return nil, dm_build_376 240 } 241 242 dm_build_376 = dm_build_373.dm_build_367(dm_build_374) 243 if dm_build_376 != nil { 244 return nil, dm_build_376 245 } 246 247 return dm_build_374.dm_build_733(dm_build_374) 248 } 249 250 func (dm_build_378 *dm_build_332) dm_build_377() (*dm_build_1162, error) { 251 252 Dm_build_379 := dm_build_1168(dm_build_378) 253 _, dm_build_380 := dm_build_378.dm_build_372(Dm_build_379) 254 if dm_build_380 != nil { 255 return nil, dm_build_380 256 } 257 258 return Dm_build_379, nil 259 } 260 261 func (dm_build_382 *dm_build_332) dm_build_381() error { 262 263 dm_build_383 := dm_build_1030(dm_build_382) 264 _, dm_build_384 := dm_build_382.dm_build_372(dm_build_383) 265 if dm_build_384 != nil { 266 return dm_build_384 267 } 268 269 return nil 270 } 271 272 func (dm_build_386 *dm_build_332) dm_build_385() error { 273 274 var dm_build_387 *dm_build_1162 275 var err error 276 if dm_build_387, err = dm_build_386.dm_build_377(); err != nil { 277 return err 278 } 279 280 if dm_build_386.dm_build_336.sslEncrypt == 2 { 281 if err = dm_build_386.dm_build_590(false); err != nil { 282 return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw() 283 } 284 } else if dm_build_386.dm_build_336.sslEncrypt == 1 { 285 if err = dm_build_386.dm_build_590(true); err != nil { 286 return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw() 287 } 288 } 289 290 if dm_build_386.dm_build_339 || dm_build_386.dm_build_338 { 291 k, err := dm_build_386.dm_build_580() 292 if err != nil { 293 return err 294 } 295 sessionKey := security.ComputeSessionKey(k, dm_build_387.Dm_build_1166) 296 encryptType := dm_build_387.dm_build_1164 297 hashType := int(dm_build_387.Dm_build_1165) 298 if encryptType == -1 { 299 encryptType = security.DES_CFB 300 } 301 if hashType == -1 { 302 hashType = security.MD5 303 } 304 err = dm_build_386.dm_build_583(encryptType, sessionKey, dm_build_386.dm_build_336.dmConnector.cipherPath, hashType) 305 if err != nil { 306 return err 307 } 308 } 309 310 if err := dm_build_386.dm_build_381(); err != nil { 311 return err 312 } 313 return nil 314 } 315 316 func (dm_build_390 *dm_build_332) Dm_build_389(dm_build_391 *DmStatement) error { 317 dm_build_392 := dm_build_1191(dm_build_390, dm_build_391) 318 _, dm_build_393 := dm_build_390.dm_build_372(dm_build_392) 319 if dm_build_393 != nil { 320 return dm_build_393 321 } 322 323 return nil 324 } 325 326 func (dm_build_395 *dm_build_332) Dm_build_394(dm_build_396 int32) error { 327 dm_build_397 := dm_build_1201(dm_build_395, dm_build_396) 328 _, dm_build_398 := dm_build_395.dm_build_372(dm_build_397) 329 if dm_build_398 != nil { 330 return dm_build_398 331 } 332 333 return nil 334 } 335 336 func (dm_build_400 *dm_build_332) Dm_build_399(dm_build_401 *DmStatement, dm_build_402 bool, dm_build_403 int16) (*execRetInfo, error) { 337 dm_build_404 := dm_build_1068(dm_build_400, dm_build_401, dm_build_402, dm_build_403) 338 dm_build_405, dm_build_406 := dm_build_400.dm_build_372(dm_build_404) 339 if dm_build_406 != nil { 340 return nil, dm_build_406 341 } 342 return dm_build_405.(*execRetInfo), nil 343 } 344 345 func (dm_build_408 *dm_build_332) Dm_build_407(dm_build_409 *DmStatement, dm_build_410 int16) (*execRetInfo, error) { 346 return dm_build_408.Dm_build_399(dm_build_409, false, Dm_build_685) 347 } 348 349 func (dm_build_412 *dm_build_332) Dm_build_411(dm_build_413 *DmStatement, dm_build_414 []OptParameter) (*execRetInfo, error) { 350 dm_build_415, dm_build_416 := dm_build_412.dm_build_372(dm_build_827(dm_build_412, dm_build_413, dm_build_414)) 351 if dm_build_416 != nil { 352 return nil, dm_build_416 353 } 354 355 return dm_build_415.(*execRetInfo), nil 356 } 357 358 func (dm_build_418 *dm_build_332) Dm_build_417(dm_build_419 *DmStatement, dm_build_420 int16) (*execRetInfo, error) { 359 return dm_build_418.Dm_build_399(dm_build_419, true, dm_build_420) 360 } 361 362 func (dm_build_422 *dm_build_332) Dm_build_421(dm_build_423 *DmStatement, dm_build_424 [][]interface{}) (*execRetInfo, error) { 363 dm_build_425 := dm_build_850(dm_build_422, dm_build_423, dm_build_424) 364 dm_build_426, dm_build_427 := dm_build_422.dm_build_372(dm_build_425) 365 if dm_build_427 != nil { 366 return nil, dm_build_427 367 } 368 return dm_build_426.(*execRetInfo), nil 369 } 370 371 func (dm_build_429 *dm_build_332) Dm_build_428(dm_build_430 *DmStatement, dm_build_431 [][]interface{}, dm_build_432 bool) (*execRetInfo, error) { 372 var dm_build_433, dm_build_434 = 0, 0 373 var dm_build_435 = len(dm_build_431) 374 var dm_build_436 [][]interface{} 375 var dm_build_437 = NewExceInfo() 376 dm_build_437.updateCounts = make([]int64, dm_build_435) 377 var dm_build_438 = false 378 for dm_build_433 < dm_build_435 { 379 for dm_build_434 = dm_build_433; dm_build_434 < dm_build_435; dm_build_434++ { 380 paramData := dm_build_431[dm_build_434] 381 bindData := make([]interface{}, dm_build_430.paramCount) 382 dm_build_438 = false 383 for icol := 0; icol < int(dm_build_430.paramCount); icol++ { 384 if dm_build_430.params[icol].ioType == IO_TYPE_OUT { 385 continue 386 } 387 if dm_build_429.dm_build_563(bindData, paramData, icol) { 388 dm_build_438 = true 389 break 390 } 391 } 392 393 if dm_build_438 { 394 break 395 } 396 dm_build_436 = append(dm_build_436, bindData) 397 } 398 399 if dm_build_434 != dm_build_433 { 400 tmpExecInfo, err := dm_build_429.Dm_build_421(dm_build_430, dm_build_436) 401 if err != nil { 402 return nil, err 403 } 404 dm_build_436 = dm_build_436[0:0] 405 dm_build_437.union(tmpExecInfo, dm_build_433, dm_build_434-dm_build_433) 406 } 407 408 if dm_build_434 < dm_build_435 { 409 tmpExecInfo, err := dm_build_429.Dm_build_439(dm_build_430, dm_build_431[dm_build_434], dm_build_432) 410 if err != nil { 411 return nil, err 412 } 413 414 dm_build_432 = true 415 dm_build_437.union(tmpExecInfo, dm_build_434, 1) 416 } 417 418 dm_build_433 = dm_build_434 + 1 419 } 420 for _, i := range dm_build_437.updateCounts { 421 if i > 0 { 422 dm_build_437.updateCount += i 423 } 424 } 425 return dm_build_437, nil 426 } 427 428 func (dm_build_440 *dm_build_332) Dm_build_439(dm_build_441 *DmStatement, dm_build_442 []interface{}, dm_build_443 bool) (*execRetInfo, error) { 429 430 var dm_build_444 = make([]interface{}, dm_build_441.paramCount) 431 for icol := 0; icol < int(dm_build_441.paramCount); icol++ { 432 if dm_build_441.params[icol].ioType == IO_TYPE_OUT { 433 continue 434 } 435 if dm_build_440.dm_build_563(dm_build_444, dm_build_442, icol) { 436 437 if !dm_build_443 { 438 preExecute := dm_build_1058(dm_build_440, dm_build_441, dm_build_441.params) 439 dm_build_440.dm_build_372(preExecute) 440 dm_build_443 = true 441 } 442 443 dm_build_440.dm_build_569(dm_build_441, dm_build_441.params[icol], icol, dm_build_442[icol].(iOffRowBinder)) 444 dm_build_444[icol] = ParamDataEnum_OFF_ROW 445 } 446 } 447 448 var dm_build_445 = make([][]interface{}, 1, 1) 449 dm_build_445[0] = dm_build_444 450 451 dm_build_446 := dm_build_850(dm_build_440, dm_build_441, dm_build_445) 452 dm_build_447, dm_build_448 := dm_build_440.dm_build_372(dm_build_446) 453 if dm_build_448 != nil { 454 return nil, dm_build_448 455 } 456 return dm_build_447.(*execRetInfo), nil 457 } 458 459 func (dm_build_450 *dm_build_332) Dm_build_449(dm_build_451 *DmStatement, dm_build_452 int16) (*execRetInfo, error) { 460 dm_build_453 := dm_build_1045(dm_build_450, dm_build_451, dm_build_452) 461 462 dm_build_454, dm_build_455 := dm_build_450.dm_build_372(dm_build_453) 463 if dm_build_455 != nil { 464 return nil, dm_build_455 465 } 466 return dm_build_454.(*execRetInfo), nil 467 } 468 469 func (dm_build_457 *dm_build_332) Dm_build_456(dm_build_458 *innerRows, dm_build_459 int64) (*execRetInfo, error) { 470 dm_build_460 := dm_build_950(dm_build_457, dm_build_458, dm_build_459, INT64_MAX) 471 dm_build_461, dm_build_462 := dm_build_457.dm_build_372(dm_build_460) 472 if dm_build_462 != nil { 473 return nil, dm_build_462 474 } 475 return dm_build_461.(*execRetInfo), nil 476 } 477 478 func (dm_build_464 *dm_build_332) Commit() error { 479 dm_build_465 := dm_build_813(dm_build_464) 480 _, dm_build_466 := dm_build_464.dm_build_372(dm_build_465) 481 if dm_build_466 != nil { 482 return dm_build_466 483 } 484 485 return nil 486 } 487 488 func (dm_build_468 *dm_build_332) Rollback() error { 489 dm_build_469 := dm_build_1106(dm_build_468) 490 _, dm_build_470 := dm_build_468.dm_build_372(dm_build_469) 491 if dm_build_470 != nil { 492 return dm_build_470 493 } 494 495 return nil 496 } 497 498 func (dm_build_472 *dm_build_332) Dm_build_471(dm_build_473 *DmConnection) error { 499 dm_build_474 := dm_build_1111(dm_build_472, dm_build_473.IsoLevel) 500 _, dm_build_475 := dm_build_472.dm_build_372(dm_build_474) 501 if dm_build_475 != nil { 502 return dm_build_475 503 } 504 505 return nil 506 } 507 508 func (dm_build_477 *dm_build_332) Dm_build_476(dm_build_478 *DmStatement, dm_build_479 string) error { 509 dm_build_480 := dm_build_818(dm_build_477, dm_build_478, dm_build_479) 510 _, dm_build_481 := dm_build_477.dm_build_372(dm_build_480) 511 if dm_build_481 != nil { 512 return dm_build_481 513 } 514 515 return nil 516 } 517 518 func (dm_build_483 *dm_build_332) Dm_build_482(dm_build_484 []uint32) ([]int64, error) { 519 dm_build_485 := dm_build_1209(dm_build_483, dm_build_484) 520 dm_build_486, dm_build_487 := dm_build_483.dm_build_372(dm_build_485) 521 if dm_build_487 != nil { 522 return nil, dm_build_487 523 } 524 return dm_build_486.([]int64), nil 525 } 526 527 func (dm_build_489 *dm_build_332) Close() error { 528 if dm_build_489.dm_build_343 { 529 return nil 530 } 531 532 dm_build_490 := dm_build_489.dm_build_333.Close() 533 if dm_build_490 != nil { 534 return dm_build_490 535 } 536 537 dm_build_489.dm_build_336 = nil 538 dm_build_489.dm_build_343 = true 539 return nil 540 } 541 542 func (dm_build_492 *dm_build_332) dm_build_491(dm_build_493 *lob) (int64, error) { 543 dm_build_494 := dm_build_981(dm_build_492, dm_build_493) 544 dm_build_495, dm_build_496 := dm_build_492.dm_build_372(dm_build_494) 545 if dm_build_496 != nil { 546 return 0, dm_build_496 547 } 548 return dm_build_495.(int64), nil 549 } 550 551 func (dm_build_498 *dm_build_332) dm_build_497(dm_build_499 *lob, dm_build_500 int32, dm_build_501 int32) ([]byte, error) { 552 dm_build_502 := dm_build_968(dm_build_498, dm_build_499, int(dm_build_500), int(dm_build_501)) 553 dm_build_503, dm_build_504 := dm_build_498.dm_build_372(dm_build_502) 554 if dm_build_504 != nil { 555 return nil, dm_build_504 556 } 557 return dm_build_503.([]byte), nil 558 } 559 560 func (dm_build_506 *dm_build_332) dm_build_505(dm_build_507 *DmBlob, dm_build_508 int32, dm_build_509 int32) ([]byte, error) { 561 var dm_build_510 = make([]byte, dm_build_509) 562 var dm_build_511 int32 = 0 563 var dm_build_512 int32 = 0 564 var dm_build_513 []byte 565 var dm_build_514 error 566 for dm_build_511 < dm_build_509 { 567 dm_build_512 = dm_build_509 - dm_build_511 568 if dm_build_512 > Dm_build_718 { 569 dm_build_512 = Dm_build_718 570 } 571 dm_build_513, dm_build_514 = dm_build_506.dm_build_497(&dm_build_507.lob, dm_build_508, dm_build_512) 572 if dm_build_514 != nil { 573 return nil, dm_build_514 574 } 575 if dm_build_513 == nil || len(dm_build_513) == 0 { 576 break 577 } 578 Dm_build_1220.Dm_build_1276(dm_build_510, int(dm_build_511), dm_build_513, 0, len(dm_build_513)) 579 dm_build_511 += int32(len(dm_build_513)) 580 dm_build_508 += int32(len(dm_build_513)) 581 if dm_build_507.readOver { 582 break 583 } 584 } 585 return dm_build_510, nil 586 } 587 588 func (dm_build_516 *dm_build_332) dm_build_515(dm_build_517 *DmClob, dm_build_518 int32, dm_build_519 int32) (string, error) { 589 var dm_build_520 bytes.Buffer 590 var dm_build_521 int32 = 0 591 var dm_build_522 int32 = 0 592 var dm_build_523 []byte 593 var dm_build_524 string 594 var dm_build_525 error 595 for dm_build_521 < dm_build_519 { 596 dm_build_522 = dm_build_519 - dm_build_521 597 if dm_build_522 > Dm_build_718/2 { 598 dm_build_522 = Dm_build_718 / 2 599 } 600 dm_build_523, dm_build_525 = dm_build_516.dm_build_497(&dm_build_517.lob, dm_build_518, dm_build_522) 601 if dm_build_525 != nil { 602 return "", dm_build_525 603 } 604 if dm_build_523 == nil || len(dm_build_523) == 0 { 605 break 606 } 607 dm_build_524 = Dm_build_1220.Dm_build_1377(dm_build_523, 0, len(dm_build_523), dm_build_517.serverEncoding, dm_build_516.dm_build_336) 608 609 dm_build_520.WriteString(dm_build_524) 610 dm_build_521 += int32(len(dm_build_524)) 611 dm_build_518 += int32(len(dm_build_524)) 612 if dm_build_517.readOver { 613 break 614 } 615 } 616 return dm_build_520.String(), nil 617 } 618 619 func (dm_build_527 *dm_build_332) dm_build_526(dm_build_528 *DmClob, dm_build_529 int, dm_build_530 string, dm_build_531 string) (int, error) { 620 var dm_build_532 = Dm_build_1220.Dm_build_1433(dm_build_530, dm_build_531, dm_build_527.dm_build_336) 621 var dm_build_533 = 0 622 var dm_build_534 = len(dm_build_532) 623 var dm_build_535 = 0 624 var dm_build_536 = 0 625 var dm_build_537 = 0 626 var dm_build_538 = dm_build_534/Dm_build_717 + 1 627 var dm_build_539 byte = 0 628 var dm_build_540 byte = 0x01 629 var dm_build_541 byte = 0x02 630 for i := 0; i < dm_build_538; i++ { 631 dm_build_539 = 0 632 if i == 0 { 633 dm_build_539 |= dm_build_540 634 } 635 if i == dm_build_538-1 { 636 dm_build_539 |= dm_build_541 637 } 638 dm_build_537 = dm_build_534 - dm_build_536 639 if dm_build_537 > Dm_build_717 { 640 dm_build_537 = Dm_build_717 641 } 642 643 setLobData := dm_build_1125(dm_build_527, &dm_build_528.lob, dm_build_539, dm_build_529, dm_build_532, dm_build_533, dm_build_537) 644 ret, err := dm_build_527.dm_build_372(setLobData) 645 if err != nil { 646 return 0, err 647 } 648 tmp := ret.(int32) 649 if err != nil { 650 return -1, err 651 } 652 if tmp <= 0 { 653 return dm_build_535, nil 654 } else { 655 dm_build_529 += int(tmp) 656 dm_build_535 += int(tmp) 657 dm_build_536 += dm_build_537 658 dm_build_533 += dm_build_537 659 } 660 } 661 return dm_build_535, nil 662 } 663 664 func (dm_build_543 *dm_build_332) dm_build_542(dm_build_544 *DmBlob, dm_build_545 int, dm_build_546 []byte) (int, error) { 665 var dm_build_547 = 0 666 var dm_build_548 = len(dm_build_546) 667 var dm_build_549 = 0 668 var dm_build_550 = 0 669 var dm_build_551 = 0 670 var dm_build_552 = dm_build_548/Dm_build_717 + 1 671 var dm_build_553 byte = 0 672 var dm_build_554 byte = 0x01 673 var dm_build_555 byte = 0x02 674 for i := 0; i < dm_build_552; i++ { 675 dm_build_553 = 0 676 if i == 0 { 677 dm_build_553 |= dm_build_554 678 } 679 if i == dm_build_552-1 { 680 dm_build_553 |= dm_build_555 681 } 682 dm_build_551 = dm_build_548 - dm_build_550 683 if dm_build_551 > Dm_build_717 { 684 dm_build_551 = Dm_build_717 685 } 686 687 setLobData := dm_build_1125(dm_build_543, &dm_build_544.lob, dm_build_553, dm_build_545, dm_build_546, dm_build_547, dm_build_551) 688 ret, err := dm_build_543.dm_build_372(setLobData) 689 if err != nil { 690 return 0, err 691 } 692 tmp := ret.(int32) 693 if tmp <= 0 { 694 return dm_build_549, nil 695 } else { 696 dm_build_545 += int(tmp) 697 dm_build_549 += int(tmp) 698 dm_build_550 += dm_build_551 699 dm_build_547 += dm_build_551 700 } 701 } 702 return dm_build_549, nil 703 } 704 705 func (dm_build_557 *dm_build_332) dm_build_556(dm_build_558 *lob, dm_build_559 int) (int64, error) { 706 dm_build_560 := dm_build_992(dm_build_557, dm_build_558, dm_build_559) 707 dm_build_561, dm_build_562 := dm_build_557.dm_build_372(dm_build_560) 708 if dm_build_562 != nil { 709 return dm_build_558.length, dm_build_562 710 } 711 return dm_build_561.(int64), nil 712 } 713 714 func (dm_build_564 *dm_build_332) dm_build_563(dm_build_565 []interface{}, dm_build_566 []interface{}, dm_build_567 int) bool { 715 var dm_build_568 = false 716 if dm_build_567 >= len(dm_build_566) || dm_build_566[dm_build_567] == nil { 717 dm_build_565[dm_build_567] = ParamDataEnum_Null 718 } else if binder, ok := dm_build_566[dm_build_567].(iOffRowBinder); ok { 719 dm_build_568 = true 720 dm_build_565[dm_build_567] = ParamDataEnum_OFF_ROW 721 var lob lob 722 if l, ok := binder.getObj().(DmBlob); ok { 723 lob = l.lob 724 } else if l, ok := binder.getObj().(DmClob); ok { 725 lob = l.lob 726 } 727 if &lob != nil && lob.canOptimized(dm_build_564.dm_build_336) { 728 dm_build_565[dm_build_567] = &lobCtl{lob.buildCtlData()} 729 dm_build_568 = false 730 } 731 } else { 732 dm_build_565[dm_build_567] = dm_build_566[dm_build_567] 733 } 734 return dm_build_568 735 } 736 737 func (dm_build_570 *dm_build_332) dm_build_569(dm_build_571 *DmStatement, dm_build_572 parameter, dm_build_573 int, dm_build_574 iOffRowBinder) error { 738 var dm_build_575 = Dm_build_1503() 739 dm_build_574.read(dm_build_575) 740 var dm_build_576 = 0 741 for !dm_build_574.isReadOver() || dm_build_575.Dm_build_1504() > 0 { 742 if !dm_build_574.isReadOver() && dm_build_575.Dm_build_1504() < Dm_build_717 { 743 dm_build_574.read(dm_build_575) 744 } 745 if dm_build_575.Dm_build_1504() > Dm_build_717 { 746 dm_build_576 = Dm_build_717 747 } else { 748 dm_build_576 = dm_build_575.Dm_build_1504() 749 } 750 751 putData := dm_build_1096(dm_build_570, dm_build_571, int16(dm_build_573), dm_build_575, int32(dm_build_576)) 752 _, err := dm_build_570.dm_build_372(putData) 753 if err != nil { 754 return err 755 } 756 } 757 return nil 758 } 759 760 func (dm_build_578 *dm_build_332) dm_build_577() ([]byte, error) { 761 var dm_build_579 error 762 if dm_build_578.dm_build_340 == nil { 763 if dm_build_578.dm_build_340, dm_build_579 = security.NewClientKeyPair(); dm_build_579 != nil { 764 return nil, dm_build_579 765 } 766 } 767 return security.Bn2Bytes(dm_build_578.dm_build_340.GetY(), security.DH_KEY_LENGTH), nil 768 } 769 770 func (dm_build_581 *dm_build_332) dm_build_580() (*security.DhKey, error) { 771 var dm_build_582 error 772 if dm_build_581.dm_build_340 == nil { 773 if dm_build_581.dm_build_340, dm_build_582 = security.NewClientKeyPair(); dm_build_582 != nil { 774 return nil, dm_build_582 775 } 776 } 777 return dm_build_581.dm_build_340, nil 778 } 779 780 func (dm_build_584 *dm_build_332) dm_build_583(dm_build_585 int, dm_build_586 []byte, dm_build_587 string, dm_build_588 int) (dm_build_589 error) { 781 if dm_build_585 > 0 && dm_build_585 < security.MIN_EXTERNAL_CIPHER_ID && dm_build_586 != nil { 782 dm_build_584.dm_build_337, dm_build_589 = security.NewSymmCipher(dm_build_585, dm_build_586) 783 } else if dm_build_585 >= security.MIN_EXTERNAL_CIPHER_ID { 784 if dm_build_584.dm_build_337, dm_build_589 = security.NewThirdPartCipher(dm_build_585, dm_build_586, dm_build_587, dm_build_588); dm_build_589 != nil { 785 dm_build_589 = THIRD_PART_CIPHER_INIT_FAILED.addDetailln(dm_build_589.Error()).throw() 786 } 787 } 788 return 789 } 790 791 func (dm_build_591 *dm_build_332) dm_build_590(dm_build_592 bool) (dm_build_593 error) { 792 if dm_build_591.dm_build_334, dm_build_593 = security.NewTLSFromTCP(dm_build_591.dm_build_333, dm_build_591.dm_build_336.dmConnector.sslCertPath, dm_build_591.dm_build_336.dmConnector.sslKeyPath, dm_build_591.dm_build_336.dmConnector.user); dm_build_593 != nil { 793 return 794 } 795 if !dm_build_592 { 796 dm_build_591.dm_build_334 = nil 797 } 798 return 799 } 800 801 func (dm_build_595 *dm_build_332) dm_build_594(dm_build_596 dm_build_725) bool { 802 return dm_build_596.dm_build_740() != Dm_build_632 && dm_build_595.dm_build_336.sslEncrypt == 1 803 }