github.com/xiyichan/dm8@v0.0.0-20211213021639-be727be3e136/a.go (about)

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