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  }