gitee.com/curryzheng/dm@v0.0.1/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 "gitee.com/curryzheng/dm/security" 11 "net" 12 "strconv" 13 "time" 14 "unicode/utf8" 15 ) 16 17 const ( 18 Dm_build_688 = 8192 19 Dm_build_689 = 2 * time.Second 20 ) 21 22 type dm_build_690 struct { 23 dm_build_691 *net.TCPConn 24 dm_build_692 *tls.Conn 25 dm_build_693 *Dm_build_358 26 dm_build_694 *DmConnection 27 dm_build_695 security.Cipher 28 dm_build_696 bool 29 dm_build_697 bool 30 dm_build_698 *security.DhKey 31 32 dm_build_699 bool 33 dm_build_700 string 34 dm_build_701 bool 35 } 36 37 func dm_build_702(dm_build_703 *DmConnection) (*dm_build_690, error) { 38 dm_build_704, dm_build_705 := dm_build_707(dm_build_703.dmConnector.host+":"+strconv.Itoa(int(dm_build_703.dmConnector.port)), time.Duration(dm_build_703.dmConnector.socketTimeout)*time.Second) 39 if dm_build_705 != nil { 40 return nil, dm_build_705 41 } 42 43 dm_build_706 := dm_build_690{} 44 dm_build_706.dm_build_691 = dm_build_704 45 dm_build_706.dm_build_693 = Dm_build_361(Dm_build_962) 46 dm_build_706.dm_build_694 = dm_build_703 47 dm_build_706.dm_build_696 = false 48 dm_build_706.dm_build_697 = false 49 dm_build_706.dm_build_699 = false 50 dm_build_706.dm_build_700 = "" 51 dm_build_706.dm_build_701 = false 52 dm_build_703.Access = &dm_build_706 53 54 return &dm_build_706, nil 55 } 56 57 func dm_build_707(dm_build_708 string, dm_build_709 time.Duration) (*net.TCPConn, error) { 58 dm_build_710, dm_build_711 := net.DialTimeout("tcp", dm_build_708, dm_build_709) 59 if dm_build_711 != nil { 60 return nil, ECGO_COMMUNITION_ERROR.addDetail("\tdial address: " + dm_build_708).throw() 61 } 62 63 if tcpConn, ok := dm_build_710.(*net.TCPConn); ok { 64 65 tcpConn.SetKeepAlive(true) 66 tcpConn.SetKeepAlivePeriod(Dm_build_689) 67 tcpConn.SetNoDelay(true) 68 69 return tcpConn, nil 70 } 71 72 return nil, nil 73 } 74 75 func (dm_build_713 *dm_build_690) dm_build_712(dm_build_714 dm_build_1083) bool { 76 var dm_build_715 = dm_build_713.dm_build_694.dmConnector.compress 77 if dm_build_714.dm_build_1098() == Dm_build_990 || dm_build_715 == Dm_build_1039 { 78 return false 79 } 80 81 if dm_build_715 == Dm_build_1037 { 82 return true 83 } else if dm_build_715 == Dm_build_1038 { 84 return !dm_build_713.dm_build_694.Local && dm_build_714.dm_build_1096() > Dm_build_1036 85 } 86 87 return false 88 } 89 90 func (dm_build_717 *dm_build_690) dm_build_716(dm_build_718 dm_build_1083) bool { 91 var dm_build_719 = dm_build_717.dm_build_694.dmConnector.compress 92 if dm_build_718.dm_build_1098() == Dm_build_990 || dm_build_719 == Dm_build_1039 { 93 return false 94 } 95 96 if dm_build_719 == Dm_build_1037 { 97 return true 98 } else if dm_build_719 == Dm_build_1038 { 99 return dm_build_717.dm_build_693.Dm_build_621(Dm_build_998) == 1 100 } 101 102 return false 103 } 104 105 func (dm_build_721 *dm_build_690) dm_build_720(dm_build_722 dm_build_1083) (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_724 := dm_build_722.dm_build_1096() 117 118 if dm_build_724 > 0 { 119 120 if dm_build_721.dm_build_712(dm_build_722) { 121 var retBytes, err = Compress(dm_build_721.dm_build_693, Dm_build_991, int(dm_build_724), int(dm_build_721.dm_build_694.dmConnector.compressID)) 122 if err != nil { 123 return err 124 } 125 126 dm_build_721.dm_build_693.Dm_build_372(Dm_build_991) 127 128 dm_build_721.dm_build_693.Dm_build_409(dm_build_724) 129 130 dm_build_721.dm_build_693.Dm_build_437(retBytes) 131 132 dm_build_722.dm_build_1097(int32(len(retBytes)) + ULINT_SIZE) 133 134 dm_build_721.dm_build_693.Dm_build_541(Dm_build_998, 1) 135 } 136 137 if dm_build_721.dm_build_697 { 138 dm_build_724 = dm_build_722.dm_build_1096() 139 var retBytes = dm_build_721.dm_build_695.Encrypt(dm_build_721.dm_build_693.Dm_build_648(Dm_build_991, int(dm_build_724)), true) 140 141 dm_build_721.dm_build_693.Dm_build_372(Dm_build_991) 142 143 dm_build_721.dm_build_693.Dm_build_437(retBytes) 144 145 dm_build_722.dm_build_1097(int32(len(retBytes))) 146 } 147 } 148 149 if dm_build_721.dm_build_693.Dm_build_370() > Dm_build_963 { 150 return ECGO_MSG_TOO_LONG.throw() 151 } 152 153 dm_build_722.dm_build_1092() 154 if dm_build_721.dm_build_952(dm_build_722) { 155 if dm_build_721.dm_build_692 != nil { 156 dm_build_721.dm_build_693.Dm_build_375(0) 157 if _, err := dm_build_721.dm_build_693.Dm_build_394(dm_build_721.dm_build_692); err != nil { 158 return err 159 } 160 } 161 } else { 162 dm_build_721.dm_build_693.Dm_build_375(0) 163 if _, err := dm_build_721.dm_build_693.Dm_build_394(dm_build_721.dm_build_691); err != nil { 164 return err 165 } 166 } 167 return nil 168 } 169 170 func (dm_build_726 *dm_build_690) dm_build_725(dm_build_727 dm_build_1083) (err error) { 171 defer func() { 172 if p := recover(); p != nil { 173 if _, ok := p.(string); ok { 174 err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw() 175 } else { 176 panic(p) 177 } 178 } 179 }() 180 181 dm_build_729 := int32(0) 182 if dm_build_726.dm_build_952(dm_build_727) { 183 if dm_build_726.dm_build_692 != nil { 184 dm_build_726.dm_build_693.Dm_build_372(0) 185 if _, err := dm_build_726.dm_build_693.Dm_build_388(dm_build_726.dm_build_692, Dm_build_991); err != nil { 186 return err 187 } 188 189 dm_build_729 = dm_build_727.dm_build_1096() 190 if dm_build_729 > 0 { 191 if _, err := dm_build_726.dm_build_693.Dm_build_388(dm_build_726.dm_build_692, int(dm_build_729)); err != nil { 192 return err 193 } 194 } 195 } 196 } else { 197 198 dm_build_726.dm_build_693.Dm_build_372(0) 199 if _, err := dm_build_726.dm_build_693.Dm_build_388(dm_build_726.dm_build_691, Dm_build_991); err != nil { 200 return err 201 } 202 dm_build_729 = dm_build_727.dm_build_1096() 203 204 if dm_build_729 > 0 { 205 if _, err := dm_build_726.dm_build_693.Dm_build_388(dm_build_726.dm_build_691, int(dm_build_729)); err != nil { 206 return err 207 } 208 } 209 } 210 211 dm_build_727.dm_build_1093() 212 213 dm_build_729 = dm_build_727.dm_build_1096() 214 if dm_build_729 <= 0 { 215 return nil 216 } 217 218 if dm_build_726.dm_build_697 { 219 ebytes := dm_build_726.dm_build_693.Dm_build_648(Dm_build_991, int(dm_build_729)) 220 bytes, err := dm_build_726.dm_build_695.Decrypt(ebytes, true) 221 if err != nil { 222 return err 223 } 224 dm_build_726.dm_build_693.Dm_build_372(Dm_build_991) 225 dm_build_726.dm_build_693.Dm_build_437(bytes) 226 dm_build_727.dm_build_1097(int32(len(bytes))) 227 } 228 229 if dm_build_726.dm_build_716(dm_build_727) { 230 231 dm_build_729 = dm_build_727.dm_build_1096() 232 cbytes := dm_build_726.dm_build_693.Dm_build_648(Dm_build_991+ULINT_SIZE, int(dm_build_729-ULINT_SIZE)) 233 bytes, err := UnCompress(cbytes, int(dm_build_726.dm_build_694.dmConnector.compressID)) 234 if err != nil { 235 return err 236 } 237 dm_build_726.dm_build_693.Dm_build_372(Dm_build_991) 238 dm_build_726.dm_build_693.Dm_build_437(bytes) 239 dm_build_727.dm_build_1097(int32(len(bytes))) 240 } 241 return nil 242 } 243 244 func (dm_build_731 *dm_build_690) dm_build_730(dm_build_732 dm_build_1083) (dm_build_733 interface{}, dm_build_734 error) { 245 dm_build_734 = dm_build_732.dm_build_1087(dm_build_732) 246 if dm_build_734 != nil { 247 return nil, dm_build_734 248 } 249 250 dm_build_734 = dm_build_731.dm_build_720(dm_build_732) 251 if dm_build_734 != nil { 252 return nil, dm_build_734 253 } 254 255 dm_build_734 = dm_build_731.dm_build_725(dm_build_732) 256 if dm_build_734 != nil { 257 return nil, dm_build_734 258 } 259 260 return dm_build_732.dm_build_1091(dm_build_732) 261 } 262 263 func (dm_build_736 *dm_build_690) dm_build_735() (*dm_build_1520, error) { 264 265 Dm_build_737 := dm_build_1526(dm_build_736) 266 _, dm_build_738 := dm_build_736.dm_build_730(Dm_build_737) 267 if dm_build_738 != nil { 268 return nil, dm_build_738 269 } 270 271 return Dm_build_737, nil 272 } 273 274 func (dm_build_740 *dm_build_690) dm_build_739() error { 275 276 dm_build_741 := dm_build_1388(dm_build_740) 277 _, dm_build_742 := dm_build_740.dm_build_730(dm_build_741) 278 if dm_build_742 != nil { 279 return dm_build_742 280 } 281 282 return nil 283 } 284 285 func (dm_build_744 *dm_build_690) dm_build_743() error { 286 287 var dm_build_745 *dm_build_1520 288 var err error 289 if dm_build_745, err = dm_build_744.dm_build_735(); err != nil { 290 return err 291 } 292 293 if dm_build_744.dm_build_694.sslEncrypt == 2 { 294 if err = dm_build_744.dm_build_948(false); err != nil { 295 return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw() 296 } 297 } else if dm_build_744.dm_build_694.sslEncrypt == 1 { 298 if err = dm_build_744.dm_build_948(true); err != nil { 299 return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw() 300 } 301 } 302 303 if dm_build_744.dm_build_697 || dm_build_744.dm_build_696 { 304 k, err := dm_build_744.dm_build_938() 305 if err != nil { 306 return err 307 } 308 sessionKey := security.ComputeSessionKey(k, dm_build_745.Dm_build_1524) 309 encryptType := dm_build_745.dm_build_1522 310 hashType := int(dm_build_745.Dm_build_1523) 311 if encryptType == -1 { 312 encryptType = security.DES_CFB 313 } 314 if hashType == -1 { 315 hashType = security.MD5 316 } 317 err = dm_build_744.dm_build_941(encryptType, sessionKey, dm_build_744.dm_build_694.dmConnector.cipherPath, hashType) 318 if err != nil { 319 return err 320 } 321 } 322 323 if err := dm_build_744.dm_build_739(); err != nil { 324 return err 325 } 326 return nil 327 } 328 329 func (dm_build_748 *dm_build_690) Dm_build_747(dm_build_749 *DmStatement) error { 330 dm_build_750 := dm_build_1549(dm_build_748, dm_build_749) 331 _, dm_build_751 := dm_build_748.dm_build_730(dm_build_750) 332 if dm_build_751 != nil { 333 return dm_build_751 334 } 335 336 return nil 337 } 338 339 func (dm_build_753 *dm_build_690) Dm_build_752(dm_build_754 int32) error { 340 dm_build_755 := dm_build_1559(dm_build_753, dm_build_754) 341 _, dm_build_756 := dm_build_753.dm_build_730(dm_build_755) 342 if dm_build_756 != nil { 343 return dm_build_756 344 } 345 346 return nil 347 } 348 349 func (dm_build_758 *dm_build_690) Dm_build_757(dm_build_759 *DmStatement, dm_build_760 bool, dm_build_761 int16) (*execRetInfo, error) { 350 dm_build_762 := dm_build_1426(dm_build_758, dm_build_759, dm_build_760, dm_build_761) 351 dm_build_763, dm_build_764 := dm_build_758.dm_build_730(dm_build_762) 352 if dm_build_764 != nil { 353 return nil, dm_build_764 354 } 355 return dm_build_763.(*execRetInfo), nil 356 } 357 358 func (dm_build_766 *dm_build_690) Dm_build_765(dm_build_767 *DmStatement, dm_build_768 int16) (*execRetInfo, error) { 359 return dm_build_766.Dm_build_757(dm_build_767, false, Dm_build_1043) 360 } 361 362 func (dm_build_770 *dm_build_690) Dm_build_769(dm_build_771 *DmStatement, dm_build_772 []OptParameter) (*execRetInfo, error) { 363 dm_build_773, dm_build_774 := dm_build_770.dm_build_730(dm_build_1185(dm_build_770, dm_build_771, dm_build_772)) 364 if dm_build_774 != nil { 365 return nil, dm_build_774 366 } 367 368 return dm_build_773.(*execRetInfo), nil 369 } 370 371 func (dm_build_776 *dm_build_690) Dm_build_775(dm_build_777 *DmStatement, dm_build_778 int16) (*execRetInfo, error) { 372 return dm_build_776.Dm_build_757(dm_build_777, true, dm_build_778) 373 } 374 375 func (dm_build_780 *dm_build_690) Dm_build_779(dm_build_781 *DmStatement, dm_build_782 [][]interface{}) (*execRetInfo, error) { 376 dm_build_783 := dm_build_1208(dm_build_780, dm_build_781, dm_build_782) 377 dm_build_784, dm_build_785 := dm_build_780.dm_build_730(dm_build_783) 378 if dm_build_785 != nil { 379 return nil, dm_build_785 380 } 381 return dm_build_784.(*execRetInfo), nil 382 } 383 384 func (dm_build_787 *dm_build_690) Dm_build_786(dm_build_788 *DmStatement, dm_build_789 [][]interface{}, dm_build_790 bool) (*execRetInfo, error) { 385 var dm_build_791, dm_build_792 = 0, 0 386 var dm_build_793 = len(dm_build_789) 387 var dm_build_794 [][]interface{} 388 var dm_build_795 = NewExceInfo() 389 dm_build_795.updateCounts = make([]int64, dm_build_793) 390 var dm_build_796 = false 391 for dm_build_791 < dm_build_793 { 392 for dm_build_792 = dm_build_791; dm_build_792 < dm_build_793; dm_build_792++ { 393 paramData := dm_build_789[dm_build_792] 394 bindData := make([]interface{}, dm_build_788.paramCount) 395 dm_build_796 = false 396 for icol := 0; icol < int(dm_build_788.paramCount); icol++ { 397 if dm_build_788.params[icol].ioType == IO_TYPE_OUT { 398 continue 399 } 400 if dm_build_787.dm_build_921(bindData, paramData, icol) { 401 dm_build_796 = true 402 break 403 } 404 } 405 406 if dm_build_796 { 407 break 408 } 409 dm_build_794 = append(dm_build_794, bindData) 410 } 411 412 if dm_build_792 != dm_build_791 { 413 tmpExecInfo, err := dm_build_787.Dm_build_779(dm_build_788, dm_build_794) 414 if err != nil { 415 return nil, err 416 } 417 dm_build_794 = dm_build_794[0:0] 418 dm_build_795.union(tmpExecInfo, dm_build_791, dm_build_792-dm_build_791) 419 } 420 421 if dm_build_792 < dm_build_793 { 422 tmpExecInfo, err := dm_build_787.Dm_build_797(dm_build_788, dm_build_789[dm_build_792], dm_build_790) 423 if err != nil { 424 return nil, err 425 } 426 427 dm_build_790 = true 428 dm_build_795.union(tmpExecInfo, dm_build_792, 1) 429 } 430 431 dm_build_791 = dm_build_792 + 1 432 } 433 for _, i := range dm_build_795.updateCounts { 434 if i > 0 { 435 dm_build_795.updateCount += i 436 } 437 } 438 return dm_build_795, nil 439 } 440 441 func (dm_build_798 *dm_build_690) Dm_build_797(dm_build_799 *DmStatement, dm_build_800 []interface{}, dm_build_801 bool) (*execRetInfo, error) { 442 443 var dm_build_802 = make([]interface{}, dm_build_799.paramCount) 444 for icol := 0; icol < int(dm_build_799.paramCount); icol++ { 445 if dm_build_799.params[icol].ioType == IO_TYPE_OUT { 446 continue 447 } 448 if dm_build_798.dm_build_921(dm_build_802, dm_build_800, icol) { 449 450 if !dm_build_801 { 451 preExecute := dm_build_1416(dm_build_798, dm_build_799, dm_build_799.params) 452 dm_build_798.dm_build_730(preExecute) 453 dm_build_801 = true 454 } 455 456 dm_build_798.dm_build_927(dm_build_799, dm_build_799.params[icol], icol, dm_build_800[icol].(iOffRowBinder)) 457 dm_build_802[icol] = ParamDataEnum_OFF_ROW 458 } 459 } 460 461 var dm_build_803 = make([][]interface{}, 1, 1) 462 dm_build_803[0] = dm_build_802 463 464 dm_build_804 := dm_build_1208(dm_build_798, dm_build_799, dm_build_803) 465 dm_build_805, dm_build_806 := dm_build_798.dm_build_730(dm_build_804) 466 if dm_build_806 != nil { 467 return nil, dm_build_806 468 } 469 return dm_build_805.(*execRetInfo), nil 470 } 471 472 func (dm_build_808 *dm_build_690) Dm_build_807(dm_build_809 *DmStatement, dm_build_810 int16) (*execRetInfo, error) { 473 dm_build_811 := dm_build_1403(dm_build_808, dm_build_809, dm_build_810) 474 475 dm_build_812, dm_build_813 := dm_build_808.dm_build_730(dm_build_811) 476 if dm_build_813 != nil { 477 return nil, dm_build_813 478 } 479 return dm_build_812.(*execRetInfo), nil 480 } 481 482 func (dm_build_815 *dm_build_690) Dm_build_814(dm_build_816 *innerRows, dm_build_817 int64) (*execRetInfo, error) { 483 dm_build_818 := dm_build_1308(dm_build_815, dm_build_816, dm_build_817, INT64_MAX) 484 dm_build_819, dm_build_820 := dm_build_815.dm_build_730(dm_build_818) 485 if dm_build_820 != nil { 486 return nil, dm_build_820 487 } 488 return dm_build_819.(*execRetInfo), nil 489 } 490 491 func (dm_build_822 *dm_build_690) Commit() error { 492 dm_build_823 := dm_build_1171(dm_build_822) 493 _, dm_build_824 := dm_build_822.dm_build_730(dm_build_823) 494 if dm_build_824 != nil { 495 return dm_build_824 496 } 497 498 return nil 499 } 500 501 func (dm_build_826 *dm_build_690) Rollback() error { 502 dm_build_827 := dm_build_1464(dm_build_826) 503 _, dm_build_828 := dm_build_826.dm_build_730(dm_build_827) 504 if dm_build_828 != nil { 505 return dm_build_828 506 } 507 508 return nil 509 } 510 511 func (dm_build_830 *dm_build_690) Dm_build_829(dm_build_831 *DmConnection) error { 512 dm_build_832 := dm_build_1469(dm_build_830, dm_build_831.IsoLevel) 513 _, dm_build_833 := dm_build_830.dm_build_730(dm_build_832) 514 if dm_build_833 != nil { 515 return dm_build_833 516 } 517 518 return nil 519 } 520 521 func (dm_build_835 *dm_build_690) Dm_build_834(dm_build_836 *DmStatement, dm_build_837 string) error { 522 dm_build_838 := dm_build_1176(dm_build_835, dm_build_836, dm_build_837) 523 _, dm_build_839 := dm_build_835.dm_build_730(dm_build_838) 524 if dm_build_839 != nil { 525 return dm_build_839 526 } 527 528 return nil 529 } 530 531 func (dm_build_841 *dm_build_690) Dm_build_840(dm_build_842 []uint32) ([]int64, error) { 532 dm_build_843 := dm_build_1567(dm_build_841, dm_build_842) 533 dm_build_844, dm_build_845 := dm_build_841.dm_build_730(dm_build_843) 534 if dm_build_845 != nil { 535 return nil, dm_build_845 536 } 537 return dm_build_844.([]int64), nil 538 } 539 540 func (dm_build_847 *dm_build_690) Close() error { 541 if dm_build_847.dm_build_701 { 542 return nil 543 } 544 545 dm_build_848 := dm_build_847.dm_build_691.Close() 546 if dm_build_848 != nil { 547 return dm_build_848 548 } 549 550 dm_build_847.dm_build_694 = nil 551 dm_build_847.dm_build_701 = true 552 return nil 553 } 554 555 func (dm_build_850 *dm_build_690) dm_build_849(dm_build_851 *lob) (int64, error) { 556 dm_build_852 := dm_build_1339(dm_build_850, dm_build_851) 557 dm_build_853, dm_build_854 := dm_build_850.dm_build_730(dm_build_852) 558 if dm_build_854 != nil { 559 return 0, dm_build_854 560 } 561 return dm_build_853.(int64), nil 562 } 563 564 func (dm_build_856 *dm_build_690) dm_build_855(dm_build_857 *lob, dm_build_858 int32, dm_build_859 int32) ([]byte, error) { 565 dm_build_860 := dm_build_1326(dm_build_856, dm_build_857, int(dm_build_858), int(dm_build_859)) 566 dm_build_861, dm_build_862 := dm_build_856.dm_build_730(dm_build_860) 567 if dm_build_862 != nil { 568 return nil, dm_build_862 569 } 570 return dm_build_861.([]byte), nil 571 } 572 573 func (dm_build_864 *dm_build_690) dm_build_863(dm_build_865 *DmBlob, dm_build_866 int32, dm_build_867 int32) ([]byte, error) { 574 var dm_build_868 = make([]byte, dm_build_867) 575 var dm_build_869 int32 = 0 576 var dm_build_870 int32 = 0 577 var dm_build_871 []byte 578 var dm_build_872 error 579 for dm_build_869 < dm_build_867 { 580 dm_build_870 = dm_build_867 - dm_build_869 581 if dm_build_870 > Dm_build_1076 { 582 dm_build_870 = Dm_build_1076 583 } 584 dm_build_871, dm_build_872 = dm_build_864.dm_build_855(&dm_build_865.lob, dm_build_866, dm_build_870) 585 if dm_build_872 != nil { 586 return nil, dm_build_872 587 } 588 if dm_build_871 == nil || len(dm_build_871) == 0 { 589 break 590 } 591 Dm_build_1.Dm_build_57(dm_build_868, int(dm_build_869), dm_build_871, 0, len(dm_build_871)) 592 dm_build_869 += int32(len(dm_build_871)) 593 dm_build_866 += int32(len(dm_build_871)) 594 if dm_build_865.readOver { 595 break 596 } 597 } 598 return dm_build_868, nil 599 } 600 601 func (dm_build_874 *dm_build_690) dm_build_873(dm_build_875 *DmClob, dm_build_876 int32, dm_build_877 int32) (string, error) { 602 var dm_build_878 bytes.Buffer 603 var dm_build_879 int32 = 0 604 var dm_build_880 int32 = 0 605 var dm_build_881 []byte 606 var dm_build_882 string 607 var dm_build_883 error 608 for dm_build_879 < dm_build_877 { 609 dm_build_880 = dm_build_877 - dm_build_879 610 if dm_build_880 > Dm_build_1076/2 { 611 dm_build_880 = Dm_build_1076 / 2 612 } 613 dm_build_881, dm_build_883 = dm_build_874.dm_build_855(&dm_build_875.lob, dm_build_876, dm_build_880) 614 if dm_build_883 != nil { 615 return "", dm_build_883 616 } 617 if dm_build_881 == nil || len(dm_build_881) == 0 { 618 break 619 } 620 dm_build_882 = Dm_build_1.Dm_build_158(dm_build_881, 0, len(dm_build_881), dm_build_875.serverEncoding, dm_build_874.dm_build_694) 621 622 dm_build_878.WriteString(dm_build_882) 623 strLen := utf8.RuneCountInString(dm_build_882) 624 dm_build_879 += int32(strLen) 625 dm_build_876 += int32(strLen) 626 if dm_build_875.readOver { 627 break 628 } 629 } 630 return dm_build_878.String(), nil 631 } 632 633 func (dm_build_885 *dm_build_690) dm_build_884(dm_build_886 *DmClob, dm_build_887 int, dm_build_888 string, dm_build_889 string) (int, error) { 634 var dm_build_890 = Dm_build_1.Dm_build_214(dm_build_888, dm_build_889, dm_build_885.dm_build_694) 635 var dm_build_891 = 0 636 var dm_build_892 = len(dm_build_890) 637 var dm_build_893 = 0 638 var dm_build_894 = 0 639 var dm_build_895 = 0 640 var dm_build_896 = dm_build_892/Dm_build_1075 + 1 641 var dm_build_897 byte = 0 642 var dm_build_898 byte = 0x01 643 var dm_build_899 byte = 0x02 644 for i := 0; i < dm_build_896; i++ { 645 dm_build_897 = 0 646 if i == 0 { 647 dm_build_897 |= dm_build_898 648 } 649 if i == dm_build_896-1 { 650 dm_build_897 |= dm_build_899 651 } 652 dm_build_895 = dm_build_892 - dm_build_894 653 if dm_build_895 > Dm_build_1075 { 654 dm_build_895 = Dm_build_1075 655 } 656 657 setLobData := dm_build_1483(dm_build_885, &dm_build_886.lob, dm_build_897, dm_build_887, dm_build_890, dm_build_891, dm_build_895) 658 ret, err := dm_build_885.dm_build_730(setLobData) 659 if err != nil { 660 return 0, err 661 } 662 tmp := ret.(int32) 663 if err != nil { 664 return -1, err 665 } 666 if tmp <= 0 { 667 return dm_build_893, nil 668 } else { 669 dm_build_887 += int(tmp) 670 dm_build_893 += int(tmp) 671 dm_build_894 += dm_build_895 672 dm_build_891 += dm_build_895 673 } 674 } 675 return dm_build_893, nil 676 } 677 678 func (dm_build_901 *dm_build_690) dm_build_900(dm_build_902 *DmBlob, dm_build_903 int, dm_build_904 []byte) (int, error) { 679 var dm_build_905 = 0 680 var dm_build_906 = len(dm_build_904) 681 var dm_build_907 = 0 682 var dm_build_908 = 0 683 var dm_build_909 = 0 684 var dm_build_910 = dm_build_906/Dm_build_1075 + 1 685 var dm_build_911 byte = 0 686 var dm_build_912 byte = 0x01 687 var dm_build_913 byte = 0x02 688 for i := 0; i < dm_build_910; i++ { 689 dm_build_911 = 0 690 if i == 0 { 691 dm_build_911 |= dm_build_912 692 } 693 if i == dm_build_910-1 { 694 dm_build_911 |= dm_build_913 695 } 696 dm_build_909 = dm_build_906 - dm_build_908 697 if dm_build_909 > Dm_build_1075 { 698 dm_build_909 = Dm_build_1075 699 } 700 701 setLobData := dm_build_1483(dm_build_901, &dm_build_902.lob, dm_build_911, dm_build_903, dm_build_904, dm_build_905, dm_build_909) 702 ret, err := dm_build_901.dm_build_730(setLobData) 703 if err != nil { 704 return 0, err 705 } 706 tmp := ret.(int32) 707 if tmp <= 0 { 708 return dm_build_907, nil 709 } else { 710 dm_build_903 += int(tmp) 711 dm_build_907 += int(tmp) 712 dm_build_908 += dm_build_909 713 dm_build_905 += dm_build_909 714 } 715 } 716 return dm_build_907, nil 717 } 718 719 func (dm_build_915 *dm_build_690) dm_build_914(dm_build_916 *lob, dm_build_917 int) (int64, error) { 720 dm_build_918 := dm_build_1350(dm_build_915, dm_build_916, dm_build_917) 721 dm_build_919, dm_build_920 := dm_build_915.dm_build_730(dm_build_918) 722 if dm_build_920 != nil { 723 return dm_build_916.length, dm_build_920 724 } 725 return dm_build_919.(int64), nil 726 } 727 728 func (dm_build_922 *dm_build_690) dm_build_921(dm_build_923 []interface{}, dm_build_924 []interface{}, dm_build_925 int) bool { 729 var dm_build_926 = false 730 if dm_build_925 >= len(dm_build_924) || dm_build_924[dm_build_925] == nil { 731 dm_build_923[dm_build_925] = ParamDataEnum_Null 732 } else if binder, ok := dm_build_924[dm_build_925].(iOffRowBinder); ok { 733 dm_build_926 = true 734 dm_build_923[dm_build_925] = ParamDataEnum_OFF_ROW 735 var lob lob 736 if l, ok := binder.getObj().(DmBlob); ok { 737 lob = l.lob 738 } else if l, ok := binder.getObj().(DmClob); ok { 739 lob = l.lob 740 } 741 if &lob != nil && lob.canOptimized(dm_build_922.dm_build_694) { 742 dm_build_923[dm_build_925] = &lobCtl{lob.buildCtlData()} 743 dm_build_926 = false 744 } 745 } else { 746 dm_build_923[dm_build_925] = dm_build_924[dm_build_925] 747 } 748 return dm_build_926 749 } 750 751 func (dm_build_928 *dm_build_690) dm_build_927(dm_build_929 *DmStatement, dm_build_930 parameter, dm_build_931 int, dm_build_932 iOffRowBinder) error { 752 var dm_build_933 = Dm_build_284() 753 dm_build_932.read(dm_build_933) 754 var dm_build_934 = 0 755 for !dm_build_932.isReadOver() || dm_build_933.Dm_build_285() > 0 { 756 if !dm_build_932.isReadOver() && dm_build_933.Dm_build_285() < Dm_build_1075 { 757 dm_build_932.read(dm_build_933) 758 } 759 if dm_build_933.Dm_build_285() > Dm_build_1075 { 760 dm_build_934 = Dm_build_1075 761 } else { 762 dm_build_934 = dm_build_933.Dm_build_285() 763 } 764 765 putData := dm_build_1454(dm_build_928, dm_build_929, int16(dm_build_931), dm_build_933, int32(dm_build_934)) 766 _, err := dm_build_928.dm_build_730(putData) 767 if err != nil { 768 return err 769 } 770 } 771 return nil 772 } 773 774 func (dm_build_936 *dm_build_690) dm_build_935() ([]byte, error) { 775 var dm_build_937 error 776 if dm_build_936.dm_build_698 == nil { 777 if dm_build_936.dm_build_698, dm_build_937 = security.NewClientKeyPair(); dm_build_937 != nil { 778 return nil, dm_build_937 779 } 780 } 781 return security.Bn2Bytes(dm_build_936.dm_build_698.GetY(), security.DH_KEY_LENGTH), nil 782 } 783 784 func (dm_build_939 *dm_build_690) dm_build_938() (*security.DhKey, error) { 785 var dm_build_940 error 786 if dm_build_939.dm_build_698 == nil { 787 if dm_build_939.dm_build_698, dm_build_940 = security.NewClientKeyPair(); dm_build_940 != nil { 788 return nil, dm_build_940 789 } 790 } 791 return dm_build_939.dm_build_698, nil 792 } 793 794 func (dm_build_942 *dm_build_690) dm_build_941(dm_build_943 int, dm_build_944 []byte, dm_build_945 string, dm_build_946 int) (dm_build_947 error) { 795 if dm_build_943 > 0 && dm_build_943 < security.MIN_EXTERNAL_CIPHER_ID && dm_build_944 != nil { 796 dm_build_942.dm_build_695, dm_build_947 = security.NewSymmCipher(dm_build_943, dm_build_944) 797 } else if dm_build_943 >= security.MIN_EXTERNAL_CIPHER_ID { 798 if dm_build_942.dm_build_695, dm_build_947 = security.NewThirdPartCipher(dm_build_943, dm_build_944, dm_build_945, dm_build_946); dm_build_947 != nil { 799 dm_build_947 = THIRD_PART_CIPHER_INIT_FAILED.addDetailln(dm_build_947.Error()).throw() 800 } 801 } 802 return 803 } 804 805 func (dm_build_949 *dm_build_690) dm_build_948(dm_build_950 bool) (dm_build_951 error) { 806 if dm_build_949.dm_build_692, dm_build_951 = security.NewTLSFromTCP(dm_build_949.dm_build_691, dm_build_949.dm_build_694.dmConnector.sslCertPath, dm_build_949.dm_build_694.dmConnector.sslKeyPath, dm_build_949.dm_build_694.dmConnector.user); dm_build_951 != nil { 807 return 808 } 809 if !dm_build_950 { 810 dm_build_949.dm_build_692 = nil 811 } 812 return 813 } 814 815 func (dm_build_953 *dm_build_690) dm_build_952(dm_build_954 dm_build_1083) bool { 816 return dm_build_954.dm_build_1098() != Dm_build_990 && dm_build_953.dm_build_694.sslEncrypt == 1 817 }