node-firebird-driver-native 2.1.1 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/lib/attachment.js +2 -2
- package/dist/lib/attachment.js.map +1 -1
- package/dist/lib/blob.d.ts +1 -0
- package/dist/lib/blob.js +5 -2
- package/dist/lib/blob.js.map +1 -1
- package/dist/lib/fb-util.js +18 -2
- package/dist/lib/fb-util.js.map +1 -1
- package/dist/lib/statement.d.ts +3 -0
- package/dist/lib/statement.js +31 -7
- package/dist/lib/statement.js.map +1 -1
- package/dist/lib/transaction.js +1 -1
- package/dist/lib/transaction.js.map +1 -1
- package/dist/test/test.js +2 -2
- package/dist/test/test.js.map +1 -1
- package/package.json +5 -5
- package/src/lib/attachment.ts +1 -1
- package/src/lib/blob.ts +5 -1
- package/src/lib/events.ts +1 -1
- package/src/lib/fb-util.ts +22 -3
- package/src/lib/resultset.ts +2 -2
- package/src/lib/statement.ts +34 -5
- package/src/lib/transaction.ts +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
# Firebird high-level native client for Node.js / TypeScript
|
|
5
5
|
|
|
6
|
-
node-firebird-driver-native is a modern (Firebird 3+ client, Node.js
|
|
6
|
+
node-firebird-driver-native is a modern (Firebird 3+ client, Node.js 10+, TypeScript 2+) native client for Firebird based in the
|
|
7
7
|
node-firebird-driver API.
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
@@ -48,7 +48,7 @@ async function test() {
|
|
|
48
48
|
test().then(() => console.log('Finish...'));
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
See more examples in
|
|
51
|
+
See more examples in [packages/node-firebird-driver/src/test](https://github.com/asfernandes/node-firebird-drivers/tree/master/packages/node-firebird-driver/src/test) directory.
|
|
52
52
|
|
|
53
53
|
# Donation
|
|
54
54
|
|
package/dist/lib/attachment.js
CHANGED
|
@@ -22,7 +22,7 @@ class AttachmentImpl extends impl_1.AbstractAttachment {
|
|
|
22
22
|
return __awaiter(this, void 0, void 0, function* () {
|
|
23
23
|
const attachment = new AttachmentImpl(client);
|
|
24
24
|
return yield client.statusAction((status) => __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
const dpb = fb_util_1.createDpb(options);
|
|
25
|
+
const dpb = (0, fb_util_1.createDpb)(options);
|
|
26
26
|
attachment.attachmentHandle = yield client.dispatcher.attachDatabaseAsync(status, uri, dpb.length, dpb);
|
|
27
27
|
return attachment;
|
|
28
28
|
}));
|
|
@@ -32,7 +32,7 @@ class AttachmentImpl extends impl_1.AbstractAttachment {
|
|
|
32
32
|
return __awaiter(this, void 0, void 0, function* () {
|
|
33
33
|
const attachment = new AttachmentImpl(client);
|
|
34
34
|
return yield client.statusAction((status) => __awaiter(this, void 0, void 0, function* () {
|
|
35
|
-
const dpb = fb_util_1.createDpb(options);
|
|
35
|
+
const dpb = (0, fb_util_1.createDpb)(options);
|
|
36
36
|
attachment.attachmentHandle = yield client.dispatcher.createDatabaseAsync(status, uri, dpb.length, dpb);
|
|
37
37
|
return attachment;
|
|
38
38
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment.js","sourceRoot":"","sources":["../../src/lib/attachment.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAwC;AAExC,2CAA4C;AAC5C,+CAAgD;AAChD,qCAAsC;AACtC,uCAAsC;AAUtC,6DAAwE;AAKxE,iCAAiC;AACjC,MAAa,cAAe,SAAQ,yBAAkB;IAMrD,MAAM,CAAO,OAAO,CAAC,MAAkB,EAAE,GAAW,EAAE,OAAwB;;YAC7E,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;YAE9C,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,CAAM,MAAM,EAAC,EAAE;gBAC/C,MAAM,GAAG,GAAG,mBAAS,
|
|
1
|
+
{"version":3,"file":"attachment.js","sourceRoot":"","sources":["../../src/lib/attachment.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAAwC;AAExC,2CAA4C;AAC5C,+CAAgD;AAChD,qCAAsC;AACtC,uCAAsC;AAUtC,6DAAwE;AAKxE,iCAAiC;AACjC,MAAa,cAAe,SAAQ,yBAAkB;IAMrD,MAAM,CAAO,OAAO,CAAC,MAAkB,EAAE,GAAW,EAAE,OAAwB;;YAC7E,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;YAE9C,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,CAAM,MAAM,EAAC,EAAE;gBAC/C,MAAM,GAAG,GAAG,IAAA,mBAAS,EAAC,OAAO,CAAC,CAAC;gBAC/B,UAAU,CAAC,gBAAgB,GAAG,MAAM,MAAO,CAAC,UAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC1G,OAAO,UAAU,CAAC;YACnB,CAAC,CAAA,CAAC,CAAC;QACJ,CAAC;KAAA;IAED,MAAM,CAAO,cAAc,CAAC,MAAkB,EAAE,GAAW,EAAE,OAA+B;;YAC3F,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;YAE9C,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,CAAM,MAAM,EAAC,EAAE;gBAC/C,MAAM,GAAG,GAAG,IAAA,mBAAS,EAAC,OAAO,CAAC,CAAC;gBAC/B,UAAU,CAAC,gBAAgB,GAAG,MAAM,MAAO,CAAC,UAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC1G,OAAO,UAAU,CAAC;YACnB,CAAC,CAAA,CAAC,CAAC;QACJ,CAAC;KAAA;IAED,mCAAmC;IACnB,kBAAkB;;YACjC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YACrF,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACnC,CAAC;KAAA;IAED,sDAAsD;IACtC,oBAAoB;;YACnC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3F,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACnC,CAAC;KAAA;IAED,gCAAgC;IAChB,wBAAwB,CAAC,OAA4B;;YACpE,OAAO,MAAM,6BAAe,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;KAAA;IAEe,kBAAkB,CAAC,WAA4B;;YAC9D,OAAO,MAAM,qBAAc,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACvD,CAAC;KAAA;IAEe,gBAAgB,CAAC,WAA4B,EAAE,IAAU;;YACxE,OAAO,MAAM,qBAAc,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;KAAA;IAED,wBAAwB;IACR,eAAe,CAAC,WAA4B,EAAE,OAAe,EAAE,OAAwB;;YACtG,OAAO,MAAM,yBAAa,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;KAAA;IAEe,mBAAmB,CAClC,KAAe,EAAE,QAAyD;;YAE1E,OAAO,MAAM,mBAAU,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC;KAAA;CACD;AA7DD,wCA6DC"}
|
package/dist/lib/blob.d.ts
CHANGED
package/dist/lib/blob.js
CHANGED
|
@@ -45,8 +45,8 @@ class BlobStreamImpl extends impl_1.AbstractBlobStream {
|
|
|
45
45
|
yield this.blobHandle.getInfoAsync(status, infoReq.byteLength, infoReq, infoRet.byteLength, infoRet);
|
|
46
46
|
if (infoRet[0] != impl_1.blobInfo.totalLength)
|
|
47
47
|
throw new Error('Unrecognized response from Blob::getInfo.');
|
|
48
|
-
const size = impl_1.getPortableInteger(infoRet.subarray(1), 2);
|
|
49
|
-
return impl_1.getPortableInteger(infoRet.subarray(3), size);
|
|
48
|
+
const size = (0, impl_1.getPortableInteger)(infoRet.subarray(1), 2);
|
|
49
|
+
return (0, impl_1.getPortableInteger)(infoRet.subarray(3), size);
|
|
50
50
|
}));
|
|
51
51
|
});
|
|
52
52
|
}
|
|
@@ -85,6 +85,9 @@ class BlobStreamImpl extends impl_1.AbstractBlobStream {
|
|
|
85
85
|
}));
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
|
+
get isValid() {
|
|
89
|
+
return !!this.blobHandle && this.attachment.isValid;
|
|
90
|
+
}
|
|
88
91
|
}
|
|
89
92
|
exports.BlobStreamImpl = BlobStreamImpl;
|
|
90
93
|
//# sourceMappingURL=blob.js.map
|
package/dist/lib/blob.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/lib/blob.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,+DAA4C;AAC5C,6DAAsG;AAEtG,+CAA+C;AAI/C,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAG/B,iCAAiC;AACjC,MAAa,cAAe,SAAQ,yBAAkB;IAMrD,MAAM,CAAO,MAAM,CAAC,UAA0B,EAAE,WAA4B;;YAC3E,OAAO,MAAM,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAM,MAAM,EAAC,EAAE;gBAC1D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,gBAAiB,CAAC,eAAe,CACpE,MAAM,EAAE,WAAW,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAE9D,MAAM,IAAI,GAAG,IAAI,2BAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBAE1C,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACxD,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;gBACnC,OAAO,UAAU,CAAC;YACnB,CAAC,CAAA,CAAC,CAAC;QACJ,CAAC;KAAA;IAED,MAAM,CAAO,IAAI,CAAC,UAA0B,EAAE,WAA4B,EAAE,IAAU;;YACrF,OAAO,MAAM,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAM,MAAM,EAAC,EAAE;gBAC1D,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACxD,UAAU,CAAC,UAAU,GAAG,MAAM,UAAU,CAAC,gBAAiB,CAAC,aAAa,CACvE,MAAM,EAAE,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;gBAC/D,OAAO,UAAU,CAAC;YACnB,CAAC,CAAA,CAAC,CAAC;QACJ,CAAC;KAAA;IAEe,iBAAiB;;YAChC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAM,MAAM,EAAC,EAAE;gBAC/D,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,eAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;gBACvD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,UAAW,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAEtG,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,eAAQ,CAAC,WAAW;oBACrC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBAE9D,MAAM,IAAI,GAAG,yBAAkB,
|
|
1
|
+
{"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/lib/blob.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/fb-util.js
CHANGED
|
@@ -22,11 +22,11 @@ function fixMetadata(status, metadata) {
|
|
|
22
22
|
try {
|
|
23
23
|
for (let i = metadata.getCountSync(status) - 1; i >= 0; --i) {
|
|
24
24
|
switch (metadata.getTypeSync(status, i)) {
|
|
25
|
-
//
|
|
25
|
+
// Transform CHAR descriptors to VARCHAR.
|
|
26
26
|
case impl_1.sqlTypes.SQL_TEXT:
|
|
27
27
|
outBuilder.setTypeSync(status, i, impl_1.sqlTypes.SQL_VARYING);
|
|
28
28
|
break;
|
|
29
|
-
//
|
|
29
|
+
// Transform numeric descriptors to DOUBLE PRECISION.
|
|
30
30
|
case impl_1.sqlTypes.SQL_SHORT:
|
|
31
31
|
case impl_1.sqlTypes.SQL_LONG:
|
|
32
32
|
case impl_1.sqlTypes.SQL_INT64:
|
|
@@ -35,6 +35,22 @@ function fixMetadata(status, metadata) {
|
|
|
35
35
|
outBuilder.setLengthSync(status, i, 8);
|
|
36
36
|
outBuilder.setScaleSync(status, i, 0);
|
|
37
37
|
break;
|
|
38
|
+
// Transform TIME_TZ to TIME_TZ_EX.
|
|
39
|
+
case impl_1.sqlTypes.SQL_TIME_TZ:
|
|
40
|
+
outBuilder.setTypeSync(status, i, impl_1.sqlTypes.SQL_TIME_TZ_EX);
|
|
41
|
+
break;
|
|
42
|
+
// Transform TIMESTAMP_TZ to TIMESTAMP_TZ_EX.
|
|
43
|
+
case impl_1.sqlTypes.SQL_TIMESTAMP_TZ:
|
|
44
|
+
outBuilder.setTypeSync(status, i, impl_1.sqlTypes.SQL_TIMESTAMP_TZ_EX);
|
|
45
|
+
break;
|
|
46
|
+
// Transform INT128, DEC16 and DEC34 descriptors to VARCHAR.
|
|
47
|
+
case impl_1.sqlTypes.SQL_INT128:
|
|
48
|
+
case impl_1.sqlTypes.SQL_DEC16:
|
|
49
|
+
case impl_1.sqlTypes.SQL_DEC34:
|
|
50
|
+
outBuilder.setTypeSync(status, i, impl_1.sqlTypes.SQL_VARYING);
|
|
51
|
+
outBuilder.setLengthSync(status, i, 45);
|
|
52
|
+
outBuilder.setCharSetSync(status, i, impl_1.charSets.ascii);
|
|
53
|
+
break;
|
|
38
54
|
}
|
|
39
55
|
}
|
|
40
56
|
ret = outBuilder.getMetadataSync(status);
|
package/dist/lib/fb-util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fb-util.js","sourceRoot":"","sources":["../../src/lib/fb-util.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"fb-util.js","sourceRoot":"","sources":["../../src/lib/fb-util.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6DAAoF;AACpF,qEAAmD;AAKnD,yDAAyD;AACzD,SAAgB,WAAW,CAAC,MAAiB,EAAE,QAA6B;IAC3E,IAAI,CAAC,QAAQ;QACZ,OAAO,SAAS,CAAC;IAElB,IAAI,GAAuB,CAAC;IAE5B,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC;IACpD,IAAI;QACH,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;YAC5D,QAAQ,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE;gBACxC,yCAAyC;gBACzC,KAAK,eAAQ,CAAC,QAAQ;oBACrB,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,eAAQ,CAAC,WAAW,CAAC,CAAC;oBACxD,MAAM;gBAEP,qDAAqD;gBACrD,KAAK,eAAQ,CAAC,SAAS,CAAC;gBACxB,KAAK,eAAQ,CAAC,QAAQ,CAAC;gBACvB,KAAK,eAAQ,CAAC,SAAS,CAAC;gBACxB,KAAK,eAAQ,CAAC,SAAS;oBACtB,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,eAAQ,CAAC,UAAU,CAAC,CAAC;oBACvD,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACvC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtC,MAAM;gBAEP,mCAAmC;gBACnC,KAAK,eAAQ,CAAC,WAAW;oBACxB,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,eAAQ,CAAC,cAAc,CAAC,CAAC;oBAC3D,MAAM;gBAEP,6CAA6C;gBAC7C,KAAK,eAAQ,CAAC,gBAAgB;oBAC7B,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,eAAQ,CAAC,mBAAmB,CAAC,CAAC;oBAChE,MAAM;gBAEP,4DAA4D;gBAC5D,KAAK,eAAQ,CAAC,UAAU,CAAC;gBACzB,KAAK,eAAQ,CAAC,SAAS,CAAC;gBACxB,KAAK,eAAQ,CAAC,SAAS;oBACtB,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,eAAQ,CAAC,WAAW,CAAC,CAAC;oBACxD,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACxC,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,eAAQ,CAAC,KAAK,CAAC,CAAC;oBACrD,MAAM;aACP;SACD;QAED,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,MAAM,CAAE,CAAC;KAC1C;YACO;QACP,UAAU,CAAC,WAAW,EAAE,CAAC;KACzB;IAED,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEvB,OAAO,GAAG,CAAC;AACZ,CAAC;AAvDD,kCAuDC;AAED,SAAgB,iBAAiB,CAAC,MAAiB,EAAE,QAA6B;IACjF,IAAI,CAAC,QAAQ;QACZ,OAAO,EAAE,CAAC;IAEX,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAiB,EAAE,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;QAC/B,GAAG,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YACrC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,UAAU,EAAE,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC;YACjD,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;YACzC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;YACzC,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;SACvC,CAAC,CAAC;KACH;IAED,OAAO,GAAG,CAAC;AACZ,CAAC;AAnBD,8CAmBC"}
|
package/dist/lib/statement.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import * as fb from 'node-firebird-native-api';
|
|
|
8
8
|
/** Statement implementation. */
|
|
9
9
|
export declare class StatementImpl extends AbstractStatement {
|
|
10
10
|
attachment: AttachmentImpl;
|
|
11
|
+
hasResultSet: boolean;
|
|
11
12
|
statementHandle?: fb.Statement;
|
|
12
13
|
inMetadata?: fb.MessageMetadata;
|
|
13
14
|
outMetadata?: fb.MessageMetadata;
|
|
@@ -24,5 +25,7 @@ export declare class StatementImpl extends AbstractStatement {
|
|
|
24
25
|
protected internalExecute(transaction: TransactionImpl, parameters?: Array<any>, options?: ExecuteOptions): Promise<Array<any>>;
|
|
25
26
|
/** Executes a prepared statement that has result set. */
|
|
26
27
|
protected internalExecuteQuery(transaction: TransactionImpl, parameters?: Array<any>, options?: ExecuteQueryOptions): Promise<ResultSetImpl>;
|
|
28
|
+
setCursorName(cursorName: string): Promise<void>;
|
|
29
|
+
getExecPathText(): Promise<string | undefined>;
|
|
27
30
|
get columnLabels(): Promise<string[]>;
|
|
28
31
|
}
|
package/dist/lib/statement.js
CHANGED
|
@@ -14,6 +14,7 @@ const resultset_1 = require("./resultset");
|
|
|
14
14
|
const impl_1 = require("node-firebird-driver/dist/lib/impl");
|
|
15
15
|
const fb_util_1 = require("./fb-util");
|
|
16
16
|
const fb = require("node-firebird-native-api");
|
|
17
|
+
const util_1 = require("util");
|
|
17
18
|
/** Statement implementation. */
|
|
18
19
|
class StatementImpl extends impl_1.AbstractStatement {
|
|
19
20
|
static prepare(attachment, transaction, sqlStmt, options) {
|
|
@@ -21,16 +22,17 @@ class StatementImpl extends impl_1.AbstractStatement {
|
|
|
21
22
|
const statement = new StatementImpl(attachment);
|
|
22
23
|
return yield attachment.client.statusAction((status) => __awaiter(this, void 0, void 0, function* () {
|
|
23
24
|
//// FIXME: options/flags, dialect
|
|
24
|
-
statement.statementHandle = yield attachment.attachmentHandle.prepareAsync(status, transaction.transactionHandle, 0, sqlStmt, 3, fb.Statement.PREPARE_PREFETCH_ALL);
|
|
25
|
-
statement.
|
|
26
|
-
statement.
|
|
25
|
+
statement.statementHandle = yield attachment.attachmentHandle.prepareAsync(status, transaction === null || transaction === void 0 ? void 0 : transaction.transactionHandle, 0, sqlStmt, 3, fb.Statement.PREPARE_PREFETCH_ALL);
|
|
26
|
+
statement.hasResultSet = (statement.statementHandle.getFlagsSync(status) & fb.Statement.FLAG_HAS_CURSOR) != 0;
|
|
27
|
+
statement.inMetadata = (0, fb_util_1.fixMetadata)(status, yield statement.statementHandle.getInputMetadataAsync(status));
|
|
28
|
+
statement.outMetadata = (0, fb_util_1.fixMetadata)(status, yield statement.statementHandle.getOutputMetadataAsync(status));
|
|
27
29
|
if (statement.inMetadata) {
|
|
28
30
|
statement.inBuffer = new Uint8Array(statement.inMetadata.getMessageLengthSync(status));
|
|
29
|
-
statement.dataWriter = fb_util_1.createDataWriter(fb_util_1.createDescriptors(status, statement.inMetadata));
|
|
31
|
+
statement.dataWriter = (0, fb_util_1.createDataWriter)((0, fb_util_1.createDescriptors)(status, statement.inMetadata));
|
|
30
32
|
}
|
|
31
33
|
if (statement.outMetadata) {
|
|
32
34
|
statement.outBuffer = new Uint8Array(statement.outMetadata.getMessageLengthSync(status));
|
|
33
|
-
statement.dataReader = fb_util_1.createDataReader(fb_util_1.createDescriptors(status, statement.outMetadata));
|
|
35
|
+
statement.dataReader = (0, fb_util_1.createDataReader)((0, fb_util_1.createDescriptors)(status, statement.outMetadata));
|
|
34
36
|
}
|
|
35
37
|
return statement;
|
|
36
38
|
}));
|
|
@@ -62,8 +64,8 @@ class StatementImpl extends impl_1.AbstractStatement {
|
|
|
62
64
|
return __awaiter(this, void 0, void 0, function* () {
|
|
63
65
|
return yield this.attachment.client.statusAction((status) => __awaiter(this, void 0, void 0, function* () {
|
|
64
66
|
yield this.dataWriter(this.attachment, transaction, this.inBuffer, parameters);
|
|
65
|
-
const newTransaction = yield this.statementHandle.executeAsync(status, transaction.transactionHandle, this.inMetadata, this.inBuffer, this.outMetadata, this.outBuffer);
|
|
66
|
-
if (newTransaction && transaction.transactionHandle != newTransaction) {
|
|
67
|
+
const newTransaction = yield this.statementHandle.executeAsync(status, transaction === null || transaction === void 0 ? void 0 : transaction.transactionHandle, this.inMetadata, this.inBuffer, this.outMetadata, this.outBuffer);
|
|
68
|
+
if (newTransaction && (transaction === null || transaction === void 0 ? void 0 : transaction.transactionHandle) != newTransaction) {
|
|
67
69
|
//// FIXME: newTransaction.releaseSync();
|
|
68
70
|
}
|
|
69
71
|
return this.outMetadata ? yield this.dataReader(this.attachment, transaction, this.outBuffer) : [];
|
|
@@ -76,6 +78,28 @@ class StatementImpl extends impl_1.AbstractStatement {
|
|
|
76
78
|
return yield resultset_1.ResultSetImpl.open(this, transaction, parameters, options);
|
|
77
79
|
});
|
|
78
80
|
}
|
|
81
|
+
setCursorName(cursorName) {
|
|
82
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
83
|
+
return yield this.attachment.client.statusAction((status) => __awaiter(this, void 0, void 0, function* () { return yield this.statementHandle.setCursorNameAsync(status, cursorName); }));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
getExecPathText() {
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
return yield this.attachment.client.statusAction((status) => __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
const infoReq = new Uint8Array([impl_1.statementInfo.sqlExecPathBlrText]);
|
|
90
|
+
const infoRet = new Uint8Array(65535);
|
|
91
|
+
yield this.statementHandle.getInfoAsync(status, infoReq.byteLength, infoReq, infoRet.byteLength, infoRet);
|
|
92
|
+
if (infoRet[0] == impl_1.commonInfo.end)
|
|
93
|
+
return undefined;
|
|
94
|
+
else {
|
|
95
|
+
if (infoRet[0] != impl_1.statementInfo.sqlExecPathBlrText)
|
|
96
|
+
throw new Error('Error retrieving statement execution path.');
|
|
97
|
+
const size = (0, impl_1.getPortableInteger)(infoRet.subarray(1), 2);
|
|
98
|
+
return new util_1.TextDecoder().decode(infoRet.subarray(3, 3 + size));
|
|
99
|
+
}
|
|
100
|
+
}));
|
|
101
|
+
});
|
|
102
|
+
}
|
|
79
103
|
get columnLabels() {
|
|
80
104
|
const asyncFunc = () => __awaiter(this, void 0, void 0, function* () {
|
|
81
105
|
if (!this.outMetadata)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../src/lib/statement.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2CAA4C;AAS5C,
|
|
1
|
+
{"version":3,"file":"statement.js","sourceRoot":"","sources":["../../src/lib/statement.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/transaction.js
CHANGED
|
@@ -18,7 +18,7 @@ class TransactionImpl extends impl_1.AbstractTransaction {
|
|
|
18
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
19
19
|
const transaction = new TransactionImpl(attachment);
|
|
20
20
|
return yield attachment.client.statusAction((status) => __awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
const tpb = fb_util_1.createTpb(options);
|
|
21
|
+
const tpb = (0, fb_util_1.createTpb)(options);
|
|
22
22
|
transaction.transactionHandle = yield attachment.attachmentHandle.startTransactionAsync(status, tpb.length, tpb);
|
|
23
23
|
return transaction;
|
|
24
24
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/lib/transaction.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uCAAsC;AAGtC,6DAAyE;AAKzE,kCAAkC;AAClC,MAAa,eAAgB,SAAQ,0BAAmB;IAMvD,MAAM,CAAO,KAAK,CAAC,UAA0B,EAAE,OAA4B;;YAC1E,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;YAEpD,OAAO,MAAM,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAM,MAAM,EAAC,EAAE;gBAC1D,MAAM,GAAG,GAAG,mBAAS,
|
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../src/lib/transaction.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,uCAAsC;AAGtC,6DAAyE;AAKzE,kCAAkC;AAClC,MAAa,eAAgB,SAAQ,0BAAmB;IAMvD,MAAM,CAAO,KAAK,CAAC,UAA0B,EAAE,OAA4B;;YAC1E,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;YAEpD,OAAO,MAAM,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAM,MAAM,EAAC,EAAE;gBAC1D,MAAM,GAAG,GAAG,IAAA,mBAAS,EAAC,OAAO,CAAC,CAAC;gBAC/B,WAAW,CAAC,iBAAiB,GAAG,MAAM,UAAW,CAAC,gBAAiB,CAAC,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACnH,OAAO,WAAW,CAAC;YACpB,CAAC,CAAA,CAAC,CAAC;QACJ,CAAC;KAAA;IAED,mDAAmD;IACnC,cAAc;;YAC7B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YACjG,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACpC,CAAC;KAAA;IAED,yEAAyE;IACzD,uBAAuB;;YACtC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAkB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;QAClH,CAAC;KAAA;IAED,qDAAqD;IACrC,gBAAgB;;YAC/B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;YACnG,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACpC,CAAC;KAAA;IAED,2EAA2E;IAC3D,yBAAyB;;YACxC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAkB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;QACpH,CAAC;KAAA;CACD;AArCD,0CAqCC"}
|
package/dist/test/test.js
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const lib_1 = require("../lib");
|
|
4
4
|
const tests_1 = require("node-firebird-driver/dist/test/tests");
|
|
5
|
-
const client = lib_1.createNativeClient(lib_1.getDefaultLibraryFilename());
|
|
6
|
-
tests_1.runCommonTests(client);
|
|
5
|
+
const client = (0, lib_1.createNativeClient)((0, lib_1.getDefaultLibraryFilename)());
|
|
6
|
+
(0, tests_1.runCommonTests)(client);
|
|
7
7
|
//# sourceMappingURL=test.js.map
|
package/dist/test/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test/test.ts"],"names":[],"mappings":";;AAAA,gCAAuE;AAEvE,gEAAsE;AAEtE,MAAM,MAAM,GAAG,wBAAkB,
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/test/test.ts"],"names":[],"mappings":";;AAAA,gCAAuE;AAEvE,gEAAsE;AAEtE,MAAM,MAAM,GAAG,IAAA,wBAAkB,EAAC,IAAA,+BAAyB,GAAE,CAAC,CAAC;AAE/D,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-firebird-driver-native",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Firebird Native Driver for Node.js",
|
|
5
5
|
"main": "dist/lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
]
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@types/node": "^
|
|
52
|
-
"node-firebird-driver": "^2.
|
|
53
|
-
"node-firebird-native-api": "^2.1.
|
|
51
|
+
"@types/node": "^17.0.10",
|
|
52
|
+
"node-firebird-driver": "^2.4.0",
|
|
53
|
+
"node-firebird-native-api": "^2.1.4"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "3514f2b8fae52f1379db80a8149016f161603a54"
|
|
56
56
|
}
|
package/src/lib/attachment.ts
CHANGED
|
@@ -21,7 +21,7 @@ import * as fb from 'node-firebird-native-api';
|
|
|
21
21
|
/** Attachment implementation. */
|
|
22
22
|
export class AttachmentImpl extends AbstractAttachment {
|
|
23
23
|
// Override declarations.
|
|
24
|
-
client: ClientImpl;
|
|
24
|
+
override client: ClientImpl;
|
|
25
25
|
|
|
26
26
|
attachmentHandle?: fb.Attachment;
|
|
27
27
|
|
package/src/lib/blob.ts
CHANGED
|
@@ -13,7 +13,7 @@ const MAX_SEGMENT_SIZE = 65535;
|
|
|
13
13
|
/** BlobStream implementation. */
|
|
14
14
|
export class BlobStreamImpl extends AbstractBlobStream {
|
|
15
15
|
// Override declarations.
|
|
16
|
-
attachment: AttachmentImpl;
|
|
16
|
+
override attachment: AttachmentImpl;
|
|
17
17
|
|
|
18
18
|
blobHandle?: fb.Blob;
|
|
19
19
|
|
|
@@ -87,4 +87,8 @@ export class BlobStreamImpl extends AbstractBlobStream {
|
|
|
87
87
|
}
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
|
+
|
|
91
|
+
get isValid(): boolean {
|
|
92
|
+
return !!this.blobHandle && this.attachment.isValid;
|
|
93
|
+
}
|
|
90
94
|
}
|
package/src/lib/events.ts
CHANGED
|
@@ -8,7 +8,7 @@ import * as fb from 'node-firebird-native-api';
|
|
|
8
8
|
/** Events implementation. */
|
|
9
9
|
export class EventsImpl extends AbstractEvents {
|
|
10
10
|
// Override declarations.
|
|
11
|
-
attachment: AttachmentImpl;
|
|
11
|
+
override attachment: AttachmentImpl;
|
|
12
12
|
|
|
13
13
|
eventCallback: fb.EventCallback;
|
|
14
14
|
|
package/src/lib/fb-util.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { sqlTypes, Descriptor } from 'node-firebird-driver/dist/lib/impl';
|
|
1
|
+
import { charSets, sqlTypes, Descriptor } from 'node-firebird-driver/dist/lib/impl';
|
|
2
2
|
export * from 'node-firebird-driver/dist/lib/impl';
|
|
3
3
|
|
|
4
4
|
import * as fb from 'node-firebird-native-api';
|
|
@@ -15,12 +15,12 @@ export function fixMetadata(status: fb.Status, metadata?: fb.MessageMetadata): f
|
|
|
15
15
|
try {
|
|
16
16
|
for (let i = metadata.getCountSync(status) - 1; i >= 0; --i) {
|
|
17
17
|
switch (metadata.getTypeSync(status, i)) {
|
|
18
|
-
//
|
|
18
|
+
// Transform CHAR descriptors to VARCHAR.
|
|
19
19
|
case sqlTypes.SQL_TEXT:
|
|
20
20
|
outBuilder.setTypeSync(status, i, sqlTypes.SQL_VARYING);
|
|
21
21
|
break;
|
|
22
22
|
|
|
23
|
-
//
|
|
23
|
+
// Transform numeric descriptors to DOUBLE PRECISION.
|
|
24
24
|
case sqlTypes.SQL_SHORT:
|
|
25
25
|
case sqlTypes.SQL_LONG:
|
|
26
26
|
case sqlTypes.SQL_INT64:
|
|
@@ -29,6 +29,25 @@ export function fixMetadata(status: fb.Status, metadata?: fb.MessageMetadata): f
|
|
|
29
29
|
outBuilder.setLengthSync(status, i, 8);
|
|
30
30
|
outBuilder.setScaleSync(status, i, 0);
|
|
31
31
|
break;
|
|
32
|
+
|
|
33
|
+
// Transform TIME_TZ to TIME_TZ_EX.
|
|
34
|
+
case sqlTypes.SQL_TIME_TZ:
|
|
35
|
+
outBuilder.setTypeSync(status, i, sqlTypes.SQL_TIME_TZ_EX);
|
|
36
|
+
break;
|
|
37
|
+
|
|
38
|
+
// Transform TIMESTAMP_TZ to TIMESTAMP_TZ_EX.
|
|
39
|
+
case sqlTypes.SQL_TIMESTAMP_TZ:
|
|
40
|
+
outBuilder.setTypeSync(status, i, sqlTypes.SQL_TIMESTAMP_TZ_EX);
|
|
41
|
+
break;
|
|
42
|
+
|
|
43
|
+
// Transform INT128, DEC16 and DEC34 descriptors to VARCHAR.
|
|
44
|
+
case sqlTypes.SQL_INT128:
|
|
45
|
+
case sqlTypes.SQL_DEC16:
|
|
46
|
+
case sqlTypes.SQL_DEC34:
|
|
47
|
+
outBuilder.setTypeSync(status, i, sqlTypes.SQL_VARYING);
|
|
48
|
+
outBuilder.setLengthSync(status, i, 45);
|
|
49
|
+
outBuilder.setCharSetSync(status, i, charSets.ascii);
|
|
50
|
+
break;
|
|
32
51
|
}
|
|
33
52
|
}
|
|
34
53
|
|
package/src/lib/resultset.ts
CHANGED
|
@@ -10,8 +10,8 @@ import * as fb from 'node-firebird-native-api';
|
|
|
10
10
|
/** ResultSet implementation. */
|
|
11
11
|
export class ResultSetImpl extends AbstractResultSet {
|
|
12
12
|
// Override declarations.
|
|
13
|
-
statement: StatementImpl;
|
|
14
|
-
transaction: TransactionImpl;
|
|
13
|
+
override statement: StatementImpl;
|
|
14
|
+
override transaction: TransactionImpl;
|
|
15
15
|
|
|
16
16
|
resultSetHandle?: fb.ResultSet;
|
|
17
17
|
delayedError: any;
|
package/src/lib/statement.ts
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
PrepareOptions
|
|
9
9
|
} from 'node-firebird-driver';
|
|
10
10
|
|
|
11
|
-
import { AbstractStatement } from 'node-firebird-driver/dist/lib/impl';
|
|
11
|
+
import { AbstractStatement, commonInfo, getPortableInteger, statementInfo } from 'node-firebird-driver/dist/lib/impl';
|
|
12
12
|
|
|
13
13
|
import {
|
|
14
14
|
createDataReader,
|
|
@@ -21,11 +21,14 @@ import {
|
|
|
21
21
|
|
|
22
22
|
import * as fb from 'node-firebird-native-api';
|
|
23
23
|
|
|
24
|
+
import { TextDecoder } from 'util';
|
|
25
|
+
|
|
24
26
|
|
|
25
27
|
/** Statement implementation. */
|
|
26
28
|
export class StatementImpl extends AbstractStatement {
|
|
27
29
|
// Override declarations.
|
|
28
|
-
attachment: AttachmentImpl;
|
|
30
|
+
override attachment: AttachmentImpl;
|
|
31
|
+
override hasResultSet: boolean;
|
|
29
32
|
|
|
30
33
|
statementHandle?: fb.Statement;
|
|
31
34
|
inMetadata?: fb.MessageMetadata;
|
|
@@ -41,9 +44,11 @@ export class StatementImpl extends AbstractStatement {
|
|
|
41
44
|
|
|
42
45
|
return await attachment.client.statusAction(async status => {
|
|
43
46
|
//// FIXME: options/flags, dialect
|
|
44
|
-
statement.statementHandle = await attachment!.attachmentHandle!.prepareAsync(status, transaction
|
|
47
|
+
statement.statementHandle = await attachment!.attachmentHandle!.prepareAsync(status, transaction?.transactionHandle,
|
|
45
48
|
0, sqlStmt, 3, fb.Statement.PREPARE_PREFETCH_ALL);
|
|
46
49
|
|
|
50
|
+
statement.hasResultSet = (statement.statementHandle!.getFlagsSync(status) & fb.Statement.FLAG_HAS_CURSOR) != 0;
|
|
51
|
+
|
|
47
52
|
statement.inMetadata = fixMetadata(status, await statement.statementHandle!.getInputMetadataAsync(status));
|
|
48
53
|
statement.outMetadata = fixMetadata(status, await statement.statementHandle!.getOutputMetadataAsync(status));
|
|
49
54
|
|
|
@@ -88,10 +93,10 @@ export class StatementImpl extends AbstractStatement {
|
|
|
88
93
|
return await this.attachment.client.statusAction(async status => {
|
|
89
94
|
await this.dataWriter(this.attachment, transaction, this.inBuffer, parameters);
|
|
90
95
|
|
|
91
|
-
const newTransaction = await this.statementHandle!.executeAsync(status, transaction
|
|
96
|
+
const newTransaction = await this.statementHandle!.executeAsync(status, transaction?.transactionHandle,
|
|
92
97
|
this.inMetadata, this.inBuffer, this.outMetadata, this.outBuffer);
|
|
93
98
|
|
|
94
|
-
if (newTransaction && transaction
|
|
99
|
+
if (newTransaction && transaction?.transactionHandle != newTransaction) {
|
|
95
100
|
//// FIXME: newTransaction.releaseSync();
|
|
96
101
|
}
|
|
97
102
|
|
|
@@ -105,6 +110,30 @@ export class StatementImpl extends AbstractStatement {
|
|
|
105
110
|
return await ResultSetImpl.open(this, transaction as TransactionImpl, parameters, options);
|
|
106
111
|
}
|
|
107
112
|
|
|
113
|
+
async setCursorName(cursorName: string): Promise<void> {
|
|
114
|
+
return await this.attachment.client.statusAction(async status =>
|
|
115
|
+
await this.statementHandle!.setCursorNameAsync(status, cursorName)
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
async getExecPathText(): Promise<string | undefined> {
|
|
120
|
+
return await this.attachment.client.statusAction(async status => {
|
|
121
|
+
const infoReq = new Uint8Array([statementInfo.sqlExecPathBlrText]);
|
|
122
|
+
const infoRet = new Uint8Array(65535);
|
|
123
|
+
await this.statementHandle!.getInfoAsync(status, infoReq.byteLength, infoReq, infoRet.byteLength, infoRet);
|
|
124
|
+
|
|
125
|
+
if (infoRet[0] == commonInfo.end)
|
|
126
|
+
return undefined;
|
|
127
|
+
else {
|
|
128
|
+
if (infoRet[0] != statementInfo.sqlExecPathBlrText)
|
|
129
|
+
throw new Error('Error retrieving statement execution path.');
|
|
130
|
+
|
|
131
|
+
const size = getPortableInteger(infoRet.subarray(1), 2);
|
|
132
|
+
return new TextDecoder().decode(infoRet.subarray(3, 3 + size));
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
108
137
|
get columnLabels(): Promise<string[]> {
|
|
109
138
|
const asyncFunc = async (): Promise<string[]> => {
|
|
110
139
|
if (!this.outMetadata)
|
package/src/lib/transaction.ts
CHANGED
|
@@ -10,7 +10,7 @@ import * as fb from 'node-firebird-native-api';
|
|
|
10
10
|
/** Transaction implementation. */
|
|
11
11
|
export class TransactionImpl extends AbstractTransaction {
|
|
12
12
|
// Override declarations.
|
|
13
|
-
attachment: AttachmentImpl;
|
|
13
|
+
override attachment: AttachmentImpl;
|
|
14
14
|
|
|
15
15
|
transactionHandle?: fb.Transaction;
|
|
16
16
|
|