Files
hotime/vendor/gitee.com/chunanyong/dm/a.go
T
hoteas b43f968b6c feat(db): 添加对达梦数据库的支持
- 在应用程序中新增对达梦数据库(DM)的配置和连接支持
- 实现 SetDmDB 函数以配置达梦数据库连接
- 更新数据库操作逻辑,支持达梦特有的 SQL 语法和功能
- 在相关文件中添加达梦数据库的处理逻辑,包括表创建、数据插入和查询
- 更新 go.mod 和 go.sum 文件以引入达梦数据库驱动
- 增强文档,详细说明达梦数据库的配置和使用方法
2026-03-20 10:46:51 +08:00

864 lines
26 KiB
Go

/*
* Copyright (c) 2000-2018, 达梦数据库有限公司.
* All rights reserved.
*/
package dm
import (
"bytes"
"context"
"crypto/tls"
"fmt"
"net"
"strconv"
"time"
"unicode/utf8"
"gitee.com/chunanyong/dm/security"
)
const (
Dm_build_412 = 8192
Dm_build_413 = 2 * time.Second
)
type dm_build_414 struct {
dm_build_415 net.Conn
dm_build_416 *tls.Conn
dm_build_417 *Dm_build_78
dm_build_418 *DmConnection
dm_build_419 security.Cipher
dm_build_420 bool
dm_build_421 bool
dm_build_422 *security.DhKey
dm_build_423 bool
dm_build_424 string
dm_build_425 bool
}
func dm_build_426(dm_build_427 context.Context, dm_build_428 *DmConnection) (*dm_build_414, error) {
var dm_build_429 net.Conn
var dm_build_430 error
dialsLock.RLock()
dm_build_431, dm_build_432 := dials[dm_build_428.dmConnector.dialName]
dialsLock.RUnlock()
if dm_build_432 {
dm_build_429, dm_build_430 = dm_build_431(dm_build_427, dm_build_428.dmConnector.host+":"+strconv.Itoa(int(dm_build_428.dmConnector.port)))
} else {
dm_build_429, dm_build_430 = dm_build_434(dm_build_428.dmConnector.host+":"+strconv.Itoa(int(dm_build_428.dmConnector.port)), time.Duration(dm_build_428.dmConnector.socketTimeout)*time.Second)
}
if dm_build_430 != nil {
return nil, dm_build_430
}
dm_build_433 := dm_build_414{}
dm_build_433.dm_build_415 = dm_build_429
dm_build_433.dm_build_417 = Dm_build_81(Dm_build_707)
dm_build_433.dm_build_418 = dm_build_428
dm_build_433.dm_build_420 = false
dm_build_433.dm_build_421 = false
dm_build_433.dm_build_423 = false
dm_build_433.dm_build_424 = ""
dm_build_433.dm_build_425 = false
dm_build_428.Access = &dm_build_433
return &dm_build_433, nil
}
func dm_build_434(dm_build_435 string, dm_build_436 time.Duration) (net.Conn, error) {
dm_build_437, dm_build_438 := net.DialTimeout("tcp", dm_build_435, dm_build_436)
if dm_build_438 != nil {
return &net.TCPConn{}, ECGO_COMMUNITION_ERROR.addDetail("\tdial address: " + dm_build_435).throw()
}
if tcpConn, ok := dm_build_437.(*net.TCPConn); ok {
tcpConn.SetKeepAlive(true)
tcpConn.SetKeepAlivePeriod(Dm_build_413)
tcpConn.SetNoDelay(true)
}
return dm_build_437, nil
}
func (dm_build_440 *dm_build_414) dm_build_439(dm_build_441 dm_build_828) bool {
var dm_build_442 = dm_build_440.dm_build_418.dmConnector.compress
if dm_build_441.dm_build_843() == Dm_build_735 || dm_build_442 == Dm_build_784 {
return false
}
if dm_build_442 == Dm_build_782 {
return true
} else if dm_build_442 == Dm_build_783 {
return !dm_build_440.dm_build_418.Local && dm_build_441.dm_build_841() > Dm_build_781
}
return false
}
func (dm_build_444 *dm_build_414) dm_build_443(dm_build_445 dm_build_828) bool {
var dm_build_446 = dm_build_444.dm_build_418.dmConnector.compress
if dm_build_445.dm_build_843() == Dm_build_735 || dm_build_446 == Dm_build_784 {
return false
}
if dm_build_446 == Dm_build_782 {
return true
} else if dm_build_446 == Dm_build_783 {
return dm_build_444.dm_build_417.Dm_build_345(Dm_build_743) == 1
}
return false
}
func (dm_build_448 *dm_build_414) dm_build_447(dm_build_449 dm_build_828) (err error) {
defer func() {
if p := recover(); p != nil {
if _, ok := p.(string); ok {
err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw()
} else {
err = fmt.Errorf("internal error: %v", p)
}
}
}()
dm_build_451 := dm_build_449.dm_build_841()
if dm_build_451 > 0 {
if dm_build_448.dm_build_439(dm_build_449) {
var retBytes, err = Compress(dm_build_448.dm_build_417, Dm_build_736, int(dm_build_451), int(dm_build_448.dm_build_418.dmConnector.compressID))
if err != nil {
return err
}
dm_build_448.dm_build_417.Dm_build_92(Dm_build_736)
dm_build_448.dm_build_417.Dm_build_133(dm_build_451)
dm_build_448.dm_build_417.Dm_build_161(retBytes)
dm_build_449.dm_build_842(int32(len(retBytes)) + ULINT_SIZE)
dm_build_448.dm_build_417.Dm_build_265(Dm_build_743, 1)
}
if dm_build_448.dm_build_421 {
dm_build_451 = dm_build_449.dm_build_841()
var retBytes = dm_build_448.dm_build_419.Encrypt(dm_build_448.dm_build_417.Dm_build_372(Dm_build_736, int(dm_build_451)), true)
dm_build_448.dm_build_417.Dm_build_92(Dm_build_736)
dm_build_448.dm_build_417.Dm_build_161(retBytes)
dm_build_449.dm_build_842(int32(len(retBytes)))
}
}
if dm_build_448.dm_build_417.Dm_build_90() > Dm_build_708 {
return ECGO_MSG_TOO_LONG.throw()
}
dm_build_449.dm_build_837()
if dm_build_448.dm_build_690(dm_build_449) {
if dm_build_448.dm_build_416 != nil {
dm_build_448.dm_build_417.Dm_build_95(0)
if _, err := dm_build_448.dm_build_417.Dm_build_114(dm_build_448.dm_build_416); err != nil {
return err
}
}
} else {
dm_build_448.dm_build_417.Dm_build_95(0)
if _, err := dm_build_448.dm_build_417.Dm_build_114(dm_build_448.dm_build_415); err != nil {
return err
}
}
return nil
}
func (dm_build_453 *dm_build_414) dm_build_452(dm_build_454 dm_build_828) (err error) {
defer func() {
if p := recover(); p != nil {
if _, ok := p.(string); ok {
err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw()
} else {
err = fmt.Errorf("internal error: %v", p)
}
}
}()
dm_build_456 := int32(0)
if dm_build_453.dm_build_690(dm_build_454) {
if dm_build_453.dm_build_416 != nil {
dm_build_453.dm_build_417.Dm_build_92(0)
if _, err := dm_build_453.dm_build_417.Dm_build_108(dm_build_453.dm_build_416, Dm_build_736); err != nil {
return err
}
dm_build_456 = dm_build_454.dm_build_841()
if dm_build_456 > 0 {
if _, err := dm_build_453.dm_build_417.Dm_build_108(dm_build_453.dm_build_416, int(dm_build_456)); err != nil {
return err
}
}
}
} else {
dm_build_453.dm_build_417.Dm_build_92(0)
if _, err := dm_build_453.dm_build_417.Dm_build_108(dm_build_453.dm_build_415, Dm_build_736); err != nil {
return err
}
dm_build_456 = dm_build_454.dm_build_841()
if dm_build_456 > 0 {
if _, err := dm_build_453.dm_build_417.Dm_build_108(dm_build_453.dm_build_415, int(dm_build_456)); err != nil {
return err
}
}
}
dm_build_454.dm_build_838()
dm_build_456 = dm_build_454.dm_build_841()
if dm_build_456 <= 0 {
return nil
}
if dm_build_453.dm_build_421 {
ebytes := dm_build_453.dm_build_417.Dm_build_372(Dm_build_736, int(dm_build_456))
bytes, err := dm_build_453.dm_build_419.Decrypt(ebytes, true)
if err != nil {
return err
}
dm_build_453.dm_build_417.Dm_build_92(Dm_build_736)
dm_build_453.dm_build_417.Dm_build_161(bytes)
dm_build_454.dm_build_842(int32(len(bytes)))
}
if dm_build_453.dm_build_443(dm_build_454) {
dm_build_456 = dm_build_454.dm_build_841()
cbytes := dm_build_453.dm_build_417.Dm_build_372(Dm_build_736+ULINT_SIZE, int(dm_build_456-ULINT_SIZE))
bytes, err := UnCompress(cbytes, int(dm_build_453.dm_build_418.dmConnector.compressID))
if err != nil {
return err
}
dm_build_453.dm_build_417.Dm_build_92(Dm_build_736)
dm_build_453.dm_build_417.Dm_build_161(bytes)
dm_build_454.dm_build_842(int32(len(bytes)))
}
return nil
}
func (dm_build_458 *dm_build_414) dm_build_457(dm_build_459 dm_build_828) (dm_build_460 interface{}, dm_build_461 error) {
if dm_build_458.dm_build_425 {
return nil, ECGO_CONNECTION_CLOSED.throw()
}
dm_build_462 := dm_build_458.dm_build_418
dm_build_462.mu.Lock()
defer dm_build_462.mu.Unlock()
dm_build_461 = dm_build_459.dm_build_832(dm_build_459)
if dm_build_461 != nil {
return nil, dm_build_461
}
dm_build_461 = dm_build_458.dm_build_447(dm_build_459)
if dm_build_461 != nil {
return nil, dm_build_461
}
dm_build_461 = dm_build_458.dm_build_452(dm_build_459)
if dm_build_461 != nil {
return nil, dm_build_461
}
return dm_build_459.dm_build_836(dm_build_459)
}
func (dm_build_464 *dm_build_414) dm_build_463() (*dm_build_1287, error) {
Dm_build_465 := dm_build_1293(dm_build_464)
_, dm_build_466 := dm_build_464.dm_build_457(Dm_build_465)
if dm_build_466 != nil {
return nil, dm_build_466
}
return Dm_build_465, nil
}
func (dm_build_468 *dm_build_414) dm_build_467() error {
dm_build_469 := dm_build_1152(dm_build_468)
_, dm_build_470 := dm_build_468.dm_build_457(dm_build_469)
if dm_build_470 != nil {
return dm_build_470
}
return nil
}
func (dm_build_472 *dm_build_414) dm_build_471() error {
var dm_build_473 *dm_build_1287
var err error
if dm_build_473, err = dm_build_472.dm_build_463(); err != nil {
return err
}
if dm_build_472.dm_build_418.sslEncrypt == 2 {
if err = dm_build_472.dm_build_686(false); err != nil {
return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw()
}
} else if dm_build_472.dm_build_418.sslEncrypt == 1 {
if err = dm_build_472.dm_build_686(true); err != nil {
return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw()
}
}
if dm_build_472.dm_build_421 || dm_build_472.dm_build_420 {
k, err := dm_build_472.dm_build_676()
if err != nil {
return err
}
sessionKey := security.ComputeSessionKey(k, dm_build_473.Dm_build_1291)
encryptType := dm_build_473.dm_build_1289
hashType := int(dm_build_473.Dm_build_1290)
if encryptType == -1 {
encryptType = security.DES_CFB
}
if hashType == -1 {
hashType = security.MD5
}
err = dm_build_472.dm_build_679(encryptType, sessionKey, dm_build_472.dm_build_418.dmConnector.cipherPath, hashType)
if err != nil {
return err
}
}
if err := dm_build_472.dm_build_467(); err != nil {
return err
}
return nil
}
func (dm_build_476 *dm_build_414) Dm_build_475(dm_build_477 *DmStatement) error {
dm_build_478 := dm_build_1317(dm_build_476, dm_build_477)
_, dm_build_479 := dm_build_476.dm_build_457(dm_build_478)
if dm_build_479 != nil {
return dm_build_479
}
return nil
}
func (dm_build_481 *dm_build_414) Dm_build_480(dm_build_482 int32) error {
dm_build_483 := dm_build_1327(dm_build_481, dm_build_482)
_, dm_build_484 := dm_build_481.dm_build_457(dm_build_483)
if dm_build_484 != nil {
return dm_build_484
}
return nil
}
func (dm_build_486 *dm_build_414) Dm_build_485(dm_build_487 *DmStatement, dm_build_488 bool, dm_build_489 int16) (*execRetInfo, error) {
dm_build_490 := dm_build_1193(dm_build_486, dm_build_487, dm_build_488, dm_build_489)
dm_build_491, dm_build_492 := dm_build_486.dm_build_457(dm_build_490)
if dm_build_492 != nil {
return nil, dm_build_492
}
return dm_build_491.(*execRetInfo), nil
}
func (dm_build_494 *dm_build_414) Dm_build_493(dm_build_495 *DmStatement, dm_build_496 int16) (*execRetInfo, error) {
return dm_build_494.Dm_build_485(dm_build_495, false, Dm_build_788)
}
func (dm_build_498 *dm_build_414) Dm_build_497(dm_build_499 *DmStatement, dm_build_500 []OptParameter) (*execRetInfo, error) {
dm_build_501, dm_build_502 := dm_build_498.dm_build_457(dm_build_931(dm_build_498, dm_build_499, dm_build_500))
if dm_build_502 != nil {
return nil, dm_build_502
}
return dm_build_501.(*execRetInfo), nil
}
func (dm_build_504 *dm_build_414) Dm_build_503(dm_build_505 *DmStatement, dm_build_506 int16) (*execRetInfo, error) {
return dm_build_504.Dm_build_485(dm_build_505, true, dm_build_506)
}
func (dm_build_508 *dm_build_414) Dm_build_507(dm_build_509 *DmStatement, dm_build_510 [][]interface{}) (*execRetInfo, error) {
dm_build_511 := dm_build_963(dm_build_508, dm_build_509, dm_build_510)
dm_build_512, dm_build_513 := dm_build_508.dm_build_457(dm_build_511)
if dm_build_513 != nil {
return nil, dm_build_513
}
return dm_build_512.(*execRetInfo), nil
}
func (dm_build_515 *dm_build_414) Dm_build_514(dm_build_516 *DmStatement, dm_build_517 [][]interface{}, dm_build_518 bool) (*execRetInfo, error) {
var dm_build_519, dm_build_520 = 0, 0
var dm_build_521 = len(dm_build_517)
var dm_build_522 [][]interface{}
var dm_build_523 = NewExceInfo()
dm_build_523.updateCounts = make([]int64, dm_build_521)
var dm_build_524 = false
for dm_build_519 < dm_build_521 {
for dm_build_520 = dm_build_519; dm_build_520 < dm_build_521; dm_build_520++ {
paramData := dm_build_517[dm_build_520]
bindData := make([]interface{}, dm_build_516.paramCount)
dm_build_524 = false
for icol := 0; icol < int(dm_build_516.paramCount); icol++ {
if dm_build_516.bindParams[icol].ioType == IO_TYPE_OUT {
continue
}
if dm_build_515.dm_build_659(bindData, paramData, icol) {
dm_build_524 = true
break
}
}
if dm_build_524 {
break
}
dm_build_522 = append(dm_build_522, bindData)
}
if dm_build_520 != dm_build_519 {
tmpExecInfo, err := dm_build_515.Dm_build_507(dm_build_516, dm_build_522)
if err != nil {
return nil, err
}
dm_build_522 = dm_build_522[0:0]
dm_build_523.union(tmpExecInfo, dm_build_519, dm_build_520-dm_build_519)
}
if dm_build_520 < dm_build_521 {
tmpExecInfo, err := dm_build_515.Dm_build_533(dm_build_516, dm_build_517[dm_build_520], dm_build_518)
if err != nil {
return nil, err
}
dm_build_518 = true
dm_build_523.union(tmpExecInfo, dm_build_520, 1)
}
dm_build_519 = dm_build_520 + 1
}
for _, i := range dm_build_523.updateCounts {
if i > 0 {
dm_build_523.updateCount += i
}
}
return dm_build_523, nil
}
func (dm_build_526 *dm_build_414) dm_build_525(dm_build_527 *DmStatement, dm_build_528 []parameter) error {
if !dm_build_527.prepared {
retInfo, err := dm_build_526.Dm_build_485(dm_build_527, false, Dm_build_788)
if err != nil {
return nil
}
dm_build_527.serverParams = retInfo.serverParams
dm_build_527.paramCount = int32(len(dm_build_527.serverParams))
dm_build_527.prepared = true
}
dm_build_529 := dm_build_1182(dm_build_526, dm_build_527, dm_build_527.bindParams)
dm_build_530, err := dm_build_526.dm_build_457(dm_build_529)
if err != nil {
return nil
}
retInfo := dm_build_530.(*execRetInfo)
if retInfo.serverParams != nil && len(retInfo.serverParams) > 0 {
dm_build_527.serverParams = retInfo.serverParams
dm_build_527.paramCount = int32(len(dm_build_527.serverParams))
}
dm_build_527.preExec = true
return nil
}
func (dm_build_534 *dm_build_414) Dm_build_533(dm_build_535 *DmStatement, dm_build_536 []interface{}, dm_build_537 bool) (*execRetInfo, error) {
var dm_build_538 = make([]interface{}, dm_build_535.paramCount)
for icol := 0; icol < int(dm_build_535.paramCount); icol++ {
if dm_build_535.bindParams[icol].ioType == IO_TYPE_OUT {
continue
}
if dm_build_534.dm_build_659(dm_build_538, dm_build_536, icol) {
if !dm_build_537 {
dm_build_534.dm_build_525(dm_build_535, dm_build_535.bindParams)
dm_build_537 = true
}
dm_build_534.dm_build_665(dm_build_535, dm_build_535.bindParams[icol], icol, dm_build_536[icol].(iOffRowBinder))
dm_build_538[icol] = ParamDataEnum_OFF_ROW
}
}
var dm_build_539 = make([][]interface{}, 1, 1)
dm_build_539[0] = dm_build_538
dm_build_540 := dm_build_963(dm_build_534, dm_build_535, dm_build_539)
dm_build_541, dm_build_542 := dm_build_534.dm_build_457(dm_build_540)
if dm_build_542 != nil {
return nil, dm_build_542
}
return dm_build_541.(*execRetInfo), nil
}
func (dm_build_544 *dm_build_414) Dm_build_543(dm_build_545 *DmStatement, dm_build_546 int16) (*execRetInfo, error) {
dm_build_547 := dm_build_1169(dm_build_544, dm_build_545, dm_build_546)
dm_build_548, dm_build_549 := dm_build_544.dm_build_457(dm_build_547)
if dm_build_549 != nil {
return nil, dm_build_549
}
return dm_build_548.(*execRetInfo), nil
}
func (dm_build_551 *dm_build_414) Dm_build_550(dm_build_552 *innerRows, dm_build_553 int64) (*execRetInfo, error) {
dm_build_554 := dm_build_1070(dm_build_551, dm_build_552, dm_build_553, INT64_MAX)
dm_build_555, dm_build_556 := dm_build_551.dm_build_457(dm_build_554)
if dm_build_556 != nil {
return nil, dm_build_556
}
return dm_build_555.(*execRetInfo), nil
}
func (dm_build_558 *dm_build_414) Commit() error {
dm_build_559 := dm_build_916(dm_build_558)
_, dm_build_560 := dm_build_558.dm_build_457(dm_build_559)
if dm_build_560 != nil {
return dm_build_560
}
return nil
}
func (dm_build_562 *dm_build_414) Rollback() error {
dm_build_563 := dm_build_1231(dm_build_562)
_, dm_build_564 := dm_build_562.dm_build_457(dm_build_563)
if dm_build_564 != nil {
return dm_build_564
}
return nil
}
func (dm_build_566 *dm_build_414) Dm_build_565(dm_build_567 *DmConnection) error {
dm_build_568 := dm_build_1236(dm_build_566, dm_build_567.IsoLevel)
_, dm_build_569 := dm_build_566.dm_build_457(dm_build_568)
if dm_build_569 != nil {
return dm_build_569
}
return nil
}
func (dm_build_571 *dm_build_414) Dm_build_570(dm_build_572 *DmStatement, dm_build_573 string) error {
dm_build_574 := dm_build_921(dm_build_571, dm_build_572, dm_build_573)
_, dm_build_575 := dm_build_571.dm_build_457(dm_build_574)
if dm_build_575 != nil {
return dm_build_575
}
return nil
}
func (dm_build_577 *dm_build_414) Dm_build_576(dm_build_578 []uint32) ([]int64, error) {
dm_build_579 := dm_build_1335(dm_build_577, dm_build_578)
dm_build_580, dm_build_581 := dm_build_577.dm_build_457(dm_build_579)
if dm_build_581 != nil {
return nil, dm_build_581
}
return dm_build_580.([]int64), nil
}
func (dm_build_583 *dm_build_414) Close() error {
if dm_build_583.dm_build_425 {
return nil
}
dm_build_584 := dm_build_583.dm_build_415.Close()
if dm_build_584 != nil {
return dm_build_584
}
dm_build_583.dm_build_418 = nil
dm_build_583.dm_build_425 = true
return nil
}
func (dm_build_586 *dm_build_414) dm_build_585(dm_build_587 *lob) (int64, error) {
dm_build_588 := dm_build_1103(dm_build_586, dm_build_587)
dm_build_589, dm_build_590 := dm_build_586.dm_build_457(dm_build_588)
if dm_build_590 != nil {
return 0, dm_build_590
}
return dm_build_589.(int64), nil
}
func (dm_build_592 *dm_build_414) dm_build_591(dm_build_593 *lob, dm_build_594 int32, dm_build_595 int32) (*lobRetInfo, error) {
dm_build_596 := dm_build_1088(dm_build_592, dm_build_593, int(dm_build_594), int(dm_build_595))
dm_build_597, dm_build_598 := dm_build_592.dm_build_457(dm_build_596)
if dm_build_598 != nil {
return nil, dm_build_598
}
return dm_build_597.(*lobRetInfo), nil
}
func (dm_build_600 *dm_build_414) dm_build_599(dm_build_601 *DmBlob, dm_build_602 int32, dm_build_603 int32) ([]byte, error) {
var dm_build_604 = make([]byte, dm_build_603)
var dm_build_605 int32 = 0
var dm_build_606 int32 = 0
var dm_build_607 *lobRetInfo
var dm_build_608 []byte
var dm_build_609 error
for dm_build_605 < dm_build_603 {
dm_build_606 = dm_build_603 - dm_build_605
if dm_build_606 > Dm_build_821 {
dm_build_606 = Dm_build_821
}
dm_build_607, dm_build_609 = dm_build_600.dm_build_591(&dm_build_601.lob, dm_build_602+dm_build_605, dm_build_606)
if dm_build_609 != nil {
return nil, dm_build_609
}
dm_build_608 = dm_build_607.data
if dm_build_608 == nil || len(dm_build_608) == 0 {
break
}
Dm_build_1346.Dm_build_1402(dm_build_604, int(dm_build_605), dm_build_608, 0, len(dm_build_608))
dm_build_605 += int32(len(dm_build_608))
if dm_build_601.readOver {
break
}
}
return dm_build_604, nil
}
func (dm_build_611 *dm_build_414) dm_build_610(dm_build_612 *DmClob, dm_build_613 int32, dm_build_614 int32) (string, error) {
var dm_build_615 bytes.Buffer
var dm_build_616 int32 = 0
var dm_build_617 int32 = 0
var dm_build_618 *lobRetInfo
var dm_build_619 []byte
var dm_build_620 string
var dm_build_621 error
for dm_build_616 < dm_build_614 {
dm_build_617 = dm_build_614 - dm_build_616
if dm_build_617 > Dm_build_821/2 {
dm_build_617 = Dm_build_821 / 2
}
dm_build_618, dm_build_621 = dm_build_611.dm_build_591(&dm_build_612.lob, dm_build_613+dm_build_616, dm_build_617)
if dm_build_621 != nil {
return "", dm_build_621
}
dm_build_619 = dm_build_618.data
if dm_build_619 == nil || len(dm_build_619) == 0 {
break
}
dm_build_620 = Dm_build_1346.Dm_build_1503(dm_build_619, 0, len(dm_build_619), dm_build_612.serverEncoding, dm_build_611.dm_build_418)
dm_build_615.WriteString(dm_build_620)
var strLen = dm_build_618.charLen
if strLen == -1 {
strLen = int64(utf8.RuneCountInString(dm_build_620))
}
dm_build_616 += int32(strLen)
if dm_build_612.readOver {
break
}
}
return dm_build_615.String(), nil
}
func (dm_build_623 *dm_build_414) dm_build_622(dm_build_624 *DmClob, dm_build_625 int, dm_build_626 string, dm_build_627 string) (int, error) {
var dm_build_628 = Dm_build_1346.Dm_build_1562(dm_build_626, dm_build_627, dm_build_623.dm_build_418)
var dm_build_629 = 0
var dm_build_630 = len(dm_build_628)
var dm_build_631 = 0
var dm_build_632 = 0
var dm_build_633 = 0
var dm_build_634 = dm_build_630/Dm_build_820 + 1
var dm_build_635 byte = 0
var dm_build_636 byte = 0x01
var dm_build_637 byte = 0x02
for i := 0; i < dm_build_634; i++ {
dm_build_635 = 0
if i == 0 {
dm_build_635 |= dm_build_636
}
if i == dm_build_634-1 {
dm_build_635 |= dm_build_637
}
dm_build_633 = dm_build_630 - dm_build_632
if dm_build_633 > Dm_build_820 {
dm_build_633 = Dm_build_820
}
setLobData := dm_build_1250(dm_build_623, &dm_build_624.lob, dm_build_635, dm_build_625, dm_build_628, dm_build_629, dm_build_633)
ret, err := dm_build_623.dm_build_457(setLobData)
if err != nil {
return 0, err
}
tmp := ret.(int32)
if err != nil {
return -1, err
}
if tmp <= 0 {
return dm_build_631, nil
} else {
dm_build_625 += int(tmp)
dm_build_631 += int(tmp)
dm_build_632 += dm_build_633
dm_build_629 += dm_build_633
}
}
return dm_build_631, nil
}
func (dm_build_639 *dm_build_414) dm_build_638(dm_build_640 *DmBlob, dm_build_641 int, dm_build_642 []byte) (int, error) {
var dm_build_643 = 0
var dm_build_644 = len(dm_build_642)
var dm_build_645 = 0
var dm_build_646 = 0
var dm_build_647 = 0
var dm_build_648 = dm_build_644/Dm_build_820 + 1
var dm_build_649 byte = 0
var dm_build_650 byte = 0x01
var dm_build_651 byte = 0x02
for i := 0; i < dm_build_648; i++ {
dm_build_649 = 0
if i == 0 {
dm_build_649 |= dm_build_650
}
if i == dm_build_648-1 {
dm_build_649 |= dm_build_651
}
dm_build_647 = dm_build_644 - dm_build_646
if dm_build_647 > Dm_build_820 {
dm_build_647 = Dm_build_820
}
setLobData := dm_build_1250(dm_build_639, &dm_build_640.lob, dm_build_649, dm_build_641, dm_build_642, dm_build_643, dm_build_647)
ret, err := dm_build_639.dm_build_457(setLobData)
if err != nil {
return 0, err
}
tmp := ret.(int32)
if tmp <= 0 {
return dm_build_645, nil
} else {
dm_build_641 += int(tmp)
dm_build_645 += int(tmp)
dm_build_646 += dm_build_647
dm_build_643 += dm_build_647
}
}
return dm_build_645, nil
}
func (dm_build_653 *dm_build_414) dm_build_652(dm_build_654 *lob, dm_build_655 int) (int64, error) {
dm_build_656 := dm_build_1114(dm_build_653, dm_build_654, dm_build_655)
dm_build_657, dm_build_658 := dm_build_653.dm_build_457(dm_build_656)
if dm_build_658 != nil {
return dm_build_654.length, dm_build_658
}
return dm_build_657.(int64), nil
}
func (dm_build_660 *dm_build_414) dm_build_659(dm_build_661 []interface{}, dm_build_662 []interface{}, dm_build_663 int) bool {
var dm_build_664 = false
dm_build_661[dm_build_663] = dm_build_662[dm_build_663]
if binder, ok := dm_build_662[dm_build_663].(iOffRowBinder); ok {
dm_build_664 = true
dm_build_661[dm_build_663] = make([]byte, 0)
var lob lob
if l, ok := binder.getObj().(DmBlob); ok {
lob = l.lob
} else if l, ok := binder.getObj().(DmClob); ok {
lob = l.lob
}
if &lob != nil && lob.canOptimized(dm_build_660.dm_build_418) {
dm_build_661[dm_build_663] = &lobCtl{lob.buildCtlData()}
dm_build_664 = false
}
} else {
dm_build_661[dm_build_663] = dm_build_662[dm_build_663]
}
return dm_build_664
}
func (dm_build_666 *dm_build_414) dm_build_665(dm_build_667 *DmStatement, dm_build_668 parameter, dm_build_669 int, dm_build_670 iOffRowBinder) error {
var dm_build_671 = Dm_build_4()
dm_build_670.read(dm_build_671)
var dm_build_672 = 0
for !dm_build_670.isReadOver() || dm_build_671.Dm_build_5() > 0 {
if !dm_build_670.isReadOver() && dm_build_671.Dm_build_5() < Dm_build_820 {
dm_build_670.read(dm_build_671)
}
if dm_build_671.Dm_build_5() > Dm_build_820 {
dm_build_672 = Dm_build_820
} else {
dm_build_672 = dm_build_671.Dm_build_5()
}
putData := dm_build_1221(dm_build_666, dm_build_667, int16(dm_build_669), dm_build_671, int32(dm_build_672))
_, err := dm_build_666.dm_build_457(putData)
if err != nil {
return err
}
}
return nil
}
func (dm_build_674 *dm_build_414) dm_build_673() ([]byte, error) {
var dm_build_675 error
if dm_build_674.dm_build_422 == nil {
if dm_build_674.dm_build_422, dm_build_675 = security.NewClientKeyPair(); dm_build_675 != nil {
return nil, dm_build_675
}
}
return security.Bn2Bytes(dm_build_674.dm_build_422.GetY(), security.DH_KEY_LENGTH), nil
}
func (dm_build_677 *dm_build_414) dm_build_676() (*security.DhKey, error) {
var dm_build_678 error
if dm_build_677.dm_build_422 == nil {
if dm_build_677.dm_build_422, dm_build_678 = security.NewClientKeyPair(); dm_build_678 != nil {
return nil, dm_build_678
}
}
return dm_build_677.dm_build_422, nil
}
func (dm_build_680 *dm_build_414) dm_build_679(dm_build_681 int, dm_build_682 []byte, dm_build_683 string, dm_build_684 int) (dm_build_685 error) {
if dm_build_681 > 0 && dm_build_681 < security.MIN_EXTERNAL_CIPHER_ID && dm_build_682 != nil {
dm_build_680.dm_build_419, dm_build_685 = security.NewSymmCipher(dm_build_681, dm_build_682)
} else if dm_build_681 >= security.MIN_EXTERNAL_CIPHER_ID {
if dm_build_680.dm_build_419, dm_build_685 = security.NewThirdPartCipher(dm_build_681, dm_build_682, dm_build_683, dm_build_684); dm_build_685 != nil {
dm_build_685 = THIRD_PART_CIPHER_INIT_FAILED.addDetailln(dm_build_685.Error()).throw()
}
}
return
}
func (dm_build_687 *dm_build_414) dm_build_686(dm_build_688 bool) (dm_build_689 error) {
if dm_build_687.dm_build_416, dm_build_689 = security.NewTLSFromTCP(dm_build_687.dm_build_415, dm_build_687.dm_build_418.dmConnector.sslCertPath, dm_build_687.dm_build_418.dmConnector.sslKeyPath, dm_build_687.dm_build_418.dmConnector.user); dm_build_689 != nil {
return
}
if !dm_build_688 {
dm_build_687.dm_build_416 = nil
}
return
}
func (dm_build_691 *dm_build_414) dm_build_690(dm_build_692 dm_build_828) bool {
return dm_build_692.dm_build_843() != Dm_build_735 && dm_build_691.dm_build_418.sslEncrypt == 1
}