gitee.com/chunanyong/dm@v1.8.12/a.go (about)

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