@sap/hana-client
Advanced tools
Comparing version 2.17.22 to 2.18.22
@@ -0,1 +1,27 @@ | ||
# Hana Client 2.18.x Drivers | ||
Please see the "What’s new in the SAP HANA Client" section in the official HANA client 2.18 documentation: | ||
https://help.sap.com/viewer/product/SAP_HANA_CLIENT/2.18/en-US | ||
For the latest updates please see SAP Note 3362072 - SAP HANA Client 2.18 Release Notes | ||
https://launchpad.support.sap.com/#/notes/3362072 | ||
## Version 2.18.22 | ||
### Changes: | ||
- Issue Number 301770: Calling status functions on Connection, Statement, or ResultSet objects could have caused the application to block temporarily. | ||
- Issue Number 310411: The driver could have crashed with a malformed connection string. | ||
- Issue Number 312275: The Node.js driver included in the HANA Client install for Mac on ARM64 could have failed to install. | ||
### Underlying SQLDBC changes: | ||
- Issue Number 307786: The client could have crashed when the Transaction Isolation Level was changed. | ||
- Issue Number 307701: Incorrect results could have been returned after running out of memory. | ||
- Issue Number 296003: The index server could have exited during out-of-memory situations when SQLDBC tracing was enabled. | ||
- Issue Number 291672: High CPU usage could have been observed in a multi-threaded SQLDBC application. | ||
- Issue Number 308137: SQLDBC could have crashed when accessed by a new user or technical user. | ||
# Hana Client 2.17.x Drivers | ||
@@ -2,0 +28,0 @@ |
@@ -86,25 +86,29 @@ declare module '@sap/hana-client' { | ||
public exec<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}, fn: HanaResultCallback<T>): void; | ||
public exec<T>(options: {[key: string]: boolean}, fn: HanaResultCallback<T>): void; | ||
public exec<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: boolean}, fn: HanaResultCallback<T>): void; | ||
public exec<T>(options: {[key: string]: any}, fn: HanaResultCallback<T>): void; | ||
public exec<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: any}, fn: HanaResultCallback<T>): void; | ||
public exec<T>(): T; | ||
public exec<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}): T; | ||
public exec<T>(options: {[key: string]: boolean}): T; | ||
public exec<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: boolean}): T; | ||
public exec<T>(options: {[key: string]: any}): T; | ||
public exec<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: any}): T; | ||
public execute<T>(fn: HanaResultCallback<T>): void; | ||
public execute<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}, fn: HanaResultCallback<T>): void; | ||
public execute<T>(options: {[key: string]: boolean}, fn: HanaResultCallback<T>): void; | ||
public execute<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: boolean}, fn: HanaResultCallback<T>): void; | ||
public execute<T>(options: {[key: string]: any}, fn: HanaResultCallback<T>): void; | ||
public execute<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: any}, fn: HanaResultCallback<T>): void; | ||
public execute<T>(): T; | ||
public execute<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}): T; | ||
public execute<T>(options: {[key: string]: boolean}): T; | ||
public execute<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: boolean}): T; | ||
public execute<T>(options: {[key: string]: any}): T; | ||
public execute<T>(params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: any}): T; | ||
public execBatch<T>(params: Array<Array<HanaParameterType>>): T; | ||
public execBatch<T>(params: Array<Array<HanaParameterType>>, options: {[key: string]: any}): T; | ||
public execBatch<T>(params: Array<Array<HanaParameterType>>, fn: HanaResultCallback<T>): void; | ||
public execBatch<T>(params: Array<Array<HanaParameterType>>, options: {[key: string]: any}, fn: HanaResultCallback<T>): void; | ||
public executeBatch<T>(params: Array<Array<HanaParameterType>>): T; | ||
public executeBatch<T>(params: Array<Array<HanaParameterType>>, options: {[key: string]: any}): T; | ||
public executeBatch<T>(params: Array<Array<HanaParameterType>>, fn: HanaResultCallback<T>): void; | ||
public executeBatch<T>(params: Array<Array<HanaParameterType>>, options: {[key: string]: any}, fn: HanaResultCallback<T>): void; | ||
@@ -114,2 +118,6 @@ public execQuery(fn: HanaResultSetCallback): void; | ||
public execQuery(params?: HanaParameterType[]): ResultSet; | ||
public execQuery(params: HanaParameterType[], options: {[key: string]: any}): ResultSet; | ||
public execQuery(params: HanaParameterType[], options: {[key: string]: any}, fn: HanaResultSetCallback): void; | ||
public execQuery(options: {[key: string]: any}): ResultSet; | ||
public execQuery(options: {[key: string]: any}, fn: HanaResultSetCallback): void; | ||
@@ -119,2 +127,6 @@ public executeQuery(fn: HanaResultSetCallback): void; | ||
public executeQuery(params?: HanaParameterType[]): ResultSet; | ||
public executeQuery(params: HanaParameterType[], options: {[key: string]: any}): ResultSet; | ||
public executeQuery(params: HanaParameterType[], options: {[key: string]: any}, fn: HanaResultSetCallback): void; | ||
public executeQuery(options: {[key: string]: any}): ResultSet; | ||
public executeQuery(options: {[key: string]: any}, fn: HanaResultSetCallback): void; | ||
@@ -153,19 +165,19 @@ public functionCode(): number; | ||
public exec<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}, fn: HanaResultCallback<T>): void; | ||
public exec<T>(sql: string, options: {[key: string]: boolean}, fn: HanaResultCallback<T>): void; | ||
public exec<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: boolean}, fn: HanaResultCallback<T>): void; | ||
public exec<T>(sql: string, options: {[key: string]: any}, fn: HanaResultCallback<T>): void; | ||
public exec<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: any}, fn: HanaResultCallback<T>): void; | ||
public exec<T>(sql: string): T; | ||
public exec<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}): T; | ||
public exec<T>(sql: string, options: {[key: string]: boolean}): T; | ||
public exec<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: boolean}): T; | ||
public exec<T>(sql: string, options: {[key: string]: any}): T; | ||
public exec<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: any}): T; | ||
public execute<T>(sql: string, fn: HanaResultCallback<T>): void; | ||
public execute<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}, fn: HanaResultCallback<T>): void; | ||
public execute<T>(sql: string, options: {[key: string]: boolean}, fn: HanaResultCallback<T>): void; | ||
public execute<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: boolean}, fn: HanaResultCallback<T>): void; | ||
public execute<T>(sql: string, options: {[key: string]: any}, fn: HanaResultCallback<T>): void; | ||
public execute<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: any}, fn: HanaResultCallback<T>): void; | ||
public execute<T>(sql: string): T; | ||
public execute<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}): T; | ||
public execute<T>(sql: string, options: {[key: string]: boolean}): T; | ||
public execute<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: boolean}): T; | ||
public execute<T>(sql: string, options: {[key: string]: any}): T; | ||
public execute<T>(sql: string, params: HanaParameterType[] | {[key: string]: HanaParameterType}, options: {[key: string]: any}): T; | ||
@@ -172,0 +184,0 @@ public getClientInfo(key: string): string; |
@@ -310,2 +310,4 @@ 'use strict'; | ||
arg.rowsAsArray !== undefined || | ||
arg.queryTimeout !== undefined || | ||
arg.communicationTimeout !== undefined || | ||
arg.fastInternalRows !== undefined) { | ||
@@ -371,3 +373,3 @@ // has a valid option key, so assume options | ||
// see also ConnectionExec which has very similar code. | ||
function StatementExec(stmt, p1, p2, p3) { | ||
function StatementExec(stmt, p1, p2, p3, execType) { | ||
var args = new ArgParser([p1, p2, p3]); | ||
@@ -378,3 +380,16 @@ var parseError; | ||
} catch(e) { | ||
parseError = new Error("Invalid parameter for function 'exec[ute]([params][, options][, callback])'"); | ||
var methodName; | ||
switch (execType) { | ||
case 2: | ||
methodName = "exec[ute]Batch"; | ||
break; | ||
case 1: | ||
methodName = "exec[ute]Query"; | ||
break; | ||
default: | ||
case 0: | ||
methodName = "exec[ute]"; | ||
break; | ||
} | ||
parseError = new Error("Invalid parameter for function '" + methodName + "([params][, options][, callback])'"); | ||
parseError.code = -20002; | ||
@@ -384,2 +399,15 @@ parseError.sqlState = 'HY000'; | ||
var func; | ||
switch (execType) { | ||
case 2: | ||
func = stmt.execBatchInternal; | ||
break; | ||
case 1: | ||
func = stmt.execQueryInternal; | ||
break; | ||
case 0: | ||
default: | ||
func = stmt.execInternal; | ||
break; | ||
} | ||
if(args.cbfunc) { | ||
@@ -392,5 +420,5 @@ // async call, do result set conversion work after Statement.execInternal | ||
} | ||
stmt.execInternal(args.params, | ||
args.options, | ||
function StatementExecCallback(e, rows) { | ||
func.call(stmt, args.params, | ||
args.options, | ||
function StatementExecCallback(e, rows) { | ||
if(!e) { | ||
@@ -424,3 +452,3 @@ // convert rows from InternalResultSet format | ||
} | ||
var rows = stmt.execInternal(args.params, args.options, null); | ||
var rows = func.call(stmt, args.params, args.options, null); | ||
// convert rows from InternalResultSet format | ||
@@ -441,3 +469,3 @@ // (Note rows can be a Number if stmt does not return a result set) | ||
stmt.exec = function(p1 = null, p2 = null, p3 = null) { | ||
return StatementExec(this, p1, p2, p3); | ||
return StatementExec(this, p1, p2, p3, 0); | ||
} | ||
@@ -447,5 +475,25 @@ } // else case should never happen | ||
stmt.execute = function(p1 = null, p2 = null, p3 = null) { | ||
return StatementExec(this, p1, p2, p3); | ||
return StatementExec(this, p1, p2, p3, 0); | ||
} | ||
} // else case should never happen | ||
if(stmt.execQuery == null) { | ||
stmt.execQuery = function(p1 = null, p2 = null, p3 = null) { | ||
return StatementExec(this, p1, p2, p3, 1); | ||
} | ||
} // else case should never happen | ||
if(stmt.executeQuery == null) { | ||
stmt.executeQuery = function(p1 = null, p2 = null, p3 = null) { | ||
return StatementExec(this, p1, p2, p3, 1); | ||
} | ||
} // else case should never happen | ||
if(stmt.execBatch == null) { | ||
stmt.execBatch = function(p1 = null, p2 = null, p3 = null) { | ||
return StatementExec(this, p1, p2, p3, 2); | ||
} | ||
} // else case should never happen | ||
if(stmt.executeBatch == null) { | ||
stmt.executeBatch = function(p1 = null, p2 = null, p3 = null) { | ||
return StatementExec(this, p1, p2, p3, 2); | ||
} | ||
} // else case should never happen | ||
} | ||
@@ -452,0 +500,0 @@ |
{ | ||
"name": "@sap/hana-client", | ||
"version": "2.17.22", | ||
"version": "2.18.22", | ||
"lockfileVersion": 1, | ||
@@ -5,0 +5,0 @@ "requires": true, |
@@ -5,3 +5,3 @@ { | ||
"description": "Official SAP HANA Node.js Driver", | ||
"version": "2.17.22", | ||
"version": "2.18.22", | ||
"dependencies": { | ||
@@ -8,0 +8,0 @@ "debug": "3.1.0" |
@@ -227,1 +227,9 @@ # @sap/hana-client | ||
+ [SAP HANA Documentation](https://help.sap.com/viewer/f1b440ded6144a54ada97ff95dac7adf/latest/en-US/a5c332936d9f47d8b820a4ecc427352c.html) | ||
## License | ||
The HANA Node.js Driver is provided via the [SAP Developer License Agreement](https://tools.hana.ondemand.com/developer-license-3_1.txt). | ||
By using this software, you agree that the following text is incorporated into the terms of the Developer Agreement: | ||
> If you are an existing SAP customer for On Premise software, your use of this current software is also covered by the terms of your software license agreement with SAP, including the Use Rights, the current version of which can be found at: https://www.sap.com/about/agreements/product-use-and-support-terms.html?tag=agreements:product-use-support-terms/on-premise-software/software-use-rights |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1789
235
184231335