gitee.com/runner.mei/dm@v0.0.0-20220207044607-a9ba0dc20bf7/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  	"net"
    11  	"strconv"
    12  	"time"
    13  
    14  	"gitee.com/runner.mei/dm/security"
    15  )
    16  
    17  const (
    18  	Dm_build_1310 = 8192
    19  	Dm_build_1311 = 2 * time.Second
    20  )
    21  
    22  type dm_build_1312 struct {
    23  	dm_build_1313 *net.TCPConn
    24  	dm_build_1314 *tls.Conn
    25  	dm_build_1315 *Dm_build_980
    26  	dm_build_1316 *DmConnection
    27  	dm_build_1317 security.Cipher
    28  	dm_build_1318 bool
    29  	dm_build_1319 bool
    30  	dm_build_1320 *security.DhKey
    31  
    32  	dm_build_1321 bool
    33  	dm_build_1322 string
    34  	dm_build_1323 bool
    35  }
    36  
    37  func dm_build_1324(dm_build_1325 *DmConnection) (*dm_build_1312, error) {
    38  	dm_build_1326, dm_build_1327 := dm_build_1329(dm_build_1325.dmConnector.host+":"+strconv.Itoa(int(dm_build_1325.dmConnector.port)), time.Duration(dm_build_1325.dmConnector.socketTimeout)*time.Second)
    39  	if dm_build_1327 != nil {
    40  		return nil, dm_build_1327
    41  	}
    42  
    43  	dm_build_1328 := dm_build_1312{}
    44  	dm_build_1328.dm_build_1313 = dm_build_1326
    45  	dm_build_1328.dm_build_1315 = Dm_build_983(Dm_build_7)
    46  	dm_build_1328.dm_build_1316 = dm_build_1325
    47  	dm_build_1328.dm_build_1318 = false
    48  	dm_build_1328.dm_build_1319 = false
    49  	dm_build_1328.dm_build_1321 = false
    50  	dm_build_1328.dm_build_1322 = ""
    51  	dm_build_1328.dm_build_1323 = false
    52  	dm_build_1325.Access = &dm_build_1328
    53  
    54  	return &dm_build_1328, nil
    55  }
    56  
    57  func dm_build_1329(dm_build_1330 string, dm_build_1331 time.Duration) (*net.TCPConn, error) {
    58  	dm_build_1332, dm_build_1333 := net.DialTimeout("tcp", dm_build_1330, dm_build_1331)
    59  	if dm_build_1333 != nil {
    60  		return nil, ECGO_COMMUNITION_ERROR.addDetail("\tdial address: " + dm_build_1330).throw()
    61  	}
    62  
    63  	if tcpConn, ok := dm_build_1332.(*net.TCPConn); ok {
    64  
    65  		tcpConn.SetKeepAlive(true)
    66  		tcpConn.SetKeepAlivePeriod(Dm_build_1311)
    67  		tcpConn.SetNoDelay(true)
    68  
    69  		return tcpConn, nil
    70  	}
    71  
    72  	return nil, nil
    73  }
    74  
    75  func (dm_build_1335 *dm_build_1312) dm_build_1334(dm_build_1336 dm_build_128) bool {
    76  	var dm_build_1337 = dm_build_1335.dm_build_1316.dmConnector.compress
    77  	if dm_build_1336.dm_build_143() == Dm_build_35 || dm_build_1337 == Dm_build_84 {
    78  		return false
    79  	}
    80  
    81  	if dm_build_1337 == Dm_build_82 {
    82  		return true
    83  	} else if dm_build_1337 == Dm_build_83 {
    84  		return !dm_build_1335.dm_build_1316.Local && dm_build_1336.dm_build_141() > Dm_build_81
    85  	}
    86  
    87  	return false
    88  }
    89  
    90  func (dm_build_1339 *dm_build_1312) dm_build_1338(dm_build_1340 dm_build_128) bool {
    91  	var dm_build_1341 = dm_build_1339.dm_build_1316.dmConnector.compress
    92  	if dm_build_1340.dm_build_143() == Dm_build_35 || dm_build_1341 == Dm_build_84 {
    93  		return false
    94  	}
    95  
    96  	if dm_build_1341 == Dm_build_82 {
    97  		return true
    98  	} else if dm_build_1341 == Dm_build_83 {
    99  		return dm_build_1339.dm_build_1315.Dm_build_1243(Dm_build_43) == 1
   100  	}
   101  
   102  	return false
   103  }
   104  
   105  func (dm_build_1343 *dm_build_1312) dm_build_1342(dm_build_1344 dm_build_128) (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_1346 := dm_build_1344.dm_build_141()
   117  
   118  	if dm_build_1346 > 0 {
   119  
   120  		if dm_build_1343.dm_build_1334(dm_build_1344) {
   121  			var retBytes, err = Compress(dm_build_1343.dm_build_1315, Dm_build_36, int(dm_build_1346), int(dm_build_1343.dm_build_1316.dmConnector.compressID))
   122  			if err != nil {
   123  				return err
   124  			}
   125  
   126  			dm_build_1343.dm_build_1315.Dm_build_994(Dm_build_36)
   127  
   128  			dm_build_1343.dm_build_1315.Dm_build_1031(dm_build_1346)
   129  
   130  			dm_build_1343.dm_build_1315.Dm_build_1059(retBytes)
   131  
   132  			dm_build_1344.dm_build_142(int32(len(retBytes)) + ULINT_SIZE)
   133  
   134  			dm_build_1343.dm_build_1315.Dm_build_1163(Dm_build_43, 1)
   135  		}
   136  
   137  		if dm_build_1343.dm_build_1319 {
   138  			dm_build_1346 = dm_build_1344.dm_build_141()
   139  			var retBytes = dm_build_1343.dm_build_1317.Encrypt(dm_build_1343.dm_build_1315.Dm_build_1270(Dm_build_36, int(dm_build_1346)), true)
   140  
   141  			dm_build_1343.dm_build_1315.Dm_build_994(Dm_build_36)
   142  
   143  			dm_build_1343.dm_build_1315.Dm_build_1059(retBytes)
   144  
   145  			dm_build_1344.dm_build_142(int32(len(retBytes)))
   146  		}
   147  	}
   148  
   149  	if dm_build_1343.dm_build_1315.Dm_build_992() > Dm_build_8 {
   150  		return ECGO_MSG_TOO_LONG.throw()
   151  	}
   152  
   153  	dm_build_1344.dm_build_137()
   154  	if dm_build_1343.dm_build_1574(dm_build_1344) {
   155  		if dm_build_1343.dm_build_1314 != nil {
   156  			dm_build_1343.dm_build_1315.Dm_build_997(0)
   157  			dm_build_1343.dm_build_1315.Dm_build_1016(dm_build_1343.dm_build_1314)
   158  		}
   159  	} else {
   160  		dm_build_1343.dm_build_1315.Dm_build_997(0)
   161  		dm_build_1343.dm_build_1315.Dm_build_1016(dm_build_1343.dm_build_1313)
   162  	}
   163  	return nil
   164  }
   165  
   166  func (dm_build_1348 *dm_build_1312) dm_build_1347(dm_build_1349 dm_build_128) (err error) {
   167  	defer func() {
   168  		if p := recover(); p != nil {
   169  			if _, ok := p.(string); ok {
   170  				err = ECGO_COMMUNITION_ERROR.addDetail("\t" + p.(string)).throw()
   171  			} else {
   172  				panic(p)
   173  			}
   174  		}
   175  	}()
   176  
   177  	dm_build_1351 := int32(0)
   178  	if dm_build_1348.dm_build_1574(dm_build_1349) {
   179  		if dm_build_1348.dm_build_1314 != nil {
   180  			dm_build_1348.dm_build_1315.Dm_build_994(0)
   181  			dm_build_1348.dm_build_1315.Dm_build_1010(dm_build_1348.dm_build_1314, Dm_build_36)
   182  			dm_build_1351 = dm_build_1349.dm_build_141()
   183  			if dm_build_1351 > 0 {
   184  				dm_build_1348.dm_build_1315.Dm_build_1010(dm_build_1348.dm_build_1314, int(dm_build_1351))
   185  			}
   186  		}
   187  	} else {
   188  
   189  		dm_build_1348.dm_build_1315.Dm_build_994(0)
   190  		dm_build_1348.dm_build_1315.Dm_build_1010(dm_build_1348.dm_build_1313, Dm_build_36)
   191  		dm_build_1351 = dm_build_1349.dm_build_141()
   192  
   193  		if dm_build_1351 > 0 {
   194  			dm_build_1348.dm_build_1315.Dm_build_1010(dm_build_1348.dm_build_1313, int(dm_build_1351))
   195  		}
   196  	}
   197  
   198  	dm_build_1349.dm_build_138()
   199  
   200  	dm_build_1351 = dm_build_1349.dm_build_141()
   201  	if dm_build_1351 <= 0 {
   202  		return nil
   203  	}
   204  
   205  	if dm_build_1348.dm_build_1319 {
   206  		ebytes := dm_build_1348.dm_build_1315.Dm_build_1270(Dm_build_36, int(dm_build_1351))
   207  		bytes, err := dm_build_1348.dm_build_1317.Decrypt(ebytes, true)
   208  		if err != nil {
   209  			return err
   210  		}
   211  		dm_build_1348.dm_build_1315.Dm_build_994(Dm_build_36)
   212  		dm_build_1348.dm_build_1315.Dm_build_1059(bytes)
   213  		dm_build_1349.dm_build_142(int32(len(bytes)))
   214  	}
   215  
   216  	if dm_build_1348.dm_build_1338(dm_build_1349) {
   217  
   218  		dm_build_1351 = dm_build_1349.dm_build_141()
   219  		cbytes := dm_build_1348.dm_build_1315.Dm_build_1270(Dm_build_36+ULINT_SIZE, int(dm_build_1351-ULINT_SIZE))
   220  		bytes, err := UnCompress(cbytes, int(dm_build_1348.dm_build_1316.dmConnector.compressID))
   221  		if err != nil {
   222  			return err
   223  		}
   224  		dm_build_1348.dm_build_1315.Dm_build_994(Dm_build_36)
   225  		dm_build_1348.dm_build_1315.Dm_build_1059(bytes)
   226  		dm_build_1349.dm_build_142(int32(len(bytes)))
   227  	}
   228  	return nil
   229  }
   230  
   231  func (dm_build_1353 *dm_build_1312) dm_build_1352(dm_build_1354 dm_build_128) (dm_build_1355 interface{}, dm_build_1356 error) {
   232  	dm_build_1356 = dm_build_1354.dm_build_132(dm_build_1354)
   233  	if dm_build_1356 != nil {
   234  		return nil, dm_build_1356
   235  	}
   236  
   237  	dm_build_1356 = dm_build_1353.dm_build_1342(dm_build_1354)
   238  	if dm_build_1356 != nil {
   239  		return nil, dm_build_1356
   240  	}
   241  
   242  	dm_build_1356 = dm_build_1353.dm_build_1347(dm_build_1354)
   243  	if dm_build_1356 != nil {
   244  		return nil, dm_build_1356
   245  	}
   246  
   247  	return dm_build_1354.dm_build_136(dm_build_1354)
   248  }
   249  
   250  func (dm_build_1358 *dm_build_1312) dm_build_1357() (*dm_build_565, error) {
   251  
   252  	Dm_build_1359 := dm_build_571(dm_build_1358)
   253  	_, dm_build_1360 := dm_build_1358.dm_build_1352(Dm_build_1359)
   254  	if dm_build_1360 != nil {
   255  		return nil, dm_build_1360
   256  	}
   257  
   258  	return Dm_build_1359, nil
   259  }
   260  
   261  func (dm_build_1362 *dm_build_1312) dm_build_1361() error {
   262  
   263  	dm_build_1363 := dm_build_433(dm_build_1362)
   264  	_, dm_build_1364 := dm_build_1362.dm_build_1352(dm_build_1363)
   265  	if dm_build_1364 != nil {
   266  		return dm_build_1364
   267  	}
   268  
   269  	return nil
   270  }
   271  
   272  func (dm_build_1366 *dm_build_1312) dm_build_1365() error {
   273  
   274  	var dm_build_1367 *dm_build_565
   275  	var err error
   276  	if dm_build_1367, err = dm_build_1366.dm_build_1357(); err != nil {
   277  		return err
   278  	}
   279  
   280  	if dm_build_1366.dm_build_1316.sslEncrypt == 2 {
   281  		if err = dm_build_1366.dm_build_1570(false); err != nil {
   282  			return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw()
   283  		}
   284  	} else if dm_build_1366.dm_build_1316.sslEncrypt == 1 {
   285  		if err = dm_build_1366.dm_build_1570(true); err != nil {
   286  			return ECGO_INIT_SSL_FAILED.addDetail("\n" + err.Error()).throw()
   287  		}
   288  	}
   289  
   290  	if dm_build_1366.dm_build_1319 || dm_build_1366.dm_build_1318 {
   291  		k, err := dm_build_1366.dm_build_1560()
   292  		if err != nil {
   293  			return err
   294  		}
   295  		sessionKey := security.ComputeSessionKey(k, dm_build_1367.Dm_build_569)
   296  		encryptType := dm_build_1367.dm_build_567
   297  		hashType := int(dm_build_1367.Dm_build_568)
   298  		if encryptType == -1 {
   299  			encryptType = security.DES_CFB
   300  		}
   301  		if hashType == -1 {
   302  			hashType = security.MD5
   303  		}
   304  		err = dm_build_1366.dm_build_1563(encryptType, sessionKey, dm_build_1366.dm_build_1316.dmConnector.cipherPath, hashType)
   305  		if err != nil {
   306  			return err
   307  		}
   308  	}
   309  
   310  	if err := dm_build_1366.dm_build_1361(); err != nil {
   311  		return err
   312  	}
   313  	return nil
   314  }
   315  
   316  func (dm_build_1370 *dm_build_1312) Dm_build_1369(dm_build_1371 *DmStatement) error {
   317  	dm_build_1372 := dm_build_594(dm_build_1370, dm_build_1371)
   318  	_, dm_build_1373 := dm_build_1370.dm_build_1352(dm_build_1372)
   319  	if dm_build_1373 != nil {
   320  		return dm_build_1373
   321  	}
   322  
   323  	return nil
   324  }
   325  
   326  func (dm_build_1375 *dm_build_1312) Dm_build_1374(dm_build_1376 int32) error {
   327  	dm_build_1377 := dm_build_604(dm_build_1375, dm_build_1376)
   328  	_, dm_build_1378 := dm_build_1375.dm_build_1352(dm_build_1377)
   329  	if dm_build_1378 != nil {
   330  		return dm_build_1378
   331  	}
   332  
   333  	return nil
   334  }
   335  
   336  func (dm_build_1380 *dm_build_1312) Dm_build_1379(dm_build_1381 *DmStatement, dm_build_1382 bool, dm_build_1383 int16) (*execRetInfo, error) {
   337  	dm_build_1384 := dm_build_471(dm_build_1380, dm_build_1381, dm_build_1382, dm_build_1383)
   338  	dm_build_1385, dm_build_1386 := dm_build_1380.dm_build_1352(dm_build_1384)
   339  	if dm_build_1386 != nil {
   340  		return nil, dm_build_1386
   341  	}
   342  	return dm_build_1385.(*execRetInfo), nil
   343  }
   344  
   345  func (dm_build_1388 *dm_build_1312) Dm_build_1387(dm_build_1389 *DmStatement, dm_build_1390 int16) (*execRetInfo, error) {
   346  	return dm_build_1388.Dm_build_1379(dm_build_1389, false, Dm_build_88)
   347  }
   348  
   349  func (dm_build_1392 *dm_build_1312) Dm_build_1391(dm_build_1393 *DmStatement, dm_build_1394 []OptParameter) (*execRetInfo, error) {
   350  	dm_build_1395, dm_build_1396 := dm_build_1392.dm_build_1352(dm_build_230(dm_build_1392, dm_build_1393, dm_build_1394))
   351  	if dm_build_1396 != nil {
   352  		return nil, dm_build_1396
   353  	}
   354  
   355  	return dm_build_1395.(*execRetInfo), nil
   356  }
   357  
   358  func (dm_build_1398 *dm_build_1312) Dm_build_1397(dm_build_1399 *DmStatement, dm_build_1400 int16) (*execRetInfo, error) {
   359  	return dm_build_1398.Dm_build_1379(dm_build_1399, true, dm_build_1400)
   360  }
   361  
   362  func (dm_build_1402 *dm_build_1312) Dm_build_1401(dm_build_1403 *DmStatement, dm_build_1404 [][]interface{}) (*execRetInfo, error) {
   363  	dm_build_1405 := dm_build_253(dm_build_1402, dm_build_1403, dm_build_1404)
   364  	dm_build_1406, dm_build_1407 := dm_build_1402.dm_build_1352(dm_build_1405)
   365  	if dm_build_1407 != nil {
   366  		return nil, dm_build_1407
   367  	}
   368  	return dm_build_1406.(*execRetInfo), nil
   369  }
   370  
   371  func (dm_build_1409 *dm_build_1312) Dm_build_1408(dm_build_1410 *DmStatement, dm_build_1411 [][]interface{}, dm_build_1412 bool) (*execRetInfo, error) {
   372  	var dm_build_1413, dm_build_1414 = 0, 0
   373  	var dm_build_1415 = len(dm_build_1411)
   374  	var dm_build_1416 [][]interface{}
   375  	var dm_build_1417 = NewExceInfo()
   376  	dm_build_1417.updateCounts = make([]int64, dm_build_1415)
   377  	var dm_build_1418 = false
   378  	for dm_build_1413 < dm_build_1415 {
   379  		for dm_build_1414 = dm_build_1413; dm_build_1414 < dm_build_1415; dm_build_1414++ {
   380  			paramData := dm_build_1411[dm_build_1414]
   381  			bindData := make([]interface{}, dm_build_1410.paramCount)
   382  			dm_build_1418 = false
   383  			for icol := 0; icol < int(dm_build_1410.paramCount); icol++ {
   384  				if dm_build_1410.params[icol].ioType == IO_TYPE_OUT {
   385  					continue
   386  				}
   387  				if dm_build_1409.dm_build_1543(bindData, paramData, icol) {
   388  					dm_build_1418 = true
   389  					break
   390  				}
   391  			}
   392  
   393  			if dm_build_1418 {
   394  				break
   395  			}
   396  			dm_build_1416 = append(dm_build_1416, bindData)
   397  		}
   398  
   399  		if dm_build_1414 != dm_build_1413 {
   400  			tmpExecInfo, err := dm_build_1409.Dm_build_1401(dm_build_1410, dm_build_1416)
   401  			if err != nil {
   402  				return nil, err
   403  			}
   404  			dm_build_1416 = dm_build_1416[0:0]
   405  			dm_build_1417.union(tmpExecInfo, dm_build_1413, dm_build_1414-dm_build_1413)
   406  		}
   407  
   408  		if dm_build_1414 < dm_build_1415 {
   409  			tmpExecInfo, err := dm_build_1409.Dm_build_1419(dm_build_1410, dm_build_1411[dm_build_1414], dm_build_1412)
   410  			if err != nil {
   411  				return nil, err
   412  			}
   413  
   414  			dm_build_1412 = true
   415  			dm_build_1417.union(tmpExecInfo, dm_build_1414, 1)
   416  		}
   417  
   418  		dm_build_1413 = dm_build_1414 + 1
   419  	}
   420  	for _, i := range dm_build_1417.updateCounts {
   421  		if i > 0 {
   422  			dm_build_1417.updateCount += i
   423  		}
   424  	}
   425  	return dm_build_1417, nil
   426  }
   427  
   428  func (dm_build_1420 *dm_build_1312) Dm_build_1419(dm_build_1421 *DmStatement, dm_build_1422 []interface{}, dm_build_1423 bool) (*execRetInfo, error) {
   429  
   430  	var dm_build_1424 = make([]interface{}, dm_build_1421.paramCount)
   431  	for icol := 0; icol < int(dm_build_1421.paramCount); icol++ {
   432  		if dm_build_1421.params[icol].ioType == IO_TYPE_OUT {
   433  			continue
   434  		}
   435  		if dm_build_1420.dm_build_1543(dm_build_1424, dm_build_1422, icol) {
   436  
   437  			if !dm_build_1423 {
   438  				preExecute := dm_build_461(dm_build_1420, dm_build_1421, dm_build_1421.params)
   439  				dm_build_1420.dm_build_1352(preExecute)
   440  				dm_build_1423 = true
   441  			}
   442  
   443  			dm_build_1420.dm_build_1549(dm_build_1421, dm_build_1421.params[icol], icol, dm_build_1422[icol].(iOffRowBinder))
   444  			dm_build_1424[icol] = ParamDataEnum_OFF_ROW
   445  		}
   446  	}
   447  
   448  	var dm_build_1425 = make([][]interface{}, 1, 1)
   449  	dm_build_1425[0] = dm_build_1424
   450  
   451  	dm_build_1426 := dm_build_253(dm_build_1420, dm_build_1421, dm_build_1425)
   452  	dm_build_1427, dm_build_1428 := dm_build_1420.dm_build_1352(dm_build_1426)
   453  	if dm_build_1428 != nil {
   454  		return nil, dm_build_1428
   455  	}
   456  	return dm_build_1427.(*execRetInfo), nil
   457  }
   458  
   459  func (dm_build_1430 *dm_build_1312) Dm_build_1429(dm_build_1431 *DmStatement, dm_build_1432 int16) (*execRetInfo, error) {
   460  	dm_build_1433 := dm_build_448(dm_build_1430, dm_build_1431, dm_build_1432)
   461  
   462  	dm_build_1434, dm_build_1435 := dm_build_1430.dm_build_1352(dm_build_1433)
   463  	if dm_build_1435 != nil {
   464  		return nil, dm_build_1435
   465  	}
   466  	return dm_build_1434.(*execRetInfo), nil
   467  }
   468  
   469  func (dm_build_1437 *dm_build_1312) Dm_build_1436(dm_build_1438 *innerRows, dm_build_1439 int64) (*execRetInfo, error) {
   470  	dm_build_1440 := dm_build_353(dm_build_1437, dm_build_1438, dm_build_1439, INT64_MAX)
   471  	dm_build_1441, dm_build_1442 := dm_build_1437.dm_build_1352(dm_build_1440)
   472  	if dm_build_1442 != nil {
   473  		return nil, dm_build_1442
   474  	}
   475  	return dm_build_1441.(*execRetInfo), nil
   476  }
   477  
   478  func (dm_build_1444 *dm_build_1312) Commit() error {
   479  	dm_build_1445 := dm_build_216(dm_build_1444)
   480  	_, dm_build_1446 := dm_build_1444.dm_build_1352(dm_build_1445)
   481  	if dm_build_1446 != nil {
   482  		return dm_build_1446
   483  	}
   484  
   485  	return nil
   486  }
   487  
   488  func (dm_build_1448 *dm_build_1312) Rollback() error {
   489  	dm_build_1449 := dm_build_509(dm_build_1448)
   490  	_, dm_build_1450 := dm_build_1448.dm_build_1352(dm_build_1449)
   491  	if dm_build_1450 != nil {
   492  		return dm_build_1450
   493  	}
   494  
   495  	return nil
   496  }
   497  
   498  func (dm_build_1452 *dm_build_1312) Dm_build_1451(dm_build_1453 *DmConnection) error {
   499  	dm_build_1454 := dm_build_514(dm_build_1452, dm_build_1453.IsoLevel)
   500  	_, dm_build_1455 := dm_build_1452.dm_build_1352(dm_build_1454)
   501  	if dm_build_1455 != nil {
   502  		return dm_build_1455
   503  	}
   504  
   505  	return nil
   506  }
   507  
   508  func (dm_build_1457 *dm_build_1312) Dm_build_1456(dm_build_1458 *DmStatement, dm_build_1459 string) error {
   509  	dm_build_1460 := dm_build_221(dm_build_1457, dm_build_1458, dm_build_1459)
   510  	_, dm_build_1461 := dm_build_1457.dm_build_1352(dm_build_1460)
   511  	if dm_build_1461 != nil {
   512  		return dm_build_1461
   513  	}
   514  
   515  	return nil
   516  }
   517  
   518  func (dm_build_1463 *dm_build_1312) Dm_build_1462(dm_build_1464 []uint32) ([]int64, error) {
   519  	dm_build_1465 := dm_build_612(dm_build_1463, dm_build_1464)
   520  	dm_build_1466, dm_build_1467 := dm_build_1463.dm_build_1352(dm_build_1465)
   521  	if dm_build_1467 != nil {
   522  		return nil, dm_build_1467
   523  	}
   524  	return dm_build_1466.([]int64), nil
   525  }
   526  
   527  func (dm_build_1469 *dm_build_1312) Close() error {
   528  	if dm_build_1469.dm_build_1323 {
   529  		return nil
   530  	}
   531  
   532  	dm_build_1470 := dm_build_1469.dm_build_1313.Close()
   533  	if dm_build_1470 != nil {
   534  		return dm_build_1470
   535  	}
   536  
   537  	dm_build_1469.dm_build_1316 = nil
   538  	dm_build_1469.dm_build_1323 = true
   539  	return nil
   540  }
   541  
   542  func (dm_build_1472 *dm_build_1312) dm_build_1471(dm_build_1473 *lob) (int64, error) {
   543  	dm_build_1474 := dm_build_384(dm_build_1472, dm_build_1473)
   544  	dm_build_1475, dm_build_1476 := dm_build_1472.dm_build_1352(dm_build_1474)
   545  	if dm_build_1476 != nil {
   546  		return 0, dm_build_1476
   547  	}
   548  	return dm_build_1475.(int64), nil
   549  }
   550  
   551  func (dm_build_1478 *dm_build_1312) dm_build_1477(dm_build_1479 *lob, dm_build_1480 int32, dm_build_1481 int32) ([]byte, error) {
   552  	dm_build_1482 := dm_build_371(dm_build_1478, dm_build_1479, int(dm_build_1480), int(dm_build_1481))
   553  	dm_build_1483, dm_build_1484 := dm_build_1478.dm_build_1352(dm_build_1482)
   554  	if dm_build_1484 != nil {
   555  		return nil, dm_build_1484
   556  	}
   557  	return dm_build_1483.([]byte), nil
   558  }
   559  
   560  func (dm_build_1486 *dm_build_1312) dm_build_1485(dm_build_1487 *DmBlob, dm_build_1488 int32, dm_build_1489 int32) ([]byte, error) {
   561  	var dm_build_1490 = make([]byte, dm_build_1489)
   562  	var dm_build_1491 int32 = 0
   563  	var dm_build_1492 int32 = 0
   564  	var dm_build_1493 []byte
   565  	var dm_build_1494 error
   566  	for dm_build_1491 < dm_build_1489 {
   567  		dm_build_1492 = dm_build_1489 - dm_build_1491
   568  		if dm_build_1492 > Dm_build_121 {
   569  			dm_build_1492 = Dm_build_121
   570  		}
   571  		dm_build_1493, dm_build_1494 = dm_build_1486.dm_build_1477(&dm_build_1487.lob, dm_build_1488, dm_build_1492)
   572  		if dm_build_1494 != nil {
   573  			return nil, dm_build_1494
   574  		}
   575  		if dm_build_1493 == nil || len(dm_build_1493) == 0 {
   576  			break
   577  		}
   578  		Dm_build_623.Dm_build_679(dm_build_1490, int(dm_build_1491), dm_build_1493, 0, len(dm_build_1493))
   579  		dm_build_1491 += int32(len(dm_build_1493))
   580  		dm_build_1488 += int32(len(dm_build_1493))
   581  		if dm_build_1487.readOver {
   582  			break
   583  		}
   584  	}
   585  	return dm_build_1490, nil
   586  }
   587  
   588  func (dm_build_1496 *dm_build_1312) dm_build_1495(dm_build_1497 *DmClob, dm_build_1498 int32, dm_build_1499 int32) (string, error) {
   589  	var dm_build_1500 bytes.Buffer
   590  	var dm_build_1501 int32 = 0
   591  	var dm_build_1502 int32 = 0
   592  	var dm_build_1503 []byte
   593  	var dm_build_1504 string
   594  	var dm_build_1505 error
   595  	for dm_build_1501 < dm_build_1499 {
   596  		dm_build_1502 = dm_build_1499 - dm_build_1501
   597  		if dm_build_1502 > Dm_build_121/2 {
   598  			dm_build_1502 = Dm_build_121 / 2
   599  		}
   600  		dm_build_1503, dm_build_1505 = dm_build_1496.dm_build_1477(&dm_build_1497.lob, dm_build_1498, dm_build_1502)
   601  		if dm_build_1505 != nil {
   602  			return "", dm_build_1505
   603  		}
   604  		if dm_build_1503 == nil || len(dm_build_1503) == 0 {
   605  			break
   606  		}
   607  		dm_build_1504 = Dm_build_623.Dm_build_780(dm_build_1503, 0, len(dm_build_1503), dm_build_1497.serverEncoding, dm_build_1496.dm_build_1316)
   608  
   609  		dm_build_1500.WriteString(dm_build_1504)
   610  		dm_build_1501 += int32(len(dm_build_1504))
   611  		dm_build_1498 += int32(len(dm_build_1504))
   612  		if dm_build_1497.readOver {
   613  			break
   614  		}
   615  	}
   616  	return dm_build_1500.String(), nil
   617  }
   618  
   619  func (dm_build_1507 *dm_build_1312) dm_build_1506(dm_build_1508 *DmClob, dm_build_1509 int, dm_build_1510 string, dm_build_1511 string) (int, error) {
   620  	var dm_build_1512 = Dm_build_623.Dm_build_836(dm_build_1510, dm_build_1511, dm_build_1507.dm_build_1316)
   621  	var dm_build_1513 = 0
   622  	var dm_build_1514 = len(dm_build_1512)
   623  	var dm_build_1515 = 0
   624  	var dm_build_1516 = 0
   625  	var dm_build_1517 = 0
   626  	var dm_build_1518 = dm_build_1514/Dm_build_120 + 1
   627  	var dm_build_1519 byte = 0
   628  	var dm_build_1520 byte = 0x01
   629  	var dm_build_1521 byte = 0x02
   630  	for i := 0; i < dm_build_1518; i++ {
   631  		dm_build_1519 = 0
   632  		if i == 0 {
   633  			dm_build_1519 |= dm_build_1520
   634  		}
   635  		if i == dm_build_1518-1 {
   636  			dm_build_1519 |= dm_build_1521
   637  		}
   638  		dm_build_1517 = dm_build_1514 - dm_build_1516
   639  		if dm_build_1517 > Dm_build_120 {
   640  			dm_build_1517 = Dm_build_120
   641  		}
   642  
   643  		setLobData := dm_build_528(dm_build_1507, &dm_build_1508.lob, dm_build_1519, dm_build_1509, dm_build_1512, dm_build_1513, dm_build_1517)
   644  		ret, err := dm_build_1507.dm_build_1352(setLobData)
   645  		if err != nil {
   646  			return 0, err
   647  		}
   648  		tmp := ret.(int32)
   649  		if err != nil {
   650  			return -1, err
   651  		}
   652  		if tmp <= 0 {
   653  			return dm_build_1515, nil
   654  		} else {
   655  			dm_build_1509 += int(tmp)
   656  			dm_build_1515 += int(tmp)
   657  			dm_build_1516 += dm_build_1517
   658  			dm_build_1513 += dm_build_1517
   659  		}
   660  	}
   661  	return dm_build_1515, nil
   662  }
   663  
   664  func (dm_build_1523 *dm_build_1312) dm_build_1522(dm_build_1524 *DmBlob, dm_build_1525 int, dm_build_1526 []byte) (int, error) {
   665  	var dm_build_1527 = 0
   666  	var dm_build_1528 = len(dm_build_1526)
   667  	var dm_build_1529 = 0
   668  	var dm_build_1530 = 0
   669  	var dm_build_1531 = 0
   670  	var dm_build_1532 = dm_build_1528/Dm_build_120 + 1
   671  	var dm_build_1533 byte = 0
   672  	var dm_build_1534 byte = 0x01
   673  	var dm_build_1535 byte = 0x02
   674  	for i := 0; i < dm_build_1532; i++ {
   675  		dm_build_1533 = 0
   676  		if i == 0 {
   677  			dm_build_1533 |= dm_build_1534
   678  		}
   679  		if i == dm_build_1532-1 {
   680  			dm_build_1533 |= dm_build_1535
   681  		}
   682  		dm_build_1531 = dm_build_1528 - dm_build_1530
   683  		if dm_build_1531 > Dm_build_120 {
   684  			dm_build_1531 = Dm_build_120
   685  		}
   686  
   687  		setLobData := dm_build_528(dm_build_1523, &dm_build_1524.lob, dm_build_1533, dm_build_1525, dm_build_1526, dm_build_1527, dm_build_1531)
   688  		ret, err := dm_build_1523.dm_build_1352(setLobData)
   689  		if err != nil {
   690  			return 0, err
   691  		}
   692  		tmp := ret.(int32)
   693  		if tmp <= 0 {
   694  			return dm_build_1529, nil
   695  		} else {
   696  			dm_build_1525 += int(tmp)
   697  			dm_build_1529 += int(tmp)
   698  			dm_build_1530 += dm_build_1531
   699  			dm_build_1527 += dm_build_1531
   700  		}
   701  	}
   702  	return dm_build_1529, nil
   703  }
   704  
   705  func (dm_build_1537 *dm_build_1312) dm_build_1536(dm_build_1538 *lob, dm_build_1539 int) (int64, error) {
   706  	dm_build_1540 := dm_build_395(dm_build_1537, dm_build_1538, dm_build_1539)
   707  	dm_build_1541, dm_build_1542 := dm_build_1537.dm_build_1352(dm_build_1540)
   708  	if dm_build_1542 != nil {
   709  		return dm_build_1538.length, dm_build_1542
   710  	}
   711  	return dm_build_1541.(int64), nil
   712  }
   713  
   714  func (dm_build_1544 *dm_build_1312) dm_build_1543(dm_build_1545 []interface{}, dm_build_1546 []interface{}, dm_build_1547 int) bool {
   715  	var dm_build_1548 = false
   716  	if dm_build_1547 >= len(dm_build_1546) || dm_build_1546[dm_build_1547] == nil {
   717  		dm_build_1545[dm_build_1547] = ParamDataEnum_Null
   718  	} else if binder, ok := dm_build_1546[dm_build_1547].(iOffRowBinder); ok {
   719  		dm_build_1548 = true
   720  		dm_build_1545[dm_build_1547] = ParamDataEnum_OFF_ROW
   721  		var lob lob
   722  		if l, ok := binder.getObj().(DmBlob); ok {
   723  			lob = l.lob
   724  		} else if l, ok := binder.getObj().(DmClob); ok {
   725  			lob = l.lob
   726  		}
   727  		if &lob != nil && lob.canOptimized(dm_build_1544.dm_build_1316) {
   728  			dm_build_1545[dm_build_1547] = &lobCtl{lob.buildCtlData()}
   729  			dm_build_1548 = false
   730  		}
   731  	} else {
   732  		dm_build_1545[dm_build_1547] = dm_build_1546[dm_build_1547]
   733  	}
   734  	return dm_build_1548
   735  }
   736  
   737  func (dm_build_1550 *dm_build_1312) dm_build_1549(dm_build_1551 *DmStatement, dm_build_1552 parameter, dm_build_1553 int, dm_build_1554 iOffRowBinder) error {
   738  	var dm_build_1555 = Dm_build_906()
   739  	dm_build_1554.read(dm_build_1555)
   740  	var dm_build_1556 = 0
   741  	for !dm_build_1554.isReadOver() || dm_build_1555.Dm_build_907() > 0 {
   742  		if !dm_build_1554.isReadOver() && dm_build_1555.Dm_build_907() < Dm_build_120 {
   743  			dm_build_1554.read(dm_build_1555)
   744  		}
   745  		if dm_build_1555.Dm_build_907() > Dm_build_120 {
   746  			dm_build_1556 = Dm_build_120
   747  		} else {
   748  			dm_build_1556 = dm_build_1555.Dm_build_907()
   749  		}
   750  
   751  		putData := dm_build_499(dm_build_1550, dm_build_1551, int16(dm_build_1553), dm_build_1555, int32(dm_build_1556))
   752  		_, err := dm_build_1550.dm_build_1352(putData)
   753  		if err != nil {
   754  			return err
   755  		}
   756  	}
   757  	return nil
   758  }
   759  
   760  func (dm_build_1558 *dm_build_1312) dm_build_1557() ([]byte, error) {
   761  	var dm_build_1559 error
   762  	if dm_build_1558.dm_build_1320 == nil {
   763  		if dm_build_1558.dm_build_1320, dm_build_1559 = security.NewClientKeyPair(); dm_build_1559 != nil {
   764  			return nil, dm_build_1559
   765  		}
   766  	}
   767  	return security.Bn2Bytes(dm_build_1558.dm_build_1320.GetY(), security.DH_KEY_LENGTH), nil
   768  }
   769  
   770  func (dm_build_1561 *dm_build_1312) dm_build_1560() (*security.DhKey, error) {
   771  	var dm_build_1562 error
   772  	if dm_build_1561.dm_build_1320 == nil {
   773  		if dm_build_1561.dm_build_1320, dm_build_1562 = security.NewClientKeyPair(); dm_build_1562 != nil {
   774  			return nil, dm_build_1562
   775  		}
   776  	}
   777  	return dm_build_1561.dm_build_1320, nil
   778  }
   779  
   780  func (dm_build_1564 *dm_build_1312) dm_build_1563(dm_build_1565 int, dm_build_1566 []byte, dm_build_1567 string, dm_build_1568 int) (dm_build_1569 error) {
   781  	if dm_build_1565 > 0 && dm_build_1565 < security.MIN_EXTERNAL_CIPHER_ID && dm_build_1566 != nil {
   782  		dm_build_1564.dm_build_1317, dm_build_1569 = security.NewSymmCipher(dm_build_1565, dm_build_1566)
   783  	} else if dm_build_1565 >= security.MIN_EXTERNAL_CIPHER_ID {
   784  		if dm_build_1564.dm_build_1317, dm_build_1569 = security.NewThirdPartCipher(dm_build_1565, dm_build_1566, dm_build_1567, dm_build_1568); dm_build_1569 != nil {
   785  			dm_build_1569 = THIRD_PART_CIPHER_INIT_FAILED.addDetailln(dm_build_1569.Error()).throw()
   786  		}
   787  	}
   788  	return
   789  }
   790  
   791  func (dm_build_1571 *dm_build_1312) dm_build_1570(dm_build_1572 bool) (dm_build_1573 error) {
   792  	if dm_build_1571.dm_build_1314, dm_build_1573 = security.NewTLSFromTCP(dm_build_1571.dm_build_1313, dm_build_1571.dm_build_1316.dmConnector.sslCertPath, dm_build_1571.dm_build_1316.dmConnector.sslKeyPath, dm_build_1571.dm_build_1316.dmConnector.user); dm_build_1573 != nil {
   793  		return
   794  	}
   795  	if !dm_build_1572 {
   796  		dm_build_1571.dm_build_1314 = nil
   797  	}
   798  	return
   799  }
   800  
   801  func (dm_build_1575 *dm_build_1312) dm_build_1574(dm_build_1576 dm_build_128) bool {
   802  	return dm_build_1576.dm_build_143() != Dm_build_35 && dm_build_1575.dm_build_1316.sslEncrypt == 1
   803  }